APM飞控学习之路:2 四旋翼的工作原理与系统组成

2023-05-16

        “一叶障目,不见泰山”。在研究四旋翼飞行器之前,有必要从整体介绍其工作原理、主要部件、技术名词等基础知识。不然就像羊入虎口,陷入一大堆不同层次的资料,难觅出口。接下我就抛砖引玉,尽自己所能,介绍四旋翼的工作原理和主要部件。余虽不敏,然余诚也。


工作原理

        四旋翼飞行器,通过4个对称布置的电机,改变螺旋桨的转速,实现升力的变化,进而控制飞行器的姿态和位置。姿态具体指3个欧拉角:横滚(Roll)、俯仰(Pitch)、偏航(Yaw)。位置具体指1个高度油门(Throttle)和2个位置(X和Y)。欧拉角是一种描述物体姿态的常见方式,广泛应用于惯性导航、机器人等领域。为了方便大家理解,在网上找了3个欧拉角的动图,分别为Roll、Pitch、Yaw,让我们致敬制作者3秒钟。

        横滚:Roll,控制四旋翼左右运动。

        俯仰:Pitch,控制四旋翼前后运动。

        偏航:Yaw,控制四旋翼的朝向。

        无人机的姿态和位置共有6个自由度,每个自由度的控制如下图所示。4个电机2个正转(电机2和4),2个反转(电机1和3),对称布置。电机正反转配合正反桨,可使螺旋桨的风都往下刮以平衡重力,同时抵消因桨叶旋转带来的空气阻力扭矩。由于输入只有4个自由度,因此多出的2个自由度是不完全受控的,其中俯仰运动和前后运动耦合,滚转运动和侧向运动耦合。


        坐标系:标准右手系。规定X轴正方向为前向。螺旋桨的箭头向上↑:电机转速上升。螺旋桨的箭头向下↓:电机转速下降。

        (a) 垂直运动(Throttle):4个电机均加大马力,螺旋桨产生的升力大于重力,飞机便垂直上升。当升力与重力平衡时,飞机便悬停。悬停是考验算法的重要一环,靠的是PID不断反馈,调整转速。

        (b) 俯仰运动(Pitch):电机1加大马力,电机3减小马力,二者的变化量相同。1处升力变大,3处升力减小,重力仍保持平衡,但对Y轴产生一个力矩,机身绕Y轴旋转,实现俯仰。

        (c) 滚转运动(Roll):与 (b) 原理相同,只是Y轴换成了X轴。

        (d) 偏航运动(Yaw):电机1、3加大马力,电机2、4减小马力,二者的变化量相同。重力和绕X、Y轴的扭矩仍保持平衡,但要注意的是,根据作用力和反作用力原理,由于2个正转的速度>2个反转的速度,空气阻力产生的扭矩不平衡了,使得机身绕Z轴旋转,实现偏航。

        (e) 前后运动:与 (b) 耦合,机身绕Y轴旋转一定角度后,使得升力沿水平方向有了分量,实现前后运动。

        (f) 侧向运动:与 (c) 耦合,原理与 (e) 相同。

        如果有朋友接触过麦克纳姆轮,也称“全向轮”,那就更容易理解四旋翼的工作原理了。麦克纳姆轮通过4个对称布置的电机和轮盘,可实现车身水平任意方向的移动和原地旋转,无比灵活。



主要部件

        以S500为例,S500是一架入门级的四旋翼飞机,这里的500指的是轴距(对角2个电机之间的距离),单位 :mm。对于开源爱好者而言,如果想一站式玩四旋翼,在某宝上选购一架S500是个不错的选择。下面我就从上表出发,详细介绍四旋翼的主要部件和技术名词。

四旋翼本体

        四旋翼分2种模式,1种是+模式:飞行方向(机头)与旋翼重合;1种是X模式:飞行方向(机头)平分旋翼。
        +模式:直观,简单,驱动弱,调参容易。
        X模式:复杂,稳定,驱动好,调参麻烦。
        对于四旋翼,稳定和驱动是第一位的,调参可以站在巨人的肩膀上,因此一般采用X模式。

