劉 鳳 ,楊東升 ,廉夢佳 ,張 展 ,王麗娜
1(中國科學院 沈陽計算技術研究所,沈陽 110168)2(中國科學院大學,北京 100049)
基于ROS的智能工業機器人系統開發平臺①
劉 鳳1,2,楊東升1,廉夢佳1,2,張 展1,2,王麗娜1,2
1(中國科學院 沈陽計算技術研究所,沈陽 110168)2(中國科學院大學,北京 100049)
目前,工業機器人對于機器視覺、自主路徑規劃等智能化功能需求日益增長.然而在傳統工業機器人系統中添加智能化功能模塊時需要修改大量的源碼,浪費了人力和成本.本文提出的基于ROS的易擴展機器人系統開發平臺,能為開發者開發智能工業機器人系統提供了方便.本平臺分為服務器端和機器人端.將機器人端作為一級節點,與安裝ROS的PC服務器端進行通信.機器人一級節點由二級功能節點與功能模塊組成.根據此平臺開發實現的JPB06六自由度工業機器人系統具有機器視覺、自主定位、語音控制等智能化功能,可以滿足工業機器人對于智能化和實時控制的需求.
工業機器人; ROS; 系統開發平臺; 智能化
社會對于工業機器人智能化、自動化需求的逐漸增長,促進了智能機器人相關基礎領域的成熟,如計算機視覺、語音識別與合成、室內移動機器人算法等,但是這些基礎領域不能很好的結合,導致了機器人研究過程中需要統一開發測試平臺.為此,Williow Garage發布了開源分布式軟件框架ROS[1](robot operating systerm).
ROS起源于2007年斯坦福大學人工智能實驗室與 Williow Garage 公司合作的 PR(personal robot)項目,是運行在主操作系統上的中間件,從本質上它是一種分布式模塊化的開源軟件框架.ROS為機器人研發領域提高代碼復用率,為工業機器人智能化的發展提供了方便.ROS主要有以下幾個特點.一、所有進程以及他們所進行的數據處理,將會通過一種點對點的網絡形式表現出來.二、支持多種語言開發.三、集成已有的開源項目代碼.四、工具包豐富.五、開源且免費.但是其缺點是基于Linux的ROS實時性不能滿足工業需求.
現如今主要有四種解決方法:第一種是將實時系統嵌入ROS中,如美國西南研究院(SwRI)推出ROSIndustrial[2].第二種是在實時系統中植入ROS功能包[3].第三種是開發實時軟件框架,比如北京航空航天大學推出的 RGMP-ROS[4](RTOS and GTOS on Multi Processors-ROS)將ROS節點分為實時節點與非實時節點,并分別運行在實時系統和非實時系統中.第四種是2016年發布的符合工業級標準的ROS2.0[5],因為ROS2.0內部的DDS(數據分發服務)消耗過大,并且其穩定性比ROS1.0低,所以本文選取ROS1.0.
本文結合中國科學院沈陽計算技術研究所工業機器人與數控機床數控系統已有的工業機器人系統開發技術,提出新型易擴展的智能化工業機器人系統開發平臺.該平臺能夠提高工業機器人系統開發的靈活性.
ROS的主要目標是為機器人研究和開發提供代碼復用的支持,其最重要的貢獻是提供基于異構計算集群的主機操作系統的結構化通信標準,并且通過使用節點將代碼和功能解耦,提高了系統容錯能力和可維護性,使系統簡化.目前,開發者和開源 ROS 開發人員為ROS共享社區貢獻了各個領域的軟件包,如SLAM定位算法、坐標轉換tf庫、機器視覺開源庫OpenCV和OpenNI等.由于ROS代碼的高可重用性和可擴展性,基于ROS的機器人系統可以通過利用社區中已有的代碼方便地用于二次開發和復雜應用,實現了成熟的基礎領域結合.目前支持ROS的機器人已經有40多種,包括FANUC、ABB、安川、ADEPT等大型企業的工業機器人.以下分析傳統工業機器人開發平臺和單純基于ROS的機器人開發平臺的利弊,并給出本文提出的系統開發平臺結構.
傳統工業機器人系統開發平臺如圖1所示.中間件為應用軟件共享資源提供支撐,提供其運行與開發環境.實時操作系統實現對硬件部件的編程控制和接口操作,為應用軟件提供一個實時的執行環境和對硬件的虛擬接口,滿足工業機器人對實時性需求.依據模塊化和分層結構思想,有利于系統整體的開放性和模塊化設計.但是使用傳統工業機器人系統開發平臺有以下缺點.其一,各大機器人公司的軟件非開源,使得開發一個機器人系統困難重重,成本巨大.其二,不同的機器人廠商使用的操作系統、中間件以及編程語言各有區別,使得各種先進的基礎領域不能直接共享.其三,模塊間聯系緊密,不利于添加或刪除某一模塊.其四,不同的控制系統,導致了機器人系統不具備可移植性.其五,人機交互界面不統一使得開發者和使用者需要具備更專業水平.綜上所述,傳統工業機器人系統開發平臺并不有利于開發智能化工業機器人系統.

