Show EOL distros: 

geometry: angles | bullet | eigen | eigen_conversions | kdl | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

geometry: angles | eigen_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

geometry: angles | eigen_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT willowgarage DOT com>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: groovy-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: hydro-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

Migration: Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.
As tf2 is a major change the tf API has been maintained in its current form. Since tf2 has a superset of the tf features with a subset of the dependencies the tf implementation has been removed and replaced with calls to tf2 under the hood. This will mean that all users will be compatible with tf2. It is recommended for new work to use tf2 directly as it has a cleaner interface. However tf will continue to be supported for through at least J Turtle.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: indigo-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

Migration: Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.
As tf2 is a major change the tf API has been maintained in its current form. Since tf2 has a superset of the tf features with a subset of the dependencies the tf implementation has been removed and replaced with calls to tf2 under the hood. This will mean that all users will be compatible with tf2. It is recommended for new work to use tf2 directly as it has a cleaner interface. However tf will continue to be supported for through at least J Turtle.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: indigo-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

Migration: Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.
As tf2 is a major change the tf API has been maintained in its current form. Since tf2 has a superset of the tf features with a subset of the dependencies the tf implementation has been removed and replaced with calls to tf2 under the hood. This will mean that all users will be compatible with tf2. It is recommended for new work to use tf2 directly as it has a cleaner interface. However tf will continue to be supported for through at least J Turtle.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: indigo-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

Migration: Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.
As tf2 is a major change the tf API has been maintained in its current form. Since tf2 has a superset of the tf features with a subset of the dependencies the tf implementation has been removed and replaced with calls to tf2 under the hood. This will mean that all users will be compatible with tf2. It is recommended for new work to use tf2 directly as it has a cleaner interface. However tf will continue to be supported for through at least J Turtle.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: indigo-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

Migration: Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.
As tf2 is a major change the tf API has been maintained in its current form. Since tf2 has a superset of the tf features with a subset of the dependencies the tf implementation has been removed and replaced with calls to tf2 under the hood. This will mean that all users will be compatible with tf2. It is recommended for new work to use tf2 directly as it has a cleaner interface. However tf will continue to be supported for through at least J Turtle.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: melodic-devel)
geometry: angles | eigen_conversions | kdl_conversions | tf | tf_conversions

Package Summary

tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

Migration: Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.
As tf2 is a major change the tf API has been maintained in its current form. Since tf2 has a superset of the tf features with a subset of the dependencies the tf implementation has been removed and replaced with calls to tf2 under the hood. This will mean that all users will be compatible with tf2. It is recommended for new work to use tf2 directly as it has a cleaner interface. However tf will continue to be supported for through at least J Turtle.

  • Maintainer status: maintained
  • Maintainer: Tully Foote <tfoote AT osrfoundation DOT org>
  • Author: Tully Foote, Eitan Marder-Eppstein, Wim Meeussen
  • License: BSD
  • Source: git https://github.com/ros/geometry.git (branch: noetic-devel)

frames2.png

tfは何をしてなぜ使うのか?

急いでいる方はこちら→tfのデモ

ロボットシステムでは、一般的に、たくさんのワールドフレーム、ベースフレーム、グリッパーフレーム、ヘッドフレームなどなどの常に変化する座標系フレームを持ちます。tfは常にこれらのフレームをトラックし、以下のようなことを聞きだせるようにしています。

  • 5秒前のworldフレームから見たheadフレームはどこ?
  • 基準に対してロボットの手にあるオブジェクトの形はどのような姿勢になっている?
  • マップフレームの中でベースフレームはどのような姿勢を今とっている?

tfはディストリビューテッドシステムの中で操作できます。これは、ロボットの座標系フレームに関するすべての情報はシステムの中のすべてのコンピュータのROSのコンポーネントで利用できることを意味します。このtfの情報(transform information)にとっては中心のサーバーとなるものは存在しません。

デザインに関する詳しいことは/Designをご覧ください。

チュートリアル

