TF - Transform
官网wiki对 tf 包的文档资料: http://wiki.ros.org/tf
了解了基本的tf的作用,来看个Demo:
http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf
这个demo运行了一个双龟跟随的游戏,使用 teleop_key node进行第一个龟的导引,第二个龟跟随。
$ roslaunch turtle_tf turtle_tf_demo.launch
坐标变换的公式:
create three coordinate frames:
a world frame,
a turtle1 frame,
a turtle2 frame.
tf broadcaster ____turtle coordinate frames____>>>tf listener
>> tf Tools
$ rosrun tf view_frames
To view the tf tree:
$ evince frames.pdf
Using rqt_tf_tree
$ rosrun rqt_tf_tree rqt_tf_tree or: $ rqt &
Using tf_echo
Usage:
rosrun tf tf_echo [reference_frame] [target_frame] $ rosrun tf tf_echo turtle1 turtle2 #turtle2 相对于 turtle1 的位置(站在turtle1上看turtle2)
rviz and tf
$ rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz
======= 2016年4月14日14:45:02 =======
Following: http://wiki.ros.org/tf/Tutorials
Let's learn tf from Zero!
1. Two Path: C++ and Python, each needs a try if you want both of them.
2. The general concept itself is explained directly on tf package
Sonictl's Note:
The basic concept of tf:
A robotic system typically has many 3D coordinate frames that change over time, such as a world frame, base frame, gripper frame, head frame, etc. tf keeps track of all these frames over time, and allows you to ask questions like:
3. tf Overview: http://wiki.ros.org/tf/Overview
Sonictl's Note:
1) Data Types
We think you had know how to create an ROS workspace and compile a ROS package.
Introduction to tf
Sonictl's Note:
C++ |
Python |
|
|
Now that you have completed these tutorials please take the time to complete this short questionnaire.
Sonictl's Note:
This tutorial gives a systematic approach for debugging tf related problems.
This tutorial describes how to use tf::MessageFIlter to process Stamped datatypes.
This tutorial provides a guide to set up your robot to start using tf.
This tutorial explains how you can publish the state of your robot to tf, using the robot state publisher.
This tutorial gives a full example of a robot model with URDF that uses robot_state_publisher. First, we create the URDF model with all the necessary parts. Then we write a node which publishes the JointState and transforms. Finally, we run all the parts together.