圖1 傳統工業機器人系統開發平臺
單純基于ROS的工業機器人系統開發平臺如圖2所示.此平臺提供機器人開發的統一標準,并且由于ROS內部節點的概念,使得開發者可以利用ROS社區共享的豐富軟件包快速開發機器人系統或者修改、添加、刪除功能節點.但是,由于ROS是運行在Linux之上的中間件,所以通過該平臺開發的機器人系統在實時性上滿足不了工業機器人需求,并且大部分功能包針對 PC 設計,相比于嵌入式,靈活性低.所以本文提出新型基于ROS的智能工業機器人系統開發平臺.

圖2 單純基于ROS的工業機器人系統開發平臺
基于ROS的工業機器人系統開發平臺如圖3所示.該平臺通過使用統一的軟件開發框架ROS為開發者開發智能化工業機器人系統過程中方便地添加、刪除智能化模塊,并且本平臺利用傳統工業機器人系統的中間件與RTOS執行實時任務,滿足工業機器人對于實時性需求.該平臺不僅能滿足工業機器人系統的需求,也可開發非工業機器人、多機器人系統.
此平臺主要有一下幾個特點.第一,平臺主要分為PC服務器端和機器人端.運行ROS的服務器端作為開發平臺的核心,提供路徑規劃、視覺、避障等復雜計算的功能,控制機器人端的運動軌跡,并實時展現機器人狀態.相比于傳統基于ROS的機器人系統開發平臺中的將所有節點運行在一起,將高消耗的節點運行在服務器端會分散CPU壓力,提高系統穩定性.第二,在此平臺中將一個要開發的機器人看成一個單獨的一級節點與服務器端通信,而不是將機器人內部各個傳感器、各功能模塊單獨看做一個節點.機器人一級節點由功能二級節點與傳統工業機器人各個模塊組成,主要控制機器人的運動.使用機器人一級節點比繁多的二級節點更便于多機器人系統開發.第三,相比于圖2,此平臺通過傳統工業機器人中間件和RTOS為智能化工業機器人系統開發提供實時性.第四,相比于圖1,此平臺利用ROS可以方便的添加智能化模塊,并進行傳感器數據獲取與數據處理等.

