在理解关节机器人运动学原理的基础上用MATLAB开始做机器人的运动学仿真1.关节参数
要在MATLAB建立机器人对象,首先要了解D-H参数,利用工具箱的LINK和ROBOT函数建立对象。
LINK函数
L = LINK([alpha A theta D])
L = LINK([alpha A theta D sigma])
L = LINK([alpha A theta D sigma offset])
L = LINK([alpha A theta D],CONVENTION)
L = LINK([alpha A theta D sigma],CONVENTION)
L = LINK([alpha A theta D sigma offset],CONVENTION)
CONVENTION: 选取standard和modified,其中standard代表标准D-H参数,modified代表改进D-H参数
alpha: 扭转角
A: 连杆长度
theta: 关节角
D: 横距
sigma: 关节类型(选取0或者非0值)
LINK的数据结构
L.alpha %返回扭转角
L.A %返回连杆长度
L.theta %返回关节角
L.D %返回横距
L.sigma %返回关节类型
L.RP %返回R(旋转)/P(移动)类型
L.mdh %若是标准D-H参数则返回0,改进D-H参数返回1
L.offset %返回关节量偏移
L.qlim %返回关节变量的最大最小值
L.islimit(q) %如果关节变量超过限制返回-1/0/1
L.I %返回3X3惯性矩阵
L.m %返回关节质量
L.r %返回3X1关节齿轮向量
L.G %返回齿轮传动比
L.Jm %返回电机惯性
L.B %返回粘性摩擦
L.Tc %返回库伦摩擦
L.dh %返回DH行向量
L.dyn %返回DYN行向量
robot函数:
ROBOT %创建一个空的机器人对象
ROBOT(robot) %创建robot副本
ROBOT(robot,LINK) %用LINK来创建新机器人对象来代替robot
ROBOT(LINK,...) %用LINK创建机器人对象
ROBOT(DH,...) %用D-H矩阵来创建机器人对象
ROBOT(DYN,...) %用DYN矩阵创建机器人对象
2.坐标变换
利用工具箱中的transl,rotx,roty,rotz可以实现用齐次变换表示平移和旋转变换。
transl表示对坐标的平移变换
rotx,roty,rotz表示对坐标的旋转变换
3.轨迹规划
利用Robotics提供的ctraj,jtraj和trinterp函数实现笛卡尔规划、关节空间规划和变换插值
ctraj函数调用
TC = CTRAJ(T0,T1,N)
TC = CTRAJ(T0,T1,R)
example:
T1 = transl(0.6,-0.5,0.0);
T2 = transl(0.4,0.5,0.2);
t = [0:0.056:0.2];
T = ctraj(T1,T2,length(t));
得到
T(:,:,1) =
1.0000 0 0 0.6000
0 1.0000 0 -0.5000
0 0 1.0000 0
0 0 0 1.0000
T(:,:,2) =
1.0000 0 0 0.5500
0 1.0000 0 -0.2500
0 0 1.0000 0.0500
0 0 0 1.0000
T(:,:,3) =
1.0000 0 0 0.4500
0 1.0000 0 0.2500
0 0 1.0000 0.1500
0 0 0 1.0000
T(:,:,4) =
1.0000 0 0 0.4000
0 1.0000 0 0.5000
0 0 1.0000 0.2000
0 0 0 1.0000
T是T1到T2的笛卡尔轨迹规划,N是点的数量,R是给定路径向量R的每个值必须在0到1之间
jtraj函数调用
[Q QD QDD] = JTRAJ(Q0,Q1,N)
[Q QD QDD] = JTRAJ(Q0,Q1,N,QD0,QD1)
[Q QD QDD] = JTRAJ(Q0,Q1,T)
[Q QD QDD] = JTRAJ(Q0,Q1,T,QD0,QD1)
%参数Q为状态Q0到Q1的关节空间规划轨迹,N为规划的点数,T为给定时间向量的长度,速度非零边界可以用QD0和QD1来指定,QD和QDD为返回的规划轨迹的速度和加速度
trinterp函数调用
TR = TRINTERP(T0,T1,R) %参数TR是在T0和T1直线的坐标变化插值,R需要在[0,1]之间