在上一篇文章中,我們介紹了兩種登錄機器人的方式,接下來我們介紹登錄機器人之后,我們如何通過topic操作命令實現與機器人的交互。
1. 啟動 & 獲取topic
- 在一個終端登錄樹莓派后,執行下列命令運行機器人
roslaunch huanyu_robot_start Huanyu_robot_start.launch
- 因為終端具有獨占性,所以在另一個終端登錄樹莓派,獲取topic
ssh huike@192.168.12.1 #登錄樹莓派
rostopic list #獲取topic
我的機器人返回 topic(topic依賴原廠代碼,如果原廠代碼一樣,那topic列表也是一樣的。)
/cmd_vel
/joint_states
/mobile_base/sensors/imu_data
/mobile_base/sensors/imu_data_raw
/nodelet_manager/bond
/odom
/odom_combined
/robot/PowerValtage
/robot_cmd_vel
/robot_pose_ekf/odom_combined
/rosout
/rosout_agg
/scan
/smoother_cmd_vel
/tf
/tf_static
/velocity_smoother/parameter_descriptions
/velocity_smoother/parameter_updates
?2. topic操作命令詳解
2.1 執行下列命令獲取topic操作命令
rostopic --help
2.2 topic 操作命令及其詳細作用
執行上述命令后,會返回總計8個操作命令,各個命令名稱和作用如下:
-
rostopic bw ? ?
display bandwidth used by topic??表示獲取帶寬,具有測試性
主要用于分析數據量、頻率和網絡傳輸負載,幫助評估系統的通信效率,尤其是在傳輸激光雷達、圖像或點云等大量數據時非常實用。
-
rostopic delay
display delay of topic from timestamp in header? 表示獲取延時
是 ROS(Robot Operating System)中的一個調試工具,用于檢測指定話題的消息發布延遲情況,幫助分析系統中是否存在通信延遲、發布卡頓等問題。
-
rostopic echo
print messages to screen? ? ? ? ? ? ? 獲取messages
用于在終端中打印話題的消息內容,便于開發者查看、調試和驗證話題的數據是否正常發布和格式是否正確。
-
rostopic find?
find topics by type? ? ? ? ? ? ? ? ? ? ? ? ? ?獲取同一類型的topics
用于查找當前系統中正在發布的、指定類型的所有話題。
-
rostopic hz
display publishing rate of topic? ? ? ? 獲取發布頻率
用于顯示指定話題的發布頻率的命令,可以幫助你監控話題的實時數據流速度。它對于檢查某個話題(比如傳感器數據)是否按預期的頻率發布非常有用。
-
rostopic info
print information about active topic? ??
用于查看特定話題的詳細信息,例如消息類型、發布者、訂閱者以及服務等。這對于了解話題的來源、數據類型和系統連接狀態非常有用。
-
rostopic list
list active topics
用于列出當前系統中所有正在發布的 ROS 話題。它是調試和檢查系統中數據流的一個重要工具,特別是在你想了解系統中有哪些話題在運行時。
-
rostopic pub
?publish data to topic? ? ? ?向 ROS topic 主動發布(publish)數據
用于發布消息到指定話題的命令。它允許你通過命令行發布消息到一個話題,用于調試、測試或者模擬傳感器數據、控制指令等。這對于調試機器人系統和驗證消息交換非常有用,尤其是在沒有實際硬件時。
-
rostopic type
print topic or field type? ? ? 打印指定 topic 的消息類型
3. 舉例說明如何使用topic操作命令
3.1 命令行格式
需要將topic操作命令同topic結合使用,命令行格式可以總結為:操作命令 + topic
3.2 舉例說明
以 topic:/scan(雷達)為例,介紹下幾個常用命令的作用
執行以下命令以及對應的作用說明如下
rostopic delay /scan
此命令會顯示 /scan
話題消息從發布到接收的延遲。你可以用它來評估激光雷達數據在網絡中傳播的時間,特別是在高負載或網絡延遲較大的情況下。
rostopic bw /scan
此命令會顯示 /scan
話題的帶寬(單位:字節/秒)。它幫助你了解激光雷達數據流所消耗的帶寬,特別是在需要優化網絡帶寬時。對于高頻率發布的 /scan
話題,帶寬可能會比較大。
rostopic echo /scan
此命令會實時顯示 /scan
話題的消息內容,也就是激光雷達的數據。你可以查看 LaserScan
消息中的字段,如 ranges
(激光測量的距離數組),angle_min
(最小角度),angle_max
(最大角度)等,幫助你分析傳感器數據。