1. 背景

随着近些年来的无人机技术的快速发展,无人机已经广泛应用于了各行各业当中。
在这里插入图片描述

而由于无人机自身的复杂性,对于无人机的控制在一直以来都是一个难以跨越的门槛。
在这里插入图片描述

PX4是平台无关的一个开源自动驾驶仪软件,可以驱动无人机。它可以被烧写在某些硬件,并与地面控制站在一起组成一个完全独立的自动驾驶系统,这大大降低了无人机的使用门槛。
在这里插入图片描述

2. 需求分析

  • 实时性:由于无人机的高速运动,其必须具有良好的实时性。
    在这里插入图片描述

  • 可扩展性:可以根据需要扩展功能模块,进行二次开发。
    在这里插入图片描述

  • 稳定性:无人机是高精度仪器,一旦失控,整个系统就会崩溃。
    在这里插入图片描述

  • 易用性:主要面向非本领域内的人士,需要软件有良好的交互体验。
    在这里插入图片描述

    3. PX4软件设计

  • 原则:分而治之
  • 体系风格:严格分层
    • 优点:修改时的简单性
    • 缺点:效率低下
      在这里插入图片描述
      PX4系统分层示意图

3.1 特点

  • 运行时动态分配资源
    • 如,在前往目标点时,飞行控制是最优的,但碰到障碍物或收到风等干扰时需要切换优先级,首先避障或保持姿态平稳。
  • 无人机软件需要具有并发性、实时性、分布式、数据密集的特点:
    • PX4的架构能保证多种传感器高效运作,通过1000Hz或多种速率的嵌入式总线系统,保证读取传感器数据的中断时延小于4us,不同任务间信息交换时延仅25us。
    • 相对于Linux系统架构,PX4采用NuttX系统结合消息机制的中断在高负载情况下也能保持低时延。
  • 模型驱动:支持代码生成
    • 编译PX4固件时将自动生成创建、编译和使用PX4-FastRTPS桥接所需的所有代码。
  • 模块化设计:
    • 决策导航部分
    • 位置姿态估计部分
    • 位置姿态控制部分
    • 控制器输出部分
    • ……
  • 两种不同的模块执行方式
    • 任务(Tasks):模块在它自己的任务中运行,具有自己的堆栈和进程优先级
    • 工作队列(Work queues):模块在共享任务上运行,这意味着它没有自己的堆栈。多个任务在同一堆栈上运行,每个队列只有一个优先级。

4. PX4体系架构

  • 基于行为的架构:
    • 下图是行为的状态
    • 竞争方法有:Action Selection
    • 协作方法:飞行控制栈
      在这里插入图片描述
  • 飞行控制栈:
    • 包含了从传感器数据、RC控制量输入到自主飞行控制(制导控制器,Navigator),再到电机、舵机控制(执行器,Actuators)的全套通路。
      在这里插入图片描述
  • 中间件——uORB消息机制
    • 本质:异步通信
    • 读数据、处理数据、写数据
      在这里插入图片描述
      PX4数据流图

5. 机器人软件开发平台

PX4开放源代码和模块化的设计思路使得其在科研领域被大量用于二次开发。
在这里插入图片描述
软件在设计时便开放了许多接口用于软件调试及软件开发,而其基于Gazebo等机器人平台的仿真也使其代码的复用性被大大提高。

6. 软件质量管理

  • 开源:开放源代码是保证软件质量最好的方式,开放的源代码可以使用户或者领域内的专家将软件内的漏洞及时反馈。
    在这里插入图片描述

  • 构建用户社区:一个友好的交互氛围可以使用于与开发者之间进行积极的互动,能够更好地反馈用户需求以及改善用户体验,也可以将程序漏洞及时反馈。
    在这里插入图片描述

  • 代码维护:对于软件的代码无论在开发期间还是发布之后都需要专人定期维护。
    在这里插入图片描述

  • 软件功能测试:在软件的每个功能完成之后需要进行多轮黑箱测试与白箱测试,测试是发现软件质量问题最主要的方式。
    在这里插入图片描述

  • 模块化:采用模块化的方式基于线程或进程对于软件功能进行开发,这样可以大大减少软件出现致命错误导致程序崩溃的概率。
    在这里插入图片描述

  • 详尽的计划:在软件开发前,对软件开发流程制定一个周密的计划,对于软件的整体架构作出规划、对于其中的功能进行合理有效的解耦,规定各个模块间的接口规范。一个合理高效的软件框架可以最大限度地减少软件由于功能耦合所导致的错误。
    在这里插入图片描述

7. 软件项目管理

  • 团队建设:
    • 负责人:15人
    • 中坚力量是广大开发者
  • 项目估算:
    • 功能度:商业和实验用途,遵循BSD开源协议,允许修改后和衍生的代码作为闭源的商业软件发布和销售,不需要公开代码。
    • 成本投入:Auterion是PX4生态系统的最大贡献者,投入了1000万美金,使用代码的会员3DRobotics、高通、英特尔、昊翔Yuneec等投入资金支持。

8. 参考链接

[1] https://dev.px4.cc/master/zh/concept/architecture.html
[2] https://www.ncnynl.com/archives/201810/2613.html
[3] https://blog.csdn.net/senlin16888/article/details/51684274
[4] https://blog.csdn.net/weixin_43793960/article/details/106997523
[5] https://www.jianshu.com/p/f2a6ff89bf4e
[6] http://shequ.dimianzhan.com/articles/286