上赛季操作手学长的经验分享

一、明确个人定位

一直想写点东西,奈何语言组织能力就是个弟弟,加上懒癌晚期…….借这个机会给新入机器人队的学弟学妹们一点建议,老B们请自觉右上角。水平有限另外每个人的想法和道路都不一样吧,只是希望你们能参考一哈少走点弯路吧。

这几天去楼上,发现很多问题。首先,大一的学弟学妹,C语言都没怎么学就开始硬磕程序,硬磕32,很多地方都不懂,导致的结果就是对着代码大眼瞪小眼,干熬,最后熬光了自己的兴趣。其次,学弟们调程序不知道怎么调,调的顺序不对,拿一块不好使的板子调程序结果可想而知,最后的结果也是不断怀疑自己的能力。最后,很多学弟不知道该学啥,没啥学找不到方向,迷茫。

学习是一个漫长的过程,尤其是对咱们这些人来说。像之前实验室大神们都是靠时间堆出来的,不论是超哥、双哥、猴哥、冲哥、林姐还是我头、马总、赖总、基哥等很多人都是这样过来的。你们或许想像不到我们这些你们口中的大佬在刚开始接触这些东西的时候有多菜。所以我想说的是首先的也是最重要的是要建立自己的信心,你们现在的条件和环境比我们强多了,而且进实验室的时间也早个一两年,只要坚持下去,将来肯定会比我们要nb。然后就是自己的定位,大学的选择有很多,比我们这些好很多,好好学习课程保研,做智能车之类的比赛保研,还是直接工作。个人还是比较推荐读研,如果技术不是特别优秀,工作时学历导致收入差距还是有的。就是要认清自己吧,以我为例,我当时就是特别喜欢做实实在在的东西而不喜欢学课程中的那些理论知识(虽然后来被现实虐的很后悔没好好学)然后就选择做比赛保研。如果可以的话更推荐成绩保研,加技术牛X,那才是像我这种学渣佩服的真正的大神。如果仅仅是想混个比赛加分的,右上角,不要耽误彼此的时间。

二、专精一个方向

建立了信心,明确了定位,接下来就是要树立个目标,就是要明确自己以后要做啥,给自己定个大方向,是做机械、硬件、图像处理、深度学习还是做嵌入式,切记不要像我似的东学学西学学,人的精力是有限的,最后整的什么都会点都不精。

机械方向就老老实实学好工程制图,虽然现在最终的设计大多都是靠图纸体现的,其他学得再好出的图不对,白扯。以后要是做机械这块的工作肯定是需要制图能力的,论机床使用,组装东西啥的说实话远不如大专生。机械设计软件没啥说的Solidworks,再次强调一定要把工程制图学好!!还有机械设计什么的课也要多学学,多看点好的机械结构,做机械要多想结构多做东西,需要多积累经验。

硬件方面的话,感觉很少有人喜欢做,但是非常有用,我当初做了两年硬件。一是因为没人做;二是自己会的话就可以不用求人帮画板子,也可以按照自己的想法设计板子设计程序。做东西的时候脑子里就会有一整套的想法,如果会写程序的话就可以一个人支撑起一个项目吧;三是在调试程序的时候你会很清晰的知道我写的程序和对应硬件做出的反应,如果出什么BUG能更快的找出来,效率会比单学软件快很多。

软件程序这块队里有之前的双哥猴哥等大佬的积累,虽然不是最好的但也不差。目前实验室因为都是嵌入式这块的所以主要是C,视觉用的C++。但做比赛只是一段经历,就以后读研或者就业来说,学的肯定不止于比赛这些东西。大层面来说目前比较推荐Python,做深度学习和图像处理都可以,发展也是越来越火,而且比C++更容易学。做嵌入式还是老老实实学C,C学容易但是精通很难很难。我建议就是专注一种语言,不要贪多,精通一门远比熟悉四五门好。各种语言都是有共性的,精通一门掌握了精髓,即便以后转其他语言也能很快的掌握。

