多旋翼原理与控制

2023-05-16

多旋翼原理与控制

发表于 2016-11-03    |   分类于 飞行机器人

本文主要总结了多旋翼飞行器的工作原理,包括升降、测飞、转向灯。首先通过四旋翼给出一个直观的解释。然后提取多旋翼飞行器(包括不同形状)的共性,从理论上加以分析。找出飞行器动作控制与电机输出之间的关系。有了这些,在得到当前姿态和目标姿态的差值后就知道如何分配不同电机的输出,以达到想要的结果,是飞控中很关键的一环。

推力来源

多旋翼飞机的推力来自螺旋桨,由两部分组成,一部分是桨面曲率不同形成的压力差,一部分是桨叶扭角向后推空气时的反作用力。

压力差

压力差来源于伯努利效应。我们知道,当给密闭的空瓶子加热的时候,瓶塞会被瓶内的空气顶出来。这是因为,瓶内空气分子被加热后,获取到了能量,运动速度变快。对瓶塞的压力(也就是撞击力)变大。这也说明了,运动速度快的气体有寻求更大空间的趋势,也就是密度变低。对于开放空间的空气来说,流速越快,密度越小。对平行于流速方向的物体压强越小。这就是伯努利效应。

伯努利效应有很多,包括飞机机翼、喷雾器、体育运动中的旋转球等。先看一个再动物界的有趣应用。下图是非洲草原犬鼠洞穴的横截面示意图,犬鼠的洞穴有两个出口,一个是平的,而另一个则是隆起的土堆,生物学家不是很清楚其中的原因,他们猜想:草原犬鼠把其中一个洞的洞口堆成了包状,是为了建一处视野开阔的嘹望台,但是如果这一假设成立的话,它又为什么不在两个洞口都堆上土包呢?那样不是有两个嘹望台了吗?实际上两个洞口形状不同,决定了洞穴空气的流动方向。吹过平坦表面的空气运动速度小,压强大;吹过隆起表面的空气流速大,压强小。因此,地面上的风吹进了犬鼠的洞穴,给犬鼠带来了阵阵凉风。

犬鼠洞穴

固定翼飞机也利用了伯努利效应,下图是固定翼飞机的机翼。可以看出其前端圆钝,后端尖锐,上表面拱起,下表面较平。当气流迎面流过机翼时,被分成上下两股,通过机翼后又合在一起。由于机翼上表面拱起,使上方气流通道变窄,流速变大,表面较平,流速较小。这样下表面的压力大于上表面,形成一个向上的压力差,也就是机翼的升力。

固定翼升力

螺旋桨桨叶的前后桨面曲率不一致,形状和固定翼机翼相似,可以把螺旋桨的每一个桨叶看成是一个边旋转边前进的机翼。螺旋桨在旋转时,就像气流流过机翼一样,产生压力差,形成向上的拉力。

空气反作用力

除了桨面曲率不一致,螺旋桨桨叶通常还有一个扭转角。桨叶旋转时把前方的空气吸入,并给吸入的空气一个向下的推力。根据动量守恒,气流会给桨叶一个向上的力,这就是空气的反作用力。

由桨叶异型曲面产生的空气动力与桨叶扭角向后推空气产生的反作用力是同时发生的,这两个力的合力形成螺旋桨的总空气动力。

四旋翼结构与原理

关于四旋翼的工作原理,网上有一篇文章介绍的很清楚,下面直接拿来引用。

结构

旋翼对称分布在机体的前后、左右四个方向,四个旋翼处于同一高度平面,且四个旋翼的结构和半径都相同,四个电机对称的安装在飞行器的支架端,支架中间空间安放飞行控制计算机和外部设备。结构如下图所示。

四旋翼结构

原理

四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置。四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统。

四旋翼原理1

四旋翼原理2

