如何查看相关的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

 

 

 

 
 
 
posted @ 2021-11-30 15:59  蜜铀  阅读(243)  评论(0编辑  收藏  举报