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

发布者:MysticEssence最新更新时间:2012-03-29 来源: 现代电子技术 关键字:便携式AUV  多线程  串口通信  MFC 手机看文章 扫描二维码
随时随地手机看文章

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所示。


    在主线程中打开串口的代码如下:
    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)[page]

2.2 串口通信协议
    串口通信必须遵守一定的通信协议,才可实现该控制软件与AUV的正常通信。串口通信数据格式如图2所示,图中Data0,Datal,Data2 …代表一个字(2 B)。


    发送或接收的一帧数据最长为19 B,Data0中第1个字节代表指令(0xA1)、请求(0xB2)或者正常应答(0xC3)等含义;Data0中第2个字节代表具体指令、请求何种信息或者某种信息的应答。Data1,Data2,…代表发送或者接收到的数据。开关机指令长度为19 B,第19字节控制8个继电器,1,0分别表示开、关第零位控制总电源。开机、关机指令前18 B分别是:
    ~A16613579BDF02468ACE13579BDF02468A
    ~A166DF985713CE8A4602DF9B5713CE8A46
    开机指令的第19个字节根据需要选择相应的继电器开启或关闭;关闭指令第19个字节为0x00,所有的继电器关闭。

[page]

3 软件实现
3.1 多线程实现
    一个进程可有多个线程,使用多线程可提高软件的执行效率。该控制软件共有3个线程组成,包括一个主线程、一个导航线程和在成功打开串口后利用API函数CreateThread创建的一个串口操作线程(如图3所示)。


    串口操作线程读取串口数据,并提取有效数据,接着利用函数PostMessage将有效数据分别传送到主线程和导航线程。主线程将有效数据根据协议进行解包并把数据包中包含的AHRS、数字罗盘、GPS等传感器和推进器、前舱环境参数等数据显示到界面上。当使用摇杆控制AUV的运行时主线程每隔0.5 s从USB接口接收数据,并转换成推进器转速以及方向舵的方向角信息,且将这些信息发送到串口操作线程写入串口。
    在主线程中创建串口操作线程的代码如下:
    hThread=CreateThread(NULL,0,ThreadProc,(LPVOID)this,0,NULL);
    在串口操作线程中将有效数据发送到主线程的代码如下:
    PostMessage(*pDlg,WM_MYMSGl,
    (WPARAM)buf,(LPARAM)Length);
3.2 关键算法
    由于惯性导航系统提供的位置估计精度会随时间而漂移,所以导航线程采用基于GPS/INS的组合导航算法,用GPS辅助导航,即用GPS信息辅助修正惯导系统的输出,包括航向角和速度。对AUV的航向角信息修正是通过经典的PID控制算法来实现的,如图4所示。


    设Ji-1,Ji为AUV的2个节点,AUV即A点从Ji-1到Ji点运行。设正北方向矢量为,根据图5按照下式可计算出角度θ。角度θ计算公式为:

[page]

    在AUV进行Ji-1~Ji段的航行时,AUV根据导航算法不断算出坐标并判断是否到达指定区域,当离指定区域为R时(R很小),即可判定到达指定区域。在到达指定区域之前不断利用AUV PID航向角闭环控制算法修正航向角θ,最终实现AUV的GPS/INS组合导航。

4 控制软件界面及实验结果
4.1 软件界面
    本文设计的软件界面左侧上半部分和右侧主要实现对AUV的控制,界面左侧中下部分的3个仪表盘和TAB页控件显示AUV的各个状态信息。
    单击开机、关机按钮将实现AUV的开启与关闭;单击询问AUV按钮,此时应答情况为AUV存在,表示监控软件与AUV的通信正常,否则应该检查无线模块和AUV。单击前舱参数、GPS经纬度、GPS时间、推进器状态、AUV航向角等按钮将持续获得AUV相应的信息;步进电机控制按钮用于实现方向舵的调整,进而实现AUV方向的调整。为了防止步进电机失步,这里还特意设计了步进电机的微调按钮,目的是在步进电机失步时将方向舵调整回原位置。
    该控制软件还以仪表盘的方式显示推进转速、罗盘、温、湿度等信息。
    以速度仪表盘为例,当从串口接收到的数据中提取出水平推进器或垂直推进器速度信息时,将速度信息存放到成员变量m_Spd1或者m_Spd 2。利用API函数得到控件IDC_STATIC_SPD的区域坐标rect2,调用API函数InvalidateRect(&rect2)重绘,将进入函数CDspsockDlg:OnPaint()重绘。利用MFC中的函数Pie,Ellipse,SetBkColor,TextOut画出仪表盘背景。最后通过下列两个公式将速度值转换成对话框上的坐标值,调用函数画一条连接该区域中心位置到该点(a1,b1)的直线,最终实现仪表指针随速度值的变化。坐标(a1,b1)计算公式如下:
    b1=60sin((m_Spd1×3/25+150)π/180)
    a1=60cos((m_Spd1×3/25+150)π/180)
4.2 实验结果
    软件运行期间界面显示如下。图6显示了温、湿度分别是32°,51.5°;单击复位按钮、温湿度指针将分别指向-30°,20°位置处;图6还显示了2个推进器的速度信息,其中水平推进器速度为1 180 r/min,垂直推进器速度为0.此时AUV在水平方向运动垂直方向静止。

5 结语
    介绍了20 kg级便携式AUV控制软件的实现,该软件利用串口通信技术、多线程编程技术在传输数据量不很大的情况下表现了良好的性能。软件以稳定的性能、友好的界面及简单的操作方法满足了对便携式AUV的监视和控制。