一歩一歩tfを使って学べるtutorialsのセットを作りました。introduction to tfのチュートリアルからはじめられます。すべてのtfとtfに関する完全なチュートリアルについてはtutorialsをご覧ください。

ユーザがtfを使う際に欠かせない2つのことがあります。transofrmsを監視することと、それを報告することです。

tfを使っている人はみんな、transformsの情報を見ておく必要があります。

  • transformsの情報を聞く - システムに ブロードキャストされているすべての座標系フレームを受け取り、バッファにため、フレーム間の特定のtransformsを求めます。tfリスナーのチュートリアル(Python) (C++)をご確認ください。

ロボットのキャパシティを広げるために、transformsを送り出す必要がでてくるでしょう。

  • transformsをブロードキャストする - 他のシステムに対して、座標系フレームの相対的な姿勢を送り出します。システムはロボットの違う部分についての情報をそれぞれ吐き出す複数のブロードキャスターを持つこともできます。tfのブロードキャスターを書くチュートリアル(Python) (C++)をご覧ください。

基本的なチュートリアルを終えたなら、tfと時間について学びにいけます。tfと時間のチュートリアル(Python) (C++)では、tfと時間についての基本的な原理について学べます。tfと時間についての発展的なチュートリアル(Python) (C++)ではtfとともに時間を操作する原理について学べます。

APIコード概要

よくある質問

コマンドラインツール

tfは主にROSのnodesの中で使われること意図して作られたライブラリですが、デバッグやtfの座標系フレームのサポートをするたくさんのコマンドラインツールがあります。

  • これらの中には以下のようなものがあります。
  • view_frames: 座標系フレーム全体のツリーを可視化する。

  • tf_monitor: フレーム間でのtransformsを監視する。

  • tf_echo: 特定のtransformを画面に表示する。

  • roswtf: tfwtfのプラグインを用いて、tfについての問題をトラックするのをサポートします。

  • static_transform_publisherは静的なtransformsを送るコマンドラインツールです。

座標変換をリマップするのに便利なtf_remapというnodeを使いたいかもしれません。

tf_monitor

tf_monitor

  • コンソールに現在の座標変換の情報を表示します。例えば、

$ rosrun tf tf_monitor
RESULTS: for all Frames

Frames:
Frame: /base_footprint published by /robot_pose_ekf Average Delay: 0.0469324 Max Delay: 0.0501503
Frame: /base_laser_link published by /robot_state_publisher Average Delay: 0.00891066 Max Delay: 0.009591
Frame: /base_link published by /robot_state_publisher Average Delay: 0.00891147 Max Delay: 0.009592
0.00891431 Max Delay: 0.009595

... editing for the sake of brevity ...

Broadcasters:
Node: /realtime_loop 94.7371 Hz, Average Delay: 0.000599916 Max Delay: 0.001337
Node: /robot_pose_ekf 30.8259 Hz, Average Delay: 0.0469324 Max Delay: 0.0501503
Node: /robot_state_publisher 25.8099 Hz, Average Delay: 0.0089224 Max Delay: 0.00960276

tf_monitor <source_frame> <target_target>

  • 特定の変換を監視します。例えば、/base_footprintからの/odomへの変換を監視します:

$ rosrun tf tf_monitor /base_footprint /odom
RESULTS: for /base_footprint to /odom
Chain currently is: /base_footprint -> /odom
Net delay     avg = 0.00371811: max = 0.012472

Frames:
Frame: /base_footprint published by /robot_pose_ekf Average Delay: 0.0465218 Max Delay: 0.051754
Frame: /odom published by /realtime_loop Average Delay: 0.00062444 Max Delay: 0.001553

Broadcasters:
Node: /realtime_loop 95.3222 Hz, Average Delay: 0.00062444 Max Delay: 0.001553
Node: /robot_pose_ekf 30.9654 Hz, Average Delay: 0.0465218 Max Delay: 0.051754
Node: /robot_state_publisher 25.9839 Hz, Average Delay: 0.00903061 Max Delay: 0.00939562