飞行控制器

        飞行控制器简称飞控,是无人机的大脑。目前主要分开源和闭源两派,开源飞控的鼻祖来自Arduino,著名的WMC飞控和APM飞控都是Arduino飞控的直接衍生品,APM全称ArduPilotMega,其中的Ardu代表的就是Arduino。APM飞控是目前成熟度最高的开源飞控,但由于容量和计算量有限,在不久的将来一定会被更强大的PIX4、PIXHAWK所超越,成为一个时代的缩影。还有一些较为初级的飞控,如KK、QQ、玉兔等,在这就不赘述了。闭源飞控主要由商业公司推出,如DJI的工业级飞控A2、A3,入门级飞控Naza系列,还有零度的S4、X4和双子星GEMINI。值得一提是其中的双子星,是国内首个双余度安全飞行控制系统。随着安全性的重视和提高,冗余度设计也将成为无人机的标配。

螺旋桨

        4个螺旋桨,2正桨(顺时针转)2反桨(逆时针转),正反桨的风都向下吹,正反的目的主要是抵消螺旋桨的自旋。安装的时候,无论正反桨,有字的一面均向上。桨型中1045这4位数字,前2位10代表桨的直径(单位:英寸inch),后2位45代表桨的角度(单位:度°)。

电机

        4个无刷电机,2正转2反转。2212这4位数字,前2位22代表电机转子直径,后2位12代表电机转子高度,单位:毫米mm,注意均指电机转子而非外壳。如果大家留心的话,电机外壳上一般会并注明这4位数字,除此之外,还会看到一个KV值,代表外加1V电压时电机每分钟空转转速。如“KV:900”代表外加1V电压时,电机空转时每分钟转900圈。常见的电机品牌有新西达(XXD)、朗宇(SunnySky)等,并且很多外壳上会有一串神秘字符:MADE IN CHINA。

电调

        说完电机说电调,电调和电机配套使用,是飞控和电机之间的桥梁。电调全称电子调速器(Electronic Speed Control),负责将飞控的控制信号(PWM波)转变为电流的大小,进而控制电机转速。除了明面上的转换功能,还能承载电机所需的大电流,以及将11.1V转为5V供飞控和遥控模块使用(BEC输出)。电调的主要参数是电流输出能力,单位A,如30A代表电调能提供的最大电流为30A。常见的电调品牌有新西达(XXD)、中特威(ZTW)、好盈(HobbyWing)等。


电池

        一般为锂电池,因为同等电池容量锂电池最轻。大家可以看到有3个参数:3200mAh 11.1V 30c。和手机电池一样,3200mAh代表以3200mA电流放电,可持续1小时。11.1V代表电压,一般由3节标准锂电池组成(3.7V×3=11.1V),相应标识为3S。30c代表放电能力,在航模中是个重要参数,意味着可以3200mA×30的电流强度放电。说完了放电,还有充电,一般为2c充电,即充电电流可为3200mA×2。由于航模锂电池采用多节标准锂电池组成,而各节标准锂电池之间存在充放电性能差异,因此充电器一般采用平衡充,避免某节电池过充。

遥控器

        主要分美国手和日门手,美国手的油门在左边,日本手的油门在右边。在四旋翼的控制中,一般采用美国手。怎么判断油门呢?很简单,遥控器左右2个摇杆中,推上去不回弹的是油门。也很好理解,油门一般稳定在一个位置就好了,回弹的话飞手会流泪。遥控器中也有1个神秘数字,6代表6通道,即遥控器可控的动作路数。因为四旋翼有4个自由度,所以遥控器至少需要4通道,剩余的通道用于控制飞行模式等。
        至此四旋翼的主要部件和技术名词介绍完毕,还有一些可选部件,如数传、OSD、云台、相机、图传等,待大家入门后即可自行挖掘。最后附上一个Exciting的TED视频,震撼你的眼球。 拉菲罗·安德烈:四轴飞行器灵活的运动性。
        PS: 无人机系列的第2篇至此结束,接下来就会进入正题——APM飞控。欲知后事如何,且看下回分解。

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

