QQ
-
财富积分
-
2109 麦片
在线时间
-
2214 小时
最后登录
-
2011-12-5
精华
-
0
帖子
-
180
积分
-
2109
阅读权限
-
20
注册时间
-
2009-3-2
UID
-
91508
 
财富积分
-
2109 麦片
最佳答案
-
0 个
在线时间
-
2214 小时
帖子
-
180
|
D 机器人绕z轴旋转-90度,那么可以用rotz来求取旋转后的齐次矩阵: >> rotz(-pi/2) ans = 0.0000 1.0000 0 0 -1.0000 0.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。 3 轨迹规划 利用Robotics Toolbox提供的ctraj、jtraj和trinterp函数可以实现笛卡尔规划、关节空间规划和变换插值。 其中ctraj函数的调用格式: TC = CTRAJ(T0, T1, N) TC = CTRAJ(T0, T1, R) 参数TC为从T0到T1的笛卡尔规划轨迹,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之间。 要实现轨迹规划,首先我们要创建一个时间向量,假设在两秒内完成某个动作,采样间隔是56ms,那么可以用如下的命令来实现多项式轨迹规划:t=0:0.056:2; [q,qd,qdd]=jtraj(qz,qr,t); 其中t为时间向量,qz为机器人的初始位姿,qr为机器人的最终位姿,q为经过的路径点,qd为运动的速度,qdd为运动的加速度。其中q、qd、qdd都是六列的矩阵,每列代表每个关节的位置、速度和加速度。如q(:,3)代表关节3的位置,qd(:,3)代表关节3的速度,qdd(:,3)代表关节3的加速度。 4 运动学的正问题 利用Robotics Toolbox中的fkine函数可以实现机器人运动学正问题的求解。 其中fkine函数的调用格式: TR = FKINE(ROBOT, Q) 参数ROBOT为一个机器人对象,TR为由Q定义的每个前向运动学的正解。 以PUMA560为例,定义关节坐标系的零点qz=[0 0 0 0 0 0],那么fkine(p560,qz)将返回最后一个关节的平移的齐次变换矩阵。如果有了关节的轨迹规划之后,我们也可以用fkine来进行运动学的正解。比如: t=0:0.056:2; q=jtraj(qz,qr,t); T=fkine(p560,q); 返回的矩阵T是一个三维的矩阵,前两维是4×4的矩阵代表坐标变化,第三维是时间。 5 运动学的逆问题 利用Robotics Toolbox中的ikine函数可以实现机器人运动学逆问题的求解。 其中ikine函数的调用格式: Q = IKINE(ROBOT, T) Q = IKINE(ROBOT, T, Q) Q = IKINE(ROBOT, T, Q, M) 参数ROBOT为一个机器人对象,Q为初始猜测点(默认为0),T为要反解的变换矩阵。当反解的机器人对象的自由度少于6时,要用M进行忽略某个关节自由度。 有了关节的轨迹规划之后,我们也可以用ikine函数来进行运动学逆问题的求解。比如: t=0:0.056:2; T1=transl(0.6,-0.5,0); T2=transl(0.4,0.5,0.2); T=ctraj(T1,T2,length(t)); q=ikine(p560,T); 我们也可以尝试先进行正解,再进行逆解,看看能否还原。 Q=[0 –pi/4 –pi/4 0 pi/8 0]; T=fkine(p560,q); qi=ikine(p560,T); 6 动画演示 有了机器人的轨迹规划之后,我们就可以利用Robotics Toolbox中的plot函数来实现对规划路径的仿真。 puma560;T=0:0.056:2; q=jtraj(qz,qr,T); plot(p560,q); 当然,我们也可以来调节PUMA560的六个旋转角,来实现动画演示。 drivebot(p560) |
|