运动学参数部分
MDH建模图(modify改进)
图一
机器人的尺寸如图二
图二
对每个关节建立坐标系,以六轴机器人来说有第0个坐标系(基座坐标系),第1~6个坐标系(6个关节坐标系),第7个坐标系(执行端坐标系)
坐标系建立步骤
1)获取关节轴线交点:将每个关节的轴线延长,获取关节轴线交点。
2)确定基座标的原点位置和Z0轴的方向(一般选取垂直地面向上)
3)确定关节坐标系原点位置:根据关节轴线交代确定6个关节轴坐标系原点。确定i关节的坐标系原点就要找关节i的轴线与关节i+1的轴线的交点。
关节轴线相交:如图一,可以看到关节1的轴线和关节2的轴线相交,那么坐标系1的原点就定在交点处。
关节轴线平行:如图一,遇到关节2轴线和关节3轴线平行,那么关节2的坐标系原点就在关节2自身原点处就可以了。
4)确定Z轴:找到每个坐标系的原点后就需要确定每个关节的转向(右手定则),那么就可以确定每个关节轴的z轴指向。(默认z轴方向都是沿着轴线方向的)
5)确定X轴:Xi轴始终垂直于Zi轴和Zi+1轴所形成的平面
Z轴平行:Xi轴指向Zi+1轴的方向
Z轴相交:保证Xi轴垂直于Zi轴和Zi+1轴所形成的平面
6)确定Y轴:已知坐标系原点,X轴,Z轴(右手定则)。基座标的X轴和Y轴我随便取的,末端坐标系默认和关节6坐标系一样。
MDH参数辨识
顺序是由α和a再到d和θ
这是因为α和a是围绕X轴进行的,d和θ是围绕着Z轴进行的,这就符合MDH由X到Z的顺序。(SDH是由Z到X的顺序)
###我觉得这是重点(我自己理解错误卡了一段时间)
αi:绕着Xi-1轴,Zi-1轴旋转到Zi轴(根据右手定则确定正负)
ai:沿着Xi-1轴,Zi-1轴偏移到Zi轴(根据Xi-1轴方向确定正负)
di:沿着Zi轴,Xi-1轴偏移到Xi轴(根据Zi轴方向确定正负)
θi:绕着Zi轴,Xi-1轴旋转到Xi轴(根据右手定则确定正负)
MDH参数辨识如表一
i | αi | ai | di | θi |
1 | 0 | 0 | 445.2 | pi/2 |
2 | pi/2 | 50 | 0 | -pi/2 |
3 | 0 | 750 | 0 | 0 |
4 | -pi/2 | 0 | -748 | 0 |
5 | pi/2 | 0 | 0 | 0 |
6 | -pi/2 | 0 | 0 | 0 |
表一
matlab部分
下载好机器人工具箱,配置好相关设置。
1、将机器人工具箱文件下载
2、在“设置路径”这里“添加并包含子文件”,选择机器人工具箱文件,完成配置,参考图三
图三
输入代码需要注意的是输入顺序要按照θ,d,a,α的顺序进行输入
θ是没有任何用处的,如果有初始θ旋转要在offset处添加初始偏移量
代码如图四
clear;
clc;
%绕x关节角theta; 沿x连杆偏距d; 沿z连杆长度a; 绕z连杆转角alpha; sigma:0转动关节,1旋转关节
L1=Link([0 445.2 0 0 0], 'modified');
L2=Link([0 0 50 -pi/2 0], 'modified');
L3=Link([0 0 750 0 0], 'modified');
L4=Link([0 -748 0 -pi/2 0], 'modified');
L5=Link([0 0 0 pi/2 0], 'modified');
L6=Link([0 -124.5 0 pi/2 0], 'modified');
%将六个轴组合起来
robot = SerialLink([L1, L2, L3, L4, L5, L6]);
%机器人命名
robot.name='ChanHe';
robot.display();
%3维展示
view(3);
%机械臂显示初始位置
theta = [0, 0, 0, 0, 0, 0];
robot.plot(theta);
%示教模式
robot.teach;
图四