ROS-static_transform_publisher坐标转换

在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. 同一个点在两个坐标之间的转换关系为

X_{map}=R_{camera\_init}^{map}*X_{camera\_init}}+T_{camera\_init}^{map}

2. 坐标变换的旋转关系相当于是将父坐标系(map)按照R(R_{map}^{camera\_init})旋转到子坐标系camera_init,然后整体加上平移

3. 这里时坐标轴旋转,一定要区分一个点按照旋转向量旋转。

4. 这里欧拉角的旋转是按照ZYX顺序旋转的,即yaw->pitch->roll,和slam14讲,以及tf中setRPY能对上。

发布了198 篇原创文章 · 获赞 213 · 访问量 53万+

猜你喜欢

转载自blog.csdn.net/heroacool/article/details/103091048
今日推荐