38 from std_msgs.msg
import ColorRGBA
48 This class is an interface to ROS markers publisher. 51 self.
_pub_marker = rospy.Publisher(namespace, MarkerArray, queue_size=1000)
63 def publishTextMarker(self, text, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', T=None, height=0.1):
66 marker.header.frame_id = frame_id
67 marker.header.stamp = rospy.Time.now()
70 marker.type = Marker.TEXT_VIEW_FACING
72 marker.action = Marker.ADD
75 q = T.M.GetQuaternion()
76 marker.pose = Pose( Point(point.x(),point.y(),point.z()), Quaternion(q[0],q[1],q[2],q[3]) )
79 marker.scale.z = height
80 marker.color = ColorRGBA(r,g,b,a)
81 m.markers.append(marker)
86 frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.005, 0.005, 0.005), T=
None):
88 frame_id=frame_id, m_type=m_type, scale=scale, T=T)
93 def createSinglePointMarker(pt, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.005, 0.005, 0.005), T=
None):
95 marker.header.frame_id = frame_id
96 marker.header.stamp = rospy.Time.now()
100 marker.action = Marker.ADD
103 q = T.M.GetQuaternion()
104 marker.pose = Pose( Point(point.x(),point.y(),point.z()), Quaternion(q[0],q[1],q[2],q[3]) )
106 marker.pose = Pose( Point(pt.x(),pt.y(),pt.z()), Quaternion(0,0,0,1) )
108 marker.color = ColorRGBA(r,g,b,a)
111 def addSinglePointMarker(self, pt, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.005, 0.005, 0.005), T=
None):
128 MarkerPublisher.createSinglePointMarker(
129 pt, i, r, g, b, a, namespace, frame_id, m_type, scale, T) )
132 def eraseMarkers(self, idx_from, idx_to, frame_id='torso_base', namespace='default'):
134 for idx
in range(idx_from, idx_to):
136 marker.header.frame_id = frame_id
137 marker.header.stamp = rospy.Time.now()
138 marker.ns = namespace
140 marker.action = Marker.DELETE
141 m.markers.append(marker)
142 if len(m.markers) > 0:
169 def publishLineStripMarker(self, pt, base_id, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', width=0.01, T=None):
171 ret_id = copy.copy(base_id)
174 marker.header.frame_id = frame_id
175 marker.header.stamp = rospy.Time.now()
176 marker.ns = namespace
179 marker.type = Marker.LINE_STRIP
180 marker.action = Marker.ADD
182 qx, qy, qz, qw = T.M.GetQuaternion()
183 marker.pose = Pose( Point(T.p.x(),T.p.y(),T.p.z()), Quaternion(qx,qy,qz,qw) )
184 marker.scale.x = width
185 marker.color = ColorRGBA(r,g,b,a)
188 marker.points.append( Point(p.x(), p.y(), p.z()) )
190 m.markers.append(marker)
194 def publishLineListMarker(self, pt, base_id, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', width=0.01, T=None):
196 ret_id = copy.copy(base_id)
199 marker.header.frame_id = frame_id
200 marker.header.stamp = rospy.Time.now()
201 marker.ns = namespace
204 marker.type = Marker.LINE_LIST
205 marker.action = Marker.ADD
207 qx, qy, qz, qw = T.M.GetQuaternion()
208 marker.pose = Pose( Point(T.p.x(),T.p.y(),T.p.z()), Quaternion(qx,qy,qz,qw) )
209 marker.scale.x = width
210 marker.color = ColorRGBA(r,g,b,a)
213 marker.points.append( Point(p.x(), p.y(), p.z()) )
215 m.markers.append(marker)
219 def publishMultiPointsMarker(self, pt, base_id, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.002, 0.002, 0.002), T=
None):
221 ret_id = copy.copy(base_id)
224 marker.header.frame_id = frame_id
225 marker.header.stamp = rospy.Time.now()
226 marker.ns = namespace
229 if m_type == Marker.CUBE:
230 marker.type = Marker.CUBE_LIST
231 elif m_type == Marker.SPHERE:
232 marker.type = Marker.SPHERE_LIST
233 marker.action = Marker.ADD
235 marker.pose = Pose( Point(0, 0, 0), Quaternion(0, 0, 0, 1) )
237 qx, qy, qz, qw = T.M.GetQuaternion()
238 marker.pose = Pose( Point(T.p.x(),T.p.y(),T.p.z()), Quaternion(qx,qy,qz,qw) )
240 marker.color = ColorRGBA(r,g,b,a)
243 marker.points.append( Point(p.x(), p.y(), p.z()) )
245 m.markers.append(marker)
251 ret_id = copy.copy(base_id)
254 for i
in range(0, len(pt)):
256 marker.header.frame_id = frame_id
257 marker.header.stamp = rospy.Time.now()
258 marker.ns = namespace
262 marker.action = Marker.ADD
264 marker.pose = Pose( Point(point.x(),point.y(),point.z()), Quaternion(0,0,0,1) )
265 marker.scale = Vector3(pt[i][1], pt[i][1], pt[i][1])
266 marker.color = ColorRGBA(r,g,b,0.5)
267 m.markers.append(marker)
274 marker.header.frame_id = frame_id
275 marker.header.stamp = rospy.Time.now()
276 marker.ns = namespace
278 marker.type = Marker.TRIANGLE_LIST
279 marker.action = Marker.ADD
280 marker.scale = Vector3(1,1,1)
281 marker.color = ColorRGBA(r,g,b,a)
284 q = T.M.GetQuaternion()
285 marker.pose = Pose( Point(T.p.x(),T.p.y(),T.p.z()), Quaternion(q[0],q[1],q[2],q[3]) )
286 for pt
in points_list:
287 marker.points.append(Point(pt.x(), pt.y(), pt.z()))
288 m.markers.append(marker)
292 def publishVectorMarker(self, v1, v2, i, r, g, b, a=0.5, frame='torso_base', namespace='default', scale=0.001):
293 m_id = self.
addVectorMarker(v1, v2, i, r=r, g=g, b=b, a=a, frame=frame, namespace=namespace, scale=scale)
297 def addVectorMarker(self, v1, v2, i, r, g, b, a=0.5, frame='torso_base', namespace='default', scale=0.001):
310 self.
__pending_markers.append( MarkerPublisher.createVectorMarker(v1, v2, i, r, g, b, a, frame, namespace, scale) )
314 def createVectorMarker(v1, v2, i, r, g, b, a=0.5, frame='torso_base', namespace='default', scale=0.001):
316 marker.header.frame_id = frame
317 marker.header.stamp = rospy.Time.now()
318 marker.ns = namespace
320 marker.type = Marker.ARROW
321 marker.action = Marker.ADD
322 marker.points.append(Point(v1.x(), v1.y(), v1.z()))
323 marker.points.append(Point(v2.x(), v2.y(), v2.z()))
324 marker.pose = Pose( Point(0,0,0), Quaternion(0,0,0,1) )
325 marker.scale = Vector3(scale, 2.0*scale, 0)
326 marker.color = ColorRGBA(r,g,b,a)
330 m_id = self.
addFrameMarker(T, base_id, scale=scale, frame=frame, namespace=namespace)
334 def addFrameMarker(self, T, base_id, scale=0.1, frame='torso_base', namespace='default'):
335 self.
addVectorMarker(T*PyKDL.Vector(), T*PyKDL.Vector(scale,0,0), base_id, 1, 0, 0, 1, frame, namespace, scale*0.1)
336 self.
addVectorMarker(T*PyKDL.Vector(), T*PyKDL.Vector(0,scale,0), base_id+1, 0, 1, 0, 1, frame, namespace, scale*0.1)
337 self.
addVectorMarker(T*PyKDL.Vector(), T*PyKDL.Vector(0,0,scale), base_id+2, 0, 0, 1, 1, frame, namespace, scale*0.1)
342 m1 = MarkerPublisher.createVectorMarker(T*PyKDL.Vector(), T*PyKDL.Vector(scale,0,0), base_id, 1, 0, 0, 1, frame, namespace, scale*0.1)
343 m2 = MarkerPublisher.createVectorMarker(T*PyKDL.Vector(), T*PyKDL.Vector(0,scale,0), base_id+1, 0, 1, 0, 1, frame, namespace, scale*0.1)
344 m3 = MarkerPublisher.createVectorMarker(T*PyKDL.Vector(), T*PyKDL.Vector(0,0,scale), base_id+2, 0, 0, 1, 1, frame, namespace, scale*0.1)
352 marker.header.frame_id = frame_id
353 marker.header.stamp = rospy.Time.now()
354 marker.ns = namespace
356 marker.type = Marker.MESH_RESOURCE
357 marker.mesh_resource = uri
358 marker.action = Marker.ADD
360 q = T.M.GetQuaternion()
361 marker.pose = Pose( Point(point.x(),point.y(),point.z()), Quaternion(q[0],q[1],q[2],q[3]) )
362 marker.scale = Vector3(scale, scale, scale)
363 marker.color = ColorRGBA(r,g,b,0.5)
364 m.markers.append(marker)
368 def publishMeshMarker(self, mesh, base_id, r=1, g=0, b=0, scale=0.1, frame_id='torso_base', namespace='default', T=None):
371 marker.header.frame_id = frame_id
372 marker.header.stamp = rospy.Time.now()
373 marker.ns = namespace
375 marker.type = Marker.TRIANGLE_LIST
376 marker.action = Marker.ADD
378 marker.points.append(Point(mesh[0][f[0]][0], mesh[0][f[0]][1], mesh[0][f[0]][2]))
379 marker.points.append(Point(mesh[0][f[1]][0], mesh[0][f[1]][1], mesh[0][f[1]][2]))
380 marker.points.append(Point(mesh[0][f[2]][0], mesh[0][f[2]][1], mesh[0][f[2]][2]))
383 q = T.M.GetQuaternion()
384 marker.pose = Pose( Point(point.x(),point.y(),point.z()), Quaternion(q[0],q[1],q[2],q[3]) )
386 marker.pose = Pose( Point(0,0,0), Quaternion(0,0,0,1) )
387 marker.scale = Vector3(1.0, 1.0, 1.0)
388 marker.color = ColorRGBA(r,g,b,0.5)
389 m.markers.append(marker)
def eraseMarkers(self, idx_from, idx_to, frame_id='torso_base', namespace='default')
def publishLineListMarker(self, pt, base_id, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', width=0.01, T=None)
def createSinglePointMarker(pt, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.005, 0.005, 0.005), T=None)
def publishLineStripMarker(self, pt, base_id, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', width=0.01, T=None)
def publishTriangleListMarker(self, points_list, base_id, r=1, g=0, b=0, a=1.0, namespace='default', frame_id='torso_base', T=None)
def createVectorMarker(v1, v2, i, r, g, b, a=0.5, frame='torso_base', namespace='default', scale=0.001)
def addSinglePointMarker(self, pt, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.005, 0.005, 0.005), T=None)
This class is an interface to ROS markers publisher.
def __init__(self, namespace)
def publishMeshMarker(self, mesh, base_id, r=1, g=0, b=0, scale=0.1, frame_id='torso_base', namespace='default', T=None)
def addVectorMarker(self, v1, v2, i, r, g, b, a=0.5, frame='torso_base', namespace='default', scale=0.001)
def publishSinglePointMarker(self, pt, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.005, 0.005, 0.005), T=None)
def createFrameMarker(T, base_id, scale=0.1, frame='torso_base', namespace='default')
def addFrameMarker(self, T, base_id, scale=0.1, frame='torso_base', namespace='default')
def publishFrameMarker(self, T, base_id, scale=0.1, frame='torso_base', namespace='default')
def getPendingMarkersCount(self)
def publishMultiPointsMarkerWithSize(self, pt, base_id, r=1, g=0, b=0, namespace='default', frame_id='torso_base', m_type=Marker.SPHERE, T=None)
def publishVectorMarker(self, v1, v2, i, r, g, b, a=0.5, frame='torso_base', namespace='default', scale=0.001)
def publishMultiPointsMarker(self, pt, base_id, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', m_type=Marker.CUBE, scale=Vector3(0.002, 0.002, 0.002), T=None)
def publishTextMarker(self, text, i, r=1, g=0, b=0, a=1, namespace='default', frame_id='torso_base', T=None, height=0.1)
def publishConstantMeshMarker(self, uri, base_id, r=1, g=0, b=0, scale=0.1, frame_id='torso_base', namespace='default', T=None)