ROS2 robot-localization配置方案

发表时间: 2024-01-22 11:59:22 来源:新闻中心

  定位的问题,在多方考虑下其中一部分优化方法就是引入了robot-localization库,这个库的引入还是最简单的,但是实际上的操作方式还是和大家伙儿一起来分享一下。

  这里需要说明的是,类似这种官方源码包如果在不熟悉的情况下取改动的话出错的概率还是很大的,所以推荐第一种使用方式。

  说起配置,其实是一件很简单的事情了。说回来robot-localization,本质上拿到的是两组数据,一组为odom(里程计数据)、一组为IMU(陀螺仪数据),然后将两组数据利用卡尔曼滤波的方式去预测当前真实的位置。

  如何去配置呢?一般的工科做法当然是尽可能使用配置文件来做。所以就有了ekf.yaml文件,ekf翻译过来就是扩展卡尔曼滤波。【如果按照我的理解,扩展卡尔曼滤波相对于卡尔曼滤波的差别就应该进一步处理非线性的数据】

  可选项很多,但是需要配置的内容其实围绕在odom0和imu0上了,大家可以根据内容做出一些修改。这里大家就会发现odom似乎有点奇怪,我们一般在base程序中会发布一个odom话题,此外还有一个odom坐标系,那么和这里有什么关系呢?其实这里的意思是,大家可以不用在base中去tf广播odom了,直接发布odom的数据即可,那个数据会来到ekf中,有ekf来释放一个新的融合的odom数据。

  这里需要写一个launch文件了,其实比较简单,本身咱们二进制下载robot-localization之后就有一个nch.py了,如果没有做过多更改就可以直接使用了。但是为了匹配修改后的ekf.yaml文件,一般还是会copy一份出来另外处理。

  robot-localization确实是一个比较好用的技术,可以比较好的去优化机器人的定位,因为它融合了多个传感器的输入。对于使用者而言还是需要在ekf.yaml中去配置一下你希望它分别融合odom/imu的哪些数据,比如你的里程计很好,那么完全可以把位置信息都融合上等等。

  当然如果想要真正做到好的定位robot-localziation还是不够的,因为本质上还是依赖了传感器,那么如何更好的去处理定位呢。是不是可以考虑加上视觉里程计/传感器校准等。甚至把ekf出来的odom数据给到类似cartographer算法增加激光雷达的一些处理都能更加进一步优化定位。

  总的来说robot-localization可以当作最后的输出,也可以当作定位的中间一环,看我们怎么去使用了。



相关产品