# modified DH建模零位与真实机器人不一致

> 原文链接：https://robotics.hellobike.com/pitfalls/2019-06-03-robotics-se-18882
> 频道：pitfalls | 更新日期：2019-06-03 | 标签：auto, stackexchange, robotic-arm, inverse-kinematics, dh-parameters
> 核心摘要：MATLAB中DH零位与真实零位相差固定初始角，可在正逆解前后加减该偏置。

# modified DH建模零位与真实机器人不一致

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Home position of robot created using modified DH Parameters doesn't match the real robot](https://robotics.stackexchange.com/questions/18882/home-position-of-robot-created-using-modified-dh-parameters-doesnt-match-the-re)（Robotics Stack Exchange #18882）

**状态**：已解决

## 问题

用 MATLAB `RigidBodyTree()` 和 modified DH 参数创建 6-DOF 机器人后，真实机器人零位为 `[0 0 0 0 0 0]`，但DH模型需 `[0 -pi/2 0 0 0 pi]` 才到同一home位置，导致逆运动学结果不一致。

## 环境

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

## 解决办法

1. 记录真实零位与DH模型零位之间的固定初始角偏置，如 `[0 -pi/2 0 0 0 pi]`。
2. 编写适配层，在正运动学或逆运动学输入输出中按方向加或减该初始角偏置。
3. 例如逆解可先调用 `InverseKinematics(desiredPose)` 得到原始角，再执行 `rawOutputAngles + initialThetas`，使输出匹配真实机器人关节零位约定。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #18882：Home position of robot created using modified DH Parameters doesn't match the real robot](https://robotics.stackexchange.com/questions/18882/home-position-of-robot-created-using-modified-dh-parameters-doesnt-match-the-re)