RflySim | 姿态控制器设计实验一

姿态控制器设计实验1

一. 姿态控制设计简介

本文是建立在多旋翼的姿态即控制器中的反馈信号能够被较好地估计的前提下,控制器中的反馈信号是估计值。不过,为了更加简便根据分离原理,我们用真值代替反馈信号。本文的目的是让多旋翼的姿态能够跟随我们给定的期望姿态,姿态控制器的好坏直接决定了多旋翼能否平稳飞行。在时域中,能够反映控制性能的有响应时间、超调量、调节时间和稳态误差等指标;在频域中是稳定裕度和截止频率。在基础实验中,读者可以复现多旋翼姿态控制的仿真;在分析实验中,读者可以调节姿态控制的PID(比例积分微分)参数,让多旋翼在时域中达到较好的控制性能;在设计实验中,读者可以根据自动控制原理中的知识设计校正器,让多旋翼在频域中达到较好的控制性能。

二. 多旋翼底层飞行控制框架

多旋翼的底层飞行控制分为四个层次,分别为位置控制、姿态控制、控制分配和电机控制。

**位置控制:**利用期望的位解算期望的滚转角、期望的俯仰角和期望的总拉力。

**姿态控制:**利用期望的姿态角解算出期望的力矩。

**控制分配:**将期望的螺旋桨转速分配到多电机,得到期望的输入力和力矩。

**电机控制:**利用螺旋桨转速解算出每个电机的期望油门指令。

闭环控制框架如下图所示。多旋翼是一个欠驱动系统,有6个输出(位置和姿态),但是只有4个独立输入(总拉力和三轴力矩)。因此,多旋翼只能跟踪4个期望指令(期望位置与偏航),剩余的变量(滚转、俯仰)由期望位置和偏航确定。

设计多旋翼飞行控制器时,可以采用内外环的控制策略,其中内环对多旋翼飞行器姿态角进行控制,而外环对多旋翼飞行器的位置进行控制。由内外环控制实现多旋翼飞行器的升降、悬停、侧飞等飞行模态。多旋翼姿态控制是飞行器位置控制的基础。常见的刚体姿态描述方法为欧拉角描述方法和旋转矩阵描述方法。

本文针对这两种不同的姿态表示,设计了两种姿态跟踪控制器。首先,针对欧拉角表示,在小角度假设的条件下设计PID控制器。然后,针对旋转矩阵表示,设计基于姿态误差矩阵的姿态控制器。实际中,需要根据具体要求选择合适的姿态表示及对应的姿态控制器。

2.1 基于欧拉角的姿态控制

2.2 基于旋转矩阵的姿态控制

三. 控制分配模块设计

简单来说,控制分配问题可描述为:给定uv (t)寻找δ(t),使得:

uv (t) =g(δ(t))

其中g为被控系统中执行机构控制输入到伪控制输入的映射。常假设操纵机构偏转量与其产生的控制力矩之间为线性函数关系,则可得到线性控制分配问题

u v (t) =B δ(t)

x字形四旋翼的控制分配和多旋翼的控制效率模型如下:

对于四旋翼的控制效率模型的MATLAB程序如下:

function [M1, M2, M3, M4] = motor_mixer(Roll, Pitch, Yaw, Thrust)

%Function description:

% Control allocation. The quadrotor type is X-configuration,

% and the airframe is as follows:

%3↓ 1↑

% \ /

% / \

%2↑ 4↓

%Input:

% Roll, Pitch, Yaw: attitude controller output.

% Thrust

idle_PWM = 1000;

scale = 1000;

M1 = (Thrust - Roll + Pitch + Yaw) * scale + idle_PWM;

M2 = (Thrust + Roll - Pitch + Yaw) * scale + idle_PWM;

M3 = (Thrust + Roll + Pitch - Yaw) * scale + idle_PWM;

M4 = (Thrust - Roll - Pitch - Yaw) * scale + idle_PWM;

以上原理可以详细参考文献[1]的第11章。

参考文献:

[1] 全权,杜光勋,赵峙尧,戴训华,任锦瑞,邓恒译.多旋翼飞行器设计与控制[M],电子工业出版社,2018.

[2] 全权,戴训华,王帅.多旋翼飞行器设计与控制实践[M],电子工业出版社,2020.

相关推荐
.Cnn4 分钟前
用邻接矩阵实现图的深度优先遍历
c语言·数据结构·算法·深度优先·图论
2401_858286119 分钟前
101.【C语言】数据结构之二叉树的堆实现(顺序结构) 下
c语言·开发语言·数据结构·算法·
Beau_Will15 分钟前
数据结构-树状数组专题(1)
数据结构·c++·算法
迷迭所归处19 分钟前
动态规划 —— 子数组系列-单词拆分
算法·动态规划
爱吃烤鸡翅的酸菜鱼20 分钟前
Java算法OJ(8)随机选择算法
java·数据结构·算法·排序算法
寻找码源1 小时前
【头歌实训:利用kmp算法求子串在主串中不重叠出现的次数】
c语言·数据结构·算法·字符串·kmp
Matlab精灵1 小时前
Matlab科研绘图:自定义内置多款配色函数
算法·matlab
诚丞成1 小时前
滑动窗口篇——如行云流水般的高效解法与智能之道(1)
算法
带多刺的玫瑰3 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
爱敲代码的憨仔3 小时前
《线性代数的本质》
线性代数·算法·决策树