本文针对多选翼飞行器
MANUAL:
ACRO: 飞行器的输入作用于roll、pitch和yaw的速率。油门直接作用于输出。
RATTITUDE:如果飞行器的输入大于该模式下的阈值,那么飞行器的输入将作用于roll、pitch和yaw。如果输入没有作为roll、pitch方向的角度命令和yaw的速率命令,那么油门将直接输出。
ANGLE: 飞行器的输入直接作为roll和pitch方向的角度命令和yaw方向的速率命令。油门将直接作用于电机的输出。
ASSISTED:
ALTCTL:
Multirotors:roll,pitch,yaw的大小为人为手动输入。油门的输入代表先前上升或者下降的最大速率。油门有最大的死区。
POSCTL:
Multirotors:Roll控制左右方向相对于地面的速度,pitch控制前后方向相对于地面的速度。当roll和pitch的大小在死区内,飞行器的位置将不会变化。yaw人为控制yaw方向的选择速率。油门和ALTCTL一样控制飞行器上升/下降速率。
AUTO:
AUTO_LOITER:
飞行器将在当前位置和高度下盘旋或者悬浮。
AUTO_RTL:
飞行器将以直线形式飞到当前高度或者悬浮高度,之后再着陆。
AUTO_MISSION:
飞行器遵循GCS(ground control station)的指令,如果暂时没有收到指令,飞行器将在当前高度下悬浮。
OFFBOARD:
在该模式下,飞行器的位置、速度或者姿态由计算机通过串口和MAVLink控制。
Architectural Overview
PX4由两个主要层构成:PX4飞行栈,飞行器软件和PX4中间层(可以支持任何自动机器人的中间层)。
全部的飞行器框架都共用一个代码库。该完整的系统设计是灵活的:
全部的功能都可以分为相互交换的部件
通信是通过异步消息交换完成
该系统可以在工作场景下工作
High Level Software Architecture
下面的每一个模块都是独立的模块,每个模块都有自己独立的代码,依赖项甚至运行时间。每个模块都通过uORB机制订阅和发布消息。
TIP: PX4的构架允许很方便快速的交换模块的信息。
PX4 Flight Stack
PX4飞行栈是飞行器的引导,导航和控制算法的集合。他包括固定翼,多旋翼和VTOL框架的控制器,还包括姿态和位置的评估器。
下图是一个典型块的应用的例子。取决于具体的vehicle,有些块可以结合成一个简单的应用。
PX4 Middleware
PX4中间层主要由几部分组成:传感器的驱动,将传感器连接应用层的发布-订阅消息的机制(基于中间层)。
发布-订阅机制:
该系统是激活状态的:当有新数据的时候,它会立即更新
全部并行运行
系统的部件可以在任何线程安全的情况下接收消息
Mixing and Actuators
PX4架构确保飞行器框架层在核心控制器中不需要特殊的处理。
混合意味着采用关于力学方面的命令(ex,向右转弯)并将他们转化为执行命令(控制电机)。
将混合的逻辑思想从实际的姿态控制器中分开可以极大的改进可靠性。
Key Concepts
PX4使用(输入)控制组和输出组。在概念方面很简单: 一个控制组(ex attitude,对关键的飞行控制; 或者 gimbal对载荷的控制)。一个输出组是一个物理总线,(eg 对伺服电机的前8个PWM输出)。这些组的每一个组都有8个归一化(-1..+1)的命令端口(这些端口可以通过mixer标出)。一个mixer定义了该控制口的8个信号是如何连接到输出的。
对于一个简单的平台,控制口0(roll)是直接连到输出0(elevator)的。对一个多旋翼会有点不一样:控制口0(roll)是连接到四个电机与油门的组合的。
Mapping
因为有多个控制组(飞行控制,载荷,etc)和多个输出组(前8个PWM输出,UAVCAN,etc)。一个控制组可以发送命令到多个输出组。
PX4 mixer definitions
ROMFS/px4fmu_common/mixers中的文件中将mixers用于预先定义的机身。他们可以用作自定义版本的基础,或者通常的测试。
Syntax(语法)
mixers的定义是text文件,在一个冒号后写一个大写字母作为一行的开头。
每个文件可以定义多个mixer,mixer对执行器的分配与设备有关,由mixer产生的执行器输出的数字与mixer有关。
tag中输入的是mixer的类型:R 多旋翼mixer
Null Mixer
null mixer不需要控制并产生一个值为0的输出信号。通常一个nullmixer在一个特定模式的执行器输出中被用作一个占位符。
Simple Mixer
一个simplemixer将0或者多个控制输入集成到一个执行输出中。输入会被标记,而且mixing function会在使用输出标刻前累加结果。
如果<control count>的值是0,sum也会是0,mixer将会输出一个固定的值(由lower limit 和 upper limit限制的offset)
第2行定义了输出的刻度,如果scale是10000的话,ie offset是-0.5,那么他将编译为-5000
当用于mix vehicle控制,mixer group 0是 vehicle的姿态控制组,index 值0 - 3分别对应于roll、pitch、ywa 和 throttle。
Multirotor Mixer
multirotor mixer 将4个输入(roll、pit、ywa、thrust)集成到一些列执行器的输出中,为了驱动电机和速度控制器。
每个roll、pit、yaw刻度值决定了roll、pit、ywa相对于thrust的刻度。 Whilst the calculations are performed asfloating-point operations, the values stored in the definition file are scaledby a factor of 10000; i.e. an factor of 0.5 is encoded as 5000.
roll、pit、yaw的输入范围期望值为 -1.0 to +1.0,尽管thrust的输入范围为0.0 to 1.0.每个执行器的输出为 -1.0 to 1.0.
In the case where anactuator saturates, all actuator values are rescaled so that the saturatingactuator is limited to 1.0.
PWM_limit State Machine
pwm_limit state machine 作为预解锁和解锁的输入函数,用于控制PWM输出。在解锁和解锁后油门增加这段时间内提供延迟。
Quick Summary
输入:
解锁:螺旋桨旋转
预解锁:良性行为的使能(控制接口)
该时刻的输入会覆盖当前的状态
突然的预解锁声明会使state变为 ON(不管当前的状态)
状态:
INIT和 OFF
PWM输出是上锁时的值
RAMP
pwm输出值会在上锁时的值上升到最小值
ON
根据控制值会输出pwm值