Giter Site home page Giter Site logo

rovdataacquisitionsoftware's Introduction

小型ROV数据采集上位机软件

设计说明书

一、软件介绍

本软件是一款小型遥控无人潜水器(Remote Operated Vehicle,ROV)数据采集和命令控制岸基终端上位机软件。ROV即无人水下航行器的一种,主要用于执行海事、渔业、海上救助、管线探测等复杂水下领域的作业任务。本软件用于控制并接收ROV作业时的实时状态,对ROV所处环境以及系统的正常运行进行检测。主要反馈ROV所处位置、水下深度、运动姿态等信息。发送定航、悬停、定深任务命令使ROV搭载其他检测设备准确运动到固定位置。当ROV某运行设备损坏或者因水下不可抗力原因失灵时及时发送反馈报警信息在上位机显示,提示用户进行处理。本上位机软件正常运行时会实时保存ROV运行参数以及动态绘制实时参数图,供用户随时查看。

本软件前端UI部分采用WPF开发,用于显示ROV运行状态参数和控制ROV运动路线;后端数据处理部分采用C Sharp开发,用于逻辑判断、数据处理并存储;外部接口部分调用开源的百度地图API实时显示地理位置信息。

二、软件安装

  • l Step1 安装软件:双击运行“ROVSetupProject.msi”安装文件如图1。

image-20211127134118990

  • l Step2 安装向导:跳出安装向导,点击下一步,如图2。

image-20211127134210193

  • l Step3 选择安装目录:建议修改默认安装目录,默认安装目录如图3。

image-20211127134524594

  • l Step4 确认安装:点击下一步,如图4。

image-20211127134550221

  • l Step5 等待安装完成,安装进度和安装完成如图5。

image-20211127134632126

  • l Step6 安装完成后在桌面及开始菜单面板出现快捷方式,如图6。

image-20211127134659606

三、软件功能以及使用说明

1、软件运行环境

  • 运行测试环境:

  • 操作系统:Windows 10 家庭中文版。

  • 版本号:20H2

  • 处理器:Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz 2.59 GHz

  • 机带RAM:16.0 GB

  • 系统类型:64 位操作系统, 基于x64的处理器。

  • 显卡类型:NVIDIA GEFORCE GTX1650 4G显存。

  • 设计编辑器:Visual Studio 2019.

  • 运行框架:.net framework 4.7.2

  • 设计语言:C#

  • 前端UI:Windows Presentation Foundation (WPF)

2、软件总体设计结构

本软件前端数据展示和后端数据处理采用MVVM架构,MVVM是Model-View-ViewModel的简写,是一种行为抽象化的设计模式,这种模式的引入就是使用数据处理层来降低视图层和数据持久层的耦合,即降低界面和逻辑的耦合。采用此方式设计的本软件界面更改时不需要对逻辑代码进行改动,同时本软件后台逻辑更改时也不需要更改界面设计。基于此模式,本软件前台数据表格展示和数据曲线图展示绑定的逻辑层可减少为一处,解决了上位机软件接收数据的分发问题,大大增加了开发效率,MVVM模式如图8所示。

image-20211127135058226

基于MVVM设计模式,利用其消息分发机制,从ROV反馈回来的数据经过无线电台到达上位机串口接收,再分发到各个页面进行逻辑判断。上位机各个页面发送的命令数据都汇总于串口页面,经串口发送到ROV下位机。实现一种订阅、发布的消息机制,其结构如图9所示:

image-20211127135119841

利用这种消息分发机制,设计软件总体模块,包括:ROV运行数据显示、串口调试助手、ROV运动控制、PID运动控制、数据存储和表格回显、实时曲线运动状态图、实时定位显示以及仿真图展示功能。实现ROV运动姿态的实时监控、ROV微小运动控制、ROV自主航行控制、ROV位置追踪等功能。本软件总体设计功能如图10所示:

image-20211127135144334

3、软件功能使用

1. 数据首页

双击小型ROV数据采集上位机软件启动后如图11所示:

image-20211127135302728

