[飞控]如何学习无人机-入门篇「建议收藏」

学什么我把无人机分成3个大模块操作目的:组装无人机,享受驾驶无人机的乐趣。抱歉我给不了太多建议,因为我从没有以此为目进行过学习,但是我知道这一部分的知识关键词是【航模】,有非常多的【航模】发烧友可以给你更专业的意见。知识目的:了解无人机的本质知识解决的是「why?」如果你遇到的问题通常是,为什么要用欧拉角?为什么要用滤波?那说明你现在需要的问题都是知识型问题。关键词是【导航】【控制…

大家好,又见面了,我是你们的朋友全栈君。

学什么

我把无人机分成3个大模块

操作

目的:组装无人机,享受驾驶无人机的乐趣。

抱歉我给不了太多建议,因为我从没有以此为目进行过学习,但是我知道这一部分的知识关键词是【航模】,有非常多的【航模】发烧友可以给你更专业的意见。

知识

目的:了解无人机的本质

知识解决的是「why?」 如果你遇到的问题通常是,为什么要用欧拉角?为什么要用滤波?那说明你现在需要的问题都是知识型问题。关键词是【导航】【控制】等理论知识。

开发

目的:实现一个具体功能,比如:室内悬停,避障,全自动A点飞到B点等等

通过【知识】,使用【工具】完成自己的目标,【编程语言】【操作系统】等等在飞控开发里能够使用就行

开发需要解决具体的问题,前提是你知道一定的无人机知识

开发解决的是 「how?」,怎么装编译环境?怎么调试?这个算法怎么写?这一部分的关键词是【编程】【嵌入式】等专业技能。

怎么学

其实如果你单独学一样,还是挺容易的,飞手专心学操作,学生专心学知识。无非就是多动手,和多看书嘛。

就是这个开发,很气人,飞控本来就是个交叉学科,本来就涉及很多不同学科的专业知识,但是因为你还需要把知识应用起来,又涉及一些计算机知识,编程知识等等。让整个学习过程变的非常庞大无从下手。

但是,偏偏我们大部分人学无人机的目的都是学开发对吧,那我就抛砖引玉,结合我多年走弯路的基础上,介绍一下我认为比较合适顺序。

先给出建议:学习开发 专业知识>编程能力

飞控开发不需要特别强大的编程能力和花哨的编程技巧,相反通常是你通过你的专业知识,先想到解决方案,然后再稍作修改,或者简单的实现一下算法,所以:

不要通过开源代码去学飞控!!!!

不要通过开源代码去学飞控!!!!

不要通过开源代码去学飞控!!!!

为什么不要,因为「飞控知识」到「飞控代码」飞控代码 的过程中,除了算法需要一些离散化,和一些迭代过程,还伴随着作者自己对算法的理解,选择,和编程习惯。

[飞控]如何学习无人机-入门篇「建议收藏」

如果你试图从 飞控代码 ,反推 飞控算法 ,除非你本身对这个算法已经非常熟悉,否者即使你编程能力强,操作系统,嵌入式,编程语言,这些知识都非常强,你看代码依然会很迷茫,你看到懂每一行代码,但却不知道为什么要这样写。

举个栗子:我之前分析过一行滤波代码,背后涉及的知识点远远超出你的想象,如果你期望通过代码学习飞控知识简直是给自己开了个【地狱模式】。

最快速的路线是你对算法已经有一定的了解,你知道这个算法应该应用在飞控系统中的哪个环节,你知道这个算法有什么用,然后你很好奇这个算法怎么通过编程实现的?你找来了开源代码作为参考,相互对应下,你更加理解了算法,同时也知道了算法如何通过编程实现。

当然这个过程往往也不会这么顺利,可能你找的开源代码过于复杂,即使你比较熟悉算法,依然看不懂被程序加工后的算法函数,起码你已经可以明确,目前你看不懂是因为一些编程技巧导致的,你就可专心去攻克这个问题,而不是苦思冥想为啥我天天看就是看不懂?

所以首先明确到底是哪个步骤导致你的学习很难进行下去!

1.专业知识的阻碍

