使用 matlab 的 Robotics ToolBox 完成5自由雄克机械臂的建模与运动学仿真,并计算8个点的运动轨迹,绘制运动动画

机器人包含5个关节,建立以下的DH参数表

matlab代码

python 复制代码
%机器人学导论仿真大作业(RTB)
clear 
clc
h = figure;
axis tight manual
filename = 'SchunkRobot_Simulation.gif';

%Schunk机械臂参数的输入
L1=0.35;
L2=0.305;
L3=0.3;

%DH参数建立
Joint1 = Link([ 0, 0, 0, 0, 0],'revolute', 'modified');
Joint2 = Link([ 0, L1, 0, -pi/2, 0], 'revolute','modified');
Joint3 = Link([ 0, 0, 0, pi/2, 0], 'revolute','modified');
Joint4 = Link([ 0, L2, 0, -pi/2, 0], 'revolute','modified');
Joint5 = Link([ 0, 0, 0, pi/2, 0],'revolute', 'modified');
Joint6 = Link([ 0, L3, 0, -pi/2, 0],'revolute', 'modified');
Joint7 = Link([ 0, 0, 0, pi/2, 0],'modified');

%机器人模型建立
SchunkRobot = SerialLink([Joint1 Joint2 Joint3 Joint4 Joint5 Joint6 Joint7], 'name', 'Schunk机械臂');

%8个圆上的目标点
R = 0.2;%半径
L = 0.4;%与机械臂的距离
target = [ R,L,0;-R,L,0;0,L,R;0,L,-R;R*cos(pi/4), L, R*sin(pi/4);R*cos(pi/4), L, -R*sin(pi/4);-R*cos(pi/4), L, R*sin(pi/4);-R*cos(pi/4), L, -R*sin(pi/4)];

%绘制目标点
plot3(target(:,1), target(:,2), target(:,3), 'Marker', 'X', 'MarkerFaceColor', 'c', 'MarkerSize', 9, 'LineStyle', 'none');

%控制机械臂抵达目标点
Time=0:0.02:0.8;
angle = zeros(9,7);
for i=1:8
    %逆运动学求解关节角
    angle(i+1,:) = SchunkRobot.ikine(reshape(transl(target(i,:)),4,4),'q0',angle(i,:));
    %轨迹规划并绘图
    trajectory=jtraj(angle(i,:),angle(i+1,:),Time);
    title('SchunkRobot Simulation')
    plot(SchunkRobot,trajectory);
    %绘制gif动图
    drawnow 
    frame = getframe(h); 
    im = frame2im(frame); 
    [imind,cm] = rgb2ind(im,256); 
    if i == 1 
         imwrite(imind,cm,filename,'gif', 'Loopcount',inf); 
    else 
         imwrite(imind,cm,filename,'gif','WriteMode','append'); 
    end
end

生成图

相关推荐
君顾16 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
北域码匠6 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
南棱笑笑生6 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
指掀涛澜天下惊6 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
平头哥技术团队7 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++7 小时前
【洛谷】kmp算法
开发语言·算法
禹凕7 小时前
Dijkstra算法详解与应用
python·算法
传奇开心果编程7 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust
m0_380743877 小时前
给 Claude API 调用补上超时重试和错误分类
开发语言·人工智能·php
Draw Stars7 小时前
Git BASH安装教程
开发语言·git·bash