智能机器人(57):融合调试
robot-pose-ekf的配置参数
freq:
滤波器的输出频率。注意, 高的频率只是把合成odom输出的更频繁,并不会增加姿态评估的精度。
sensor_timeout:
等待某一路传感器消息的最大时间, 超过这个时间如果vo或者imu的传感器还没有新的消息到达,则滤波器不再等待。
ekf滤波器不要去所有sensor一直的同步在线, 缺一些没关系。例如t0时刻滤波器更新输出, t1时刻来一路odom数据, t2时刻来一路imu数据, 则滤波器向内差值产生t0~t1的imu数据, 最终输出姿态评估。
( https://chidambaramsethu.wordpress.com/2013/07/15/a-beginners-guide-to-the-the-ros-robot_pose_ekf-package/)
output_frame:
wiki的示例是有问题的、至少是不清楚的:
源代码更清楚:
(http://docs.ros.org/kinetic/api/robot_pose_ekf/html/odom__estimation__node_8cpp_source.html)
76 // paramters
77 nh_private.param(“output_frame”, output_frame_, std::string(“odom_combined”));
78 nh_private.param(“base_footprint_frame”, base_footprint_frame_, std::string(“base_footprint”));
79 nh_private.param(“sensor_timeout”, timeout_, 1.0);
80 nh_private.param(“odom_used”, odom_used_, true);
81 nh_private.param(“imu_used”, imu_used_, true);
82 nh_private.param(“vo_used”, vo_used_, true);
83 nh_private.param(“gps_used”, gps_used_, false);
84 nh_private.param(“debug”, debug_, false);
85 nh_private.param(“self_diagnose”, self_diagnose_, false);
86 double freq;
87 nh_private.param(“freq”, freq, 30.0);
104 pose_pub_ = nh_private.advertise
434 odom_broadcaster_.sendTransform(StampedTransform(tmp, tmp.stamp_, output_frame_, base_footprint_frame_));
注意: obot_pose_ekf 的 “output_frame”对应 amcl的”odom_frame_id”。
发表评论
Want to join the discussion?Feel free to contribute!