机器人成长之路——工具篇

发布时间:2016年10月31日 11:28:38    浏览数:1744次    来自:Top Liu
怀有机器人梦想是非常好的,但若是光给你谈梦想,不告诉你方法,如同给你端上一碗鸡汤,却没有勺子。有的童鞋会说:我直接抱着碗喝了,先干为敬!但实际上往往会因为姿势不对,洒了一身。 ... ... ... ... ...
知乎问曰:为什么说鸡汤有毒?
神回复曰:因为没给你勺子。
怀有机器人梦想是非常好的,但若是光给你谈梦想,不告诉你方法,如同给你端上一碗鸡汤,却没有勺子。有的童鞋会说:我直接抱着碗喝了,
先干为敬!但实际上往往会因为姿势不对,洒了一身。
受以下二者启发:
1.  YY硕的知乎文[机器人工程师之路——从大一到研究生,YY硕经验谈机器人工程师之路——从大一到研究生]启发(我已经转载至博客里);
2.  以及我和李博士最新翻译的《机器人编程实战》(主线是一个小白被困荒岛,通过学习这本书从一无所知到能制作出完成任务的机器人的故事)。
是时候该把套路总结一下了!

搞好机器人,不外乎下面三个条件。
1.梦想
2. 工具
3.方法
杨帆兄在上一篇文已经介绍了我们的机器人梦想以及“星火计划”的缘起,记得杨帆第一次和易科机器人小组成员讨论还争执地面红耳赤。记得林博士半夜飞抵青岛讨论课程设计,然而他说的港式普通话我基本听不懂啊,囧……然而,正式大家基于对机器人的共同追求和梦想,才克服了各种困难及分歧,坚持了下来。
社区里很多小伙伴从未见面,但大家一直能合作愉快,互相探讨,共同进步。我们大家能走到一起来,以及你愿意花时间来看这篇文章,无非是围绕着“机器人”所产生的共同爱好、追求、以及梦想。
感谢各位,梦想有了,开始正题!
“工若善其事,必先利其器。”
自主机器人的开发的主要工作依然是编程。
学习编程,你首先得有个电脑。学习机器人,你首先得有个机器人,最起码也得有个板子吧!
记得2000年我们学习编程那时,那时电脑还属于奢侈品,上课时甚至需要用纸和笔写程序。甚至还有的同学花了十元钱买了张纸,因为上面印有1:1的键盘,可以进行打字练习。
2001年,我们哥几个一咬牙,张同学买来一台毕业学姐的二手电脑,李同学买来内存,杨同学加了硬盘,大家按照投资比例分配了上机时间,终于结束了“纸上谈程序”的时代。
然而到了2003年,电脑行业飞速发展,合资的电脑就弃之不用了,因为已经实现了人手一台电脑了。说起这个故事,对今天有什么启发呢?
1.我相信未来2年机器人可能迅速普及,速度可能比我们想象的要快。
2.我认为不要一个人玩机器人。最好加入一个机器人队伍(战队更好),或是几个同学组团DIY一个机器人,这样的成长会更快,也更快乐。

在知乎文《机器人工程师之路》里已给出较为详细的学习指导。在本文《工具篇》中则主要介绍的是硬件路径,而在下一篇《方法篇-72本机器人书》里也会列出更为详细的书单。

第一步你需要熟练掌握如何通过编程与世界进行交互,这是机器人与人工智能以及计算机科学最大的不同。

小白:
兵器—Arduino
建议先使用Arduino做一个基础的差分小车,接入各种传感器(大淘宝几百元套件多的是)再配合Processing快速实现一个绚丽的控制台。做个超声避障、PID控制、控制台无线遥控,机器人的“感知-控制-行动”基本流程统统都出来了。