大部分人应该都会被困在这里一段时间吧,毕竟飞控涉及的专业知识太多了,但是通常你只需要深入理解其中一个部分,所以我的建议是先构建专业知识的框架

如果你还不知道你到底想学哪个部分我先给你一个图感受一下。

[飞控]如何学习无人机-入门篇「建议收藏」这是一个简单的模块划分:

1.无人机上的传感器获取数据

2.导航系统通过传感器数据得到当前飞机导航数据包括位置,速度,姿态等等

3.决策层提供目标,决策可以是遥控,也可以是自动导航

4.根据当前的导航信息,和决策层给出的目标,进行控制,是飞机以达到目标为目的进行动作

5.控制器给出输出,通过控制分配,给每个电机PWM,使电机以一定的速度转动。

6.电机转动,飞机当前的导航信息发生变化。

7.回到第一步,获取传感器数据,以得到最新的飞机导航信息。

这个简单的划分可以看到,无人机系统其实是有非常多的模块组成的,初学者并不需要每个部分都升入了解,但是你需要有这么个框架概念,你就可以定位你需要的知识属于哪个部分,你才能去针对性的学习。

这个阶段主要以搭建知识架构为主,可以忽略一些细节,不要被一些具体问题卡主,坚持看下去,有了知识框架后,再回头专研某个具体问题。

比如姿态控制,第一步肯定是从导航读取当前姿态,从某个地方获取期望姿态,然后求姿态误差,然后进行控制,最开始你可以不知道每个细节如何实现,等你有了这个架构。

在去定位具体问题,导航如何获取姿态,首先肯定是从传感器读取原始数据,进行一些滤波,然后融合,最后得到可用的姿态,把每个大问题也拆分成框架,最后你就有了整个知识。

一旦你构建好了你的知识框架,遇到问题你可以快速定位在你的框架体系中,就可以通过相关专业名称搜索来快速查找资料,同时平时如果看见一些讨论,一些好的文章,论文,都可以迅速添加到你的知识框架里。

你看,我确实不懂导航,之前也没接触过,主要是工作上暂时用不到,但是我的知识框架还是在的,只要有需要,我随时都可以开始查阅资料进行学习。

如何构建你自己的知识框架呢?你要是之前问我,我也没有答案,因为我的学习过程,都是通过关键词的搜索。

但是现在我有更好的答案:《多旋翼飞行器设计与控制》全权 ,全权老师这本书是我看过最全面的书籍,非常适合旋翼的学习,是我手边现在最常翻阅的书籍。

2.编程技巧的阻碍

如果你已经有一定的基础,了解一些专业知识,肯定会迫不及待,想要知道书上的知识如何变成代码,这时候一份优秀的开源代码,是最适合你的学习资料。

但是,我从来都不建议,没有编程经验,没有接触过嵌入式系统的朋友,一开始就直接看 APM ,PX4 的代码。

他们的系统过于庞大,很容易打击学习的积极性,一会就放弃了,我甚至一度怀疑这玩意只有计算机专业的人才能看的懂吧,我是不是该先去学计算机?

可以找一些自己能看懂的比较简单的飞控代码看,关键词【小四轴】,代码会简单一些,但是麻雀虽小五脏俱全,该有的都有,依然是很好的入门资料。学习的时候千万不要贪心,就选择自己能看懂的资料就行,能看懂的才能坚持下去,慢慢递增难度,学习贵在坚持,只要能坚持学下去,以后都能看懂。

其实看懂代码并不需要特别强的编程能力,因为只是阅读而已,

给出一些关键字:【构造函数】【重载】【启动脚本】【uorb】【创建线程】,如果熟悉这几个概念,看懂 PX4 ,apm 的代码也仅仅是需要点耐心。

阅读工具:understand (强列推荐)

具体读代码的小技巧可以看我之前的文章【打造自己的工作流】

至于实现算法,简单的 if else , switch ,for 基本也够用了,大部分情况不需要特别花哨的技巧。

3.PX4,APM的阻碍

如果你有一定的专业知识,同时编程能力也比较优秀,恭喜你,成为一名优秀的飞控工程师就只需要一点点耐心。

