我想用Python展示ROS中的3D bbox
。我有3d bbox
坐标,我想用标记来显示。但是,我添加了一些点作为标记的角坐标并发布它们,但我没有看到bbox
,我的代码有什么问题?
这是我的代码:
markers = MarkerArray()
for i in range(len(self.bbox_data)):
marker = Marker(type=Marker.LINE_LIST,ns='velodyne', action=Marker.ADD)
marker.header.frame_id = "velodyne"
marker.header.stamp = rospy.Time.now()
if self.bbox_data[i][0][0] == frame:
for n in range(8):
point = geom_msg.Point(self.bbox_data[i][n+1][0],self.bbox_data[i][n+1][1],self.bbox_data[i][n+1][1])
marker.points.append(point)
marker.scale.x = 0.02
marker.lifetime = rospy.Duration.from_sec(0.1)
marker.color.a = 1.0
marker.color.r = 0.5
marker.color.g = 0.5
marker.color.b = 0.5
markers.markers.append(marker)
self.bbox.publish(markers)
哪里
(self.bbox_data[i][n+1][0],self.bbox_data[i][n+1][1],self.bbox_data[i][n+1][2])
是
(x,y,z)
当你说
但我没有看到bbox
你到底什么意思?你什么都没看到,或只看到几条平行线或其他东西?
您的代码中有一个小错误,它会创建点消息。您正在添加x, y, y
值而不是x,y,z。
但是,您也没有创建一组正确描述边界框的线条。 bbox_data似乎列出了边界框的8个角点,您需要定义连接这些点的12条边线,以便它们在RVIZ中绘制。 line_list marker需要两个点来定义每一行,因为没有简单的算法可以将8个点匹配到需要添加到标记msg的24个起点和终点,因此您可能需要对该部分进行硬编码。
这两个错误可能会以这样的方式组合,即您在屏幕上看不到任何内容,但希望这有助于您修复它。