里程计在转弯的时候, 能容易发生飘移现象,而且精度也不高, 容易产生累积误差
因此, 笔者想到了能不能通过imu来提高机器人的定位效果, 本文采用扩展卡尔曼滤波, ros上的功能包为robot_pose_ekf。
功能包官网链接
里程计数据 odom (nav_msgs/Odometry)
惯导传感器数据 imu_data (sensor_msgs/Imu)
甚至也支持 视觉里程计数据 vo (nav_msgs/Odometry)
<launch>
<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
<param name="output_frame" value="odom"/>
<param name="base_footprint_frame" value="base_link"/>
<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="false"/>
<param name="debug" value="false"/>
<param name="self_diagnose" value="false"/>
node>
launch>
橙色曲线为融合之后的机器人位姿, 绿色为里程计发布的机器人位姿, 可见, 通过传感器融合之后, 机器人在转向上的效果显著提高, 并且更加符合实际。
