基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

这篇具有很好参考价值的文章主要介绍了基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)
随着我们了解到机器人如何建立运动学模型和动力学模型之后,我们可以使用Matlab中的仿真工具箱内来对模型的准确性进行验证,并且可以通过内置的函数进行简单的轨迹规划和可视化观察,本节涉及到的工具箱是MATLAB自带的Robotics Toolbox工具箱。

一、空间位姿描述

1. 二维空间


平移与旋转函数:
  • SE2(x,y,theta):(x,y)的平移 + theta的旋转
T1 = SE2(1,3,30,"deg");
  • transl2(x,y):纯(x,y)的平移
T2=trans12(3, 4);

绘制坐标变换:

  • trplot2(T):绘制坐标系变换T
trplot2(T1,"frame","1","color","b");
trplot2(T2,"frame","2","color","r");

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

T1 = SE2(1,3,30,"deg");
trplot2(T1,"frame","1","color","b");
T2=transl2(3, 4);
hold on;
trplot2(T2,"frame","2","color","r");
axis([0 5 2 6]);

2. 三维空间


平移与旋转函数:
  • transl(x,y,z):(x,y,z)的平移
R1 = transl(0.5,0.0,0.0);
  • trotx(theta) / troty(theta) / trotz(theta):绕x / y / z轴theta的旋转
R2 = trotx(pi/2)*troty(pi/2)*trotz(-pi/2);
  • rotx(theta) / roty(theta) / rotz(theta):绕x / y / z轴theta得到的旋转矩阵
R3 = rotx(30,"deg")*roty(30,"deg")*rotz(30,"deg");

注意:trotx和rotx默认都为弧度,trotx可直接与平移函数相乘,而rotx不可


绘制坐标变换:

  • trplot ( R ):绘制坐标系变换R
trplot(R1,"frame","A", "color", "b");
trplot(R2,"frame","B", "color", "r"); 
  • tranimate ( R ):绘制旋转动画R
tranimate(R1,"frame","A", "color", "b");
tranimate(R2,"frame","B", "color", "r");

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

ta = transl(0.5,2.0,1.0)*troty(pi/2)*trotz(-pi/2);
trplot(ta,"frame","A","color","r");
tranimate(ta,"frame","A", "color", "r");
hold on
tb = roty(-pi/2)*rotz(pi/2);
trplot(tb,"frame","B","color","b");
tranimate(tb,"frame","B", "color", "b");

3. 旋转的不同表示方法

1)欧拉角


原理介绍:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)


函数解释:

  • R=rotz(α)*roty(β)*rotz(γ):构造旋转矩阵
R1 = rotz(0.1)*roty(0.2)*rotz(0.3);
  • eul=tr2eul( R ):旋转矩阵转换为欧拉角
eul = tr2eul(R);
  • R=eul2r(eul):欧拉角转换为旋转矩阵
R = eul2r(0.1,0.2,0.3);

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

R1 = rotz(0.1)*roty(0.2)*rotz(0.3)
eul = tr2eul(R1)
R2 = eul2r(0.1,0.2,0.3)

2)RPY角


原理介绍:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)


函数解释:

  • R=rotz(α)*roty(β)*rotx(γ):构造旋转矩阵
R1 = rotz(0.3)*roty(0.2)*rotx(0.1);
  • rpy=tr2rpy( R ):旋转矩阵转换为RPY角
eul = tr2rpy(R);
  • R=rpy2r(α,β,γ,options):RPY角转换为旋转矩阵
R = rpy2r(0.3,0.2,0.1);

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

R1 = rotz(0.3)*roty(0.2)*rotx(0.1)
eul = tr2rpy(R1)
R2 = rpy2r(0.3,0.2,0.1)

3)双向量表示


原理介绍:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)


函数解释:

  • R=oa2r(o,a):双向量转换为旋转矩阵
a = [1 0 0]';
o = [0 1 0]';
R1 = oa2r(o,a); 

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

4)轴与旋转角


原理介绍:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

