# 5自由度机器人IK方向误差如何输入

> 原文链接：https://robotics.hellobike.com/pitfalls/2019-11-29-robotics-se-14785
> 频道：pitfalls | 更新日期：2019-11-29 | 标签：auto, stackexchange, inverse-kinematics, orientation
> 核心摘要：5自由度机器人IK中方向误差不能用欧拉角时，改用等效角/角轴表示计算方向误差。

# 5自由度机器人IK方向误差如何输入

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

**状态**：已解决

## 问题

提问者用雅可比逆做5自由度全转动关节机器人IK，位置误差可由前3关节正确定位，但不知道误差向量最后3项应如何表示末端方向误差。

## 环境

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

## 解决办法

1. 不再使用欧拉角表示；原文称欧拉角只适用于具有球腕的机械臂。
2. 对无球腕机器人，使用等效角表示或角轴表示计算方向误差。
3. 令期望方向矩阵为`R_d`，由关节变量计算的当前方向矩阵为`R_e`，先计算`R(θ,r)=R_d R_e^T(q)`。
4. 用`θ=acos((r11+r22+r33-1)/2)`和`r=(1/(2 sinθ))[r32-r23, r13-r31, r21-r12]^T`求角轴。
5. 将方向误差取为`e_O = r sinθ`，得到关于`X,Y,Z`轴的`3×1`方向误差向量。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #14785：Inverse kinematic orientation problem](https://robotics.stackexchange.com/questions/14785/inverse-kinematic-orientation-problem)