基于Qt的AUV监控系统设计与开发
扫描二维码
随时随地手机看文章
摘要:自主式水下机器人是当今机器人研究领域最热门的话题之一。它在海洋调查,资源勘探以及军事领域有着广泛的应用前景。AUV的智能化水平在不断的提高。而且工作环境也越来越复杂,因此对AUV的软件系统要求也更高,可靠高效的AUV软件系统对于实现AUV的智能化和保证其自身安全非常重要。监控系统软件作为AUV软件系统的一部分是实现AUV航行控制的关键。由于Qt开发平台的优良跨平台特性,本系统采用了基于Qt的软件模块化设计。
关键词:AUV;Qt;监控系统;软件模块化
0 引言
自主式水下机器人(Autonomous Underwater Vehicles,AUV)代表了未来水下机器人技术的发展方向,是当前世界各国研究工作的热点。对AUV的实时监测和控制是AUV能否安全高效执行任务的关键之一。本课题针对AUV的体系结构和实际应用,为其设计实现一套高可靠性,通信灵活,简单易用,具有模块化特点的监控系统软件。水下机器人实现实际应用的前提条件是具备自主导航能力,自主导航主要研究移动机器人在已知的环境当中,如何从指定起始位姿运动到指定目标位姿,并执行指定的任务。在这种情况下由于环境地图是已知的,所以导航过程始终依赖于先验的环境地图信息。但是随着移动机器人应用范围的不断扩大和移动机器人自主导航问题研究的不断深入,在未知地图环境下的自主导航成为一个需要解决问题。这就需要自主探索技术,以获得环境地图信息。可靠的定位是机器人自主导航的基础,自主导航中的路径规划、路径跟踪等任务的进行都需要机器人能够在运动过程中连续定位。也就是说,机器人在未知环境下的自主导航中:一方面机器人如何在位置环境下确定自身的位姿;另一方面,机器人如何准确描述环境特征建立环境地图。这2个问题成为导航领域的研究难点。为了解决
这2个难点就需要移动机器人的同时定位与地图构建算法(Simultaneous Localization and Mapping,SLAM)。在SLAM中,移动机器人使用自身携带的传感器获得环境地图信息,识别标识未知环境中的特征标志,然后根据移动机器人与环境特征标志之间的相对位置和控制量等估计机器人和环境特征的全局坐标。SLAM算法具有重要的理论与应用价值,认为是实现真正的全自主移动机器人的关键。本文“C-RANG-ER”AUV试验平台便是为研究SLAM算法而搭建的,文中介绍了基于该算法的基于Qt的AUV监控系统软件的设计与实现。
1 C-RANGER AUV简介
C-RANGER AUV实验平台采用开架式设计,是一种小型试验用AUV,有2个电子舱和5个水下推进器,搭载有主动声纳、垂直陀螺仪、多普勒测速仪、数字罗盘等传感器2 C-RANGER体系结构 图1是C-RANGER系统的总体框架,主要包括决策控制系统、数据采集与处理系统、数据存储系统、底层控制系统、AUV实体,具体介绍如下:
(1)同时定位和地图构建系统。是机器人的核心算法部分。该系统对各种传感器数据进行分析,根据SLAM算法计算出机器人自身位姿并且构建环境地图。
(2)决策控制系统。包括路径规划与智能控制,利用SLAM算法提供的地图,规划一条从起始点到终点的路径,智能控制利用SLAM提供的位姿数据对比路径信息产生控制信息。
(3)底层控制系统。负责接收决策控制系统的控制指令以驱动推进器,控制AUV的航行姿态,并返回AUV的状态参数,如仓内参数参数、推进器状态等。
(4)数据采集与处理系统。负责采集AUV上搭载的各种传感器的数据和控制器的参数信息,经初步处理后传送到SLAM系统,并保存到数据存储系统。
(5)数据存储系统是AUV的数据中心。负责记录AUV航行过程中的各种数据,并为SLAM系统提供必要的数据。
2 Qt简介
Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。QtCreator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C++代码编辑器上下文感知帮助系统可视化调试器源代码管理项目和构建管理工具。本监控软件正是在Qt Creator开发环境中完成的。
[!--empirenews.page--]
3 AUV监控软件设计
AUV的监控以人机交互的形式实现(如图2所示),主要是对AUV各个模块工作状态的监视以及工作模式的设置,由图3可知,控制模块功能的划分可知AUV监控模块的主要功能包括底层数据处理、AUV状态监视、数据采集控制、手柄遥控、异常处理以及航行路线的设定。运用模块化技术,可以将错误局限在各个模块内部,避免错误蔓延,提高AUV系统的可靠性。还可以利用以前已经被证明是可靠的模块来构造新的系统,这就不但减少了新系统开发的工作量,也提高了系统的可靠性。
该监控模块(如图3所示)采用多线程技术和网络通信实现以及基于Qt的信号与槽机制。多线程技术主要是创建继承Qthread的多个类,实现对数据的接收与处理,手柄控制等多个线程。网络通信则是通过继承QtcpServet的服务器端与底层来实现实时通信,通过网络通信实现对AUV的实时监测。而基于Qt的信号与槽机制则用于通过岸基平台的人机交互界面对AUV实时状态进行监测和控制。三者结合,实现对AUV各个方面的监测和控制,以便AUV能高效准确的工作。
数据采集控制线程(如图4所示),其余的监控线程都采用类似的形式。
4 结语
本文简单介绍了Qt下的监控系统的开发和设计,程序设计上还有很多不足,有待进一步改善提高。基于Qt平台强大的可移植性及其库函数,使程序开发设计起来更具效率。