函数解释:

  • [theta,vec] = tr2angvec( R ):旋转矩阵转换为旋转轴与角
[theta,vec]=tr2angvec( R1 );
  • R = angvec2r(theta,vec):旋转轴与角转换为旋转矩阵
R1 = angvec2r(theta,vec);

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

5)四元数表示


原理介绍:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

函数解释:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

效果展示:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

s=0.95;
v=[0.034, 0.106, 0.143];
Q=UnitQuaternion(s,v); % 组成四元数
q=Q.inv(); % 求共轭
Q.display(); % 打印出四元数
Q.plot(); % 画出出四元数
Q.animate(); % 动画展示四元数
TT=Q.T; % 制作齐次变换矩阵
RR=Q.R; % 制作旋转矩阵
rpy=Q.torpy(); % 转换成rpy角
eul=Q.toeul(); % 转换成eul角

二、动力学

1. 动力学参数


知识介绍:

  • 动力学参数:各关节质量、质心位置、惯性张量、惯性矩阵等;
  • 获取方法:
  1. matlab中存在着自带的一些机器人参数,例如puma560等,可直接调用
  2. 手动创建机器人模型文件(参数可由Solidworks手动测量),保存为.m文件,实例如下:
% mdl_Dyn_5dof.m
% 单臂动力学结构参数
d=[        0,     0,        0,        0,       0];
a=[        0,    13,   233.24,   175.64,       0];%/1000
alpha=[    0,  pi/2,        0,        0,    pi/2];

%使用offset
L(1)=Link('d',d(1),'a',a(1),'alpha',alpha(1),'modified'); 
L(2)=Link('d',d(2),'a',a(2),'alpha',alpha(2),'offset',pi/2,'modified');
L(3)=Link('d',d(3),'a',a(3),'alpha',alpha(3),'modified');
L(4)=Link('d',d(4),'a',a(4),'alpha',alpha(4),'offset',pi/2,'modified');
L(5)=Link('d',d(5),'a',a(5),'alpha',alpha(5),'modified');

du=pi/180;
ra=180/pi;
%定义关节范围
L(1).qlim =[-170, 170]*du;
L(2).qlim =[60-70, 60+70]*du;%-10,130
L(3).qlim =[-70-70,-70+70]*du;%-140,0
L(4).qlim =[-70,70]*du;
L(5).qlim =[-170, 170]*du;
bot=SerialLink(L,'name','五自由度机械臂');
%bot.tool= transl(0, 0, tool)

% 动力学参数
data=[
    %     Ixx,    Iyy,      Izz,        Ixy,        Ixz,        Iyz,         xc,         yc,        zc,       m
       47.316,  51.601,   77.113,     -0.003,     -2.549,     -0.016,     -0.598,      0.016,   -23.413,   0.076;
       62.746, 651.130,  704.486,     29.632,     -0.001,     -0.003,    104.910,    -31.512,     0.001,   0.151;
        6.264, 224.674,  228.590,    -14.345,     -0.006,          0,     69.863,      8.061,     0.015,   0.065;
        1.502,   1.800,    2.241,      0.455,          0,          0,      4.498,    -12.503,         0,   0.008;
       13.735,  14.594,   15.321,          0,      0.004,          0,      0.046,          0,    43.571,   0.036
    ];

% data(:,1:6)=data(:,1:6)./1000000;
% data(:,7:9)=data(:,7:9)./1000;

% 惯性张量
data(:,[5 6])=data(:,[6 5]);%交换Ixz和Iyz
for i=1:5
   %I = [L_xx, L_yy, L_zz, L_xy, L_yz, L_xz]
   %放入是6个数字,但存储是矩阵形式的9个数字
   bot.links(i).I=data(i,1:6); 
end

%质心
for i=1:5
   bot.links(i).r=data(i,7:9); 
end

% 质量
for i=1:5
   bot.links(i).m=data(i,10); 
end

