多旋翼无人机的飞行控制算法主要涉及到自动控制器、捷联式惯性导航系统、卡尔曼滤波算法和飞行控制PID算法等部分。
自动控制器是无人机飞行控制的核心部分,它负责接收来自无人机传感器和其他系统的信息,并根据预设的算法和逻辑,对无人机的姿态、速度、位置等进行控制。控制器通过控制无人机的电机,使无人机能够按照期望的姿态、速度和位置进行飞行。
捷联式惯性导航系统则是一种自主式的导航方法,利用载体上的加速度计、陀螺仪等惯性传感器,测出飞行器的角运动信息和线运动信息,再结合初始姿态、初始航向、初始位置等信息,推算出飞机的姿态、速度、航向、位置等导航参数。
卡尔曼滤波算法是一种以最小均方误差为估计最佳准则的递推估计算法。它利用前一时刻的估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。在惯性导航系统中,卡尔曼滤波算法被广泛应用于对导航参数的估计和修正。
飞行控制PID算法是工程应用领域中最简单、最有效的控制方案。PID控制器根据给定值和实际输出值构成控制偏差,然后利用偏差给出合理的控制量,实现对无人机姿态和轨迹的控制。在多旋翼无人机的飞行控制中,PID控制器被广泛应用于对无人机姿态、速度等的控制。
此外,闭环控制是多旋翼无人机飞行控制的重要原理之一。通过形成闭环控制,无人机能够实现稳定的飞行。在姿态模式中,无人机通过接收来自遥控器的期望姿态信息,控制器通过控制各电机油门实现对期望姿态的跟踪,从而实现稳定的飞行。
无人机飞控软件的架构通常包括以下几个主要部分:
应用层:
这是整个飞控系统运行的核心。飞控日常飞行所用到的模块基本上都在这层,包括姿态控制,状态估计,导航模块等等,以完成多旋翼和固定翼完全自主的航点飞行。应用层可以使用其他的控制软件,如APM:Plane、APM:Copter,但必须运行于中间层之上。
中间层:
这一层提供设备驱动和一个微对象请求代理(micro object request broker ,uORB),用于飞控上运行的单个任务之间的异步通信。这一层运行于操作系统之上,负责通讯功能。
NuttX操作系统层:
这一层提供给用户操作环境,进行底层的任务调度。NuttX是一个嵌入式实时操作系统(RTOS),其结构分层包括以下几个部分:NSH(Nuttx Shell)和APP层:这是实际的应用层,是应用程序或者说是终端。Virtual File System(虚拟文件系统)层:该层主要作用是将对设备的操作,转化为对虚拟文件的操作。Upper Half Drivers(上层驱动)层:这层驱动实现的是对各种设备的操作接口的定义,比如PWM,Network,Graphics等,可以认为是系统的API。Lower Half Drivers(下层驱动)层:这一层负责与硬件直接交互,实现对硬件设备的驱动。Microcontroller + Peripherals(微控制器+外设)层:这一层包括微控制器和外设,是NuttX操作系统直接控制的硬件设备。
底层驱动层:
这一层提供系统运行所需要的硬件驱动,如一些传感器、执行器等。无人机飞控的底层驱动层主要作用是对硬件外设接口进行初始化,配置为所需工作模式。具体来说,底层驱动层的主要任务包括:初始化定时器,如TIM3和TIM7,分别配置为PWM输出模式和10ms定时中断模式,以满足飞行控制系统的不同需求。初始化串口USART1,配置合适的波特率、数据格式、停止位和校验方式,以与S-bus遥控器接收机进行通信,获取必要的飞行控制信号。
在飞控系统中,应用层所有的功能被独立以进程模块为单位进行实现并工作,而进程间的数据交互就由为重要。为了确保通讯符合实时、有序的特点,需要一种安全的通讯机制。