微型四旋翼飞行器设计经验之瞎扯淡[通俗易懂]

在正式开始记录微型四旋翼飞行器设计的学习笔记之前,感觉自己很有必要先给自己一个总结,也希望能够帮到更多的朋友少走弯路(虽然不知道帮助大不大)。去年九月下旬开始了微型四旋翼飞行器的学习与设计,在12月底的时候初步实现了稳定的遥控与飞行,后续又增加了一些常规的辅助的功能,失控保护、姿态微调等等,之后又利用OLED屏幕,设计了一个三级菜单,把各种参数的设置,飞控锁定与通讯的状态等等一些信息都整合在一

大家好,又见面了,我是你们的朋友全栈君。在正式开始记录微型四旋翼飞行器设计的学习笔记之前,感觉自己很有必要先给自己一个总结,也希望能够帮到更多的朋友少走弯路(虽然不知道帮助大不大)。


去年九月下旬开始了微型四旋翼飞行器的学习与设计,在12月底的时候初步实现了稳定的遥控与飞行,后续又增加了一些常规的辅助的功能,失控保护、姿态微调等等,之后又利用OLED屏幕,设计了一个三级菜单,把各种参数的设置,飞控锁定与通讯的状态等等一些信息都整合在一起,利用相应的按键,可以很方便的查看、设置。通过一次一次的优化一些细节,飞行器的飞行效果令人满意。

微型四旋翼飞行器设计经验之瞎扯淡[通俗易懂] 

在此真心要感谢喵呜实验室的开源四旋翼项目,我最初的学习标杆就是在参考喵呜实验室的小四轴。当然,也有很多朋友参考匿名,圆点博士等等,都是可以的,本人也对比参考了一部分。感谢这些团队的开源精神。


在开始之前,先吐槽!!!!!!!!!!!!!!!

8位机做多旋翼飞控!?


8位机做飞控!?这是我在设计飞行器期间听到的最多质疑。甚至很多“德高望重”的老古董老师,从头到尾把你批判一番,理由是什么8位机的PWM输出只有256宽度的计数周期,分辨率不够。。。更有甚者直接放话说8位机就是专科生玩的玩意,本科生用8位机做设计简直就是xxx。。。面对这样的言论,我只能选择呵呵一笑,老古董你可知道MWC飞控,APM飞控的主控ATmage328P也是8位的,但是这并不影响人家引领全球DIY多旋翼的热潮啊,而且谁告诉你当下的8位机就是你那个年代的8051或者8086?讲真,做四旋翼的这个过程,让我认清了很多东西。至少我们院系是这样的:喜大好功、什么东西只认准最高端的、功能只看是不是天花乱坠而不管实际的学习成本。一个老师甚至说,做四旋翼,要把DSP、FPGA、ARM、操作系统神马的全都搞上。。。但是初期学生学习的时候会遇到什么具体问题?怎么能让他们快速上手少走弯路?四旋翼学习的真正核心在哪里?很少有人真的关心这些实际问题。“你没有用STM32,那你就是低端的”,这种言论真的是受够了。。。


个人认为,不管做任何设计,芯片本身没有高低端之分,只有适用于不适用之别,根据设计需要不同(时间因素,成本因素,开发难度等等)选择最合适的芯片和方案,就是最好的。如果说只是因为别人的芯片位数不高或者不够“高大上”就以此去把别人批判一番,我觉得不是真正搞技术的人该有的心态。


对于初学者来说,尤其是像我这种渣渣,大四本身已经没有多少学习时间了,并且因为种种原因我没有实验室可以进,手边的STM32学习板是借童鞋的不好一直占为己用(穷),而且自己学习四旋翼的计划重点在于姿态与控制算法的学习,因此我必须让自己在最短的时间内设计出软硬件,并且能够掌握理论知识,那么综合考量,我自己用8位机可以节省我自己的时间,把更多的经历放在学习算法上,这样岂不是很高效?我不知道自己的这种学习安排有什么不好,就因为8位机就不高端了、简直是笑话。什么叫8位机只是专科生玩的?老古董就会带着有色眼镜看人,专科生比本科生强的,一抓一大把。私以为,只要技术强的,都是应该尊敬的,别管人家是专科还是什么,技术才是硬道理,学历真的不能说明什么。


吐槽半天,到底8位机能不能做多旋翼飞控?答案当然是可以的,在此真的感谢喵呜实验室!喵呜团队的飞行器恰好就是用8位机作为主控的,型号的STC15W4K32S4系列。我用过这个芯片做平衡车,还是很强大的。网上有一段它和ATMage328P的性能对比:现在的51早已不是当年的51,6路15位硬件PWM+2路CCP的16位硬件PWM,相当于是8路15位硬件PWM,mega328都可以直接秒掉,而mega328却正是市售MWC飞控的主控,mega328速度16MHZ,等效16MIPS,IAP15W4K61S4@28MHZ,等效25MIPS,运算速度也秒了mega328,也就是说,用51单片机做四轴绝对不成问题。

