tf坐标变换知多少

本文详细介绍了ROS中的坐标系及其相互关系,包括world与map的对齐,odom与base_link的运动,以及base_link与lidar的静态关系。重点强调了world到map的完整变换过程,以及GPS在建图中的作用和转换需求。
摘要由CSDN通过智能技术生成

参考链接:参考
以下是我对常用的坐标变换关系的认识。


ROS中的tf变换系统是一个很有意思但是也很麻烦的内容,这里介绍以下业界主流的一些坐标变换。

ros中的坐标系

首先需要知道有哪些常见的坐标系,一般为一下的一些:
/world
/map
/base_footprint
/base_link
/lidar
/camera
/imu
其中camera和lidar可能不止一个,以上的坐标系基本是我们能遇到的所有的坐标系了。

坐标系关系

world与map

我们首先看world系,由于ros中通用的是右手系,所以全局的坐标也最好是右手系的,我们常用的GPS中的经纬度转到UTM系就是一个典型的右手系,并且正北为y,正东为x。
确定了了world系后在建图定位时需要进行一定的转换,将world转到我们的map中去,这里由于map系一般都是slam建出来的地图,这样的话本身就是右手系,所以不考虑z轴时,可以通过旋转和平移的来将world和map对齐。
举个例子如果我们用了gps,他在world中的航向可能与map的航向不同,所以需要一个旋转,其次是平移,将world的一个值当成是map的原点来进行平移。
所以就是下图所示的关系:
在这里插入图片描述
这是我们想要的结果,这样的world和map效果其实要求建图时的初始的map坐标系必须要和world坐标系的x和y方向相同才能达到这个效果。但是如果建图时不是这个对应方向,那就需要再进行旋转了。这是我在实际建图时候遇到的一个重要的不可忽视的问题。
所以我在想world系能不能直接当成map坐标系来建图呢?这样既能省略掉一个tf、而且不用担心odom不准的问题。这其实也就是在建图时融合GPS数据来实现更加精准的建图的一种思路吧。
add 4.12
建图的过程中,如果用GPS的信息,较准的GPS信息能够对Lidar帧与帧之间的关系添加constraint,从而提高建图回环的成功率。
实际在用的GPS中的经纬度信息,会转换成UTM坐标系(xy坐标系)来进行处理,我在想,是有可能直接将其当做map系的,当然,由于数值比较大,所以可以再发布一个局部的map系,这个map系就只有偏移关系而没有旋转关系了。
但是像cartographer这种建图来说,它本身就会有map系,该系通常就是以当前的位置作为起点了,所以不能直接进行偏移然后使用。
**而是应该在建图后,除了有偏移外,还有一个旋转关系,记录地图原点的x y yaw,值,就能实现world和map的坐标变换了。确定了起始点的平移和旋转量,UMT到Map的transformation即可确定。**如下图所示:
在这里插入图片描述
这样的话我知道map和world的坐标变换关系,知道base_link在world的中的运动情况,也就能够知道base_link在map系中的运动情况了。唯一需要注意的就是航向信息,由于world中的x是90°而ros中的map中的x是0°,

理清楚了world和map之后,接下来就是odom系:

odom与map系

odom是里程计,一般的建图算法是自带(如激光)里程计的,在里程计中我们看的主要是odom与map的偏离,也就是base_link在map中运动的误差情况
如下图所示:
在这里插入图片描述
利用这里的偏移的一个重要的目的就是确定运动的位置,有了里程计之后,就能推算出当前的位置情况。

odom与base_link系

基本上是很明显的坐标系关系了,就是车在一个不动(odom原本还是要动的)的坐标系下的位置变换。
只要前述关系正确的话,只需要指导base_link在odom中是怎么运动,以及具体的位置信息就可以知道其tf关系。
在这里插入图片描述

base_link与lidar系

这个一般直接通过标定得到静态的关系即可。
然后在base_link的基础上,我们可以通过urdf来发布一些静态的tf关系:
比如lidar,camera等等,也可以标定多个然后通过robot_state_publish、joint_publish来发布相关的静态tf关系。

所以综上所述:
在这里插入图片描述
实际上,最终需要求的变换关系为map->base_link。不过由于base_link上有lidar,所以也很好拿到。
整个变换中,缺少的一环为map->odom,如果将它补齐,变换关系将构成一个链,整个系统才算完整。

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云千载尽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值