当前位置: 首页 > article >正文

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

姿态控制器设计实验1

一. 姿态控制设计简介

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

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

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

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

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

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

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

图片

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

图片

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

图片

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

2.1 基于欧拉角的姿态控制

图片

图片

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

图片

三. 控制分配模块设计

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

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

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

uv (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.


http://www.kler.cn/news/156649.html

相关文章:

  • 接口测试--知识问答
  • CCFCSP试题编号:202006-2试题名称:稀疏向量
  • 科普类软文怎么写才能提高用户接受度?媒介盒子分享
  • 拼多多关键词搜索商品列表接口调用演示,关键词搜索接口,item_search - 按关键字搜索商品列表案例
  • 在线陪诊系统: 医疗科技的崭新前沿
  • MacOS 14 系统 XCode15、 Flutter 开发 IOS
  • QJsonObject 是 Qt 框架中用于表示 JSON 对象的类
  • opencv知识库:cv2.add()函数和“+”号运算符
  • 计算机网络TCP篇③问答篇
  • 【NGINX--11】利用访问日志、错误日志和 请求跟踪进行调试和故障排除
  • Python与ArcGIS系列(十四)批量输出shp(自定义工具)
  • wordpress建站优化加速教程-Redis加速
  • 制作openeuler的livecd
  • scikit-learn线性回归法进行利润预测
  • Sui生态DeFi将参加Builder DAO举办的活动,为期三天畅谈如何Build on Sui
  • WT2605-24SS高品质录音语音芯片:实时输出、不保存本地,引领音频技术新潮流
  • 如何把栅格图像变平滑
  • Future.forEach异步遍历列表,Future.doWhile实现了一个无限循环,直到满足某个条件才停止
  • CGE模型应用
  • 【华为OD题库-058】矩阵中非1的元素个数-java
  • 知识点滴 - 什么是半透膜和渗透压
  • 计算机网络:传输层——多路复用与解复用
  • 十、FreeRTOS之FreeRTOS时间片调度
  • 实现简单的Spring
  • thinkphp6出现 htmlentities() expects parameter 1 to be string, array given
  • 金融帝国实验室(Capitalism Lab)官方正版游戏『2023双12特卖』
  • 微信小程序uni.chooseImage()无效解决方案
  • C#/.NET/.NET Core优秀项目和框架2023年11月简报
  • prometheus部署及与grafana结合应用
  • 使用射线单击物体显示,点击物体隐藏