YYDS开源飞控PX4(1)简介
一、什么是飞控?
飞行控制系统(Flightcontrolsystem)简称飞控,可以看作飞行器的大脑。多轴飞行器的飞行、悬停,姿态变化等等都是由多种传感器将飞行器本身的姿态数据传回飞控,再由飞控通过运算和判断下达指令,由执行机构完成动作和飞行姿态调整。
飞控可以理解成无人机的CPU系统,是无人机的核心部件,其功能主要是发送各种指令,并且处理各部件传回的数据。类似于人体的大脑,对身体各个部位发送指令,并且接收各部件传回的信息,运算后发出新的指令。例如,大脑指挥手去拿一杯水,手触碰到杯壁后,因为水太烫而缩回,并且将此信息传回给大脑,大脑会根据实际情况重新发送新的指令。
无人机飞控一般包括传感器、机载计算机和伺服作动设备三大部分,实现的功能主要有无人机姿态稳定和控制、无人机任务设备管理和应急控制三大类。多轴无人机机身大量装配的各种传感器,包括GPS、气压计、陀螺仪、指南针以及地磁感应等,可以采集角速率、姿态、位置、加速度、高度和空速等,是飞控系统的基础。机载计算机作为无人机的CPU,是飞控的中枢系统,类似于人体大脑的中枢神经,负责整个无人机姿态的运算和判断;同时,也操控着传感器和伺服作动设备。
二、PX4是什么?
PX4是由苏黎世联邦理工学院的计算机视觉与几何实验室的一个软硬件项目PIXHAWK演变而来,有"开源飞控之王"之称,目的在于为学术、爱好和工业团体提供一款低成本高性能的高端的自驾仪,PX4是专业的自动驾驶仪。它由来自工业界和学术界的世界级开发人员开发,并得到活跃的全球社区的支持,为各种载具提供支持。
PX4目前由Dronecode基金会进行支持和运行,遵循BSD协议,该协议允许将开源软件二次开发后用作商业用途。目前广泛应用于视觉导航、视觉避障、多机协同、目标跟踪等用途.
三、PX4能做什么?
1.PX4支持的载具
(1)多旋翼机
包括:三旋翼、三轴六旋翼、四旋翼、四轴八旋翼、六旋翼、六轴十二旋翼、八旋翼。
(2)直升机
包括:单旋翼带尾桨和共轴双旋翼直升机。
(3)飞艇
(4)固定翼无人机
包括:飞翼、标准布局、V尾、A尾
(5)无人车及无人船
包括:单电机带转向舵和双电机差速转向
(6)水下机器人
包括:六自由度BlueRov2
(7)垂起Vtol
包括:标准垂起、倾转式垂起、尾座式垂起
(8)旋翼机
2、支持的飞控硬件
1.fmuv2版本:cortex-m4内核,内存1MB,有协处理器
2.fmuv3版本:cortex-m4内核,内存2MB,有协处理器
3.fmuv4版本:cortex-m4内核,内存2MB,无协处理器
4.fmuv4pro版本:cortex-m4内核,内存2MB,有协处理器
5.fmuv5版本:cortex-m7内核,内存2MB,有协处理器
6.fmuv5x版本:cortex-m7内核,内存2MB,有协处理器
7.fmuv6x版本:cortex-m7内核,内存2MB,有协处理器
aerotenna ocpoc 、 mindpx-v2、beaglebone blue、crazyflie、intel aerofc-v1、nxp fmuk66-e、nxp fmurt1062-v1、omnibus f4sd。
四、PX4系统架构
PX4软件架构主要包括两部分,分别是:
·飞行控制栈(Flight Stack):用于估计和控制无人系统;
·中间层(Middleware):提供内部及外部的通信和硬件集成。
需要注意的是,针对各种载具机型,PX4都共用一个代码库,完整的系统设计是反应式的,这意味着:
·所有的功能都可分为可交换和可重复使用的;
·通信是通过异步通信完成的;
·该系统可处理大量工作。
下图展示的是PX4软件架构概述
实际运行中PX4信息传递十分复杂,上图箭头仅表明部分重要信号传递的方向,
如参数更新的消息在多数模型中都有调用,而在上图中并未标出。
图 2上半部分包括外部通信(External Connectivity)、存储Storage)、驱动(Drivers)以及信息总线(Message Bus)就是PX4中间层的内容,而下半部分飞行控制(Flight Control)指的就是飞行控制栈。
其中飞控内部模块之间的通信使用订阅-发布机制,将其命名为微对象请求代理器(Micro Object Request Broker,uORB),其具有以下特点:
·系统是响应式的,即异步通信;
·所有的操作和通信都同步进行;
·系统组件可以以线程安全的方式使用来自任何地方的数据;
·这种结构使得即使是在运行的过程中,模块也可以方便地被替换或修改。
1.中间层
除上图 2标示的中间层具有的存储、传感器驱动、与外部设备和内部模块间
通信之外,中间层还包括仿真功能,可使PX4运行在桌面操作系统下,并控
制仿真环境中的无人机模型,实现对飞控程序正确性的验证。
2.飞行控制栈
飞行控制栈是无人器导航、制导与控制的集成,负责各种类型载具的控制
与位姿估计,其结构框图如下所示。
其中:
·传感器(Sersors)包括板载IMU、GPS、气压计等模块,获取原始的无人机位置姿态信息;
·位置和姿态估计器(Estimator)接收一个或多个传感器的输入,它们进行融合并计算无人器的实时位置和姿态信息;
·控制器(Controller)将设定点和测量值或估计值作为输入,计算控制量使得无人器达到设定点;
·导航(Navigator)模块生成无人器参考轨迹;
·混控器(Mixer)将无人器的力和力矩分配至每个执行器,并且确保不超过其限度;
·执行器(Actuator)在传统多旋翼中即是旋翼动力单元,包括电子调速器、电机和螺旋桨三个部分,在其他类型的载具中可能还有起落架、舵面等其他类型执行器。