900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Matlab Robotic Toolbox工具箱学习笔记

Matlab Robotic Toolbox工具箱学习笔记

时间:2022-08-01 20:47:03

相关推荐

Matlab Robotic Toolbox工具箱学习笔记

Arm/Robots

机器人是由多个连杆连接而成的,机器人关节分为旋转关节和移动关节。创建机器人的两个最重要的函数是:Link和SerialLink。

1、Link类

一个Link包含了机器人的运动学参数、动力学参数、刚体惯性矩参数、电机和传动参数。

操作函数:

%A连杆变换矩阵

%RP关节类型: 'R'或 'P'

%friction摩擦力

%nofriction摩擦力忽略

%dyn显示动力学参数

%islimit测试关节是否超出软限制

%isrevolute测试是否为旋转关节

%isprismatic测试是否为移动关节

%display连杆参数以表格形式显示

%char转为字符串

运动学参数:

%theta关节角度

%d连杆偏移量

%a连杆长度

%alpha连杆扭角

%sigma旋转关节为0,移动关节为1

%mdh标准的D&H为0,否则为1

%offset关节变量偏移量

%qlim关节变量范围[min max]

动力学参数:

%m连杆质量

%r连杆相对于坐标系的质心位置3x1

%I连杆的惯性矩阵(关于连杆重心)3x3

%B粘性摩擦力(对于电机)1x1或2x1

%Tc库仑摩擦力1x1或2x1

电机和传动参数:

%G齿轮传动比

%Jm电机惯性矩(对于电机)

2、SerialLink类

操作函数:

%plot以图形形式显示机器人

%teach驱动机器人

%isspherical测试机器人是否有球腕关节

%islimit测试机器人是否抵达关节极限

%fkine前向运动学求解

%ikine6s6旋转轴球腕关节机器人的逆向运动学求解

%ikine33旋转轴机器人的逆向运动学求解

%ikine采用迭代方法的逆向运动学求解

%jacob0在世界坐标系描述的雅克比矩阵

%jacobn在工具坐标系描述的雅克比矩阵

%maniplty可操纵性度

%jtraj关节空间轨迹

%accel关节加速度

%coriolis关节柯氏力

%dyn显示连杆的动力学属性

%fdyn关节运动

%friction摩擦力

%gravload关节重力

%inertia关节惯性矩阵

%nofriction设置摩擦力为0

%rne关节的力/力矩

%payload在末端坐标系增加负载

%perturb随机扰动连杆的动力学参数

属性:

%links连杆向量(1xN)

%gravity重力的方向[gx gy gz]

%base机器人基座的位姿(4x4)

%tool机器人的工具变换矩阵[ T6 to tool tip] (4x4)

%qlim关节范围[qmin qmax](Nx2)

%offset偏置(Nx1)

%name机器人名字(在图形中显示)

%manuf注释, 制造商名

%comment注释, 总评

%plotoptoptions for plot() method (cell array)

%n关节数

%config机器人结构字符串,例如 'RRRRRR'

%mdh运动学中约定的布尔数 (0=DH, 1=MDH)

怎样创建一个机器人?

%Link调用格式:

%{

(1) L = Link() 创建一个带默认参数的连杆

(2)L = Link(L1)复制连杆L1

(3)L = Link(OPTIONS) 创建一个指定运动学、动力学参数的连杆

OPTIONS可以是:

% 'theta',THjoint angle, if not specified joint is revolute

% 'd',Djointextension, if not specified joint is prismatic

% 'a',Ajoint offset(default 0)

% 'alpha',Ajoint twist (default 0)

% 'standard'defined using standard D&H parameters (default).

% 'modified'defined using modified D&H parameters.

% 'offset',Ojoint variable offset(default 0)

% 'qlim',Ljoint limit (default [])

% 'I',Ilink inertia matrix (3x1, 6x1 or 3x3)

% 'r',Rlink centre of gravity (3x1)

% 'm',Mlink mass (1x1)

% 'G',Gmotor gear ratio (default 0)

% 'B',Bjoint friction, motor referenced (default 0)

% 'Jm',Jmotor inertia, motor referenced (default 0)

% 'Tc',TCoulomb friction, motor referenced (1x1 or 2x1), (default [0 0])

% 'revolute'for a revolute joint (default)

% 'prismatic'for a prismatic joint 'p'

% 'standard'for standard D&H parameters (default).

% 'modified'for modified D&H parameters.

% 'sym'consider all parameter values as symbolic not numeric

注:不能同时指定“theta”和“d”

连杆的惯性矩阵(3x3)是对称矩阵,可以写成3x3矩阵,也可以是[Ixx Iyy Izz Ixy Iyz Ixz]

所有摩擦均针对电机而不是负载

齿轮传动比只用于传递电机的摩擦力和惯性矩给连杆坐标系。

%}

