1

我想bbox用 Python 在 ROS 中显示 3D。我有 3dbbox坐标,我想用一个标记来显示。但是,我添加了一些点,它们是标记的角坐标并将它们发布,但我没有看到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)
4

1 回答 1

0

当你说

但我没有看到bbox

你到底什么意思?您是否什么都看不到,或者只有几条平行线或其他东西?

创建点消息的代码中有一个小错误。您正在添加x, y, y值而不是 x、y、z。

但是,您也没有创建一组正确描述边界框的线。bbox_data 似乎列出了边界框的 8 个角点,您需要定义连接这些点的 12 条边线,以便在 RVIZ 中绘制它们。line_list标记需要两个点来定义每条线,因为没有简单的算法可以将 8 个点与您需要添加到标记 msg 的 24 个起点和终点相匹配,因此您可能必须对该部分进行硬编码。

这两个错误很可能以这样一种方式结合在一起,以至于您在屏幕上看不到任何东西,但希望这会帮助您修复它。

于 2019-04-06T12:09:37.877 回答