四旋翼位置控制之-定高篇

2023-05-16

先mark一下,争取两周之内写完

由于快要毕业了,所以一直都很忙,并没有时间写完,所以拖到现在,不好意思。现在开始介绍四旋翼定高以及调试过程。

首先介绍下四旋翼的模型

图中为 四旋翼的升力,并且满足。所以

其中,为螺旋桨升力系数,为螺旋桨转速,则又动力学方程知

其中X即为z轴位移距离,则推出四旋翼的模型

显然,系统输出z轴加速度与系统的输入u成正比关系,因此采用PID线性控制器来作为z轴方向上的高度控制器。

假设在没有任何外部观测传感器的情况下,仅有惯性器件估计的位置和速度书算法如下图所示。

上述传递函数为:

特征方程跟为:。因此这种纯惯性通道是不稳定的,而引起系统发散的根本原因是系统无阻尼,所以,要在惯性通道中引入观测量使得系统具有阻尼。所以博主采用经典回路反馈法设计四轴位置估计算法。

高度信息的观测器件一般有:超声波传感器、气压计。

定高算法实现

博主第一次定高用的传感器为超声波传感器,总体感觉超声波传感器做好极值滤波(突然大范围跳动)后,定高效果相当好,只是定高的范围有限制,博主超声波定高适用范围为5cm-250cm。

第二次定高采用的传感器为MS5611气压计,效果比较好,高度范围也提升了不少,但是对气流很敏感,所以需要把气压计密封好,不要让螺旋桨的气流对其造成错误影响。

所以超声波定高导航算法采用  超声波融合惯导的算法。总体算法框图如下:

其中,分别为速度和加速度的反馈系数,所以上述的特征多项式为:

由典型二级系统的特征多项式的标准形式:,可以得到

从而选择合适的系数

控制器由之前推导的四轴模型而选择采用PID 线性控制器作为z轴方向上的高度控制器。选取高度-速度-加速度三级PID控制器方案用于z轴高速控制器,高度控制系统框图如下,

以上即为,四旋翼定高。

四轴定高调试现象(博主调试用的高度-速度串级PID 控制,没有用加速度)

1.只有外环高度控制器时

只有比例控制时,由四轴模型可以等效为另一个熟悉系统:光滑平面上用力F 推小滑块来控制距离。

所以现象为:高度控制不稳定,频繁上下加减速(最理想是在给定悬停点上下等幅振荡)

比例积分控制时,有了积分来消除静差,四轴定高现象为衰减振荡。

一般不加微分。

2.只有内环速度控制器时

只有比例控制时,那么四轴定高控制目标就是让四轴的z轴速度为0,不会控制四轴的高度

所以现象为:1.四轴开启定高时,若z轴速度为0,则稳定不动,定高高度准确无误差

                      2.四轴开启定高是,若z轴速度<0,那么控制器输出>0,四轴向上飞(做一个加速度减小的减速运动),直至四轴z轴速度为0,但是最终稳定高度会比期望高度高,既高度有误差

                      3.四轴开启定高时,若z轴速度>0,那么控制器输出<0,四轴向下飞(做一个加速度减小的减速运动), 直至四轴z轴速度为0,但是最终稳定高度会比期望高度低,既高度有误差

 

加入积分控制,既可得到与期望位置的误差,从而消除了高度误差,可以稳定准确定高

 

 

 

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

