rostopicコマンドあれこれ
ROSさんお手やわらかに:ROS入門編
今回はrostopicコマンドをあれこれを試してみる。チュートリアルページの1.2.2から。このコマンドはトピックを操作をするものだ。
rostopic echoはトピックが発行したり引用したりするメッセージをタイプする。デバッグには必須だ。
rostopic listは発行・引用されている変数をリストする。もっともシンブルに rostopic list -v とやると、現在走っているすべてのトピックの変数(構造体か?)をリストする。
rostopic type でトピックを指定するとその変数の名前を取得できる。(これはlistでもわかる)次に、rosmsg show にこの変数名を与えると、その変数の要素の名前と型を表示する。こんな感じ。
rosmsg show turtlesim/Velocity
float32 linear
float32 angular
つまり、この構造体は移動距離linerと旋回角度angular二つの変数からなっているというわけだ。
これは既存のトピックとメッセージやりとりするプログラムを作る際に便利なのかな?
さて、いよいよコマンドラインからトピックにメッセージを送ってみる。ここまでくるとようやくプログラムが作れるような気になってくる。
rostopic pub -1 /turtle1/command_velocity turtlesim/Velocity -- 2.0 1.8
これはシミュレータの亀に円弧を描いて動くようメッセージを送る。一回のコマンドで一個のメッセージだ。これを実行するとこんなメッセージが現れる。
publishing and latching message for 3.0 seconds
3秒後にまたコマンド入力できるようになるが、何をラッチしているのかは分からない。
(後から考えると、これは3秒間このメッセージを「掲示」しているという意味らしい。つまりこの間にノードはメッセージを取得することになる。取得されるとメッセージはそのノードからは見えなくなるらしい。そうでないと「1回だけ」実行できない。3秒以上経過するとメッセージは自動的に消去される。メッセージが残っていると、思いがけないときに引用され、誤動作につながるかもしれないからだろう。)
周期的に送るにはこんな風にする。毎秒1回円弧を描くコマンドを送る。亀は円を描いて動きつづける。
rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 -1.8
rostopic pub -h でヘルプが出る。他のコマンドはこれを見ればまあ推測できる。
いろいろといじっているうちにコマンドを出しても亀が動かなくなった。こうなってしまうとroscoreを再起動してやり直さないとダメだった。
« ROSコマンドのまとめ | トップページ | ここらでスピードアップ! »
「ROSさんお手やわらかに」カテゴリの記事
- 3Dプリンターで作る簡単turtlebot(おしまい)(2017.01.07)
- 3Dプリンターで作る簡単turtlebot(raspberry pi3の取り付け)(2017.01.03)
- 3Dプリンターで作る簡単turtlebot(kinectの取り付け)(2017.01.02)
- 3Dプリンターで作る簡単turtlebot(パーツの組み立て2)(2016.12.29)
- 3Dプリンターで作る簡単turtlebot(パーツの組み立て1)(2016.12.25)
コメント