《21世纪机器人》——导读

前 言

宣言的诞生

这本书的结局是一个小机器人在后台等候出场,即将在拉斯维加斯的5000名观众面前首次亮相。他的名字叫吉米,他是第一个21世纪机器人。

你可能会问:21世纪机器人是什么?

好问题。

在机器人的历史中,它们大多时候都生活在科幻小说中。在构建机器人的科技做好准备之前的很长时间里,人类只能通过科幻小说、电影、漫画或者玩具看到或者感受机器人。不过,这并没有阻止人类对机器人的想象和探索。事实上,在1920年捷克作家卡雷尔·恰佩克(Karel apek)发明机器人这个名字之前,关于机器人的想象和探索就早已经出现在世界上的各种文化中。
在20世纪的后半叶,机器人开始走出人类的想象,踏上了现实之旅。工业机器人开始在工厂里工作,帮助我们制造小轿车。在大学的实验室里,人们制作出了各种形状、各种大小的机器人。不过,尽管这些新的机器人已经真实存在并不断发展着,但是对于大多数人来说,机器人还是停留在科幻世界里的陌生人。直到后来……

在世纪更替的那几年,机器人开始变得非常不同。制作机器人不再是著名大学和大公司的专利,而是任何人都可以,机器人成为我们日常生活的一部分—它们原本就应该出现在那里。

与21世纪一起到来的是以全新的方式设计、构建机器人并为其编写软件。科技进步和完全不同的开发途径为我们提供了很多新的工具,去除了原本横亘在我们和机器人之间的障碍。开源软件和应用(App)为我们提供了全新的方式来开发和分享软件代码。开源硬件汇聚了数百万开发者和新生代创客的创造力。3D打印的出现让任何人都有能力把自己设计的机器人生产出来。这个世界变了。

现在,任何人都可以构思、设计、建造自己的机器人并为其编写软件。这些新的机器人就是21世纪机器人。

作为一个未来学家,展望未来和研究人类与科技的相互影响是我的工作。简单来说,我要展望未来10年、15年甚至20年的世界会是什么样子。十几年来,我一直在构想新的21世纪机器人。大约3年前,我清楚地看到科技已经发展到可以实现我的机器人构想的时期了。我构想的机器人是完全开源的,可以3D打印,而且还有最重要的一点—社会化(social)。它们会与以前出现的任何机器人都不同。3年前的突然领悟产生了这本书。

诞生的过程

“那么,21世纪机器人到底与20世纪机器人有什么不同?”Maker Media(我的出版商)的CEO戴尔·多尔蒂(Dale Dougherty)在一次电话沟通中如此问我,那时这个项目刚开始。戴尔对我的机器人想法始终给予极大的支持,并且总是怀着无尽的好奇,他督促我把关于21世纪机器人的设想定义出来。
“好,”我站在厨房,准备在电话中发表演说,“我想说21世纪机器人是构想在先。它是社会化的、开源的,而且是迭代改进的,还有,它满载着构建他、她或它的人的愿望和梦想。它还是易于构建的。”

“所以,一切是由构建机器人的人来决定的,是吗?”戴尔继续询问,“那还是21世纪机器人吗?”

“不知道,”我回答,“那其实正是伟大之处。当我们谈论21世纪机器人的时候,我们真的不知道它是什么。我不知道它是什么,那不是由我决定的,而是由构建机器人的人决定的。每个机器人都是个性化的,每个机器人都具有个体性,因为每个构建机器人的人都独一无二。”

“我想你需要起草一项宣言,”戴尔一边笑一边说,“实际上你刚刚写了一项。”

“我从来没有写过宣言。”我回答道。我不认识写过宣言的人。

“只需回答如下问题:是什么使21世纪机器人与20世纪机器人不同?是什么使它与此前出现的机器人不同?”

这就是一项宣言的诞生经过,诞生地就在我的厨房,位于俄勒冈州波特兰市。这就是我的开场白……

21世纪机器人宣言

21世纪,技术发展到了只要能想象出来就可以构建出来的时期。

