Robotics工具包是由Peter Croke团队开发的一款基于Matlab平台的机器人运算、仿真的强大工具。2017年6月工具包的v10发布,新版的工具包功能更为强大,且支持更为简便的.mltbx格式安装。工具包更为详细的介绍以及下载、安装可以查看Peter Croke个人网站。本节的内容主要介绍利用工具包求解机器人的正、逆运动学。

  • 工具包快速入门

双击robot-10.1.mltbx后工具包会自动安装并配置相关路径,进入Matlab界面后输入:

rtbdemo

出现demo菜单

点击demo菜单的具体内容,工具包会在线按步演示实现过程,非常利于快速入门,同时通过菜单可以看出工具包的主要功能。

  • 机器人描述

工具包里内建了一些经典的机械臂,如Puma560、斯坦福机械臂等。研究该类机器人可以直接调用实现仿真、运动学、动力学等内容。如下所示:

mdl_stanford  %创建斯坦福机械臂,对象名称为stanf
stanf         %查看机械臂的相关信息,包括构型、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

  • 逆运动学

六轴串联型机械臂一定是可解的,对于有球腕机构六轴机械臂都可以求得其封闭解,而对于其它结构的机器人可以求解数值解。机械臂逆解可能并不唯一,即存在有限组关节值可以到达同样的目标姿态,在使用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