四旋翼位置控制之-定高篇 的相关文章

  • ML大杂烩:**常见机器学习算法公式梳理

    机器学习方法有一个进阶的过程 xff0c 不同的方法族 xff0c 都有其基础和逐渐进化的模型 每一个更新的模型一般是对上一个简单模型的改进 xff0c 比如SVM就直接改进了近邻方法 xff0c 降低了保留的实例个数 本文有大量修改 xf
  • libuv笔记 (一)Threads

    Threads 线程在现代程序开发中会很常见 xff0c 当然Libuv也不能缺席这一块 xff0c 记得你在使用过程中要非常认真的处理 各种原始的同步问题 线程会在内部使用 xff0c 用来在执行系统调用时伪造异步的假象 libuv通过线
  • SLAM: SLAM基本流程—VSLAM扫盲之旅

    在很多机器人的论文和书籍里面 xff0c 劈头第一页即是 xff0c 经典的SLAM视觉框架是过去十几年前已经成熟的研究结果 xff0c 这个框架和算法本身已经没有太多理论可以操作的空间 封杀了很多人的SLAM科研之路 xff0c 把SLA
  • 三维重建:SLAM的尺度和方法论问题

    百度百科的定义 此文引用了其他博客的一些图像 xff0c 如有侵权 xff0c 邮件联系删除 作为算法的SLAM xff0c 被称为同步相机位姿确定和地图构建 作为一个工程的SLAM xff0c 有众多的算法 在计算机视觉中 三维重建是指根
  • 相机标定:PNP基于单应面解决多点透视问题

    利用二维视野内的图像 xff0c 求出三维图像在场景中的位姿 xff0c 这是一个三维透视投影的反向求解问题 常用方法是PNP方法 xff0c 需要已知三维点集的原始模型 本文做了大量修改 xff0c 如有不适 xff0c 请移步原文 xf
  • 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年 xff0c 新的东西不是很多 xff0c 三维重建的VSLAM方法可以用一篇文章总结一下 此文是一个好的视觉SLAM综述 xff0c 对视觉SLAM总结比较全面 xff0c 是SLAM那本书的很好的补充 介绍了基于滤
  • 基于stm32c8t6的两轮平衡小车 第二篇——原理图及CubeMx配置

    目录 1 原理图 2 CubeMx配置 xff08 1 xff09 创建工程 xff08 2 xff09 配置时钟树 xff08 3 xff09 仿真模式选择 xff08 4 xff09 TIM2配置为PWM输出模式 xff08 5 xff
  • 解决Mac下安装Homebrew慢的问题

    一 方法一 国内安装Homebrew很慢 xff0c 可以使用下面的方法 xff1a span class token function curl span fsSL https gitee com xueweihan codes vfrg
  • 麻将和牌算法

    麻将牌有1 xff0d 9万 xff0c 1 xff0d 9条 xff0c 1 xff0d 9筒 xff0c 东南西北 xff0c 中发白各4张 xff0c 共34种136张牌 有些地方的麻将还有梅兰花竹 春夏秋冬各一张 一般将梅兰花竹 春
  • Springboot2中文件上传报java.io.FileNotFoundException: C:\Users\WIzarder\AppData\Local\Temp\tomcat.8080.589

    Springboot2文件上传中用MultipartFile接受文件 xff0c 上传报错java io FileNotFoundException C Users WIzarder AppData Local Temp tomcat 80
  • String为什么叫不可变字符序列,StringBuffer和StringBuild为什么是可变字符序列

    String为什么叫不可变字符序列 xff0c StringBuffer和StringBuild为什么是可变字符序列 xff1f 当我第一次学习JavaSE基础知识里 xff0c 学习String和StringBuffer和StringBu
  • Linux中xshell连接不上问题

    inux中Xshell连接失败 原因 xff1a 网络配置问题 xff0c 还有可能是防火墙问题 xff0c ssh未开启问题 xff0c 本人遇到的是网络配置问题 首先是配置Linux网络 cd etc sysconfig network
  • 项目迁移AndroidX

    什么是AndroidX 简单地说就是新的库可以在不同的Android版本上使用 比如之前我们如果使用support为27 1 1的相关依赖库时 可能需要所有相关的support 库都为27 1 1 如果其中有bug的话 xff0c 可能需要
  • Win11更新后电脑没有声音,声卡驱动失效,卸载重装依然无效

    win11更新后声卡驱动失效 xff0c 没有声音 原因 xff1a windows自动更新会更新你的声卡驱动 xff0c 声卡驱动冲突了 解决办法 xff1a 卸载重装声卡驱动依然无效走下面流程 右击电脑 gt 管理 gt 设备管理器 g
  • Docker Unbuntu容器里面运行apt-get update命令报错

    最近在尚硅谷学习docker命令 xff0c 学习到给ubuntu添加vim命令时候运行apt get update报错如下所示 搜索了半天发现很多人让配置dns啥的 xff0c 有一个博主推荐在运行容器的时候添加一个参数可以解决上述问题
  • 华为2288H服务器配置raid

    本次配置的服务器品牌型号为华为2288H 清除现有的raid重新设置就可以 xff0c 只有设备在uefi模式下才能看到配置raid xff0c 所以要先在bios下把传统模式改成uefi模式
  • MBR&/BOOT和GRUB三者关系总结

    做了一个大自然的搬运工 介绍的不错 备份下 MBR是硬盘上的一个扇区 包含三部分内容 xff08 引导程序 分区表及分隔标识 xff0c MBR总计512字节 xff1b 其中引导程序最多占446个字节 xff09 xff1b 为什么需要这
  • 寄存器映射与直接操作寄存器

    一 存储器映射 与重映射 存储器本身不具有地址信息 xff0c 它的地址是由芯片厂商或用户分配 xff0c 给 物理 存储器分配 逻辑 地址的过程就称为存储器映射 xff0c 通过这些逻辑地址就可以访问到相应的存储器的物理存储单元 如果给存
  • html+js翻页时钟

    html 43 js翻页时钟 index html lt doctype html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt html5带翻
  • 云计算的主要部署模式

    云计算与大数据 云计算的最终目标是将计算 服务和应用作为一种公共设施提供给公众 xff0c 使人们能够像使用水 电 煤气和电话那样使用计算机资源 云计算技术都是基于3种特殊的云计算服务模式 xff0c 它们都具有流行 有效 灵活 用户友好等