是时候构思一种完全不同的机器人了。该机器人的设计、构造方式和编程方法都是新的。我们可以构思和创建具有更加神奇未来的机器人,远远超过今天我们所看到的—更具创造力,更加丰富多彩。21世纪机器人的时代来了。我们的宣言是:

21世纪机器人宣言

机器人是:想象为先、容易组建、完全开源、迭代演进、全面社交、富有人性和梦想、为她/他/它自己考虑

想象为先

人类历史上,从来没有什么东西是没有先经过想象就构造出来的。

想象是构建机器人的最重要技能。在21世纪,任何人都可以想象、设计、建造一个机器人。

但首先你必须问自己:你想要机器人成为谁?你的机器人叫什么名字?(因为每个机器人都有一个名字。)每个机器人都是一个个体。你想怎样和机器人互动?你的机器人会做什么特别的事?你想要机器人做哪些其他人不会做的事?

把你的机器人画出来,写一个故事,描述每天与你的机器人一起生活是什么样子。你的机器人会做什么新鲜有趣的事情?哪里可能出错?我们应该避免什么?你的想象力和这些想法会让你的机器人成为一个独立的人。

科幻小说、漫画和电影是强大的工具,可以帮助你构思机器人。以科学事实为基础,我们可以用科幻小说的方式来设计机器人,把这些故事作为技术需求文档。

容易组建

回顾20世纪,那时建造一个机器人是很难的。计算机庞大而且缓慢,电子产品复杂,少数有钱人控制了制造工艺,只有他们才能建造工厂和装配线。但现在这一切都改变了。

今天的计算机很小而且很容易获取,软件工具和应用程序让任何人可以成为程序员或设计师,3D打印机打破了数字世界和物理世界之间的壁垒,使我们能够制造几乎任何我们梦想的东西。你可以去社区和工作坊设计和打印你的机器人。

完全开源

开源的目的是让人们掌控所使用的技术,以实现创建、修改和分享。20世纪末,随着互联网以及它所依赖软件(比如开源的Linux操作系统)的流行,开源的各种应用和社区非常热门。

21世纪机器人是完全开源的。基于开源的3D设计文件,每个人都能够设计和定制自己的机器人。管理机器人和充当机器人大脑的所有软件都是自由和开放的。你可以操控机器人的系统,也可以为你的机器人设计不同的应用程序。

尤为重要的是,我们希望你与别人分享设计。如:你是不是想出一种新的方法,让机器人的腿很酷?你最新开发的应用是什么?甚至机器人的生产制造也是开放的,世界各地的人可以合作构建更好、更聪明、更有趣、更令人兴奋的机器人。

迭代演进

当你可以制造很多机器人时,为什么只做一个机器人?

所谓迭代,就是重复一个过程,为一个目标或者一个项目开发出多个版本。我们制作很多机器人的目的是试验不同的版本,不断改进。每个机器人都是下一个机器人的起点,每一个新的机器人都包含着从以前版本学到的东西。在新版本中,也可以尝试以前没有使用过的新方法。通过开源的分享机制,当你试验别人的想法时,事情可能变得非常有趣。

全面社交

21世纪机器人是会社交的,主要是与人互动,也可连接到互联网、社交网络以及其他20世纪机器人。你的机器人会对另一个机器人说什么呢?

构建机器人的过程也是社交化的。世界各地热衷于构建新型机器人的人们组成了一个庞大的社区。通过共同努力,我们可以改变机器人的未来。

富有人性和梦想

机器人是由人构建的,我们用自己的梦想和希望来设计机器人。我们可以想象未来,并把未来的梦想放入机器人中。

日本机器人专家森昌弘认为我们设计的机器是自己的延伸。1974年,他写道:“机器虽然表面上与我们不同,但实际上仅功能和我们有差距,从本质来说是我们的一部分。”

机器人为我们提供了一种新的方式,让我们想象不同的未来,构建梦想,并让它们和我们共处。

为她/他/它自己考虑

你可以设计机器人,让她/他/它有自己的个性和行为,也可以设计应用程序让它做任何你可以想象到的事情。

21世纪机器人不是木偶,它能为自己考虑,具有真正的人工智能,能移动,能做出决策,还能与你和其他人互动。我们希望这些机器人有自己的想法,古怪而且有趣。

