【机器人学】逆运动学

  • 一、解的存在性与多重性
  • 二、逆运动学的几何解法
  • 三、逆运动学的代数解法


一、解的存在性与多重性

逆运动学是一个非线性的求解问题,相对于正运动学较为复杂,主要是因为可解性探究、多重解以及多重解的选择等问题。例如,形如【机器人学】正运动学详解-6.4 一个简单例子中所用的六自由度机器人,其逆运动学可以描述为:假设我们已经知道其次变换矩阵python机器人逆运动学 机器人逆向运动学_正常运行中的16个元素,求解得到6个关节变量python机器人逆运动学 机器人逆向运动学_旋转矩阵_02~python机器人逆运动学 机器人逆向运动学_正常运行_03。由于矩阵python机器人逆运动学 机器人逆向运动学_正常运行中有4个元素为常量,因此我们可以根据矩阵相等的条件得到12个等式,但是我们要注意到这12个方程之间有着相互约束,根据旋转矩阵得到的9个元素中,实际只有3个相互独立,再结合位置矢量的3个方程,那么我们将足够得到非齐次方程的解,这就是逆运动学

  • 解的存在性

解的存在性取决于该机器人的工作空间,通俗地说,就是机器人基座固定的情况下末端执行器所能够运动到的空间范围。但是我们应该看到,对于逆运动学,不仅要求位置矢量在工作空间内,姿态也达到要求才能算作逆运动学的解。机器人的工作空间主要分成3类,包括可达工作空间、灵活工作空间和次工作空间。可达工作空间是指机器人正常运行时,末端执行器坐标系的原点能在空间活动的最大范围;灵活工作空间是指在总工作空间内,末端执行器可以任意姿态达到的点;次工作空间是指总工作空间中去除灵活工作空间后所余下的部分构成的工作空间。

当一个机器人少于6自由度时,它在三维空间内不能达到全部位姿,特别是在工作空间的边界,一般来说能达到的位姿较少。

  • 多重解问题

如果逆运动学只对位置有要求或者欧拉角只有部分要求时,容易出现有多个解的情况。这时,我们首先需要将所有这些解都得到,另外,我们还需要根据一定的原则来选择其中的解,常用的选择原则有“最短路程”、“最小能量”等,“最短行程”下的解即为在关节的运动范围内选择一组使得各个关节角的变化量最小的解。根据“最短行程”的原则来选择运动学逆解时也存在多种选择方式,例如对各关节的变化量进行不同的加权,使得选择的解尽量移动靠近末端执行器的连杆。“最小能量”即选择一组使得关节角变化所需能量最小的解。

二、逆运动学的几何解法

本文将提供一个经典的几何解法案例:

一个三杆平面机械臂中,末端执行器的位姿为python机器人逆运动学 机器人逆向运动学_机器人_05python机器人逆运动学 机器人逆向运动学_旋转矩阵_06之间的夹角python机器人逆运动学 机器人逆向运动学_机器人_07,位置矢量为python机器人逆运动学 机器人逆向运动学_工作空间_08,杆件1和2的长度分别为python机器人逆运动学 机器人逆向运动学_旋转矩阵_09python机器人逆运动学 机器人逆向运动学_正常运行_10,求解python机器人逆运动学 机器人逆向运动学_旋转矩阵_02~python机器人逆运动学 机器人逆向运动学_机器人_12.

python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_13

根据三角形几何关系和余弦定理,我们可以得到:
python机器人逆运动学 机器人逆向运动学_工作空间_14
因此,
python机器人逆运动学 机器人逆向运动学_旋转矩阵_15
如果python机器人逆运动学 机器人逆向运动学_工作空间_16,无解;

如果python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_17,那么python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_18

如果python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_19,那么python机器人逆运动学 机器人逆向运动学_工作空间_20

根据几何关系易得:

python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_21

python机器人逆运动学 机器人逆向运动学_正常运行_22,那么可得:python机器人逆运动学 机器人逆向运动学_机器人_23

如果python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_24,那么python机器人逆运动学 机器人逆向运动学_工作空间_25

如果python机器人逆运动学 机器人逆向运动学_正常运行_26,那么python机器人逆运动学 机器人逆向运动学_旋转矩阵_27

最后,python机器人逆运动学 机器人逆向运动学_机器人_28

三、逆运动学的代数解法

为了简化模型与学习方便,本方法将以【机器人学】正运动学详解-6.4 一个简单例子的前4个自由度形成的机械臂作为例子,结合之前所学正运动学中的修改DH法,对逆运动学的代数解法进行一个方法示例。

只看前四个节点,那么对其建系建模如下:

python机器人逆运动学 机器人逆向运动学_机器人_29

DH表

#

python机器人逆运动学 机器人逆向运动学_旋转矩阵_30

python机器人逆运动学 机器人逆向运动学_机器人_31

python机器人逆运动学 机器人逆向运动学_工作空间_32

python机器人逆运动学 机器人逆向运动学_机器人_33

0—1

python机器人逆运动学 机器人逆向运动学_正常运行_34

0

0


1—2

python机器人逆运动学 机器人逆向运动学_旋转矩阵_35

0

0

90°

2—3

python机器人逆运动学 机器人逆向运动学_机器人_36

0

python机器人逆运动学 机器人逆向运动学_工作空间_37


3—4

python机器人逆运动学 机器人逆向运动学_工作空间_38

0

python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_39


因此我们可以得到相邻坐标系的齐次变换矩阵:
python机器人逆运动学 机器人逆向运动学_工作空间_40
因此,该机器人的手(末端执行器)所在坐标系python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_41相对于机器人基座python机器人逆运动学 机器人逆向运动学_正常运行_42的齐次变换矩阵python机器人逆运动学 机器人逆向运动学_正常运行为:
python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_44
列出方程组:
python机器人逆运动学 机器人逆向运动学_工作空间_45
因此,我们可以得到:
python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_46

python机器人逆运动学 机器人逆向运动学_正常运行_47

python机器人逆运动学 机器人逆向运动学_工作空间_48python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_49,那么:
python机器人逆运动学 机器人逆向运动学_工作空间_50

python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_51

根据python机器人逆运动学 机器人逆向运动学_旋转矩阵_52python机器人逆运动学 机器人逆向运动学_正常运行_53可得:
python机器人逆运动学 机器人逆向运动学_机器人_54
根据正余弦函数的规律,可知:
python机器人逆运动学 机器人逆向运动学_旋转矩阵_55

假设python机器人逆运动学 机器人逆向运动学_正常运行_56,那么:
python机器人逆运动学 机器人逆向运动学_正常运行_57

python机器人逆运动学 机器人逆向运动学_机器人_58

最终,python机器人逆运动学 机器人逆向运动学_python机器人逆运动学_59可以根据上述表达式得到:
python机器人逆运动学 机器人逆向运动学_工作空间_60