学习编程还有一点我觉得也挺重要的就是基础,计算机原理的基础,有了之后学习编程语言会站在底层的角度去思考程序是怎么在计算机中运行的,这样对程序语言的理解会很快,如虎添翼吧。安利一本特别特别好的书《深入理解计算机系统》,我大四寒假期间学完了大概四分之三,收获特别大,这本书主要就是讲计算机的工作原理,比如计算机的组成、CPU的组成、乘除法在CPU中是怎么运算的、浮点数的表示、C语言到机器语言是怎么转化的、编译链接原理等等等等。单片机算是低级的CPU,原理都是一样的。简单说下我学了这本书之后的变化吧,大二做智能车我用IAR也写过一年的K60单片机程序,但是当时就是傻瓜式的调用别人建好的工程,调用别人写的底层,频率中断堆栈配置啥的完全不懂,底层出了问题找不到为啥,只能重建,移植程序更是一头雾水和你们现在状态差不多。后来大三大四就开始做硬件了,单片机的程序没怎么写过。到研一再次做机器人比赛调云台的程序,前一届马总的程序用的是自己配置的底层,然后当时移植到CubeMX+FreeRTOS外加调试不到一周就搞定了。怎么说,就是磨刀不误砍柴工吧,基础理解了原理懂了,再去学习新的语言,学习新的编译环境也好都会很轻松,出问题了解决起来也很容易,也基本没啥大问题。但以上这些需要你有C语言的基础,C语言的组成,传递函数,变量作用域,指针,结构体什么的写不出来可以但是得能看懂程序,C语言不会调程序啥的都是扯淡。

总结一下,就是想学好一样东西最好把其原理先搞明白,学起来就会很轻松,再结合一两个项目学以致用,做完之后基本就算入门了,入门之后你会发现要学的东西可能这辈子都学不完,而就不是你们现在所处于的不知道学啥的情况。但这些比较适合长战线的学习,对于咱们机器人比赛来说可能时间不够用,想快速入手的话我建议就是先把C语言学好,程序结构啥的一定要明白,然后就是多看程序多动手编程,一步一步来,比如可以先点亮个LED然后让LED闪烁,用中断控制闪烁,再用RTOS控制闪烁等等大概就是这个意思,一项功能一项功能的来,从简单的开始,跟盖房子似的,一点点添砖加瓦,这东西急不来,越急出的问题越多。我看有些同学底层都没配好,简单功能都没实现就开始调CAN通信,闹呐大兄弟!

三、关于机器人调试

下面说下关于机器人调试的一些问题吧。无论硬件、软件还是机械方面,在调试时都会出问题,而且是很多问题,这是必然的。学会怎么去找问题才是关键。首先说下怎么调程序,调程序最重要最重要的是要确保板子好使,线没接错,那天一个学弟拿个CAN芯片坏掉的板子调CAN通信,仿佛在逗我开心。如何检测板子好不好使:一是拿好使的老程序下里面跑跑;二是找学长帮忙测测好不好使。还有千万不要认为新焊出来的板子就好使,有时候买的芯片不好使也很正常。

板子好使了要调的电机啥的也确保好使了线接的没问题,才可以开始调程序。会碰到很多的BUG,不好使啥的很正常,再NB的大神也没有能确保不出BUG的,32很好用,Keil用明白单步调试就行了。实在找不出问题就对照好使的程序按照程序运行的逻辑一行一行的对,或者一行一行注释,虽然是很笨的方法但很实用。调PID啥的我也没有特别好的办法,就是看着效果瞎调,不要怕,有虚拟示波器的话更好。

其实你们现在缺的是经验,我去年刚上手的时候也很慌,调的多了胆也就肥了。至于一些莫名其妙的问题BUG自求多福吧,只能靠时间堆来找问题。还有很多乱七八糟的问题,我觉得不要遇到个问题就找别人帮忙,有时间的情况下尽力自己找出来自己解决,会很有成就感并且能积累很多经验。我曾经用了一年的时间才找出来电源芯片一上电就烧的问题并解决。所以心态要稳住相信自己,最好不要依赖别人。

大概也就这么多吧,想出来啥就写了点啥,还有些东西想好了要写出来的时候就忘了年纪大了……水平有限,文笔有限,思路也不是很清晰,将就着看看吧,希望能对你们有些用。

赵永政

2019/1/11

干货有用,还不评论转发点赞加收藏!

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190117G0F14600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券