如何檢視相關的topic的結構和型別,並用python程式碼對其實現訂閱
阿新 • • 發佈:2021-11-30
獲取結構和型別
先讀一下有什麼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