# ikine() 逆解结果超出关节限位

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-02-16-robotics-se-11393
> 频道：pitfalls | 更新日期：2017-02-16 | 标签：auto, stackexchange, robotic-arm, inverse-kinematics, matlab
> 核心摘要：Peter Corke Robotics Toolbox 的 ikine() 不考虑关节限位，可改用 ikcon() 并检查求解退出标志。

# ikine() 逆解结果超出关节限位

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Problem with inverse kinematics in robotic arm using Matlab](https://robotics.stackexchange.com/questions/11393/problem-with-inverse-kinematics-in-robotic-arm-using-matlab)（Robotics Stack Exchange #11393）

**状态**：已解决

## 问题

4自由度机械臂设置了关节限位，如 `theta2` 为 -45° 到 45°，但 `rob.ikine()` 求得 `theta2=-139°`、`theta3` 也超限，绘图时机械臂还出现相互穿过。

## 环境

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

## 解决办法

1. 不要期望 `ikine()` 遵守 `qlim`，其文档说明该方法不考虑关节运动限位。
2. 可改用 `ikcon()` 求逆运动学，以考虑约束。
3. 求解后检查逆运动学方法的退出标志，确认确实找到了解。
4. 若要保证无碰撞姿态，需要进行碰撞检查，或确保关节限位被正确设置并得到遵守。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #11393：Problem with inverse kinematics in robotic arm using Matlab](https://robotics.stackexchange.com/questions/11393/problem-with-inverse-kinematics-in-robotic-arm-using-matlab)