roslaunch
robotを動かす時には複数のノードが必要です。それをまとめて動かすみたいです。
$ roslaunch [package] [filename.launch]
作り方
ROS Wikiの例を参考に
rosのパッケージのフォルダに移動
$ roscd beginner_tutorials
launch
というフォルダを作成して移動
$ mkdir launch
$ cd launch
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>
で、他の端末からturlesim1にTopicを送る
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
とturtlesimに送ったにも関わらず、両方のカメが動きます。
<group>
タグは、グループを作る。
<node>
タグは、ノードを動かす。 pkg属性でパッケージを指定。name属性で名前を指定(__name:=と同じ?)。type属性がノード名
<remap>
タグはリマップですね。。
バックグラウンドで動いているみたいだからrosrun turtlesim turtle_teleop_keyは無理かなあ
<turtle1>
と同じグループでよいと思うので、
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
を
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
<node pkg="turtlesim" name="key" type="turtle_teleop_key"/>
</group>
にしてみる。。カメが1匹表示されないし動かない。。。やっぱり駄目っぽい。
ちなみに別で動かす時は、名前空間が追加されているのでリマップでPubliserの名前を変更する必要があるので、
$ rosrun turtlesim turtle_teleop_key /turtule/cmd_vel:=/turtlesim1/turtle1/cmd_vel
とする。