在介绍开源无人机二次开发体系之前,首先要掌握一些开源无人机生态系统中非常重要的协议和软件。事实上,Pixhawk硬件并不孤单,它具有完整的软件生态链,共同组成无人机系统的各个组成部分,而这个开源无人机生态系统就是Dronecode基金会项目(dronecode.org)。本节将在介绍Dronecode的基础上,介绍几种开源无人机二次开发的主要方法。
Dronecode是由Linux Foundation所主导的无人机开源项目基金会。除Pixhawk硬件和PX4软件本身外,Dronecode还资助了MAVLink、QGroundControl和MAVSDK等项目。
❀ Dronecode的官方网站为https://www.dronecode.org/
MAVLink(Micro Air Vehicle Communication Protocol)是无人机与地面站之间的一种轻量级的链路通信协议。通过MAVLink协议,即可通过一系列的方法获取无人机的状态信息,并向飞行控制器上传任务。因此,MAVLink协议可算是Dronecode的核心技术。Dronecode还为MAVLink提供了针对于C++、Python、Java、Objective-C等多种语言的软件开发工具包(SDK),即MAVSDK。MAVSDK是由Auterion创业公司在2019年首次推出的。
除MAVLink外,Dronecode正在研发新一代的链路协议RTPS,其扩展性将比MAVLink更加强大。
QGroundControl(QGC)是在Apache 2.0和GPL 3协议下分发的开源无人机地面站(Ground Control Station)系统,可以运行在Windows、Mac OS和Linux桌面操作系统,以及Android和iOS移动操作系统上。QGC通过MAVLink协议对APM或者Pixhawk飞行控制器发送控制指令,并回传状态信息。QGC的用户界面基于Qt QML构建,美观且实用,如图1-5所示。
图1-5 QGC的用户界面
由于开源无人机系统的整个软硬件非常透明,任何人都可以探索和学习整个Dronecode资助项目的所有代码,因此开源无人机系统的二次开发可以通过以下几个途径入手。
如果用户需求需要在无人机上搭载复杂且需要自动化控制的设备载荷,或者需要实时执行某些特殊的算法,可以直接修改或扩展PX4或APM固件,从而满足此类需求。PX4固件包括实时操作系统、中间件和控制层三个层次。一般来说,如果无人机需要新增自动化的载荷设备,则需要在中间件层入手开发;如果无人机仅需要从控制或者算法层面扩展功能,可直接在控制层着手开发。
MAVSDK提供了较为完整的MAVLink协议的控制功能。如果开发者希望针对特殊用途的无人机开发独立的地面站,则最好的方法就是使用MAVSDK构建应用程序。
当用户需求仅需要在软件层面上稍许扩展功能,则可直接在QGroundStation上进行代码的修改和扩展。这种方式可以最低的成本快速解决问题。
总之,开源无人机的二次开发方法非常灵活。但是,由于这些开源资料本身就非常有限,中文资料更是少之又少,因此对开源无人机进行二次开发的难度较大。特别是开源无人机常常需要自行装配和调参,面对冷冰冰的硬件和大量的开源代码,需要开发者具备较强的阅读和组织代码的能力,也需要开发者较为全面地掌握无人机的原理知识。
❀ 除Dronecode软件生态系统外,开源世界中还存在OpenPilot、Crazepony等小众的开源飞行控制平台,读者也可基于这些无人机平台进行二次开发。