2009年12月28日月曜日

tfを知る

今回はかなりマニアックなtfというライブラリの勉強です。

要するに、座標系と座標系の関係を記述するものと考えてください。
座標系が分からない人は、位置(x, y, z)と姿勢(r, p, y)を合わせたようなものと思ってください。分かる人はそうじゃないだろ、とツッコミを内心いれておいてください。

時系列を考慮して、3秒前の手先からの相対座標での頭の位置姿勢なんかが分かっちゃいます。
http://www.ros.org/wiki/tf

ではイントロからやりましょう。
http://www.ros.org/wiki/tf/Tutorials/Introduction%20to%20tf


$ rosdep install turtle_tf rviz
$ rosmake turtle_tf rviz
して必要なパッケージを作成します。

また、亀ですね。とりあえず下のコマンドを打って動かしてみましょう。
$ roslaunch turtle_tf turtle_tf_demo.launch


亀は矢印キーで動かせます。
なんかもう一匹の亀がストーカーのごとくついてきますね。
この追跡をtfを使ってやっているみたいです。

では何が起きているかを見てみましょう。
$ rosrun tf view_frames
するとframes.pdfがカレントディレクトリにできるので、
$ display frames.pdf
などして中身を見てみましょう。


これを見るとworldという座標系がturtle1とturtle2の親だということが分かります。

さらに、以下のようにするとturtle1から見たturtle2の座標系が表示されます。
$ rosrun tf tf_echo turtle1 turtle2
At time 1261811349.741
- Translation: [-0.000, -0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.278, 0.961]
            in RPY [0.000, -0.000, 0.563]
At time 1261811350.736
- Translation: [-0.000, -0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.278, 0.961]
            in RPY [0.000, -0.000, 0.563]
今は亀がおいついているので位置のずれは0ですね。
亀を動かすと値が変わるのが分かりますね。
亀の前方がxっぽいですね。
$ rxgraph
で見てみると、


/tfというトピックをいろんな人がいろんなとこへ書き込んでますね。

今回はこれくらいにしておきます。

次回はtf broadcasterを書きます。
勉強のため苦手なC++のほうでやります。

0 件のコメント:

コメントを投稿