RosLaunch文件的可视化创建方法设计与实现
2020-06-09王志成程勇潘洪涛樊玉琦
王志成 程勇 潘洪涛 樊玉琦
摘 要: 机器人软件开发不仅涉及到机器人硬件架构还有相关的机器人软件架构,这要求开发人员具备很好的知识储备。ROS(Robot Operating System)系统中通常使用RosLaunch文件一次启动多个节点(Node)完成指定任务,对于非专业的人员来说,设置启动文件十分困难。可视化开发能够让开发人员以图形的方式编辑和设计程序的功能和格式,不必再对着代码修改。这种方式更加直观,能很好的降低出错误几率。本文设计了一种可视化RosLaunch文件创建工具,能够有助于创建机器人启动文件,并将已有启动文件映射成图形直观展示出来。在验证实验中创建了Kinova jaco机械臂的完整启动文件,放在其工作空间下可以正常启动机器人。本文中的方法可以大大降低机器人开发难度和门槛,不熟练的开发人员也可以使用此软件对机器人进行简单的调试和开发,从而节省了机器人开发人员培养的成本,提高了开发效率。
关键词: RosLaunch;可视化编程;机器人软件开发;Qt Creator
中图分类号: TP 311 文献标识码: 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是一個用于机器人编程的软件框架,集成了大量的工具和库。它将硬件抽象描述、管理硬件驱动、规定了消息的传递规则,很大程度上将机器人硬件和软件分割开来,并使得机器人代码复用成为可能[1]。通常一个ROS功能包(Package)中包括几个甚至几十个节点(Node),这些节点是功能包的最基本组成部分[2]。功能包是ROS软件中的基本单元,包含ROS节点、库、配置文件等。通常每个功能包、节点都单独设计、编译,但是在完成某一个特定的任务时,需要多个功能包组合才能达到特定目的[3]。比如,在机器人模拟仿真环节中,需要不同的ROS包来显示GUI,如图1所示,执行运动规划和可视化机器人运动,所有这些都需要节点并行运行并相互通信。
机器人在执行任务时,常需要将这些节点全部启动。这些节点内部都有自己的参数定义。对于不同的需求,需要开发人员逐一进入到节点的代码之中修改节点参数。这种软件开发方式耗时长,且容易出错。为此,ROS提供了.XML格式的文件—— RosLaunch文件,将所有需要的节点一次性启动起来,每个节点的参数可以在RosLaunch文件中直接进行设置[4]。但是RosLaunch文件的编写对于不熟练的开发人员来说也十分具有挑战性,并且也有一定的调试难度。
为此,本文采用Qt[5]可视化框架以及C++和Python语言,开发了一款机器人启动文件的可视化创建、编辑的软件——Launch Creator,以降低RosLaunch文件创建的复杂度。
2.4 軟件实现流程设计
本文采用自顶向下的方法设计实现Launch
Creator软件,主要步骤如下:
(1)设计主界面窗口及其相关配置,如控件大小、窗口大小、标题等;
(2)在主界面中添加Launch文件子元素控件按钮,并添加启动Launch文件的按钮和映射Launch文件的按钮:View Graph;
(3)为主界面中添加的所有子元素按钮创建单独的子界面,并使用Qlayout类对子界面经行布局管理,设计控件的大小和位置。
(4)为Launch Creator软件添加菜单的选项功能,主要包括文件的打开、保存、打印、推出等功能。
如图9展示了系统主框架具体实现流程。
Launch Creator软件主界面包括了控件的UI设计,主要包括各控件的位置、窗口大小、位置和标题等信息。子元素模块大致分为两类,一是RosLaunch文件中的关键字元素(标记),比如:Node、Include、Group等;另一类是View Graph子模块,此模块可以将输入的RosLaunch文件映射成树型启动图形,并反馈给用户。菜单功能为软件添加了基本菜单功能,比如文件的打开、保存、打印等操作。文本显示窗口使用TextEdit控件,添加了代码显示区域,方便用户在子界面关闭后,能够在主界面中看到已编辑的代码。用户也可以在TextEdit控件中直接修改代码。
3 实验验证
实验采用Kinova Jaco机械臂启动文件—— Kinova bringup.launch作为验证对象。如图10所示,此界面是配置Group中remap子元素的参数,等效于语句“
当所有参数配置结束,返回主界面。在主界面右侧TextEdit区域中可以再次修改文件内容,不必再进入子元素界面中修改,这是为了保证软件的代码易修改性。
启动文件保存后点击“View Graph”按钮,调用此子模块将已保存的文件映射为图型,并反馈给用户,如图11。图中可以看到,启动文件名为“kinova_robot.launch”,其中有两个节点,分别是“kinova_driver”和“robot_state_publisher”。j2n6s300为实验使用的机械臂型号,根据不同型号机械臂,节点的前缀会相应变化。
4 结论和未来工作
本文提出并实现了一个可视化编程软件,有助于ROS启动文件的可视化创建,它将机器人的编程模块化。当启动文件生成,树型启动文件会以图片形式保存。开发人员了解启动文件内容可以直接查看Launch Creator生成的树型节点启动文件图,不需要再打开软件,一定程度上提高了机器人调试的灵活性和开发效率。经过实践检验,该软件验证了本文的设计和其实用性。该软件将会集成到机器人开发软件和机器人控制软件环境中,成为机器人开发的有力工具。
该方法在ROS系统中创建机器人启动文件过程易于接受且使用方便,但是一些功能在未来可以进一步改进。例如:增加一个画布元素,用图形样式实时显示已添加的元素,方便用户在创建启动文件的过程中理解当前的系统结构,进一步降低机器人开发门槛。另一方面,将界面制作的更加通用,使得它们可以适用于其他文件的创建及修改。
参考文献
张鹏, 高放, 双丰. 基于ROS的全向移动机器人控制系统的设计与实现[J]. 组合机床与自动化加工技术, 2018(07): 89-92+96.
张建伟, 张立伟, 胡颖, 等. 开源机器人操作系统—— ROS[M]. 北京: 科学出版社, 2012.
樊泽栋, 丁博, 史殿习, 等. 机器人中间件消息实时性保证机制的研究与实现[J]. 软件, 2015, 36(10): 21-25.
http://wiki.ros.org/roslaunch/.
邓子强, 王玉玫, 邓红艳, 等. 基于Qt绘图系统的图形应用优化研究与实现[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.