【Robotics Toolbox】MATLAB机器人工具箱使用教程

MATLAB2020a+Robotics Toolbox v10.4,工具箱版本不同命令有差异。
本文持续更新。
参考:Robotics Toolbox官方文档

文章目录

  • 1. 位姿描述
    • 1.1 二维空间位姿
    • 1.2 三维空间位姿
  • 2. 运动学
    • 2.1 建立机器人模型
    • 2.2 运动学
    • 2.3 雅克比矩阵
  • 3. 机器人轨迹规划
    • 3.1 关节空间
    • 3.2 笛卡尔空间
  • 4. 动力学
    • 4.1 逆动力学
    • 4.2 动力学方程
    • 4.3 正向动力学

1. 位姿描述

1.1 二维空间位姿

T = SE2(x, y, theta);    	% x、y为偏移量,theta为旋转角度
trplot2(T);					% 画出T坐标系
T = transl2(x, y); 			% 纯平移变换

1.2 三维空间位姿

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)

三维齐次变换矩阵还可以使用 T = SE3() 方法,在这里不多赘述。

2. 运动学

2.1 建立机器人模型

L(i) = Link( [theta, d, a, alpha, sigma] ) 			% 定义关节,DH参数:关节角、连杆偏距、连杆长度、连杆转角,sigma=1为移动副

L(i).qlim = [ min, max ]							% 关节角度限制

Six_link = SerialLink( L, 'name', 'Sixlink' )		% 将Link连接成一个机械臂

Six_link.plot( [theta_1, theta_2, ..., theta_n] ) 	% 画出机械臂,theta为关节初始角度

Six_link.display									% 输出机械臂信息

Six_link.teach										% 机械臂操控交互界面		

Link的参数
运动学参数:

名称 意义
theta 关节角
d 连杆偏距
a 连杆长度
alpha 连杆转角
jointtype R-转动副,P-移动副
mdh 0-标准DH,1-改进DH
offset 关节变量的偏移量(转动副为角度,移动副为位移)
qlim 关节变量的限制

动力学参数:

名称 意义
m 连杆质量
r 连杆质心坐标 3x1
I 连杆惯性矩阵 3x3
B 粘性摩擦力(对于电机)1x1或2x1
Tc 库仑摩擦力1x1或2x1

电机参数:

名称 意义
G 齿轮传动比
Jm 电机惯性矩(对于电机)

2.2 运动学

Six_link.fkine( [theta_1, theta_2, ..., theta_n] );	% 正运动学
Six_link.ikine6s(T);								% 逆运动学封闭解
Six_link.ikine(T);									% 逆运动学数值解						

2.3 雅克比矩阵

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

3. 机器人轨迹规划

3.1 关节空间

[q, qd, qdd] = jtraj(q0, qf, m)		% q0——初始位姿,qf——结束位姿,m——步数,q——位姿,qd——速度,qdd——加速度

3.2 笛卡尔空间

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

4. 动力学

% R是SerialLink类
R.dyn		% 输出动力学特性

4.1 逆动力学

R.rne(q, qd, qdd)				% 逆向动力学(角度、角速度、角加速度——>力、力矩)
R.rne(q, qd, qdd, grav, fext)	% grav——重力加速度,fext——机械臂末端受力W=[Fx Fy Fz Mx My Mz]

4.2 动力学方程

R.gravload(q)		% 计算重力载荷
R.inertia(q)		% 关节空间惯性矩阵
R.coriolis(q, qd)	% 科氏力和向心力的耦合矩阵
R.payload(M, P)		% 施加有效载荷:在P处施加质量M的载荷

4.3 正向动力学

[T2, q, qd] = R.fdyn(T1, torqfun)			% 正向动力学 
% 输入:T1——积分时间,torqfun——力矩函数
% 输出:T2——时间,q——角度,qd——角速度

这里有点难理解,用一下官方文档的例子来说明

% 首先定义一个力矩函数(PD Controller)
function tau = mytorqfun(t, q, qd, qstar, P, D)
	tau = P*(qstar-q) + D*qd;
end
% 再使用正向动力学函数
[t,q] = robot.fdyn(10, @mytorqfun, qstar, P, D);

你可能感兴趣的:(matlab,matlab)