关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 20kg级自主水下机器人控制软件设计与实现

20kg级自主水下机器人控制软件设计与实现

作者:时间:2012-03-16来源:网络收藏

摘要:介绍了用于对20 kg级便携式AUV的运行状态进行以及。该是基于MFC对话框运行于Windows操作系统下的程序,使用了多线程编程技术和串口通信技术。串口操作线程用于向串口读取或写入数据,并且在处理后把最终结果发送给主线程和导航线程。在主线程中将数据显示到界面上,在导航线程根据导航算法计算出用于导航的数据并写入串口以AUV的运行状态,包括AUV上浮、下潜、前进、后退、左转弯、右转弯。实验结果表明,该达到了预定效果。
关键词:便携式AUV;多线程;串口通信;MFC

本文引用地址:http://www.eepw.com.cn/article/160948.htm

0 引言
(Autonomous Underwater Vehicle,AUV)代表着未来的发展方向,因而是世界各国研究的热点。而便携式AUV由于使用方便,可执行环境评估、水文地理、辅助水道测量、港口安全、岩屑区域绘图等工作以及可以用在未来战争中,将是未来AUV发展的重点。
本文主要论述了便携式AUV软件的及其,该软件主要用于监视AUV在运行时的状态信息以及控制AUV的运行。AUV在水下运行时的状态信息包括位置信息、航向、舱内温湿度、推进器转速、舵的方向角以及在水面时GPS传感器数据等信息,该软件将这些信息显示到界面上最终对AUV的监控和导航。

1 便携式AUV系统简介
该小型AUV由两个密封舱组成,前舱安置了传感器系统,后舱安置了AUV推进器以及方向舵的控制系统。两个密封舱中间放置的一个垂直推进器用来控制AUV的上下运动,后舱安放了用于控制AUV水平方向的水平推进器和方向舵。系统搭载了AHRS、数字罗盘、GPS等传感器,这些传感器采集到的数据用于AUV的导航。AHRS传感器用来测量AUV的航向角、俯仰角、横滚角、3个方向的速度、加速度;数字罗盘测量AUV的航向角等信息控制软件对一串口进行操作,该串口连接与AUV进行通信的无线模块。将从无线模块接收到的数据经过惯性导航算法处理,根据协议将惯性导航算法处理结果发送到AUV,最终实现对AUV的控制。

2 串口通信
串口在做文件处理时,简单的应用可以采用查询方式或定时方式,复杂的可以采用事件驱动的方式。所谓事件驱动,即当串口有数据进入输入缓冲区时,自动执行接收程序。利用WinAPI读/写串口操作可以有同步方式与异步方式。所谓同步方式是指发出写命令时,直到有数据写入到输出缓冲区写函数才返回。异步方式的重叠方式是指发出写操作命令后,不管写操作是否完成,写函数马上返回,写操作在后台继续进行,写操作完成后通过某种方式通知调用写操作的线程。这样避免了主线程被挂起,提高了程序的工作效率。
2.1 串口通信设置
在实现串口通信时,首先在界面上设置串口号、波特率、校验等信息。单击按钮打开串口,进入命令响应函数OnBtnOpen(),利用API函数打开并对串口进行配置。最后使用API函数CreateThread创建一个线程。由于软件工作过程中需要传送的数据量不大,所以仅仅打开一个串口。
主线程打开串口具体流程图如图1所示。

a.JPG
在主线程中打开串口的代码如下:
m_hCom=CreateFile(m_port,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL)
在串口操作线程中使用API函数ReadFile用于读取串口数据ReadFile(hCom,buf,19,&Length,&Eol);而在该线程中向AUV发送控制指令时使用:
fState=WriteFile(m_hCom,buf,19,&m_bytes,&m_os Write)


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