2015-03-26 1 views
1

Я определила следующие два сообщения структуры для пакета 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 и она до сих пор не работает

ответ

0

Сообщение points не является прямым списком сообщений point, но является структурой, которая имеет член под названием points, который является списком.

Для добавления элементов в этот список, вы должны получить доступ к элементу, а не содержащей структура:

point_list.points.append(pt) 
+0

Спасибо чувака, что решить мою проблему –

0

Попробуйте

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

Перед тем, как говорили компилятору класс точки был объектом списка, который невозможен, если вы не вызываете метод точки. Установив его в общий список ([]), он может принимать любой тип. Это часть красоты python, вам не обязательно указывать тип объекта.

Смежные вопросы