|
发表于 2019-6-1 10:20:48
64943 浏览 22 回复
关于无人机/无人车方向小白的进阶之路
1阿木币
从机械专业转行来学SLAM,一脸懵,希望各路大神能够指点入门的路程,不胜感激~~~
|
最佳答案
查看完整内容
特地写了两张图,仅供参考:
从基本模拟/数字电子,到C语言单片机,多进程,多线程编程,落实到数据结构和设计模式。可以看懂大型C++代码的的软件架构(从数据结构和设计模式入手)
为止。并且还要了解Matlab/Opencv等工具,利用这些工具掌握线性代数,图像处理基础等知识。
注:如果不精通C++/多线程/多进程,掌握数据结构和设计模式,掌握一些编译原理,将会看不懂大型软件代码(无论看多少遍源码也没用),磨刀不误砍柴功。掌握单 ...
扫一扫浏览分享
|
|
|
|
|
|
|
特地写了两张图,仅供参考:
从基本模拟/数字电子,到C语言单片机,多进程,多线程编程,落实到数据结构和设计模式。可以看懂大型C++代码的的软件架构(从数据结构和设计模式入手)
为止。并且还要了解Matlab/Opencv等工具,利用这些工具掌握线性代数,图像处理基础等知识。
注:如果不精通C++/多线程/多进程,掌握数据结构和设计模式,掌握一些编译原理,将会看不懂大型软件代码(无论看多少遍源码也没用),磨刀不误砍柴功。掌握单片机开发仅仅是开始。
精通C++/多线程/多进程(面试必问)
掌握数据结构/设计模式(面试题必有)
加强高数/线性代数理解/算法工程师必会
系统工程师坚强设计模式/数据结构/传感器特性
算法工程师加强Matlab工具使用和算法数学理论
前提都是C++/多线程/多进程/操作系统/数据结构/设计模式
该帖子不定期更新!
|
|
我不为己,谁人为我,但我只为己,那我又是谁?
|
|
|
|
|
|
楼主|
发表于 2019-6-3 11:57:32
感谢齐哥的耐心回复和精心准备,这份知识框图整理的很详细也很有帮助,就个人理解给出反馈。
整个知识体系框架分为三部分:基础知识、必备知识和专业知识。
基础知识包括:
1.电路基础知识。电路基础知识是从硬件层面理解嵌入式系统的基础。
2.嵌入式系统基础知识。可以入手51或32单片机这些简单的嵌入式系统的开发,原理简单易懂,可实操性强。
3.C语言基础。C语言是一门很好的启蒙编程语言,简单易用,逻辑性强,能用C语言在单片机上简单编程就可以进一步学习了。
必备知识包括:
1.Linux系统。以Ubuntu系统为例,Linux系统可以在很多嵌入式系统上安装使用(如树莓派,TX2等),而且大多数的嵌入式程序开发是需要在Linux系统上进行的,掌握Linux的常用命令行和系统的操作方法是很重要的。
2.C++及多进程/多线程。C++语言是很多开源算法及源码的编程方式,包括PX4也是使用C++编程的,所以学习C++语言是必须的。多进程/多线程是系统同步进行多个进程的编程方式,能极大的提高系统运行效率,学会多进程/多线程编程方式才能看懂很多源码。
3.数据结构。我对数据结构的理解是计算机处理数据的方式,学习数据结构能使编程的思路更加清晰化,对计算机执行代码时的操作有更深的理解,就好像一些现成的框架,认识并应用它。
专业知识分为:
1.飞控嵌入式为主。学习PX4及其他开源飞控是必须的,大量阅读源码并理解PX4的架构体系,对无人机的控制方法。如果有机载计算机需求需要学习ROS系统等。
2.控制算法为主。夯实数学基础,学习对应的数学知识并掌握Matlab等工具。
3.导航及SLAM。PX4、OpenCV、ROS以及SLAM的知识。(强烈推荐补充卡尔曼滤波及非线性系统处理这些知识)。
最后总结:之前乱七八糟看了一些书,没有先后顺序没有章法,C++都不会抱着看源码,真的头大,私下和齐哥求一份学习路线图,齐哥很耐心的给了些指导,很感动。希望大家能在技术这条路上越走越远,不要半途而废。守好发际线!!!再次感谢齐哥以及阿木实验室团队!
(以上内容纯属本人理解,欢迎补充指正,比心) |
评分
-
查看全部评分
|
|
|
|
|
|
|
补充下:你提到的第三点数据结构,你对队列,链表,结构体熟练掌握以后。一定要在看看设计模式的书,
推荐一本叫 大话设计模式 的书籍。大型代码里面采用了很多设计模式的编程思想。自己编程的时候也用设计模式的思想来编程,很有帮助。另外:知名公司的笔试题里面,大量的设计模式考核。 |
|
我不为己,谁人为我,但我只为己,那我又是谁?
|
|
|
|
|
|
在理一下:基础:---> 数电/模拟电子 --->单片机C语言 ----> 高阶C语言/C++语言 ----> 各种单片机外部设备驱动----->完成基于单片机的控制系统
进阶 1:--->多线程/多进程---->编译原理---->数据结构---->设计模式---->高阶C++编程思想
进阶 2:--->Matlab/ROS工具使用---->高数/代数/概率应用----->控制基础/图像基础/导航基础
方向 1:系统构架 (操作系统,高级设计模式,数据结构,编程之美)
方向 2:控制算法 (看论文 用Matlab实践)
方向 3:导航算法 (看论文 用Matlab实践)
方向 4:图像算法 (看论文 用Matlab实践) |
|
我不为己,谁人为我,但我只为己,那我又是谁?
|
|
|
|
|
|
发表于 2019-6-14 10:56:54
|
|
|
|
|
|
|
发表于 2019-7-6 09:18:57
--->多线程/多进程---->编译原理---->数据结构---->设计模式---->高阶C++编程思想,这一条路能再细讲一下吗?感觉如果这个涉及的知识很多,有哪些需要首先学习的
一个从单片机DIY飞控转学习ardupilot的小白 |
|
|
|
|
|
|
|
发表于 2019-7-6 09:22:47
--->多线程/多进程---->编译原理---->数据结构---->设计模式---->高阶C++编程思想,这一条路能再细讲一下吗?感觉如果这个涉及的知识很多,有哪些需要首先学习的
一个从单片机DIY飞控转学习ardupilot的小白 |
|
|
|
|
|
|
|
发表于 2019-7-7 10:46:13
个人体会哈~ 多线程/多进程主要是操作系统的知识,然后编译原理,数据结构和设计模式学完C++的书也基本能会了。其实这条线,你就把操作系统和C++的书,找两本认真学习一下~ |
|
|
|
|
|
|
|
发表于 2019-7-8 21:36:42
|
|
|
|
|
|
|