robot-localization
robot_localization是一个ROS的包,基于卡尔曼滤波,对多种传感器进行数据融合,进而完成机器人的定位。近期确实遇到了需要实现更高精度定位的问题,在多方考虑下其中一部分优化方法就是引入了robot-localization库,这个库的引入还是比较简单的,但是实际上的操作方式还是和大家分享一下。
硬件平台
此处硬件平台其实并不局限,这里以OriginBot为例好了
- OriginBot(导航版)
- Ubuntu 20.04
使用方式
安装robot-localization
基本有两种方式了。
- 一种是使用二进制方式下载
sudo apt install ros-foxy-robot-localization
这种方式可以直接把包拿来使用,比较方便而且也是最快上手的方式了
- 第二种是直接拉源码包出来用。
这里需要说明的是,类似这种官方源码包如果在不熟悉的情况下取改动的话出错的概率还是很大的,所以推荐第一种使用方式。
下载完成之后无论如何请执行养成良好的工程习惯
source /opt/ros/foxy/setup.bash
配置robot-localization
说起配置,其实是一件很简单的事情了。说回来robot-localization,本质上拿到的是两组数据,一组为odom(里程计数据)、一组为IMU(陀螺仪数据),然后将两组数据利用卡尔曼滤波的方式去预测当前真实的位置。
如何去配置呢?一般的工科做法当然是尽可能使用配置文件来做。所以就有了ekf.yaml文件,ekf翻译过来就是扩展卡尔曼滤波。【如果按照我的理解,扩展卡尔曼滤波相对于卡尔曼滤波的差别就是可以进一步处理非线性的数据】
ekf.yaml文件的内容如下: