# 差分驱动里程计计算 x/y 结果异常

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-12-18-robotics-se-14806
> 频道：pitfalls | 更新日期：2017-12-18 | 标签：auto, stackexchange, wheeled-robot, c++, precise-positioning, dead-reckoning
> 核心摘要：使用绝对编码器计数按当前航向重算位置会出错，应按采样增量累加位姿。

# 差分驱动里程计计算 x/y 结果异常

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Robot positioning problem](https://robotics.stackexchange.com/questions/14806/robot-positioning-problem)（Robotics Stack Exchange #14806）

**状态**：已解决

## 问题

机器人用编码器死算位置，左右轮距离和航向计算正常，但继续计算任意时刻的 `X`、`Y` 时得到异常结果。

## 环境

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

## 解决办法

1. 不要只用绝对编码器总计数和当前 `heading` 直接计算全局 `X`、`Y`。
2. 每个采样周期读取左右轮的增量距离，而不是只看累计距离。
3. 将每次采样得到的差分位姿增量累加到当前位置和航向，即累加 `Δx`、`Δy`、`Δheading`。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #14806：Robot positioning problem](https://robotics.stackexchange.com/questions/14806/robot-positioning-problem)