另外推荐Makeblock,这是一个基于Arduino的机器人积木搭建平台,集成度比较高。推荐最新款的Ranger,可以变身为平衡车/履带车等,我已将他通过蓝牙与电脑上的Simulink连接起来,可以快速进行更为复杂的控制算法的验证。Ps:可视化编程那是给小孩子玩的,可以无视。
[http://blog.exbot.net/archives/2625 Matlab与MakeBlock:通过蓝牙控制电机]

小白 Pro:武器—STM32
用一块STM32407替代Arduino,可以运行更为复杂的程序。你可能会考虑整个四旋翼玩玩,这个时候你就会体会到IMU等传感器以及精准的控制的重要性。你也可能会考虑加个摄像头再移植个opencv,可能你压根就没翻过任何一本《机器视觉》,但没关系,也照样可以玩,这样至少对C++编程会有一个提高。或是移植某一操作系统如freeRTOS、uCOS,甚至Linux。

具体先玩那个不要紧,关键是训练出一套查资料、debug的套路,这个套路是任何人无法一次教授的,你可能需要遇到并解决很多问题,请教很多人,最终慢慢形成一套适用于自身的有效套路。

STM32的开源工程非常之多,推荐开源飞控Pixhawk和PixRacer。其中PixRacer使用了Dronecode的标准接口,建议自己画板子的时候多参考规范使用标准接口,以后外接其他设备时,不用为改线头而苦恼。

即便你不玩飞控,Pixhawk也是值得研究的,你可以刷一个Rover固件,控制你的小车也是妥妥的,他兼容的地面站如QGroundControl或是Mission Planner都是极好的。通过MavLink标准协议和MavProxy甚至可以在网页端通过互联网来控制你的一个甚至多个机器人。

另外,STM32和普通单片机的一个很大的不同是 库函数,接口寄存器啥的可以先不深究,但要了解并学会使用常用库函数,会事半功倍。

做到这一步,相信你无论开发一个无人机还是机器人,在嵌入式硬件方面基本上能够得心应手了。

老鸟:

武器—树莓派

Raspberry Pi,是一款基于Linux系统的个人电脑,配备一枚700MHz的处理器,256Mb内存,支持SD卡和Ethernet,拥有两个USB接口,以及 HDMI和RCA输出支持。硬件基础是
ARM,操作系统采用开源的Linux系统,比如Debian、ArchLinux。

作为一只老鸟,自然不再满足于裸奔,得整个操作系统玩玩撒!虽然Pixhawk运行有Nuttex实时操作系统,但毕竟非主流,也很少有人会深入研究。你还是需要一枚能跑Linux的板子,自然首推树莓派,当然各种水果派不胜枚举,如果不是有特别的需求的话,还是老老实实的玩Raspberry,毕竟资源最多,各种支持也最丰富。这个时候你不得不走出各种舒服的IDE(如Keil),接触各种交叉编译、开始各种make、各种debug,小问题特别多。至于看啥书,我目前还没有发现这方面比较好的书(谁有好的推荐,麻烦留言分享下!),主要还是靠多用多练,遇到问题多google。翻不了墙?好吧,简单点的Ubuntu问题,baidu基本上也都能解决。

[Makefile详解(超级好)_mingw吧 Makefile详解]
[http://songjinshan.com/akabook/zh/index.htmlLinux C/C++编程一站式学习]

大神

武器-复杂的开源机器人平台

主流平台有

TurtleBot:最早的ROS平台
HandsFree:Exbot社区支持的开源平台
Spark:星火计划ROS课程标准平台,星火计划--机器人操作系统ROS培训

以ROS为代表的开源机器人平台,这一类机器人的特点是功能强大,但系统庞杂,所涉及的代码可能永远(也不必)完全看完,所涉及的技术细节可能永远(也不必)完全搞懂。所以你需要一个系统化的、成熟的机器人平台带你迅速进入机器人学的前沿地带。理由之二就是要避免重复造轮子。理由之三就是你要加入一个大规模的协作体系,所以你必须选择(服从)某一套架构和规范。

QQFly对ROS有一个很到位的总结,推荐大家看一下[机器人操作系统ROS机器人操作系统ROS | 简介篇]。如何学习,推荐[http://blog.exbot.net/archives/2667
如何学习ROS——盛盛经验谈]。YY硕说“最好不要在大四之前去碰ROS。因为ROS用了很多操作系统和网络的底层技术。ROS的设计目标是把机器人的控制和传感器处理的软件和它的硬件隔离开,用上ROS以后,你可以方便地用到很多能直接跑的软件代码。但是ROS从入门到精通需要至少一年以上的时间,你必须不断地用,不断地尝试新的代码和硬件,才能对它熟悉起来。”这是有道理的,其实ROS本身并不复杂,其实前期大部分时间是花在Linux环境下的编程的熟悉上,而后期的调试则需要更多的机器人学相关知识。

推荐几个我感觉比较好用的开源平台。

TurtleBot自不用多说,是ROS界最早、软件最丰富的平台。然而缺点是进口货价格高,购买维修比较麻烦。

第二个则是ExBot开源社区里几位大神发起的HandFree,软硬件开源,散件大淘宝有售,但需要你有很强的DIY能力自己动手组装调试,下面是基本介绍:

HandFree介绍

HANDS FREE 是一个面向机器人研究、开发的开源软硬件系统。她有完备与科学的框架,以优秀的嵌入式系统框架为核心,精良的电路、机械设计为支撑,帮您快速实现多种形态的机器人。本系统包含机器人导航,SLAM,计算机视觉等模块,并拥有自己上层软件和调试系统。她支持国外其他的开源项目,如ROS,
MPRT, PIXHAWK等,这一切都为您带来了无比的便捷和快乐!

介绍主页:http://wiki.exbot.net/HandsFree

代码下载: HANDS-FREE · GitHub

资料下载: http://pan.baidu.com/s/1c201NC

如果你时间非常宝贵,需要一台Ready-to-go的实验平台,那还是推荐用Spark吧。这个是NXROBO公司专门为“ROS星火计划公开课”(星火计划--机器人操作系统ROS培训)量身打造的高集成度机器人开发平台。初期主要兼容turtle的软件库,后续我们会持续开发新的软件包。机械结构以及硬件方面,相比于美利坚洋龟turtle,Spark集成度更好、价格也更实惠一些,毕竟Made in ShenZhen喽。我目前拿到了第一代测试样机,SLAM跑的还挺稳当。 

Dimension: 700mm X 340mm X 340mm
Weight: 3.5kg
Max Payload: 6kg
Max Speed: 0.6m/s
Obstacle Clearance: 10mm
Battery Capacity: 15,000mAh
Drivers and API: ROS
主要特点:
•简洁实用:能直接用上笔记本计算机的显示器、摄像头、扬声器、麦克风等
•续航力高:充电功率十足,能同时为机器人及高配笔记本计算机充电,实现无人干预长时间运行。
•扩展性强:提供电源输出及预留安装位置,轻松外加各种配件,如
•摄像头云台
•载物平台
•机械臂
•激光雷达平台到手后,下期我们再聊聊如何玩。(本期完)

Top Liu

标签:

评论共0条评论

登录后再评论!

全部评论

目前没有评论