ROS入門チュートリアル(X) - TF&URDF


TFは関係なく、SLAMまたはロボットアームの動きのテーブル変化の座標系に関与する、座標変換にロボットを指します。
URDFロボットは、統一記述フォーマット仕様が開発ロボットROSの説明です。

TF

トランスフォームTF。ロボットが物体を把持するとき、各関節機構の正確な数学的表現は、正確なデータ関係を伴う、制御されます。次に、座標系変換を操作し、維持するために、TFを使用します。

T RANS F. ORM:変換(+姿勢位置)の座標は、座標系のデータメンテナンスツールです。

異なる様々な意味が含まれている可能で述べたTFのROS:

  • 標準の座標変換

それは、典型的には、と呼ばれる、本質的にツリーデータ構造座標変換のデータ構造およびフォーマットを定義TFツリー

  • トピック

/tf:メッセージは、ツリー保存上記で言及したロボットセーブ変換あるいは全体マップを座標です。

  • ツール

また、可視化などのツールの多くを、含まれているパッケージ、として理解することができます。

  • インターフェース

TFにroscppとrospy内部インターフェイス

TFツリー

ここに画像を挿入説明

PR2ロボットモデルは、上記で示しました。モデルは、多くの部分で構成され、我々はリンクを呼び出します。各リンクは、座標系、すなわち、Aフレームに相当します。どのように様々な間の通信は、システムを調整することを維持するには?私たちは、TFの木を使用しました。TF任意の二つの木枠を接続する必要があります。

ここに画像を挿入説明

示さrobot-sim-demo提示TFツリーを実行しています。

各ノードに対応する通信リンクを介してbroadcast関連トピックの方法を維持します。ここでbroadcast本質がありますpublisherTFツリーが実際に置かれ/tf、この話題になるTFツリーを復元するために、情報の一部を傍受しました。

TFメッセージフォーマット

TransformStamped.msg

ROSは、2つのフレームのデータフォーマット間TF内のデータ構造であります

ここに画像を挿入説明

Vector3 translation、三次元座標表現を変換するQuaternion rotation回転を示します

TF / tfMessage.msg&tf2_msgs / TFMessage.msg

ここに画像を挿入説明

C ++でのTF

TF関連するデータの種類

ここに画像を挿入説明

注最後のT :: StampedTransform、geometry_msgsそれと名前のように/ TransformStamped.msgで述べた1でなく、違いがあります。前者は唯一のC ++ではなく、MSG、Cのちょうどクラス++で使用することができます。言語に関係なく、後者は、すべての言語は、このメッセージを送信することができ、MSGのROSに依存しています。
ケース:
ここに画像を挿入説明

tf::TransformBroadcaster类

これは、実際に出版され、放送局内部のTFの木の上にあります。基本的機能は、パッケージDOを公開することです。特定の使用では、我々は、このクラスのノードを構築し、その後sendTransform関数を呼び出す必要があります。以下は、この機能を異なるオーバーライドされています。

ここに画像を挿入説明

単一の送信を変換、送信アレイ、メッセージまたは同様に送らtransformStampedの変換

TF :: TransformListener类

上記のクラスが送信され、クラスが受信されます。

ここに画像を挿入説明

最初の関数のlookupTransform変換座標系を、次いで第四パラメータに格納されているソースオブジェクトの座標系で翻訳を取得します。第3の時間パラメータを記入する必要があることに注意がros::Time(0)、使用することはできませんros::TIme::now()、そうでない時にエラーが発生します。

TFでのpython

TF関連するデータの種類

ベクター、ポイント、四元行列は、アレイ状のように表すことができます。
タプル、リスト、numpyのアレイ一般

場合:

t = (1.0, 5.0, 0) #平移
q = [1, 0, 0, 0]  #四元数
m = numpy.identity(3) #旋转矩阵
tf.transformationsライブラリ

ここに画像を挿入説明

使用前には必須import tf

tf.TransformListener类

ここに画像を挿入説明

第三の機能のためにlookupTransform、同じ、時間パラメータを埋めるために必要rospy.Time(0)に使用することができない、rospy.Time.now()そうでなければ時間誤差が存在するであろう。

次のようにクラスの他の機能は、あります。
ここに画像を挿入説明

tf.TransformBroadcaster类

ここに画像を挿入説明

一般的なツールTF

# 根据当前的tf树创建一个pdf图(基于当前的5秒记录绘制)
$ rosrun tf view_frames  )
# 查看当前的tf树 (动态查看)
$ rosrun rqt_tf_tree rqt_tf_tree
# 查看两个frame之间的变换关系
$ rosrun tf tf_echo [reference_frame][target_frame]

urdf

統一されたロボットの説明形式統一ロボットの記述形式

ここに画像を挿入説明

urdfでは、我々はロボットのリンクと関節の関節や部品を記述するために使用します。

リンク

リンク部材は、各リンクは、3つの軸はXYZを表しています。

ジョイント

関節運動継手は、2つのリンクの間であり、関節に対応するTFです。Tfの変更は、実際の関節に起こります。

だから、urdfに、我々は、リンクとの共同財産であるこれらの優れたリンクや関節を定義する必要があり、我々はurdfファイルを定義する必要があります。

ここに画像を挿入説明
以下のように書かれて打ち上げやファイルの前にこのファイルは、XMLファイルです。

文書を作成するには、ジョイントとのリンクも独自の属性があります。

ここに画像を挿入説明

ソースを記入してください。
本論文では、「AndroidのOSは、はじめに」MOOCの中国の大学をまとめた
リンク:リンク
ビデオキャプチャプログラムからの写真

公開された43元の記事 ウォン称賛20 ビュー1469

おすすめ

転載: blog.csdn.net/Chen_2018k/article/details/104356654