这个系列我们主要聊一下K-12阶段比较有影响力的机器人竞赛。首先要说清楚,竞赛不完全是目的,只是通过竞赛这种形式促进孩子们对机器人的兴趣,以及对STEM的兴趣。
这个系列主要介绍FLL和VEX,后面顺便聊聊中国国内最近几年兴起的Robotsmaster,以及历史悠久的机器人足球竞赛。然后再看情况,介绍一下Arduino和 Raspberry Pi。
什么是机器人?首先我们搞清楚什么是机器人,机器人是一种由电子计算机控制,能代替人做某些工作的自动机械。
这些无论形状,功能,有多大的差别,这些都是机器人。
机器人通常会涉及到电子,机械,物理,软件,传感器等多方面的东西。这是一个从简单玩具到火星登陆车的大领域。可以非常简单也可以非常复杂。现在大热的自动车其实本质上也是机器人的一种。
在10年前,集成电路,嵌入式系统都还处于比较弱的阶段,那个时代机器人都是如研究所,大学,国防单位,DARPA这种大玩家玩的的东西。其中CMU的机器人研究所这个行业的超级大牛,DARPA也投了大量的钱在这个行业。直到现在DARPA robotics challenge还是一项顶级水平的机器人赛事。
这种都是超级顶级的正规军在玩的东西。背后都是一堆顶级研究所,大学在后面支撑着。
玩具类机器人随着过去十年,集成电路发展非常快,比如ARM从早期的8位,16位,到现在已经搞出了可以用在服务器上的64位芯片了。大家的手里的IPhone手机中的CPU计算能力都已经非常强大了。
所以在过去十年里涌现出一批广泛流行开发板以及对应的嵌入式系统。比如最早的有流行的三星S3C2410开发板,再往后比较流行的Begale board,Panda board,再往后就出来了Rasperberry PI,以及低端的Adrunio。这些开发板的流行,使得整个嵌入式社区,DIY社区得到了极大的繁荣。现在整个社区非常活跃非常发达,你可以利用买到的各种零配件加上传感器加上主控板能搞出各种各样好玩的东西。
LEGO
LEGO mindstorm 祖孙三代。
RCX
在商业领域中,LEGO也很早(1998年)就推出了第一代机器人核心RCX。那个时候性能很弱,能存放的代码也很有限.8位的CPU,32K的内存。能做的事情非常有限。
但是FLL也就在第二年就举办了,第一届参加的人数有975队。这个FLL对推广Lego的机器人起了非常大的作用。
NXT
2006年,Lego的第二代产品 NXT面世,这款NXT已经具备了非常强大的功能,可以说这是一个跨时代的产品,几乎没有竞争对手。
在玩具中,第一次标准化,模块化了超声波传感器,颜色传感器,触碰传感器,步进电机。编程界面把当时工业界最流行的labview给拿了过来。直接拖拽就你能编程。主控器的配置在当时来说也是非常好的水平,可以做比较复杂的操作。
所以很快就火了起来,这也是我第一个买的乐高玩具。随着NXT的流行,各路玩家社区很快发展起来,很多人不限于玩现成的,很多人把各种语言的运行环境搬上去了,开发了很多扩展传感器,甚至开发了专门的语言。甚至Matlab还专门为NXT开发了toolbox。整个社区,图书,培训,网站都是那个时候火起来的。今天很多成人玩家都是从这款玩具入门的。那一年参加FLL的人第一次突破10万人。
EV3
2013年乐高推出了它第三代产品 EV3。
这款EV3 采用的是ARM9,300M主频。 64MB内存,16MB Flash还有扩展槽,支持蓝牙,支持ipad控制等,同时兼容NXT的传感器。这一款功能非常强大。而且同时还发布了教育版。家庭版和教育版的区别在于传感器不同,以及主控板上的软件稍微有点不同。比如data logging在home edition的缺省版上是不包含的。其他的功能几乎一样,参加比赛的情况下,一般可以用Education版的,用Home Edition的也可以,只要不使用infrared sensor就可以了。Education版要比Home Edition贵一些,奸商啊!
Home Edition
教育版跟Home Edition相比多了电池,变压器,陀螺仪,超声波传感器,一个 touch sensor少了Infrared Sensor。
软件方面,还是可以采用基于LabView的软件进行编程,当然也可以通过RobotC来进行编程。对于孩子来讲RobotC需要会C语言。拖拽界面,6岁孩子就能玩。
EV3的功能已经非常强大,能够胜任大量的简单工作。社区可以基于EV3的硬件和传感器,编写相当复杂的程序。
比如下面这个经典的利用EV3解魔法的演示,程序已经非常复杂了。
机器人编程难在哪?其实很多家长或者小朋友按照图纸把机器人打起来,程序一download,很快就你能玩起来,然后觉得EV3也就那样,很简单嘛!
但是实际上,你远远低估了他难度:
机械部分
就拿上面那个视频中的解魔方来说,按照图纸搭,你很容易把机器人给搭出来。但是为什么这么搭,如果我告诉你,现在需求改了,我需要用两个brick配合一起解魔方,机械部分该怎么设计,怎么搭,为什么这么搭,这么搭的问题是什么?等等,你就会发现,我去,不是随便搭就能搭出来的。随便搭的可能很快就会散架,或者很容易掉零件等等。
程序部分
如果你打开解魔方的程序,你就会发现,我去,这个里面的程序非常复杂,一个模块套一个模块,相当于几层调用。没有大量的实践,参数都不敢改。模块调整就更不用说了。
如果换成robotc的代码,那先要学会C语言吧。而且在搭建的过程中还需要大量的调试和排错,这些都是需要大量砸时间。
自控部分
很多文科家长从来没有听说过PID控制。但是机器人是程序控制机械完成任务的,中间需要大量的PID控制。PID全称 比例-积分-微分控制器。
最基本的小车寻径,如果控制小车能平稳的沿着黑线走。做的好的,必须是PID。
下面就是一个例子
这种小Nerd把这些搞得很清楚了,然后还在youtube上给你讲该怎么做。
所有的这些其实都还是基础。因为你遇到的问题比这个更加复杂。
学EV3需要准备什么?我个人意见是,有了一定基础之后。
乐高基础
比如你至少给你一对Lego积木块,能够用这些积木块按照自己的想法搭一些东西出来吧。完全按照图纸,只是第一步。放手搭,才能释放自己的想象力。
机械基础
比如齿轮,杠杆,传动这些。比如你要去设计一个机械臂抓一个球然后把球拿回来。这个最基本的操作中,那必须要会齿轮的操作。
作为黑心的乐高,自然也有一套设备,让你破费。
程序基础
现在拖拽编程不是很新鲜了。低年级的Scratch 系列能够让你图形化的编程,拖拖拽拽就你能完整一个简单的程序。
其实这个目的是让你暂时略过程序的细节,给你一些编程的思维。什么是循环,什么是分支。
小结本篇简单介绍了一些乐高机器人的一些基本情况。以及FLL的来历,机器人的基本概念。
顺便说一下,我对市面上各种常见机器人玩具的看法:市面上不同机器人之间很大的差别在于 flexibility 和Simplicity 之间的取舍。
乐高MindStorm
优点:
乐高 Mindstorm系列火起来的一个很大原因是,把电路这块完全给你包起来了,你根本不用太关心,没有跳线。把传感器,电机这些也全部标准化起来了,不需要太多的配置,非常稳定。
你只需要把你的想象力主要集中在机械和软件方面。
缺点:
但是缺点在于你很难去扩展他的体系,比如你想加一个摄像头,你就会发现很难弄,你想加一块扩展版,换个电机,都会发现很难弄。
FreeStyle类机器人
优点:
你可以把主控板放到无人机上,变成飞行机器人,放到水下UUV上,变成水底机器人。你爱加什么传感器,就加什么,只要你会写驱动程序。你愿意还可以在上面跑python,跑C。你要加5个摄像头也没人拦着你,只要你供电供的起来。非常自由。只有贫穷才能限制你的想象力。
树莓派无人机
树莓派水下航行器
缺点:
你会发现你需要会的东西特别多,学东西特别快。遇到问题,你根本没人可以问,没有标准开发程序。你就是一个独行者。在易用性方面,很难很难。对于孩子来讲,非常非常challenge!
市面上很多机器人都处在这两个极端之间。没有哪一种适合所有的人。