自主式水下机器人数据采集和管理系统的设计

时间:2022-02-12 09:38:30

自主式水下机器人数据采集和管理系统的设计

摘要:本文根据自主水下机器人软件系统的基本需求和关键技术,设计了自主式水下机器人数据采集管理系统,通过运行,发现基本能够满足使用的需要。

关键词:水下机器人

数据采集和管理

设计

1.自主式水下机器人数据采集和管理系统的总体结构

自主式水下机器人的数据采集,数据管理是将各种传感器如声纳、陀螺仪、数字罗盘,温度传感器,湿度传感器等的数据进行汇总,并进行管理,为机器人的定位及地图创建、其当前的位姿状态以及其当前的硬件设备状态提供数据支持。工控机程序通过对这些原始数据按照一定的算法、策略进行处理,分析,进而得出其当前的状态,并对其将来的行动进行指导。基于PC/104的数据采集系统。应用PC/104模块上的多串口以及USB口,将多个传感器采集到的数据经由串口传给PC/104模块,在PC/104模块上进行数据管理和数据保存,将采集到的数据打包后,定时通过以太网传给工控机,同时工控机可以利用以太网通过数据采集系统向底层的控制系统发送指令,调整传感器参数或控制推进器,进而调整机器人的状态和各种动作。

2.自主式水下机器人数据采集和管理系统的硬件设计

自主式水下机器人载有的放置电子设备的电子舱有其尺寸大小的限制同时其电源的电量也有限。需要综合考虑各种要求和限制来选择合适的处理器体系结构来担当数据采集的角色。平时常用的PC机体系结构及处理器虽然在性能上能够满足数据采集的要求,但其尺寸比较大,功率消耗也比较大,因而不能够担当自主式水下机器人数据采集的任务;而ARM体系结构虽然功率消耗小并且尺寸也能够满足要求,但ARM处理器的处理能力不能达到数据采集的要求,因而也不能够担当自主式水下机器人数据采集的任务。

随着计算机技术的飞速发展,在产品中嵌入微机作为控制器已随处可见。由于PC体系结构的广泛流行,与PC兼容的软件、硬件、外设和开发工具都比其它体系结构更丰富、更便宜,将PC体系结构用于嵌入式应用就意味着能够大幅度地降低开发成本、减少风险及缩短开发周期,而且减少了许多令人头疼的系统维护和技术支持。为适合嵌入式控制应用,标准PC体系结构的硬件必须减少体积、降低功耗,提高集成度。PC/104标准满足以上要求,它与PC总线完全兼容,而且结构紧凑的栈接式模块很适合嵌入式控制应用的独特要求[21]。PC/104具有非常灵活的模块化配置功能。开发者可以根据自己的需求,准确选择他们所需要的功能模块,用于构建自己的系统,还可以为系统配备极其坚固的外壳。用PC/104模块构建的系统体积非常小巧,但功能却十分强大。PC/104模块板的功能十分丰富,包括CPU、I/O、DSP、无线网络以及GPS等等。用户在桌面PC系统中能够找到的每一种功能,都可以在PC/104系统中实现,并且软件也易于配置。PC/104系统可以运行DOS、Windows以及众多的实时操作系统,这些特点使得PC/104系统的软硬件配置实现起来非常容易。

3.自主式水下机器人数据采集和管理系统的软件设计

该系统采用多线程和线程间通信以及线程间同步的机制来实现多串口数据采集,USB口数据采集,数据管理以及网络通信。该系统采用条件编译的方式可以方便地生成有人机交互和无人机交互两种可执行程序。有人机交互的程序可以通过操作界面来操作程序,也可以通过接收来自工控机的指令来进行操作,同时可以通过界面上的编辑框看到各个传感器当前传回的数据;无人机交互界面的程序只能通过接收工控机下达的指令来进行各种操作,无法看到当前接收到的各个传感器的数据,但这样可以节省一定的资源如CPU时间和内存,用于主要任务的处理。

