3 ros2 launch
4. 用rqt_graph檢視節點關係圖
總結學習目標:能夠通過啟動檔案啟動乙個複雜的ros系統
在前面的教程當中我們每次都要開啟兩個終端去啟動節點,今後我們會有越來越多的節點,這種操作將會變得十分無聊。
啟動檔案可以同時啟動多個節點,同時對他們進行配置。
通過ros2 launch
可以一次啟動所有節點,而且一次對所有節點完成配置
需要安裝rqt_graph 和 turtlesim,同時需要乙個文字編輯器
我們建立乙個資料夾儲存啟動檔案
mkdir launch
我們通過下面的命令建立乙個啟動檔案,從ros1過來的同學就發現有點東西啊,啟動檔案變為.py
了繼續看戲吃瓜
touch launch/turtlesim_mimic_launch.py
找乙個你最喜歡的文字編輯器開啟剛剛建立的檔案
我們把下面的內容貼上到檔案中
from launch import launchdescription
from launch_ros.actions import node
def generate_launch_description(
): return launchdescription(
[ node(
package=
'turtlesim',
node_namespace=
'turtlesim1',
node_executable=
'turtlesim_node',
node_name=
'sim'
), node(
package=
'turtlesim',
node_namespace=
'turtlesim2',
node_executable=
'turtlesim_node',
node_name=
'sim'
), node(
package=
'turtlesim',
node_executable=
'mimic',
node_name=
'mimic',[(
'/input/pose', '/turtlesim1/turtle1/pose'
), (
'/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'
), ])]
)
這部分不多解釋,學過python的都知道,首先我們匯入點東西和c++include類似
from launch import launchdescription
from launch_ros.actions import node
接下來定義了乙個函式
def generate_launch_description(
): return launchdescription(
)
launchdescription
描述這個系統結構,一共三個節點,全部來自turtlesim
包,我們要實現的功能就是啟動兩個烏龜介面讓其中乙個烏龜的動作跟隨另外乙個烏龜。
我們接著往下看前面兩部分很簡單就是啟動了兩個烏龜
node(
package=
'turtlesim',
node_namespace=
'turtlesim1',
node_executable=
'turtlesim_node',
node_name=
'sim'
),node(
package=
'turtlesim',
node_namespace=
'turtlesim2',
node_executable=
'turtlesim_node',
node_name=
'sim'
),
我們可以發現兩個節點只有node_namespace
不同,我們可以通過設定命名空間不同的方式同時啟動兩個節點,並且保證話題和節點名字不會發生衝突。
如果沒有命名空間的區分,兩個海龜都接收同一話題的命令,並且在同乙個話題上發布其息,就無法區分兩隻海龜的訊息。
最後乙個節點也是來自turtlesim
包,但是是另外乙個可執行檔案
node(
package=
'turtlesim',
node_executable=
'mimic',
node_name=
'mimic',[(
'/input/pose', '/turtlesim1/turtle1/pose'
), (
'/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'
), ]
)
這個節點新增了重對映的配置
mimic
節點的/input/pose
話題被重對映到了/turtlesim1/turtle1/pose
,/output/cmd_vel
話題被重對映到了/turtlesim2/turtle1/cmd_vel
。這個節點的話題重對映過後訂閱turtlesim1
的位置給turtlesim2
傳送速度,執行效果就會讓海龜二號跟隨海龜一號的動作。
我們通過下面的方式執行這個啟動檔案
ros2 launch launch/turtlesim_mimic_launch.py
我們可以通過直接執行乙個檔案的方式啟動乙個launc**件,就像上面那樣,我們還可以啟動乙個ros包內的啟動檔案語法格式如下ros2 launch
,在後面的教程當中會慢慢講到這種啟動方式
執行過後我們看到出現了兩個海龜介面,同時終端也有相關訊息輸出
[info]
[launch]: default logging verbosity is set to info
[info]
[turtlesim_node-1]: process started with pid [11714]
[info]
[turtlesim_node-2]: process started with pid [11715]
[info]
[mimic-3]: process started with pid [11716]
我們給一號海龜傳送乙個速度指令讓它動起來
ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/twist ', angular: }'
我們看到兩個海龜都在以一樣的軌跡轉圈
執行命令
rqt_graph
通過這個節點關係圖我們可以很清楚的看到當前ros的節點連線情況
啟動檔案是啟動多個節點同時進行節點配置的很方便的形式,我們可以建立乙個python指令碼通過ros2 launch
來啟動這個指令碼進而啟動整個系統。
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...
ROS2學習筆記之rosbag篇
總結後續 學習目標 記錄發布在話題上的訊息,方便我們後期檢視 ros2 bag是乙個命令列工具用於記錄話題上發布的訊息。他可以儲存任意數量話題上的訊息內容。我們可以通過資料回放實現實驗場景的重現。同時這也是和他人分享資料的好方法。我們首先安裝ros2 bag sudo apt install ros...
ROS2學習筆記之了解ros2doctor篇
總結學習目標 學會使用ros2doctor工具分析出現的問題 當ros2沒有安裝我們預期的設定執行的時候,我們可以用ros2doctor工具檢查ros2的設定。ros2doctor對ros2全面的檢查,包括平台 版本 連線情況 環境 執行的系統等等。然後給出可能的錯誤和原因。ros2doctor是乙...