关键字:便携式AUV  多线程  串口通信  MFC 引用地址:20kg级自主水下机器人控制软件设计与实现

上一篇:基于PLC和脉冲伺服的枕式包装机应用设计
下一篇:惯性传感器促进移动机器人自主工作

推荐阅读最新更新时间:2024-05-02 21:59

【STM32】5分钟了解STM32的串口通信
一、串口通信简介 1.1 百度百科解释 来源百度百科 串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。 1.2 通信接口 1.3 串口通信分类 ▲ 全双工、半双工和单工 1.4 STM32串行通信的通信方式 插播一条反爬虫信息,读者可以忽略: 二、STM32的串口通信 ▲ USART 功能框图 2.1 功能引脚 TX: 发送数据输出引
[单片机]
【STM32】5分钟了解STM32的<font color='red'>串口通信</font>
STM323 USART串口通信中断实现
问题描述:利用stm32串口通信,当PC端发送字符8时,LED PB.0闪亮 第一步:配置系统时钟,这个不用多讲,代码就不贴出来了; 第二步:GPIO端口配置: 设置PA.9为复用推挽输出,PA.10为浮空输入,PB.0,PB.1,PB.2输出并初始化PB.0亮 void GPIO_Config() { GPIOA- CRH=0X04B0; GPIOB- CRL=0X0333; GPIOB- ODR=0X01; } 第三步:USART寄存器配置: void USART_Config() { USART1- BRR = 0x1D4C; U
[单片机]
ARM7与FPGA相结合的应用
  ARM7与FPGA相结合在工业控制和故障检测中的应用   工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。    各部分功能简介   图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控
[应用]
STM32成长记之USART--232串口通信
此处介绍最简单的USART使用。 USART基本特性: ● 全双工的,异步通信 ● 分数波特率发生器系统 ─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s ● 可编程数据字长度(8位或9位) ● 可配置的停止位-支持1或2个停止位 ● 检测标志 ─ 接收缓冲器满 ─ 发送缓冲器空 ─ 传输结束标志 ● 校验控制 ─ 发送校验位 ─ 对接收数据进行校验 ● 四个错误检测标志 ─ 溢出错误 ─ 噪音错误 ─ 帧错误 ─ 校验错误 ● 10个带标志的中断源 ─ CTS改变 ─ LIN断开符检测 ─ 发送数据寄存器空 ─ 发送完成 ─ 接收数据寄存器满 ─ 检测到总线为空闲 ─ 溢出错误 ─ 帧错误 ─ 噪
[单片机]
STM32成长记之USART--232<font color='red'>串口通信</font>
STM32串口通信详解
一.数据通信方式 1.串行与并行通信 按数据传送的方式,通讯可分为串行通讯与并行通讯。 串行通讯:是指设备之间通过一根数据信号线,地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式,同一时刻只能传输一位(bit)数据。 并行通讯:是指使用 8、16、32 及 64 根或更多的数据线(有多少信号为就需要多少信号位)进行传输的通讯方式,可以同一时刻传输多个数据位的数据。 串行通讯与并行通讯的特性对比: 并行可以同时发送多位数据所以速度比串行的速度要快很多,但并行要的数据线也更多相对成本会更高,而且并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能。 2.全双工、半双工及单工通讯 单工通信:
[单片机]
STM32<font color='red'>串口通信</font>详解
串口通信的理论极限及其实现
本文所说的串口,是指RS-232和RS-485串行口,不是硬盘SATA串口,也不是通用串口总线USB。RS-485是对RS-232进行了节点和距离的改进后形成的标准:RS-485将只能够进行一对一通信的RS-232改进到了可接128个节点,距离从RS-232的15米改进到1200米。在下一代RS-485总线的概念下,波仕卡科技将原本用于延长RS-485通信距离并且提高负载能力的中继器与用于信号转换的RS-232/RS-485转换器进行绑定,推出RS-232/RS-485中继转换器,同时对RS-485信号的流向进行整理,使得用户在使用时感觉就是一个RS-232与RS-485的转换器。这种思想体现在最新的《一种带中继功能的串口转换器》
[嵌入式]
风河公司将支持Sun公司UltraSPARC下一代多内核处理器
全球领先的设备软件优化( DSO )厂商风河系统公司日前宣布, Wind River 网络设备平台 Linux 版( Wind River Platform for Networking Equipment, Linux Edition )将被针对 Sun 微系统公司推出的新一代 UltraSPARC  T1 处理器进行优化并提供全面支持。风河先进的运行时( run-time )平台与 Sun 全新的开源 64 位多线程处理器架构的完美结合,将极大地改善高端 ATCA 应用的性能,为电信级设备供应商( TEM )和网络设备供应商( NEP )构建下一代计算密集型( compute
[焦点新闻]
基于STM32F103VCT6的微位移控制系统设计
0 引言 微位移控制系统是一种集机械、光学、电子和计算机等多种技术于一体的智能化仪器。在先进制造技术与科学研究中有着极其广泛的应用,也是现代工业检测、质量控制和制造技术中不可或缺的测量设备。微位移控制系统一般由微定位机构、微位移检测装置和控制器组成。控制器是微位移系统的指挥中心,它按照一定的控制算法控制微定位平台,使其按照一定的规律运动,来实现精确定位。 传统的三维微位移控制系统一般采用步进电机驱动滚珠丝杠来实现定位。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即每施加一个脉冲信号,电机就转动一个步距角,因此脉冲数与电
[单片机]
基于STM32F103VCT6的微位移控制系统设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved