總結後續
學習目標:記錄發布在話題上的訊息,方便我們後期檢視
ros2 bag
是乙個命令列工具用於記錄話題上發布的訊息。他可以儲存任意數量話題上的訊息內容。我們可以通過資料回放實現實驗場景的重現。同時這也是和他人分享資料的好方法。
我們首先安裝ros2 bag
sudo apt install ros-eloquent-ros2bag ros-eloquent-rosbag2*
我們準備記錄海龜教程中鍵盤的輸入,首先我們啟動相應節點。
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
我們新建乙個資料夾用於存放rosbag檔案
mkdir bag_files
ros2 bag
只能記錄話題的訊息,我們首先檢視當前的話題列表
ros2 topic list
目前所有的話題列表如下
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
在之前的教程當中我們知道/turtle1/cmd_vel
話題就是鍵盤控制的指令傳送的話題,我們通過下面命令檢視話題的訊息內容。
ros2 topic echo /turtle1/cmd_vel
當我們在鍵盤控制終端沒有操作的時候話題上是不會有訊息的,我們按一下方向鍵訊息才會傳送到話題上。
我們使用下面的命令可以儲存話題上的訊息。
ros2 bag record
我們切換到剛剛新建的目錄,應為預設情況下這個命令會將記錄的結果儲存到當前資料夾下面。
cd bag_files
我們通過下面的命令記錄/turtle1/cmd_vel
話題上的訊息
ros2 bag record /turtle1/cmd_vel
然後我們可以看到終端輸出下面的訊息,表明開始記錄訊息
[info]
[rosbag2_storage]: opened database 'rosbag2_2020_02_20-11_44_13/rosbag2_2020_02_20-11_44_13_0.db3'
for read_write.
[info]
[rosbag2_transport]: listening for topics...
[info]
[rosbag2_transport]: subscribed to topic '/turtle1/cmd_vel'
[info]
[rosbag2_transport]: all requested topics are subscribed. stopping discovery...
現在我們開始用鍵盤控制海龜運動
隨便讓海龜動一下就行,然後我們用ctrl + c關掉ros2 bag
的終端
然後檔案會被儲存在當前目錄下的按照rosbag2_year_month_day-hour_minute_second
方式命令的乙個目錄下面。
例如我們可以使用下面的命令同時記錄多個話題,我們還可以加上-o
選項設定輸出的名字,這樣儲存檔案的名字就不會像預設那樣是按時間命名了
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
同樣我們隨便控制幾下海龜過後ctrl + c關掉rosbag,我們可以看到bag_files
資料夾下面又多出了乙個資料夾
我們可以使用-a
選項記錄所有話題,但是一般不推薦使用這種方式,最好我們還是選擇自己需要的話題
我們可以通過下面的命令檢視rosbag的資訊
ros2 bag info
例如
ros2 bag info subset
我們得到下面的輸出
files: subset/subset_0.db3
bag size: 100.6 kib
storage id: sqlite3
duration: 12.57s
start: feb 20 2020 11:53:35.524 (1582170815.524)
end feb 20 2020 11:53:47.581 (1582170827.581)
messages: 801
topic information: topic: /turtle1/pose | type: turtlesim/msg/pose | count: 755 | serialization format: cdr
topic: /turtle1/cmd_vel | type: geometry_msgs/msg/twist | count: 46 | serialization format: cdr
在進行回放之前我們先關掉鍵盤控制節點,然後我們輸入下面的命令進行回放
ros2 bag play subset
終端輸出下面訊息
[info]
[rosbag2_storage]: opened database 'subset/subset_0.db3'
for read_only.
然後海龜會按照我們剛剛記錄的控制軌跡進行運動
海龜停止運動過後並不會回放過程還在繼續,因為我們還同時記錄了/turtle1/pose
話題的訊息,rosbag會在回放完所有的話題訊息過後才會退出
rosbag是乙個很有用的東西,ros2對rosbag進行了相應的改進,也帶來了很多好處。
到此ros2基礎教程結束,接下來是開發篇,正式開始講如何寫**。
ROS2學習筆記之了解ros2doctor篇
總結學習目標 學會使用ros2doctor工具分析出現的問題 當ros2沒有安裝我們預期的設定執行的時候,我們可以用ros2doctor工具檢查ros2的設定。ros2doctor對ros2全面的檢查,包括平台 版本 連線情況 環境 執行的系統等等。然後給出可能的錯誤和原因。ros2doctor是乙...
ROS2學習筆記1 安裝
系統 ubuntu 18.04 64位 ros2 eloquent 1.修改為清華軟體源 ubuntu的軟體源配置檔案是 etc apt sources.list,需完全替換為新的軟體源映象。命令 sudo vi etc apt sources.list內容 預設注釋了原始碼映象以提高 apt up...
ROS2學習 建立自己的ROS2功能包
建立資料夾 mkdir p ros2 ws src cd ros2 ws colcon build1 建立功能包 建立乙個pubsub的包 ros2 pkg create build type ament cmake cpp pubsub改xml檔案裡的郵箱 2 寫發布節點 建立ros2 talke...