圖3 基于ROS的工業機器人系統開發平臺
工業機器人的硬件層主要是執行器、傳感器和外圍設備.執行器包括輔助機器人完成運動和動作的電機和臂,對于底盤固定的工業機器人最主要的控制量就是控制機器手臂等關節的移動,所以機器人驅動器中最根本和本質的問題就是控制電機,控制電機轉的圈數,即控制機器人六個關節軸,就可以控制機器人移動的距離和方向、機械手臂的彎曲的程度或者移動的距離等.同時為了保證控制量的精確度,需要各種傳感器反饋,及時對于機械臂控制做出調整.傳感器,是機器人和現實世界之間的紐帶,包括視覺傳感器、激光傳感器、里程計等.視覺傳感器微軟Kinect可以提供真實環境的三維深度數據.由超聲波和激光傳感器組成距離傳感器以提高碰撞檢測時環境數據的精確度.取向傳感器,例如加速度計,里程表和陀螺儀,用于檢測機器人的位姿.
驅動層的作用是為系統層程序提供硬件的操作接口,并且實現硬件的驅動程序.驅動層主要包括總線驅動、伺服驅動、傳感器驅動和網絡模塊驅動等.在驅動層利用控制器板如Arduino或Raspberry Pi來管理驅動器和外設.Arduino主要應用于控制電機驅動和各類傳感器(比如超聲波、IMU等),然后和ROS的上機位通訊,交換數據.rosserial_arduino 包允許 Arduino 作為一個ROS的節點,可以直接發布和訂閱ROS的消息,發布TF變換,以及獲取ROS的系統時間.
在系統層,采用基于Linux的ROS核心庫與基于RTOS的傳統模塊結合的方式.機器人一級節點通過ROS核心庫與服務器通信,并且具有一定的自主運動控制機器人能力.ROS核心庫主要運行在嵌入式Linux中,用于接收服務器的命令,通過驅動通信向模塊發送目標位姿等信息,并且通過驅動接收各種傳感器的數據用于自身的局部路徑規劃和碰撞檢測等,同時傳送傳感器數據給服務器用于建立現實環境的三維模型.保留基于RTOS的傳統模塊化結構是為了保障機器人的實時性和可靠性.
服務器收集來自傳感器的數據來維護機器人周圍環境的三維數據,進行復雜的數據處理得出機器人目標位姿.并將目標位姿信息傳遞給機器人一級節點,用于運動規劃,進而控制機器臂的運動.同時服務器通過三維可視化工具RVIZ顯示三維模型和機器人實時狀態.ROS master(節點管理器)運行在服務器上,控制所有機器人一級節點與其他功能節點通信.用戶可以使用ROS開源社區提供的功能軟件包來開發所需的功能,如自主導航、圖像處理、碰撞檢測等.服務器中的節點與機器人一級節點通信通過配置master節點的ROS_MASTER_URI來通信.基于PC的服務器在保證整個系統的操作能力外,具有更便利的人機交互能力和在復雜和動態環境下,比機器人主機更容易配置的優點.此開發平臺也可滿足多機器人系統的開發,只要將其他機器人一級節點與master節點通信即可.
利用以上設計的機器人系統開發平臺,本節實現了六自由度串聯工業機器人JPB06系統.JPB06機器人由機器人本體、PC、控制柜組成,具有視覺、可視化、自主運動規劃、自主定位等功能,如圖4所示.以下通過PC和控制柜說明本文提出的平臺的應用示例,并給出實驗結果.

圖4 工業機器人 JPB06
PC機作為服務器端運行Ubuntu14.04與ROS hydro.主要有兩個功能:通過Zynq中采集的數據維護機器人工作的三維環境、提供機器人全局路徑規劃功能,并將目標位姿信息傳送到Zynq中對應的節點.提供人機交互服務.
控制柜中主要有兩部分組成,運行ROS的Zynq-7000 EPP,和機器人控制器.
Zynq-7000可擴展處理平臺(EPP)中運行Ubuntu-14.04,并且安裝ROS核心包.Zynq接收底層傳感器的高速數據,傳感器包括激光傳感器、Kinect傳感器、里程計、陀螺儀、加速度計等.Kinect傳感器數據用于服務器端生成三維地圖.激光傳感器用于地圖數據更精確,同時也為機器人在局部運動規劃時提供更可靠的數據.里程計、陀螺儀與加速度計用于控制機器人位姿.
工業機器人功能二級節點很多,節點間的信息交互很頻繁,并且信息量大,為了提升系統通信性能,做了以下兩點變化.一、在機器人節點內部使用共享內存方法把傳感器數據memory-map到內存中,只傳遞數據的地址和大小信息.相比同一機器中的ROS節點間的通信使用網絡棧的loop-back機制,即每一個數據包都需要經過多層軟件棧處理,數據延遲已經控制在20us以內.二、使用輕量級的序列化程序.將ROS的通信棧中傳輸數據損耗最大的序列化延時降低50%.
為了保證ROS內節點的安全性,防止某一節點無限消耗系統內存,從而導致的系統崩潰,本平臺采用Linux Container(LXC)來管理每一個ROS節點進程,LXC有效地將單個操作系統管理的資源劃分到孤立的群組中,以更好地在孤立的群組之間平衡有沖突的資源使用需求.并且LXC消耗極少量的CPU資源.
本次實驗通過訊飛語音控制機器人運動驗證本文提出的智能工業機器人系統開發平臺的可行性.語音識別的工作過程如圖5所示.Wakeup節點監聽語音并將聲音信號作為消息發送到xfwakeup主題,xfasr節點訂閱了xfwakeup主題,一邊采樣聲音信號,一邊進行識別.若識別成功,則將返回的結果發送到xfunderstand主題,將失敗提示語發送到 xfsaywords主題.explain節點訂閱xfunderstand主題,通過control_cmd主題發送識別結果解析后的消息.機器人控制節點接收這一消息,并根據消息內容進行不同的控制策略.

