roslaunch命令從launch文件中啟動一個節點,它的使用方法如下:
roslaunch [package] [filename.launch]
首先切換到beginner_tutorials文件下:
roscd beginner_tutorials
提示:
If roscd says similar to roscd: No such package/stack 'beginner_tutorials'. you will need to source the environment setup file like you did at the end of the create_a_workspace tutorial: $ cd ~/catkin_ws $ source devel/setup.bash $ roscd beginner_tutorials
創建launch文件夾,切換到該文件夾下:
mkdir launch
cd launch
注意:launch文件是在相應的包文件里面的.
然后在這個文件夾下新建一個launch文件,命名為turtlemimic.launch,並把下面的內容復制進去.
新建文件,輸入:
gedit turtlemimic.launch
復制的文件內容:
<launch> <group ns="turtlesim1"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <group ns="turtlesim2"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <node pkg="turtlesim" name="mimic" type="mimic"> <remap from="input" to="turtlesim1/turtle1"/> <remap from="output" to="turtlesim2/turtle1"/> </node> </launch>
保存退出就可以了。
現在使用如下命令載入:
roslaunch beginner_tutorials turtlemimic.launch
這時就能看到兩只小烏龜,但是這時用rosnode list查詢,能看到新增三個節點。/mimic,/turtlesim1/sim,/turtlesim2/sim.
在一個新打開的終端中輸入:
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
就可以看到兩只烏龜都在轉圈。
下面來解釋一下原因,分析一下剛才的那個launch文件:
<lanuch>標簽用來識別這是一個launch文件。
<group ns="turtlesim1"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <group ns="turtlesim2"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group>
上面的代碼表示我們啟動了兩個烏龜節點,他們的名字都是sim,但是他們在不同的命名空間中,所以不會有相同名字的沖突。
<node pkg="turtlesim" name="mimic" type="mimic"> <remap from="input" to="turtlesim1/turtle1"/> <remap from="output" to="turtlesim2/turtle1"/> </node>
上面的這些代碼中我們啟動了mimic節點,同時把這個節點的input和output話題重命名為turtle1和turtle2。
這時通過rosrun rqt_graph rqt_graph顯示的信息是:
上面的這些內容使turtlesim2模仿turtlesim1。所以雖然我們只向turtlesim1發布了話題,turtlesim2也做出了反應。