MP地面站二次开发教程(三)Mavlink通讯协议(3)地面站数据填充与显示
目录
1、界面布局
2、基本参数的显示
3、UI初步设计
4 、数传端口打开
5、GPS卫星数据显示
6、电量显示
7、飞控模式状态显示
8、飞控数据报错显示
1、界面布局
![](/assets/blank.gif)
这边是参考了拓攻地面站的布局,但是基本上还是不一样的,删除MP地面站原本的冗余模式。只保留基本的信息显示和重要的消息和控制指令。飞机在目前的课程上这个地面站上是无法完成校准和参数设置的。这一阶段的地面站只考虑基本的功能,也是方便用户使用的地面站。目标是简洁,易于使用。因为要考虑到多机控制,所以该地面站设计有一个多机控制界面,多机控制界面是另外一个菜单界面,和这个界面还是有很大的不同。在多机控制那一章节会有介绍,这里不做讨论。
2、基本参数的显示
基本参数采用的是TabControl控件完成的菜单切换功能,里面是一些基本的数据信息和一些控制指令,显示高度,距离,空速,飞行时间等等。在基本操作里面是对飞控的一般的控制指令,前后左右方向,开伞,或者直接控制舵机的一些指令
3、UI初步设计
![](/assets/blank.gif)
UI的设计第一点是布局的设计,这部分如果是大型软件,都是有专门的UI设计工程师来完成。包含人机交互,设计美学功底,甚至要有使用工程师的高度参与。这也是为什么不同的地面站,外观差别很大。这和软件的设计理念有很大关系,向MP的地面站,因为是考虑给研发调试人员用的,所以有比较丰富调试接口。但是这样就给实际使用带来了冗余,也导致了软件会有BUG,带来了软件的不稳定性。单纯从使用功能上讲地面站软件不是一个非常复杂的软件,是一个中等规模的软件。这也是我们设计软件的出发点,功能尽量简洁够用,然后逐步细化,优化。长期维护一个相对比较简洁到的地面站。如果对于界面的UI设计,有特殊要求的,可以修改,包括HUD界面都是底层的绘图操作,还是比较简单的。市场上也有很多提供现成航空UI控件,可以授权购买,也很方便。适配屏幕的dock操作也是重点
4 、数传端口打开
数传端口主要是设计打开数传连接和关闭数传连接,涉及到连接成功的检查,还有数传连接的信号强度设计显示。 理解:
dv1 = new Device()类dv1.Start();//start函数完成的功能异步显示反馈对话框 ProgressReporterDialogue连接寻找心跳包的委托 FrmProgressReporterDoWorkNOParams
5、GPS卫星数据显示
Gps_nmulabel.Text = MAV.cs.satcount.ToString();//显示GPS卫星数量CurrentState 重点是这个状态类的理解,里面存放了飞控的所有状态,是一个飞控mavlink消息的缓冲区。
6、电量显示
系统状态包里面是显示系统电量的,系统电量的显示,要校准飞控测量出的电压和真实电量电压,得出校准偏移量。
public struct mavlink_sys_status_t
{/// <summary> Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR MAV_SYS_STATUS_SENSOR</summary>public /*MAV_SYS_STATUS_SENSOR*/uint onboard_control_sensors_present;/// <summary> Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR MAV_SYS_STATUS_SENSOR</summary>public /*MAV_SYS_STATUS_SENSOR*/uint onboard_control_sensors_enabled;/// <summary> Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR MAV_SYS_STATUS_SENSOR</summary>public /*MAV_SYS_STATUS_SENSOR*/uint onboard_control_sensors_health;/// <summary> Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 </summary>public ushort load;/// <summary> Battery voltage, in millivolts (1 = 1 millivolt) </summary>public ushort voltage_battery;/// <summary> Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current </summary>public short current_battery;/// <summary> Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) </summary>public ushort drop_rate_comm;/// <summary> Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) </summary>public ushort errors_comm;/// <summary> Autopilot-specific errors </summary>public ushort errors_count1;/// <summary> Autopilot-specific errors </summary>public ushort errors_count2;/// <summary> Autopilot-specific errors </summary>public ushort errors_count3;/// <summary> Autopilot-specific errors </summary>public ushort errors_count4;/// <summary> Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery </summary>public byte battery_remaining;};
7、飞控模式状态显示
System_modelabel.Text = MAV.cs.mode;//mode飞机当前模式状态Firmware_label.Text = MAV.cs.firmware.ToString();//固件类型
8、飞控数据报错显示
messageHight为系统报错的成员,系统的一些报错在里这里面显示。注意:这个成员函数对于Ardupilot固件是有效的,PX4的系统报错显示不是用的这个消息成员。这个变量在PX4固件里面是没法打印出来的,需要根据PX4源码的mavlink部分来调试解析,因为这个MAVLINK库是从Missionplanner处剥离出来的,所以有一部分代码是对PX4的兼容性不是很好,我们需要分析PX4的源码来修改一些地方。这个源码框架我也比较建议是不同固件做不同的编写,比如四旋翼是四
旋翼的地面站,固定翼是固定翼专门的地面站,PX4是专门的地面站。不在一个地面站里面做所有机型,飞控的兼容性配置,这样会极大的降低地面站编写的复杂程度。
if (massag_error != MAV.cs.messageHigh)//如果这次的报错和上次的不一样,就更新本次的报错内容,防止textbox重复循环打印报错{Error_box.AppendText("错误/警告:" + dv1.comPort.MAV.cs.messageHigh + "\r\n");}massag_error = MAV.cs.messageHigh;
MP地面站二次开发教程(三)Mavlink通讯协议(3)地面站数据填充与显示相关推荐
- MP地面站二次开发教程(一)开发环境搭建和编译
目录 基于Mavlink的上位机地面站开发教程 第一节 开发环境搭建 1.预编译 (源码尽量放到非中文目录下面) 2.初次编译 3.删除这个speech引用,重新引用这个speech包(每个人的环 ...
- MP地面站二次开发教程(五)简易地面站多机控制系统框架
目录 一 .硬件框架 二.使用方式 三.软件框架 1.设备链表 没添加一个载具/飞机,就在链表里面添加一个实例化了的类(飞机/载具对象) 2.Device类包含了串口和TCP通讯的方法,添加一个新的载 ...
- MP地面站二次开发教程(三)Mavlink通讯协议(4)地面站数据显示调试及其指令填充
目录 1.利用SimpleExample和Mavlink inspector的调试使用 2.Mavlink设置模式指令的填充 3.Mavlink控制指令的填充 4.MAV_CMD 在地面站做一些显示和 ...
- MP地面站二次开发教程(四)地面站优化及其功能测试
目录 1.GMAP图片加载 2.实时路径显示与地图纠偏 3.指令发送的添加 前面章节已经描述清楚指令和航点的上传,有些优化和功能测试的工作在接下来的章节里面完成 1.GMAP图片加载 我们要实现上图所 ...
- QGC地面站二次开发(三)Qt 简洁地面站
目录 多机控制原理 多机控制实现 简洁地面站优化 1. 飞机的飞行轨迹以不同的颜色区分 2. 控制所有的飞机 3. 将设定航线送给特定的飞机 多机控制原理 多机地面站支持 TCP. UDP 和串口等三 ...
- qgc开发文档_QGC地面站二次开发教程二
上一次带大家进行了ubuntu下的Q Ground Control安装与编译,这次教大家对地面站的页面进行修改,对按钮或者页面进行删减,如何添加下次再说吧,我还没研究明白. 一开始打开qgroundc ...
- shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...
shopify二次开发教程 by Chris Frewin 克里斯·弗里温(Chris Frewin) 详细教程:如何将Shopify的Storefront API与React和Redux结合使用 ( ...
- MIP开发教程(三) 使用MIP-CLI工具调试组件
一 . 在 mip-extensions 仓库中创建新的组件 二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发 ...
- 来自damon的zencart二次开发教程-3.1开发自己的zencart模板
转载自:http://www.yunxiu.org/blog/ 今天在网上FQ看到一篇老外写的,关于制作zencart模板的文章.<Creating a new Zen Cart Templat ...
最新文章
- python实现平衡二叉树_LeetCode 110. 平衡二叉树 | Python
- nginx安装包 linux,Linux(CentOS)环境下安装下载Nginx并配置
- 程序员正在消失!90%的人都不知道,写不出好代码,是输在了这点上!
- docker klee tutorial_在容器中安装新的程序
- Caffe应用篇----文件格式转换
- android系统签名app自动更新,【Android 进阶】Apk 使用系统签名
- 按120分计算成绩 mysql_Mysql实用教程试卷B.doc
- 二、MyBatis系列:全局配置文件
- 5G加速向纵深发展 中国电信联合产业链开展“5G创新终端商用合作行动”
- 面经自己汇总(三维视觉算法机器学习深度学习)——持续更新
- AD域渗透 | PTHPTK哈希传递攻击手法
- 从实例来看DAO:权力分散的伟大尝试
- 外汇基础学习1:结售汇
- Windows11系统农业银行企业K宝无法正常使用的解决方法
- ROS雷达包出现:ERROR: cannot launch node of type: rplidar_ros
- java写100以内的素数_求出100以内的素数(java实现)
- loc,iloc,ix的区别
- 使用C语言+EasyX完成消灭星星游戏(2)
- 超棒的Google web字体查询工具 - Best Web Fonts
- 专访币印潘志彪:一直想把算力控制权交还矿工
热门文章
- 【三维点云】2-三维点云表征
- [python] 关于sum函数:sum(-1)、sum(1)、sum(0)以及keepdims=True的说明
- 基于tensorflow + Vgg16进行图像分类识别
- 『默哀』你的梦或许因为这个新闻而碎了【用你的程序语言 抛出一行异常】
- Unity UI带阴影的切图 某些角度出现黑边解决方案
- 高铝水泥与硅酸盐水泥或石灰混合使用
- 高精度定位成就智能物联|高精度定位的“智能化”进化史
- leetcode43(字符串相乘:模拟乘法竖式计算)
- JEEWX微信企业号管家,开源免费,1.0版本发布
- 求偏移量并且设置约束