MATLAB Robotics Toolbox

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Robotics toolbox

一、Robotics Toolbox学习

一些自用的参考的robotics toolbox 代码学习的记录

1、D-H参数

1.连杆参数在连杆坐标系中的表示方法

  1. a i = 沿 X i 轴,从 Z i 移动到 Z i + 1 的距离 a_i=沿X_i轴,从Z_i移动到Z_{i+1}的距离 ai=沿Xi轴,从Zi移动到Zi+1的距离
  2. α i = 绕 X i 轴,从 Z i 移动到 Z i + 1 的角度 \alpha_i=绕X_i轴,从Z_i移动到Z_{i+1}的角度 αi=Xi轴,从Zi移动到Zi+1的角度
  3. d i = 沿 Z i 轴,从 X i − 1 移动到 X i 的距离 d_i=沿Z_i轴,从X_{i-1}移动到X_{i}的距离 di=沿Zi轴,从Xi1移动到Xi的距离
  4. θ i = 绕 Z i 轴,从 X i − 1 移动到 X i 的角度 \theta_i=绕Z_i轴,从X_{i-1}移动到X_{i}的角度 θi=Zi轴,从Xi1移动到Xi的角度

2.坐标系建立步骤

1)找出各关节轴,并标出这些轴线的延长线。
2)找出关节轴 i i i i + 1 i+1 i+1之间的公垂线或关节轴 i i i i + 1 i+1 i+1的交点,以关节轴 i i i i + 1 i+1 i+1的交点或公垂线与关节轴 i i i的交点作为连杆坐标系{ i i i}的原点。
3)确定Z轴:如果关节是旋转的,Z轴按右手定则大拇指指向为正方向,关节转角θ为关节变量。如果关节是移动的,Z轴定在沿直线运动方向的正方向,连杆偏移d为关节变量。
4)确定X轴:规定 X i X_i Xi沿着公垂线的方向,如果关节轴 i i i i + 1 i+1 i+1相交,则规定 X i X_i Xi轴垂直于两关节所在的平面。
5)确定Y轴:通过右手定则确定Y轴的方向。大拇指指向Z轴的方向,以x轴为准,逆时针旋转90°的方向为y轴的方向。
6)当第一个关节变量为0时,规定坐标系{0}和{1}重合。对于坐标系{N},其原点和 X N X_N XN的方向可以任意选取。但是在选取时,通常尽量使连杆参数为0。

二、位姿描述

1、二维空间

T = SE2(x, y, theta);    	% x、y为偏移量,theta为旋转角度(弧度制)
%SE——special Euclidean group 特殊欧几里得群
T = transl2(x, y); 			% (3x3矩阵)纯平移变换
trplot2(T);					%二维平面绘出相应的旋转矩阵

2、三维空间

代码如下(示例):

T1= SE3(T);									%将 SE(2)变换提升为 SE(3)(4x4)
rotx(alpha), roty(beta), rotz(theta);		% 绕xyz轴旋转的旋转矩阵(3x3)
trplot(T);									% 画出相应的旋转矩阵
tranimate(T);								% 旋转动画
transl( [x, y, z] );						% 平移变换(4x4)
trotx(theta), troty(theta), trotz(theta);	% 只有旋转的绕xyz轴旋转的齐次变换矩阵(4x4)

三、运动学

1、建立机器人模型

L(i) = Link( [theta, d, a, alpha, sigma] ) 			
% 定义关节,DH参数:关节角、连杆偏距、连杆长度、连杆转角,sigma=1为移动副
L(i).qlim = [min, max]							% 关节角度限制
Robot = SerialLink( L, 'name', 'Robot' )		% 将Link连接成一个机械臂
theta = [0 pi/2 0 0 pi 0];						% 初始关节角度
Robot.plot(theta) 								% 画出机械臂,theta为关节初始角度
Robot.display									% 输出机械臂信息
Robot.teach										% 机械臂操控交互界面		

link类其他的参数

名称用法
jointtype0-标准DH,1-改进DH
offset关节变量的偏移量(转动副为角度,移动副为位移)
mdh0-标准DH,1-改进DH

2、求解运动学正解

机器人正运动学:已知或给定一组关节角,计算出工具坐标系相对于基坐标系的位置和姿态,也就是说,用正运动学来确定机器人末端执行器的位姿。(得出连杆n相对于连杆0的位置和姿态)

机器人逆运动学:给定机械臂末端执行器的位置和姿态,计算所有可到达给定位置和姿态的关节角。

Robot.fkine(theta)						% 正运动学
Robot.ikine6s(T)						% 逆运动学封闭解
Robot.ikine(T)							% 逆运动学数值解						

3、雅可比矩阵

% q是位姿
Robot.jacob0(q)							% 对于基坐标系的雅克比矩阵
Robot.jacobn(q)							% 对于末端坐标系的雅克比矩阵

四、机器人轨迹规划

1、关节空间

[q, qd, qdd] = jtraj(init_ang,targ_ang,step)		
% init_ang——初始位姿,targ_ang——结束位姿,step——步数
%q——角度,qd——角速度,qdd——角加速度

2、笛卡尔空间