APM飞控学习之路:2 四旋翼的工作原理与系统组成 的相关文章

  • DOS 命令访问FTP错误:425Failed to establish connection

    在windows命令窗口访问FTP服务会出现425Failed to establish connection的错误 解决办法 xff1a 1 关闭本队防火墙 2 在防火墙允许通过的程序中 xff0c 根据所用网络勾选 文件传送程序
  • 串口通信协议简介—学习笔记

    串口通信协议简介 学习笔记 文章目录 串口通信协议简介 学习笔记一 串口 COM口 UART口 TTL RS 232 RS 485区别详解1 物理接口形式2 电平标准2 1 TTL 2 2 RS232 2 3 RS485 2 4 TTL标准
  • Python 爬虫下一代网络请求库 httpx 和 parsel 解析库测评

    这是 进击的Coder 的第 437 篇技术分享 作者 xff1a 大江狗 来源 xff1a Python Web与Django开发 阅读本文大概需要 8 分钟 Python 网络爬虫领域两个最新的比较火的工具莫过于 httpx 和 par
  • ubuntu下rsync两个服务器同步文件

    前言 文件服务器为ubuntu的 xff0c 客户端为windows的环境 主服务器配置 在Ubuntu下安装rsync通过以步骤可以实现 xff1a span class token function sudo span span cla
  • ROS总结——ROS消息发布和订阅

    消息发布器和订阅器 C 43 43 本博客总结绍如何用 C 43 43 编写消息发布器节点和订阅器节点 1 编写发布器节点 节点 Node 是指 ROS 网络中可执行文件 接下来 xff0c 将会创建一个发布器节点 talker xff0c
  • 无线充电器的CE认证、FCC认证、IC认证测试标准

    无线充电器是指不用传统的充电电源线连接到需要充电的终端设备上的充电器 xff0c 采用电磁感应原理 xff0c 通过线圈进行能量耦合实现能量的传递 从理论来说 xff0c 无线充电技术对人体安全无害处 xff0c 无线充电使用的共振原理是磁
  • STM32 uart空闲中断

    文章目录 目的 xff1a 前提 xff1a 相关代码 xff1a 使能UART IT IDLE中断中断处理函数中添加回调回调处理函数 目的 xff1a 使用UART空闲中断接收不定长消息 前提 xff1a stm32CubeMX工具配置u
  • 远程访问如此简单,通过 ZeroTier 和 Tailscale 轻松组建虚拟局域网,实现内网穿透。

    因为最近用了 Plex 所以研究了一下远程访问 xff0c 经过一番折腾基本上算是搞明白了 xff0c 在这里分享一些自己的经验给和我一样的小白 xff0c 如果有不对的地方欢迎指正 这里的远程访问是指在局域网外通过网络访问局域网 xff0
  • 组网必看,有线 MESH 全攻略。

    之前写过几篇关于 MESH 组网的文章 xff0c 主要讲解了如何布线 xff0c 路由器和光猫 交换机等设备应该怎样连接 xff0c 但通过大家的反馈我发现我漏掉了一个重点 xff0c 就是光猫和路由器应该如何设置 xff0c 这也是很多
  • 给 iOS 装上旧版 APP,十年前的 iPad mini 重获新生!

    不知道有没有人像我一样 xff0c 还留着五年前 十年前的老 iPad 老 iPhone xff0c 如果有 xff0c 你们一定知道有些老 iPad 老 iPhone 已经停在一个系统版本无法再继续升级了 xff0c 或者因为害怕升级变卡
  • Stable Diffusion WebUI 1.4「gradio」报错解决方案

    今天有很多朋友在运行 Stable Diffusion WebUI 1 4 时都遇到了 ModuleNotFoundError No module named 39 gradio 39 这个报错 xff0c 在这里给大家一个解决方案 xff
  • 如何在 macOS 使用 AList + RCLONE 把网盘挂载到本地

    之前接触最多的可能还是百度网盘 xff0c 它的免费容量比较大 xff0c 我们在下载和分享一些文件的时候经常会用到 xff0c 但是如果文件比较大 xff0c 加上限速 xff0c 使用体验并不算太好 其实除了下载文件 xff0c 我很少
  • jdk 安卓sdk 安装

    https www cnblogs com gufengchen p 11038029 html jdk sdk安装详细步骤 https www jianshu com p 8fb367a51b9f utm campaign 61 haru
  • 通过 Plex + Trakt 同步观看状态和评分,轻松记录你的追剧观影史

    喜欢看电影 追剧 追综艺的朋友想必都有做记录的习惯 xff0c Plex 的用户里用豆瓣的人估计不少 xff0c 使用豆瓣标记电影 写影评 短评和参与线上讨论是非常方便的 xff0c 但是豆瓣对电视剧的支持相对还是比较弱 xff0c 很多剧
  • macOS 如何设置 AList、RCLONE、xTeVe 开机启动后台运行

    之前和大家分享了 macOS 上 AList RCLONE xTeVe 的使用教程 xff0c 他们基本上都是通过终端命令或者 Unix 可执行文件运行的 xff0c 启动后需要保持运行状态才能持续提供服务 xff0c 今天分享一下如何让它
  • zynqmp zcu102 SD卡驱动调试

    新板卡使用sdhci0 xff0c 以前是sdhci1 xff0c 由于官方没有使用sdhci0所以需要手动添加设备树 xff1a amp sdhci0 clock frequency 61 lt 60000000 gt status 61
  • zynqmp zcu102 arm linux (uboot网卡输出调试信息)

    需求 xff1a 使用网卡输出自检 调试信息 由于uboot启动完成就退出运行 xff0c 进入Linux启动 xff0c 不是进入消息循环处理网络协议栈 xff0c 且没有现成的udp接口发送数据 xff0c 所以想在启动中输出调试信息调
  • libiec61850-1.4 库的使用和修改(goose)

    目的 xff1a 使用libiec61850 1 4 库接收和发送goose数据 xff0c 环境Ubuntu 18 04 4 LTS 问题 xff1a 使用libiec61850 1 4 examples goose publisher例
  • zynqmp zcu102 arm 裸机SD卡驱动

    1 加载PL端提供的 HDF 2 创建hello world例程 xff08 bsp xff09 3 在main函数中调用驱动初始化sd卡 void mmc test void s32 Status XSdPs InstancePtr XS
  • ubuntu / 麒麟 播放PCM音频文件

    ubuntu18 04 麒麟 播放PCM音频文件 xff0c 源码来源于网友文章再修改 xff0c 仅测试用 xff01 如果应用在产品上需要再优化 最简单的SDL2播放音频的例子 xff08 SDL2播放PCM xff09 Simples

