welcom ! Handel home

2025年2月12日 星期三

ROS rostopic list

 

🚀 監聽 ROS rostopic

在 ROS(Robot Operating System)中,rostopic 主要用於 監聽、發布、查看主題(topics),這是 ROS 內部節點(nodes)通訊的核心機制。


📌 1️⃣ 列出所有可用的 rostopic

執行:

bash
rostopic list

這將顯示當前所有正在運行的 ROS 主題(topics),例如:

bash
/cmd_vel /odom /scan /tf /gazebo/link_states /gazebo/model_states

這些 topics 代表不同的感測器數據、控制指令或機器人的狀態資訊。


📌 2️⃣ 監聽某個 rostopic

你可以使用:

bash
rostopic echo /topic_name

例如:

bash
rostopic echo /cmd_vel

如果 /cmd_vel機器人的速度控制 topic,你將看到類似的輸出:

yaml
linear: x: 0.5 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.2

這表示 機器人正在以 0.5 m/s 的速度前進,並以 0.2 rad/s 旋轉


📌 3️⃣ 監聽 rostopic 並加上時間戳

如果你想在輸出中 顯示時間戳,請使用:

bash
rostopic echo -t /topic_name

例如:

bash
rostopic echo -t /odom

輸出:

yaml
header: seq: 123 stamp: secs: 1739336362 nsecs: 123456789 frame_id: "odom" pose: pose: position: x: 1.23 y: 0.45 z: 0.00 orientation: x: 0.00 y: 0.00 z: 0.71 w: 0.71

這對於 分析機器人運動軌跡 非常有幫助。


📌 4️⃣ 監聽 rostopic 並只顯示特定欄位

如果你只想顯示某個欄位,例如 linear.x,可以使用:

bash
rostopic echo /cmd_vel/linear/x

這只會輸出:

0.5

這對於 過濾無關數據、提取特定信息 非常有用。


📌 5️⃣ 限制 rostopic echo 的輸出頻率

如果某個 rostopic 數據太頻繁(例如 /scan 雷射數據),你可以限制輸出頻率:

bash
rostopic echo -r 1 /scan

這將 限制輸出頻率為 1Hz(每秒 1 次),避免終端被大量數據刷屏。


📌 6️⃣ 監聽 rostopic 並保存到文件

如果你想要記錄 rostopic 數據,方便日後分析,可以使用:

bash
rostopic echo /odom > odom_data.txt

這將 /odom topic 的數據存到 odom_data.txt,你可以用 catgrep 來查看:

bash
cat odom_data.txt grep "x:" odom_data.txt

📌 7️⃣ 查看 rostopic 的數據類型

如果你想知道某個 topic 內部的數據結構,執行:

bash
rostopic type /cmd_vel

可能會輸出:

geometry_msgs/Twist

然後,你可以查看它的完整訊息格式:

bash
rosmsg show geometry_msgs/Twist

輸出:

go
geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z

這樣你就知道 /cmd_vel topic 內部包含 線速度 linear 和角速度 angular


📌 8️⃣ 監聽 rostopic 並畫圖

如果你想要 可視化數據變化,可以使用:

bash
rqt_plot /odom/pose/pose/position/x

這將 即時繪製 x 位置的變化圖,方便你觀察機器人軌跡。


🚀 9️⃣ 總結

指令用途
rostopic list列出所有 rostopic
rostopic echo /topic_name監聽某個 rostopic
rostopic echo -t /topic_name顯示 topic 時間戳
rostopic echo /cmd_vel/linear/x只監聽 linear.x 欄位
rostopic echo -r 1 /scan限制輸出頻率(1Hz)
rostopic type /cmd_vel查看 topic 類型
rosmsg show geometry_msgs/Twist查看 topic 內部結構
rqt_plot /odom/pose/pose/position/x即時繪製 rostopic 數據變化

沒有留言: