基于MATLAB Robotics Toolbox 的机器人学仿真实验教学机器人学是一门高度交叉的前沿学科方向, 也是自动化和机电工程等相关专业的一门重要专业基础课。
在机器人学的教学和培训中, 实验内容一直是授课的重点和难点。
实物机器人通常是比较昂贵的设备, 这就决定了在实验教学中不可能运用许多实际的机器人来作为教学和培训的试验设备。
由于操作不方便、体积庞大等原因, 往往也限制了实物机器人在课堂授课时的应用。
此外, 由于计算量、空间结构等问题,当前大多数机器人教材只能以简单的两连杆机械手为例进行讲解,而对于更加实际的 6 连杆机械手通常无法讲解得很清楚。
因此, 各式各样的机器人仿真系统应运而生。
经过反复的比较,我们选择了MATLAB RoboticsToolbox [1] 来进行机器人学的仿真实验教学。
MATLABRobotics Toolbox 是由澳大利亚科学家Peter Corke开发和维护的一套基于MATLAB勺机器人学工具箱,当前最新版本为第8版,可在该工具箱的主页上免费下载提供了机器人学研究(petercorke/robot/) 。
Robotics Toolbox中的许多重要功能函数, 包括机器人运动学、动力学、轨迹规划等。
该工具箱可以对机器人进行图形仿真, 并能分析真实机器人控制时的实验数据结果, 因此非常适宜于机器人学的教学和研究。
本文简要介绍了Robotics Toolbox 在机器人学仿真实验教学中的一些应用, 具体内容包括齐次坐标变换、机器人对象构建、机器人运动学求解以及轨迹规划等。
1坐标变换机器人学中关于运动学和动力学最常用的描述方法是矩阵法, 这种数学描述是以四阶方阵变换三维空间点的齐次坐标为基础的[2] 。
如已知直角坐标系{A} 中的某点坐标,那么该点在另一直角坐标系{B} 中的坐标可通过齐次坐标变换求得。
一般而言齐次变换矩阵是4X4的方阵,具有如下形式: 和分别表示{A}{B} 两坐标系之间的旋转变换和平移变换。
其中矩阵法、齐次变换等概念是机器人学研究中最为重要的数学基础。
由于旋转变换通常会带来大量的正余弦计算, 复合变换带来的多个矩阵相乘就更加难以手工计算, 因此我们建议在仿真教学中通过计算机进行相应的坐标变换计算。
利用MATLABRobotics Toolbox 工具箱中的transl 、rotx 、roty 和rotz 函数可以非常容易的实现用齐次变换矩阵表示平移变换和旋转变换。
例如机器人在X 轴方向平移了0.5 米的齐次坐标变换可以表示为: 2构建机器人对象要用计算机对机器人运动进行仿真, 首先需要构建相应的机器人对象。
在机器人学的教学中通常把机械手看作是由一系列关节连接起来的连杆构成。
为描述相邻杆件间平移和转动的关系,Denavit和Hartenberg提出了一种为关节链中的每一杆件建立附属坐标系的矩阵方法,通常称为D-H参数法⑶。
D-H参数法是为每个连杆坐标系建立4X4的齐次变换矩阵,表示它与前一杆件坐标系的关系。
在Robotics Toolbox 中, 构建机器人对象主要在于构建各个关节,而构建关节时,会用到LINK函数,其一般形式为:L =LINK([alpha A theta D sigma], CONVENTION)参数CONVENTIO可以取‘ standard '和‘ modified ',其中‘ standard '代表采用标准的D-H 参数[4], ‘modified '代表采用改进的D-H参数⑸。
参数‘ alp ha '代表扭转角,参数'A代表连杆长度,参数‘ theta '代表关节角,参数‘ D代表0代表平偏距,参数‘ sigma'代表关节类型:0代表旋转关节,非动关节。
例如, 通过如下的语句即可构建一个简单的两连杆旋转机器人(图1), 命名为2R:>> L1 = link([0 1 0 0 0],'standard');>> L2 = link([0 1 0 0 0],'standard');>> r = robot({L1 L2},'2R');这样,只需指定相应的D-H参数,我们便可以对任意种类的机械手进行建模。
通过Robotics Toolbox 扩展了的plot 函数还可将创建好的机器人在三维空间中显示出来>> plot(r,[0 0])图 1 两连杆机械手的三维模型除了用户自己构建机器人连杆外,Robotics Toolbox 也自带了一些常见的机器人对象, 如教学中最为常见的puma560,standford 等。
通过如下的语句即可调用工具箱已构建好的puma560机器人,并显示在三维空间中(图2):>> puma560;>> plot(p560,qz)图2puma560型机械手的三维模型注意到机械手的末端附有一个小的右手坐标系, 分别用红、绿、蓝色箭头代表机械手腕关节处的X,Y,Z 轴方向。
并且在XY平面用黑色直线表示整个机械手的垂直投影。
更进一步的, 我们可以通过drivebot 函数来驱使机器人运动, 就像实际在操作机器人一样。
具体驱动方式是为机器人每个自由度生成一个变化范围的滑动条, 以手动的方式来驱动机器人的各个关节, 以达到驱动机器人末端执行器的目的(图3)。
这种方式对于实际的多连杆机械手的运动演示非常有益, 同学们普遍反映对于机械手的关节、变量等概念有了更深入的理解。
图3puma560型机械手的滑动控制框3机器人运动学求解机器人运动学主要是研究关节变量空间和机器人末端执行器位置和姿态之间的关系。
常见的机器人运动学问题可归纳为两类:1)运动学正问题(又称为直接问题): 对一给定的机器人, 已知杆件几何参数和关节角矢量, 求机器人末端执行器相对于参考坐标系的位置和姿态;2)运动学逆问题(又称为解臂形问题): 已知机器人杆件的几何参数, 给定机器人末端执行器相对于参考坐标系的期望位置和姿态(位姿), 机器人能否使其末端执行器达到这个预期的位姿?与第 2 节介绍过的坐标变换的情况类似, 手工进行机器人运动学的求解非常繁琐甚至于无法得到最终的数值结果, 这对于实际机器人的设计非常不利。
因此在仿真实验教学中, 我们希望能通过计算机编程的形式来进行机器人运动学的求解, 把学生从繁琐的数值计算中解脱出来。
下面以教学中最常用的puma560型机器人为例, 演示如何运用Robotics Toolbox 进行正运动学与逆运动学的求解。
如第2节方法,先定义puma560型机器人,注意系统同时还定义了puma560型机器人两个特殊的位姿配置:所有关节变量为0 的qz 状态, 以及表示“ READ”Y 状态的qr 状态。
如我们要求解所有关节变量为0 时的末端机械手状态, 则相应的正运动学可由下述语句求解:得到的即为末端机械手位姿所对应的齐次变换矩阵。
逆运动学问题则是通过一个给定的齐次变换矩阵, 求解对应的关节变量。
例如, 假定机械手需运动到[0, ?Cpi/4, ?Cpi/4, 0,pi/8, 0] 姿态, 则此时末端机械手位姿所对应的齐次变换矩阵为:0 -0.7854 -0.7854 00.3927 0>> T = fkine(p560,q)0.38270.00000.92390.7371-0.00001.0000 -0.0000 -0.1501>> q = [0 -pi/4 -pi/4 0 pi/8 0]-0.9239 -0.00000.3827 -0.32560 0 01.0000现在假定已知上述的齐次变换矩阵T, 则可以通过ikine 函数求解对应的关节转角:>> qi=ikine(p560,T)qi=-0.0000 -0.7854 -0.7854 -0.00000.3927 0.0000发现与原始的关节转角数值相同。
值得指出的是, 这样的逆运动学求解在手工计算中几乎是无法完成的。
4轨迹规划机器人轨迹规划的任务就是根据机器人手臂要完成的一定任务,例如要求机械手从一点运动到另一点或沿一条连续轨迹运动, 来设计机器人各关节的运动函数。
目前进行轨迹规划的方案主要有两种: 基于关节空间方案和基于直角坐标方案。
出于实际运用考虑,在教学中以讲解关节空间求解为主, 本文也只演示关节空间的求解方案。
假设puma560型机器人要在 2 秒内从初始状态qz(所有关节转角为0)平稳地运动到朝上的“R EAD”Y 状态qr, 则在关节空间进行轨迹规划的过程如下:首先创建一个运动时间向量,假定采样时间为56毫秒, 则有:>> t=[0:.056:2]';在关节空间中插值可以得到>> [q, qd,qdd] = jtraj(qz,qr,t);q是一个矩阵,其中每行代表一个时间采样点上各关节的转动角度,qd和qdd分别是对应的关节速度向量以及关节加速度向量。
jtraj 函数采用的是7次多项式插值,默认的初始和终止速度为0。
对于上面的运动轨迹, 主要的运动发生在第 2 个及第 3个关节,通过MATLAB^准的绘图函数可以清楚的看到这两个关节随时间的变化过程(图4)。
我们还可以通过Robotics Toolbox扩展了的plot 函数以三维动画的形式图4由jtraj 函数生成的关节轨迹演示整个运动过程(文中无法演示), 调用语句为:>> plot(p560,q);5结语本文简要介绍了MATLABRobotics Toolbox 在机器人学实验教学中的应用。
该工具箱提供了机器人学中关于建模与仿真的许多重要的函数,能够用一种规范的形式(标准的或改进的DH参数法)对任意的连杆机器人进行描述, 并提供了三维图像/ 动画演示及手动关节变量调节等功能。
基于MATLABRobotics Toolbox 的仿真实验教学, 把学生从繁琐的数值计算中解脱出来, 能够专注于机器人学本身的重要概念的理解与应用, 获得了良好的教学效果。
鉴于学生的接受能力, 在给本科生授课时主要练习了坐标变换、机器人对象构建、正运动学、逆运动学求解和轨迹规划等方面的内容。
事实上,Robotics Toolbox 是一个功能非常强大的工具箱, 还可以对机器人动力学、基于simulink 的机器人动态仿真等许多其他机器人学的相关内容进行仿真与分析,这些功能可以在给研究生授课或机器人学相关科学研究中得到充分的应用。
更多的关于Robotics Toolbox 的使用说明可以参见工具箱文件夹中的用户说明文档(robot.pdf) 。