ROS学习笔记之——robot_localization包
之前博客已经介绍过《 ROS学习笔记之——EKF (Extended Kalman Filter) node 扩展卡尔曼滤波》本博文看看robot_localization包中的EKF
目录
遵守ROS标准
在使用robot_localization
中的状态估计节点开始之前,用户必须确保其传感器数据格式正确。
其实对于在ROS中采用的代码,其传递的状态信息的数据,本身就应该跟ROS相匹配。下面来看看
ROS中标准测量单位和坐标约定
https://www.ros.org/reps/rep-0103.html
单元和约定的不一致是开发人员集成问题的常见来源,也可能导致软件错误。由于数据转换,它也会产生不必要的计算。
基本的单位
衍生单位
坐标帧的转换
- 采用右手定则
- 旋转表示法(四元数)
- 协方差的表示
ROS中移动平台坐标系
https://www.ros.org/reps/rep-0105.html
这文档指定与ROS一起使用的移动平台坐标系的命名约定和语义含义
坐标帧主要有以下几种
base_link
base_link 坐标系与移动机器人底座刚性连接。 base_link可以在任何位置或方向附着在底座上。对于每个硬件平台,在 base上都会有一个不同的位置,提供一个明显的参考点
odom
odom是应该世界固定框架( world-fixed frame)。在odom frame中,移动平台的姿态可以随时间漂移,没有任何边界。这一飘逸导致odom frame在长期的全局参考中没有意义。然而,机器人
robot_localization包的基本介绍
在robot_localization包中包含了两个状态估计节点
-
ekf_localization_node
是一个扩展卡尔曼估计器,它使用一个三维测量模型随着时间生成状态,同时利用感知数据校正已经监测过的估计。 -
ukf_localization_node
是一个无迹卡尔曼滤波估计器,它使用一系列sigma点通过非线性变换生成状态,并使用这些估计过的sigma点覆盖状态估计点和协方差,这个估计使用雅克比矩阵并使得估计器更加稳定。然而缺点是比ekf_localization_node耗费更大的计算量。
robot_localization包支持任意数量的传感器数据融合。节点不限制输入传感器的数量,比如机器人具有多个IMU或机器人里程计信息,robot_localization中的状态估计节点可以支持所有的传感器。
robot_localization包支持多种ROS msg格式。所有的状态估计节点可以支持以下多种msg
- nav_msgs/Odometry,
- sensor_msgs/Imu
- geometry_msgs/PoseWithCovarianceStamped
- geometry_msgs/TwistWithCovarianceStamped
robot_localization包
使用15维向量来表示机器人的运动状态:
每3个数据一组,分别表示:
- x-y-z坐标系的坐标(机器人位置)
- 绕x/y/z轴的角度(机器人方向)
- 沿x/y/z轴的速度
- 绕x/y/z轴的角速度
- 沿x/y/z轴的加速度
robot_localization
常常被用在两种典型的场景:
- 融合连续的传感器数据(里程计和IMU)创建局部精确的状态估计。也即适合应用于使用多种位置、方向的传感器融合的场合,可以做出精确的局部位姿估计
- 融合连续的传感器数据及全局位姿估计来提供精确而完整的全局状态估计。如果再加上一些全局state的话(来自于其他的全局传感器或数据)可以实现对全局的状态估计。
robot_localization
的典型用法应该是配合机器人导航模块,实现各种sensor的融合以及精确的路线导航 。
如果某个传感器信息包含有希望忽略的估计数据,robot_localization允许对单个传感器输入数据定制处理。
续估计。每个状态估计节点在接收到机器人一个测试数据时就开始估计机器人状态。当存在间歇接受的传感数据时(一段周期没有接受数据),机器人会通过内部模型继续状态估计。
参考资料
https://github.com/cra-ros-pkg/robot_localization/tree/melodic-devel/src
http://docs.ros.org/melodic/api/robot_localization/html/preparing_sensor_data.html
https://blog.****.net/Travis_X/article/details/85225904
https://www.jianshu.com/p/415b288c8f3d
https://www.ncnynl.com/archives/201708/1910.html