"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)
我为 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)