如何查看相关的topic的结构和类型,并用python代码对其实现订阅
获取结构和类型
先读一下有什么topic
rostopic list
查询一条相关的topic数据
rostopic echo /yzy_mc/yzy_tof -n1
最后的 -n1 的意思是你可以获取一条/yzy_mc/yzy_tof的数据
你将会获取一条这样类型的返回信息
echoes: [0.023000000044703484, 0.3930000066757202, 0.0, 0.0, 0.0, 0.009999999776482582, 0.003000000026077032, 0.03700000047683716]
查看具体的信息内容
rostopic info /yzy_mc/yzy_tof
返回信息:
Type: sensor_msgs/LaserEcho Publishers: * /yzy_mc/yzy_serial_mc (http://u1w2-desktop:42243/) Subscribers: None
你可以看到构造类型(type)、Publisher(发布者信息)、Subscribers(订阅者信息)
查看构造类型的结构
rosmsg show sensor_msgs/LaserEcho
返回:
float32[] echoes
Python实现订阅
构建一个ros包
cd ~/catkin_ws/src
catkin_create_pkg tof_values rospy
cd tof_values
mkdir launch
文件夹src下实现订阅代码:tof_listener.py
#!/usr/bin/env python import rospy from sensor_msgs.msg import LaserEcho def callback(data): rospy.loginfo(rospy.get_caller_id() + "I heard %f", data.echoes[0]) def listener(): rospy.init_node('toflistener', anonymous=True) rospy.Subscriber("/yzy_mc/yzy_tof", LaserEcho, callback) rospy.spin() if __name__ == '__main__': listener()
其中代码:from sensor_msgs.msg import LaserEcho 中的sensor_msgs 及 LaserEcho ,你可以从上一步中看到关联性。
赋予权限
$ chmod +x src/rof_listener.py
launch文件夹下创建tof.launch文件
<launch> <node pkg="tof_value" type="tof_litener.py" name="scan_values" output="screen"> </node> </launch>
加载Launch文件
roslaunch tof_values tof.launch