四旋翼飞行器的电机 1和电机 3逆时针旋转的同时,电机 2和电机 4顺时针旋转,因此当飞行器平衡飞行时,陀螺效应和空气动力扭矩效应均被抵消。

在上图中,电机 1和电机 3作逆时针旋转,电机 2和电机 4作顺时针旋转,规定沿 x轴正方向运动称为向前运动,箭头在旋翼的运动平面上方表示此电机转速提高,在下方表示此电机转速下降。

(1)垂直运动:同时增加四个电机的输出功率,旋翼转速增加使得总的拉力增大,当总拉力足以克服整机的重量时,四旋翼飞行器便离地垂直上升;反之,同时减小四个电机的输出功率,四旋翼飞行器则垂直下降,直至平衡落地,实现了沿 z轴的垂直运动。当外界扰动量为零时,在旋翼产生的升力等于飞行器的自重时,飞行器便保持悬停状态。

(2)俯仰运动:在图(b)中,电机 1的转速上升,电机 3 的转速下降(改变量大小应相等),电机 2、电机 4 的转速保持不变。由于旋翼1 的升力上升,旋翼 3 的升力下降,产生的不平衡力矩使机身绕 y 轴旋转,同理,当电机 1 的转速下降,电机 3的转速上升,机身便绕y轴向另一个方向旋转,实现飞行器的俯仰运动。

(3)滚转运动:与图 b 的原理相同,在图 c 中,改变电机 2和电机 4的转速,保持电机1和电机 3的转速不变,则可使机身绕 x 轴旋转(正向和反向),实现飞行器的滚转运动。

(4)偏航运动:旋翼转动过程中由于空气阻力作用会形成与转动方向相反的反扭矩,为了克服反扭矩影响,可使四个旋翼中的两个正转,两个反转,且对角线上的各个旋翼转动方向相同。反扭矩的大小与旋翼转速有关,当四个电机转速相同时,四个旋翼产生的反扭矩相互平衡,四旋翼飞行器不发生转动;当四个电机转速不完全相同时,不平衡的反扭矩会引起四旋翼飞行器转动。在图 d中,当电机 1和电机 3 的转速上升,电机 2 和电机 4 的转速下降时,旋翼 1和旋翼3对机身的反扭矩大于旋翼2和旋翼4对机身的反扭矩,机身便在富余反扭矩的作用下绕 z轴转动,实现飞行器的偏航运动,转向与电机 1、电机3的转向相反。

(5)前后运动:要想实现飞行器在水平面内前后、左右的运动,必须在水平面内对飞行器施加一定的力。在图 e中,增加电机 3转速,使拉力增大,相应减小电机 1转速,使拉力减小,同时保持其它两个电机转速不变,反扭矩仍然要保持平衡。按图 b的理论,飞行器首先发生一定程度的倾斜,从而使旋翼拉力产生水平分量,因此可以实现飞行器的前飞运动。向后飞行与向前飞行正好相反。(在图 b 图 c中,飞行器在产生俯仰、翻滚运动的同时也会产生沿 x、y轴的水平运动。)

(6)倾向运动:在图 f 中,由于结构对称,所以倾向飞行的工作原理与前后运动完全一样。

多旋翼分析与控制

从上述四旋翼的工作原理可以看出,实质就是通过电机控制飞机六个自由度的转矩。转矩可以通过外部控制信号(比如遥控器)获得。所以,已知转矩,如何分配电机的输出大小就是一个需要解决的问题。

为了使分析结果具有普遍性,这里对电机的个数和分布位置不做限定。假设飞机有 N N​个电机 Ri Ri​ i[1:N] i⊂[1:N]​,坐标为 (Xi,Yi,0) (Xi,Yi,0)​ i[1:N] i⊂[1:N]​,旋转方向为 Di Di​ i[1:N] i⊂[1:N]​ Di[1;1] Di⊂[−1;1]​,角速度为 ωi ωi​ i[1:N] i⊂[1:N]​。则理想情况下每个电机产生的推力可表示为\vec{F}_i^B=\begin{pmatrix}0\0\{-C_t}\omega_i^2\end{pmatrix}​\vec{F}_i^B=\begin{pmatrix}0\0\{-C_t}\omega_i^2\end{pmatrix}​。电机旋转产生的扭矩为 (0\0\DiCmω2i) (0\0\DiCmωi2)​。推力产生的力矩可通过推力矢量和电机位置坐标矢量的叉乘来获得。

