# 如何用真值状态模拟轮式里程计

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-12-13-robotics-se-14790
> 频道：pitfalls | 更新日期：2017-12-13 | 标签：auto, stackexchange, mobile-robot, odometry, noise
> 核心摘要：不能直接给真值位姿加高斯噪声，应由车体中心速度换算到各轮速度并积分编码器位置。

# 如何用真值状态模拟轮式里程计

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Wheel odometry simulation using ground truth](https://robotics.stackexchange.com/questions/14790/wheel-odometry-simulation-using-ground-truth)（Robotics Stack Exchange #14790）

**状态**：已解决

## 问题

提问者有机器人真值状态 `X_gt=(x_gt,y_gt,theta_gt)`，想模拟轮式里程计，询问是否可以只对真值状态加随机高斯噪声以及方差如何设置。

## 环境

Linux / ROS 机器人软件与控制通用开发环境

## 解决办法

1. 不要直接从真值位姿推绝对轮编码器计数，也不要只把旋转和平移分开处理，因为轮式机器人通常是非完整约束、路径相关。
2. 将车辆中心处的速度转换为每个车轮的线速度。
3. 将每个车轮线速度除以车轮周长，得到车轮角速度。
4. 用车轮角速度乘以仿真时间步长，并累加到已有的轮位置变量中。
5. 若追求更高保真度，按模拟编码器分辨率对结果分箱/量化，例如 `8 bit` 编码器每圈为 `2^8=256` 段，每段约 `2*pi/256=24.5 mradians`，而不是简单整体加噪声。

原问题作者：Daphnee；采纳答案作者：Chuck。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #14790：Wheel odometry simulation using ground truth](https://robotics.stackexchange.com/questions/14790/wheel-odometry-simulation-using-ground-truth)