如何在Python中“追加”个性化ROS数组消息

问题描述 投票:0回答:2

我为 ROS 包定义了以下两个消息结构:

点.msg

float64 x
float64 y

积分.msg

point[] points

我正在 Python 中实例化并填充点数组,如下所示:

point_list = points()
pt = point()
for element in self.points:
     pt.x = element[0,0]
     pt.y = element[1,0]
     point_list += (pt,)

这是我收到的错误:

unsupported operand type(s) for +=: 'points' and 'tuple'

PS:尝试过

.append
,但还是不行

python python-3.x python-2.7 ros
2个回答
0
投票

消息

points
并不是直接的
point
消息列表,而是一个结构,其中有一个名为
points
的成员,它是一个列表。

要将元素添加到此列表,您必须访问成员,而不是包含结构:

point_list.points.append(pt)

0
投票

试试这个

point_list = []
pt = point()
for element in self.points:
     pt.x = element[0,0]
     pt.y = element[1,0]
     point_list += (pt,)

在您告诉编译器之前,点类是一个列表对象,除非您调用点的方法,否则这是不可能的。通过将其设置为通用列表 (

[]
),它可以采用任何类型。这就是 python 之美的一部分,你并不总是需要指定对象类型。

© www.soinside.com 2019 - 2024. All rights reserved.