王志成 程勇 潘洪濤 樊玉琦
摘 ?要: 機(jī)器人軟件開發(fā)不僅涉及到機(jī)器人硬件架構(gòu)還有相關(guān)的機(jī)器人軟件架構(gòu),這要求開發(fā)人員具備很好的知識儲備。ROS(Robot Operating System)系統(tǒng)中通常使用RosLaunch文件一次啟動多個節(jié)點(Node)完成指定任務(wù),對于非專業(yè)的人員來說,設(shè)置啟動文件十分困難??梢暬_發(fā)能夠讓開發(fā)人員以圖形的方式編輯和設(shè)計程序的功能和格式,不必再對著代碼修改。這種方式更加直觀,能很好的降低出錯誤幾率。本文設(shè)計了一種可視化RosLaunch文件創(chuàng)建工具,能夠有助于創(chuàng)建機(jī)器人啟動文件,并將已有啟動文件映射成圖形直觀展示出來。在驗證實驗中創(chuàng)建了Kinova jaco機(jī)械臂的完整啟動文件,放在其工作空間下可以正常啟動機(jī)器人。本文中的方法可以大大降低機(jī)器人開發(fā)難度和門檻,不熟練的開發(fā)人員也可以使用此軟件對機(jī)器人進(jìn)行簡單的調(diào)試和開發(fā),從而節(jié)省了機(jī)器人開發(fā)人員培養(yǎng)的成本,提高了開發(fā)效率。
關(guān)鍵詞:?RosLaunch;可視化編程;機(jī)器人軟件開發(fā);Qt Creator
中圖分類號:?TP 311????文獻(xiàn)標(biāo)識碼:?A????DOI:10.3969/j.issn.1003-6970.2020.02.007
【Abstract】: Robot function development involves not only the robot hardware architecture but also the related robot software architecture, which requires developers to have a good knowledge of the robot system. In the ROS (Robot Operating System) system, the RosLaunch file is usually used to start multiple nodes at a time to complete a specified task. It is very difficult for non-professional personnel to set the startup file. Visual development allows developers to graphically edit and design the functionality and format of a program, which is more intuitive and can reduce the programming errors. This paper designs a tool that can help create robotic startup files and map existing startup files into graphical visualizations. In the verification experiments, the complete startup file of the Kinova jaco robotic arm can be created and placed in its workspace to start the robot normally. The tool designed in this paper can greatly reduce the difficulty of robot development. Unskilled developers can use the tool to debug and develop robots, which saves the cost of robot developers and improves development efficiency.
【Key words】: ROS; Launch files; Visual programming; Robot software development; Qt Creator
0??引言
ROS是一個用于機(jī)器人編程的軟件框架,集成了大量的工具和庫。它將硬件抽象描述、管理硬件驅(qū)動、規(guī)定了消息的傳遞規(guī)則,很大程度上將機(jī)器人硬件和軟件分割開來,并使得機(jī)器人代碼復(fù)用成為可能[1]。通常一個ROS功能包(Package)中包括幾個甚至幾十個節(jié)點(Node),這些節(jié)點是功能包的最基本組成部分[2]。功能包是ROS軟件中的基本單元,包含ROS節(jié)點、庫、配置文件等。通常每個功能包、節(jié)點都單獨設(shè)計、編譯,但是在完成某一個特定的任務(wù)時,需要多個功能包組合才能達(dá)到特定目的[3]。比如,在機(jī)器人模擬仿真環(huán)節(jié)中,需要不同的ROS包來顯示GUI,如圖1所示,執(zhí)行運動規(guī)劃和可視化機(jī)器人運動,所有這些都需要節(jié)點并行運行并相互通信。
機(jī)器人在執(zhí)行任務(wù)時,常需要將這些節(jié)點全部啟動。這些節(jié)點內(nèi)部都有自己的參數(shù)定義。對于不同的需求,需要開發(fā)人員逐一進(jìn)入到節(jié)點的代碼之中修改節(jié)點參數(shù)。這種軟件開發(fā)方式耗時長,且容易出錯。為此,ROS提供了.XML格式的文件——?RosLaunch文件,將所有需要的節(jié)點一次性啟動起來,每個節(jié)點的參數(shù)可以在RosLaunch文件中直接進(jìn)行設(shè)置[4]。但是RosLaunch文件的編寫對于不熟練的開發(fā)人員來說也十分具有挑戰(zhàn)性,并且也有一定的調(diào)試難度。
為此,本文采用Qt[5]可視化框架以及C++和Python語言,開發(fā)了一款機(jī)器人啟動文件的可視化創(chuàng)建、編輯的軟件——Launch Creator,以降低RosLaunch文件創(chuàng)建的復(fù)雜度。
2.4??軟件實現(xiàn)流程設(shè)計
本文采用自頂向下的方法設(shè)計實現(xiàn)Launch
Creator軟件,主要步驟如下:
(1)設(shè)計主界面窗口及其相關(guān)配置,如控件大小、窗口大小、標(biāo)題等;
(2)在主界面中添加Launch文件子元素控件按鈕,并添加啟動Launch文件的按鈕和映射Launch文件的按鈕:View Graph;
(3)為主界面中添加的所有子元素按鈕創(chuàng)建單獨的子界面,并使用Qlayout類對子界面經(jīng)行布局管理,設(shè)計控件的大小和位置。
(4)為Launch Creator軟件添加菜單的選項功能,主要包括文件的打開、保存、打印、推出等功能。
如圖9展示了系統(tǒng)主框架具體實現(xiàn)流程。
Launch Creator軟件主界面包括了控件的UI設(shè)計,主要包括各控件的位置、窗口大小、位置和標(biāo)題等信息。子元素模塊大致分為兩類,一是RosLaunch文件中的關(guān)鍵字元素(標(biāo)記),比如:Node、Include、Group等;另一類是View Graph子模塊,此模塊可以將輸入的RosLaunch文件映射成樹型啟動圖形,并反饋給用戶。菜單功能為軟件添加了基本菜單功能,比如文件的打開、保存、打印等操作。文本顯示窗口使用TextEdit控件,添加了代碼顯示區(qū)域,方便用戶在子界面關(guān)閉后,能夠在主界面中看到已編輯的代碼。用戶也可以在TextEdit控件中直接修改代碼。
3 ?實驗驗證
實驗采用Kinova Jaco機(jī)械臂啟動文件——?Kinova bringup.launch作為驗證對象。如圖10所示,此界面是配置Group中remap子元素的參數(shù),等效于語句“
當(dāng)所有參數(shù)配置結(jié)束,返回主界面。在主界面右側(cè)TextEdit區(qū)域中可以再次修改文件內(nèi)容,不必再進(jìn)入子元素界面中修改,這是為了保證軟件的代碼易修改性。
啟動文件保存后點擊“View Graph”按鈕,調(diào)用此子模塊將已保存的文件映射為圖型,并反饋給用戶,如圖11。圖中可以看到,啟動文件名為“kinova_robot.launch”,其中有兩個節(jié)點,分別是“kinova_driver”和“robot_state_publisher”。j2n6s300為實驗使用的機(jī)械臂型號,根據(jù)不同型號機(jī)械臂,節(jié)點的前綴會相應(yīng)變化。
4??結(jié)論和未來工作
本文提出并實現(xiàn)了一個可視化編程軟件,有助于ROS啟動文件的可視化創(chuàng)建,它將機(jī)器人的編程模塊化。當(dāng)啟動文件生成,樹型啟動文件會以圖片形式保存。開發(fā)人員了解啟動文件內(nèi)容可以直接查看Launch Creator生成的樹型節(jié)點啟動文件圖,不需要再打開軟件,一定程度上提高了機(jī)器人調(diào)試的靈活性和開發(fā)效率。經(jīng)過實踐檢驗,該軟件驗證了本文的設(shè)計和其實用性。該軟件將會集成到機(jī)器人開發(fā)軟件和機(jī)器人控制軟件環(huán)境中,成為機(jī)器人開發(fā)的有力工具。
該方法在ROS系統(tǒng)中創(chuàng)建機(jī)器人啟動文件過程易于接受且使用方便,但是一些功能在未來可以進(jìn)一步改進(jìn)。例如:增加一個畫布元素,用圖形樣式實時顯示已添加的元素,方便用戶在創(chuàng)建啟動文件的過程中理解當(dāng)前的系統(tǒng)結(jié)構(gòu),進(jìn)一步降低機(jī)器人開發(fā)門檻。另一方面,將界面制作的更加通用,使得它們可以適用于其他文件的創(chuàng)建及修改。
參考文獻(xiàn)
張鵬,?高放,?雙豐.?基于ROS的全向移動機(jī)器人控制系統(tǒng)的設(shè)計與實現(xiàn)[J].?組合機(jī)床與自動化加工技術(shù),?2018(07):?89-92+96.
張建偉, 張立偉, 胡穎, 等. 開源機(jī)器人操作系統(tǒng)——?ROS[M].?北京: 科學(xué)出版社, 2012.
樊澤棟, 丁博, 史殿習(xí), 等. 機(jī)器人中間件消息實時性保證機(jī)制的研究與實現(xiàn)[J].?軟件, 2015, 36(10): 21-25.
http://wiki.ros.org/roslaunch/.
鄧子強(qiáng),?王玉玫,?鄧紅艷,?等.?基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實現(xiàn)[J].?軟件,?2016,?37(12):?59-62.
Jackson J. Microsoft robotics studio: A technical introduction[J].?IEEE Journal of Robotics and Amp Automation Magazine, 2007,?14(4):?82-87.
Elliott, Chance,?Vijayakumar, Vipin,Zink, Wesley,Hansen, Richard. National Instruments LabVIEW: A Programming Environment for Laboratory Automation and Measurement[J]. JALA-Journal of the Association for Laboratory Automation . 2007,?12(1):?17-24.
Pot E, Monceaux J, Gelin R, et al. Choregraphe: a graphical tool for humanoid robot programming[J]//The, IEEE International?Symposium on Robot and Human Interactive Communication- Toyama, Japan.?RO-MAN 2009. IEEE,?2009:?46-51.