如何在python中显示ros标记?

2024-10-05 14:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python在ROS中展示3Dbbox。我有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)

在哪里

^{pr2}$

(x,y,z)

Tags: 代码in标记selffordatarangeframe
1条回答
网友
1楼 · 发布于 2024-10-05 14:26:38

当你说

but I didn't see the bbox

你到底是什么意思?你是什么都看不见,还是只有几条平行线或别的什么东西?在

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

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

这两个bug很可能是以这样一种方式结合在一起的,你在屏幕上看不到任何东西,但希望这能帮助你修复它。在

相关问题 更多 >