四旋翼无人机飞控系统设计(闭环控制系统)

2023-05-16

  对于一个简单的飞控程序来说,控制器是它最核心的部分,这里主要与大家讨论控制系统的基本理论知识(自控大佬请绕道),包括控制系统概念、闭环控制系统的原理。下篇将侧重包含pid控制算法的具体实践(传送门)。

控制系统

  顾名思义控制系统是用来控制其他设备状态的,通过控制系统可以将被控对象的状态改变为我们所期望的方式,比如司机通过控制系统驾驶车辆、冰箱自动调节室温,此处讨论的是控制系统的软件设计。
  基本的控制系统有开环控制系统和闭环控制系统的区分,开环控制系统就是不关心系统的状态是什么情况,盲目的根据命令施加操作,闭环控制系统得到命令后根据反馈计算需要的改变量,然后根据控制算法规则进行调控。

.

闭环控制器

  闭环控制系统需要输入期望反馈,从而通过闭环控制器进行计算,得出控制目标需要做的改变量,并输出给执行器。输出会改变状态并间接改变反馈值,所以控制器不停调节直到系统达到预期状态,当然,一个不完善的闭环控制器可能会在调节过程中发散崩溃。
  系列前篇提到的信号接收传化就对应着期望值输入,姿态读取解算就对应着反馈值,检测反馈并与输入的期望进行比较,比较的结果是偏差,控制器根据配置参数计算偏差所对应的输出,作用于被控对象,四旋翼的被控对象是电机(作用前需根据系统模型做处理,后面会写专篇)。
  所以闭环控制器的核心动作是消除偏差,被控对象现状态和我们期望的状态的偏差被消除了,也就意味着达到目的了。
在这里插入图片描述

姿态控制

  对于无人机的姿态控制包括横滚角(roll):无人机绕立体空间坐标系的x轴进行横滚动作旋转,俯仰角(pitch):无人机绕y轴进行俯仰动作旋转,偏航角(yaw):无人机绕z轴的航向上的变化,有着这三个自由度的控制便可以控制无人机达到任意姿态,再加上油门控制高度和飞行速率,就是一个完整的飞行器控制体现了。
在这里插入图片描述  由于无人机内部结构差异及外在干扰,达到最基本的悬浮功能需要使得飞机这个控制系统一直在空中保持水平姿态,也就是对姿态进行一个闭环控制,也就不难看出飞控需对无人机的角度进行一个闭环控制。
  角度控制是在使用者的角度来说的,在设计者的角度来说对成熟的飞控系统来说,还需一个重要的控制量——角速度。假如无人机从水平状态改为前进状态时将角度从零变为30度,这个过程花费的时间可能是0.5s,也可能是0.1s,这个差别便是来自对无人机的角速度状态的控制。太慢的角速度环控制使无人机状态来不及调整,缓慢甚至无力维持稳定,而太快的控制产生的惯性会导致超调,使得系统崩溃。

双闭环串级控制

  串级双闭环控制在无人机领域应用广泛。通过姿态解算出的角度值可以做角度位置环的闭环控制,而单位置环的控制的稳定性效果很有限,无人机飞控是个有很强的动态性的系统,在高速的状态变化中系统很容易被干扰影响,角速度动荡导致系统无法稳定,因为电机转速和角度改变并不是线性关系,需要引入角速度控制。对角速度的控制可以使得无人机在运动中的旋转状态等因素趋于稳定
  两个需要控制的量,角度和角速度,那怎么办呢?答案是需要使用双环控制,两个控制器协同工作,两个控制器是可以分别计算进行叠加,但是角度的期望是遥控装置给的,角度的期望从哪里来呢?科学的方法是使用串级闭环控制,角度环作为外环,外环角度控制器的输出作为内环角速度环的输入。角速度环的输出便是整个控制器输出,也影响外环角度。
  实际上进行角度调整就是通过改变角速度来完成的,类比位置和速度,比如你在卧室是一种状态,现在你要去客厅,那么卧室和客厅是位置,位置差别让你确定了速度方向和大小,自己的速度变化直接改变了所处位置。
  无人机模型下的串级控制:
在这里插入图片描述

