控制科学与工程:随手笔记(2)--工业机器人仿真、matlab

本文详细介绍了使用MATLAB进行工业机器人六自由度(6DOF)仿真的过程,包括DH参数矩阵的构建、机器人连杆3D连接、前向和逆向运动学计算以及绘制工作空间等关键函数的运用。同时,提到了在牛顿-拉弗森法求解过程中遇到的问题,即无法收敛到最小值。
摘要由CSDN通过智能技术生成

介绍了python库的安装及其链接

https://blog.csdn.net/weixin_41826637/article/details/80966836

不懂的matlab函数

函数 用法
inv 矩阵求逆---------inv(A)*b=A\b
pause pause(n)----暂停n秒 pause;-----暂停等待按键触发

使用matlab基本函数进行机器人建模仿真

微分运动偏差
手写“郑”
描图片

Build_6DOF_Robot_DH.m

// A highlighted block
%% 建立机器人DH参数表

UX = [1 0 0]';
UY = [0 1 0]';
UZ = [0 0 1]';

Link=struct('name','Body','theta',0,'di',0,'ai',0,'alpha',0,'az',UZ);
Link(1)=struct('name','Base','theta',0,'di',0,'ai',0,'alpha',0,'az',UZ);
Link(2)=struct('name','J1','theta',pi/2,'di',100,'ai',0,'alpha',-pi/2,'az',UZ);
Link(3)=struct('name','J2','theta',-pi/2,'di',0,'ai',0,'alpha',-pi/2,'az',UZ);
Link(4)=struct('name','J3','theta',0,'di',80,'ai',0,'alpha',0,'az',UZ);
Link(5)=struct('name','J4','theta',0,'di',80,'ai',0,'alpha',pi/2,'az',UZ);
Link(6)=struct('name','J5','theta',0,'di',0,'ai',0,'alpha',-pi/2,'az',UZ);
Link(7)=struct('name','J6','theta',pi/2,'di',80,'ai',0,'alpha',pi/2,'az',UZ);
Link(8)=struct('name','J7','theta',0,'di',50,'ai',0,'alpha',0,'az',UZ);
Link(9)=struct('name','J8','theta',0,'di',-100,'ai',0,'alpha',0,'az',UZ);

Build_DH_Matrix.m

function Build_DH_Matrix(JointNum)
%% 输入关节数量,生成齐次变换矩阵A、旋转矩阵R
global Link



for i=1:JointNum+3
    %获取关节参数
    Cth=cos(Link(i).theta);
    Sth=sin(Link(i).theta);
    Ca=cos(Link(i).alpha);
    Sa=sin(Link(i).alpha);
    ai=Link(i).ai;
    di=Link(i).di;
 
    
    %添加关节变换信息
    Link(i).x=[Cth       Sth        0     0]';
    Link(i).y=[-Sth*Ca   Cth*Ca     Sa    0]';
    Link(i).z=[Sth*Sa    -Cth*Sa    Ca    0]';
    Link(i).p=[ai*Cth    ai*Sth     di    1]';
    
    Link(i).R=[Link(i).x(1:3),Link(i).y(1:3),Link(i).z(1:3)];
    Link(i).A=[Link(i).x,Link(i).y, Link(i).z, Link(i).p];
end

Connect3D.m

function Connect3D(p1,p2,option,pt)

h = plot3([p1(1) p2(1)],[p1(2) p2(2)],[p1(3) p2(3)],option);
set(h,'LineWidth',pt)

DH_FK_6DOF.m

function pic=DH_FK_6DOF(th1,th2,dz3,th4,th5,th6,th7,th8,fcla)

global Link
ToDeg = 180/pi;
ToRad = pi/180;

Build_6DOF_Robot_DH;    %构建DH表

% 获取关节变量
Link(2).theta=th1*ToRad;
Link(3).theta=th2*ToRad;
Link(4).di=80+dz3;
Link(5).theta=th4*ToRad;
Link(6).theta=th5*ToRad;
Link(7).theta=th6*ToRad;
Link(8).theta=th7*ToRad;
Link(9).theta=th8*ToRad;


Build_DH_Matrix(6);     %计算齐次变换矩阵



radius    = 10;         %初始化
len       = 30;
joint_col = 0;
plot3(0,0,0,'ro'); 


% 绘制连杆及其关节
for i=2:9
    Link(i).A =Link(i-1).A*Link(i).A;
    Link(i).x= Link(i).A(1:3,1);
    Link(i).y= Link(i).A(1:3,2);
    Link(i).z= Link(i).A(1:3,3);
    Link(i).p= Link(i).A(1:3,4);
    Link(i).R=[Link(i).x,Link(i).y,Link(i).z];
    Connect3D(Link(i-1).p,Link(i).p,'b',3); 
    plot3(Link(i).p(1),Link(i).p(2),Link(i).p(3),'rx');
    hold on;
    if i<=7
         DrawCylinder(Link(i-1).p, Link(i-1).R * Link(i).az, radius,len, joint_col); hold on;
    end
end

% 设置坐标系信息
grid on;
%view(129,28);
axis([-400,400,-400,400,-400,400]);
xlabel('x');
ylabel('y');
zlabel('z');

%生成动画帧
drawnow;
pic=getframe;

% 判断是否清空坐标系
if(fcla)
    cla;
end

DH_

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值