Mechanism of ROS static_transform_publisher in tf package
文章目录
1. ROS documentation
In Section 6.3 of ROS tf documentation, it says that,
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
- Publish a static coordinate transform to tf using an x/y/z offset in meters and yaw/pitch/roll in radians. (yaw is rotation about Z, pitch is rotation about Y, and roll is rotation about X). The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value.
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
- Publish a static coordinate transform to tf using an x/y/z offset in meters and quaternion. The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value.
static_transform_publisher
is designed both as a command-line tool for manual use, as well as for use within roslaunch files for setting static transforms. For example:
1 <launch>
2 <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1 100" />
3 </launch>
However, the question is that how does it transform a point. The document hardly mentions this point. This blog
2. Assumptions and Experiments
Arguments in ROS documents is args="1 0 0 0 0 0 1 link1_parent link1 100"
which is too simple to find its mechanism.
2.1 Assumption 1
A most common formulation for the Rotation-translation (Rt for short) transformation can be formulated as follows,
p 2 = R p 1 + t , p_2 = \mathbf{R}p_1+t, p2=Rp1+t,
where, the 31 point p 1 p_1 p1 is project to the 31 point p 2 p_2 p2.