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.

相关推荐
Captain823Jack26 分钟前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
Captain823Jack1 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
是小胡嘛2 小时前
数据结构之旅:红黑树如何驱动 Set 和 Map
数据结构·算法
m0_748255022 小时前
前端常用算法集合
前端·算法
呆呆的猫2 小时前
【LeetCode】227、基本计算器 II
算法·leetcode·职场和发展
Tisfy2 小时前
LeetCode 1705.吃苹果的最大数目:贪心(优先队列) - 清晰题解
算法·leetcode·优先队列·贪心·
余额不足121382 小时前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
火星机器人life5 小时前
基于ceres优化的3d激光雷达开源算法
算法·3d
虽千万人 吾往矣5 小时前
golang LeetCode 热题 100(动态规划)-更新中
算法·leetcode·动态规划
arnold666 小时前
华为OD E卷(100分)34-转盘寿司
算法·华为od