首页 理论教育固件:如何让无人机具备自主思考能力

固件:如何让无人机具备自主思考能力

【摘要】:导航飞控算法如果说飞控是无人机的大脑,那么飞控中飞速运行的各种算法就是大脑的不同区域,它们分管不同的事情。捷联惯导用于计算飞机姿态,滤波器负责传感器数据的采集,而输出控制依然是PID的天下。卡尔曼滤波算法的优点是只有5条公式,对计算机的资源消耗比较少,但是滤波效果和实时性非常理想。无人机的动态参数往往是无法精确测量的,且飞机种类不同,布局不同,重量不同,很难找到一个通行的数学模型。

当前,嵌入式单片机系统在飞控中使用最广泛,而嵌入式系统上运行的软件,我们有个专用名词,固件(Firmware)。飞控的固件中一般都包含实时操作系统,用于进行各种算法和输入输出管理。

嵌入式操作系统

飞控是一个日理万机的设备,既要从花样繁多的传感器采集数据,又要做分析计算,还要向地面输出信息,还要控制飞机。这么多任务,它们之间很容易相互冲突,就像一个繁忙的路口,必须请一位身手矫健的交警来进行管理,这就是操作系统。因为很多任务对实时性要求比较高,所以这个交警必须是反应超快的高手,它有一个专用名词:实时操作系统(Real Time Operating System)。常用于飞控的实时操作系统有UCOS、Free RTOS、Nuttx、Linux和VxWorks等。

带有实时操作系统的飞控程序架构

有了操作系统,任务的调度管理就不用开发者费心了,只要告诉交警有多少辆车,有卡的车辆需要优先通过,公交车每十分钟放几辆,出租车一次多放几个,其他车辆按时间分配等,就能够保证路口不堵塞。这就是实时操作系统的主要工作,它跟我们常见的Windows不同,不擅长界面显示和图形处理,但是包含高精度计时系统,多级中断和实时调度机制,一切都是为了让飞控运行得更精确。下面介绍几个比较有代表性的产品。

UCOS操作系统,准确的写法是μC/OS Ⅱ(Micro Control Operation System Two)。现在是STM32单片机配合使用最广泛的商业实时操作系统,由于其具有很好的实时特性和多任务能力,同时开源全部代码等优点,目前学习者和使用者非常广泛。

Nuttx操作系统主要用于开源飞控,著名的Pixhawk飞控所配的PX4固件和Ardupilot固件均使用这个操作系统。这个操作系统主要遵循Posix和ANSI标准,占用存储空间非常小,并且具有很好的扩展能力,并且完全实时,完全开放源代码(BSD协议)。

VxWorks操作系统是美国风河公司(Wind River)于1983年开发的一种嵌入式实时操作系统,该操作系统主要用于高性能处理器的开发,拥有非常人性化的开发环境。由于具有很高的可靠性,VxWorks从一出生就被大量用于卫星导弹、导航领域,甚至用在火星探测器上。目前市场中的高端商业飞控产品大部分使用这个操作系统。

导航飞控算法

如果说飞控是无人机的大脑,那么飞控中飞速运行的各种算法就是大脑的不同区域,它们分管不同的事情。捷联惯导用于计算飞机姿态,滤波器负责传感器数据的采集,而输出控制依然是PID的天下。

飞行器坐标系示意图

捷联惯导前面已经提过,就是使用加速度和角速率信息来推算飞机姿态的算法,随着发展又加入了磁罗盘和GPS融合信息,使得飞机姿态信息更加准确。捷联惯导算法有三种,欧拉角算法、方向余弦法和四元数法。三种算法各有特点,欧拉角算法思路简单,但是在旋转超过90度时会出现计算错误,所以这种算法已经很少使用了;方向余弦法,则使用余弦矩阵来计算飞行器自身坐标系和地球坐标系之间关系,但是由于计算量比较大,也很少使用;当前使用最多的算法是四元数法。

四元数法示意图

