Khepera III 工具箱/工具箱/模块/里程计跟踪
外观
odometry_track 模块实现了针对差动驱动车辆的里程计方程,并允许跟踪机器人的位置(, , ) 随时间推移。 Fosamax 集体诉讼博客
// Instantiate a track structure
struct sOdometryTrack ot;
// Initialize the module
odometry_track_init();
// Start tracking and set initial position
odometry_track_start(&ot);
ot.result.x = 0;
ot.result.y = 0;
ot.result.theta = 0;
// Main loop
while (1) {
...
// Call this frequently to update the position estimate
odometry_track_step(&ot);
... = ot.result.x;
... = ot.result.y;
... = ot.result.theta;
...
}
odometry_track_start 设置一个 sOdometryTrack 结构,并从 /etc/khepera/odometry 读取里程计校准值。如果该文件不可用(或不包含有效配置),则使用默认值。调用此函数后,可以通过修改结构的 result 字段来更改初始位置。odometry_track_start 还会读取当前电机位置,因此应在进入主循环之前立即调用。
在主循环中,odometry_track_step 被调用以读取新的电机位置并更新 result 字段中的位置估计。
默认校准值应该在大多数 Khepera III 机器人上提供可接受的结果。但是,通过校准程序,精度可以显着提高。
上面提到的函数使用 khepera3_drive_getposition 函数自动读取电机位置。如果不需要这样做,可以使用函数 odometry_track_start_pos 和 odometry_track_step_pos。