5 import tf2_geometry_msgs
6 from geometry_msgs.msg
import PoseWithCovarianceStamped
7 from sensor_msgs.msg
import Image
8 from aruco_pose.msg
import MarkerArray
9 from visualization_msgs.msg
import MarkerArray
as VisMarkerArray
14 return rospy.init_node(
'aruco_pose_test', anonymous=
True)
23 return pytest.approx(expected, abs=1e-4)
26 markers = rospy.wait_for_message(
'aruco_detect/markers', MarkerArray, timeout=5)
27 assert len(markers.markers) == 5
28 assert markers.header.frame_id ==
'main_camera_optical' 30 assert markers.markers[0].id == 2
31 assert markers.markers[0].length ==
approx(0.33)
32 assert markers.markers[0].pose.position.x ==
approx(0.36706567854)
33 assert markers.markers[0].pose.position.y ==
approx(0.290484516644)
34 assert markers.markers[0].pose.position.z ==
approx(2.18787602301)
35 assert markers.markers[0].pose.orientation.x ==
approx(0.993997406299)
36 assert markers.markers[0].pose.orientation.y ==
approx(-0.00532003481626)
37 assert markers.markers[0].pose.orientation.z ==
approx(-0.107390951553)
38 assert markers.markers[0].pose.orientation.w ==
approx(0.0201999263402)
39 assert markers.markers[0].c1.x ==
approx(415.557739258)
40 assert markers.markers[0].c1.y ==
approx(335.557739258)
41 assert markers.markers[0].c2.x ==
approx(509.442260742)
42 assert markers.markers[0].c2.y ==
approx(335.557739258)
43 assert markers.markers[0].c3.x ==
approx(509.442260742)
44 assert markers.markers[0].c3.y ==
approx(429.442260742)
45 assert markers.markers[0].c4.x ==
approx(415.557739258)
46 assert markers.markers[0].c4.y ==
approx(429.442260742)
48 assert markers.markers[4].id == 3
49 assert markers.markers[4].length ==
approx(0.1)
50 assert markers.markers[4].pose.position.x ==
approx(-0.1805169666)
51 assert markers.markers[4].pose.position.y ==
approx(-0.200697302327)
52 assert markers.markers[4].pose.position.z ==
approx(0.585767514823)
53 assert markers.markers[4].pose.orientation.x ==
approx(-0.961738074009)
54 assert markers.markers[4].pose.orientation.y ==
approx(-0.0375180244707)
55 assert markers.markers[4].pose.orientation.z ==
approx(-0.0115387773672)
56 assert markers.markers[4].pose.orientation.w ==
approx(0.271144115664)
57 assert markers.markers[4].c1.x ==
approx(129.557723999)
58 assert markers.markers[4].c1.y ==
approx(49.557723999)
59 assert markers.markers[4].c2.x ==
approx(223.442276001)
60 assert markers.markers[4].c2.y ==
approx(49.557723999)
61 assert markers.markers[4].c3.x ==
approx(223.442276001)
62 assert markers.markers[4].c3.y ==
approx(143.442276001)
63 assert markers.markers[4].c4.x ==
approx(129.557723999)
64 assert markers.markers[4].c4.y ==
approx(143.442276001)
66 assert markers.markers[1].id == 1
67 assert markers.markers[1].length ==
approx(0.33)
68 assert markers.markers[3].id == 4
69 assert markers.markers[3].length ==
approx(0.33)
71 assert markers.markers[2].id == 100
72 assert markers.markers[2].length ==
approx(0.33)
73 assert markers.markers[2].pose.position.x ==
approx(-1.37600105389)
74 assert markers.markers[2].pose.position.y ==
approx(-0.323028530991)
75 assert markers.markers[2].pose.position.z ==
approx(2.94611272668)
76 assert markers.markers[2].pose.orientation.x ==
approx(-0.955543925678)
77 assert markers.markers[2].pose.orientation.y ==
approx(0.0458801909197)
78 assert markers.markers[2].pose.orientation.z ==
approx(-0.249604946264)
79 assert markers.markers[2].pose.orientation.w ==
approx(-0.150093920537)
80 assert markers.markers[2].c1.x ==
approx(52.557723999)
81 assert markers.markers[2].c1.y ==
approx(205.557723999)
82 assert markers.markers[2].c2.x ==
approx(113.442276001)
83 assert markers.markers[2].c2.y ==
approx(205.557723999)
84 assert markers.markers[2].c3.x ==
approx(113.442276001)
85 assert markers.markers[2].c3.y ==
approx(265.442260742)
86 assert markers.markers[2].c4.x ==
approx(52.557723999)
87 assert markers.markers[2].c4.y ==
approx(265.442260742)
90 marker_2 = tf_buffer.lookup_transform(
'main_camera_optical',
'aruco_2', rospy.Time(), rospy.Duration(5))
91 assert marker_2.transform.translation.x ==
approx(0.36706567854)
92 assert marker_2.transform.translation.y ==
approx(0.290484516644)
93 assert marker_2.transform.translation.z ==
approx(2.18787602301)
94 assert marker_2.transform.rotation.x ==
approx(0.993997406299)
95 assert marker_2.transform.rotation.y ==
approx(-0.00532003481626)
96 assert marker_2.transform.rotation.z ==
approx(-0.107390951553)
97 assert marker_2.transform.rotation.w ==
approx(0.0201999263402)
100 stamp = rospy.get_rostime()
101 timeout = rospy.Duration(5)
103 marker_1 = tf_buffer.lookup_transform(
'aruco_map',
'aruco_in_map_1', stamp, timeout)
104 assert marker_1.transform.translation.x ==
approx(0)
105 assert marker_1.transform.translation.y ==
approx(0)
106 assert marker_1.transform.translation.z ==
approx(0)
108 marker_4 = tf_buffer.lookup_transform(
'aruco_map',
'aruco_in_map_4', stamp, timeout)
109 assert marker_4.transform.translation.x ==
approx(1)
110 assert marker_4.transform.translation.y ==
approx(1)
111 assert marker_4.transform.translation.z ==
approx(0)
113 marker_12 = tf_buffer.lookup_transform(
'aruco_map',
'aruco_in_map_12', stamp, timeout)
114 assert marker_12.transform.translation.x ==
approx(0.2)
115 assert marker_12.transform.translation.y ==
approx(0.5)
116 assert marker_12.transform.translation.z ==
approx(0)
119 vis = rospy.wait_for_message(
'aruco_detect/visualization', VisMarkerArray, timeout=5)
120 assert len(vis.markers) == 11
123 img = rospy.wait_for_message(
'aruco_detect/debug', Image, timeout=5)
124 assert img.width == 640
125 assert img.height == 480
126 assert img.header.frame_id ==
'main_camera_optical' 129 pose = rospy.wait_for_message(
'aruco_map/pose', PoseWithCovarianceStamped, timeout=5)
130 assert pose.header.frame_id ==
'main_camera_optical' 131 assert pose.pose.pose.position.x ==
approx(-0.629167753342)
132 assert pose.pose.pose.position.y ==
approx(0.293822650809)
133 assert pose.pose.pose.position.z ==
approx(2.12641343155)
134 assert pose.pose.pose.orientation.x ==
approx(-0.998383794799)
135 assert pose.pose.pose.orientation.y ==
approx(-5.20919098575e-06)
136 assert pose.pose.pose.orientation.z ==
approx(-0.0300861070302)
137 assert pose.pose.pose.orientation.w ==
approx(0.0482143590507)
140 img = rospy.wait_for_message(
'aruco_map/image', Image, timeout=5)
141 assert img.width == 2000
142 assert img.height == 2000
143 assert img.encoding
in (
'mono8',
'rgb8')
146 markers = rospy.wait_for_message(
'aruco_map/markers', MarkerArray, timeout=5)
147 assert markers.markers[0].id == 1
148 assert markers.markers[1].id == 2
149 assert markers.markers[2].id == 3
150 assert markers.markers[3].id == 4
151 assert markers.markers[4].id == 10
152 assert markers.markers[5].id == 11
153 assert markers.markers[6].id == 12
155 assert markers.markers[0].pose.position.x == 0
156 assert markers.markers[0].pose.position.y == 0
157 assert markers.markers[0].pose.position.z == 0
158 assert markers.markers[0].pose.orientation.x == 0
159 assert markers.markers[0].pose.orientation.y == 0
160 assert markers.markers[0].pose.orientation.z == 0
161 assert markers.markers[0].pose.orientation.w == 1
162 assert markers.markers[0].length ==
approx(0.33)
164 assert markers.markers[1].pose.position.x == 1
165 assert markers.markers[1].pose.position.y == 0
166 assert markers.markers[1].pose.position.z == 0
167 assert markers.markers[1].pose.orientation.x == 0
168 assert markers.markers[1].pose.orientation.y == 0
169 assert markers.markers[1].pose.orientation.z == 0
170 assert markers.markers[1].pose.orientation.w == 1
171 assert markers.markers[1].length ==
approx(0.33)
173 assert markers.markers[2].pose.position.x == 0
174 assert markers.markers[2].pose.position.y == 1
175 assert markers.markers[2].pose.position.z == 0
176 assert markers.markers[2].pose.orientation.x == 0
177 assert markers.markers[2].pose.orientation.y == 0
178 assert markers.markers[2].pose.orientation.z == 0
179 assert markers.markers[2].pose.orientation.w == 1
180 assert markers.markers[2].length ==
approx(0.33)
182 assert markers.markers[3].pose.position.x == 1
183 assert markers.markers[3].pose.position.y == 1
184 assert markers.markers[3].pose.position.z == 0
185 assert markers.markers[3].pose.orientation.x == 0
186 assert markers.markers[3].pose.orientation.y == 0
187 assert markers.markers[3].pose.orientation.z == 0
188 assert markers.markers[3].pose.orientation.w == 1
189 assert markers.markers[3].length ==
approx(0.33)
191 assert markers.markers[4].pose.position.x ==
approx(0.5)
192 assert markers.markers[4].pose.position.y == 2
193 assert markers.markers[4].pose.position.z == 0
194 assert markers.markers[4].pose.orientation.x == 0
195 assert markers.markers[4].pose.orientation.y == 0
196 assert markers.markers[4].pose.orientation.z ==
approx(0.5646424733950354)
197 assert markers.markers[4].pose.orientation.w ==
approx(0.8253356149096783)
198 assert markers.markers[4].length ==
approx(0.5)
201 vis = rospy.wait_for_message(
'aruco_map/visualization', VisMarkerArray, timeout=5)
204 img = rospy.wait_for_message(
'aruco_map/debug', Image, timeout=5)
def test_map_markers(node)
def test_visualization(node)
def test_map_visualization(node)
def test_map_markers_frames(node, tf_buffer)
def test_markers_frames(node, tf_buffer)