"append"如何在python中个性化ROS数组消息

How to "append" to personalised ROS array message in python

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

point.msg

float64 x
float64 y

points.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 但还是不行

试试这个

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

在您告诉编译器之前,point class 是一个列表对象,除非您调用 point 的方法,否则这是不可能的。通过将其设置为通用列表 ([]),它可以采用任何类型。这是 python 的优点之一,您并不总是需要指定对象类型。

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

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

point_list.points.append(pt)