在lego-loam旋转关系的时候,绕了半天,最重要的是如下
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
所以launch中的代码
<launch>
<!--- TF -->
<! -- yaw pitch roll, parent rotate to child, Xp = R * Xc + T -->
<node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="1 1 0 1.570795 0 1.570795 /camera /base_link 10" />
</launch>
这个代表的是,
1. 先将父坐标系/map,yaw角旋转pi/2, 即在z轴旋转pi/2,即逆时针旋转pi/2。注意此处时坐标系转换,所以旋转的是坐标轴。
2. 再将/map坐标系,在roll角旋转pi/2,即绕x轴旋转pi/2。
3. 将旋转后的坐标系,在原始的/map坐标系中平移[1 1 0]
如图所示:
特别注意的地方:
1. 同一个点在两个坐标之间的转换关系为
2. 坐标变换的旋转关系相当于是将父坐标系(map)按照R()旋转到子坐标系camera_init,然后整体加上平移
3. 这里时坐标轴旋转,一定要区分一个点按照旋转向量旋转。
4. 这里欧拉角的旋转是按照ZYX顺序旋转的,即yaw->pitch->roll,和slam14讲,以及tf中setRPY能对上。