3.1主线程

主线程即对话框线程。当生成的是人机交互程序时,可以通过对话框来操作程序从而创建其他的线程或销毁其他线程,本程序采用的计时方法是用VC++提供的OnTimer()函数,因此主线程还具有计时功能,此外,还可以通过对话框观看从串口和采集板读到的数据。当生成的是无人机交互的程序时,该线程主要是用于初始化参数,创建一些基本的线程如接收工控机指令的线程、将串口数据打包后通过网络传输数据的线程以及用于计时。

计时功能是通过定义一个无符号长整型变量用来做时标,即每当定时到时,该变量加一,用以标识传感器数据时间上的关系。

3.2串口处理线程

六个串口处理线程的流程大体一样,声纳所对应的串口线程所等待的事件除了读写串口事件,关线程事件还有设置声纳参数,重启声纳事件。

首先初始化一些与该线程相关的变量,然后进入无限的循环,在每次循环的开始等待事件的发生,如果没有事件产生,则线程进入等待的状态,此时该线程消耗很少的资源。当有事件发生时,先判断事件的类型。如果是有数据可读,则判断是否已经读入一条完整的数据,如果已读到完整的数据,则根据相关协议判断数据的正确性。如果校验错误,返回到等待事件的地方继续等待下一个事件的发生。如果校验正确,将数据放入相应的循环缓冲区里(由设计的一个类来管理),当计时时间到时,数据将从该循环缓冲区中取出用于打包和保存,如果等到的事件是写串口事件,则将要发送的数据通过串口发送给相应的设备,然后回到等待事件处等待下一个事件的发生。如果收到的是销毁该线程的事件,则直接跳出该无限循环,结束线程。

3.3将串口数据打包后通过网络传送给工控机的线程

该线程的作用主要是当定时时间到时,将各个串口传来的数据从相应的循环缓冲区中取出,按照预先设计好的协议打包然后通过网络传送给工控机,或者传送一些状态和操作结果信息,如某些串口是否已经成功地打开或关闭,某些功能是否已开启,如数据保存功能等。

3.4读取USB采集卡数据并将数据保存的线程以及将USB采集卡数据打包后通过网络传输的线程

USB采集卡用于采集加速度计的信息,由于是定时地从USB采集卡上读取数据,而不是像读取串口那样总是被动的接收数据,因此没有采用循环缓冲区进行缓存,而是直接将读取到的数据连同时标一起存入用于保存的缓冲区中,同时通知将USB采集卡数据打包后通过网络传输的线程将数据发送给工控机。当用于保存数据的缓存区被填满时,将该缓存区中的数据写到磁盘中去。除了接收到关闭程序的命令,当执行完各个命令时,都会向工控机发送一个消息用于指示命令执行的情况如串口是否打开或关闭,文件是否已经传送完毕或删除完毕,该消息的传送是通过3.2.3介绍的将串口数据打包后通过网络传送给工控机的线程来完成的。

3.3管理循环缓冲区的类

由于是将定时时间(现在取的是100ms)内采集到的数据和对应的时标打包后通过网络发送给工控机并且同时将采集到的数据解释后与其对应的时标放入本地用于保存数据的存储区,为了保证数据不丢失或按需要丢失,需要设置一个足够大的缓存区来暂存数据。设计一个将某段缓存区作为循环缓存区,并管理缓存区中数据的类可以使程序设计相对简单和方便。

参考文献

[1]杨炜鸿;孙震宇;冯利;通用数据标准制定方法的研究[J];长春理工大学学报(自然科学版);2007年03期

[2]令狐大智;李陶深;;一种面向混合数据的自反馈模糊聚类分析算法[A];广西计算机学会2007年年会论文集[C];2007年

[3]周健.基于数据挖掘的短时交通流预测系统研究初步[D].长沙理工大学,2008.

上一篇:浅议园林绿化工程施工及质量控制 下一篇:河南良种品牌越来越亮