电机总的力矩即为推力力矩和旋转力矩的和,如下:

\vec{M}_i^B=\begin{pmatrix}X_i\Y_i\0\end{pmatrix}\times\begin{pmatrix}0\0\{-C_t}\omega_i^2\end{pmatrix}+\begin{pmatrix}0\0\D_iC_m\omega_i^2\end{pmatrix}=C_t\omega_i^2\begin{pmatrix}-Y_i\X_i\D_i\frac{C_m}{C_t}\end{pmatrix}\\vec{M}_i^B=\begin{pmatrix}X_i\Y_i\0\end{pmatrix}\times\begin{pmatrix}0\0\{-C_t}\omega_i^2\end{pmatrix}+\begin{pmatrix}0\0\D_iC_m\omega_i^2\end{pmatrix}=C_t\omega_i^2\begin{pmatrix}-Y_i\X_i\D_i\frac{C_m}{C_t}\end{pmatrix}\

Ct Ct Cm Cm分别为推力系数和旋转力矩系数。可以近似认为电机的推力和转速的平方成正比,于是有 ω2i=Kui ωi2=Kui。总的力矩如下:

$$
\vec{M}^B=\sum_{i=1}^N\hat{M}_i^B=KCt\begin{pmatrix}-\sum{i=1}^NY_iui\\sum{i=1}^NX_iu_i\\frac{C_m}{Ct}\sum{i=1}^ND_iu_i\end{pmatrix}
$$

改写为如下的形式:

M⃗ B=KCt(Y1fracCmCtD1Y2CmCtD2Yn\X1CmCtDnX2Xn)(u1\u2vdots\un) M→B=KCt(−Y1−Y2⋯−Yn\X1X2⋯XnfracCmCtD1CmCtD2⋯CmCtDn)(u1\u2vdots\un)

从上式中可以看出,多旋翼飞行器机身受的总力矩 M⃗ B M→B和电机的坐标 (Xn,Yn) (Xn,Yn),电机转向 Dn Dn,电机转速 un un有关。飞行器一旦设计好,电机坐标和转向就定下来了。当需要飞行器做某个动作时,只需输出一定的力矩,力矩又和各个电机的转速有关。

为了方便说明问题,将上式简写为:

M⃗ B=AU⃗  M→B=AU→

其中 A A 3N 3∗N的矩阵,里面存放的是每个电机的坐标和旋转方向信息。 U U为每个电机需要的输出量,和转速成正比。我们的目的是知道 M⃗ B M→B,求电机输出 U U

将式子两边乘以 A A的广义逆得:

U⃗ =A1M⃗ B U→=A−1M→B

B=A1 B=A−1,则 B B即为我们需要的混合矩阵。也就是力矩和电机输出之间的关系。

飞控计算出的控制量中,欧拉角信息,实质上和力矩相对应。也就是某个方向的旋转力。比如,若要飞机左右飞行,则需要飞机绕X轴旋转一定的角度,飞控输出反映在roll中。这时只需要根据该矩阵计算出电机需要的转速以提供一个绕X轴的旋转力即可。

参考

为什么气体流速越快压强越小
流体压强和流速的关系
螺旋桨飞机中,螺旋桨的转速和螺旋桨的大小哪个对螺旋桨产生的前进力影响更大


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

