手写不易,转载请注明出处。
一,ros wiki 链接:http://wiki.ros.org/robot_pose_ekf
wiki 官方介绍翻译: 这个功能包是用来估计机器人的3D姿态的,基于从不同传感器测量得到的部分位姿信息。它使用带有六个维度(三轴位置,三轴角度)的拓展卡尔曼滤波去融合来自编码器(里程计),陀螺仪及视觉里程计的数据。它主要的目的是针对不同的传感器提供一种松耦合的融合算法。
二,怎么使用这个功能包
一个默认的EKF启动文件可以在功能包目录下面找到。 这个launch文件包括了一些配置参数:
1,频率:滤波器的发布频率,说明一下较高的频率会在相同时间间隔给你更多的机器人pose信息,但是这不会增加每个机器人位姿的估算准确度。
2,超时时间配置参数:如果一个传感器不工作了,那么这个滤波器在放弃这个传感器继续工作之前应该等待多久。
3,里程计,IMU,视觉里程计 是否输入的配置。
这些参数可以在启动文件中进行配置。像下面这样:
<launch> <node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf"> <param name="output_frame" value="odom"/> <param name="freq" value="30.0"/> <param name="sensor_timeout" value="1.0"/> <param name="odom_used" value="true"/> <param name="imu_used" value="true"/> <param name="vo_used" value="true"/> <param name="debug" value="false"/> <param name="self_diagnose" value="false"/> </node> </launch>
三,下载和运行
$ rosdep install robot_pose_ekf $ roscd robot_pose_ekf $ rosmake
注意:如果rosdep安装不成功,可以改为sudo apt-get install ros-melodic-robot-pose-ekf
运行:
$ roslaunch robot_pose_ekf.launch
四,节点
1,这个节点使用了拓展卡尔曼滤波器进行机器人位姿的测量
2,订阅的话题
odom:
imu:
vo:
未完待续。。。。。。