多环串级控制

  控制器的设计是一个开放的主题,我们需要根据具体需求进行设计,通过角度和角速度大家可能会类比到加速度,确实可以设计第三环加速度环,但是对于无人机姿态控制双环足已,复杂算法是把双刃剑,多环控制的调节难度大,如果无法完成对多个控制器的科学配置和协调,效果将不如简单直接的控制算法。
  三环控制笔者在定高控制时用过,定高为使无人机可以自动稳定在目标高度,通过超声波、激光、气压计等测距模块测量的高度,微分出的高度变化速率,姿态传感器的加速度计数据便是三环的反馈。期望则是上一环的输出。
  除了设计更细致的内环结构,外环的方向也有多环的应用,比如无人机编队等场景,位置环可作为角度环外环(变动姿态角产生移动速度的变化,从而改变位置),通过基站或GPS等定位系统得到的位置就是位置环的反馈,编队策略层提供位置期望。

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

四旋翼无人机飞控系统设计(闭环控制系统) 的相关文章

  • 基于最小二乘法的磁力计椭球拟合方法

    基于最小二乘法的磁力计椭球拟合方法 在写飞控代码时 xff0c 必然要对磁力计的测量数据进行校正 xff0c 本文将介绍一种简单实用的校正方法 基于最小二乘法的椭球拟合方法 本文椭球拟合部分来自博文IMU加速度 磁力计校正 xff0d xf
  • 多旋翼无人机飞控系统设计之详细设计方案

    在进行多旋翼无人机飞控系统设计之前 xff0c 有必要列写一份详细的设计方案书 xff1b 这是飞控系统设计的基石 xff0c 并且在一定程度上指导了后续的研发工作 本篇博文列写了之前笔者在进行无人机飞控开发过程中所撰写的精简版本的设计方案
  • 梅森公式确定系统的传递函数

    梅森增益公式 xff1a 对于一些比较复杂的系统 xff0c 采用结构图等效简化的方法求系统的传递函数是比较麻烦的 而使用梅森公式 xff0c 则可以不用做任何变换 xff0c 只要通过对信号流图进行相应的分析就能直接写出系统的传递函数 下
  • 多旋翼无人机控制之完整闭环控制设计

    本文主要讲解了多旋翼无人机整个闭环系统的设计流程 xff0c 对各个控制器的控制输入与输出 xff0c 控制器的设计要点进行了详细描述 控制逻辑 Q 要让多旋翼无人机按照预设的航线进行飞行 xff0c 需要设计哪些控制器呢 xff1f A
  • 频域分析之超前校正

    本文将主要介绍使用频域响应法进行控制器设计时一种常用且重要的方法 超前校正 超前校正能使系统的瞬态响应得到显著改善 xff0c 而对系统稳态精度的影响则很小 首先来看超前校正的一般形式 K c T
  • 飞控中的一些知识点总结

    本文主要总结了飞控研发过中一些比较重要的知识点 xff0c 部分为本人的实际经验 xff0c 部分为知乎转载 影响飞控性能的一些因素 xff1a 飞控姿态控制算法比较固定 xff0c 基本上都是角度环和角速度环组成的串级PID算法 xff0
  • STM32内存管理以及堆和栈的理解

    今天仔细读了一下内存管理的代码 xff0c 然后还有看了堆栈的相关知识 xff0c 把以前不太明白的一些东西想通了 xff0c 写下来 xff0c 方便以后查看 xff0c 也想大家看了能指出哪里不对 xff0c 然后修改 首先 xff0c
  • 卡尔曼滤波器原理简介

    引用知乎中的一段话 xff1a PID和卡尔曼滤波乃是控制工程师的两大法宝 几十年过去了卡尔曼滤波在理论研究上仍然保持着活跃 xff0c 研究方向包括各种非线性的 xff0c 噪声统计参数未知的自适应和鲁棒滤波 更重要的是现在计算机的发展将
  • 傅里叶变换

    此篇博文主要简述傅里叶变换的相关概念以及如何代码实现离散序列的傅里叶变换 傅里叶变换的一般形式 我们都知道 xff0c 傅里叶变换是频域分析的重要工具 xff1b 其将信号从时域转换到了频域 xff0c 以更直观的角度向我们展示了信号的本质
  • 开源AR库ArUco的原理与位姿估计实战

    近期在搭建SLAM AR的过程中 xff0c 需要用到Marker作为虚拟坐标系的参考 xff0c 使用了开源库ArUco实现了该功能 本文最早发布于keenster cn 参考文献 ArUco marker detection aruco
  • k8s基础认知

    一 什么是k8s xff1a k8s是一个使用go编写的谷歌内部容器管理系统的开源版 xff0c 他由CNCF基金会进行管理 版本叠代周期为三个月 二 k8s的基本概念 1 cluster xff1a 是计算 存储 网络的资源集合 k8s利
  • CodeWarrior 10.7 使用笔记

    1 Code Warrior 10 7 IDE 工程创建 利用工程向导快速创建工程 1 1 点击菜单File BareBoard Project 裸板工程 1 2 设置工程名称 xff08 默认将该工程创建在当前工作空间 xff08 wor
  • LADRC_C代码

    ifndef ADRC H define ADRC H include stm32f10x h typedef struct ADRC float v1 v2 最速输出值 float r 速度因子 float h 步长 float z1 z
  • SBUS 协议

    简介 全称是Serial Bus S BUS是一个串行通信协议 xff0c S BUS是FUTABA提出的舵机控制总线 xff0c S bus使用RS232C串口的硬件协议作为自己的硬件运行基础 使用TTL电平 xff0c 即3 3V 使用
  • 无人机飞控 ardupilot-4.0.7 版本源码总体框架

    无人机飞控 ardupilot 4 0 7 版本源码总体框架 无人机飞控 ardupilot 4 0 7 版本源码总体框架 基本结构 最外层文件 无人机飞控 ardupilot 4 0 7 版本源码总体框架 基本结构 最外层文件 文件名 内
  • C/C++函数注释格式

    目录 C C 43 43 函数注释格式函数注释格式1函数注释格式2函数注释格式3函数注释格式4函数注释格式5 C C 43 43 函数注释格式 函数注释格式1 span class token comment 61 61 61 61 61
  • 磁编码器MT6835_SPI读取位置信息

    文章目录 磁编码器MT6835 SPI读取位置信息简介应用特性和优势参考资料Cubemx 创建 STM32 工程读取编码器位置信息添加 SPI 读取位置信息代码编码器位置信息输出 磁编码器MT6835 SPI读取位置信息 简介 MT6835
  • 四旋翼无人机飞控系统设计(方案篇)

    简介 四旋翼无人机为多旋翼无人机中最经典的机型 xff0c 此设计为四旋翼无人机飞控系统设计 xff08 侧重软件 xff09 xff0c 这里主要涉及基于MCU的无人机飞控程序的编写 xff0c 使用的无人机机架 电机 电调 锂电池 航模
  • 运算放大器-虚短虚断

    运算放大器 虚短虚断 虚短虚断 虚短 虚短指在理想情况下 xff0c 两个输入端的电位相等 xff0c 就好像两个输入端短接在一起 xff0c 但事实上并没有短接 xff0c 称为 虚短 虚短的必要条件是运放引入深度负反馈 V 43 61
  • vscode 配置头文件路径

    1 打开 VSCode 界面 xff0c 在左下角找到齿轮 打开设置 xff0c 点击配置文件 2 在配置文件中添加相应的头文件路径

