在ROS中将一些姿态放入列表

1 投票
1 回答
4248 浏览
提问于 2025-04-18 18:08

我尝试使用类 'geometry_msgs.msg._Pose.Pose',并通过Python将连续的位置放入一个列表中。以下是我的做法:

from geometry_msgs.msg import Pose
pose = Pose()
list = []
for i in range(5):
    pose.position.z = pose.position.z + 1
    list.append(pose)

我希望列表中的位置是与z值从1到5对应的连续位置。然而结果是列表中的位置都是一样的……

我对Python和ROS都很陌生……所以能不能请大家帮帮我……谢谢!

1 个回答

1

看看这个Udacity的帖子:

出现这个问题的原因是你只有一个“Pose”,而列表中的所有元素都指向它(虽然Python表面上不使用指针,但实际上是有的)。要解决这个问题,你需要为列表中的每个元素生成新的姿势。

像这样:

from geometry_msgs.msg import Pose
list = []
for i in range(5):
    pose = Pose()
    if i > 0:
        pose.position.z = list[i - 1].position.z + 1
    list.append(pose)

for item in list:
    print item.position.z

这样就可以解决你的问题了。

撰写回答