matlab机械臂控制代码
参考视频哔哩哔哩-3-16三自由度机器人Matlab机器人工具箱运动学正解robot.fkine
1.构建模型并初始化初始化
a1 = 0.5; a2 = 0.5; a3 = 0.5;
L(1) = Link([0 0 0 0 0], 'modified');
L(2) = Link([0 0 a1 0 0], 'modified');
L(3) = Link([0 0 a2 0 0], 'modified');
robot = SerialLink([L(1), L(2), L(3)]);
robot.name = '3-DOF-ROBOT';
robot.comment = '每一天都应不同';
robot.display(); % SerialLink 类函数
theta1 = [0 0 0];
robot.plot(theta1); % SerialLink 类函数
运行效果
2.各个角度定义
theta2=[pi/2 0 0]
theta3=[0 0 pi/2]
3.正运动学
其中变换矩阵的定义为:
4.曲线绘制
画出运动曲线
qz=[0 0 0]
qn=[0 pi/4 pi]
t=[0:0.1:10];
[q,qd,qdd]=jtraj(qz,qn,t)
plot(robot,q)
qz=[0 0 0]
qn=[0 pi/4 pi]
t=[0:0.1:10];
[q,qd,qdd]=jtraj(qz,qn,t)
plot(robot,q)
figure;
subplot(1,3,1)
plot(t,q(:,3))
xlabel('time/s');ylabel('角位移');
grid on;
subplot(1,3,2)
plot(t,qd(:,3))
xlabel('time/s');ylabel('角速度');
grid on;
subplot(1,3,3)
plot(t,qdd(:,3))
xlabel('time/s');ylabel('角加速度');
机器人末端三维轨迹
% 初始关节角度
qz = [0 0 0]; % 初始位姿
qn = [0 pi/4 pi]; % 目标位姿
t = [0:0.1:10]; % 时间序列
% 计算轨迹
[q, qd, qdd] = jtraj(qz, qn, t);
% 绘制机械臂的运动
plot(robot, q);
% 绘制角位移、角速度和角加速度曲线
figure;
subplot(1,3,1)
plot(t, q(:,3)) % 第三个关节的角位移
xlabel('time/s'); ylabel('角位移');
grid on;
subplot(1,3,2)
plot(t, qd(:,3)) % 第三个关节的角速度
xlabel('time/s'); ylabel('角速度');
grid on;
subplot(1,3,3)
plot(t, qdd(:,3)) % 第三个关节的角加速度
xlabel('time/s'); ylabel('角加速度');
grid on;
% 计算末端执行器的位姿
T = fkine(robot, q);
% 提取轨迹点的三维坐标
x = zeros(1, length(t));
y = zeros(1, length(t));
z = zeros(1, length(t));
for i = 1:length(t)
x(i) = T(i).t(1); % 提取 X 坐标
y(i) = T(i).t(2); % 提取 Y 坐标
z(i) = T(i).t(3); % 提取 Z 坐标
end
% 绘制三维轨迹
figure;
plot3(x, y, z, 'LineWidth', 2);
grid on;
xlabel('X (m)');
ylabel('Y (m)');
zlabel('Z (m)');
title('机械臂末端三维轨迹');