图11的启动界面为ROV运动姿态数据展示,各部分功能如下:

左下部分包括水下ROV的运动姿态数据:X轴、Y轴、Z轴各个方向的角度:单位°、角速度:单位°/s、加速度:单位g。

左上部分基于三轴的角度数据模拟的ROV实时三维动态模型。

右上部分为实时时钟刻度显示。

右下部分为多普勒测速仪(DVL)的数据展示:包括ROV前向速度、侧向速度、垂向速度:单位m/s,以及离底高度:单位m,右侧为离底高度圆形进度条可视化显示。

此页面为软件开启初始界面,需接收登录界面传输过来的数据进行显示,若不登录,即串口无连接,则此页面各数据初始都为0。其功能结构模块如图12所示:

image-20211127135408788

2. 窗口及导航按钮

本上位机软件左侧为导航标签,共8个导航页面,分别对应8个不同功能页面,下文详细讲述,导航栏如图13所示:

image-20211127135509847

image-20211127135527116

上位机右上角为窗口功能按钮:从左到右分别为登录按钮(串口登录按钮),登录成功后显示头像、最小化窗口按钮、最大化串口按钮、关闭窗口按钮。

3. 登录界面

点击右上角登录按钮跳出登录界面,如图15所示:

image-20211127142034948

image-20211127142046523

初次开启登录界面右上角为红色图标,表示未连接下位机ROV。软件自动检测电脑串口环境,并在串口号下拉框中显示可连接的COM口,选择对应的波特率、停止位、数据位、校验位。点击登录按钮。若连接成功按钮提示断开且右上角图标变为绿色,如图16所示。

串口连接成功(即登录成功)后,下位机ROV数据实时传输至本上位机,后台数据处理后分发至各页面用于数据展示;或实时监听各个页面发送的命令准备发送至下位机ROV。同时数据存储功能启用,每隔设定时间(暂设60秒)存储一次全部数据至安装目录下的固定文件夹内,以Excel的形式保存,按日期更换文件名。若已成功连接,则可点击退出按钮,登录界面隐藏,后台数据任实时接收或发送中。

4. 调试界面

点击调试界面导航栏按钮出现如图17界面。

image-20211127142129875

此界面实现ROV串口调试功能,左上模块为串口接收数据区,以时间戳的形式接收;左下模块为串口发送数据区,其右侧为发送按钮,下方为数据接收发送计数;右侧功能按钮分别为:关闭/开启接收数据按钮、清空接收区按钮、清空发送区按钮、清空计数按钮。

若上位机登录成功,则下位机ROV发送回的数据可在此实时显示,也可手动发送控制命令以指示ROV航行。其功能结构模块如图18所示:

image-20211127142224415

5. 控制界面

点击控制界面导航栏按钮出现如图19界面。

image-20211127142257811

此界面实现ROV运动控制功能,界面左侧方向键按钮分为两组,上面一组分别控制ROV纵向运动:即上浮、下浮、左移、右移。下面一组分别控制ROV横向运动:即左旋、右旋、前进、后退。都是微小运动。中间为停止按钮,旁边有滚动字符提示框用于显示当前运动状态。界面中间为速度控制滑动条,分为速度双模控制,速1控制连续速度状态,速2控制阶段速度状态,下面为速度状态发送按钮。速度控制右侧为深度计反馈当前距水面高度数值。

界面右侧5个电机PWM转速反馈数值显示。界面功能结构模块如图20所示:

image-20211127142342196

6. PID模式控制

点击PID模式控制导航栏按钮出现如图21界面。

image-20211127142423201

此界面实现ROV运动过程中的PID控制以及自动航行功能。界面左侧为PID控制面板,分别为角度环、速度环、深度环3环串级Kp、Ki、Kd数值。都可单独设置,设定完成后可点击设置PID按钮发送数值给下位机ROV;也可点击保存设置按钮,下次启动上位机软件可保留上次存储的数值。界面下方为下位机ROV反馈回来的当前设定PID数值。界面右侧为自动航行控制面板,分别为定航、悬停、定深单选框,下方为定航方向和定深深度设定条,当前状态会在滚动条展示。界面功能结构模块如图22所示:

