tfのデモを試す(ブロードキャスター解析編)
ROSさんお手やわらかに:ROS入門編
デモのブロードキャスターのコードを見てみる。
ブロードキャスターは二つのプロセスとして起動され、各々turtle1,turtle2のposeをサブスクライブしてtfメッセージを送信する。
下記がブロードキャスターturtle_tf_broadcaster.pyの主要部分。
最初に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さんお手やわらかに」カテゴリの記事
- 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)
コメント