# UR5 解析逆运动学如何替代最小二乘解？

> 原文链接：https://robotics.hellobike.com/pitfalls/2016-04-25-robotics-se-9662
> 频道：pitfalls | 更新日期：2016-04-25 | 标签：auto, stackexchange, robotic-arm, inverse-kinematics, industrial-robot, c++
> 核心摘要：UR5 最小二乘逆运动学只能得到单解，采纳答案给出从期望位姿解析推导各关节角的方法。

# UR5 解析逆运动学如何替代最小二乘解？

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

**状态**：已解决

## 问题

提问者用 `Eigen` 和 `baseJend(state)` 实现最小二乘逆雅可比 `A = jq.transpose()*(jq*jq.transpose()).inverse()`，但想实现解析逆运动学以获得期望附近的一组解；无具体报错。

## 环境

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

## 解决办法

1. 写出期望位姿 `T^{desired}`，并表示为各关节齐次变换连乘 `{}^{0}T_{1}...{}^{5}T_{6}`。
2. 从第一个关节开始，对等式左乘对应逆变换，例如 `{}^{1}T_{0}T^{desired}`，把目标位姿元素与关节变量建立方程。
3. 由推导出的方程组合成关于 `sin(q1)` 或 `cos(q5)` 的二次方程，筛选满足另一方程的解。
4. 用 `q1 = atan2(sin(q1), cos(q1))` 得到关节角，再以同样方式继续求 `q5` 和其余关节。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #9662：Implementing an analytic version of an inverse kinematic](https://robotics.stackexchange.com/questions/9662/implementing-an-analytic-version-of-an-inverse-kinematic)