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

2023-12-05

姿态控制器设计实验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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RflySim | 姿态控制器设计实验一 的相关文章

  • CVE-2016-2510&CVE-2017-5586 BeanShell漏洞

    前言 首先我们需要了解BeanShell具体是做什么 BeanShell 是一种轻量级的可嵌入式脚本语言 用于在 Java 环境中执行脚本代码 它提供了一种简单 灵活的方式来扩展和定制 Java 应用程序的行为 允许开发人员动态地执行和评估
  • 2024年十大值得关注的编程语言

    探索2024年最有影响力的编程语言 Python的多功能无与伦比 JavaScript在Web领域的统治地位 Rust的高效性 等等 通过实际操作示例 发现适合您编程之旅的最佳选择 在技术世界不断变化的沙漂中导航是一段令人兴奋的旅程 充满了

随机推荐

  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A
  • Comparator接口

    Comparator接口 Comparator 是 Java 中用于比较对象的接口 它允许开发者实现自定义的比较逻辑 以用于对对象进行排序或者确定它们的顺序 主要方法 Comparator 接口中包含一个抽象方法 int compare T
  • MN316 OpenCPU丨HTTP使用介绍

    HTTP Hyper Text Transfer Protocol 即超文本传输协议 是一个简单的请求 响应协议 通常运行在 TCP 之上 它指定了客户端可能发送给服务器消息类型以及得到什么类型响应 HTTPS Hyper Text Tra
  • docker 内查看文件时间 docker动态查看日志最后100行

    ls all docker动态查看日志最后100行 docker logs f t tail 1 chat2db docker logs OPTIONS CONTAINER Options details 显示更多的信息 f follow
  • Android 14 CarAudioService

    文章目录 新功能 AudioMirring oemCarService 新功能 AudioMirring 简单的说就是两个bus输出的是同一个音频数据 构建的流程是 一个输入src的bus 和两个输出dst的bus 通过setParamte
  • Pytest框架 — 11.Fixture装饰器的使用(一)

    1 Fixture装饰器的用途 做测试前后的初始化设置 如测试数据准备 链接数据库 打开浏览器等这些操作都可以使用Fixture来实现 测试用例的前置条件可以使用Fixture实现 比直接使用Pytest框架的 setup 和 teardo
  • 2024最新版软件测试八股文(文档)

    前言 第一个就刷掉一大批人 有很多 会自动化 的同学来咨询技术问题 他总会问到我一些 元素定位 的问题 元素定位其实都不算自动化面试的问题 一般我都会问 你是定位不到吗 通常结果都是说确实定位不到 做自动化 首先你得保证一点 没有你定位不到
  • 如何成为一名合格的班主任

    班主任不仅需要管理学生的学习和生活 还需要与家长 科任老师等多方进行沟通 那么 如何成为一名合格的班主任呢 责任心是关键 作为一名班主任 责任心是成功的关键 要尽心尽力地关心每一个学生的学习和生活 及时发现并解决问题 还要与家长保持密切联系
  • 软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换

    引言 数据类型转换是指将一种数据类型的值转换为另一种数据类型的过程 在编程中 我们经常需要处理不同类型的数据 正确地进行类型转换是编写健壮程序的关键 常见的数据类型转换 整数和浮点数转换为字符串 示例代码 num int 10 num fl
  • 【论文阅读】【三维场景特殊点云分割】OpenMask3D:Open-Vocabulary 3D Instance Segmentation

    前言 NeurIPS2023 OpenMask3D Open Vocabulary 3D Instance Segmentation 论文地址 https openmask3d github io static pdf openmask3d
  • 4. 统计描述和基线表格绘制

    目录 1 连续型变量统计描述 单变量统计描述 1 summary函数 2 psych包中的describe 函数 3 Hmisc包中的describe 函数 4 pastecs包的stat desc 的函数 分组统计描述 1 doBy包的s
  • 虚函数不能声明为static

    虚函数申明为static报错 class Foo public Foo default static virtual Foo int main Foo foo return 0 main cpp 10 25 error member Foo
  • 《算法通关村——滑动窗口高频问题之**寻找子串异位词**》

    算法通关村 滑动窗口高频问题之 寻找子串异位词 567 字符串的排列 给你两个字符串 s1 和 s2 写一个函数来判断 s2 是否包含 s1 的排列 如果是 返回 true 否则 返回 false 换句话说 s1 的排列之一是 s2 的 子
  • GPT4-Turbo技术原理研发现状及未来应用潜力分析报告

    今天分享的是GPT4 Turb系列深度研究报告 GPT4 Turbo技术原理研发现状及未来应用潜力分析报告 报告出品方 深度行业分析研究 报告共计 46页 图像理解能力提升 三大视觉学习方法 为打造视觉大模型 建立高效视觉预训练体系以提升图
  • AntDesign去国际化 | router页面显示问题

    删除 Ant Design Pro 中的 国际化 模块报错 Environment key es2022 is unknown 问题描述 使用 npm run i18n remove 运行 i18n remove pro i18n remo
  • OpenWrt开放端口

    背景 安装了OpenWrt 想要从外部访问内部的某些端口 发现并不能够访问 如Open clash的代理端口 及时在clash中打开允许访问 但是仍然不行 其他方法 网络上看到的方法都是在命令行中操作 或者将命令添加到开机命令中 方法 端口
  • 鼎捷输配电电子组装行业数字化转型方案出炉,3个方向解决7大痛点!

    近年来 随着经济的高速发展 我国全社会用电量快速增长 用电总量位居全世界第一 在 双碳政策 新基建 等多个产业政策的支持下 新型电力系统和特高压建设的推进下 释放巨大的输配电设备升级换代市场需求 促使输配电电子组装行业产值逐年增加 数据显示
  • 华为认证 | HCIP和HCIE差别很大吗?

    根据ICT从业者的学习和进阶需求 华为认证分为 工程师级别 高级工程师级别和专家级别 三个认证等级 分别就是 HCIA HCIP以及HCIE 这三个级别中 HCIA作为一个比较入门级别的考试 选择的人比较少 大多数小伙伴可能会 更关注HCI
  • 如何保持操纵机构丝杆的精度?

    滚珠丝杆是操纵机构中的重要组成部分 可以传递较高的扭矩 并且具有低摩擦 高效率和快速响应的特性 这使得操纵机构能够实现高速 高精度的运动控制 这对于整个系统的性能和精度具有决定性的影响 保持操纵机构丝杆的精度是确保整个系统正常运行的关键 那
  • RflySim | 姿态控制器设计实验一

    姿态控制器设计实验1 一 姿态控制设计简介 本文是建立在多旋翼的姿态即控制器中的反馈信号能够被较好地估计的前提下 控制器中的反馈信号是估计值 不过 为了更加简便根据分离原理 我们用真值代替反馈信号 本文的目的是让多旋翼的姿态能够跟随我们给定