随机推荐

  • vscode 编码格式配置及保存(统一工程的编码格式,防止中文注释乱码)

    使用 VSCode 统一工程的编码格式 打开不同编码格式的文件 xff0c 点击右下角编码格式 xff0c 通过不同的编码来保存 xff0c 防止更改编码格式时导致中文注释乱码
  • CentOS7安装oracle12G调不出图形化界面

    问题 xff1a centos如果无图形化界面 xff0c 在安装oracle xff0c 调用图形化界面时会遇到问题 xff0c 报错为 xff1a 无法使用命令 usr bin xdpyinfo 自动检查显示器颜色 请检查是否设置了 D
  • STM32外围电路硬件解析

    复位电路 xff1a 复位 xff1a 让MCU回到最开始的状态 并且从头开始 xff0c 重新执行程序 我们什么时候需要复位 xff1f 1 烧录的时候 2 程序跑飞了的时候 3 上电复位 xff08 上电的时候需要复位 xff09 复位
  • stm32f103——中断——UART中断服务函数

    在程序中 xff0c CPU对外界突发事件进行处理的方式又两种 xff1a 1 轮询系统 xff1a xff08 在main中 xff0c 使用while循环 xff0c 进行循环判断外界事物是否发生 xff09 while xff08 1
  • Docker快速入门,看这个就够了

    Docker快速入门 一 Docker介绍1 1 Docker背景1 2 Docker概念1 3 Docker的优势1 4 Docker的三个基本概念 二 Docker的安装和使用2 1 安装依赖包2 2 安装Docker 三 启动Dock
  • Kubernetes(K8S)集群部署搭建图文教程(最全)

    Kubernetes 集群安装 前期准备集群安装系统初始化Harbor采取私有的仓库去镜像使用集群检测集群功能演示 前期准备 第一步 xff1a Router软路由构建 第二步 xff1a centos7安装 5台 xff08 自行安装 x
  • 【STM32-HAL库】一步步搭建出FOC矢量控制(附C代码)

    说明 本文为无刷电机或PMSM电机驱动的简易代码 xff0c 旨在分享一些个人调试过程的小心得 xff0c 提供一个demo文件 xff0c 程序仍有许多不完善的地方 xff0c 建立起个人的FOC底层驱动 xff0c 可以帮助快速熟悉FO
  • Ubuntu整个系统迁移到其他盘办法

    Ubuntu整个系统迁移到其他盘办法 一 xff1a 制作U盘启动器 xff0c 刻录Ubuntu系统 从U盘引导进入系统 xff0c 点击 xff1a try Ubuntu without install选项 二 xff1a 把需要迁移的
  • 四旋翼无人机飞控系统设计(基础知识篇)

    飞行原理 四旋翼的结构组装有十字模式和X模式之分 xff0c 两者的基本原理一致 xff0c 方向结构不同 xff0c 都是通过四个电机的组合状态进行控制姿态飞行 xff0c 而十字型四旋翼机头是对准其中一个电机的 xff0c X型的四旋翼
  • 大数据组件-Maxwell常用命令(持续更新完善)

    Download Download binary distro https github com zendesk maxwell releases download v1 33 0 maxwell 1 33 0 tar gz Sources
  • 【px4编译】make px4fmu-v3_default upload 不能使用

    今天遇到编译pixhawk2代固件无法upload的问题 xff0c 出现TypeError a bytes like object is required not str xff0c 在1代中是可以make upload的 ninja E
  • 【PX4代码】关于px4代码中timestamp与gps_itow的时间问题

    gps的输出频率为5hz xff0c 由此可见timestamp应该是113248090 1e 6转换为s xff0c 由次可见gps的itow时间应该为271998999 1e 3转换为s 总结 px4中的时间为cpu应该除以10 6 x
  • 【PX4代码】关于ekf2输出频率只有1ohz的问题

    问题 我在使用的是pixhawk 2代 imu的输出频率都在100hz以上 xff0c 使用的gps模块输出频率为5hz xff0c 使用log的local position csv 查看ekf2估计输出的点位信息只有10hz xff0c
  • Keil4中C51的debug调试步骤技巧

    1 选择相应的调试仿真连接器 xff1a 选择 xff1a project gt Options for Target 如下图所示 xff1a 然后在弹出对话框的Debug选项下选择仿真器的型号 xff1a 2 进入调试 xff1a 3 部
  • 怎么操作linux服务器

    Linux 服务器就是采用 Linux 系统的网络服务器 xff0c 同时也有采用 windows 的服务器 xff0c 作用是类似的 而 Linux 并不是一个特定的系统 xff0c 而是使用 Linux 内核的系统 xff0c 现在发行
  • 人工智能如何可以思考?

    近日在给同事讲人工智能的时候 xff0c 提到当数据量不够的时候 xff0c 必要时需要加入人工工程 xff0c 引导计算机 归纳 一些知识 xff0c 毕竟计算机智能比起人类智能 xff0c 最大的缺陷可能在于不懂得 举一反三 换句话说
  • bag文件内topic对应的frame_id查看指令

    启动ROS roscore 运行数据集 span class token comment 数据集小的话 xff0c 建议慢速播放 span rosbag play xxx span class token punctuation span
  • GPS数据类型(ROS)

    文章目录 一 传感器分类二 作用三 系统组成四 位置表示五 数据格式六 ROS中GPS数据格式sensor msgs NavSatFixROS中GPS数据主要包含这四类 xff0c 分别是gps 裸数据ros封装 xff0c 位置 xff0
  • cmake使用教程

    CMakeLists txt文档编写以及packsge xml文档介绍 CMakeLists txt文档一 cmake minimum required命令二 CMake中的编译类型三 cmake编译选项 xff08 与2对应 xff09
  • 四旋翼无人机飞控系统设计(闭环控制系统)

    对于一个简单的飞控程序来说 xff0c 控制器是它最核心的部分 xff0c 这里主要与大家讨论控制系统的基本理论知识 xff08 自控大佬请绕道 xff09 xff0c 包括控制系统概念 闭环控制系统的原理 下篇将侧重包含pid控制算法的具