在德国这里好山好水好无聊,何况又是个死宅,总感觉要做点啥。根据之前国创的小车和毕设双足机器人的经验和教训,并且打算在master阶段学工业机器人和机器学习方向。所以我打算做一款新式机器人。这篇博客呢就讲讲我目前在大学本科四年拥有的科技树,再总结一下我的前两任的机器人概况和获得的经验教训,最后讲讲我对这新一款机器人的希望和设想。
比起各路天才大神我自然不能与之相提并论,经常会望与他们之间的距离兴叹。我的大学算不上波澜壮阔,但自觉地还算没有把时间浪费,算过的中归中距吧。回想起来似乎自学了很多东西,但是都算不上精通,只能达到了解会用这种程度。经常还宽慰自己大学嘛,不可能样样精通,而且大学确实也不知道未来研究方向是啥。经过我不断的摸索,也遇到很多的弯路和挫折,现在感觉终于有了奋斗的目标。好像扯远了,还是看看我大学四年自学的科技树吧,学过并不代表精通,我只是可能会用而已。
第一代机器人,呵呵,说白了就是一个有着视屏监控的手机遥控玩具车车,那时应该是大三上学期吧,在大二暑假学过单片机和一些模块的基本使用,但自从学会了使用树莓派,突然就萌发了要做小车的想法,但是大家都知道硬件很烧钱。还好当时做国创,我们的项目是软件,10000块钱都不知道咋花,遂巧立名目做了这辆小车。这辆小车虽然功能简单,但是是我对硬件和机器人开发的敲门砖,我后续的两代也不乏能看到一代的影子,比如充电宝摄像头,树莓派等,都是从上一代拆下来接着用的。和接下来说说小车用到的零部件吧:
1. 入门吊丝级车底盘,记得买的80多块(我相信只要做过小车的,处女作都会用这款底盘,这款底盘优点在于面积大,扩展性强,并且四驱动力强劲,但缺点是轮子质量太差,根本无法的光滑的地面上摩擦。。。)
2. Raspberry Pi 这个迷你小电脑是我三代机器人的大脑,也见证的树莓派的更新换代,从当时的B版到后面的2再到现在的Raspberry Pi 3。它自带Linux操作系统,只有信用卡大小,我觉得只要想做一个极客的,都应该玩一玩树莓派。
3. TP-Link的充电宝,10400MA聚合物,好像当时120块,三朝元老,一直给树莓派还有各种小电压模块当奶妈的角色,而且临时出远门,还给我的pad和手机充电,可谓劳苦功高。
4. Logic c530摄像头,120块,同样三朝元老,是我三代机器人们的心灵之窗,与树莓派兼容,由宿舍王大神推荐。
5. 水星无线网卡,这一款很长不美观,但怎奈他和Raspberry Pi是一对好CP---不用附加驱动就可以让树莓派变成无线AP,也是三朝元老,在第二代中一开始测试使用,但二代是双足步行机器人,空间限制只能让他暂时退役。大概35元。最后在作品上交的时候已经更换为二代用的TP-Link。
6. 直流电机驱动版 40元 什么?这么贵? 谁叫当时有经费呢,当然是买最贵的,而且最后发票报销写的是80块。主要控制小车电机正反转和PWM调速,当然你不嫌麻烦的话可以通过继电器自己组装H桥电路。
7. Arduino UNO,当时在跳蚤市场附带一些元器件80元买入,其实当时它在车上并没有什么用,纯属放在那为了摆拍,但不得不说Arduino的出现,让单片机编程变得异常简单。
8. 步进电机+驱动版,安在摄像头下面,鉴于当时知识水平不够,竟然不知道有舵机和云台这种东西,要不然经费又能多花500。。
9. 狮子锂电池7.4v 2200mA+平衡充,大概100块,用于给小车电机供电,在第二代给舵机供电,第三代本来也想用,但放在家里没带过来。
10. HMC5883L 电子罗盘,25元,但事实上这个模块从写程序到最后上交作品时都没有正常工作过,当时按照芯片说明书写的程序,可能哪里出现了失误。
区区10样东西就组成了我的第一代小车,如果大家想入门的话可以参考参考,我不太建议直接买套装成品,应为他限制了你的想象空间和改造空间,而且套装代码都是现成的。所以我做的机器人尽管它什么功能都没有,但是是我自己探索设计出来的。而且这一代机器人为我后续的机器人制作奠定了基本设计模式,后续两代都有第一代的影子。所以它对我而言意义非常深远,具体如下:
1.第一次体会到“人生苦短快用Python的精髓”,在此一年前我就听说了这个语言,并且有些人在学,我也拿来看了看,但作为当时JAVA和C++的死忠粉嗤之以鼻,视Python为异类:这是啥玩意?连标点符号大括号都没有也能叫编程语言??!! 随着后面不断对树莓派的使用,逐渐发现python功能之强大,语言之简单,代码之工整!!果断黑转粉!!!而且使用Python让我养成了好习惯,不管用啥语言编程,一定要各种对齐。现在不管做机器人还是机器学习数据处理我都用Python,反而C++和Java语法忘的差不多了。
2.第一次看英文说明书编程,作为四级低空飘过的我看到长篇英语就头疼,而且还要看说明说编写I2C和HMC5883L的寄存器配置更头疼。随着现在眼界开阔,会用google,英文搜索和GitHub,对开源世界豁然开朗。但也养成了一个拿来主义坏习惯,缺乏了当年单挑英语说明书的勇气,虽然当时编写的工作不正常,但虽败犹荣。另外劝学弟学妹们好好学英语,并不是只停留在四六级上,不要求能说会写,但至少应该能看得懂英文文献,这为后来的发展非常重要。
3.第一次学会使用网页图像流传输,这为我做二代机器人图像实时识别跟踪奠定了基础。
4.第一次树莓派投入实战,之前用树莓派无非是装个Linux系统,当个无线AP来使用,通过这个机器人让我也学会了怎样调用树莓派的GPIO口和I2C。可以说树莓派是我决定做硬件开发的动力。什么?用用树莓派和几个模块那也叫硬件开发??好吧我承认应为模电考试只有79还有一次恶心的实验让我对模电深恶痛绝,信号处理电路基础什么的也是考完就忘,我做的东西仅限与数电,准确来讲我只能算一个Geek,but never mind!!我只要做东西感觉开心就好。
5.第一次使用Websocket,做界面的时候如果想一劳永逸,当然要考虑到写的界面跨平台性,这自然HTML是不二之选,但如何让网页和传统的服务器端通信,这又是一个问题。所以websocket横空出世,我不知道当时它在国外的发展水平,鉴于当时只用中文搜索来看,websocket的协议良莠不齐,而且不能很好的支持所有浏览器,还用的是最底层HTTP协议写的websocket。不管杂说,它让我看到了不同于传统socket新的消息传输模式,而且随着webservice这样的技术逐渐成熟,我相信在未来网页应该能统治桌面领域,人们也许只需要一个浏览器就可以连上云平台,干现在个人电脑能干的工作。似乎扯远了。。。。总之。。好像也没啥能总结了,全篇都是总结,有兴趣看下一篇吧。