首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:无法在ROS中设置几何_msgs/Pose中的属性错误

AttributeError:无法在ROS中设置几何_msgs/Pose中的属性错误
EN

Stack Overflow用户
提问于 2016-07-17 16:54:03
回答 1查看 812关注 0票数 0

我试图在ROS包中使用味觉/姿势。但它显示出了以下错误-

代码语言:javascript
复制
AttributeError: can't set attribute error

下面是代码的片段-

代码语言:javascript
复制
ee_pose['position'].x += -0.5
ee_pose['position'].y += -0.5

我修改了上面的行,但我正在寻找更好的方法。

代码语言:javascript
复制
ee_pose=Pose(position=Point(x=ee_pose['position'].x-0.5,
                            y=ee_pose['position'].y-0.5,
                            z=ee_pose['position'].z),
     orientation=Quaternion(x=ee_pose['orientation'].x,
                            y=ee_pose['orientation'].y,
                            z=ee_pose['orientation'].z,
                            w=ee_pose['orientation'].w))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 10:20:33

ROS中的PositionQuaternion of geometry_msgs/Pose使用collections.namedtuple来存储它们的值,因此一旦创建了Pose实例,就不能修改它;元组是不可变的。

为了避免重复,您可以使用一个函数从旧的Pose创建新的the;如下所示:

代码语言:javascript
复制
def update_pose(pose, **kwargs):
    new_pose = Pose(position = Point(
                                x=pose['position'].x + kwargs.get('px', 0),
                                y=pose['position'].y + kwargs.get('py', 0),
                                z=pose['position'].z + kwargs.get('pz', 0)),
                    orientation = Quaternion(
                                x=pose['orientation'].x + kwargs.get('qx', 0),
                                y=pose['orientation'].y + kwargs.get('qy', 0),
                                z=pose['orientation'].z + kwargs.get('qz', 0),
                                w=pose['orientation'].w + kwargs.get('qw', 0)))
    return new_pose

函数的位置为pxpypz和四元数为qxqyqzqw

并可用作:

代码语言:javascript
复制
ee_pose = update_pose(ee_pose, px=-0.5, py=-0.5)
print(ee_pose)
# {'position': Point(x=-0.366, y=0.7096, z=0.3766), 'orientation': Quaternion(x=0.7468, y=-0.5236, z=-0.2663, w=-0.3115)}

未指定的值将默认为0,并且在将位置和四元数作为参数传递时必须指定它们的符号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38423657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档