1. 程式人生 > 其它 >如何檢視相關的topic的結構和型別,並用python程式碼對其實現訂閱

如何檢視相關的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