圖5 ROS 中訊飛語音包識別語音過程
測試語音為“向下”時,訊飛語音包識別出“向下”命令,并發送給機器人控制節點.機器人控制節點在接到“向下”命令時確定機器人目標位姿,然后控制機器人運動規劃.(為方便展示,將此目標位姿在機器人控制節點中與“向下”命令對應.).圖6中間兩個截圖為運動過程中軌跡截圖.實驗顯示,JPB06能夠順利根據語音指令移動到目標位姿.此實驗表明了本文提出的機器人系統開發平臺能夠開發機器人系統.

圖6 RVIZ 中顯示的機器人運動過程
本文提出一種能夠提高工業機器人智能化水平的機器人系統開發平臺,該平臺將運行ROS的PC作為服務器端,主要負責復雜的計算、可視化和人機交互等任務.單個機器人作為機器人一級節點,由二級功能節點和任務控制等模塊組成.這樣系統可以在智能化和可靠性上都能滿足智能工業機器人的需求.
本文主要做了語音控制運動實驗驗證了平臺的可行性.本平臺可用于開發一系列工業機器人系統,也可用于開發多機器人系統和非工業機器人系統,如足球機器人系統、服務類機器人系統、無人機系統等.使用本平臺開發其他具有更多功能模塊的機器人系統時,可以通過ROS社區提供的全球共享的開源功能包添加所需功能.
1ROS/technical overview.http://wiki.ros.org/.[2016].
2ROS/industrial.http://wiki.ros.org/Industrial.[2016].
3Huang Z.Development and implementation of a ROS-based software framework for real-time control of robots[MSc.thesis].Beijing:Beihang University,2013.
4Wei HX,Huang Z,YU Q,et al.RGMP-ROS:A real-time ROS architecture of hybrid RTOS and GPOS on multi-core processor.Proc.of 2014 IEEE International Conference on Robotics and Automation (ICRA).Hong Kong,China.2014.2482–2487.
5ROS/ROS2.0.http://design.ros2.org/.[2016].
6Joseph L.Mastering ROS for Robotics Programming.Packt Publishing Ltd.,2015.
7Yu Q,Wei HX,Liu M,et al.A novel multi-OS architecture for robot application.Proc.of 2011 IEEE International Conference on Robotics and Biomimetics (ROBIO).Karon Beach,Phuket,Thailand.2011.2301–2306.
8Hu CX,Hu C,He DX,et al.A new ROS-based hybrid architecture for heterogeneous multi-robot systems.Proc.of 2015 27th Chinese Control and Decision Conference (CCDC).Qingdao,China.2015.4721–4726.
9Boren J,Cousins S.Exponential growth of ROS[ROS Topics].IEEE Robotics & Automation Magazine,2011,18(1):19–20.
10Li XM,Yang CJ,Chen Y,et al.Hybrid event based control architecture for tele-robotic systems controlled through internet.Journal of Zhejiang University Science,2004,5(3):296–302.[doi:10.1631/jzus.2004.0296]
Development Platform of Intelligent Industrial Robot System Based on ROS
LIU Feng1,2,YANG Dong-Sheng1,LIAN Meng-Jia1,2,ZHANG Zhan1,2,WANG Li-Na1,21(Shenyang Institute of Computer Technology,Chinese Academy of Sciences,Shenyang 110168,China)2(University of Chinese Academy of Sciences,Beijing 100049,China)
At present,there is an increasing demand for intelligent functions such as machine vision and autonomous path planning in industrial robots.However,adding intelligent function modules in the traditional industrial robot systems requires a lot of source code modification,wasting manpower and cost.An easy-to-extend robot system development platform based on ROS presented in this paper provides developers with the convenience of developing intelligent industrial robotic systems.The platform is divided into server-side and robot-side.The robot-side as a first-level node,communicates with the server-side installed with the ROS.The first-level node of the robot consists of the second-level functional nodes and functional modules.According to this platform,the JPB06 6-DOF industrial robot system has intelligent function modules,such as machine vision,autonomous positioning and voice control,which can meet the needs of industrial robots for intelligent and real-time control.
industrial robot; ROS; system development platform; intelligence
劉鳳,楊東升,廉夢佳,張展,王麗娜.基于ROS的智能工業機器人系統開發平臺.計算機系統應用,2017,26(10):77–81.http://www.c-sa.org.cn/1003-3254/6019.html
2017-01-09; 采用時間:2017-02-23