随机推荐

  • QT中关于close()系统调用 和qt close()冲突

    参考 xff1a 点击打开链接 xff08 http bytes com topic c answers 856501 use close int unistd h qt xff09
  • 解决QScrollArea不能出现滚动条的问题

    转载 xff1a QScrollArea实在是一个非常强大的控件 xff0c 节省了很多重复工作 但如果使用Qt Creator中的ui designer来制作界面的话 xff0c 就会出现滚动条无法出现的问题 而在 C 43 43 GUI
  • QT子窗口全屏显示与还原问题

    子窗口全屏显示 vws gt setWindowFlags Qt Dialog vws gt showFullScreen 之后窗口还原时调用 this gt showNormal 对顶级窗口有效 this gt setWindowFlag
  • 设置系统屏幕关闭及系统休眠时间

    include lt Powrprof h gt pragma comment lib 34 PowrProf lib 34 DWORD lockTime 61 0 void SetPowerPolicy SYSTEM POWER POLI
  • 如何编译和运行C++程序

    如何编译和运行C 43 43 程序 C 43 43 和C语言类似 xff0c 也要经过编译和链接后才能运行 我们在C语言课程的时候 xff0c 讲了如何使用 VS VC 6 0 VC 43 43 2010等常见开发工具 xff0c 它们除了
  • 简单理解socket(AF_INET&SOCK_STREAM,SOCK_DGRAM)

    套接字 在任何类型的通信开始之前 xff0c 网络应用程序都必须创建套接字 套接字最初是为同一主机上的应用程序所创建 xff0c 使得主机上运行的一个程序 xff08 又名一个进程 xff09 与另一个运行的程序进行通信 这就是所谓的进程间
  • 为什么编程语言中需要堆和栈

    概述 在我们学习 C C 43 43 和 Java 等编程语言的时候经常要学习一个概念就是堆和栈 xff0c 对于大部分经验丰富的工程师来说 xff0c 堆和栈是再熟悉不过的东西了 xff0c 堆和栈都是存储程序运行时变量的地方 但这个时候
  • GT1050 PointPillar成功运行

    目的 之前在感知这里主要是考传统的算法 xff0c 但是遇到了瓶颈 xff0c 计算效率提不上来 xff0c 所以尝试一下其他的方法 目前看到pointpillar这种方法效果比较好 xff0c 就打算尝试一下 跑通测试一下效果 piont
  • 使用离线数据测试apollo7.0

    https zhuanlan zhihu com p 510712104 cd apollo 视觉测试 xff1a 1 启动dreamview 并选择车辆和地图 scripts bootstrap sh 2 启动transform模块 cy
  • 相机、激光雷达坐标系相互转换

    目录 读入外参和摄像头内参配置文件读入TF读入 激光雷达坐标系转到摄像头坐标系摄像头坐标系转到激光雷达坐标系 读入外参和摄像头内参 配置文件读入 std span class token double colon punctuation s
  • C++ thread的方式

    多线程的实现方式 xff0c 只做记录 xff0c 自己看 目录 第一种 在类中实现多线程第二种 在类外第三种 没有类第四种 pthread 定时触发总结附录 第一种 在类中实现多线程 新建thread对象 xff0c 传入类的成员函数名称
  • zynq 在ubuntu下移植ubuntu操作系统

    米联客的配套的文件是osrc lab 1 配置路径 在setting64 sh中把路径给更改一下 这里就是 改成ubuntu 并运行surce settings64 sh 2 rootfs 执行脚本 cfg rootfs sh 然后make
  • zynq 维修调试记录 客服支持 工作记录

    米联的板子用底板供电 xff0c 用JTAG往里面下程序 的时候也出现了如下问题 xff1a 跟客服进行沟通 xff0c 客服的回答是 xff1a 一般是两种可能 xff0c 一个是开发板坏了 xff0c 进行如下操作 xff0c 操作的程
  • ubuntu 16.04 安装apollo3.0(发布版)

    参考官网文档 xff1a https github com ApolloAuto apollo tree master docs https github com ApolloAuto apollo blob master docs how
  • 关于malloc返回地址无法访问

    正常情况下使用malloc申请内存 xff0c 要么是申请成功返回有效地址 xff0c 要么是内存申请失败 xff08 内存不足 xff09 返回NULL 如果出现返回了地址却无法访问的情况 xff0c 很有可能是前面代码访问内存时出现了越
  • docker里面安装Qt Creator

    sudo apt get install qt5 default qtcreator
  • 软连接ln -s 创建以及删除

    在 usr local 创建软连接 链接到 usr local include test dst文件夹 phe 64 phe usr local sudo ln s usr local include test dst test sourc
  • CAN报文:数据帧详解

    CAN报文 xff1a 数据帧详解 CAN报文CAN帧类型数据帧帧起始 Start Of Frame 仲裁段控制段数据段CRC段ACK段帧结束 End Of Frame CAN报文 CAN使用的是两条差分信号线 xff0c 只能表达一个信号
  • I2C总线和SPI总线

    I2C串行总线一般有两根信号线 xff0c 一根是双向的数据线SDA xff0c 另一根是时钟线SCL I2C协议 2条双向串行线 xff0c 一条数据线SDA xff0c 一条时钟线SCL SDA传输数据是 大端传输 xff08 字节高位
  • APM飞控学习之路:2 四旋翼的工作原理与系统组成

    一叶障目 xff0c 不见泰山 在研究四旋翼飞行器之前 xff0c 有必要从整体介绍其工作原理 主要部件 技术名词等基础知识 不然就像羊入虎口 xff0c 陷入一大堆不同层次的资料 xff0c 难觅出口 接下我就抛砖引玉 xff0c 尽自己