Matlab Robotics工具包简介



Robotics工具包是由Peter Croke团队开发的一款基于Matlab平台的机器人运算、仿真的强大工具。2017年6月工具包的v10发布,新版的工具包功能更为强大,且支持更为简便的.mltbx格式安装。工具包更为详细的介绍以及下载、安装可以查看Peter Croke个人网站。本节的内容主要介绍利用工具包求解机器人的正、逆运动学。
工具包快速入门
双击robot-10.1.mltbx后工具包会自动安装并配置相关路径,进入Matlab界面后输入:
rtbdemo
出现demo菜单

点击demo菜单的具体内容,工具包会在线按步演示实现过程,非常利于快速入门,同时通过菜单可以看出工具包的主要功能。
机器人描述
工具包里内建了一些经典的机械臂,如Puma560、斯坦福机械臂等。研究该类机器人可以直接调用实现仿真、运动学、动力学等内容。如下所示:
rtbdemo
mdl_stanford  %创建斯坦福机械臂,对象名称为stanfstanf         %查看机械臂的相关信息,包括构型、DH参数表等内容T=stanf.fkine(qz) %求解运动学正解,qz为创建对象时自动生成的关节坐标向量,对应于零角度状态stanf.maniplty(qz) %判断六轴机器人的可操作性stanf.ikine6s(T)  %求解逆运动学封闭解(仅限有球腕机构的六轴串联机械臂)stanf.ikine(T)    %求解逆运动学数值解
对于大多数工具包没有内建的机械臂模型需要自己建立机器人模型,以SCARA型机械臂为例。

建立机器人运动学模型需要已知DH参数表。DH参数法是由Denavit和Hartenberg于1955年提出的一种描述串联式链路上连杆和关节的系统方法。1986年John J.Craig提出了一种改进的DH参数,在建立关节坐标系时将坐标系固结于该连杆的近端,而非远端,更符合直观理解。为了便于区分,这种方法成为改进DH(Modified DH),而将之前的方法称为标准DH(Standard DH)。这两种方法都被广泛接受,不同教材、论文会使用不同的方法且很多时候不会明确说明,而通过DH参数表很容易区分两种方法:如果四个参数有相同的下标那么就是标准DH,反之则为改正DH
此处采用标准DH,首先建立坐标系如下所示:

确定DH参数

建立连杆
L(1) = Link([0,0.363,0.300,0,0],'standard'); %向量中最后一个参数指定关节为转动关节(0)或移动关节(1)%第二个参数默认即为'standard',若采用改进DH第二个参数应为'modified'L(2) = Link([0,0,0.260,pi,0],'standard'); %角度采用弧度L(3) = Link([0,0,0,0,1],'standard');L(3).qlim = [0,0.3]  %限定移动关节的移动L(4) = Link([0,0,0,0,0],'standard');RobotArm = SerialLink(L,'name','SCARA') %建立机器人

求解正运动学与绘图
正运动学用fkine方法,绘图命令调用plot方法,如下
L(1).A(pi/2)  %求解关节转角为pi/2时连杆坐标系1到基础坐标系(连杆坐标系0)的齐次变换矩阵T = RobotArm.fkine([0 0 0 0])%根据各关节变量求解末端坐标系到基础坐标系的齐次变换矩阵
%等价为 T = L(1).A(0)*L(2).A(0)*L(3).A(0)*L(4).A(0)RobotArm.plot([0 0 0 0],'workspace',[-1 1 -1 1 -1 1]) %绘图,对于有移动关节的机械臂必须添加worksapce参数
如图所示

(执行plot命令仍会提示没有添加workspace选项,此处应该是新版本的一个bug,可查看我的issue)
issue链接:
link.zhihu.com/?target=https%3A//github.com/petercorke/robotics-toolbox-matlab/issues/21
逆运动学
六轴串联型机械臂一定是可解的,对于有球腕机构六轴机械臂都可以求得其封闭解,而对于其它结构的机器人可以求解数值解。机械臂逆解可能并不唯一,即存在有限组关节值可以到达同样的目标姿态,在使用ikine6s求解含球腕机构的六轴机械臂封闭解时可以添加位形字符限制。对于小于六轴的机械臂其末端可以达到的姿态是受限的,如SCARA型机械臂末端只能竖直向下,利用ikine求解数值解时需要添加遮盖向量表示忽略的自由度。
T = transl(0.3,0.26,0.2) %定义末端期望位姿q = RobotArm.ikine(T,[0 0 0 0],[1,1,1,0,0,1])%第二个参数为给定的初值,第三个参数为遮盖向量,遮盖绕基础坐标系的x,y旋转自由度RobotArm.plot(q,'workspace',[-1 1 -1 1 -1 1])
可以看到目标姿态直观上符合期望姿态,即求解正确。

结束语
对于机械臂,工具包的功能远不止如此,如还可以通过Robotics分析轨迹、速度、动力学等内容。此外工具包对于移动机器人的运动仿真、路径规划、SLAM等内容也有较深的涉猎,推荐Peter Corke的一本书:
Robotics, Vision and Control: Fundamental Algorithms In MATLAB  Second, Completely Revised
参考书籍
Robotics, Vision and Control: Fundamental Algorithms In MATLAB  
Introduction to Robotics: Mechanical and control
------ END ------
 
「 ROS 线下培训 」

到顶部