matlab机器人工具箱基础使用

这篇具有很好参考价值的文章主要介绍了matlab机器人工具箱基础使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

资料:https://blog.csdn.net/huangjunsheng123/article/details/110630665文章来源地址https://www.toymoban.com/news/detail-656546.html

用vscode直接看工具箱api代码比较方便,代码说明很多

一、模型设置

1、基础效果

%采用机器人工具箱进行正逆运动学验证
a=[0,-0.3,-0.3,0,0,0];%DH参数
d=[0.05,0,0,0.06,0.05,0.04];
alp=[pi/2,0,0,pi/2,-pi/2,0];
%机器人工具箱模型,每一个L建立一个连杆,输入DH参数即可,offset是连杆的初始偏移量,此处为0
L(1) = Link('d', d(1), 'a', a(1), 'alpha', alp(1));
L(2) = Link('d', d(2), 'a', a(2), 'alpha', alp(2), 'offset', 0 );
L(3) = Link('d', d(3), 'a', a(3), 'alpha', alp(3), 'offset', 0 );
L(4) = Link('d', d(4), 'a', a(4), 'alpha', alp(4), 'offset',0);
L(5) = Link('d', d(5), 'a', a(5), 'alpha', alp(5));
L(6) = Link('d', d(6), 'a', a(6), 'alpha', alp(6));
bot = SerialLink(L,'name','rbt');%将六个连杆组合起来 
figure(1)
bot.display();%显示机器人模型
view(3)
bot.teach;

2、link的常用属性

运动学参数
%  theta        kinematic: joint angle   关节角度
%  d            kinematic: link offset   
%  a            kinematic: link length
%  alpha        kinematic: link twist   

%  jointtype    kinematic: 'R' if revolute, 'P' if prismatic    关节类型
%  mdh          kinematic: 0 if standard D&H, else 1                参数类型(标准/改进)
%  offset       kinematic: joint variable offset                            关节变量偏移量(设置新零点)
%  qlim         kinematic: joint variable limits [min max]       关节变量限制范围
动力学参数
%  m            dynamic: link mass   连杆质量
%  r            dynamic: link COG wrt link coordinate frame 3x1   质心
%  I            dynamic: link inertia matrix, symmetric 3x3, about link COG.  惯性张量
%  B            dynamic: link viscous friction (motor referred)     连杆粘性摩擦
%  Tc           dynamic: link Coulomb friction                   连杆库仑摩擦
%-
%  G            actuator: gear ratio                减速比
%  Jm           actuator: motor inertia (motor referred)    电机惯量

二、运动学

1、正逆运动学

q=[1,-1,1,-1,1,1];%给定初始角度
T_rbt = bot.fkine(q);%采用机器人工具箱函数求正运动学
q_rbt = bot.ikine(T_rbt,'q0',q)%采用RTB的逆运动学计算上边得到的齐次矩阵对应的关节角度,给定初始值可以更快的收敛到给定的角度

2、雅各比矩阵

bot.jacob0()   关于绝对坐标系的雅各比矩阵
bot.jacobn()  关于工作坐标系的雅各比矩阵

三、动力学

1、查看动力学参数

bot.dyn()

2、正逆动力学

bot.nofriction()                                                     //无摩擦力动力学模型
bot.accel(角度,角速度,外力矩阵)              //计算关节加速度

bot.fdyn(时间,外力矩阵)                                                                               //正动力学
bot.rne(角度,角速度,角加速度,重力加速度,输出动力要求)    //逆动力学

3、计算动力学方程

bot.gravload()    //G
bot.inertia()       //M
bot.coriolis()     //V
bot.payload()    //有效载荷

四、例子:二自由度平面机械臂

syms Ix1 Iy1 Iz1 Ix2 Iy2 Iz2
syms q1 q2 m1 m2 L1 L2
syms qd1 qd2 g 
%%%%%%%%%%%%%%%%%%%1、设置运动学参数%%%%%%%%%%%%%%%%%%%
a=[0,L1,L2];%DH参数
d=[0,0,0];
alp=[0,0,0];