多旋翼原理与控制 的相关文章

  • SLAM学习笔记2:Kalman Filter(卡尔曼滤波) 与Least Square(最小二乘法) 的比较

    对于一个问题的解决 xff0c 最根本在于怎样对它进行数学建模 对SLAM问题的建模 xff0c 基本上是基于filter和graph两大类 xff0c 今天整理了一下 xff0c 对比两种模型的区别及共性 主要参考这篇讲解 xff1a h
  • RTC实时时钟特征与原理

    RTC定义 RTC是个独立的定时器 RTC模块拥有一个连续计数的计数器 xff0c 在相应的软件配置下 xff0c 可以提供时钟日历的功能 修改计数器的值可以重新设置当前时间和日期 RTC模块和时钟配置系统 RCC BDCR寄存器 是在后备
  • 树莓派配置,小白教程,无键盘显示屏鼠标

    树莓派配置 xff0c 小白教程 xff0c 无键盘显示屏鼠标 实验步骤 xff1a xff08 1 xff09 在树莓派官网下载树莓派的系统 树莓派官网下载地址 xff1a http www raspberrypi org downloa
  • CAN总线综述-转发一篇关于CAN总线的详细介绍文章

    CAN总线 一 原文出处 xff1a http www cnblogs com jacklu p 4729638 html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中 xff0c 其实船舰电子设备通信也广泛使用CAN xff0c 随
  • Python 安装 MaxMind GeoLite City

    1 先安装 geoip c library geoip c library gt 61 1 4 6 installed on your machine gt 61 1 4 6 installed on your machine wget h
  • 华为MA5626-8密码恢复

    设备型号 xff1a 华为MA5626 8 display version VERSION MA5626V800R308C00 PATCH SPC500 SPH505 HP5105 PRODUCT MA5626 准备工作 xff1a 超级终
  • SNMP 获取交换机端口相关信息

    我们想用snmpwalk查看网络设备的端口 xff0c MIB库中相关定义的信息如下 xff1a root 64 redcock lifeng snmpwalk v 2c c lifeng 192 168 100 100 注意后面的点 xf
  • phpMyAdmim和Yii 连接Mysql报错。

    故障 xff1a 之前phpMyAdmim和Yii连接Mysql都好着的 xff0c 某天 xff0c 同时出现如下报错 xff1a 1 linux下phpMyAdmin 出现 缺少 mysqli 扩展 xff0c 请检查 PHP 配置 2
  • linux shell 执行多个命令的方法

    xff08 1 xff09 在每个命令之间用 xff1b xff08 分号 xff09 隔开 xff08 2 xff09 在每个命令之间用 amp amp 隔开 amp amp 表示 xff1a 若前一个命令执行成功 xff0c 才会执行下
  • ARP 属于哪层协议

    教材上把ARP 协议划到网络层 xff0c 是因为 ARP 协议属于 TCP IP 协议簇 在TCP IP 模型中 xff0c 它所有定义的协议是在网际层上的 再看按照OSI 的标准 xff0c 数据在传递时每层会加上自己的信息 当网络层的
  • 什么叫一层交换机,二层交换机,三层交换机?

    转自 xff1a http blog csdn net happypolo article details 5934429 简单地说 xff1a 一层交换机 只支持物理层协议 电话程控交换机可以算一个 二层交换机 支持物理层和数据链路层协议
  • Linux Shell 脚本中字符串的连接方法

    Linux Shell 脚本中字符串的连接方法 如果想要在变量后面添加一个字符 xff0c 可以用一下方法 xff1a value1 61 home value2 61 value1 34 61 34 echo value2 把要添加的字符
  • linux 如何将路径加入环境变量

    PATH 61 PATH 后面加路径 PATH是环境变量 要大写那几个目录是你放置linux命令的目录 输入命令后系统会去PATH中寻找是否存在该命令 查看当前环境变量 echo PATH也可以用set命令看一下设置 export PATH
  • expect spawn、linux expect 用法

    使用expect实现自动登录的脚本 xff0c 网上有很多 xff0c 可是都没有一个明白的说明 xff0c 初学者一般都是照抄 收藏 可是为什么要这么写却不知其然 本文用一个最短的例子说明脚本的原理 脚本代码如下 xff1a usr bi
  • python 调用 shell python shell 间变量传递

    python gt shell xff1a 1 环境变量 python view plain copy print import os var 61 123 或var 61 123 os environ var 61 str var env
  • vSphere,ESXi和vCenter 的区别

    最近在看 VMware 一直没有搞清楚这几个产品之间的区别和联系 正好在网上搜索到一个好文 xff0c 翻译下来 本文翻译自 xff1a http www mustbegeek com difference between vsphere
  • equals和hashCode详解

    在学习的过程中 xff0c 特别是学习集合的时候 xff0c equals和hashCode一直是经常出现的方法 xff0c 而且在面试题中 xff0c 也经常出现equals和 61 61 的区别等问题 xff0c 现在我们就从底层详细的
  • NuttX的应用记录 4 (小记录)

    好久没看过NuttX了 xff0c 做个移植试一试 板子是STM32F407ZE xff0c 有两块屏幕 xff0c 蜂鸣器 xff0c FLASH xff0c E2PROM xff0c LED 先找个类似的 xff0c 复制一个副本 st
  • PetaLinux学习笔记 3

    过年回家没带开发板 终于可以搞一搞了 更新petaLinux到2019 2 重建项目 xff0c flash调整一下 启动过程中提示 xff1a m25p80 spi0 0 found w25q256 expected n25q512a m
  • 高云GW1N-9的SerDes笔记

    GW1NR 9的片子 xff1a 看起来还是很强的 xff0c 但是在工程中使用后会这样提示 xff1a 看起来有点虚标啊 那就按1G来先 xff0c 做个后仿 直接用OSER来输出数据 看起来还可以 输出可以 在做一个输入 xff0c 根

