六自由度机械臂轨迹规划与仿真研究(北京工业大学电子信息与控制工程学院)2010年6月30日六自由度机械臂轨迹规划与仿真研究孙亮,马江,阮晓钢(北京工业大学电子信息与控制工程学院,北京100124)摘要:针对六自由度链式机械臂在进行正运动学、逆运动学以及轨迹规划仿真时,不易直观地验证运动学算法的正确性和轨迹规划的效果,在正确建立机械臂数学模型的基础上,重点分析了机械臂在关节空间中轨迹规划的两种实现方法,并采用三雏运动仿真进行了验证。开发了一套六自由度机械臂三雏仿真软件,该仿真软件在vc++60开发平台上,首先利用分割类将基于NIFC框架的窗口分割成为控制霄口和视图窗口两部分,然后利用OpenCI的图形厍对机械臂进行建模,首次将正运动学、逆运动学以及轨迹规划算法融入其中开发而成一该仿真软件有效地验证了机械臂运动学模型建立的正确性,同时也对三次多项式和五次多项式两种轨迹规划方法做了直观的比较,结果表明后一种轨迹规划效果明显优于前一种。关键词:机械臂;运动学分析;轨迹规划;运动仿真中图分类号:TP241:TP391文献标识码:A1引言六自由度链式(6R)机械臂的轨迹规划既可以在关节空间,也可以在直角坐标空间中进行。由于在关节空闻中进行轨迹规划是直接用运动时的受控变量规刘轨迹,有着计算量小,容易实时控制,而且不会发生机构奇异性ji等优点,所以经常被采用。但是这种方法难以确定各杆和末端抓持器位置,所以开发一套能够直观地监视机械臂各个部分运动的三维仿真软件变得极为重要。文献[2]在平台下开发了Robotics工具箱,能够通过函数实现对机器臂进行正、逆运动学以及轨迹规划分析,实现了简单的运动学仿真。文献[3]基于OpenCL图形库开发了一套机械臂仿真系统,实现了机械臂的正、逆运动学仿真。文献[4]利用文献[3]的方法,且通过定时器,不断刷新视图,达到了动画的效果,但是并没有提供具体的轨迹规划算法。本文首次将轨迹规划算法融人开发的六自由度机械臂三维仿真软件中,有效直观地验证了两种插值函数轨迹规划的效果。2运动学分析机械臂坐标系,如图l所示。6R机器臂是具有6个关节的空间机构,为描述末端执行器在空间的位置和姿态,可以在每个关节上建立一个坐标系,利用坐标系之间的关系来描述末端执行器的位置。1)运动学正解正运动学的求解过程是根据已知关节变量θ1,θ2,θ3,θ4,θ5,θ6,求末端抓持器相对于参考坐坐标系的位姿的过程。使用标准的上关节D-H法,将参考坐标系设在6R机械臂的基座上,从基座开始变换到第一关节,然后到第二关节,最后变化到来端抓持器。6R机器臂的基座和手之间的总变换为式中,A0为基座坐标系到坐标系0(关节一)之间的变换矩阵;A1为坐标系0到坐标系1之间的变换矩阵;AH为坐标系5到坐标系日之间的变换矩阵;S12=sin(θ1+θ2);Cl2=cos(θ1+θ2);S123=sin(θ1+θ2+θ3)。可以制作关节和连杆参数的表格,见表1。2)运动学逆解逆运动学的求解过程是根据已知的末端抓持器相对于参考坐标系的位姿,求关节变量θ1,θ2,θ3,θ4,θ5,θ6的过程,它是机器人运动规划和轨迹控制的基础,也是运动学最重要的部分。先给出机器人的期望位姿表达式:式(2)为式(1)另一表达形式,向量n,o,a分别表示法线、指向和接近向量;p向量为末端抓持器坐标系原点相对于基座坐标系的位置向量。通常,p可以根据工件位置给出,而n,0,a这三个向量可以通过RPY(滚动角φn,俯仰角φ0和偏航角φa)旋转给出。由式(3)表示:对于式(1)育许多角度的耦合,如S123,为了求出单个角度的正切从而算出角度,首先要对其解耦,可以通过式(1)中R矩阵左乘An-1矩阵,使得方程右边不包含这个角度。为了计算简便将关节一和关节二以及关节五和关节六合在一起,其结构,如图2所示。那么6R机器臂的基座和手之间的总变换为将上式左乘A0-1然后再右乘A-1依次左乘A1-1,A2-1,A3-1,A4-1,A5-1得到不同的等式从而得出各个关节转角的值,得:根据式(6)求解的关节转角,可知6R机械臂在相同的位姿下可能存在23种关节转角组合。这就需要根据机器人的实际机构选取一种最优的解(如功率最省、行程最短、受力最好、回避障碍)这里在仿真软件算法中选择功率最省的标准。也就是说6R机械臂末端抓持器从初始位姿到下一个路径点位姿各旋转关节角变化量的平方和最小的那组解:如下:其中,θijT中的:(i=1,2,…,6)表示初始位姿的6个旋转关节角,j(j=1,2,…,8)表示1个旋转关节角的8种可能。θijT表示在起始位姿下关节转角i的第j个特解:同理θijs表示在下一个路径点位姿下关节转角i的第j个特解。上面是对于一个路径点角度逆解的推导过程,至于多路径点的情况中的角度信息,每个逐一通过式(6)和式(7)来表示。3轨迹规划为了求得在关节空间的轨迹,首先利用逆运动学方程将路径点转换成关节角度值,然后分别对每一个关节变量映射成一个光滑时间函数,使之从起始点开始,依次通过所有路径点,最后达到目标点。每个关节时间函数之间是相互独立的,但是总的运动时间是相同的。本文光滑时间函数采用三次多项式以及五次多项式函数。1)三次多项插值三次多项式及其一阶导数函数,共有4个待定系数,同时对起始点和目标点的角度和角加速度给出约束条件,列出4个方程如下:当t0=O,解得系数为当θ(0)=O,θ(ij)=O时,得到特解如下:2)五次多项插值五次多项式及其一阶、二阶导数函数,共有6个待定系数,同时对起始点和目标点的角度、角速度和角加速度给出约束条件,列出6个方程如下:当t0=0,解得系数如下:4仿真系统和实验仿真系统采用MFC框架类和OpenGL的图形库进行开发。VIFC是微软提供的基础类库,是一套面向对象的函数库,以类的方式提供给用户使用,利用这些类可以有效地帮助用户完成基于Windows的应用程序开发。OpenCL是在SGI等多家著名的计算机公司的倡导下,以SCI的CL三维图形库为基础制定的一个通用共享的开放式三维图形标准。它是一种与硬件、窗口系统和操作系统相独立的一系列APT。由于OpenGL具有编程建模、容易实现高度清晰感的实时三维仿真等优点,它逐渐被广泛应用于机器臂的设计和运动仿真中~1)仿真系统开发过程①利用MFCAppWizrd建市一个单文档应用程序②在资源管理器中插入控制面板对话框,建立一个基于CFormVieW类在CMainFrame类的定义中声明一个CSpltterW类的对象mwndSpitter,完成CMainFrame类的OnCrealeclient事件处理程序。③在控制面板对话框内的每个控件编写事件处理函数,包括按钮、静态编辑框和滚动条等,完成与视窗类的数据交换。④在视窗类CFormVieW中添加图形绘制程序。a)首先设置像素格式并创建Opengl绘制描述表,在CArmView类中添加WM_CliEATE消息,然后编写OnCreate事件处理程序。b)然后在类CArmView的成员函数OnDraw中,添加6R机械臂绘制程序,包括机械臂的建模、材质、光源位置、背景色、视角程序等c)然后在CArmView类中添加键盘WMKEYDOWN淌息,然后编写On—KeyDown事件处理程序。⑤加入正运动学算法、逆运动学算法,以及运动轨迹规划算法。⑥在CArmView类中添加定时器WM_TIMER消息,然后编写OnTimer事件处理程序。使用SetTimer函数设置定时器的序号和记时周期。这样可以生成动而,为了避免显示动画时闪动,采用双缓存,通过SwapBuffers函数来实现。6R机械臂仿真软件包括1、正运学仿真、逆运动学仿真、抓小球仿真和系统设置四部分,如图3所示。2)仿真试验按照结构图1的比例,编程建模时取L1=82.L2=7.0,L3=50,L4=30,L5=20,这里L1可以用OpenCL提供的画圆柱函数gluCylinder(obj,3.0f,3.0f,,8.200f,100,实现,其中,obj表示材质,30f表示杆2个截面的半径,8.200表示杆长。单位是Winclows窗口定义的像素。其他杆,同理画出,如图4所示.图中X,y,Z对应的编辑框表示抓持器的位置,滚动角、俯仰角和偏航角的编辑框表示抓持器的姿态。仿真时起始点和目标点的关节角速度、加速度设为零,而中间点的路径点的关节角速度、加速度以根据末端抓持器在直角坐标空间中的瞬时线速度和角速度以及线加速度和角加速度来确定每个路径点的关节角速度和角加速度,但是该方法工作量太大,故采用适当的启发式方法来确定,取相邻两段轨迹角速度和角加速度的平均值作为中间点的瞬时速度,起始点、中间点、目标点各个关节角速度、角加速度分别见表2,表3。要求机械臂从起始点开始运动,Is后到达中点2s后至0达中间点2,3s时到达终点,利用三次多项式和五次多项式进行每50ms完成一次关节空间插值运算,采用Matlab绘制曲线,篇幅限制这里只给出关节三的角度、角速度、角加速度曲线,如图6所示。对应的6R机械臂三维仿真,如图7所示.心球位置为目标点,各图自左向右,依次为起始点、中间点1、中间点2和目标点。仿真试验时选择单选框三次多项式插值,然后按下go按钮。同样的操作选择单选框五次多项式插值,然后按go按钮,如图8所示。对比这两种多项式插值结果,可以发现,三次多项式的计算量比较小,可以保证关节角、角速度都是连续的,见图6(a)和6(h),满足一般的轨迹规划要求,但是,角加速度不一定能保证连续,见图6(c),所以关节的电机可能会受到一定的冲击;五次多项式的计算量相对来说大一些,但是可以保证各个点的关节角、角速度,角加速度都是连续的。见图6(d),6(e),6(f),从而使电机平稳的运行。5结语本文对6R机械臂进行了运动学分析,重点讨论了在关节空间中对6R机械臂进行运动轨迹规划的两种插值时间函数。在vc++6.0开发平台上,基于MFC和OpenGL开发了一套6R机械臂的仿真软件通过仿真软件有效地验证了机械臂运动学模型建立的正确住,同时首次将轨迹规划算法融人仿真平台,对三次多项式和五次多项式两种轨迹规划方法做了直观的比较,结果表明后一种轨迹规划效果明显优于前一种。在实际工业生产中,机械臂的使用非常频繁,对于未知构型的机械臂如果通过实物来验证其运动学算法的正确性和轨迹规划的效果,必然会造成开发周期变长,导致成本过高,且还可能遇到一些不可预测的问题。通过该仿真软件可解决具体构型机械臂开发和应用中的这些问题。