我们的座右铭:“每个机器人都有一个名字”

人们在后院、车库或者地下室组建机器人。每个人都有一个名字,并且都是独立个体。因此,每个机器人也都应该有一个名字:因为你所构建的机器人,以及你将来要构建的所有其他机器人,都是你的延伸。你的机器人和你的设计会走出去,融入世界。其他人可能选取其中的部分来制造他们的机器人。这种分享和迭代可以持续下去。我们不断构建,不断分享,不断设计和建造机器人并为其编写软件。

这就是21世纪机器人。它是我们想象、设计、构建并分享对未来看法的一种方式。这种方式也让我们结识了很多非常棒的小朋友。

这本书记录了第一个21世纪机器人是如何制造出来的,也讲述了帮助制造这个机器人的很多人的故事。

目 录

第1章 他用自己的思想打造机器人
《看见天使的机器人》
我在制作非理性的机器人
科学创意基金会
他靠思考来修收音机!
下一章
第2章 远程机器人的孤独
驾驶舱里,晨明号货运机:重启前30小时
DeutchConn第5晶圆厂,艾特金火山口边缘,月球远端:重启前25小时
DeutchConn第5晶圆厂,HCI实验室:重启前22小时
DeutchConn 第5晶圆厂,装载码头:重启前19小时
DeutchConn第5晶圆厂,HCI实验室:重启前10小时
DeutchConn第5晶圆厂,装载码头:重启前5小时
货物搬运工晨明号:重启前1小时
第3章 设计
后院的机器人
从图纸到塑料模型
你的机器人是男孩还是女孩?还是两者都不是?
摩尔女士的一年级学生心中的未来机器人
下一章

时间: 2024-10-30 23:38:14

《21世纪机器人》——导读的相关文章

《深入理解Scala》——第1章,第1.2节当函数式编程遇见面向对象

1.2 当函数式编程遇见面向对象 深入理解Scala 函数式编程和面向对象编程是软件开发的两种不同途径.函数式编程并非什么新概念,在现代开发者的开发工具箱里也绝非是什么天外来客.我们将通过Java生态圈里的例子来展示这一点,主要来看Spring Application framework和Google Collections库.这两个库都在Java的面向对象基础上融合了函数式的概念,而如果我们把它们翻译成Scala,则会优雅得多.在深入之前,我们需要先理解面向对象编程和函数式编程这两个术语的含义

《深入理解Scala》——第1章,第1.4节与JVM的无缝集成

1.4 与JVM的无缝集成 深入理解Scala Scala的吸引力之一在于它与Java和JVM的无缝集成.Scala与Java有很强的兼容性,比如说Java类可以直接映射为Scala类.这种紧密联系使Java到Scala的迁移相当简单,但在使用Scala的一些高级特性时还是需要小心的,Scala有些高级特性是Java里没有的.在Scala语言设计时已经小心地考虑了与Java无缝交互的问题,用Java写的库,大部分可以直接照搬(as-is)到Scala里. 1.4.1 Scala调用Java 从S

《深入理解Scala》——第2章,第2.1节学习使用Scala交互模式(REPL)

第2章 核心规则深入理解Scala 本章包括的内容: • 使用Scala交互模式(Read Eval Print Loop 简称REPL) • 面向表达式编程 • 不变性(Immutability) • Option类 本章内容覆盖了每个新Scala开发者都需要知道的几个主题.本章不会深入到每个主题里,但是会讲到可以让你自己去接着探索的程度.你将学会使用REPL,学会如何利用这个工具做软件的快速原型开发.然后我们会学到面向表达式编程,并从另一个视角来看控制结构是怎么回事.在此基础上,我们来研究不

《深入理解Scala》——第1章,第1.3节静态类型和表达力

1.3 静态类型和表达力 深入理解Scala 开发人员中有一个误解,认为静态类型必然导致冗长的代码.之所以如此是因为很多继承自C的语言强制要求程序员必须在代码中多处明确地指定类型.随着软件开发技术和编译器理论的发展,情况已经改变.Scala利用了其中一些技术进步来减少样板(boilerplate)代码,保持代码简洁. Scala做了以下几个简单的设计决策,以提高代码表达力. • 把类型标注(type annotation)换到变量右边. • 类型推断. • 可扩展的语法. • 用户自定义的隐式转

