本节将介绍使用笛卡尔空间进行轨迹规划,上一节使用关节空间对五自由度机械臂进行了轨迹规划。
笛卡尔空间轨迹规划用函数 c t r a j ctraj ctraj表示,函数 c t r a j ctraj ctraj的用法和 j t r a j jtraj jtraj很相似,函数 c t r a j ctraj ctraj的调用格式为“ T 10 = t r a n s l ( 4 , − 0.5 , 0 ) ∗ t r o t y ( p i / 6 ) T10=transl(4,-0.5,0)*troty(pi/6) T10=transl(4,−0.5,0)∗troty(pi/6); T 11 = t r a n s l ( 4 , − 0.5 , − 2 ) ∗ t r o t y ( p i / 6 ) ; T11=transl(4,-0.5,-2)*troty(pi/6); T11=transl(4,−0.5,−2)∗troty(pi/6); T s = c t r a j ( T 10 , T 11 , l e n g t h ( t ) ) Ts=ctraj(T10,T11,length(t)) Ts=ctraj(T10,T11,length(t))”, t r a n s l transl transl代表矩阵中的平移变量, t r o t y troty troty代表矩阵中的旋转变量, T 10 T10 T10和 T 11 T11 T11分别代表初始和末端的位姿。
首先根据运动学的正解算,计算出机器人末段工具的位置和位姿,然后根据初始位姿和末端位姿来对机器人的末端轨迹进行规划。下面是机器人末端的坐标变化:
T10 = transl(4, -0.5, 0) * troty(pi/6);
T11 = transl(4, -0.5, -2) * troty(pi/6);
笛卡尔空间轨迹规划程序:
% 笛卡尔空间轨迹规划
clc
clear
L(1) = Link([0 0 0 -pi/2 0]);
L(2) = Link([0 0 1.2 0 0]);
L(3) = Link([0 0 1 0 0]);
L(4) = Link([0 0 0 pi/2 0]);
L(5) = Link([0 0 0 0 0]);
h = SerialLink(L, 'name', 'fivelink');
M = [1 1 1 1 1 0];
qz = [0 0 0 0 0];
t = 0:0.01:2;
T = fkine(h,qz);
%T(1,4:) %T(2,4:) %T(3,4:)
T10 = transl(4, -0.5, 0) * troty(pi/6);
T11 = transl(4, -0.5, -2) * troty(pi/6);
Ts = ctraj(T10, T11, length(t));
figure(1);
plot(t, transl(Ts))
figure(2);
plot(t, tr2rpy(Ts))
u = Ts(1,4,:);v = Ts(2,4,:);w = Ts(3,4,:);
x = squeeze(u);y = squeeze(v);z = squeeze(w);
figure(3);
subplot(3,1,1);
plot(t,x)
xlabel('Time')
ylabel('x')
subplot(3,1,2);
plot(t,y)
xlabel('Time')
ylabel('y')
subplot(3,1,3);
plot(t,z)
xlabel('Time')
ylabel('z')
仿真结果:
首先是末端执行器从初始位姿到末端位姿坐标系的平移变化,其中
a
a
a线代表的是坐标系中
x
x
x轴的变化,
b
b
b线代表的是坐标系中
y
y
y轴的变化,
c
c
c线代表的是坐标系中的
z
z
z轴的变化。
其次是末端执行器从初始位姿到末端位姿坐标系旋转的变化,
a
a
a线和
b
b
b线分别代表
y
y
y轴和
z
z
z轴的旋转变化。
最后是机器人末端执行器从初始位姿到末端位姿的空间轨迹的规划图形投影到
x
O
y
xOy
xOy坐标轴内的变化,图中显示了末端执行器在
x
、
y
、
z
x、y、z
x、y、z坐标内时间的变化曲线。