基于ROS的机器人模型构建方法研究*
2015-11-02曹正万平雪良陈盛龙
曹正万,平雪良,陈盛龙,蒋 毅
(江南大学机械工程学院江苏省食品先进制造装备技术重点实验室,江苏无锡 214122)
基于ROS的机器人模型构建方法研究*
曹正万,平雪良,陈盛龙,蒋 毅
(江南大学机械工程学院江苏省食品先进制造装备技术重点实验室,江苏无锡 214122)
ROS(Robot Operating System)是一个开源机器人操作系统,Rviz是基于ROS环境下的三维可视化模拟工具。通过对机器人操作系统的研究,提出了两种在ROS环境下机器人模型的构建方法,详细介绍编程构建模型与外界模型导入这两种模型构建的基本方法与步奏。通过对比两种模型构建方法来探讨ROS环境下一般机器人模型的建立,对比结果表明,外界模型导入方法利用三维软件建模的优势,可以减少建模时间,提高工作效率,对ROS的应用研究有着重要的意义。
机器人操作系统;模型构建;文件解析
0 引言
开源机器人操作系统ROS(robot operating system)[1],是由Willow Garage公司发布的一款开源机器人操作系统,随着机器人技术的快速发展和复杂化,代码的复用性和模块化需求越来越强烈,而现有的开源系统不能满足要求,ROS应运而生,很快在机器人研究领域展开了学习和使用ROS的热潮[2]。
ROS利用了很多现在已经存在的开源项目的代码,比如从Player[3]项目中借鉴了驱动、运动控制和仿真方面的代码;从Open CV[4]中借鉴了视觉算法方面的代码;从Open RAVE[5]借鉴了规划算法的内容。ROS可以不断的从社区维护中进行升级,包括从其他的软件库、应用补丁中升级ROS的源代码。
ROS可以最大程度的适合使用者对其进行开发及应用,文章将研究关于ROS环境中机器人模型的构建方法,详细介绍模型编程及模型导入方法、具体过程和技术要点并给出模型导入的简单实例。
1 ROS环境描述
1.1 ROS环境
ROS是开源的,是用于机器人的一种开源机器人操作系统,或者说次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和数据库用于获取、建立、编写和运行多机整合的程序[6]。
ROS的首要设计目标是在机器人研发领域提高代码复用率。ROS以节点为基本单元,采用分布式处理框架,这使可执行文件能被单独设计,并且在运行时松散藕合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统,使得协作亦能被分发。这种从文件系统级别到社区级别的设计功能让独立决定发展和实施工作成为可能。上述所有功能都能由ROS的基础工具实现。
1.2 ROS主要特点
ROS的运行架构是一种使用ROS通信模块实现模块之间点对点的松藕合[7]的网络连接处理架构,它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储。但是ROS本身并没有实时性。
此外,ROS提供多语言支持,在写代码的时候,诸多编程者会比较偏向某一些编程语言。为了方便更多的使用者,ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现。
1.3 Rviz基本描述
Rviz是ROS中的三维可视化工具,简而言之:Rviz是一个显示机器人实体的工具,本身不具有模拟的功能,需要安装一个模拟器arbotix,通过arbotix可以对机器人模型实现基本的仿真功能[8]。ROS作为一个平台工具,将arbotix的仿真通过Rviz可视化工具展示在用户面前,Rviz采用矩阵变换系统来实现不同坐标系下的数据变换,一种为固定坐标系:用于表示世界的参考坐标系。通常为了得到正确的结果,固定坐标系不能相对世界移动。另外一种则为目标坐标系:通常是相对于摄像机视角的参考坐标系。例如,若目标坐标系为地图,可以看到机器人沿着地图移动。如果目标坐标系是机器人基座,那么机器人将固定在某一位置,而其它物体相对于机器人移动。
2 模型的建立与导入
2.1 URDF文件介绍
URDF(Unified Robot Description Format)[9]是ROS系统专门用来统一描述机器人仿真模型的语言,该语言是基于XML的,可存储模型的形状、尺寸、颜色等基本属性,还包含机器人的运动学动力学信息,支持模型的干涉碰撞检查[10]等。其实就是为了能够抽象描述一个机器人的硬件,阅读起来非常容易。
2.1.1 URDF语法
在URDF中编辑文件需要一定的语法,基本的编程语法如表1所示,包含本体、关节、节点的定义以及节点间各关节的母子关系。用<link>描述各个部件,<joint>描述各个关节。用<parent>和<child>描述关节连接的部件。只要描述了link和joint之间的关系,就能很容易构建机器人的框架。
表1 URDF基本指令
2.1.2 URDF文件校验
对于构建的树形机器人模型,可以通过简单的命令工具来分析所创建的结构是否存在语法错误等。不同Ubuntu版本之间的语法略有区别,校验语法详见表2。
表2 URDF校验语法
2.2 编程创立URDF文件
在ROS下创建URDF文件首先需要通过编程建立URDF文件,然后对创立的文件进行解析并判断语法是否正确,创立文件夹来存储所建立的文件。启动编辑器,运行代码对解析的文件进行判断,如果成功则可以进行下一步工作,失败则返回重新解析,具体流程图如图1所示。
图1 ROS下URDF文件创立流程图
2.3 外界三维模型导入
由于Rviz不可以识别一般的三维软件格式,因此需要对所建立的模型进行相应的转换。将三维软件所建立的模型转换为一种可被Rviz识别的文件-URDF型文件。本文中的模型建立采用solidworks软件,完成文件的解析则用到相应的URDF插件,来完成文件的转换。具体流程图如图2所示。
3 应用案例
3.1 机器人模型的描述
在ROS下对于一般的树形结构机器人模型的描述,通常有本体、关节、节点等组成。本体对应一般的机器人本体,本体与关节之间通过节点关联而成,以此而衍生的模型为一般的机器人模型。
文章以简单的树形结构机器人模型为例,该模型由一个本体、两个并联的关节组成,且其中一个关节通过节点延伸出另一个子关节。通过该机器人模型的URDF文件创建来阐述ROS下机器人模型构建的两种方法。
3.2 编程构建URDF文件
3.2.1 URDF文件创立
根据表1的指令可以构建出结构如图3所示的树形机器人模型,模型构建过程中不需要考虑模型的尺寸大小等。
图3 ROS下树形机器人模型
3.2.2 URDF文件校验
对于构建的树形机器人模型,可以通过表2所示的校验语法来分析所创建的结构是否存在语法错误等。
每条指令对应不同的Ubuntu版本,可以根据相应Ubuntu版本输入对应的指令来检测构建的URDF是否存在语法错误。
如无错误,则可以看到输出结果如下:
3.2.3 添加轮廓尺寸
有了基本的树形结构,就可以添加设当的轮廓尺寸。如图3所示,每个link的坐标系都固定在link的底部,并与joint的坐标系一致。因此添加轮廓需要做的就是指定link到子级joint的偏移量。为实现这一点,需要为每个joints添加<origin>字段。
从图3中的第二个关节可以看出,Joint2相对link1在Y方向上偏移,并在X方向上负偏移。并绕Z轴旋转90°。因此,需要添加以下<origin>元素:
<origin xyz="-2 5 0"rpy="0 0 1.57"/>
重复相同的步奏,可以得到完成URDF文件的轮廓定义。
3.2.4 定义运动学
一旦添加joints的旋转轴,就相当于为robot模型建立了实际上的运动学。需要为每个joint添加<axis>元素。这个指定的轴是在本地坐标上的旋转轴。
Joint2围绕正Y轴旋转,则简单的添加如下的xm l到joint元素内:
<axis xyz="0 1 0"/>
进一步为每个joint添加好相应的元素则可以完成urdf文件的运动学定义。
3.3 三维模型导入法
3.3.1 三维模型构建
本文采用solidworks建立三维模型,通过solidworks to urdf插件完成三维模型的解析。根据图3的树形机器人模型,在solidworks中确立如图4所示的几部分关节及装配图。
图4 三维模型装配图及各关节零件图
3.3.2 三维模型解析
对装配完成的三维软件进行解析并且创建相应的储存文件夹,根据实际的关节自由度设置,分别定义每一个关节及其子关节之间的相对位置、平移等运动需求,其余选项如无特殊要求,则按照默认的选项进行定义,按要求完成URDF文件的解析。
3.3.3 启动配置文件,完成模型导入
将储存好的文件夹放在ROS下的某个文件路径内,启动三维可视化工具Rviz,并正确打开URDF文件存储的绝对路径可以得到如图5所示的界面,最终完成三维模型的导入,后续的运动学定义可以根据实际情况进行相应的改动。
图5 三维模型导入图
3.4 三维模型对比
对两种方法构建的三维模型可以通过ROS自带的graphiz虚拟显示所构建的urdf结构关系:
$urdf_to_graphizmy_robot.urdf
得到PDF文件打开后如图6所示,图6a为编程构建模型的URDF模型结构关系的虚拟展示,图6b为外界模型导入生成的URDF模型结构关系的虚拟展示。
图6 URDF模型的虚拟展示
通过对比两种方法所构建URDF文件的虚拟结构展示可以看出,矩形代表关节部分,椭圆代表节点部分,二者所建立的结构可以达到一致,坐标位置仅与初始姿态有关,可以通过后续姿态校准达到完全一致。
4 结论
对比ROS环境下机器人模型的构建可以发现,系统程序语言的建模更为严谨,在定义机器人的本体、关节、位置关系、轮廓时可以添加外部的驱动力等,然而步骤过于繁琐,一个简单的模型既需耗费大量的时间与精力,适用于要求不高的演示画面或者机械仿真,同时利于初学者的程序语言学习及探索。ROS下机器人模型的导入对机器人的仿真应用有着及其重要的意义,利用了三维软件建模的优势,克服了ROS本身模型建立的局限性:繁琐的程序式建模以及模型的结构分析。通过外界建立的模型进行导入,可以大大减少建模时间,提高工作效率,为随之进行的运动规划及复杂的结构仿真提供高质量的三维模型。模型的建立与导入与ROS的完美结合对进一步的研究有着重要的意义。
[1]Kerr J,Nickels K.Robot operating systems:Bridging the gap between human and robot[C]//System Theory(SSST),2012 44th Southeastern Symposium on.IEEE,2012:99-104.
[2]张建伟,张立伟,胡颖,等.开源机器人操作系统-ROS[M].北京:科学出版社,2012.
[3]Gerkey B,Vaughan R T,Howard A.The player/stage project:Tools for multi-robot and distributed sensor systems[C]//Proceedings of the 11th internationalconference on advanced robotics 2003,2003:317-323.
[4]Sellami L,Ngo H,Fowler C J,et al.Near-infrared face recognition utilizing open CV software[C]//SPIEDefense+ Security.International Society for Optics and Photonics,2014:90703H-90703H-9.
[5]Diankov R,Kuffner J.Openrave:A planning architecture for autonomous robotics[J].Robotics Institute,Pittsburgh,PA,Tech.Rep.CMU-RI-TR-08-34,2008:79-80.
[6]Brandon Alexander,Kaijen Hsiao,Chad Jenkins,etal.Robot Web Tools[J].Robotics&Automation Magazine,IEEE.2012.vol.19:20-23
[7]Quigley M,Conley K,Gerkey B,et al.ROS:an opensource Robot Operating System[C]//ICRA workshop on open source software.2009,3(3.2):5-6.
[8]Ferenc G,Dimic'Z,Lutovac M,et al.OPEN ARCHITECTURE PLATFORMS FOR THE CONTROL OF ROBOTIC SYSTEMS AND A PROPOSED REFERENCE ARCHITECTURE MODEL[J].Transactions of FAMENA,2013,37(1):89-100.
[9]Makhal A,Raj M,Singh K,et al.Path planning through maze routing for a mobile robot with nonholonomic constraints[C]//Ubiquitous Robots and Ambient Intelligence(URAI),2012 9th International Conference on.IEEE,2012:325-331.
[10]Hoske M T.ROS Industrial aims to open,unify advanced robotic programming[J].Control Engineering,2013,60(2):20-21.
(编辑 赵蓉)
Research of Robot M odel Construction M ethod Based on Robot Operating System
CAO Zheng-wan,PING Xue-liang,CHEN Sheng-long,JIANG Yi
(Jiangsu Province Key Laboratory of Advanced Food Manufacturing Equipment and Technology,School of Mechanical Engineering,Jiangnan University,Wuxi Jiangsu 214122,China)
ROS(RobotOperating System)is an open source robotoperating system,Rviz is a three-dimensional visualization tool based on the ROS environment,Through the study of the robot operating system,proposed two method of building robotmodel in ROS environment,detailing basic method and step-out of the programming model building and externalmodel importing.By comparing the two method of building robotmodelways to explore the establishment of general robotmodel base on the ROS environment,the comparative results indicate that the externalmodel importmethod to take advantage of three-dimensional softwaremodeling can reducemodeling time,improvework efficiency,applied research on ROS has significant.
robot operating system;model construction;file parsing
TH166;TG659
A
1001-2265(2015)08-0051-04 DOI:10.13462/j.cnki.mmtamt.2015.08.013
2014-10-20;
2014-11-21
江苏省科技重点支撑计划(BE2013003)
曹正万(1989-),男,江苏盐城人,江南大学硕士研究生,研究方向为机器人应用及仿真,(E-mail)czwjndx@163.com。