《DIY四轴飞行器》读书笔记1

内容整理于黄和悦的《DIY四轴飞行器》。


一、四轴飞行器概述

1、四轴飞行器的现状

(1)研究内容

  • 多级协作,自主飞行倾斜;
  • 最优控制理论,飞行器自主飞行和避障;
  • 主要是飞控部分。

(2)特点

  • 无刷电机(直流输入,三相电输出);
  • 惯性较小,运动状态极易改变,需要很高的控制频率。
  • 姿态检测和控制。


2、力学原理和控制框图

(1)力学原理

  • X模式,+模式。
  • 力的合成和分解,空气转动扭矩的反向性。
  • 相邻电机转动方向相反。

(2)坐标系

  • 机体坐标系,当四轴倾斜时,此坐标系和大地坐标系不再重合。
  • XYZ轴和各个旋转轴之间符合右手螺旋定则,XYZ坐标系上面的旋转方向命名为俯仰、横滚、偏航。用角度来表示。
  • 所谓四通道,即上下油门、左转右转、前后运动、左右运动。
  • 飞行器控制框图。


二、四轴飞行器的组成和各部分功能

1、结构框图


(1)遥控器和接收器

  • 接收器输出的是50Hz的PWM波,用占空比数值来表示遥控器摇杆的位置
  • 这些是由我们来控制,如果是视觉控制,自主导航类的四轴,目标姿态则又不同了。

(2)姿态检测单元

  • 陀螺仪:检测四轴绕着Pit,Rol,Yaw三个方向的旋转角速度的器件;
  • 加速度计:检测沿着XYZ三个轴的线性加速度的器件;
  • 磁强计:即电子罗盘,用于测定于地磁南北极的夹角,从而知道机体坐标系和大地坐标系的偏差。
  • 气压计:知道四轴周围的气压,从而知道绝对高度,起到稳定高度的作用。
  • 可见前三者各有三个轴向的数据采集,加上气压计采集的一个高度数据,包含以上单元的姿态检测单元称为10DOF,即10轴传感单元。

(3)处理器

  • 对姿态单元检测到的数据进行处理和计算,得到当前四轴的准确姿态;
  • 对预期姿态和当前的真实值进行对比,计算出误差,并输入到PID调节器,最终解算出四个电机的转速;
  • 而转速数据以四路PWM波的形式输送到电机驱动和电机中。

(4)调试器

  • 调试器将程序下载到处理器中;
  • 结合适当的PC程序,可以观测四轴算法计算出来的各种数据。

(5)电机驱动器和电机

  • 在较大四轴飞行器中,一般采用无刷电机,配合无刷电机驱动器(俗称电调),要求50Hz的PWM波,占空比为5%~10%。
  • 在微型四轴飞行器中,一般采用有刷电机,配合MOS管即可,无需按照电调的范围调节占空比、频率,而是可以自定义。

2、遥控器

(1)2.4G遥控器

  • 对码
  • 发射机通道和反向设计

(2)蓝牙/安卓遥控


3、电机和驱动

(1)无刷电机(属于外转子机)

(2)电压(将一节锂电池的3.7v称作1S)

(3)电调(MOS管配合单片机组成,将直流电转化为三相驱动电流)

(4)油门行程:当占空比变化1%时,电调控制电机转速对应多少变化。


4、机架

5、电池

(1)电池的C数(指的是最大放电倍率)

(2)电池的容量


6、飞控

接收遥控器信号

计算当前姿态,与预设姿态比较,输入PID调节器(这个是在处理器中?)

输出PWM(到电调?),用占空比控制电机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脚本输出当前 “yyyy-MM-dd WeakDay Festval”

ylbtech-JavaScript: 脚本输出当前 “yyyy-MM-dd WeakDay Festval”脚本输出当前 “yyyy-MM-dd WeakDay Festval” 1.A,源代码(Source Code)-脚本输出当前 “yyyy-MM-dd WeakDay Festval”返回顶部 <SCRIPT languagejavascript> <!--calendar new Date();day cal…

SecureCRT密钥远程登录Linux

一&#xff1a;环境SecureCRT版本&#xff1a;SecureCRT_5.1.3linux版本&#xff1a;[rootangelT ~]# cat /etc/redhat-release CentOS release 6.4 (Final)[rootangelT ~]# uname -r2.6.32-358.el6.x86_64linux系统的sshd_config配置文件是默认的&#xff0c;没有任何的修改。…

在Linux系统安装Nginx及配置https加密访问

2019独角兽企业重金招聘Python工程师标准>>> 1、安装nginx ①、为了确保能在 nginx 中使用正则表达式进行更灵活的配置&#xff0c;安装之前需要确定系统是否安装有 PCRE&#xff08;Perl Compatible Regular Expressions&#xff09;包。您可以到 ftp://ftp.csx.c…

和菜鸟一起学linux之bluez学习记录2

这里主要摘取对于hci&#xff0c;l2cap&#xff0c;sdp和rfcomm的一些应用编程。 关于hci 一、HCI层协议概述 1、HCI Command Packets 详见bluez源码&#xff1a;lib/hci.h /* Link Control */ #define OGF_LINK_CTL 0x01 #define OCF_INQUIRY 0x0001 #define OCF_…

AppDelegate.h

2019独角兽企业重金招聘Python工程师标准>>> #ifndef __APP_DELEGATE_H__ #define __APP_DELEGATE_H__#include "CCApplication.h" //CCApplication.h能根据平台打开对应的平台头文件 /** brief The cocos2d Application.The reason for implement as …

