ROS研究ノート(5):TF(変換)座標変換と原理分析

ディレクトリ

6 TF

6.1 TF / TFツリー形式の仕様

6.2 TF関連のツールコマンド

6.3 TFの原則

6.3.1 ROS座標系

6.3.2座標系の分類

6.3.3ロボットTFのセットアップ


6 TF

TFはROSの基本的かつ重要な概念であり、TF(トランスフォーム)は座標変換です。

Tfは本質的にツリーのようなデータ構造であるため、通常「tfツリー」と呼びます。tfはトピックと見なすこともできます。/tf、トピックに格納されるメッセージはtfツリーのデータ構造形式です。ロボット全体、さらにはマップまでの座標変換関係が維持されます。

6.1 TF / TFツリー形式の仕様

TransformStamped.msgのフォーマット仕様は次のとおりです。

std_mags/Header header
    uint32 seq
    time stamp
    string frame_id
string child_frame_id
geometry_msgs/Transform transform
    geometry_msgs/Vector3 translation
        float64 x
        float64 y
        float64 z
    geometry_msgs/Quaternion rotation
        float64 x
        float64 y
        flaot64 z
        float64 w

まず、ヘッダーはシリアル番号、時間、フレーム名を定義します。次に、child_frameも作成しました。これら2つのフレーム間の変換は、geometry_msgs / Transformによって定義されます。Vector3 3次元ベクトルは並進を表し、Quaternionクォータニオンは回転を表します。

最後に、多くのTransformStamped.msgがtfに送信され、TFツリーが形成されました。

 

TFツリーは、多数のフレーム間のTFステッチによって形成されます。それでは、TFツリーはどのタイプですか?次のように:

  • tf / tfMessage.msg
  • tf2_msgs / TFMessage.msg

TFには2つのデータ型があり、主な理由はバージョンの反復です。ROS Hydro以降、tfの最初の世代はtf2を支持して「非推奨」になりました。

使用しているTFのバージョンを確認するには、rostopic info / tfコマンドを使用します。

tf / tfMessage.msgまたはtf2_msgs / TFMessageの標準形式の仕様は次のとおりです。

geometry_msgs/TransformStamped[] transforms
    std_mags/Header header
        uint32 seq
        time stamp
        string frame_id
    string child_frame_id
    geometry_msgs/Transform transform
        geometry_msgs/Vector3 translation
            float64 x
            float64 y
            float64 z
        geometry_msgs/Quaternion rotation
            float64 x
            float64 y
            flaot64 z
            float64 w

TransformStamped配列はTFツリーです。

6.2 TF関連のツールコマンド

  • 現在のtfツリーに基づいてpdfグラフを作成します。

        $ rosrun tf view_frames

       このツールは、最初に5秒間/ tfをサブスクライブし、この間に受信したtf情報に基づいてtfツリーを描画してから、pdfマップを作成します。

  • 現在のtfツリーを表示します。

       $ rosrun rqt_tf_tree rqt_tf_tree

       このコマンドもtfツリーをクエリしますが、最初のコマンドとの違いは、コマンドが現在のtfツリーを動的にクエリすることです。現在の変更は、いつ切断するか、いつキャッチするかなど、すぐに確認できます。これらは、rqtプラグインを介して表示されます。

  • 2つのフレーム間の変換関係を表示します。

      $ rosrun tf tf_echo [reference_frame] [target_frame]

6.3 TFの原則

6.3.1 ROS座標系

  • ROSの座標系は右手で定義されます。

したがって、ROSロボットの場合、それを座標系の元の中心として使用すると、次のようになります。

  • X軸:フロント

  • y軸:左

  • z軸:上

 

  • 軸を中心とした回転では、右手の定義も使用されます。

 

右手で座標軸を持ち、親指の方向が座標軸の正の方向を向き、4本の指の方向がこの座標軸に沿った正の回転方向を定義します。

右手の定義によれば、z軸を中心とした正の回転は反時計回りの回転です。

  1. ヨーを使用して、方位角と呼ばれるZ軸を中心に回転します。
  2. ロール角度と呼ばれるX軸を中心に回転します。ロールを使用して指示します。
  3. ピッチ角と呼ばれるY軸を中心に回転し、ピッチを使用して表現します。

例:

    車の動きを説明するために通常使用する2次元平面は、X軸とY軸で構成される平面であるXY平面を参照します。この平面では、車の回転を説明するために使用される角度は、Z軸を中心とした回転であり、多くの場合上記の方位角。Z軸は上を向いているので、右手の法則によれば、車は左に正になり、右に負になっていることがわかります。

  • 座標系の定義

       空間内の同じ位置で、異なる座標系では座標値が異なります。

 

上の図では、座標系Aと座標系Bの2つの座標系があり、オレンジ色の座標軸はX軸(前方)を表し、青色の座標軸はY軸(左側)を表します。座標系Aの場合、ピンク色の点の座標は**(3、-3)、座標系Bの場合、ピンク色の点の座標は(5、1)**

  • 測定単位:

ROSはメートル法を使用します:

          >線形速度:m / s

         >角速度:rad / s

線形速度= 0.5m / sは、屋内ロボットではかなり速い速度です。角速度= 1.0rad / sは、6秒の回転を意味します。

参照する:

https://www.cnblogs.com/hiram-zhang/p/10392877.html

https://blog.csdn.net/shixiaolu63/article/details/78496457

https://blog.csdn.net/autolabor/article/details/85120806

 

6.3.2座標系の分類

通常、ロボットシステムには複数の3次元参照座標系があり、これらの座標系間の相対関係は時間とともに変化します。この関係と変更を説明する実際のロボットアプリケーションシナリオの例を次に示します。

  1. グローバル世界座標系:通常、レーザースラムによって構築されたラスターマップの座標系マップ。
  2. ロボットシャーシ座標系:通常、ロボットシャーシ座標系base_footprintまたはbase_link。
  3. ロボットの各コンポーネントの座標系:LIDAR、IMU、その他のセンサー独自の座標系、base_laser_link、imu_linkなど。

これらの座標系間の関係には、静的なものと動的なものがあります。ロボットシャーシが移動すると、ロボットシャーシと世界地図-> base_footprintの相対関係は動的になります。

ロボットシャーシにインストールされているLIDARやIMUなどのセンサーとロボットシャーシの相対的な関係base_footprint-> base_laser_link、base_footprint-> imu_linkは静的です。

 

6.3.3ロボットTFのセットアップ

http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF

https://www.ros.org/reps/rep-0105.html

 

31件の元の記事を公開 いいね3 2028訪問

おすすめ

転載: blog.csdn.net/lclfans1983/article/details/105399161