一、参考资料
- 官方:
- http://wiki.ros.org/robot_localization
- http://docs.ros.org/en/noetic/api/robot_localization/html/index.html
- 2015 ROSCon 演讲官方网址(youyube上也有这个视频)
- 实践教程
- https://kapernikov.com/the-ros-robot_localization-package/
- https://github.com/methylDragon/ros-sensor-fusion-tutorial?tab=readme-ov-file
二、安装
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/cra-ros-pkg/robot_localization --branch kinetic-devel
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
source ./devel/setup.bash
出现CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake
报错,执行sudo apt-get install ros-kinetic-geographic-msgs
。
三、实践
代码:https://github.com/Kapernikov/ros_robot_localization_tutorial
source /opt/ros/kinetic/setup.bash
cd /ros_robot_localization_tutorial/ros-ws
catkin_make
source ./devel/setup.bash
根据第一个教程,运行即可。如果报c++11的错误,CMakeLists中添加SET(CMAKE_CXX_FLAGS "-std=c++0x")
。
编译通过以后,启动节点,出现TurtleSim界面,可通过键盘操作,结果已经可视化出来了。
roslaunch robot_localization_demo robot_localization_demo.launch
灰色粗线是TurtleSim节点画的轨迹。蓝色细线是虚拟位置传感器,测量乌龟的绝对位置和方向。红色细线是虚拟速度传感器,测量乌龟的线速度和角速度。绿色粗线是robot_location融合的位姿估计结果。
四、理解
robots_localization 包是用于在 3D(或 2D)空间中移动的机器人的非线性状态估计器的集合。每个状态估计器都可以融合任意数量的传感器(IMU、里程计、GPS ……)来跟踪 15 维( x x x、 y y y、 z z z、 r o l l roll roll、 p i t c h pitch pitch、 y a w yaw yaw、 x ˙ \dot{x} x˙、 y ˙ \dot{y} y˙、 z ˙ \dot{z} z˙、 r o l l ˙ \dot{roll} roll˙、 p i t c h ˙ \dot{pitch} pitch˙、 y a w ˙ \dot{yaw} yaw˙、 x ¨ \ddot{x} x¨、 y ¨ \ddot{y} y¨、 z ¨ \ddot{z} z¨) 机器人的状态。
。。。待写