% 对于空中机械臂,重力与坐标系方向一致,所以为正
% 这与matlab自带的重力系统相反,所以matlab自带函数为负
% 重力单位是m·s-2,也是N/kg,考虑到第二种意义,这里不改变数量值
bot.gravity=[0;0;-9.81];

函数解释:dyn,查看动力学参数

  • 查看动力学参数:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)


代码示例:

mdl_puma560;
p560.dyn;%查看puma560机械臂所有连杆的动力学参数
p560.dyn(2);%查看puma560机械臂第二连杆的动力学参数
p560.links(2).dyn;%查看puma560机械臂第二连杆的动力学参数

2. 正动力学函数


函数解释:fdyn,根据力矩求解关节值

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)
基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)


代码示例:

mdl_puma560;
torqfun = [1 2 3 4 5 6];
p560 = p560.nofriction();%为了加快求解速度,选择使用不考虑摩擦的动力学模型
[T,q,qd] = p560.fdyn(1,torqfun);

函数解释:accel,计算角加速度

  • qdd = R.accel(q,qd,torqfun):输入位置、速度、力矩求解角加速度

代码示例:

% torqfun = [0,30,6,0,0,0];%设定一组关节力
bot_nf=bot.nofriction();
[T,q,qd] = bot_nf.fdyn(1, torqfun)
for i=1:65,
	qdd = bot_nf.accel(q(i,:),qd(i,:),torqfun)
end

3. 逆运动学函数


函数解释:rne,根据关节值求解所需力矩


基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

代码示例:

>> mdl_puma560;
>> A = p560.rne(qn,qz,qz)%当关节角为[0 0.7854 3.1416 0 0.7854 0],关节速度、关节加速度为零,重力加速度为9.81时所需的关节力矩

A =

   -0.0000   31.6399    6.0351    0.0000    0.0283         0

4. 动力学方程参数


知识介绍:

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

函数解释:gravload,求解重力载荷

>> mdl_puma560;
>> p560.gravload([1 2 3 4 5 6])%给定关节角度,求解出重力载荷

ans =

    0.0000   -7.9683    8.4581   -0.0197    0.0027         0

函数解释:inertia,求解关节空间惯性矩阵

>> mdl_puma560;
>> p560.inertia([1 2 3 4 5 6])%给定关节角度,求解出关节空间惯性矩阵

ans =

    2.6152   -0.6550   -0.0363    0.0001    0.0010    0.0000
   -0.6550    4.3038    0.2953   -0.0008   -0.0017    0.0000
   -0.0363    0.2953    0.9366   -0.0009   -0.0006    0.0000
    0.0001   -0.0008   -0.0009    0.1926    0.0000    0.0000
    0.0010   -0.0017   -0.0006    0.0000    0.1713    0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000    0.1941

函数解释:coriolis,求解科氏力和向心力的耦合矩阵

>> mdl_puma560;
>> qd = [0.1 0.1 0.1 0.1 0.1 0.1];%给定关节速度
>> C = p560.coriolis(qn,qd)%给定关节角度、关节速度,计算科式力和向心力的耦合矩阵

C =

   -0.0267   -0.1291    0.0170   -0.0000   -0.0003    0.0000
    0.0627    0.0386    0.0771   -0.0002   -0.0000   -0.0000
   -0.0361   -0.0387   -0.0001   -0.0001   -0.0003   -0.0000
    0.0000    0.0001   -0.0000    0.0000    0.0000   -0.0000
   -0.0000    0.0001    0.0002   -0.0000   -0.0000   -0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000         0

函数解释:payload,求解有效载荷

>> mdl_puma560;
>> p560.inertia([1 2 3 4 5 6])%没有施加有效载荷时的惯性矩阵

ans =

    2.6152   -0.6550   -0.0363    0.0001    0.0010    0.0000
   -0.6550    4.3038    0.2953   -0.0008   -0.0017    0.0000
   -0.0363    0.2953    0.9366   -0.0009   -0.0006    0.0000
    0.0001   -0.0008   -0.0009    0.1926    0.0000    0.0000
    0.0010   -0.0017   -0.0006    0.0000    0.1713    0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000    0.1941

