显示ROS消息的子字段

2024-05-23 17:27:33 发布

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

对于给定的ros消息,是否有任何方法可以获取ros消息的子字段。我正在用python脚本从rosbag文件中读取消息

"for topic, msg, t in bag.read_messages(): "

现在给定主题和消息,我可以显示消息的子字段吗。在

例如: 导航/里程计.msg包含子字段:“header”、“child_frame_id”、“pose”和“twist”。(Reference link)

是否有命令将子字段作为输出返回。。如果我事先不知道子字段

谢谢


Tags: 文件方法in脚本消息主题forread
1条回答
网友
1楼 · 发布于 2024-05-23 17:27:33

下面是一个简单的python节点(基于this),它完全符合您的要求:

#!/usr/bin/env python
import rospy
from nav_msgs.msg import Odometry 

def callback(data):
    rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.header)
    rospy.loginfo(rospy.get_caller_id() + "child_frame_id %s", data.child_frame_id)
    rospy.loginfo(rospy.get_caller_id() + "pose %s", data.pose)
    rospy.loginfo(rospy.get_caller_id() + "twist %s", data.twist)

def listener():

    # In ROS, nodes are uniquely named. If two nodes with the same
    # node are launched, the previous one is kicked off. The
    # anonymous=True flag means that rospy will choose a unique
    # name for our 'listener' node so that multiple listeners can
    # run simultaneously.
    rospy.init_node('listener', anonymous=True)

    rospy.Subscriber("odom_topic", Odometry, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

if __name__ == '__main__':
    listener()

相关问题 更多 >