随机推荐

  • NuttX的学习笔记 1

    学习这个系统 xff0c 开始是在PIX的飞控上了解到的 xff0c 感觉这个系统很有兴趣 xff0c 当然 xff0c 这是我第一次接触RTOS xff0c 有不正确的地方 xff0c 请予以指正 注意 过程是我边操作边写的 xff0c
  • NuttX的学习笔记 2

    README文档目录的第二部分 Configuring NuttX Instantiating Canned ConfigurationsRefreshing ConfigurationsNuttX Configuration ToolFi
  • LSM303DLHC

    xff08 PS xff1a 最近在帮人做一个电子罗盘 xff0c 刚好STM32F429i DISCO上有个MEMS xff0c 但是我自己没有看到底是个什么传感器 xff0c 搞搞搞了半天 xff0c 读出来三个数据 xff0c 但我移
  • Embedded Wizard 研究笔记 1

    今天突发奇想看看这个Embedded Wizard xff0c 看介绍视频还是很不错的 而且前几天做的罗盘很丑 xff0c 让我深刻意识到了UI的必要性 xff0c 那么这个Embedded Wizard就是为此而生 刚好我手上还有一块ST
  • STM32 & Clion

    注 xff1a 这个方法已经不适用于最新版本的的Clion了 xff08 最近通过Android认识了Jetbrain公司 xff0c 从此彻底迷上了这个公司的产品 xff0c Unity上用Rider xff0c Java上用IDEA x
  • NuttX的移植笔记 2

    好了 xff0c 继续 5 B L475E IOT01A clocking h 这个文件基本和configs stm32l476vg disco include stm32l476vg disco clocking h差不多 不如说就是一模
  • TortoiseGit的介绍和使用

    Git是什么 xff0c 相信大家都很清楚 Git不就是分布式版本控制系统嘛 xff1f 那你知道TortoiseGit是什么吗 xff1f 下面我们就介绍一下TortoiseGit它是什么 xff1f 如何使用 xff1f Tortois
  • CentOS7查看和关闭防火墙

    CentOS 7 0默认使用的是firewall作为防火墙 查看防火墙状态 firewall cmd state 停止firewall systemctl stop firewalld service 禁止firewall开机启动 syst
  • maven问题:org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException

    原因 xff1a 因为maven中集成的tomcat插件的版本与创建项目的jdk版本有冲突 xff0c 比如运行时使用的tomcat6而jdk是1 8 xff0c 而tomcat6是不支持该jdk的 解决 xff1a 1 在该工程中的pom
  • nginx反向代理后,重定向失败问题

    nginx在做反向代理到后端服务器 xff0c 如果后端服务器有重定向 xff0c 会出现返回服务器的ip地址 xff0c 解决办法 xff1a server listen 80 server name www boke com locat
  • 虚拟机扩容——LVM分区

    虚拟机扩容 LVM分区 前提说明实验环境一 准备工作二 查看磁盘扩容后状态三 对指定磁盘进行初始化操作四 创建物理卷1 刷新分区并创建物理卷2 查看物理卷信息 五 卷组 逻辑卷的操作 xff08 加载到已有路径 xff09 1 查看卷组名称
  • ssh 免密登录

    Linux生成密钥和公钥 先查看有没有路径 ssh 如果有证明以前生成过了 xff0c 如果没有就需要重新生成 1 输入如下命令 xff1a ssh keygen t rsa 或者添加邮箱 ssh keygen t rsa C 34 你的邮
  • 深度学习模型训练调参的tricks总结

    目录 一 调参tricks总结分析 1 数据与标签角度 1 1 数据归一化 1 2 数据增强 1 3 标签平滑 xff08 Label Smoothing xff09 2 权重初始化 xff08 Weight Initialization
  • 归一化 (Normalization)、标准化 (Standardization)和中心/零均值化 (Zero-centered)

    目录 一 概念 1 归一化 xff08 Normalization xff09 xff1a 2 标准化 xff08 Standardization xff09 xff1a 3 中心化 零均值化 xff08 zero centered xff
  • CSDN高校俱乐部牵手烟台大学

    4月8日19 xff1a 00 xff0c 烟台大学CSDN高校俱乐部成立仪式暨 amp ldquo 激情与梦想 xff0c 我的程序员之路 amp rdquo amp mdash amp mdash 2011CSDN高校巡回演讲在烟台大学
  • 技术网站http://www.github.com/

    http www runoob com w3cnote android tutorial eclipse adt sdk app html 菜鸟教程 http www jsoneditoronline org JSON解析 http dev
  • FastRTPS-安装手顺

    1 基本要求 1 1 Boost 库和头文件 eProsima Fast RTPS 需要 Boost 发行版 xff0c 因此用户必须安装 1 57 版 按照 boost 发行版中包含的说明进行安装 Windows 安装程序已经为必要的 b
  • openflow13softwareswitch安装及使用笔记

    openflow协议代码的大体结构如下 xff1a 1 涉及报文传输与生成的main函数 2 udatapath c负责datapath xff08 OpenFlow网络中 xff0c 每个OpenFlow实例都使用唯一的Datapath
  • 栈的作用

    栈的作用 计算机里面的栈其实有着举足轻重的作用 大学刚学c语言的时候 xff0c 教的是堆栈 xff0c 传达的是一种后入先出的算法思想 但其实我们知道 xff0c 堆和栈是两个截然不同的东西 而这里面说到的栈 xff0c 则是更融入到计算
  • 多旋翼原理与控制

    多旋翼原理与控制 发表于 2016 11 03 分类于 飞行机器人 本文主要总结了多旋翼飞行器的工作原理 xff0c 包括升降 测飞 转向灯 首先通过四旋翼给出一个直观的解释 然后提取多旋翼飞行器 xff08 包括不同形状 xff09 的共