q = [q1,q2,0];
qd = [qd1,qd2,0];

L(1) = Link('d', d(1), 'a', a(1), 'alpha', alp(1),'modified');        %'modified'代表使用改进dh法
L(2) = Link('d', d(2), 'a', a(2), 'alpha', alp(2),'modified');
L(3) = Link('d', d(3), 'a', a(3), 'alpha', alp(3),'modified');
bot = SerialLink(L,'name','rbt');                                                       %将三个连杆组合起来,形成机器人 
%%%%%%%%%%%%%%%%%%%2、设置动力学参数%%%%%%%%%%%%%%%%%%%
%质量
bot.links(1).m=m1;
bot.links(2).m=m2;
bot.links(3).m=0;
%质心
bot.links(1).r=[L1/2,0,0];
bot.links(2).r=[L2/2,0,0];
bot.links(3).r=[0,0,0];
%转动惯量
bot.links(1).I = [Ix1, Iy1, Iz1, 0, 0,0];
bot.links(2).I= [Ix2, Iy2, Iz2,0, 0,0];
bot.links(3).I = [0, 0, 0, 0, 0,0];
%重力
bot.gravity=[0;0;-g];

bot.dyn();    %显示所有杆的动力学参数
%%%%%%%%%%%%%%%%%%%3、计算运动学参数%%%%%%%%%%%%%%%%%%%
T = bot.fkine(q);            %机器人正运动学,输入关节角度,输出T_e^0
J = bot.jacob0(q);         %计算雅各比矩阵,基于世界坐标的
%%%%%%%%%%%%%%%%%%%4、计算动力学参数%%%%%%%%%%%%%%%%%%%
M = bot.inertia(q);             %关节空间质量矩阵
V = bot.coriolis(q,qd);      %计算离心力和科氏力矢量,注意这里给出的是矩阵V,V*qd才等于计算出的向量V(qd)
G = bot.gravload(q);         %重力矢量
%%%%%%%%%%%%%%%%%%%5、正逆运动学%%%%%%%%%%%%%%%%%%%
%逆运动学,角度(不是微分运动学)
theta1 = bot.ikine(T,'mask',[1,1,1,0,0,0],'q0',[0,0,0]);   %T代表的是工作点的位姿,输出各个关节角度,q0是基座坐标,mask是关节小于6个时选择开启的
theta2 = bot.ikunc(T); 
%%正逆微分运动学
%%%%%%%%%%%%%%%%%%%6、正逆动力学%%%%%%%%%%%%%%%%%%%
bot_nf=bot.nofriction();   %设置没有摩擦力  

%其实就是根据关节力矩和作用力矩+初始q和qd算qdd,再根据qdd更新q和qd
%句柄那里不可以用[1,2,3,4,5,6]这样赋值了,可以直接给[]就是不给力
%0.4是时间间隔,@函数句柄(函数需要特别设置,因为要解算方程),第一个qz是q0,第二个qz是qd0,5和1就是函数句柄的参数
%输出就是一系列t、q、qd

[t q qd] = p560.nofriction().fdyn(0.4, @test1, qz,qz,5,1);

torqfun = [0,30,6];                %设定一组关节力
qdd = bot_nf.accel(q(i,:),qd(i,:),torqfun);  %获得中间量的办法,fdyn应该调用了accel

fprintf("-----------------------")
%逆动力学
tau = bot.rne(q, qd, qdd, 'gravity',[0,9.8,0],'fext',[0,0,0,0,0,0]);%fext是外力

test1.m

function tau = test1(t,q,qd,qstar,P,D)
tau=P*(qstar-q) + D*qd;
tau =[0,0,0,0,0,0];
end