%SerialLink调用格式:

%{

(1)R = SerialLink(LINKS, OPTIONS),OPTIONS可以是:'name'、'comment'、'manufacturer'

'base'、'tool'、'gravity'、'plotopt'

(2)R = SerialLink(DH, OPTIONS),矩阵DH的构成:每个关节一行,每一行为[theta d a alpha]

(默认为旋转关节),第五列(sigma)为可选列,sigma=0(默认)为旋转关节,sigma=1为移动关节

(3) R = SerialLink(OPTIONS) 没有连杆的机器人

(4)R = SerialLink([R1 R2 ...], OPTIONS) 机器人连接, 将R2的基座连接到R1的末端.

(5)R = SerialLink(R1, options) 复制机器人R1

%}

L1 = Link('d', 0, 'a', 1, 'alpha', pi/2);%定义连杆1,没有写theta说明theta为关节变量

L1.a;%查看a的值

L1.d;%查看d的值

%还可以L1.RP,L1.display,L1.mdh,L1.isprismatic,L1.isrevolute等等,这样就可以查看一些默认值

L2 = Link('d', 0, 'a', 1, 'alpha', 0);

bot = SerialLink([L1 L2], 'name', 'my robot');

bot.n;%查看连杆数目

bot.fkine([0.1 0.2]);%前向运动学

bot.plot([0.1 0.2]);%绘制机器人

定义完连杆和机器人便可以求机器人前和逆向运动学、动力学等等。

L1.参数或属性():查看连杆的参数或属性

L1.操作函数(参数):操作连杆参数

bot.属性():查看机器人的属性

bot.操作函数(参数):操作机器人,可以进行前向、逆向运动学求解等

实例:Stanford Manipulator

D-H参数表:

clear;

clc;

L1 = Link('d', 0, 'a', 0, 'alpha', -pi/2);%定义连杆

L2 = Link('d', 1, 'a', 0, 'alpha', pi/2);

L3 = Link('theta', 0, 'a', 0, 'alpha', 0);

L4 = Link('d', 0, 'a', 0, 'alpha', -pi/2);

L5 = Link('d', 0, 'a', 0, 'alpha', pi/2);

L6 = Link('d', 1, 'a', 0, 'alpha', 0);

bot = SerialLink([L1 L2 L3 L4 L5 L6]);%连接连杆

bot.display();%显示D-H参数表

forward_kinematics=bot.fkine([-0.2 0.1 10 0.1 1 2])%前向运动学

求解Stanford arm在世界坐标系描述的雅克比矩阵

clear;

clc;

clear L

%thdaalpha

L(1) = Link([ 000-pi/20]);%定义连杆

L(2) = Link([ 010pi/20]);

L(3) = Link([ 00001]);

L(4) = Link([ 000-pi/20]);

L(5) = Link([ 000pi/20]);

L(6) = Link([ 01000]);

bot = SerialLink(L, 'name', 'Stanford arm');%连接连杆

syms theta1 theta2 d3 theta4 theta5 theta6;

J0=vpa(bot.jacob0([theta1 theta2 d3 theta4 theta5 theta6]),4)

求平面二自由度机器人在世界坐标系描述的雅克比矩阵

D-H参数表:

clear;

clc;

clear L

L(1) = Link('d',0,'a','a1','alpha',0,'sym');%定义连杆

L(2) = Link('d',0,'a','a2','alpha',0,'sym');

bot = SerialLink(L, 'name', 'Planar 2-dof robot');%连接连杆

syms theta1 theta2;

J0=bot.jacob0([theta1 theta2]);

J0=simplify(J0)

求得:

J0 =

[ - a2*sin(theta1 + theta2) - a1*sin(theta1), -a2*sin(theta1 + theta2)]

[a2*cos(theta1 + theta2) + a1*cos(theta1),a2*cos(theta1 + theta2)]

[0,0]

[0,0]

[0,0]

[1,1]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。