随机推荐

  • TP5 + PHPWord导出word文档中文出现乱码的问题

    场景 xff1a 项目需要将html页面转word文档 1 下载安装phpword插件composer require phpoffice phpword 2 安装成功在tp目录下的vendor会出现phpoffice文件夹 xff0c 说
  • 基于 Matlab/simulink的锂电池建模与仿真——复现论文《基于二阶EKF的锂离子电池SOC估计的建模与仿真》的仿真部分

    运用simulink实现该论文的锂电池建模仿真 1 模型分解1 1 SOC计算模块1 2 RC参数计算模块1 3 电压计算模块1 4 电流生成器 由Singal Builder模块生成 2 建模细节详解2 1 SOC OCV xff1a L
  • Qt使用记录

    Q amp A 1 错误 qt network ssl QSslSocket cannot call 解决 Qt5 12 4 Tools mingw730 64 opt bin下的libeay32 dll和ssleay32 dll拷贝到Qt
  • Keras的自定义lambda层去reshape tensor张量时model保存出错的解决办法

    背景 分割网络在进行上采样的时候我用的是双线性插值上采样的 xff0c 而Keras里面并没有实现双线性插值的函数 xff0c 所以要自己调用tensorflow里面的tf image resize bilinear 函数来进行resize
  • c++ 中 class 和 struct 的区别是什么

    xfeff xfeff C 43 43 中的struct对C中的struct进行了扩充 xff0c 它已经不再只是一个包含不同数据类型的数据结构了 xff0c 它已经获取了太多的功能 struct能包含成员函数吗 xff1f 能 xff01
  • Linux top命令的了解以及使用

    以root权限运行 top 命令后 xff0c 会以全屏的方式显示 xff0c 并且会处在对话的模式 操作实例 root登录之后 xff0c 在命令行中输入 xff1a top xff0c 回车 xff0c 即会以全屏的显示模式显示所有内容
  • 一键激活office,激活windows

    github地址 xff1a https github com massgravel Microsoft Activation Scripts 正文 xff1a Microsoft Activation Scripts MAS A Wind
  • Jupyter not connection to kernel 的解决方案

    不知道什么原因 xff0c 今天启动Jupyter Notebook发现不对经 xff0c 各种警告如 xff1a 内核没有连接什么的 xff0c 然后我试了试用spyder编写Python xff0c 结果一进去也是告诉我 error x
  • svm核函数的理解和选择

    特征空间的隐式映射 xff1a 核函数 咱们首先给出核函数的来头 xff1a 在上文中 xff0c 我们已经了解到了SVM处理线性可分的情况 xff0c 而对于非线性的情况 xff0c SVM 的处理方法是选择一个核函数 xff0c 通过将
  • list indices must be integers or slices, not tuple 解决方案

    解决方案 xff1a 用numpy里的array转化下 xff0c 转成元组 xff1a dataSet 61 np array dataSet 或者也可以将dataSet转化为矩阵 xff1a mat dataSet 两者都可行
  • 回归模型——树回归(理论方面的知识)

    一 xff1a 模型介绍 1 线性回归的薄弱处 xff1a 1 1 需要拟合所有的样本点 xff08 局部加权线性回归除外 xff09 但是当数据拥有众多特征并且特征之间关系十分复杂时 xff0c 构建全局模型的想法就显得太难了 xff0c
  • 二叉树遍历(图解)

    二叉树的顺序存储结构就是用一维数组存储二叉树中的节点 xff0c 并且节点的存储位置 xff0c 也就是数组的下标要能体现节点之间的逻辑关系 gt 一般只用于完全二叉树 链式存储 gt 二叉链表 定义 xff1a lchild data r
  • (hive) Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask解决方案

    解决bug思路 xff1a 出现这个问题说明你的mapreduce input fileinputformat split maxsize设置的太小了 解决方案 xff1a hive default gt set mapreduce inp
  • Ubuntu16.04 server配置记录

    1 安装vmtool 因为没有图形界面 xff0c 这里全部使用命令行操作 xff0c 虚拟机菜单点击安装vmtool工具后 xff0c 需要手动挂载 a mkdir tmp cdrom b mount dev cdrom tmp cdro
  • GCC的编译过程

    今天学习了gcc的编译过程 xff0c gcc是一个交叉平台编译器 xff0c 简单的说就是 xff0c 你可以在一个平台上编译出可以在另一个平台运行的代码 gcc的编译过程细分可以分成四个阶段 一 预处理阶段 预处理阶段有三个功能 有文件
  • 图解GPS原理 为什么需要4颗卫星才能定位,而不是3颗

    转载https blog csdn net hugohong article details 43191597 GPS 是英文Global Positioning System xff08 全球定位系统 xff09 的简称 xff0c 而其
  • Intel CPU,各个系列有什么区别

    CPU作为计算机核心组件 xff0c 直接影响计算机的性能和价格 无论在购买或是组装计算机时 xff0c 选择合适的CPU都是需要首先考虑的问题 以目前的CPU品牌来看 xff0c CPU可以分为Intel xff0c AMD和国产CPU三
  • 链表头结点的作用

    1 防止单链表是空的而设的 当链表为空的时候 带头结点的头指针就指向头结点 如果当链表为空的时候 单链表没有带头结点 那么它的头指针就为NULL 2 是为了方便单链表的特殊操作 插入在表头或者删除第一个结点 这样就保持了单链表操作的统一性
  • Shikra的PID调参教程

    在论坛里看到的Shikra的PID调参教程 xff0c 自己感觉非常好就转过来供大家一起交流学习 http www rcgroups com forums showthread php t 61 1375728 还有师兄的调PID的整理的文
  • 四旋翼位置控制之-定高篇

    先mark一下 xff0c 争取两周之内写完 由于快要毕业了 xff0c 所以一直都很忙 xff0c 并没有时间写完 xff0c 所以拖到现在 xff0c 不好意思 现在开始介绍四旋翼定高以及调试过程 首先介绍下四旋翼的模型 图中为 四旋翼