http://www.ros.org/wiki/ROS/Tutorials/UsingRxconsoleRoslaunch
今回でてくるコマンド
rxconsole, rxloggerlevel, roslaunch
まずチュートリアルに必要なパッケージをmakeしましょう。
$ rosdep install rxtools turtlesim
$ rosmake rxtools turtlesim
すでにturtlesimはmakeしてあると思いますが念のため。
$ roscore
$ rxloggerlevel
$ rxconsole
してデバッグツールを立ち上げましょう。
rxloggerlevelでは DEBUG, WARN, INFO, ERRORのデバッグレベルがあります。
そして、あの亀を立ち上げます。
$ rosrun turtlesim turtlesim_node
こんな感じ。
wikiのチュートリアルとは画面違いますね。
severityがチェックボックスで選べるようになっています。
$ rostopic pub turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 0.0
とすると亀が壁に衝突し、Warnがいっぱい表示されますね。
痛い!
rxconsoleのWarnのチェックボックスを外すと表示されなくなります。
必要に応じてデバッグレベルをうまく調整しましょうという話でした。
では次はroslaunchです。
ノードを一個一個立ち上げるのは大変なのでその自動化です。
フォーマットは以下です。
$ roslaunch [package] [filename.launch]
turtlesimをC-cでまず落としましょう。
roslaunchはlaunchファイルを使うので、まずそれを作ります。
$ roscd beginner_tutorials
$ mkdir launch
$ cd 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>
以下解説。
ではネームスペースを使って同じ名前のノードを作成することができます。
上の例だとsimという亀シミュレータを2つ作りますが、ネームスペースがturtlesim1とturtlesim2で違うので問題なく2つ立ち上がります。
inputというトピックをturtlesim1/turtle1にリネームしているみたいです。
もう一つの行でoutputをturtlesim2/turtle1にリネームしています。
これで2つのシミュレータが接続されます。
$ roslaunch beginner_tutorials turtlemimic.launch
とすると2つのシミュレータが立ち上がりましたね。
$ rostopic pub turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 -1.8
として亀を動かすと二つ同時に動きますね。
正直remapのあたりが意味がよく分かりません。input, outputというトピックには特別な意味があるんでしょうかね。
今回はこれで終わりです.
0 件のコメント:
コメントを投稿