机器人编程怎么入门?从0到精通,卡巴告诉你!

网友投稿 2018-11-02 21:48

编程现在应该是青少儿教育的一大热门,很多家长都非常重视孩子这方面的学习。我们微信后台也经常会收到一些家长的留言,咨询编程的相关事宜。今天,就跟大家来唠一唠机器人编程的哪些事,不管孩子已经上过编程还是没有接触过,都可以一起来看看。
01

什么是机器人编程

首先,什么是“机器人”?第一感觉,“机器人”应该就是机器做的人~~可联系到我们生活中,除了电影里的变形金刚还有个人形,那些扫地机器人,聊天机器人,和流水线上的装配机器人,哪里有“人”的影子?仔细想想“机器人”就是翻译界的通假字吧。

今天提到的“机器人”是指通过重构改变硬件,通过编程改变软件的可编程机器人。它一般由以下几个部分组成:

01

硬件

1. 基本组件。这就好像我们常见的乐高玩具,包含各种形状的小组件,可以拼成不同的形状,这是机器人的身体。

2. 传感器。传感器就像机器人的眼睛和耳朵,用于获取外界信息。常用的有获取速度的超声波传感器,获取颜色或反光度的光线传感器,获取外界触碰的触碰传感器等等。

3. 马达。这是机器人的手和脚,肌肉和关节。所有的位置改变都靠它。

4. 控制器。这是机器人的大脑,决定机器人的行为。 通过和传感器连接获取输入,通过和马达连接控制输出, 通过和电脑连接将程序注入。 此外控制器可以接收遥控输入,还可以有图像或者声音的输出。

下图是乐高EV3系列中的触碰传感器,马达和控制器。传感器和马达不止一个,这里只是取了一个举例子 。

https://cdn.china-scratch.com/timg/181104/214RK492-0.jpg

02

软件

孩子们在电脑或Pad上编写完一段程序后,下载到控制器后执行。执行的程序可以获取传感器的输入数据,也可以控制输出。程序本身用的是可视化的编程语言,极易上手。

综上所述,机器人编程,就是用硬件构造一个身体,用程序给它一套逻辑,利用它的传感器和马达,完成一系列的任务。 

https://cdn.china-scratch.com/timg/181104/214RH0L-1.jpg

市场上针对孩子的机器人编程组件已经有很多。这些组件都包含上面的软硬件要素,让孩子从零开始,实现初步的机器人编程。最流行的编程组件估计是乐高的Mindstorm EV3,和国产的能力风暴Abilix。两个国际性的机器人编程大赛(FLL和WER)分别是以它们为基础。他们其实很相似,要说区别,我觉得主要是下面几点。

1. Abilix的组件要比乐高的大一圈,乐高相对来说要精致些。

2. 乐高里的组件都是标准化的,海量模型里的组件与它的EV3都是兼容的。而Abilix专业做编程机器人,只有针对机器人的模型,其组件的选择肯定要少些。

3. Abilix的组件大多是两维可连接,而乐高只有一维。给大家看下图就知道了。同样的一个L型组件,乐高(白色)一边开口,Abilix(黑色)两边开口,这让搭建的选择会更多些。

https://cdn.china-scratch.com/timg/181104/214RJ5S-2.jpg

4. 两者都是可视化编程语言,但设计不同。Abilix用的是Scratch儿童编程语言,而乐高是自己的设计,两者没有好坏之分,都很好用。

https://cdn.china-scratch.com/timg/181104/214RGL9-3.jpg

02

孩子机器人编程启蒙

首先,告诉大家现实中机器人的编程搭建,并不像孩子想象中的那样——给它撒上金粉,念段咒语,就可以开心的跳起舞来。他们会慢慢发现,自己搭出来的机器人既不那么美丽也不神秘,而即使这样的机器,它的搭建过程也是非常复杂的,软件编程也需要无数次的修改调整,就这样它还经常会掉链子……嗯~~我想说,孩子们,欢迎来到真实的世界,欢迎换个视角来观察问题。

用工程师的视角来看待问题,是做机器人给孩子的最大收获。机器不通人情,不会因为你的努力而通融,不会因为你的才华而动心。和它打交道,就得按照它的方式来,没有捷径。孩子不缺想象力,缺的是想象力和现实世界的妥协,不知道心中炫酷的想法如何一步一步实现。我想说,在机器人面前,可以先把把艺术家的天马行空暂时收收一收,换用工程师的严格和脚踏实地来看看这个世界。

下面分别从硬件、软件和设计三方面来说说,在卡巴,老师是如何指导孩子做机器人编程,想要在家教育孩子编程的,可以借鉴使用哦~

01机器人硬件

以乐高机器人的搭建来说,以前那些按照说明书搭建起来的乐高模型,都是浮云。我相信,我们卡巴的学员中一定有不少家长和孩子按图纸搭建出很多作品来,有的人水平甚至都可以称为“资深”,可扔掉说明书那一刻,想必很多人都懵圈了吧~~一些基本的需求本以为很简单,可自己就是没法实现。那丰富的搭建经验,远不如一个早上系统学习的收获大。 下面是我觉得需要系统学习的两点:

  • 熟悉基本组件和基本技巧 

知道你拥有什么,才知道你可能做出什么。对基本的组件非常熟悉,做的时候才能得心应手。

以乐高里最常用的两个单位长度的连接件为例。长度一般模样类似,为什么会有不同的颜色,仅仅是为了让做出的东西更多彩吗?

