1.D-H参数
机器人的·每个连杆都可以用4个运动学参数来描述,其中两个参数用于描述连杆本身,另外两个用于描述连杆之间的连接关系,通常,对于转动关节,为关节变量,其它三个连杆参数是固定不变的;对于移动变量,
为关节变量,其他三个连杆参数是固定不变的。对于转动关节,
的零位可以任意选择,并设定
=0.0,同理,对移动关节,
=0.0,
为变量,这样规定可以使得计算更为简单。
个人认为这就是上节提到的为什么移动关节中无效,转动关节中
无效,(或者不设值)。
标准的 D-H 模型是将连杆的坐标系固定在该连杆的输出端(下一关节),也即坐标系i-1与关节i对齐。robotics中默认的就是标准模型。
2.建立机器人模型:
%%
%**********机器人运动学求解**********%
clear;
clc;
%建立机器人模型
% theta d a alpha offset
L1=Link([0 0.4 0.025 pi/2 0 ]); %定义连杆的D-H参数
L2=Link([pi/2 0 0.56 0 0 ]);
L3=Link([0 0 0.035 pi/2 0 ]);
L4=Link([0 0.515 0 pi/2 0 ]);
L5=Link([pi 0 0 pi/2 0 ]);
L6=Link([0 0.08 0 0 0 ]);
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
robot.plot([0,pi/2,0,0,pi,0]);%输出机器人模型,后面的六个角为输出时的theta姿态
theta=[0,0,0,0,0,0];%指定的关节角
p=robot.fkine(theta)%fkine正解函数,根据我们给定的关节角theta,求解出末端位姿p
q=robot.ikine(p)%ikine逆解函数,根据我们给定的末端位姿p,求解出关节角q
3.运动学求解和轨迹规划
%%
%**********机器人轨迹规划**********%
clear;
clc;
close all
%建立机器人模型
% theta d a alpha offset
L1=Link([0 0.4 0.025 pi/2 0 ]); %定义连杆的D-H参数
L2=Link([pi/2 0 0.56 0 0 ]);
L3=Link([0 0 0.035 pi/2 0 ]);
L4=Link([0 0.515 0 pi/2 0 ]);
L5=Link([pi 0 0 pi/2 0 ]);
L6=Link([0 0.08 0 0 0 ]);
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
T1=transl(0.5,0,0);%根据给定起始点,得到起始点位姿
T2=transl(0,0.5,1);%根据给定终止点,得到终止点位姿
q1=robot.ikine(T1);%根据起始点位姿,得到起始点关节角
q2=robot.ikine(T2);%根据终止点位姿,得到终止点关节角
[q ,qd, qdd]=jtraj(q1,q2,50); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
grid on
T=double(robot.fkine(q));%根据插值,得到末端执行器位姿
plot3(squeeze(T(1,4,:)),squeeze(T(2,4,:)),squeeze(T(3,4,:)));%输出末端轨迹
hold on
robot.plot(q);%动画演示