MP地面站二次开发教程(三)Mavlink通讯协议(3)地面站数据填充与显示

目录

1、界面布局​

2、基本参数的显示

3、UI初步设计​

4 、数传端口打开

5、GPS卫星数据显示

6、电量显示

7、飞控模式状态显示​

8、飞控数据报错显示


1、界面布局

 这边是参考了拓攻地面站的布局,但是基本上还是不一样的,删除MP地面站原本的冗余模式。只保留基本的信息显示和重要的消息和控制指令。飞机在目前的课程上这个地面站上是无法完成校准和参数设置的。这一阶段的地面站只考虑基本的功能,也是方便用户使用的地面站。目标是简洁,易于使用。因为要考虑到多机控制,所以该地面站设计有一个多机控制界面,多机控制界面是另外一个菜单界面,和这个界面还是有很大的不同。在多机控制那一章节会有介绍,这里不做讨论。

2、基本参数的显示

基本参数采用的是TabControl控件完成的菜单切换功能,里面是一些基本的数据信息和一些控制指令,显示高度,距离,空速,飞行时间等等。在基本操作里面是对飞控的一般的控制指令,前后左右方向,开伞,或者直接控制舵机的一些指令

3、UI初步设计

 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;

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
无名创新飞控开源地面站——NGroundStation 一、地面站开源初衷与下载链接: 无名创新飞控开源飞控地面站是无名小哥为广大自研飞控开发者、电子发烧友们专门开发的一款多功能上位机软件,地面站功能涵盖:飞控状态显示数据波形、参数调试、虚拟遥控器、飞控传感器校准串口助手常用等,开发此款地面站的初衷是方便大家高效学习与调试。 初学者在学习无人机飞控相关算法选择地面站时,个人小众开发者设计的地面站,在功能和性能上各有优缺点,无法兼容常用功能,而针对APM/PX4的开源地面站MP与QGC功能复杂,很多冗余的功能用不上,开发者需要自行移植并裁剪Mavlink协议来适配自己的飞控,导致开发者往往为选择一款合适的地面站而发愁,为兼容不同家地面站需要花一定功夫。 考虑到目前国内没有一家开源飞控地面站软件代码开源出来给大家学习,为了做到初学者也能简单高效的开发出满足自己需要的地面站软件,无名小哥选择采用QT开发平台,基于C++图形用户界面开发了此地面站软件,整个工程代码框架清晰,每个功能模块单独封装,注释详尽,使得有一定编程经验的初学者能对整个地面站软件运行逻辑一目了然,并能基于我们开源的地面站软件进行二次开发,后续会上线更多功能,地面站软件持续更新,欢迎大家公测,只要您是为了整个开源生态的建设,批评指正,拍砖打脸没关系。下面来依次介绍本地面站功能。 无名地面站下载:http://www.nameless.tech/download.html https://download.csdn.net/download/u011992534/12263480 开源地面站NGroundStation使用教程:https://www.bilibili.com/video/BV1JE411c7vU?from=search&amp;seid=4801164549946953127 无名创新开源地面站交流QQ群:465082224、540707961 无名地面站开源代码下载链接在文末 二、开源地面站的使用 2.1、主界面介绍与串口配置 无名创新地面站发布采用免安装的方式,用户在官方下载地面站后,直接解压后点击NGroundStation.exe运行即可,同路径文件夹下后缀为.dll依赖库文件不得随意删除,否则点击运行时,会报缺少xxx.dll文件。 用户打开地面站后进入如下主界面,导航栏有无名创新团队介绍与软件使用帮助,主界面有各个功能模块。首先第一步先点击配置串口: 点击后软件会自动搜索当前电脑可用的串口设备(USB转TTL设备、USB虚拟串口VCP、RS232/485等),若系统上没有可用设备时,软件会提示界面如下,此时请检查您的电脑有相关串口外设设备或者查看设备管理器是否有对应外设驱动。 软件会自动搜索当前可用串口设备,搜索出的串口号为对应外设的设备号,当存在多个串口设备时,需要自行勾选需要连接的串口。常用波特率可以通过波特率设置行下拉选择,同时若需要调试其它非常规设备,也支持手动输入任意波特率,手动输入时输入完毕后请点击电脑回车键进行输入确认,不点击回车键直接退出为无效输入。设置好串口设备后,退出设置界面。在主界面点击打开串口后地面站解析数据即开始工作。 飞控状态、数据波形、参数调试、虚拟遥控、飞控校准功能都是建立在地面站正常解析飞控数据的前提下,故当上述功能界面不能正常使用时,请回头检查串口配置和串口是否已经打开/占用。 2.2、飞控状态显示 飞控状态显示界面分飞控基本状态、罗盘与速度、航姿仪表、IMU数据、遥控器数据、观测传感器数据、姿态角度曲线等模块。用户可以通过地面站实时可视化观察无人机的常用状态。用户可以根据状态提示来了解无人机的各个参数。 2.3、数据波形显示 数据波形显示界面可以动态观察无人机关键状态的数据波形曲线,如分析各个传感器数据、姿态数据、惯导数据、控制指令等数据,在自己研究对比飞控算法性能、滤波器参数整定、突发故障异常分析过程中非常实用。无名创新地面站预留了6组用户数据通道可以供客户自行发送数据数据波形支持导入\导出,文件名为电脑系统时间精确到S,导出的csv格式数据可以很方便的用数值处理软件如Matlab、Origin等做后续数据处理分析。 2.4、参数调试 自研飞控开发者在学习过程中需要对结合不同的动力装对飞控PID参数进行调整,来确保无人机拥有稳定的飞行性能,关键参数为姿态内环—角速度环参数,主要工作是对角速度环PID参数进行整定,主PD,辅积分参数I。参数调试界面后,各个参数框中均为0,先点击读取参数,地面站会发送获取参数指令给飞控,地面站获取到飞控发上来的参数后会刷新UI界面显示当前飞控内部参数,需要调整参数时,手动在对应参数框中输入设定参数,点击写入参数后,飞控即保存参数于FLASH/EEPROM中,下次上电飞

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chris_Brown

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值