机器人ROBOT水下机器人通用实时控制软件研究与实现徐竟青12,黄俊峰12,李一平1(1.中国科学院沈阳自动化所,辽宁沈阳1100162.中国科学院研究生院)功能的基础上提出了水下机器人通用实时控制软件的三层体系结构。并介绍了按照这一体系结构开发出的一套水下机器人通用实时控制软件。
基金项目:中国科学院沈阳自动化研究所创新基金资助(CX-010601)。
评判通用实时控制软件优劣的标准在于是否可以在低限度地改动和大限度重用源代码的基础上,将这一系统移植到不同的水下机器人控制系统。
我们以正在开发的水下机器人通用试验平台作为研究对象,在抽象分解水下机器人的基本功能,归纳总结各种水下机器人控制软件体系结构的基础上,提出了我们自己的通用水下机器人实时控制系统软件体系结构,并按照此体系结构成功地开发出了一套水下机器人通用实时控制软件。
目前水下机器人从结构上分为有缆水下机器人(ROV),和无缆水下水下自制机器人(AUV)。ROV通过系缆由人参与水下机器人的控制。AUV完全由机器人智能地或按照预置的工作流程作业。AUV是目前水下机器人发展方向,其开发难度要远高于ROV.从功能上来看,水下机器人分为作业型和观察型。作业型水下机器人目的在于完成水下作业,如打捞,管道铺设等。观察型水下机器人目的在于水底勘探,如水下考古,大坝检测等。虽然完成的任务各异,但总的来讲,这些任务都是由机器人运动功能,设备管理功能和其他辅助功能来实现的。运动功能实现水下机器人的运动,即六个自由度运动的实现。设备作业管理功能完成水下机器人设备的控制,如摄像机,照相机,水下机械手,传感器等的控制。辅助功能完成水下机器人工作所需的其他一些功能,如故障处理,数据记录,设备检测等。
其各基本功能的相互配合可实现水下机器人的复杂作业。
我所已成功地开发出多种型号的水下机器人,其中的控制软件各有特色,可供我们的方案有以下几种。
水下主控程序根据水上监控程序发出的指令,实现运动控制功能和设备管理功能。它通过串口向各设备发送指令。同时接收设备的反馈消息并通过串口发送给水面监控程序。故障处理和设备检测功能由操作者通过水上监控程序完成。水下主控程序基于QNX实时操作系统以满足系统实时性要求,其软件结构简单开发方便,很好地完成了对于这一型号的有缆水下机器人的控制。但是软件只能局限于这一系统,通用性不好。
该程序是以实时多任务操作系统QNX为平台,用watcomC开发而成。主管理进程显示控制菜单并启动各进程;传感器接收进程通过并口接收外部传感器输入数据,存入公共数据区;运动控制进程负责运动功能的实现;使命处理进程根据使命文件处理用户预定义的使命,使命以文本文件的形式保存;数据记录进程记录机器人工作过程中的数据;伺服控制进程负责向电机发送控制量。
该程序以进程为运行单位,各进程负责独立的功能,做到了功能模块化,同时利用QNX进程的内存保护机制可以提高系统运行的安全性;其次公共数据区作为各进程的的通讯机制具有异步性和高效性。但是由于该系统将硬件控制和使命程序进程都包括到了控制软件的内部使得该软件很难移植到其他系统中。限制了系统的通用性。
3)通用控制系统三层体系结构美国NewHampshire大学的海洋工程几个模块组成。
户可在此配置,管理,启动实时监控层各进程。
配置表,来管理实时监控层的进程配置。
进程优先级/进程规划方法/进程运行周期"进程开关标志/进程描述/可否更改进程状态标志/进程创建与否标志/备用/实时监控层配置模块根据该表来配置,启动,设定和管理各进程。用户可以通过菜单来修改该表,从而可动态地配置和管理实时监控层,满足自己的需求。以下是一个标准实时监控层进程配置表。
进程描述入口函数名优先级规划方法运行周期状态可变否可创建否信息交换自适应调节器时间片轮转数据记录时间片轮转应急时间片轮转使命接口时间片轮转通信时间片轮转仿真时间片轮转核无关,编制较其他操作系统简单。QNX操作系统71994-2015ChinaAcademic信息交换进程通过消息通信的方式与设备管理层交换数据,是设备管理层和实时监控层的接口,通过该进程可以对实时监控层屏蔽具体的硬件设备,使实时监控层做到设备无关性。该进程与设备管理层通信的工作流程见。
该层运行各设备的驱动程序。它负责对具体硬件设备的操作。对于不同的硬件设备只需编写相应的设备驱动程序。这样对于不同型号的水下机器人软件系统来说,要更改的仅仅是这一部分。QNX下设备驱动程序只是一个单独运行的进程,与系统内提供了设备驱动程序的编制流程“资源管理器”我们针对水下机器人实时控制软件的特点将这程加以修改,提出自己的驱动程序编写流程见。
我们可以采用公共数据区和消息的方式与实时监控层交换数据。设备驱动程序的主体部分结构如下。
/接收实时监控层发送的消息/ /根据实时监控层发送的消息对硬件端口读写/SWITCH(MESSAGE)器人工4作。水面监控程哮实时显示水下机器人工作lishing机器人(3)使命层使命层运行使命程序或水面监控程序。使命程序可以自动地向实时监控层发送指令,控制水下机状况,并提供操作者向水下机器人发送工作指令的监控界面。该层与实时监控层通过消息进行通信。
我们在总结水下机器人基本功能的基础上,将与具体硬件设备紧密相关的设备管理功能的实现与整个控制系统划分开,提出了自己的三层体系结构,以实现实时控制软件的通用性。按照这一思想,以正在研制的水下机器人试验平台作为对象,开发了一套水下机器人通用实时控制软件。
要达到控制软件的通用性,需要做到系统的设备无关性,可配置性,可重用性。使得通用实时控制系统向不同型号的系统移植时小限度地修改源代码。已开发的实时控制系统基本上达到了这一要求。在使命层,我们提供了使命程序和水面监控程序两种方式来满足AUV和R0V的工作方式的需要。实时监控层可以通过主控进程动态地配置系统以适应不同的工作情况。设备管理层主要完成硬件设备的获取,对于添加到控制系统中的不同硬件,只要按我们提供的驱动程序编制流程,编制相应的设备驱动程序加载设备到设备管理层即可。整个系统由每层中负责相应功能的进程协调运行来完成整个系统的工作且进程间相互独立,各层之间相互独立。
对于水下机器人试验平台,由于试验性质,需要加载更换不同的设备,实现不同的功能。通过配置实时监控层和在设备管理层加载相应的设备驱动程序可以很方便地调整实时控制程序来满足试验要求。
我们正在尝试将这一通用实时控制系统软件向其他水下机器人推广。相信它能够为我国水下机器人产业化作出一些推动作用。