机器人状态估计:robot_localization 功能包简介与参数配置
- 前言
- 功能包简介
- 安装
- 使用ubuntu软件源安装
- 使用源码安装
前言
移动机器人的状态估计需要用到很多传感器,因为对单一的传感器来讲,都存在各自的优缺点,所以需要一种多传感器融合技术,将机器人的状态估计出来。对于移动机器人来讲,自身可能携带:
- 惯导
- 轮速里程计
- 激光里程计
- 视觉里程计
- gps等
如何利用各传感器的优点,将所有数据结合起来,取长补短,就用到了本篇博客介绍的内容 robot_localization ,一个移动机器人状态估计功能包。
功能包简介
robot_localization
是状态估计节点的集合,每个节点都是非线性状态估计器的一种实现,用于在3D空间中移动的机器人。它包括两个状态估计节点ekf_localization_node
和ukf_localization_node
。另外,robot_localization
提供navsat_transform_node
,它有助于集成GPS数据。
功能包特点
robot_localization
中的所有状态估计节点都具有共同的特征,即:
- 融合任意数量的传感器。节点不限制传感器的数量。例如,如果您的机器人具有多个IMU或里程计信息,则
robot_localization
中的状态估计节点可以支持所有传感器。 - 支持多种ROS消息类型。
robot_localization
中的所有状态估计节点都可以接收nav_msgs/Odometry
,sensor_msgs/Imu
,geometry_msgs/PoseWithCovarianceStamped
,或geometry_msgs/TwistWithCovarianceStamped
消息。 - 自定义每个传感器的输入。如果给定的传感器消息包含您不希望包含在状态估计中的数据,则
robot_localization
中的状态估计节点允许您排除该数据。 - 连续估计。
robot_localization
中的每个状态估计节点在收到一次测量结果后便开始估算车辆的状态。如果传感器数据中有间歇(即很长一段时间,没有收到任何数据),则滤波器将继续通过内部运动模型来估算机器人的状态。
所有状态估计节点都跟踪车辆的15维状态:
安装
安装环境:ubuntu 20.04
ros 版本:noetic
使用ubuntu软件源安装
sudo apt-get install ros-noetic-robot-localization
使用源码安装
github网址:https://github.com/cra-ros-pkg/robot_localization
注意现在默认是ros2
要选择分支 noetic-devel
git clone https://github.com/cra-ros-pkg/robot_localization --branch noetic-devel
成功后显示:
正克隆到 ‘robot_localization’… remote: Enumerating objects: 7078, done.
remote: Counting objects: 100% (72/72), done. remote: Compressing
objects: 100% (46/46), done. remote: Total 7078 (delta 33), reused 47
(delta 24), pack-reused 7006 接收对象中: 100% (7078/7078), 15.87 MiB |
370.00 KiB/s, 完成. 处理 delta 中: 100% (4739/4739), 完成.
将功能包移动到ros工作空间下面
进行编译
catkin_make
编译成功后提示:
[ 98%] Linking CXX executable /home/jk-jone/jone_ws/devel/lib/robot_localization/ukf_localization_node
[100%] Linking CXX executable /home/jk-jone/jone_ws/devel/lib/robot_localization/ekf_localization_node
[100%] Built target ukf_localization_node
[100%] Built target ekf_localization_node
[100%] Linking CXX shared library /home/jk-jone/jone_ws/devel/lib/libekf_localization_nodelet.so
[100%] Linking CXX shared library /home/jk-jone/jone_ws/devel/lib/libukf_localization_nodelet.so
[100%] Built target ekf_localization_nodelet
[100%] Built target ukf_localization_nodelet