背景
?毕业近5年,从大二开始接触嵌入式(单片机),接触过不同行业,也陆陆续续做过很多项目,随着时间的推移,对嵌入式行业的认知也越来越深刻。简述一下我的工作经历。在第一份工作,做的产品是AGV(自动导引小车),主要是在汽车长通过磁条自动循迹,RFID路标,无线(wifi)上位机调度的拉货小车。 使用的ST 的单片机控制 ,主要的技术点就是 运动控制(PID),通讯协议,逻辑控制。做的最多的事就是逻辑控制,即将货物沿着轨道运送到指定的地点。其实这个专题的产生很大程度是受 第一份工作的影响,AGV确实是个很有意思的系统。但之前的知识面太窄,加上基础薄弱,导致做出来的东西问题频出,也没有一个好的环境学习,就无奈离开这个行业。
第二份工作选择了物联网行业,从BLE(低功耗蓝牙)开始,主要就是应用层代码,涉及通讯协议,应用层框架 ,在业余时间钻研了一下代码架构相关的知识,编程能力得到了较大的提升,不再是以前 层次混乱 , 只有逻辑的代码。
第三份工作,也就是目前的工作同样是物联网行业,不过是LoRa 开发 ,这段时间也许是工作以来对我影响最大的。工作内容主要是LoRaWan协议栈的开发 , 物联网LoRaWAN 传感器节点的开发。在这个过程中,通过学习LoRaWANf协议的设计 , 对通讯, 代码的分层,结构化,数据结构 有了更加深刻的认识。经常接触的知识点有 : 状态机 , 面向对象, RTOS ,? 通信时序 , 可靠性,事件驱动,异常分析 ,python , 多播,中继 ,外设工程用法?方法等。感觉自己有了很大提升。但同时也感觉到,底层的物联网节点做的事情的单调。主要做的就是数据的采集 , 而人们真正关注的数据的应用。当然也不能说数据采集毫无趣味, 如节点端的数据如何防止上行碰撞问题,数据如何安全交付,如何实现多播通信,如何进行数据的中继,终端设备的远程更新固件和配置,都是相当有趣和难度的。
为什么要做这个小车。一是感觉自己的知识面很局限 , 主要就是 单片机 和 通讯协议 ,只做数据采集,而未使用数据;二是对机械有着不能割舍的情怀,喜欢手工制作;三是以及工作了近5年,应该要建立自己的知识体系了,不能太过局限,要有大局观,关注前沿技术,可以不精通,但至少要知道,当需要解决问题时,知道怎样去深入学习。
目的
在开始写这个专题前,已经开始了近3个月的学习,主要是了解完成制作这个需要哪些知识点,以及一些基础知识的了解。什么是基础知识? 我对它的定义是无法分割的 , 比如数学知识,线性代数,微积分,统计学等,是卡尔曼滤波的基础知识,没有这些基础知识,要想学习卡尔曼滤波是很难的。那么,真的要在什么都不了解的情况下,就去学这些吗?事实证明,大学学的效果有多差,这样的效果就有多差。我们可以找一些优秀的教程,这类教程会提供必备的基础知识教程,还是用卡尔曼滤波的例子?卡尔曼滤波教程?。这个教程提供必要的数学背景,比如期望代数,我们没必要学习整个统计学,只需要弄懂里面的部分;再比如矩阵,只要知道乘法运算和向量就可以大致看懂,而不需要一股脑的把线性代数全学习一变,如果觉得教程讲解不够清晰,再去查找相应专业书籍对应的章节。最终的结果就是 , 通过实践 掌握了基础知识,基础知识强化了实践能力。形成了这样的循环后,效率将大大提高。
行业大环境分析
目前比较热门的几个方向有 : 物联网 , 5G ,智能家居 ,人工智能, 无人驾驶 等。他们各个之前都相互交叉影响,比如智能家居是家用电器联网,也属于物联网,无人驾驶和物联网又依靠5G技术提供庞大的带宽 ,人工智能依靠物联设备提供的大数据。当然每一类里面又分成很多类,在我看来,无人驾驶技术应该是 综合力最强的一个方向。它包含机械,运动控制 , 5G , 物联网,人工智能等诸多方面的类容。
那么就应该盲目选择无人驾驶方向吗?个人精力是有限的 , 难以做到什么都精通,如果想一下抓住所有,那么很可能最终什么都没抓住。如果专精一个方向,有容易陷入局部,最终坐井观天,毕竟这些方向都是相关连的,如何取舍是一个关键。
我认为在初步接触这些技术时,可以先不深究,这里的深浅又是一个难题。大众学习路线是一个不错的选择,比如开始学习卡尔曼滤波,工程实践教程的参考性大于理论基础研究,也不是说不学习原理。而是了解基本原理,弄懂代码实现,运用到实践。什么是深究?经过了工程实践,可以研究前沿论文,比如一些拓展算法,或这类似的算法,追求性能的最优化。这将耗费大量的实践,也就是花1000%的代价 得到性能 1%的提升。
在对这些技术都有一定认知后 (?知道基本原理 , 能运用),此时看问题是全局的,在解决问题的时候,哪一种技术对解决问题有更大的帮助,深究技术细节 。通过这种方法 , 随着处理的问题越来越多,知识体系越来越完善。整个过程就像写书 , 先完成目录,能完成目录的前提是对类容有基础的认知 , 完成目录后,就具体的内容去实现细节,最终完成整本书。
回到主题
基于ROS 履带车从零开始制做 ,这里 有几个关键字 ROS , 履带车,从零开始 。ROS 是机器人操作系统的简称,简化了机器人的开发,大量运用,具体可网上查找。履带车,为什么选履带车?有以下几点原因:越野能力,复杂的机械结构,做的人比较少,国内DIY社区没有比较好的实现。能够锻炼3维建模能力 , 机械设计能力 。从零开始意味着,结构 , 电路 , 软件全部自己设计,是一个边学边做的过程。在写这边文章的时候,我同样很多知识不具备 , 通过边做边学边整理完成整个设计。时间跨度很长,因为覆盖的类容很多 ,而且很多知识是边学边做。
|