机器人虚拟仿真及控制技术研究
2021-03-18
来源:欧得旅游网
计算机工程与设计ComputerEngineering andDesign 2010,31(20)4455 ·仿真技术· 机器人虚拟仿真及控制技术研究 陈 伟 , 陈一民 , 汪 地 , 陈 明 (1.上海大学计算机工程与科学学院,上海200072;2.上海大学机械与自动化学院,上海200072) 摘要:为了实现对实体机器人逼真的模拟和准确的反馈,设计了一套具有一定通用性的机器人虚拟仿真系统,并在系统 中对虚拟物体采用分类策略成功地将AABB与swIFT++算法相结合,兼顾了仿真系统对碰撞检测算法的实时性与准确性的 要求,有效地解决了效率与正确性之间的矛盾 在算法预处理阶段对非凸物体采用表面凸分解的方法,使碰撞检测算法具 有处理非凸物体的能力。实验结果表明,该系统同样适用于服务型机器人,具有一定的通用性,碰撞检测算法比单独使用 swIFT++算法具有更快速的优点。 关键词:机器人仿真;AABB;SWIFT++;表面凸分解;碰撞检测 中图法分类号:TP391.41 文献标识码:A 文章编号:1000—7024(2olo)20.4455—04 Research on virtual simulation and control of robot CHEN Wei ,CHEN Yi—min ,WANG Di ,CHEN Ming (1.School of Computer Engineering and Science,Shanghai University,Shanghai 200072,China; 2.School ofMechatronics Engineering and Automation,Shanghai Universiy,Shanghait 200072,China) Abstract:In order to realize the vivid simulation and the accurate feedback of the entity robot,a set of robot simulation system is designed,which is of generality.It uses classiifcation strategy for virtual objects to combine the AABB algorithm with the swIFT++ algorithm.Therefore,it meets the requirements of real—time and accurate toward collision detection algorithm in the simulation system and solves the paradox between eficifency and accuracy.In the stage ofalgorithm pretreatment,the surface convex decomposition method is taken SO that the collision detection algorihm tis able to deal with the non—convex objects.The experiments show that the system can be applied in service robot and it is of generaliy.The coltlision detection algorithm is more eficifent than those which only use SWIFT++ algorithm. Key words:robot simulation;AABB;SWIFT++;surface convex decomposition;collision detection 0引 言 传统的机器人研发面临着不能有效验证设计的合理性、 无法避免设计失误给机器人研发工作带来的影响,将虚拟技 术与仿真技术相结合的虚拟仿真技术能够给机器人的研发工 作提供可视化效果。虚拟仿真技术具有成本低、效率高和灵 使用VC++与OpenGL相结合的技术研究了虚拟仿真技术在 机器人仿真中的应用 。唐安慧等主要探索构建三维仿真平 台的总体框架,并对平台所涉及的各项关键技术进行了研究“ 。 赵小川等通过使用Webots完成了仿真六足机器人的仿真造 型,并通过仿真实验验证了仿生六足机器人机构的合理性和 运动的灵活性 。文献[6】提出了一种使用模糊逻辑的足球机 活性好等特点,应用范围很广,相关研究较多,如上海大学对 N自由度机器人进行了数学建模和仿真研究,借助Matlab和 Simulink的计算和绘图能力实现了N自由度机器人的运动仿 真“ 。哈尔滨工程大学提出了通过虚拟样机进行远程控制的 康复机器人系统方案,通过在Matlab环境下实现虚拟仿真,达 到可视化效果 。文献[1—2]都是基于Matlab开发平台的,其可 扩展性和通用性不是很好,且其显示效果不佳。张晨旭通过 器人传球策略的实现,通过使用虚拟仿真技术实现了对所设 计的系统的评估。其中文献n一2】都是基于Matlab开发平台的, 其可扩展性和通用性不是很好,且其显示效果不佳。文献【3—6] 未对适合机器人仿真的碰撞检测问题作深入研究,而碰撞检 测是虚拟现实系统中的研究难点。其主要的任务是判断物体 模型之间、模型与场景之间是否发生了碰撞,以及给出碰撞位 置、穿刺深度等信息。效果逼真、快速检测是这类算法的目 收稿日期:2009—12—07;修订日期:2010-03—10。 基金项目:国家863高技术研究发展计划基金项目(2007AA01Z319);国家科技支撑计划课题基金项目(2o06BAKl3BlO):上海重点学科建设基 金项目050103)。 作者简介:陈伟(】985--),男,江西南昌人,硕士研究生,研究方向为多媒体技术 陈一民(1961~),男,上海人,博士,教授,博士生导 师,研究方向为计算机控制、增强现实技术、网络与多媒体技术; 汪地(1968--),男,浙江宁波人,博士,研究方向为机器人、网络与多媒体 技术; 陈明(1978一),男,江苏泰州人,博士研究生,研究方向为多媒体技术。E.mail: ̄chen24@yahoo.cn 4456 2010,3 1(20) 计算机工程与设计Computer Engineering and Design 标。朱元峰等提出了基于球状包围盒结构和有向包围盒的复 合层次包围盒的碰撞检测算法,其算法能较为有效地应用于 复杂场景的实时碰撞检测 。唐勇等利用帧与帧之间具有很 强关联性的特点,对基于轴向包围盒的碰撞检测算法进行了 优化,并使用基于压缩存储的方法改善了AABB包围盒紧密 性差、占用大量存储空间的问题 。文献[9]研究了一种新的分 层结构并且能快速组织结构的实时碰撞检测算法,并在基于 超二次虚拟物体建模的虚拟环境中实现了触觉交互。文献 [10】通过使用连通域剔除的方法实现了与可变形模型连续的 碰撞检测交互。碰撞检测也是研究的热点,本文根据机器人 仿真中对碰撞检测实时性与准确性的要求,在AABB与 swIFT++两类算法预处理及两者结合方面做了深入的研究工 作,较好地解决了机器人碰撞检测效率与正确性之间的矛盾, 另外,我们提出的算法具有处理非凸物体的能力。 1机器人仿真系统 机器人仿真系统包括机器人建模、虚拟场景的显示与交 互、机器人控制以及碰撞检测等。其中机器人建模又可以分 为几何建模和运动学建模两部分。 1.1机器人几何建模 几何建模是指用来描述对象内部固有的几何性质的抽象 模型,所表示的内容包括对象的三维造型(多边形、三角形和顶 点)与外观(纹理、表面反射系数、颜色等),主要有这样几类方法: (1)利用计算机底层函数,编写大量代码从基本几何形体 开始逐步构建机器人外形; (2)使用VRML这种工业标准的虚拟现实描述语言,描述 虚拟机器人,构建虚拟场景: (3)利用软件自带的简单三维几何模型组合成复杂的机器 人外形; (4)利用专业建模软件如UG、Solidworks、3dsmax对机器人 进行建模,并导出系统所需要的文件格式。通过比较发现最 后一种方法具有可视性、造型精确、易掌握等优点,有利于实 现仿真系统的通用性。 本文使用solidworks对机器人的每个部分进行单独的建 模,再统一装配,如图1所示。这个过程包括:测量实际机器 人的各个参数(包括本身的尺寸,各个关节的关节角等),建立 虚拟机器人与实际机器人之间的一个映射关系,最后将模型 统一输出为VRML格式。 1.2机器人运动学建模 机器人的运动学分析是对杆件、传感器等机器人的各个 部件和作业环境内的对象等设置坐标系并分析这些坐标系之 间的位置和姿态的关系。杆件坐标系的选择有多种方法,但 最常用是Denavit-Hartenberg方法(简称D—H法)。假设用公式 (1)确定坐标系i在坐标系i-1中的位置和姿态 ; :? ~,, ) (z , ) a ,aJ (1) 则可以递推完成各个连杆坐标系的变换,得到 2 = 誓 1= 【 … 』 图1主要部件装配 使用公式(2),对每个连杆按照D.H法来进行建模,便可 以得到从底座到末端执行器间任意连杆的变换式。 由于我们使用solidworks进行建模、装配,OpenInventor对 机器人进行虚拟仿真,各个部件导入Open Inventor之后具有 装配关系即已经有相对原点的位置和姿态,根据本文机器人 特点,参考公式(2)。我们使用的建模方法如图2所示。 图2部分关节坐标系 对各个关节求出相对于原点坐标系的变换矩阵,得到公 式(3) Part-g一1:TI=Rot(Z,01) Part-g一2:Tz=T。: Rot(V, ) T Part—g一3:T3=T2 TRot(Y, ) T Part.g一4:L=I"3 Rot(Y, ) (3) Part—g.5:T =T OTRot(Y, ) T Part.g一6:T6:T5: Rot(Y, l6)3 式中: 卜坐标系B在坐标系A中的表示。 部分丝杆及螺母变换矩阵 Part—s-1:T =Tl;TRot(V, ) Patr-m一1:1lml=T2: Rot(Y, I):T 式中:∞=f( ),崩=g( ),f(x),g(x)均为关于x的非线性函数。 1.3虚拟场景的显示与人机交互的实现 虚拟场景的显示与人机交互主要利用专业的具有图形显 示功能仿真软件OpenInventor来实现。使用专业的仿真工具 可以缩短研发的时间,提高效率,能够得到准确、逼真的仿真 画面 OpenInventor具有很强的图形显示能力,并且是平台无 关的,可以方便的移植到不同操作系统的硬件平台上。本文 结合机器人的几何建模和运动学建模,以VRML作为模型数 据载体,以OpenInventor作为仿真平台,对虚拟机器人模型构 建的场景图主要如图3所示。 在场景图中以树的形式组织各类节点,其中最上层的为 根节点,负责输出场景以及作为遍历的起点。根节点以下主 要为两类节点,分别是模型节点和变换节点。模型节点作为 存储模型部件数据的载体,使用solidworks装配好并导出的各 陈伟,陈一民,汪地,等:机器人虚拟仿真及控制技术研究 2010,3 l(20)4457 图3虚拟机器人主要场景 模型数据分别存储在各模型节点中。变换节点存储对相应模 面。如果两多面体上最近的特征对与两曲面上最近的点集一 型部件进行操作的变换矩阵,在虚拟场景的初始化显示中这 致,点集所在曲面的法线具有共线的特性,可以用变量表示, 里存储的是使用运动学建模得到的各个模型文件的变换矩阵。 其中F ,F ,G ,Gv为对应的偏导数,如式(4)所示 按照从上至下,从坐至右的原则对树状图进行遍历,读取变换 F-- ,t,U,v, -)=(F(s,t)-G(u,v)) ] 节点和模型节点,并通过向Open Inventor场景图中添加响应 F。2 ,t,“,v,。c1):Ⅱ。(G ( ,v)xG (“,v))【 事件实时更新场景图各节点的变换矩阵实现对虚拟机器人的 F2 ( ,t,“,v,嘞):( ,t) ̄Ft(s,f)) I (4) 显示与控制。以图3中part—g.2、part—m.1、part.m一2为例,这3个 z ,t,“,v,6cz)= 2(G ( ,v)×G (“,v)) J 模型属于机器人的某一个部件,具有相同的运动特性,又由于 可得最近的点满足等式(5),解为具有4个未知数的等式, 他们具有相对运动,因而在组织场景图结构时需要为其分配 其中·为点积。 统一的父节点和变换节点,还需要为part—m一1和part-m.2分别 ,t, ,v)=( ,,)一G(u, )· (“,v)=0 1 分配一个变换节点。 ( ,t,“,v)=C ,f)一G( ,v))· (“,v)=0 l (5) 2仿真系统中的碰撞检测 n3(s,t,U, =(只 ,f)一G ,v))‘ ,t):0 I 1-1, ,t, , =( ,f)一G( ,v))· ,f)=0 J AABB有一个最显著的特点便是AABB间的相交测试非 代数曲面最近特征对使用公式(6)求解,其中,假设两代数 常的简单快速,符合机器人仿真系统中对碰撞检测的实时性 曲面分别为: =0, ∥ =O。 要求,但是AABB包围盒的紧密性较差,可能会导致大量冗余 f(x. ,'z。):0 的包围相交测试,并且AABB包围盒的碰撞检测算法的精度 g z ,z2):0 不高,所以单独的AABB算法不能满足机器人仿真系统的要 求。SwIFT++算法是Ehmann等通过使用凸包包围盒对以Lin. Canny… 算法为基础的SWIFT算法进行扩展而提出的,SWIFT 具有高鲁棒性、精度高等特点,另一方面swIFT++解决了 SWIFT不能处理非凸体的问题。因此本文按照两物体是否运 =啦 动、是否同一底座这一分类策略将不同的虚拟物体进行分类 ] 以选择合适的碰撞算法,充分发挥两类算法的优点,解决仿真 在得到最近特征对后将多面体相交情况分为切线相交及 系统对碰撞检测的实时性和准确性的要求,并且在预处理阶 边界相交,对于参数曲面的切线相交的情况由方程(7)有无根 段对物体进行表面凸分解使算法具有对非凸物体处理的能力。 来确定。 2.1算法分析 F(s,力=6(u, 1 sWIFT++采用Lin—Canny算法的计算最近特征对的方法 ( ,f)× ,f))· (“,v)=0} (7) 检测曲面物体的碰撞,其中假设:F(u,v)= ,f),r(s,,),Z(s,f), ,f)× ,f))· (“,v)=0, W(s,力)和G(u,v):( “,v),y(“, ,2(u,v), “,v))表示两个参数曲 代数曲面的切线相交 4458 2010,31(20) 计算机工程与设计Computer Engineering and Design 2.3相交测试 2-3.1 测试预处理 相关的分类原则是两物体是否运动、两物体是否同一底 座。按照这一原则进行分类是因为我们在对机器人的仿真系 统进行碰撞检测实验时发现两个具有同一底座且运动的物体 对于边界相交,假设做为相交参考的曲面为贝齐尔曲面, 之间的碰撞比较频繁,对精度的要求也比较高,这一类的碰撞 定义 ,t)E[o,1]x[o,1】,则只需要计算下面的方程(9)。 F(s,f)=G(u,v) 其它可能的边界相交可用类似的方法解决。 (9) 检测可以选用SwIFT++算法;两个具有不同底座且运动或者 是一个运动一个固定的物体之间经常处于没有碰到的状态, 对这一类问题选用_AABB和swIFT++相结合的方法可以提高 碰撞检测的速度并兼顾检测的精度。 2.3.2测试步骤 2.2算法实现 算法实现分为算法预处理和相交检测两部分。算法预处 理阶段进行的工作如下: (1)对仿真系统中的虚拟物体以及机器人各个部件进行表 对二叉树的遍历我们采用广度优先的策略,详细的步骤 如下:①从两物体二叉树的根节点开始遍历,将根节点设为当 前节点。②以AABB算法判定两当前节点对应的凸块的AABB 面凸分解,并对得到的凸片集合中的每个凸片构建凸块; (2)对凸块集合构建层次二叉树; (3)对每个凸块构建AABB包围盒。 2.2.1表面凸分解 基于表面的凸分解实际上是把非凸物体的表面分解成一 个个的凸面片的集合,如用s表示物体的表面,Si表示凸面片, 则基于表面的凸分解可用公式0o)表示 =包围盒是否相交,如果不相交就递归返回直到为根节点,则递 归结束。如果相交就调用SwIFT++算法作进一步的判定,若 不相交则递归返回直到根节点,若相交则返回检测结果。 AABB碰撞检测需要取得AABB包围盒的X、Y、z的最大值和 最小值,在进行检测时需要分别比较这6个值,并对比较结果 进行分类,只有在3个坐标轴上均符合图4情况的才认为 AABB相交。 US,,Sin母= J (10) 式中:f 。 我们采用了Ehmann“ 提出的一种针对用多面体表示物体 的凸表面分解的方法。这种方法要求分解后的结果要满足一 定的约束条件,可用公式(11)表示 Sf'V(s3=盛 式中:/ ,卜 的凸块。 (11) Arain B ain rA max Bmax r Amin Brain Brain B min A ain rAmin Bmax Bmax Amax Amax Amax Bmax 图4 AABB相交判定 该算法的分解步骤如下: 3实验结果 实验是在CPU2.53GHz,2GB内存PC机上进行的。测试 的场景是一个六自由度小型工业机器人的虚拟仿真及控制。 (1)在待分解面中选择一多边形面片作为种子面构成当前 连通凸面片; (2)以种子面为起点,通过深度优先或广度优先算法递归 搜索物体待分解面的对偶图,重复直到待分解面中的每一个 多边形都进行了处理; 在测试碰撞检测时,为增加场景的复杂度,本文在场景中再添 加了一个可操作的5自由度虚拟机器人,并且与单独使用 swIFT++算法时作了比较,如图5所示。 (3)对所有的凸片求凸包得到与其相应的凸块。 2.2_2构建层次二叉树和AABB包围盒 表面凸分解是将产生的无序凸块组织成二叉树的形式而 在空间排列上有序。有自顶向下和自底向上两种方法。两方 法最根本的区别是看把一个集合划分成若干个不相交的子集 还是把若干个集合归并为一个父集。相对而言,自顶向下的 方法在碰撞检测中使用得较多,技术更成熟一些,也比自底向 上的方法更为健壮更易实现,故本文采用这一方法构造层次 二叉树。具体步骤如下: (1)对得到的所有凸块集合求其凸包,创建根节点; (2)将凸块集合划分为不相交的两组子集,并求其凸包,分 别创建节点; 图5小型工业机器人仿真场景 在对模型进行预处理阶段,部分模型生成的包围盒如图6 所示。本文对碰撞检测采用对一定面片数的平均碰撞检测时 间来测量检测的效果,采用多次测试取平均值的办法对相同的 面片数测量10次,去掉最大值最小值,再取平均值作为该面片 (3)将新得到的两个节点做为根节点的子节点; (4)类似地分别对两个子节点中的凸块集合进行划分,求 数的碰撞检测时间。随着面片数的增加,本文算法和单独使用 SwIFT_H算法的平均碰撞检测时间的变化如图7所示。 (下转第4496页) 凸包,构建更低一级的子节点; (5)重复第4步,直到节点中的凸块集合只剩一个凸块为止。 4496 2010,31(20) 计算机工程与设计Computer Engineering and Design (上接第4458页) 与单独使用SWIFT++算法的系统比较,本系统所需平均碰撞 检测时间更少。此仿真系统同样适用于服务型机器人。 参考文献 [1】 宋增来,陈振华.N自由度机器人仿真的实现[J]计算机工程与 图6一个模型部件的包围盒 设计,2006,27(24):4813.4816. [2】 张立勋,张今瑜,王志超.基于Matlab的下肢康复机器人虚拟现 实仿真研究[J].机电工程,2008,25(3):7.9. [3】 张晨旭.基于OpenGL的机器人仿真技术研究[J].机械管理开 嚣20 发,2009,24(3):170 171. [4】 唐安慧,张尚弘.三维虚拟仿真研究框架[J】.信息技术,2008,32 o (12):77.81. 200U 4000 6000 8000 i0000 面片数 [5】 赵小川,罗庆生,韩宝玲.基于Webots仿真软件的仿生六足机 ——本文算法 ~单独swIFT++算法 器人机构设计与步态规划[J].系统仿真学报,2009,21(11): 3241—3245,3267. 图7平均碰撞检测时间的变化情况 [6】 Esmaeil Aatashpaz-Gargari,Babak N Araabi,Caro Lucas.Opti— 在通用性实验中,本文成功的将这套仿真系统应用于服 eral fuzzy passing strategy for robot soccer players[C].IEEE In— 务型机器人的仿真,实验显示系统运行良好,仿真、碰撞检测 temational Conference on Fuzzy Systems,2008:1576·1581. 块均正常工作。证明本文所述仿真系统具有一定的通用性。 [7】 朱元峰,孟军,谢光华,马文娟.基于复合层次包围盒的实时碰撞 服务型机器人的运行界面如图8所示。 检测研究[J】.系统仿真学报,2008,20(2):372—377. [8] 唐勇,冯立颖,吕梦雅.基于轴向包围盒碰撞检测算法的改进【J]. 系统仿真学报,2009,21(1):157.160. 【9】 Konstantinos Moustakas,Dimitrios Tzovaras,Michael Gerassi— mos Strintzis.SQ—Map:Efifcient layered collision detection and haptic rendering[J].IEEE Transactions on Visualization and Computer Graphics,2007,13(1):80—93. [10】MiII Tang,Sean Curtis,Sung—Eui Yoon,et a1.ICCD:Interactive continuous collision detection between deformable models using 图8服务型机器人仿真场景 connecitvity-based cullin[J].IEEE Trnasactions on Visualization and Computer Graphics,2009,1 5(4):544—557. 4结束语 【1 1】Sud A,Govindaraju N,Gayle R,et a1.Interactive 3D distance ifeld 本文提出了采用Solidworks进行几何建模,Open Inventor computation using linear factorization【C】.Proc ACM Sympo· 进行虚拟显示与交互,对虚拟物体采用分类策略成功地将 sium on Interactive3D Graphics and Games,2006:117—124. AABB与swIFT++算法相结合,设计了一套拥有结合AABB 【12]Teschner M,Kimmerle S,Heidelberger B,et a1.Collision detec- 与SWIFT++的复合碰撞检测方法的虚拟机器人仿真系统,通 tion for deformable objects[J].Computer Graphics Forum, 过实验验证了机器人几何建模、运动学建模的正确性。另外, 2005.19(1):61-81.