几何图形/姿势数据访问

2024-06-25 05:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是ROS的新成员,我只关心一个简单的问题。我有一个rostopic的数据被发布为geometry\msgs/Pose。假设我想将位置数据(比如x)作为一个数字,并将其存储到一个变量中。我用的是python。有人能建议正确的语法来准确地访问这些特定的数据吗?任何额外的信息也很受欢迎,尤其是当我可以找到访问所有这些不同类型的消息格式的语法时。在

更新:我遇到的问题是,如果我将整个数据保存为变量,我可以使用“.”“符号访问它。考虑到数据是geometry\msgs/Pos,我最初编写的回调函数是

def getcallback(self,data):
    var = data.position
    self.var = data

后来,我试着用

^{pr2}$

这是索引外的,它说Point没有属性x

但是在挣扎了一段时间后,我编辑了回调函数

def getcallback(self,data):
    var = data
    self.var = data

现在,我可以使用

self.var.position.x

我不知道为什么一个起作用,另一个不起作用,我想知道是否有人能解释。在

编辑:由于赶时间,我认为这里的问题完全不清楚。我知道发布和订阅节点以及rostopics。为了使问题更清楚,我重新写了这个问题。在


Tags: 数据函数self编辑datavardef语法
1条回答
网友
1楼 · 发布于 2024-06-25 05:33:38

在某些variable_x中存储数据的简单方法如下:

  1. 创建文件listener.py
  2. 使其可执行:chmod 770 listener.py
  3. 将此代码粘贴到其中:

    #!/usr/bin/env python

    import rospy
    from geometry_msgs.msg import Pose

    def callback(data):
        variable_x = data.position.x
        rospy.loginfo(rospy.get_caller_id() + 'I heard %f', variable_x)

    def listener():
        rospy.init_node('listener', anonymous=True)
        rospy.Subscriber('chatter', Pose, callback)
        # spin() simply keeps python from exiting until this node is stopped
        rospy.spin()

    if __name__ == '__main__':
        listener()
  1. 运行应用程序:./listener.py
  2. 在bash中输入以下内容进行测试:
^{pr2}$

回答其他问题: 您可以从docs.ros.org获取有关消息定义的信息。 既然你的问题很基本,请先浏览一下ROS的整个tutorial section。 在你的例子中,我只是修改了listener example。在

相关问题 更多 >