>> p560.payload(1,[0,0.1,0.2])%施加有效载荷
>> p560.inertia([1 2 3 4 5 6])%施加有效载荷后的惯性矩阵

ans =

    2.8033   -0.8506   -0.0951    0.0079    0.0778    0.0368
   -0.8506    4.6513    0.4828   -0.0858   -0.1011   -0.0584
   -0.0951    0.4828    1.1338   -0.0988   -0.0169   -0.0214
    0.0079   -0.0858   -0.0988    0.2416    0.0029    0.0082
    0.0778   -0.1011   -0.0169    0.0029    0.2120    0.0192
    0.0368   -0.0584   -0.0214    0.0082    0.0192    0.2041

总结

  • 声明:本文借鉴了部分博客内容,原文地址奉上:机器人仿真、机械臂动力学、动力学函数解析

基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

本文旨在续接上文,对Matlab的Robotics Toolbox工具箱中有关空间位姿描述,各种旋转矩阵表示方法、动力学相关函数进行整理分析,方便未来查询及寻找解释,后续将会推出一些实际机器人的模型计算,敬请期待文章来源地址https://www.toymoban.com/news/detail-466578.html

到了这里,关于基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MATLAB机器人工具箱详解1—RTB 10.4版本简介及安装

    机器人学工具箱(Robotic Toolbook for Matlab) 是matlab中专门用于机器人仿真的工具箱,在机器人建模、轨迹规划、控制、可视化方面使用非常方便。本次安装环境为Windows 11+MATLAB 2023a,所安装的机器人工具箱的版本为RTB 10.4,后续将有详细的讲解不同的机器人工具箱的版本区别。

    2024年02月05日
    浏览(40)
  • MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】

    rvctools下载地址:rvctools下载 截图如下,点击红色箭头指示的 “ Download Shared Folder ” 即可下载 下载之后进行解压,解压到 D:MATLABtoolbox 这个工具箱目录,这个安装路径根据自己的情况来选择,没有安装MATLAB,感兴趣的可以查阅:MatLab的下载、安装与使用(亲测有效) 然后我们

    2024年02月05日
    浏览(56)
  • Matlab 机器人工具箱 (一)DH参数和正逆运动学

    作者为大三学生,本博客为边学习边使用,如有错误,请见谅。 在文章结束附加代码。 前置坐标系对应改进版:modified 后置坐标系对应标准版:standard 因为学习过程中大部分为前置坐标系,故本文仅讨论前置坐标系。 用的最习惯的是如下的代码: 参数‘alpha’代表扭转角

    2024年02月02日
    浏览(57)
  • Matlab机械臂建模:机器人工具箱的使用&&导入自己的机械臂模型

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

    2024年02月07日
    浏览(59)
  • 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日
    浏览(58)
  • 使用Matlab机器人工具箱完成四元数到旋转矩阵的转换,附程序

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

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

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

    2024年04月13日
    浏览(64)
  • 【MATLAB第57期】基于MATLAB的双隐含层BP神经网络回归预测模型(无工具箱版本及工具箱版本对比)

    数据为案例数据 。103行样本,7输入1输出数据。 训练集数据的R2为:0.9022 测试集数据的R2为:0.87266 训练集数据的MAE为:1.8189 测试集数据的MAE为:2.1658 训练集数据的MBE为:-0.00088469 测试集数据的MBE为:0.3059 数据与无工具版本相同,数据顺序也相同。 训练集数据的R2为:1 测试

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

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

    2024年02月02日
    浏览(64)
  • 基于MATLAB的最小二乘法拟合与拟合工具箱使用教程(附完整代码与算法)

    给定一组数据满足某一函数模型,其中a为待定系数向量。 那么,最小二乘曲线拟合的目标就是:求出一组待定系数的值,使得以下表达式子最小: 在MATLAB中格式如下: 由以下MATLAB代码生成一组数据: 该组数据满足y(x),求出待定系数,使得目标函数的值为最小。 解: MATL

    2024年01月17日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包