(来自:http://bbs.mydigit.cn/read.php?tid=1115916)


老古董打脸不?谁告诉你8位机的PWM计数周期只有256?高速八位机PWM不光是15位的,而且还是硬件PWM,非常好用。

不吐槽了,毕竟是负能量,说句公道话。如果是进阶的朋友,需要搞更复杂的功能,比如机器视觉啊,更复杂的算法啊之类的,傻子都知道当然还是选择ARM内核的啦。对于初学者,想学习基本算法,实现基本的飞行,不搞那些高端的玩意的盆友,相信我,这款8位机足够让你快速开发四旋翼的软件了,而且能够节省很多时间用来学习算法!根据需求不同,大家合理选择芯片,才是最好的。千万不要像我们系的老古董一样,喜大好功。

以下是经验谈!!!!!!!!

一、四旋翼的学习核心在什么地方?

这个问题我觉得是每一个想学习四旋翼的盆友都要考虑明白的,四旋翼是一个非常综合的项目,涉及到了很多专业知识,甚至于非电子专业的知识。因此我们在学习之前,必须先搞清楚我们学习的核心在什么地方?如果学习四旋翼,只是为了学习硬件编程,电路设计,配置一些寄存器,调试一下IIC通讯,无线通讯之类的,那么我觉得,这些还不足以是四旋翼学习的核心所在。我个人认为,四旋翼学习的前期,是上面说的到那些部分,需要认真对待,好好调试。但是到了后期,等这一切都完成了,真正的核心应该回归到算法上。如果说硬件电路是骨骼,那么算法就是是一个控制系统的灵魂所在。

微型四旋翼飞行器设计经验之瞎扯淡[通俗易懂] 

以微型四旋翼飞行器来说,核心算法大概分为两个部分:姿态解算算法与控制算法。其中姿态解算算法是核心中的核心!它在很大程度上决定了四旋翼飞行的准确性与稳定性!试想,如果飞行器无法正确计算出自己飞倾角,那么再好的控制算法也无法使之保持稳定。

 
微型四旋翼飞行器设计经验之瞎扯淡[通俗易懂]

因此,有很多盆友跟我说,做四旋翼,主要就是调PID,我只能说你们太不踏实了。我参考了好多个团队代码,真正的姿态解算的核心部分大家几乎都用的是同一个IMU.C文件,其实这样也无所谓,问题的关键是,不能只是调用人家的核心算法,在调通代码的基础上,一定要深入了解这个算法是如何把姿态正确计算出来的!知其然一定要尽可能的去知其所以然,否则学到头,自己依然只是会配置个寄存器,控制外设而已,那么这样一来,好像做四旋翼与不做四旋翼并没有本质的提升,因为输出PWM,配置个中断,调试个通讯协议,开发板就能做到,还需要四旋翼干什么?


对于控制部分的算法来说,用的最广泛的就是PID控制了,在此我还是很想跟即将开始设计四旋翼的童鞋们来说,PID控制不应该只是会调试参数。我们应该尽可能的去理解自动控制原理,去理解反馈的感念,去理解为什么四旋翼上最常用的是串级PID而不是单级PID。这些内容推荐入门的盆友稍微学习一下《自动控制原理》(胡寿松)会有很多好处的。上一次的一个文章是以温度系统为例,利用Simuink来仿真对比一下不同PID的效果,为的就是能够动手感受一下不同PID不同参数下的响应特点,使学习PID控制有一个感性的认识。

(链接:http://blog.csdn.net/rick_grimes/article/details/75095315)

二、设计制作四旋翼有什么快速上手的方法?

这个问题应该也是出初学者最头疼的问题,市面上飞行器一大堆,航模级别的飞控更是一抓一大把。打着开源旗号的飞控也是很多,但是航模级别的飞控只适合玩,真正想学习的话,APM、MWC之类的真心不合适。以我个人设计方案来说,首先我的学习时间短,不允许我有很多时间去浪费,其次我的方案是想选择8位机。因此我选择了先软件,后硬件的学习计划。也就是说,我先买一套成品小四轴,主控芯片跟我的方案一样,然后再这个硬件平台上先调试自己的软件程序,等一切调好之后,再着手设计自己的硬件,这样出现问题,可以更快速的解决。试想如果从一开始就软硬件自己来,出现问题需要把软硬件都排查一遍,耽误时间会很多,也会走很多弯路。


我选择的喵呜实验室的小四轴,硬件设计很完善,前期让我可以很放心的去调试软件而不用担心硬件问题。当然,也有很多童鞋使用别的芯片例如STM32来设计的,大家也可以选择别的硬件平台。道理都是一样的。学会站在巨人的肩膀上学习!

 

三、新人应该从什么地方开始学习?

我想,能够来尝试四旋翼的盆友,至少都是有软硬件设计基础的,排除什么都不会的真小白,下面我就假设所有的盆友都已经有基础了,以此来谈谈我认为应该从什么地方开始动手。


四旋翼飞行器的核心前面已经说过了,是姿态算法。所以上手四旋翼的第一步,首先应该明确姿态传感器,我想大家一般都选用的是MPU6050,所以我就用它来说。首先在设计之初,至少需要利用IIC通讯,读取出6050传感器的数据,并且去学习读取出的数据如何转化成我们需要的真实数据单位。这一步我认为是最关键的,因为只有传感器的数据读取准确了,才能使后续算法的计算有一个稳定的数据来源。因此学习四旋翼的第一步,应该是搞定MPU6050!


搞定6050传感器其实是有很多技巧的,比如最重要的数据手册,必须要了解其中关键的一些部分,比如量程的选择,精度的选择,速度的配置等等。IIC通讯也是比较头疼的比个地方,尤其是在电平时间的控制上,很容易出现问题。因此需要花时间去试错。调着调着经验就有了。

微型四旋翼飞行器设计经验之瞎扯淡[通俗易懂]

四、如何高效设计四旋翼飞行器的软件程序?

这个问题其实对于任何一个系统来说都是适用的,因为有盆友问过我这个问题,在设计飞行器某一个部分的程序的时候,出现问题无法及时确定出问题所在,或者无法正确排除没有出问题的部分。所以单独把这个小问题拿出来说说,本人也是个渣渣半吊子,在这方面没什么真正有用的经验,我的一贯方法是:分模块各个击破!对,很传统的方法,但是我觉得比较适合自己。


举个栗子:比如飞行器的程序,现在需要调试2.4G无线通讯,那么我只需要先写好飞行器接收2.4G信号的程序在开发板上,然后利用我购买的飞行器的遥控器,给开发板发数据,如果开发板收不到数据但是配套的飞行器可以收到,说明自己的程序有问题啦,对照飞行器的2.4G接收部分,自己程序和人家程序不一样的地方,很有可能是出现错误的地方。这种方法挺笨的,但是我自己一直是在寝室独自学习,没设备、没老师。所以每次都是这样一块一块自己摸索,因为有可供参考的标准硬件平台,所以一个部分一个部分的来,还是很高效的!

总结


不一定有用的一些经验和吐槽,但愿能够帮助到一些朋友吧。后续继续总结,慢慢更新相关部分的学习笔记。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127827.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unityshader教程_unity炫酷的shader

    unityshader教程_unity炫酷的shader参考链接:http://www.xiaobao1993.com/373.html去色shader:Shader”Custom/Gray”{ Properties { _MainTex(“Base(RGB)”,2D)=”white”{} }SubShader{Pass{C

    2022年10月5日
    3
  • Java入门第100课——Calendar的getInstance方法

    不知不觉到第100课了,码字真的累,写完后还要反复检查是否有笔误,以免对大家造成困扰。后面还有好多课时,真的是从零基础开始,一直到框架。不知能不能坚持写完,关注的人越多更的越快。最近更的比较快是因为有存货,存货还能撑50课的样子。一天不吃不喝最多也就写10个课时。有点啰嗦了,有什么想法给我留言吧。问题Calendar类是一个抽象类,它为特定瞬间与一组诸如YE…

    2022年4月14日
    111
  • 【实施工程师】ubuntu创建文件

    【实施工程师】ubuntu创建文件【实施工程师】ubuntu创建文件touch命令:touch文件名.后缀在当前工作目录底下新建一个文件:touchindex.php编辑文件使用【vi】或【vim】均可。键盘输入【i】是开始输入:输入测试内容:键盘输入【Esc+:wq】退出并保存查看是否编辑成功:保存成功。…

    2025年6月26日
    3
  • java的集合和数组_Java集合和数组的区别

    java的集合和数组_Java集合和数组的区别Java 集合和数组的区别集合和容器都是 Java 中的容器 区别数组特点 大小固定 只能存储相同数据类型的数据集合特点 大小可动态扩展 可以存储各种类型的数据转换数组转换为集合 Arrays asList 数组 示例 int arr 1 3 4 6 6 Arrays asList arr for inti 0 iSystem out println arr i 集合转换为数组 集

    2025年10月12日
    7
  • 【PHP SPL笔记】

    这几天,我在学习PHP语言中的SPL。这个东西应该属于PHP中的高…

    2022年1月18日
    35
  • 探讨PMI测量配置对5G下行速率的影响

    探讨PMI测量配置对5G下行速率的影响问题描述 当前 5GPMI 测量配置均为 8P4B 那么什么是 8P4B 另外为什么功能开启后能提升下行速率 问题分析 首先简单回答 8P4B 是一组下行参考信号 CSI RS UE 测量 CSI RS 信号用于给基站反馈下行 CQI PMI RI CRI 等信息 当基站读到信息后会给 UE 分配最合适的 MCS TBSize RB 资源等调度相关的参数 从而使 UE 的下载性能达到最佳 一 8PP 是 port 的缩写 就是 8 个端口 这里的端口是逻辑天线端口 下图是按照目前中兴推荐配置后的一个 RB 内的 8 个端口

    2025年9月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号