1. 理论知识
理论知识请参考:
- 机器人学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译
- 机器人学课程讲义(丁烨)
- 机器人学课程讲义(赵言正)
2. Matlab Robotics Toolbox安装
上官网:
http://petercorke.com/wordpress/toolboxes/robotics-toolbox
Download RTB-10.3.1 mltbx format (23.2 MB) in MATLAB toolbox format (.mltbx)
将down下来的文件放到一般放untitled.m所在的文件夹内。打开MATLAB运行,显示安装完成即可。
不要下zip,里面的东西各种缺失并且乱七八糟,很难配。
该工具箱内的说明书是robot.pdf
也可查阅 “机器人工具箱简介.ppt”
3. 机器人建模
本仿真程序仿照fanuc_M20ia机器人进行建模。
3.1 利用DH矩阵建立机器人模型(modified)
经测绘,用如下代码建立DH矩阵
使用robot.teach()函数,进行机器人示教
% RobotTeach.m
clc;
% theta d a alpha offset
ML1 = Link([ 0, 0.4967, 0, 0, 0], 'modified');
ML2 = Link([ -pi/2, -0.18804, 0.2, 3*pi/2, 0], 'modified');
ML3 = Link([ 0, 0.17248, 0.79876, 0 , 0], 'modified');
ML4 = Link([ 0, 0.98557, 0.25126, 3*pi/2, 0], 'modified');
ML5 = Link([ 0, 0, 0, pi/2 , 0], 'modified');
ML6 = Link([ 0, 0, 0, pi/2 , 0], 'modified');
robot = SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','Fanuc M20ia');
robot.teach(); %可以自由拖动的关节角度
% EOF
效果如下:
3.2 机器人参数设定
在做仿真计算时,需要设定各个关节的运动学与动力学参数
质量属性可以在SolidWorks中指定材质后,在“评估-质量属性”中查看
运动学参数:
% 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 电机惯性矩(对于电机)
完整的机器人建模代码
clear;
clc;
% theta d a alpha offset
ML1 = Link([ 0, 0.4967, 0, 0, 0], 'modified');
ML2 = Link([ -pi/2, -0.18804, 0.2, 3*pi/2, 0], 'modified');
ML3 = Link([ 0, 0.17248, 0.79876, 0 , 0], 'modified');
ML4 = Link([ 0, 0.98557, 0.25126, 3*pi/2, 0], 'modified');
ML5 = Link([ 0, 0, 0, pi/2 , 0], 'modified');
ML6 = Link([ 0, 0, 0, pi/2 , 0], 'modified');
%配置机器人参数
ML1.m = 20.8;
ML2.m = 17.4;
ML3.m = 4.8;
ML4.m = 0.82;
ML5.m = 0.34;
ML6.m = 0.09;
ML1.r = [ 0 0 0 ];
ML2.r = [ -0.3638 0.006 0.2275];
ML3.r = [ -0.0203 -0.0141 0.070];
ML4.r = [ 0 0.019 0];
ML5.r = [ 0 0 0];
ML6.r = [ 0 0 0.032];
ML1.I = [ 0 0.35 0 0 0 0];
ML2.I = [ 0.13 0.524 0.539 0 0 0];
ML3.I = [ 0.066 0.086 0.0125 0 0 0];
ML4.I = [ 1.8e-3 1.3e-3 1.8e-3 0 0 0];
ML5.I = [ 0.3e-3 0.4e-3 0.3e-3 0 0 0];
ML6.I = [ 0.15e-3 0.15e-3 0.04e-3 0 0 0];
ML1.Jm = 200e-6;
ML2.Jm = 200e-6;
ML3.Jm = 200e-6;
ML4.Jm = 33e-6;
ML5.Jm = 33e-6;
ML6.Jm