目录
一、三维空间位姿表示与坐标变换方法
三维空间的位置与姿态表示
位置描述
三维空间中的一点位置可由数组表示,MATLAB中同时提供了函数画出点的位置。
姿态描述
旋转矩阵
MATLAB机器人工具箱中提供了函数rotx(), roty(), rotz()用来计算绕三轴旋转的旋转矩阵(3x3)
坐标系绘制
- 函数trplot():接收3x3旋转矩阵R或4x4齐次变换矩阵T,并将子坐标系的位置与姿态在原始坐标系中画出来。
- 函数tranimate():
tranimate(x1, x2, options):展示从姿态1到姿态2的动态变换过程,这里的姿态1和姿态2可以是3x3旋转矩阵,4x4齐次变换矩阵或一个四元数
tranimate(x, options):展示从上一个姿态到姿态x的动态变换效果,x的可选类型同上一函数。
tranimate(xseq, options):展示移动一段轨迹的动态效果,xseq可以是一组齐次变换矩阵或一组旋转矩阵或一组四元数。
坐标变换
平移坐标变换
MATLAB机器人工具箱中提供了函数transl(x, y, z)用来计算平移变换矩阵,返回的结果是4x4的齐次变换矩阵,x,y,z分别是延三个轴的平移距离
同时函数transl(T)还可以提取坐标变换中的平移分量。
旋转变换
类似的,MATLAB机器人工具箱提供了函数trotx(), troty(), trotz()来计算绕三轴旋转的齐次变换矩阵。
函数t2r(),可提取齐次变换矩阵中的正交旋转矩阵分量。
函数r2t()可将旋转矩阵转换为齐次变换矩阵。
二、机器人运动学
D-H参数法
创建一个连杆对象
MATLAB机器人工具箱提供了函数Link(theta, d, l, alpha, type)来创建一个连杆对象。
其中参数依次为:
杆件回转角
θ
\theta
θ, 杆件偏移量
d
d
d, 连杆长度
l
l
l,连杆扭转角
α
\alpha
α,关节类型
可用以下方法获取连杆的各项参数:
- 获取连杆的关节类型:L.RP
- 获取连杆的回转角:L.theta
- 获取连杆的偏距:L.d
- 获取连杆的长度:L.a
- 获取连杆的扭转角:L.alpha
创建一个具有n自由度的机械臂
函数SerialLink()可将多个连杆对象构造成一个机械臂,并为机械臂对象命名。
机器人正运动学
函数L.A()可以求解连杆的变换矩阵
该函数接收的参数为该类型连杆的运动变量值,对于转动关节,参数即为连杆的回转角。刚刚输入的参数为0,相当于是初始状态。
对于一组连杆的组合机械臂,我们可以通过一组关节变量,即可表示出任意一个坐标系相对于基座坐标系的位姿。即
N
0
T
=
1
0
T
2
1
T
…
i
+
1
i
T
…
N
N
−
1
T
^0_NT = ^0_1 T ^1_2T \dots ^i_{i+1}T \dots ^{N-1}_NT
N0T=10T21T…i+1iT…NN−1T
MATLAB机器人工具箱中提供了函数fkine()用于计算正运动学问题:
函数three_link.plot()可将机械臂图形化的显示出来。
函数three_link.teach()还可允许用户自定义关节角度,进行可视化展示:
机器人逆运动学
封闭解法
函数ikine6s()提供了封闭解法,只适用于关节数为6,且腕部三个旋转关节的轴相交于一点的情况。
虽然关节角不同,但末端执行器的位姿相同。
数值解法
函数ikine()提供了数值解法,使用方法类似。
本文参考自《机器人仿真与编程技术》
本文的有关机器人学基础知识可在往期文章机器人学的数理基础知识或常见的机器人学导论教材中找到参考