其实,不同的颜色后面是不同的功能:黑色的连接是圆口有摩擦的,白色的是圆口没有摩擦的,蓝色的是一边十字口一边圆口有摩擦的,红色的是两边十字口的。 熟悉这些连接件,才能知道你可能做出怎样的扩展, 才能轻松的找到那个你需要的。

https://cdn.china-scratch.com/timg/181104/214RI004-4.jpg

除了基本的组件,还需要知道搭建的基本技巧。比如说我们经常需要将两条长梁或平行连接, 或垂直连接。每种需求可以用哪些连接件以怎么的组合实现?不同的方式有何不同,又有何优劣?

  • 熟悉齿轮

机器人的动力系统,是搭建在电机和齿轮之上。 电机提供动力,而齿轮可以改变旋转的速度,方向和力矩,也可以改变力的形态,将动力以不同的形式传递出去。电机和齿轮一起,构成了机器人的动力基础。

电机的应用很直接。要么连着轮轴直接旋转,要么连上齿轮将力转化或传递出去。而齿轮是有点难的,要用到一点点数学,了解一点点杠杆,最好还需要明白力和力矩的概念。不过下点功夫去理解齿轮,也就能了解真实世界里很多机械背后的原理,对孩子来说,也是非常有意义的。

乐高里的齿轮大体分正面齿轮,侧面齿轮和蠕虫轮。组合起来的用法很多,建议多做些简单的练习,打好基本功,熟能生巧,到时候信手拈来。 

  • 招财手

https://cdn.china-scratch.com/timg/181104/214RTF4-5.gif

  • 打桩机

https://cdn.china-scratch.com/timg/181104/214RT339-6.gif

  • 正面齿轮传动。 最右边的齿轮带动左边两个黑色齿轮转动,它们方向相反。

https://cdn.china-scratch.com/timg/181104/214S05048-7.gif

  • 侧面齿轮传动。 黄色齿轮带动两个黑色齿轮以相反方向转动

https://cdn.china-scratch.com/timg/181104/214S12H4-8.gif

  • 蠕虫齿轮

https://cdn.china-scratch.com/timg/181104/214S31049-9.gif

02

机器人软件

编程说简单一些就是收集信息指令,做出反应。那么机器人的输入和输出是什么,它可以收集哪些信息,做出什么样的反应,又能实现什么样的逻辑呢?

  • 输入设备:传感器

机器人通过传感器来收集信息。了解传感器,就是了解机器人触碰世界的能力。常用的传感器比如检测颜色和反光度的光线传感器;探测离障碍物距离的超声波和红外线传感器,测量旋转角度和速度的陀螺仪,等等。软件里面有专门的模块去获取传感器的数据,很简单。

  • 输出设备:电机

机器人通过电机做出反应。再复杂的动作,都是通过对电机实现,转速快一点,慢一点;正着转或者反着转。有些机器人还能显示图像,声音,也算是对外界的输出吧。

  • 编写程序

和很多面向孩子的编程软件一样,机器人编程平台提供的编程模块很丰富,操作起来也很简单,很适合孩子上手。

软件里众多的要素,比如循环,函数,条件判断,逻辑计算,甚至很高级的数组,多线程等等,它都支持,而这足以支撑起一个复杂的程序,实现复杂的编程思想。

下面是个小例子,程序通过光线传感器检查地面的反光度得到颜色,根据地面是白色还是黑色控制两边的电机让机器人左偏或右偏,以实现机器人沿黑线走的功能。

https://cdn.china-scratch.com/timg/181104/214S45V0-10.gif

  • 机器人编程和纯软件编程的区别是什么?

纯软件是个虚拟的世界,简单而完美,就像我们上学时所说的理想条件下。而真实世界太复杂了,并且总有意外,因此就需要更健壮的软件去化解这些复杂,处理这些意外。

举个例子,就以孩子们非常喜欢的挖土机来说明下硬件编程有多复杂。假设我们已经搭建好了一个挖土机,需要让它从A点挖土,然后行驶到B点倒土,在纯软件编程里,我们只要一行代码就可以搞定,但在机器人编程中却没有这么简单。

第一,因为从A→B,地面情况不同,摩擦力不均以及电机微小的偏角误差,编程中让它走直线的这个命令,在实际中会产生偏差,而且走的越远,偏差越大。因此,孩子们在出现这种情况后,需要及时通过陀螺仪校准调整。

第二,程序中A→B之间的距离我们假设设置的是1米,可挖土机实际上并不会真的走1米,肯定会有误差。机器人停下后要检测轮子实际行进的距离,多退少补再做微调。

第三,电池的电量也会影响电机的准确度,进而影响行进的距离,速度以及偏角。要想每次运行的结果完全一样,要么保证运行时的电量不能差别太大,要么根据电量的多少对行为进行补偿。

第四,机器人会偶尔出现死机,读数不准等硬件错误。比如我们发现EV3的陀螺仪有时候会突然出错,在静止状态下读数也会改变,必须重启机器人才能恢复。控制器本身可能会死机,也必须重启才能恢复。

做软件测试,一次通过次次通过 。而机器人,前5次都成功了,第6次还是需要祈祷才行。复杂的世界,需要复杂的程序让他去实现简单的事。我想这也是机器人编程教给孩子很重要的一点。

机器人编程,对于有些编程经验的理科生来说,起初都需要花费一定的时间和精力摸索,何况一个孩子,所以孩子学习机器人编程,我建议一定要有大人的正确引导,这样才能带着孩子一起用工程师的视角去看看这个世界。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com