image-20211127142447322

7. 数据表展示

点击数据表展示导航栏按钮出现如图23界面。

image-20211127142517830

此界面展示ROV反馈回来的状态数值。继登录界面连接ROV成功后,数据存储功能就自动开启,每隔固定时间(暂设60秒)存储一次姿态、DVL、PWM转速等数值于Excel表,右侧按照日期天数显示所有数据表,双击具体表格即可显示当天存储的数据。数据表列名从左到右分别为列名,用户头像,角度X、Y、Z,角速度X、Y、Z,加速度X、Y、Z,DVL三向速度,DVL高度,深度计测数,5电机PWM数值等信息。界面功能结构模块如图24所示:

image-20211127142534658

8. 实时曲线图

点击实时曲线图导航栏按钮出现如图25界面。

image-20211127142922675

此界面展示ROV实时运动状态数据曲线。数据来源为ROV实时状态数据,不是存储的数据表中历史数据。每组曲线图实时显示15个当前数据点,每隔固定时间(暂设1秒)更新数据。界面从上到下第一组为ROV姿态角度三轴数据,第二组为ROV姿态角速度三轴数据,第三组为ROV姿态加速度三轴数据,第四组为ROV三向运动速度数据,第五组为深度计和DVL高度计数据。继登录成功(连接下位机ROV)后,此界面即已启动后台显示,界面功能结构模块如图26所示:

image-20211127142938300

9. 实时定位图

点击实时定位图导航栏按钮出现如图27界面。

image-20211127143010770

此界面用于显示ROV实时位置信息。调用开源的百度地图API实现,引用遵循oath2.0开源协议。中心红色标注代表ROV反馈回来的具体地理坐标位置,每隔固定时间(暂设3秒)更新位置信息。下方功能按钮从左到右分别为定位开启/关闭开关,测距按钮,清除标注按钮,实时跟踪开关按钮。开启实时跟踪会以标注的形式描绘ROV运动,然后运用测距功能测量路程信息。界面功能结构模块如图28所示:

image-20211127143026355

实时追踪开启和测距效果如图29所示:

image-20211127143040384

10. 仿真展示

点击仿真展示导航栏按钮出现如图30界面。

image-20211127143114775

此界面显示ROV仿真效果图,我们对下位机ROV制作了一款仿真环境,在此界面轮播展示。下方为本软件制作平台和开发环境简要信息,以及作者和技术使用联系方式。界面功能结构模块如图31所示:

image-20211127143132643

4. 软件创新点

  1. 扁平化的设计界面和人性化的交互方式。

  2. 软件采用松耦合的设计模式,节省资源开销,运行更加流畅。

  3. 在水下ROV控制及反馈领域提供设计经验。

四、软件故障排除

本软件所有功能为自主设计开发,遵循开源协议。在使用本软件时经测试可能会出现以下两种错误情况,在此进行说明:

  1. 在展示数据表界面时,双击某张表格可能会弹出如图32所示的错误信息。此错误提示表明该表被认为修改过数据或者修改过表格信息,或者该表使用外部Excel工具修改过数据也会弹出此界面,点击OK可消除错误信息,数据正常显示,但显示的是外部修改后的数据记录,若在本软件中修改则不会产生如下错误。

image-20211127143243710

  1. 在登录界面连接下位机ROV时,若弹出如图33所示信息,则表明下位机连接失败:下位机ROV已跟其他上位机连接;电脑端指示该下位机ROV的串口已被占用;登录界面串口号、波特率、停止位、数据位、校验位匹配失败等。都可能会弹出此界面信息,请仔细检查连接参数,重新连接。

image-20211127143304873

五、使用开源技术

  • 框架:Microsoft WPF
  • 设计模式:MVVMLight
  • Excel:NPOI
  • 界面UI:HandyControl
  • 图表:LiveCharts
  • 地图:百度地图API

喜欢的话点个star亲!

rovdataacquisitionsoftware's People

Contributors

xiaobeibi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.