到了这里,关于matlab机器人工具箱基础使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab机械臂建模:机器人工具箱的使用&&导入自己的机械臂模型

            本文主要介绍 如何在matlab中建立机械臂模型( 前提要下载了Robotics Toolbox机器人工具箱~ ),并进行基于正逆运动学计算的轨迹运动 。对于已有的Solidworks机械臂三维模型,如何导入Matlab,并对其进行运动控制。         关于 机器人工具箱的安装 及函数的详细

    2024年02月07日
    浏览(33)
  • Matlab 机器人工具箱中SE3是什么,如何转换成double

    先看如下代码 ML1 = Link([0   0 0     pi/2      0     ],\\\'modified\\\'); ML2 = Link([0 0     1    0     0   ],\\\'modified\\\'); ML3 = Link([0 0     1     0     0     ],\\\'modified\\\'); rob = SerialLink([ML1 ML2 ML3],\\\'name\\\',\\\'modified\\\'); rob.tool=[eye(3),[1;0;0];0 0 0 1]; rob.plot([40,20,30]/180*pi,\\\'scale\\\',0.5,\\\'delay\\\',0.00001

    2024年02月09日
    浏览(41)
  • 使用Matlab机器人工具箱完成四元数到旋转矩阵的转换,附程序

    在进行机械臂操作或写论文时,经常需要进行四元数、旋转矩阵、欧拉角等的转换。 此时,我们利用matlab里的机器人工具箱(Peter 开发)内置的函数就可完成,具体程序如下: 环境:Matlab2020b+robotics toolbox(安装方法在前几期文章里有) 此时运行matlab可得以下结果: 重要注

    2024年02月13日
    浏览(33)
  • 【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】

    DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数来描述坐标系i相对坐标系i-1的关系,即3个用来描述位置另外3个用来描述姿态。而DH参数法只需要4个参数,列出DH参数表并带入变换矩阵中可以轻易的得到机械手末端和基

    2024年02月02日
    浏览(39)
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

    随着我们了解到机器人如何建立运动学模型和动力学模型之后,我们可以使用Matlab中的仿真工具箱内来对模型的准确性进行验证,并且可以通过内置的函数进行简单的轨迹规划和可视化观察,本节涉及到的工具箱是MATLAB自带的Robotics Toolbox工具箱。 平移与旋转函数: SE2(x,y,t

    2024年02月07日
    浏览(33)
  • 机械臂仿真:使用matlab机器人工具箱与标准DH法,实现6自由度机械臂的仿真运动

    在了解了如何描述末端执行器的位姿之后,接下来我们就可以实现对机械臂的数学建模。建模的工具有很多种,本文介绍一种基于 标准DH参数法 与Matlab的Robotics Toolbox - Peter Corke库来实现此过程,并尝试实现6自由度机器人的仿真运动。 强烈推荐b站教学视频MATLAB机器人工具箱

    2024年04月13日
    浏览(39)
  • 【RTB机器人工具箱学习记录】轨迹规划实例

    给定位置: 位姿插值: trinterp() trinterp(T0, T1, M) ​ T0:初始变换矩阵 ​ T1:结束变换矩阵 ​ M: 线性插值轨迹动画:(轨迹如上图左所示) 五次多项式插值轨迹动画:(轨迹如上图右所示,和上面用mtraj遍历方式的轨迹相同) 笛卡尔轨迹 ctraj() : TC = ctraj(T0, T1, N) ​ T0:初始变

    2023年04月22日
    浏览(31)
  • 2023超级AI大脑-开源AI工具箱网站 支持机器人聊天和AI绘画等

    超级AI大脑是一个开源AI工具箱,基于Spring Boot架构,支持web,Android,IOS,H5多端应用,使用了OpenAI的ChatGPT模型实现了智能聊天机器人。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时也支持画图,用户输入文本,便可以自动制作文

    2024年02月11日
    浏览(59)
  • Matlab 优化工具箱

    语法:[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options) f、x、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 示例1-1 : 语法:[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) f、x、intcon、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 语法:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub

    2024年02月02日
    浏览(41)
  • (转载)matlab遗传算法工具箱

            以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。         遗传算法(genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代的方式进行选

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包