1.需求
一個程序中可能需要啟動多個節點,比如:ROS 內置的小烏龜案例,如果要控制烏龜運動,要啟動多個窗口,分別啟動 roscore、烏龜界面節點、鍵盤控制節點。如果每次都調用 rosrun 逐一啟動,顯然效率低下,如何優化?
官方給出的優化策略是使用 launch 文件,可以一次性啟動多個 ROS 節點。
2.實現
-
選定功能包右擊 ---> 添加 launch 文件夾
-
選定 launch 文件夾右擊 ---> 添加 launch 文件
-
編輯 launch 文件內容
<launch> <node pkg="helloworld" type="demo_hello" name="hello" output="screen" /> <node pkg="turtlesim" type="turtlesim_node" name="t1"/> <node pkg="turtlesim" type="turtle_teleop_key" name="key1" /> </launch>
-
node ---> 包含的某個節點
-
pkg -----> 功能包
-
type ----> 被運行的節點文件
-
name --> 為節點命名
-
output-> 設置日志的輸出目標
-
-
運行 launch 文件
roslaunch 包名 launch文件名
-
運行結果: 一次性啟動了多個節點
<!--rosrun turtlesim--> <launch> <!--添加被執行的節點--> <!--烏龜GUI--> <node pkg="turtlesim" type="turtlesim_node" name="turtle_GUI"/> <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_key"/> </launch>
運行:ctrl+~(esc下的鍵)
roslaunch hello_vscode start_turtle.launch
<!--rosrun turtlesim--> <launch> <!--添加被執行的節點--> <!--烏龜GUI--> <node pkg="turtlesim" type="turtlesim_node" name="turtle_GUI"/> <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_key"/> <node pkg="hello_vscode" type="hello_vscode_c" name="hello" output="screen"/> </launch>