曹正萬,平雪良,陳盛龍,蔣 毅
(江南大學機械工程學院江蘇省食品先進制造裝備技術重點實驗室,江蘇無錫 214122)
基于ROS的機器人模型構建方法研究*
曹正萬,平雪良,陳盛龍,蔣 毅
(江南大學機械工程學院江蘇省食品先進制造裝備技術重點實驗室,江蘇無錫 214122)
ROS(Robot Operating System)是一個開源機器人操作系統(tǒng),Rviz是基于ROS環(huán)境下的三維可視化模擬工具。通過對機器人操作系統(tǒng)的研究,提出了兩種在ROS環(huán)境下機器人模型的構建方法,詳細介紹編程構建模型與外界模型導入這兩種模型構建的基本方法與步奏。通過對比兩種模型構建方法來探討ROS環(huán)境下一般機器人模型的建立,對比結果表明,外界模型導入方法利用三維軟件建模的優(yōu)勢,可以減少建模時間,提高工作效率,對ROS的應用研究有著重要的意義。
機器人操作系統(tǒng);模型構建;文件解析
開源機器人操作系統(tǒng)ROS(robot operating system)[1],是由Willow Garage公司發(fā)布的一款開源機器人操作系統(tǒng),隨著機器人技術的快速發(fā)展和復雜化,代碼的復用性和模塊化需求越來越強烈,而現有的開源系統(tǒng)不能滿足要求,ROS應運而生,很快在機器人研究領域展開了學習和使用ROS的熱潮[2]。
ROS利用了很多現在已經存在的開源項目的代碼,比如從Player[3]項目中借鑒了驅動、運動控制和仿真方面的代碼;從Open CV[4]中借鑒了視覺算法方面的代碼;從Open RAVE[5]借鑒了規(guī)劃算法的內容。ROS可以不斷的從社區(qū)維護中進行升級,包括從其他的軟件庫、應用補丁中升級ROS的源代碼。
ROS可以最大程度的適合使用者對其進行開發(fā)及應用,文章將研究關于ROS環(huán)境中機器人模型的構建方法,詳細介紹模型編程及模型導入方法、具體過程和技術要點并給出模型導入的簡單實例。
1.1 ROS環(huán)境
ROS是開源的,是用于機器人的一種開源機器人操作系統(tǒng),或者說次級操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能,包含硬件抽象描述、底層驅動程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理,它也提供一些工具程序和數據庫用于獲取、建立、編寫和運行多機整合的程序[6]。
ROS的首要設計目標是在機器人研發(fā)領域提高代碼復用率。ROS以節(jié)點為基本單元,采用分布式處理框架,這使可執(zhí)行文件能被單獨設計,并且在運行時松散藕合。這些過程可以封裝到數據包(Packages)和堆棧(Stacks)中,以便于共享和分發(fā)。ROS還支持代碼庫的聯合系統(tǒng),使得協作亦能被分發(fā)。這種從文件系統(tǒng)級別到社區(qū)級別的設計功能讓獨立決定發(fā)展和實施工作成為可能。上述所有功能都能由ROS的基礎工具實現。
1.2 ROS主要特點
ROS的運行架構是一種使用ROS通信模塊實現模塊之間點對點的松藕合[7]的網絡連接處理架構,它執(zhí)行若干種類型的通訊,包括基于服務的同步RPC(遠程過程調用)通訊、基于Topic的異步數據流通訊,還有參數服務器上的數據存儲。但是ROS本身并沒有實時性。
此外,ROS提供多語言支持,在寫代碼的時候,諸多編程者會比較偏向某一些編程語言。為了方便更多的使用者,ROS現在支持許多種不同的語言,例如C++、Python、Octave和LISP,也包含其他語言的多種接口實現。
1.3 Rviz基本描述
Rviz是ROS中的三維可視化工具,簡而言之:Rviz是一個顯示機器人實體的工具,本身不具有模擬的功能,需要安裝一個模擬器arbotix,通過arbotix可以對機器人模型實現基本的仿真功能[8]。ROS作為一個平臺工具,將arbotix的仿真通過Rviz可視化工具展示在用戶面前,Rviz采用矩陣變換系統(tǒng)來實現不同坐標系下的數據變換,一種為固定坐標系:用于表示世界的參考坐標系。通常為了得到正確的結果,固定坐標系不能相對世界移動。另外一種則為目標坐標系:通常是相對于攝像機視角的參考坐標系。例如,若目標坐標系為地圖,可以看到機器人沿著地圖移動。如果目標坐標系是機器人基座,那么機器人將固定在某一位置,而其它物體相對于機器人移動。
2.1 URDF文件介紹
URDF(Unified Robot Description Format)[9]是ROS系統(tǒng)專門用來統(tǒng)一描述機器人仿真模型的語言,該語言是基于XML的,可存儲模型的形狀、尺寸、顏色等基本屬性,還包含機器人的運動學動力學信息,支持模型的干涉碰撞檢查[10]等。其實就是為了能夠抽象描述一個機器人的硬件,閱讀起來非常容易。
2.1.1 URDF語法
在URDF中編輯文件需要一定的語法,基本的編程語法如表1所示,包含本體、關節(jié)、節(jié)點的定義以及節(jié)點間各關節(jié)的母子關系。用<link>描述各個部件,<joint>描述各個關節(jié)。用<parent>和<child>描述關節(jié)連接的部件。只要描述了link和joint之間的關系,就能很容易構建機器人的框架。
表1 URDF基本指令
2.1.2 URDF文件校驗
對于構建的樹形機器人模型,可以通過簡單的命令工具來分析所創(chuàng)建的結構是否存在語法錯誤等。不同Ubuntu版本之間的語法略有區(qū)別,校驗語法詳見表2。
表2 URDF校驗語法
2.2 編程創(chuàng)立URDF文件
在ROS下創(chuàng)建URDF文件首先需要通過編程建立URDF文件,然后對創(chuàng)立的文件進行解析并判斷語法是否正確,創(chuàng)立文件夾來存儲所建立的文件。啟動編輯器,運行代碼對解析的文件進行判斷,如果成功則可以進行下一步工作,失敗則返回重新解析,具體流程圖如圖1所示。
圖1 ROS下URDF文件創(chuàng)立流程圖
2.3 外界三維模型導入
由于Rviz不可以識別一般的三維軟件格式,因此需要對所建立的模型進行相應的轉換。將三維軟件所建立的模型轉換為一種可被Rviz識別的文件-URDF型文件。本文中的模型建立采用solidworks軟件,完成文件的解析則用到相應的URDF插件,來完成文件的轉換。具體流程圖如圖2所示。
3.1 機器人模型的描述
在ROS下對于一般的樹形結構機器人模型的描述,通常有本體、關節(jié)、節(jié)點等組成。本體對應一般的機器人本體,本體與關節(jié)之間通過節(jié)點關聯而成,以此而衍生的模型為一般的機器人模型。
文章以簡單的樹形結構機器人模型為例,該模型由一個本體、兩個并聯的關節(jié)組成,且其中一個關節(jié)通過節(jié)點延伸出另一個子關節(jié)。通過該機器人模型的URDF文件創(chuàng)建來闡述ROS下機器人模型構建的兩種方法。
3.2 編程構建URDF文件
3.2.1 URDF文件創(chuàng)立
根據表1的指令可以構建出結構如圖3所示的樹形機器人模型,模型構建過程中不需要考慮模型的尺寸大小等。
圖3 ROS下樹形機器人模型
3.2.2 URDF文件校驗
對于構建的樹形機器人模型,可以通過表2所示的校驗語法來分析所創(chuàng)建的結構是否存在語法錯誤等。
每條指令對應不同的Ubuntu版本,可以根據相應Ubuntu版本輸入對應的指令來檢測構建的URDF是否存在語法錯誤。
如無錯誤,則可以看到輸出結果如下:
3.2.3 添加輪廓尺寸
有了基本的樹形結構,就可以添加設當的輪廓尺寸。如圖3所示,每個link的坐標系都固定在link的底部,并與joint的坐標系一致。因此添加輪廓需要做的就是指定link到子級joint的偏移量。為實現這一點,需要為每個joints添加<origin>字段。
從圖3中的第二個關節(jié)可以看出,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所示的幾部分關節(jié)及裝配圖。
圖4 三維模型裝配圖及各關節(jié)零件圖
3.3.2 三維模型解析
對裝配完成的三維軟件進行解析并且創(chuàng)建相應的儲存文件夾,根據實際的關節(jié)自由度設置,分別定義每一個關節(jié)及其子關節(jié)之間的相對位置、平移等運動需求,其余選項如無特殊要求,則按照默認的選項進行定義,按要求完成URDF文件的解析。
3.3.3 啟動配置文件,完成模型導入
將儲存好的文件夾放在ROS下的某個文件路徑內,啟動三維可視化工具Rviz,并正確打開URDF文件存儲的絕對路徑可以得到如圖5所示的界面,最終完成三維模型的導入,后續(xù)的運動學定義可以根據實際情況進行相應的改動。
圖5 三維模型導入圖
3.4 三維模型對比
對兩種方法構建的三維模型可以通過ROS自帶的graphiz虛擬顯示所構建的urdf結構關系:
$urdf_to_graphizmy_robot.urdf
得到PDF文件打開后如圖6所示,圖6a為編程構建模型的URDF模型結構關系的虛擬展示,圖6b為外界模型導入生成的URDF模型結構關系的虛擬展示。
圖6 URDF模型的虛擬展示
通過對比兩種方法所構建URDF文件的虛擬結構展示可以看出,矩形代表關節(jié)部分,橢圓代表節(jié)點部分,二者所建立的結構可以達到一致,坐標位置僅與初始姿態(tài)有關,可以通過后續(xù)姿態(tài)校準達到完全一致。
對比ROS環(huán)境下機器人模型的構建可以發(fā)現,系統(tǒng)程序語言的建模更為嚴謹,在定義機器人的本體、關節(jié)、位置關系、輪廓時可以添加外部的驅動力等,然而步驟過于繁瑣,一個簡單的模型既需耗費大量的時間與精力,適用于要求不高的演示畫面或者機械仿真,同時利于初學者的程序語言學習及探索。ROS下機器人模型的導入對機器人的仿真應用有著及其重要的意義,利用了三維軟件建模的優(yōu)勢,克服了ROS本身模型建立的局限性:繁瑣的程序式建模以及模型的結構分析。通過外界建立的模型進行導入,可以大大減少建模時間,提高工作效率,為隨之進行的運動規(guī)劃及復雜的結構仿真提供高質量的三維模型。模型的建立與導入與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]張建偉,張立偉,胡穎,等.開源機器人操作系統(tǒng)-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。