matlab机器人工具箱DH矩阵
1. modified-DH和standard-DH
参考:https://blog.csdn.net/u013528298/article/details/81021386,很详细; modified-DH坐标系建立在杆首,standard-DH坐标系建立在杆末; 但是除了利用机器人工具箱建立模型,自己写算法不必拘泥于标准型和改进型,按照旋转矩阵进行求解即可;
以下为个人理解,不一定准确
modified-DH
分出Link i,画出Zi,Zi在Linki前端,方向尽量统一;画出Xi,由Zi和Zi+1确定方向,即Xi指向下一joint,确定本Joint空间方向;画出ai,即Zi到Zi+1距离,在Xi轴线上,确定本joint的空间位置;画出αi,即Zi与Zi+1空间夹角,面向Xi方向逆时针为正;画出di,即Xi-1到Xi距离,在Zi轴线上,进一步确定本joint的空间位置;画出θi,即Xi-1与Xi空间夹角,也就是关节转角面向Zi方向逆时针为正;由3-6可知,ai和αi确定下一坐标系相对于本坐标系在Xi上的距离和偏转,di和θi确定本坐标系相对于上一坐标系在Zi上的距离和偏转;换句话说,ai和αi描述和下一关节的关系,di和θi描述和上一关节的关系;另一种理解方式:ai为本杆长度,αi为本杆扭转角,di为本杆相对于上杆偏移量,θi为本关节活动转角(Zi两侧);Frame0和Frame1、Frame n和Frame n-1尽量统一方向;工具坐标系中心点沿Frame Xn方向,距离为L,在Frame Xn中坐标为(L,0,0);各joint需要考虑实际空间尺寸,按需加到di中。
standard-DH
分出Linki,画出Zi,Zi在Linki 后端,方向尽量统一;画出Xi,由Zi-1和Zi确定方向,即Xi由上一joint指向本joint,确定本Joint空间方向;画出ai,即Zi-1到Zi距离,在Xi轴线上,确定本joint的空间位置;画出αi,即Zi-1与Zi空间夹角,面向Xi方向逆时针为正;画出di,即Xi-1到Xi距离,在Zi-1轴线上,进一步确定本joint的空间位置;画出θi,即Xi-1与Xi空间夹角,也就是关节转角面向Zi-1方向逆时针为正;由3-6可知,ai和αi确定本坐标系相对于上一坐标系在Xi上的距离和偏转,di和θi确定本坐标系相对于上一坐标系在Zi-1上的距离和偏转;换句话说,ai和αi描述和下一关节的关系,di和θi描述和上一关节的关系;另一种理解方式:ai为本杆长度,αi为本杆扭转角,di为本杆偏移量,θi为本杆活动转角(Zi-1两侧);Frame0和Frame1、Frame n和Frame n-1尽量统一方向;工具坐标系中心点沿Frame Xn方向,距离为L,在Frame Xn中坐标为(L,0,0);各joint需要考虑实际空间尺寸,按需加到di中。
2. Link()函数
语法:Link([theta d a alpha offset]); 注:
modified-DH
Link([theta_i d_i a_i-1 alpha_i-1 offset]); 也就是说,在modified-DH中,不是直接写a_i alpha_i,而是a_i-1 alpha_i-1;
standard-DH
Link([theta_i d_i a_i alpha_i offset]);
3. 其他
1.teach(robot)会自动展机器人零点位置; 2.robot.plot([0,90,0,0,0,0])为各theta_i当前角度。