这时候你可以充分利用开源界两大教科书(APM ,PX4),不论什么时候他们依然是最好的参考资料,但是同时也会给学习的人带来而外的迷茫。

因为这两个参考资料太过耀眼,你可能会把他们作为金科玉律,以至于你可能会非常困惑,为什么他要这么做,跟书上的不太一样?

但我想说的是,他们是很好的代码,但是依然有很多作者的偏好,所以很多地方不过就是作者做了一些取舍,做了一些选择,不要迷失在深究为什么作者为什么这样写,反倒是你可以提出质疑,如果是我,我会怎么处理这个问题。不要被代码支配,代码只是帮助你学习的一个工具而已。

盯住你的目标

如果你看到这里,依然摩拳擦掌,跃跃欲试,那就放心大胆的干。

不要担心我是不是先把数学学好再开始?我是不是先学会C 再开始?我是不是先学好嵌入式系统再开始?

都不需要,你的目标只有一个,就是学会飞控,

如果在你建立知识框架的时候,刚体力学阻碍了你,那就去查资料,把这部分解决,然后继续回到你飞控的学习主线,什么问题阻碍了你,你就去解决它,然后再回归你的主线任务。

你要时刻明白,你做的所有编程学习,数学学习,嵌入式学习,都是为了学习飞控的辅助技能,不要被辅助技能吓倒,或者迷惑。

飞控是个交叉学科,你永远不可能把所有知识都准备充分再开始,你需要的是在遇到障碍的时候都保持耐心,坚持一下,仅此而已。

关注微信公众【无人机干货铺】获取更多精彩内容

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

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

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


相关推荐

  • 双曲函数奇偶性_[快乐数学]双曲函数(二)

    双曲函数奇偶性_[快乐数学]双曲函数(二)一咬牙 一狠心还是决定把双曲函数的性质给讲了 1 奇偶性先一个一个慢慢捋 从最基本的几个性质开始 本期只研究 y sinhx 和 y coshx 两个函数 如无特殊说明 以下所有内容自变量的定义域均为全体实数 研究函数要先从定义域开始研究 f x sinhx 定义域为 R 值域也为 Rf x coshx 定义域为 R 值域也为 R 下面研究函数的奇偶性双曲正弦是奇函数 正弦函数也是奇函数 这是双曲正弦的图像因为 si

    2026年1月25日
    1
  • matlab函数rand,randn,randi用法整理

    matlab函数rand,randn,randi用法整理Matlab学习笔记——函数使用

    2022年7月17日
    43
  • 深入浅出ES6(四):模板字符串

    在上一篇文章中,我说过要写一篇风格迥异的新文章,在了解了迭代器和生成器后,是时候来品味一些不烧脑的简单知识,如果你们觉得太难了,还不快去啃犀牛书!现在,就让我们从最简单的知识学起吧!反撇号(`)基础知识ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(templatestrings)。除了使用反撇号字符`代替普通字符串的引号’或”外,它们看起来与普通

    2022年4月5日
    126
  • java 流媒体服务器搭建_搭建流媒体服务器(1)

    java 流媒体服务器搭建_搭建流媒体服务器(1)一、前语本文纂写时间是2018年12月17日,所描述的软件WowzaMediaServer此时已经出了4或更高,但是2.2.2提供的功能已经是Goodenoughforme.如果发现4足够更好,后面文章也许会再续。本文试图描述一个在WindowsServer2012上安装了WowzaMediaServerv2.2.2流媒体服务的事件。最终会另服务器提供给外部适当的Server和…

    2022年5月16日
    40
  • DNS服务器的配置「建议收藏」

    DNS服务器的配置「建议收藏」DNS(DomainNameServer,域名服务器)是进行域名(domainname)和与之相对应的IP地址(IPaddress)转换的服务器。DNS中保存了一张域名(domainname)和与之相对应的IP地址(IPaddress)的表,以解析消息的域名。域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。1、安装…

    2022年6月4日
    43
  • Visual Studio安装SVN插件[通俗易懂]

    Visual Studio安装SVN插件[通俗易懂]在VS上安装SVN插件后,感觉VS的代码版本控制用起来也这么顺手。

    2022年10月10日
    4

发表回复

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

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