四元数法是爱尔兰数学家威廉·卢云·哈密顿于1843年发明的,他的目的是用于表述牛顿力学和电磁学等物理理论。在描述四元数的过程中,哈密顿也首先提出了矢量的概念,即坐标系中带有方向和大小的变量。但是随着数学的发展,四元数理论一度被向量分析法替代,沉寂了几十年。直到近代随着惯导技术的兴起,四元数作为一种空间转动的变换中间计算变量,又重新焕发青春。使用四元数法进行捷联惯导的姿态计算,没有欧拉角法的角度缺陷,也不像方向余弦矩阵那样需要大量运算,是嵌入式系统理想的计算方法。

谈到传感器的采集,就必须使用滤波算法。由于飞行器在运动过程中不断受到风的干扰,发动机振动,机载设备之间的电磁干扰,电源系统的抖动等原因,使得传感器输出的信息是带有大量杂波,滤波算法就是要从这种带有杂波的信息中提取有用的数据。最早出现的滤波算法是单纯的数学平均、加权或者堆栈方法的组合,这些滤波算法非常缓慢不适用于飞行器。无人机常用的滤波算法就是扩展卡尔曼滤波(Extended Kalman Filter,EKF),虽然无人机姿态滤波方面互补滤波算法(ECF)、梯度下降法(GD)等其他滤波器可以使用,但是扩展卡尔曼滤波器具有计算量适中、思路清晰、代码简单的特点,所以一直是主流算法,地位无可替代。

滤波算法

卡尔曼滤波算法的发明人是鲁道夫.E.卡尔曼,于2016年7月2日去世。卡尔曼滤波算法影响了整个人类工业进程,颠覆了通信、导航、控制等领域,让我们向大师致敬!卡尔曼1958年提出卡尔曼滤波的基本方法,并用于阿波罗计划轨道预测且获得了良好的效果。后来,阿波罗飞船的导航也使用了这种滤波算法。从此,这种滤波算法成为美国最高军事机密,随着时代发展,民用设备也开始大量使用。卡尔曼滤波算法的优点是只有5条公式,对计算机的资源消耗比较少,但是滤波效果和实时性非常理想。

PID,永远的PID。它是所有工业设备控制的基础,也是绝大部分设备所使用的控制算法。PID控制就是根据比例(Proportion,P)、积分(Integration,I)、微分(Differentiation,D)的反馈加权来决定控制输出的控制方法。比例参数P决定输出的量,P越大飞机姿态变化越剧烈,但是过大会控制不住出现抖动;I越大姿态精度越高,但是过大则稳定过程缓慢;D越大飞机控制过程中的超调抖动幅度越小,过大则容易出现失控。PID算法已经有七八十年的历史了,是目前应用最广泛的控制算法,没有之一。因为其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。无人机的动态参数往往是无法精确测量的,且飞机种类不同,布局不同,重量不同,很难找到一个通行的数学模型。PID控制正好适合这种无法拥有精确数学模型的控制对象,使用边飞边调参的方法来确定控制参数就可以了,针对小型和微型无人机已经形成常用的调参方法,并且适用于无人机的姿态控制和航线控制。

PID控制算法

L1自适应控制算法,是非线性控制器在飞行器上应用的一种。PID控制属于线性控制,总会有一定的适用范围,对于控制对象的大量动态变化只能靠固定参数去适应。而自适应算法则通过估算控制对象的动态变化,实时调整控制参数。

L1自适应控制方法由伊利诺伊大学的Naira Hovakimyan教授和康涅狄格大学的Chengyu.Cao教授于2006年提出,并出版专著《L1 Adaptive Control Theory》。该算法通过后置低通滤波器和预测模型,成功解决了传统模型参考自适应控制在快速自适应和控制鲁棒性之间的矛盾。通俗地说就是L1控制算法具有很高的自适应学习率,能快速补偿运动模型的不确定性和外部扰动,从而使得控制精度高、稳定性好。因此迅速获得了包括NASA(美国国家航空航天局)在内的各方专家学者的认可和推广。

非线性控制对于无人机来说是一个很好的思路,当前国内已有不少高端商业飞控使用了L1的自适应控制算法,使其飞控产品无须调参。成都纵横的相关专家和Chengyu Cao教授曾就L1自适应控制算法的研究和在飞行控制方面的推广应用做过深入沟通,并成功地将L1自适应控制算法运用于多旋翼飞行控制和无人直升机的飞行控制之中,获得了极好的控制效果。