2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« その前にroslaunch XMLを見ておく | トップページ | tfのデモを試す(リスナー解析編) »

2013年4月21日 (日)

tfのデモを試す(ブロードキャスター解析編)

ROSさんお手やわらかに:ROS入門編

デモのブロードキャスターのコードを見てみる。
ブロードキャスターは二つのプロセスとして起動され、各々turtle1,turtle2のposeをサブスクライブしてtfメッセージを送信する。

下記がブロードキャスターturtle_tf_broadcaster.pyの主要部分。

Broadcaster

最初に17行からの実行部分を見る。
18行で変数turtlenameにパラメータturtle(~turtle)からタートルの名前を取得。名前は前回投稿したroslaunchで設定している。
20行からがタートルのpose情報をサブスクライブするための設定。下記の順番で指定している。
 ・パラメータからサブスクライブするトピックを指定(/turtle1/poseなど)
 ・サブスクライブするメッセージの型を指定(turtlesim.msg.pose)これがハンドラに渡す第一引数
 ・ハンドラ関数を指定(handle_turtle_pose)
 ・第二引数として渡すタートル名(turtle1など)
これでおしまい。あとはアイドルループで待機する。

次は9行からのサブスクライブハンドラ関数。(と呼ぶのだろうか?)この間数は、タートルから取得した情報をそのまま送信する。

関数の最初の引数msgは目的のタートルからサブスクライブされた、位置と方向の情報(pose型)。二番目turtlenameがタートルの名前。
10行目はtf型のオブジェクトbrを生成。
11行目から実際のtf情報の送信。下記の順にセットして送信する。
 ・座標情報(msg.x, msg.y, 0)、z座標はないので0
 ・各軸のオイラー角からクオータニオンに変換した姿勢情報。msg.thetaでz軸まわりの旋回角を取得し変換。
 ・現在の時刻
 ・現座標系の名前(タートルの名前を使う)
 ・親座標系の名前(親座標系はワールド座標)
ややこしいがあらかたtfがやってくれるので、定型的に使えばいいのかも。それから、クオータニオンなんてコトバ、初めて書いた。

送る方はこれだけ。次回はリスナーだ。

今回のpythonスクリプトは下記。
「turtle_tf_broadcaster.py」をダウンロード

« その前にroslaunch XMLを見ておく | トップページ | tfのデモを試す(リスナー解析編) »

ROSさんお手やわらかに」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: tfのデモを試す(ブロードキャスター解析編):

« その前にroslaunch XMLを見ておく | トップページ | tfのデモを試す(リスナー解析編) »