我是ROS的新手,确实遇到了一个简单的问题。我有一个关于rostopic的数据,发布为geometry_msgs / Pose。假设我想将位置数据(例如x)作为数字并将其存储到变量中。我正在使用python。有人可以建议正确的语法以完全访问此特定数据吗?还要感谢任何其他信息,特别是在我可以找到访问所有这些不同类型消息格式的语法的地方。
更新:我遇到的问题是,如果将整个数据另存为变量,则可以使用”。表示法访问它。考虑到数据为geometry_msgs / Pos,我最初编写的回调函数为
def getcallback(self,data):
var = data.position
self.var = data
后来,我尝试使用
进行访问self.var.x
没有索引说Point没有属性x。
但是在挣扎了一段时间之后,我编辑了回调函数
def getcallback(self,data):
var = data
self.var = data
现在,我可以使用来访问变量
self.var.position.x
我不确定一个人为什么工作,而另一个人不工作,我想知道是否有人可以解释。
编辑:急于解决,我认为这里的问题尚不清楚。我知道发布和订阅节点和rostopics。我用一些更新将问题重写了,以使问题更清楚。
答案 0 :(得分:0)
将数据存储在某些variable_x
中的简单方法如下:
listener.py
chmod 770 listener.py
#!/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()
./listener.py
rostopic pub /chatter geometry_msgs/Pose "position: x: 3.1415 y: 0.0 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 0.0"
要回答您的其他问题: 您可以从docs.ros.org获取有关消息定义的信息。 由于您的问题确实很基础,因此请首先遍历整个tutorial section ROS。 在您的情况下,我只是改编了listener example。