ROS史话36篇 | 9. ROS乌龟的起源

1192
0
2020年3月24日 00时48分

每一个ROS版本的发布,都伴随着一个新的乌龟吉祥物和小图标。

 

很多初学者,甚至有一定经验的人都不了解为什么ROS要用乌龟,ROS的设计者是怎么想的?

 

ROS史话36篇 | 9. ROS乌龟的起源插图

B-K 10个ROS版本乌龟小图标

 

Turtlesim里的乌龟图标则是由思特菲·派姬(Steffi Paepcke)设计的。每一个小图标都跟乔许·埃林森设计的乌龟吉祥物相关联,从颜色,风格,主题保持一致。

 

ROS在英语中,表示“龟”有两个词,一是Tortoise,二是Turtle。容易搞混。

·   Tortoise指陆上生长的乌龟

·   Turtle泛指各种乌龟,陆生的和海里的。海龟则称为“Sea Turtle”。

 

国人在英文课本学的是Tortoise,比较少见Turtle。

 

在美国,很多孩子从小就开始学习编程了。当然,也有不少中国学生在很小的时候学习编程。我有一位大学同学,在父母的支持下,初中阶段就能够接触电脑,开始学习编程了,那个时候大多数人连电脑是什么都没听说过。

 

到了大学,在其他同学都在凑钱买电视的时候,我这位同学已经拥有了一台自己的个人电脑,而且开始为公司做一些软件开发项目了。也许是受他的启发,很多同学后来走上了软件开发的道路,赶上了互联网的大潮。现在从小学编程的人已经很多了,有各种培训班和网上课程。

 

为了让小孩子学编程容易上手,就会有人开发一些适用于孩子的编程语言和编程环境。这样的编程环境尽可能避免复杂的操作,至少没有让人眼花缭乱的界面。比如,现在面向小朋友比较流行的编程有美国麻省理工学院开发的小猫(英文名SCRATCH)简易编程,卡耐基梅隆大学开发的爱丽丝(ALICE)三维图形编程环境。通过简单的拖动图标就可以进行编程,这样的编程环境使得学习门槛大大降低了,可以让小孩子的注意力集中到程序设计上。

 

ROS史话36篇 | 9. ROS乌龟的起源插图(1)

乌龟图标

 

车库的创始人和早期员工都是软件工程师,他们大多很小的时候就开始学习编程。那时他们用的是LOGO语言[1],一种面向儿童的计算机编程语言。LOGO语言的发明人是一个叫西摩尔·帕普特(Seymour Papert)南非人。帕普特年轻的时候也是热血青年,赶政治时髦,参与南非的反对种族隔离的运动。

 

在24 岁时,在自己的祖国南非金沙大学拿到了第一个数学博士学位,30 岁的时候又到英国剑桥大学拿到了第二个数学博士学位。随后,他奔赴瑞士日内瓦,追随著名教育家和心理学家让·皮亚杰(Jean Piaget)学习研究儿童发展的理论,后来他的所作所为正是受这段经历的影响,思考如何利用数学去理解和解释学习者,尤其是儿童的学习与思维。

 

帕普特在一次学术会议上与人工智能研究的先驱马文·明斯基(Marvin Minsky)相识,明斯基邀请帕普特来到美国麻省理工学院(MIT),60年代两人共同创办了大名鼎鼎的MIT 人工智能实验室,帕普特后来又创建了MIT媒体实验室。

 

ROS史话36篇 | 9. ROS乌龟的起源插图(2)

马文·闵斯基和西摩尔·派普特在MIT

 

在MIT 媒体实验室,他发明了LOGO语言,希望用电脑来帮助儿童更好地学习,之后的很多时间帕普特都致力于理解儿童是怎么学习的,儿童到底在学习什么,怎样才能更好地帮助儿童学习。

 

帕普特有一句非常著名的话,他说,我们要关心怎么才能让孩子对电脑进行编程,而不是让电脑对孩子进行编程。早在 60 年代,在电脑还没有走进千家万户的年代,帕普特就在想,怎么才能让电脑成为孩子学习的好帮手,让孩子成为电脑的主宰,让孩子通过电脑这一媒介来表达自己,产生各种创造性的思想。

 

帕普特关心的是怎么提供一种建构式的学习,而非灌输式的教育。帕普特早年从皮亚杰那里学到了关于儿童行为及心理的很多东西,而这些经验直接影响了他后来的研究和工作。

 

为了让孩子也能用使用电脑做点有意义的事情,帕普特发明的 LOGO 编程语言非常简单,任何一个小孩一天就能学会。在 LOGO 的图形系统的虚拟世界里有一只小乌龟,编程学习者可以通过输入指令,让海龟在画面上走动,可以向上下左右,或者是按照你指定的角度移动。还可以让小海龟以加速或减速移动,也可以让小海龟重复某一个动作。

 

这些指令看似简单,但假如能将其进行合理的组合和排序,编程学习者就可以创造出各种东西,包括人、房子、汽车、动物、抽象图案,甚至有人还专门写了一本 600 多页的书(书名就是 Turtle Geometry,乌龟几何),发掘 LOGO 带给人们的无限可能。

 

LOGO语言是针对儿童而制作的编程语言,因为对于儿童来说,“画画”比“文字处理”更有吸引力。LOGO采用的“海龟绘图”方式,充分引起儿童的兴趣和学习计算机编程的积极性。因此,那个动来动去的小海龟在所有编程学习者里,最深入人心。

 

ROS里面有一个turtlesim系统,就是受Logo的海龟绘图系统启发,帮助人们学习ROS而设计的。Tutlesim的乌龟形象,甚至程序指令和Logo里面都是一模一样的。ROS第一个版本的吉祥物Box-Turtle就是模仿Logo程序设计语言的吉祥物,一只小海龟。现在还有不少为孩子设计的APP采用乌龟的形象。比如下面这个Move The Turtle编程APP。

 

ROS史话36篇 | 9. ROS乌龟的起源插图(3)

 

帕普特的研究和实践给无数的教育工作者带来了启发,尤其是Mindstorms一书,虽然是诞生于个人电脑尚未普及的 70 年代末,但书中的思想即使是今天读起来依然让人感觉是超前的。

 

ROS史话36篇 | 9. ROS乌龟的起源插图(4)

 

他曾与明斯基合著Perceptrons一书。Facebook的人工智能研究主管伊恩·勒坤(Yann LeCun)在读大学的时候听说了「perceptron」的概念后,激发了对学习型机器的热情,虽然业界普遍认为这本书是让刚诞生的神经网络胎死腹中,但勒坤说,他一直都是帕普特的粉丝。

 

为了让电脑编程更有趣,帕普特还设想了一个用电脑控制的机器人。或许他并不知道,有一位叫威廉姆·格雷·瓦尔特(WilliamGrey Walter)的神经科学家已经制作了一个类似的机器人。

 


[1] Logo一词源自希腊语逻各斯(logos),意为“思想”

发表评论

后才能评论