Tc = ctraj(T0, T1, n)			% T0——初始齐次变换矩阵,T1——结束时齐次变换矩阵, n——步数

五、基于MATLAB的关节型六轴机械臂轨迹规划仿真实例

%% MATLAB素质三连
clear all
clc
%% 实验一 基于MATLAB的关节型六轴机械臂仿真
%% 参数定义
%% 机械臂为六自由度机械臂
%角度转换
angle=pi/180;  %度
 
%D-H参数表
theta1 = 0;   D1 = 0.4;   A1 = 0.025; alpha1 = pi/2; offset1 = 0;
theta2 = pi/2;D2 = 0;     A2 = 0.56;  alpha2 = 0;    offset2 = 0;
theta3 = 0;   D3 = 0;     A3 = 0.035; alpha3 = pi/2; offset3 = 0;
theta4 = 0;   D4 = 0.515; A4 = 0;     alpha4 = pi/2; offset4 = 0;
theta5 = pi;  D5 = 0;     A5 = 0;     alpha5 = pi/2; offset5 = 0;
theta6 = 0;   D6 = 0.08;  A6 = 0;     alpha6 = 0;    offset6 = 0;

%% DH法建立模型,关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,1移动)

L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')
L(2) = Link([theta2, D2, A2, alpha2, offset2], 'standard')
L(3) = Link([theta3, D3, A3, alpha3, offset3], 'standard')
L(4) = Link([theta4, D4, A4, alpha4, offset4], 'standard')
L(5) = Link([theta5, D5, A5, alpha5, offset5], 'standard')
L(6) = Link([theta6, D6, A6, alpha6, offset6], 'standard')

% 定义关节范围
L(1).qlim =[-180*angle, 180*angle];
L(2).qlim =[-180*angle, 180*angle];
L(3).qlim =[-180*angle, 180*angle];
L(4).qlim =[-180*angle, 180*angle];
L(5).qlim =[-180*angle, 180*angle];
L(6).qlim =[-180*angle, 180*angle];

%% 显示机械臂
robot0 = SerialLink(L,'name','six');
f = 1 									%画在第1张图上
theta = [0 pi/2 0 0 pi 0];				%初始关节角度
figure(f)
view(3);
robot0.plot(theta);
title('六轴机械臂模型');
%% 加入teach指令,则可调整各个关节角度
robot1 = SerialLink(L,'name','sixsix');
f = 2
figure(f)
view(3);
robot1.plot(theta);
robot1.teach
title('六轴机械臂模型可调节');
%% 实验二 基于MATLAB的六轴机械臂轨迹规划仿真

%% 2.2求解运动学正解
robot2 = SerialLink(L,'name','sixsixsix');
theta2 = [0.1,0,0,0,0,0];   			%实验二指定的关节角
p=robot2.fkine(theta2)       			%fkine正解函数,根据关节角theta,求解出末端位姿p
q=ikine(robot2,p)            			%ikine逆解函数,根据末端位姿p,求解出关节角q

%% 2.3 jtraj 已知初始和终止的关节角度,利用五次多项式来规划轨迹
% T1=transl(0.5,0,0);					%根据给定起始点,得到起始点位姿
% T2=transl(0,0.5,0);					%根据给定终止点,得到终止点位姿
T1=transl(0.5,0,0);						%根据给定起始点,得到起始点位姿
T2=transl(0,0.5,0);						%根据给定终止点,得到终止点位姿
init_ang=robot2.ikine(T1);				%根据起始点位姿,得到起始点关节角
targ_ang=robot2.ikine(T2);				%根据终止点位姿,得到终止点关节角
step = 20;
f = 3

%轨迹规划方法
figure(f)
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step);
 %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
grid on
T=robot2.fkine(q);						%根据插值,得到末端执行器位姿
nT=T.T;
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹
title('输出末端轨迹');
robot2.plot(q);							%动画演示 

%% 求解位置、速度、加速度变化曲线
f = 4
figure(f)
subplot(3,2,[1,3]); 					%subplot 对画面分区 三行两列 占用1到3的位置
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹
robot2.plot(q);							%动画演示

figure(f)
subplot(3, 2, 2);
i = 1:6;
plot(q(:,1));
title('位置');
grid on;

figure(f)
subplot(3, 2, 4);
i = 1:6;
plot(qd(:,1));
title('速度');
grid on;

figure(f)
subplot(3, 2, 6);
i = 1:6;
plot(qdd(:,1));
title('加速度');
grid on;

t = robot2.fkine(q);					%运动学正解
rpy=tr2rpy(t);   						%t中提取位置(xyz)
figure(f)
subplot(3,2,5);
plot2(rpy);

%% ctraj规划轨迹 考虑末端执行器在两个笛卡尔位姿之间移动  
f = 5
T0 = robot2.fkine(init_ang);			%运动学正解
T1 = robot2.fkine(targ_ang);			%运动学正解

Tc = ctraj(T0,T1,step);  				%得到每一步的T阵

tt = transl(Tc);
figure(f)
plot2(tt,'r');
title('直线轨迹');



六、附表

1、Link类

操作函数用途
A连杆变换矩阵
RP关节类型:
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、serialink类

操作函数用途
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)

总结

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值