逆运动学求解
(1)不存在相应的解,包括:期望位姿离基坐标系太远,机械臂不够长,末端执行器无法达到该位姿;当机械臂的自由度少于6个自由度时,它将不能达到三维空间的所有位姿(使用ikine()函数会出现错误)
(2)存在唯一解
(3)存在多个解集
解法
1.封闭解法
使用ikine6s()求解,它只适用于关节数量为6,且腕部三个旋转关节的轴相较于一个点的情况
2.数值解法
使用ikine()求解,它可以适用于各种关节数目的机械臂,通过设定初始的关节角坐标对机械臂运动学进行隐式控制。对于少于6自由度的机械臂,我们可以加入伪连杆:
如建立一个二连杆:
L(1)=Link([0,0,0,pi/2])%%调节转向
L(2)=Link([0,0,1,0])
L(3)=Link([0,0,1,0])
L(4)=Link([0,0,0,pi/2])
L(5)=Link([0,0,0,0])%%伪连杆1
L(6)=Link([0,0,0,0])%%伪连杆2
two_link=SerialLink(L,'name','twolink')
在设置关节转角和变换矩阵:
qn=[0,-pi/4,-pi/2,0,0,0]
得到变换矩阵T:
T=two_link.fkine(qn)
T =
-0.7071 0.0000 -0.7071 0.0000
-0.0000 -1.0000 -0.0000 -0.0000
-0.7071 0.0000 0.7071 -1.4142
0 0 0 1.0000
未设定初始关节角坐标,使用ikine()进行求解,输入命令;
<