虚拟机上网以及互ping问题

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 虚拟机设置静态IP和上网问题 &#xff08;1&#xff09;在“虚拟机——设置——网络适配器”中选择桥接模式&#xff1b; &#xff08;2&#xff09;在“编辑——虚拟网络编辑器”中&#xff0c;选择桥接到有…

qt 飞扬青云_R语言学习——实例标识符

> patientID> age> diabetes> status> patientdata> #在上述创建的病例数据框中&#xff0c;病人编号(patientID)用于区分数据中的不同个体&#xff0c;在R中实例标识符(case identifier)可以通过数据框操作函数中的rowname选项指定&#xff0c;如下代码&…

fck java_FCkjava三种调用方法

测试FCK方法一:toolbarSet "Default" >默认内容测试方法二:FCKeditor oFCKeditor ;oFCKeditor new FCKeditor(request,"content") ;oFCKeditor.setBasePath( "/db/fckeditor/" ) ;oFCKeditor.setWidth("600");oFCKeditor.setHeig…

Spring 容器(Spring 的上下文)

为什么80%的码农都做不了架构师&#xff1f;>>> 最近在做项目时牵扯到有关父子上下文的概念。 何为父子上下文呢&#xff1f; 父上下文&#xff1a; 使用listener监听器来加载配置文件&#xff0c;如下&#xff1a; <listener> <listener-class>org.…

file_operations结构体

以下读书笔记内容摘自宋宝华《Linux设备驱动开发详解》一书。 file_operations结构体在字符设备驱动的地位 file_operations结构体的定义 此结构体定义在x210kernel/include/linux/fs.h文件中。 struct file_operations {struct module *owner;loff_t (*llseek) (struct file …

FlashCC学习札记

前段时间项目中有一个功能模块用到了FlashCC&#xff0c;将C的代码编译成swc文件&#xff0c;以便在Flash工程中使用。开发过程中遇到一些问题&#xff0c;现在记录下来&#xff0c;以便日后查阅。 一、开发环境搭建 说明:本文所使用的FlashCC版本为1.0.1&#xff0c; 操作系统…

”凉凉“ 的故事

某一天&#xff0c;我在给数据匹配编码的时候发现一个数据匹配不到编码&#xff0c;我怀疑是码表问题&#xff0c;终于发现一个非常奇妙的事情&#xff1a;两个一模一样的字符串竟然不相等&#xff1f;&#xff1f;&#xff1f; 屌爆了&#xff0c;我上下左右看遍了也没看出这2…

面向对象理论概述

2019独角兽企业重金招聘Python工程师标准>>> 转载自&#xff1a;http://my.oschina.net/brucelee80/blog 面向对象与面向过程的区别 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就…

网络设备驱动介绍

以下内容源于朱有鹏《物联网大讲堂》课程的学习&#xff0c;如有侵权&#xff0c;请告知删除。 一、网络设备驱动概述 1、什么是网络设备 &#xff08;1&#xff09;网络设备&#xff1a;物理网卡在linux中形成的体系软件表现。 &#xff08;2&#xff09;物理网卡&#xff…

山东理工ACM【2561】九九乘法表

九九乘法表 Time Limit: 1000ms Memory limit: 65536K 有疑问&#xff1f;点这里^_^ 题目描述 九九乘法表是数学学习的基础&#xff0c;今天我们就来看看乘法表的相关问题。《九九乘法歌诀》&#xff0c;又常称为“小九九”,如下图所示。你的任务是写一个程序&#xff0c;对…

java ajax 定时刷新_用ajax技术实现无闪烁定时刷新页面

function makeRequest() {var guid rnd();//记住给个随机数&#xff0c;不然的话有缓存var url "example_b.aspx?id" guid;createXMLHttpRequest();xmlHttp.onreadystatechange handleRefresh;xmlHttp.open("GET", url, false);xmlHttp.send(null);}/…

platform驱动开发套路、DM9000的一些分析

1、 模块加载函数&#xff0c;是通过platform_driver_register()、platfprm_driver_unregister函数进行platform_driver的注册和注销&#xff1b; 原先注册和注销字符设备的工作&#xff0c;被移交给platform_driver的probe()成员函数和remove()成员函数中。 第一句是将硬件信…

Android企业级程序完全退出的解决方案

一、问题描述 在平常开发的过程中可以发现&#xff0c;很多开发者对于程序的退出都没有去认真的解决。一般要么是一个简单的finish&#xff08;只是退出当前的activity&#xff09;&#xff0c;要么是其他的方法&#xff0c;比如&#xff1a; 1、第一种方法&#xff1a;首先获取…

块设备驱动介绍

以下内容源于朱有鹏《物联网大讲堂》课程的学习&#xff0c;如有侵权&#xff0c;请告知删除。 一、正确理解块设备驱动的概念 1、块设备和字符设备的差异 块和字符是两种不同的访问设备的策略&#xff1b;同一个设备可以同时支持块和字符两种访问策略&#xff1b;设备本身的物…

java中有scoreframe类型嘛_java构造函数的三种类型总结

我们说构造函数能处理参数的问题&#xff0c;但其实也要分三种情况进行讨论。目前有三种类型&#xff1a;无参、有参和默认。根据不同的参数情况&#xff0c;需要我们分别进行构造函数的讨论。这里重点是无参构造函数的初始化也要分两种方法进行分析。下面我们就这三种不同的构…