胡俊立
摘要:為了解決工業(yè)機(jī)器人在復(fù)雜環(huán)境中的實(shí)時(shí)避障問(wèn)題,該文提出在ROS平臺(tái)中的工業(yè)機(jī)器人避障規(guī)劃方案。首先,利用SolidWorks建立機(jī)器人3D模型并導(dǎo)入到ROS平臺(tái)中的RViz環(huán)境中;其次,通過(guò)MoveIt!工具提供的KDL庫(kù)完成對(duì)機(jī)器人的逆運(yùn)動(dòng)學(xué)方程求解問(wèn)題,使用OMPL庫(kù)中的RRT算法實(shí)現(xiàn)對(duì)機(jī)器人的運(yùn)動(dòng)規(guī)劃;最后,在ROS平臺(tái)下的RViz環(huán)境中對(duì)運(yùn)動(dòng)規(guī)劃結(jié)果進(jìn)行了仿真,使用rqt工具分析了機(jī)器人運(yùn)動(dòng)過(guò)程中關(guān)節(jié)位置隨時(shí)間變化的曲線,驗(yàn)證了該方案的有效性。
關(guān)鍵詞:ROS??運(yùn)動(dòng)規(guī)劃??避障??RRT
中圖分類(lèi)號(hào):TP242.2文獻(xiàn)標(biāo)識(shí)碼:A???文章編號(hào):1672-3791(2022)07(b)-0000-00
Research?on?Obstacle?Avoidance?of?Six-Axis?Industrial?Robot?Based?on?ROS
HU?Junli
(Department?of?Mechanical?and?Electrical?Engineering?Henan?Industry?and?Trade?Vocational?College,?Zhengzhou,?Henan?Province,?451191?China)
Abstract:In?order?to?solve?the?real-time?obstacle?avoidance?problem?of?industrial?robots?in?complex?environments,?this?paper?proposes?an?obstacle?avoidance?plan?based?on?ROS.?In?this?paper,?an?3D?model?established?by?SolidWorks?of?the?robot?is?imported?into?Rviz,?which?is?the?3D?visualization?platform?in?ROS.?And?then,?the?robot's?inverse?kinematic?equation?is?solved?by?using?KDL?of?MoveIt!?tools.?Motion?planning?of?the?robot?uses?the?RRT?algorithm?implemented?by?OMPL?of?MoveIt!?tools.??Finally,?the?simulation?result?and?the?curve?of?joint?position?varies?with?time?generated?by?rqt?tools?verify?the?validity?of?the?obstacle?avoidance?plan?in?this?paper.
Key?Words:ROS;??Motion?Planning;??Obstacle?Avoidance;??RRT
在工業(yè)機(jī)器人工作過(guò)程中,在其工作路徑上會(huì)存在障礙,如路徑干涉、人員入侵、其他設(shè)備等,由于工業(yè)機(jī)器人工作空間范圍相對(duì)固定,要求機(jī)器人能快速自動(dòng)識(shí)別障礙物并進(jìn)行躲避。目前,操作工業(yè)機(jī)器人的主要方式為人工示教,即首先由操作人員手持示教器將機(jī)器人位置、姿態(tài)、動(dòng)作指令等信息存儲(chǔ)于控制系統(tǒng),然后由控制系統(tǒng)重復(fù)再現(xiàn)示教過(guò)的軌跡和指令。這種操作方式需要人工參與,效率較低并且機(jī)器人運(yùn)動(dòng)軌跡是固定的,無(wú)法根據(jù)環(huán)境的變化做出實(shí)時(shí)的調(diào)整。因此,必須解決工業(yè)機(jī)器人在復(fù)雜工作環(huán)境中的實(shí)時(shí)避障問(wèn)題[1]。
ROS?是一種開(kāi)源的機(jī)器人操作系統(tǒng),支持C++、python、lisp?等多種語(yǔ)言,免費(fèi)且開(kāi)發(fā)資源豐富。ROS?整合了許多工具包:rqt?工具箱、Rviz?三維可視化工具、同步定位與建圖?SLAM算法集、機(jī)械臂控制模塊?MoveIt!、導(dǎo)航模塊?Navigation?;诖耍撐囊?ABB?公司生產(chǎn)的IRB120?機(jī)器人為研究對(duì)象,在?Ubuntu16.04?上利用?ROS-Kinetic?搭建運(yùn)動(dòng)規(guī)劃仿真平臺(tái)對(duì)其進(jìn)行運(yùn)動(dòng)規(guī)劃。
1?機(jī)器人操作系統(tǒng)ROS
2010年WillowGarage公司正式發(fā)布ROS1.0開(kāi)源版本,目前主要發(fā)行版已更新至ROS-Noetic版本。ROS它提供了操作系統(tǒng)的相關(guān)服務(wù),比如:硬件抽象、設(shè)備控制、消息傳遞、包管理和開(kāi)發(fā)應(yīng)用所需的工具和庫(kù)函數(shù)。ROS采用分布式架構(gòu),將功能封裝在節(jié)點(diǎn)(node)中,通過(guò)節(jié)點(diǎn)間的消息傳遞實(shí)現(xiàn)任務(wù)的分層。
1.1?3D可視化工具RViz
RViz是ROS中的三維可視化平臺(tái),在RViz中可以使用XML文件對(duì)機(jī)器人及周?chē)矬w進(jìn)行尺寸、質(zhì)量、位置、材質(zhì)等屬性的描述,并在界面中顯示出來(lái)[2]。例如,如果要顯示某個(gè)信息,該數(shù)據(jù)必須首先通過(guò)話題以消息的形式發(fā)布,通過(guò)在RViz中使用相應(yīng)的插件訂閱該消息即可實(shí)現(xiàn)顯示。在?RViz界面中,還可以通過(guò)按鈕、滑動(dòng)條、數(shù)值輸入框等控制機(jī)器人的行為[3]。RViz的主要功能是圖形化顯示ROS消息或向機(jī)器人發(fā)送控制信息,實(shí)現(xiàn)對(duì)機(jī)器人的控制
1.2?MoveIt!功能包
MoveIt!是ROS中是專(zhuān)門(mén)用于機(jī)械臂運(yùn)動(dòng)控制的功能包與工具的集合[4],包含運(yùn)動(dòng)規(guī)劃OMPL、操作控制、碰撞檢測(cè)FCL、正逆運(yùn)動(dòng)學(xué)KDL和IK_fast,并可以以3D呈現(xiàn)機(jī)器人模型。move_group是MoveIt!的核心部分,是各種功能包、插件的集合,為用戶(hù)提供需要的指令和服務(wù)。它通過(guò)ROS?Param?Server節(jié)點(diǎn)載入機(jī)器人模型和相關(guān)配置文件,以消息或服務(wù)的形式接收RGB-D相機(jī)或激光雷達(dá)的點(diǎn)云數(shù)據(jù)、關(guān)節(jié)位置數(shù)據(jù)和tf樹(shù)信息;通過(guò)Robot?Controllers節(jié)點(diǎn)將運(yùn)動(dòng)規(guī)劃數(shù)據(jù)發(fā)送給機(jī)器人驅(qū)動(dòng)部分。MoveIt!提供了MoveIt!配置助手界面用以生成配置文件包,支持3種方式調(diào)用move_group提供的功能和服務(wù):C++、Python和Motion?Planning插件,通過(guò)Motion?Planning插件可以方便地選擇運(yùn)動(dòng)規(guī)劃算法。
2?IRB120模型的建立
2.1生成URDF文件
URDF(Unified?Robot?Description?Format)文件是ROS中機(jī)器人模型的描述文件,符合XML語(yǔ)言規(guī)范[5]。URDF是機(jī)器人與ROS溝通的橋梁,通過(guò)URDF文件,機(jī)器人的各個(gè)連桿和關(guān)節(jié)的狀態(tài)才能輸入到ROS中。在?URDF?文件中,使用<link>和<joint>表示機(jī)器人的機(jī)械結(jié)構(gòu)中的連桿和關(guān)節(jié),<joint>標(biāo)簽中的<parent>和<child>表示連桿之間的連接關(guān)系,<origin>標(biāo)簽表示連桿之間的坐標(biāo)變換關(guān)系,<axis>標(biāo)簽表示關(guān)節(jié)的運(yùn)動(dòng)學(xué)參數(shù);<link>標(biāo)簽中的<visual>表示連桿的可視化模型參數(shù),如質(zhì)量、外觀形狀等;<inertial>標(biāo)簽表示連桿的動(dòng)力學(xué)參數(shù),如慣性坐標(biāo)系,二階矩;<collision>表示連桿的碰撞模型參數(shù),一般與<visual>標(biāo)簽一樣。在構(gòu)建機(jī)器人模型時(shí),一般不單純使用XML文件來(lái)描述機(jī)器人,往往借助于三維模型開(kāi)發(fā)工具來(lái)建立模型。該文中即首先使用SolidWorks繪制IRB120的結(jié)構(gòu)模型,再使用ROS中的sw2urdf工具將其轉(zhuǎn)化為URDF文件。
2.2創(chuàng)建MoveIt!配置文件
MoveIt!是ROS中對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)規(guī)劃的一系列工具的集合[6]。在使用MoveIt!進(jìn)行運(yùn)動(dòng)規(guī)劃之前需要設(shè)置好運(yùn)動(dòng)規(guī)劃所需的各項(xiàng)配置參數(shù)及啟動(dòng)文件,MoveIt!提供了可視化的配置助手來(lái)生成配置文件。首先需要?jiǎng)?chuàng)建一個(gè)新的配置包,找到上一步創(chuàng)建的IRB120機(jī)器人的URDF模型文件并導(dǎo)入。在此過(guò)程中,最重要的是創(chuàng)建機(jī)器人運(yùn)動(dòng)規(guī)劃組,需要在此步中設(shè)置在此步驟中還需要設(shè)置求解機(jī)械臂正逆運(yùn)動(dòng)學(xué)求解工具,該文中使用KDL計(jì)算機(jī)械臂逆運(yùn)動(dòng)學(xué)方程。生成的配置包中包含運(yùn)動(dòng)規(guī)劃所需的配置文件和啟動(dòng)文件,其中通過(guò)啟動(dòng)demo.launch文件可以觀察生成的配置包是否滿足要求。
3?IRB120六軸工業(yè)機(jī)器人運(yùn)動(dòng)規(guī)劃
運(yùn)動(dòng)規(guī)劃是指機(jī)器人在運(yùn)動(dòng)過(guò)程中遵循無(wú)碰撞、路徑最短等約束條件,找到一條從起始位姿到目標(biāo)位姿的最優(yōu)路徑。工業(yè)機(jī)器人在存在障礙物的工作空間內(nèi)時(shí),需要6個(gè)變量確定其三維空間的位姿,在運(yùn)動(dòng)過(guò)程中需要快速計(jì)算出路徑上的位姿數(shù)據(jù),對(duì)于類(lèi)似于IRB120的六自由度機(jī)械臂則存在多個(gè)逆運(yùn)動(dòng)方程的解。在MoveIt!提供的運(yùn)動(dòng)規(guī)劃Motion?Planning插件可選擇OMPL提供的多種運(yùn)動(dòng)規(guī)劃算法,比如:快速拓展隨機(jī)樹(shù)算法(RRT)和隨機(jī)路徑圖法(PRM)等,考慮到機(jī)械臂避障的實(shí)時(shí)性要求,該文中選擇RRT算法對(duì)機(jī)械臂進(jìn)行避障運(yùn)動(dòng)規(guī)劃。
RRT?算法是一種基于隨機(jī)采樣的快速搜索算法[7],其原理是首先將初始點(diǎn)作為根節(jié)點(diǎn),然后進(jìn)行隨機(jī)采樣生成隨機(jī)節(jié)點(diǎn),以此來(lái)擴(kuò)展子節(jié)點(diǎn),子節(jié)點(diǎn)相連生成隨機(jī)擴(kuò)展樹(shù),當(dāng)隨機(jī)擴(kuò)展樹(shù)到達(dá)目標(biāo)子節(jié)點(diǎn)時(shí),便可以連通初始節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)形成一條路徑。在二維空間內(nèi),RRT?算法工作時(shí),以?QStart?作為初始節(jié)點(diǎn),在工作空間內(nèi)隨機(jī)選取新的一點(diǎn)?QRand,在隨機(jī)擴(kuò)展樹(shù)上找到距離?QRand?最近的點(diǎn)?QNear,然后將?QNear?沿著?QRand?的方向移動(dòng)一個(gè)步長(zhǎng),得到新的節(jié)點(diǎn)?QNew,依次循環(huán)執(zhí)行以上動(dòng)作,直到隨機(jī)擴(kuò)展樹(shù)到達(dá)目標(biāo)點(diǎn)停止。機(jī)械臂工作在三維空間中,在機(jī)械臂避障運(yùn)動(dòng)規(guī)劃過(guò)程中,在三維空間內(nèi)進(jìn)行隨機(jī)采樣并運(yùn)行RRT算法[8],最終可以連通從初始位姿到目標(biāo)位姿的隨機(jī)擴(kuò)展樹(shù),該隨機(jī)擴(kuò)展樹(shù)即為無(wú)碰撞避障路徑。
4運(yùn)動(dòng)規(guī)劃仿真與分析
在終端中輸入“roslaunch?demo.launch”進(jìn)入RViz,在MotionPlanning插件中點(diǎn)擊Context頁(yè)面,在Planning?Library中選擇RRT算法;在Scene?Objects頁(yè)面中為場(chǎng)景添加障礙物,拖動(dòng)機(jī)械臂末端小球設(shè)置機(jī)械臂的目標(biāo)位姿;在Planning頁(yè)面中,點(diǎn)擊Plan和Execute按鈕,MoveIt!工具就會(huì)按照配置好的RRT算法規(guī)劃出一條最優(yōu)路徑,并顯示在RViz窗口中。
圖1為IRB120路徑規(guī)劃圖,淺色為機(jī)械臂起始位置,深色為目標(biāo)位置,中間為長(zhǎng)方體障礙物。在Planning頁(yè)面中,點(diǎn)擊Plan和Execute按鈕,可以看到機(jī)械臂從起始位姿開(kāi)始運(yùn)動(dòng),繞過(guò)場(chǎng)景中的長(zhǎng)方體型障礙物到達(dá)目標(biāo)位置。
在終端中輸入“rqt_plot”,啟動(dòng)rqt_plot工具,訂閱機(jī)械臂/joint_states/position話題,可以得到六個(gè)關(guān)節(jié)角隨時(shí)間變化曲線,如圖2所示,橫坐標(biāo)為時(shí)間,縱坐標(biāo)為關(guān)節(jié)角度,通過(guò)該曲線可以看出,關(guān)節(jié)角隨時(shí)間變化平穩(wěn)連續(xù),驗(yàn)證了運(yùn)動(dòng)規(guī)劃方案的可行性。
5結(jié)語(yǔ)
該文利用SolidWorks完成了IRB120六軸工業(yè)機(jī)器人的3D建模,通過(guò)使用ROS提供的sw2urdf插件將3D模型轉(zhuǎn)化為URDF文件,在ROS平臺(tái)下的RViz工具中建立了機(jī)器人工作環(huán)境模型,利用ROS平臺(tái)下的MoveIt!工具創(chuàng)建了運(yùn)動(dòng)規(guī)劃的配置文件包,使用KDL完成了對(duì)機(jī)器人逆運(yùn)動(dòng)學(xué)方程的求解問(wèn)題,測(cè)試了OMPL中RRT算法的有效性,完成了IRB120在復(fù)雜工作環(huán)境中的避障運(yùn)動(dòng)規(guī)劃。通過(guò)分析IRB120機(jī)器人在避障過(guò)程中各個(gè)關(guān)節(jié)的位置變化結(jié)果驗(yàn)證了避障運(yùn)動(dòng)規(guī)劃方案的可行性,下一步的研究工作集中于在ROS環(huán)境中機(jī)器人工作環(huán)境的實(shí)時(shí)重建和在機(jī)械臂樣機(jī)上的具體實(shí)現(xiàn)。
參考文獻(xiàn)
[1]? 宋栓軍,?韓軍政,?馬軍.?基于BP神經(jīng)網(wǎng)絡(luò)的移動(dòng)機(jī)器人避障設(shè)計(jì)及仿真[J].?測(cè)控技術(shù),?2020(4):?43-48.
[2]? 顏克.?物理模型驅(qū)動(dòng)的工業(yè)機(jī)器人能耗數(shù)字建模研究[D].?武漢:武漢理工大學(xué),?2019.
[3]? 馬向華,?曲佳睿,?趙陽(yáng),?等.?基于視覺(jué)定位的七軸機(jī)械臂目標(biāo)抓取研究[J].?應(yīng)用技術(shù)學(xué)報(bào),?2020(2):?153-157.
[4]? 霍寒旭,?袁昌耀,?曹秀芳,?等.?基于ROS的液壓重載機(jī)械臂避障仿真[J].?天津理工大學(xué)學(xué)報(bào),?2020(3):?36-39.
[5]? 楊曦.?基于ROS的自主移動(dòng)機(jī)器人系統(tǒng)設(shè)計(jì)[D].?西安:?長(zhǎng)安大學(xué),?2019.
[6]? 張穎,?平雪良,?王晨學(xué),?等.?ROS下基于EtherCAT的串聯(lián)機(jī)器人控制系統(tǒng)[J].?傳感器與微系統(tǒng),?2018(3):?106-109.
[7]? 陳敏,?李笑,?武交峰,?等.?基于距離度量學(xué)習(xí)的智能車(chē)輛路徑規(guī)劃[J].?計(jì)算機(jī)仿真,2020(7):?163-167.
[8] ?袁杰,?劉祚時(shí).?基于ROS的六自由度機(jī)械臂避障研究[J].?制造業(yè)自動(dòng)化,?2017(12):?41-43,?80.