《深入理解Scala》——第1章,第1.5节总结

1.5 总结 深入理解Scala 本章中,你学到了一些Scala的设计理念.设计Scala的初衷在于把不同语言中的多种概念融合起来.Scala融合了函数式和面向对象编程,尽管显然Java也已经这么做了.Scala精选其语法,极大地减少了语言中的繁冗之处,使一些强大的特性可以优雅地表达,比如类型推断.最后,Scala和Java能够紧密集成,而且运行在Java虚拟机上,这或许是让Scala变成一种实用选择的最重要的一点.几乎不花代价就可以把Scala用于我们的日常工作中. 因为Scala融合了多种概

《深入理解Scala》——第1章,第1.1节Scala一种混合式编程语言

第1章 Scala--一种混合式编程语言 Scala是一种将其他编程语言中的多种技巧融合为一的语言.Scala尝试跨越多种不同类型的语言,给开发者提供面向对象编程.函数式编程.富有表达力的语法.静态强类型和丰富的泛型等特性,而且全部架设于Java虚拟机之上.因此开发者使用Scala时可以继续使用原本熟悉的某种编程特性,但要发挥Scala的强大能力则需要结合使用这些有时候相互抵触的概念和特性,建立一种平衡的和谐.Scala对开发者的真正解放之处在于让开发者可以随意使用最适合手头上的问题的编程范式.

《深入理解Scala》——第2章,第2.2节优先采用面向表达式编程

2.2 优先采用面向表达式编程 深入理解Scala 面向表达式编程是个术语,意思是在代码中使用表达式而不用语句.表达式和语句的区别是什么?语句是可以执行的东西,表达式是可以求值的东西.在实践中这有什么意义呢?表达式返回值,语句执行代码,但是不返回值.本节我们将学习面向表达式编程的全部知识,并理解它对简化程序有什么帮助.我们也会看一下对象的可变性,以及可变性与面向表达式编程的关系. 作者注:语句VS表达式 语句是可以执行的东西,表达式是可以求值的东西. 表达式是运算结果为一个值的代码块.Scala

《深入理解Scala》——第2章,第2.3节优先选择不变性

2.3 优先选择不变性 深入理解Scala 编程中的不变性指对象一旦创建后就不再改变状态.这是函数式编程的基石之一,也是JVM上的面向对象编程的推荐实践之一.Scala也不例外,在设计上优先选择不变性,在很多场景中把不变性作为默认设置.对此,你可能一下子会不适应.本节中,我们将学到不变性对于判等问题和并发编程能提供什么帮助. Scala里首先要明白的是不变对象和不变引用(immutable referene)的区别.Scala里的所有变量都是指向对象的引用.把变量声明为val意味着它是个不变"引

《深入理解Scala》——第2章,第2.4节用None不用null

2.4 用None不用null深入理解Scala Scala在标准库里提供了scala.Option类,鼓励大家在一般编程时尽量不要使用null.Option可以视作一个容器,里面要么有东西,要么什么都没有.Option通过两个子类来实现此含义:Some和None.Some表示容器里有且仅有一个东西,None表示空容器,有点类似List的Nil的含义. 在Java和其他允许null的语言里,null经常作为一个占位符用于返回值,表示非致命的错误,或者表示一个变量未被初始化.Scala里,你可以用

《深入理解Scala》——第2章,第2.5节多态场景下的判等

2.5 多态场景下的判等 深入理解Scala 众所周知,为多态的面向对象系统定义合适的判等和散列方法是个特别难的过程.这是因为子类可能在整个过程中造成一些相当怪异的问题,尤其是当类型层次上有多个实体(concrete)级别的时候.一般来说,对于需要比引用判等更强的判等(译者注:比如需要判断对象内部数据)的类,最好避免多层实体类层次.这是什么意思呢?有些时候类只需要引用判等就够了.也就是说只要两个对象不是同一个实例就判为不等.但是如果我们需要判断两个不同实例是否相等,而且又有多层实体类层次(mul