tf_echo

tf_echo <source_frame> <target_frame>

  • source_frametarget_frameの間の特別な変換に関する情報を表示します。例えば、/map/odomの間の変換を表示するには、

$ rosrun tf tf_echo /map /odom
At time 1263248513.809
- Translation: [2.398, 6.783, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.707, 0.707]
in RPY [0.000, -0.000, -1.570]

static_transform_publisher

static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms

  • x/y/z のオフセット と yaw/pitch/rollを用いてtfに対して静的な座標変換をパブリッシュします。ミリセカンドでどれほどの頻度で変換を送るかを決めます。100ms (10hz)ぐらいがよい値です。

static_transform_publisher x y z qx qy qz qw frame_id child_frame_id  period_in_ms

  • x/y/z のオフセット と quaternionを用いてtfに対して静的な座標変換をパブリッシュします。ミリセカンドでどれほどの頻度で変換を送るかを決めます。100ms (10hz)ぐらいがよい値です。

static_transform_publisherは静的な変換をセットするのに手動で使うコマンドラインツールとroslaunchファイルとして使う場合の両方のためにデザインされています。

例えば、

   1 <launch>
   2 <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 link1_parent link1 100" />
   3 </launch>

ビューフレーム:view_frames

view_frames

  • view_framesは現在のtransformツリーのPDFグラフを作るデバッグツールです。

実行するには:

$ rosrun tf view_frames

作業を終えたたら、グラフを見たくなると思います。Ubuntuシステムの典型的な使い方は、以下のようにします。 :

$ rosrun tf view_frames
$ evince frames.pdf

roswtf プラグイン

roswtf tfはroswtfを実行するときはいつでも自動的に実行されるroswtfのプラグインとともに立ち上がります。このプラグインは、現在のtfの設定を検査して、何か問題がないか探しだそうとします。実行するに際するには、単にroswtf と打ってください:

$ roswtf

ノード:Nodes

tf_remap

tf_remap はtf_oldのトピックから情報を受け取り、/tfのトピックに対してtransformsを再パブリッシュします。これは、おもに座標フレームIDが更新されることが必要とされる古いバグ ファイルと共に使われます。このnodeに対しよく行われることは、/tf:=/tf_oldの設定のもとでバグファイルを実行することです。tf_remapのnodeは、フレームIDを古いのから新しいものへマッピングをすることを記述する~mappingsのパラメータとともに実行します。

Subscribed Topics

/tf_old (tf/tfMessage)
  • 古いtransformのtreeです。これは、通常バグファイルのリプレイをリマップすることによって、パブリッシュされるものです。バグファイルのtransformsが受け入れらるようにするには、use_sim_timeをtrueにする必要があります。

Published Topics

/tf (tf/tfMessage)
  • 現在のtransformのtreeです。これがよく見る/tf topicのことです.

Parameters

~mappings ([ {str: str} ], default: [])
  • 古いtfのframe IDと新しいtfのfrmae IDを対応付ける辞書式のリストです。リストの中の各々データは"old" と "new"のキーがあります。

change_notifier

change_notifier/tfを管理しており、定期的に/tf_changesのtopicによって変更された全てのtransformsを再パブリッシュします。

Subscribed Topics

/tf (tf/tfMessage)
  • transformのtreeです。

Published Topics

/tf_changes (tf/tfMessage)
  • コンパクトなtransformのtreeです.

Parameters

~polling_frequency (float, default: 10.0)
  • transformのtreeに起こった変化をチェックする周期の周波数(hz)
~translational_update_distance (float, default: 0.1)
  • transformが変化したと判断される2枚のフレーム間の最小距離
~angular_update_distance (float, default: 0.1)
  • transformが変化したと判断される2枚のフレーム間の回転に関する最小角度

# Keywords Transformation, Transformations, coordinate transform

Wiki: ja/tf (last edited 2014-10-13 13:32:05 by Moirai)