计算机科学入门
今天我们要讨论机器人,你脑中冒出来的第一个印象估计是类人机器人,经常在电视剧和电影里看到。
有时候它们是朋友和同事,但更常见的是阴险无情,身经百战。
我们经常把机器人看成未来科技,但事实是:机器人时代 已经 来临了。
它们是同事,帮我们把困难的工作,做得更快更好。
机器人的定义有很多种,但总的来说,机器人由计算机控制,可以 自动 执行一系列动作的机器。
外观并不重要,可以是给汽车喷漆的机械臂,无人机,或辅助外科医生的蛇状机器人,以及人形机器人。
机器人
有时我们叫虚拟人物 "机器人" ,但叫 bot
甚至 agent
会更合适,因为 机器人
(robot)的潜在含义是存在于现实世界中的 **机器 ** 。
robot
一词,首次出现在 1920 年的一部捷克戏剧,代表人造的 类人 角色。
robot
源于斯拉夫语词汇 robota
,代表 强迫劳动 ,代表农民在十九世纪,欧洲封建社会的强迫劳动。
戏剧没讲太多技术细节,但即使一个世纪后,这种描述依然很普遍: 机器人都是大规模生产,高效不知疲倦,看起来像人的东西,但毫无情感,不会保护自己,没有创造力 。
自动机
更广义的自动运行机器,早在 1920 年代前就有了,很多古代发明家,发明了能自动运行的机械装置,比如计时和定时敲钟,有很多装置有动物和人类的形象,能跳舞,唱歌,打鼓等,这些不用电,而且肯定 没有电子部件 的机器,叫 自动机
(automatons)。
举个例子,1739 年法国人 Jacques de Vaucans 做了个自动机,法语叫 Canard Digerateur
,翻译过来是 吃饭鸭
,一个像鸭子的机器,能吃东西然后排便。
如果没有吃饭鸭的声音,还有什么能提醒你法国的荣光呢?——伏尔泰
一个名声很臭的例子是 土耳其行棋傀儡
,一个能下国际象棋的人形机器人,在 1770 年建造完成后,就在欧洲各地展览,好棋艺惊叹观众,像某种机械人工智能,不幸的是,这是个骗局,机器里有人控制。
CNC 机器
第一台计算机控制的机器,出现在 1940 年代晚期,这些计算机数控的机器,简称 CNC 机器,可以执行 一连串 程序指定的操作,精细的控制让我们能生产之前很难做的物品,比如从一整块铝加工出复杂的螺旋桨,这用普通机械工具很难做到,并且误差容忍度很小,无法手工加工,CNC 机器大大推进了制造业,不仅提高了制造能力和精确度还降低了生产成本。
Unimate
第一个商业贩卖的 可编程 工业机器人叫 Unimate
,于 1960 年卖给通用汽车公司,它可以把压铸机做出来的热金属成品提起来,然后堆起来,机器人行业由此开始。
很快,机器人开始堆叠货盘,焊接,给汽车喷漆等等,对于简单运动,比如机器爪子在轨道上来回移动,可以指示它移动到特定位置,它会一直朝那个方向移动,直到到达,然后停下来,这种行为可以用简单控制回路做。
首先,判断机器人的位置,我们到了吗?没有。那么继续前进。
再次判断位置,我们到了吗?没有,所以继续前进。
我们到了吗?是的!现在可以停下来了。
因为我们在不断缩小当前位置和目标位置的距离,这个控制回路更准确的叫"负反馈回路"。
负反馈回路有三个重要部分,首先是一个 传感器
,可以测量现实中的东西,比如水压,马达位置,气温,或任何你想控制的东西,根据传感器,计算和目标值相差多大,得到一个 "错误" ,然后 控制器
会处理这个"错误",决定怎么减小错误,然后用泵,电机,加热元件,或其他物理组件来做出动作。
在严格控制的环境中,这种简单控制回路也够用了,但在很多现实应用中,情况复杂得多,假设爪子很重,哪怕控制回路叫停了, 惯性 让爪子超过了预期位置,然后控制回路又开始运行,叫爪子移动回去,一个糟糕的控制回路可能会让爪子不断来回移动,甚至永远循环。
更糟糕的是,现实世界中机器人会受到各种 外力 影响,比如摩擦力,风,等等,为了处理这些外力,我们需要更复杂的控制逻辑。
比例-积分-微分控制器
一个使用广泛的机制,有控制回路和反馈机制,叫 比例-积分-微分控制器
(proportional–integral–derivative controller),这个有点绕口,所以一般简称 PID控制器 。
它以前是机械设备,现在全是 纯软件 了。
想象有一个机器人,端咖啡给客人,设计目标是每秒两米的速度在顾客间穿行,这个速度是理想速度,安全又合适。
当然,环境是会变化的,有时候有风,有时候有上坡下坡,以及其他影响机器人速度的因素。
所以,给马达的动力要加大或减少,以保持目标速度,用机器人的速度传感器,我们可以把当前速度和目标速度画张图,PID 控制器
根据这些数据,算出 3 个值。
首先是 比例值
,就是 实际值
和 理想值
差多少,实际值
可能有一定滞后,或者是实时的,之前的简单控制回路,用的就是这个值。
实际值
和 理想值
的差距越大,就越用力,换句话说,它是 比例控制 的。
接下来,算 积分值
,就是一段时间内误差的总和,比如最近几秒,帮助弥补误差,比如上坡时可能就会产生误差,如果这个值很大,说明比例控制不够,要继续用力前进。
最后有 导数值
,是期望值与实际值之间的变化率,有助于解决未来可能出现的错误,有时也叫 预期控制 ,比如前进的太快,要稍微放松一点,避免冲过头。
这三个值会一起使用,它们有不同权重,然后用来控制系统。
PID 控制器
到处都是,比如汽车里的巡航控制,无人机调整螺旋桨速度,以保持水平,以及一些更奇怪的机器人,比如这个用球来平衡和移动的机器人。
高级机器人
更高级的机器人一般需要多个控制回路同时运行,来保持机器人平衡,调整肢体位置,等等。
之前说过,控制回路负责把机器人的属性(比如当前位置)变成期望值,你可能好奇这些值是哪里来的,这是更高层 软件 的责任。
软件负责做出计划并让机器人执行动作,比如制定一条路线来绕过障碍物,或者把任务分成一步步,比如把拿起一个球,分解成一个个简单连续动作,用这些技术,机器人已经取得不少令人印象深刻的成就。
它们潜到了海洋最深处,在火星上跑了十几年。
但有趣的是,许多对人类来说很简单的任务,对机器人很困难,比如两条腿走路,开门,拿东西时不要捏碎了,或是穿T恤,或是摸狗,这些你可能想都不用想,但有超级计算机能力的机器人却做不到。
机器人研究领域在全力解决这些问题,我们聊过的 人工智能 最有可能解决这些问题。
例如,谷歌在进行一项实验,让一堆机器人手臂把各种东西,从一个盒子拿到另一个盒子,不断试错学习,经过数千小时的练习,机器人把错误率降低了一半。
不像人类,机器人可以 24 小时全天运行,而且多个手臂同时练习,所以机器人擅长抓东西只是时间问题,但现在,小婴儿都比机器人更会抓东西。
近年最大的突破之一是无人驾驶汽车,如果你仔细想想,汽车没几个输入,只是加速减速,左转右转。
难的问题是判断车道,理解路标,预测车流,车流中穿行,留心行人和骑自行车的,以及各种障碍。
车上布满了 传感器 ,无人驾驶汽车非常依赖 计算机视觉算法 。
现在也开始出现类人机器人,外貌和行为像人类的机器人,不过现在两个目标都没接近(外貌和行为),因为看起来一般怪怪的,行为也怪怪的。
无论如何,对机器人研究者来说,把各种技术结合起来,比如人工智能,计算机视觉和自然语言处理来让机器人越来越像人,是个诱人的目标,在未来好一段时间里,和人类一样的机器人依然只能存在科幻小说里。
军队也对机器人很有兴趣,因为机器人可以替换,而且力量,耐力,注意力,准确性可以远超人类。
拆弹机器人和无人侦察机如今很常见,但完全自主决定,全副武装的机器人也在慢慢出现,比如韩国的三星SGR-A1哨兵炮。
有智力并且可以杀人的机器人叫 致命自主武器
(lethal autonomous weapons),这种武器是复杂又棘手的问题。
毫无疑问,它们可以把士兵从战场带离挽救生命,甚至阻止战争的发生,值得注意的是人们对炸药和核弹也说过一样的话。
机器人三定律
另一方面,我们可能会不小心创造出,无情又高效的杀人机器,没有人类般的判断力和同情心,战争的硝烟会变得更加黑暗和复杂,机器人会接受命令并高效执行,但有时人类的命令是错的。
而且随着机器人技术的进步,两边的辩论会越来越激烈,这也是个老话题了。
科幻作家 艾萨克·阿西莫夫 早预见了这种危险,他在 1942 年短篇小说 Runaround 中写了 机器人三定律
,之后又加了 定律0
。
第零定律:机器人必须保护人类的整体利益不受伤害,其它三条定律都是在这一前提下才能成立 。
第一定律:机器人不得伤害人类个体,或者目睹人类个体将遭受危险而袖手不管。
第二定律:机器人必须服从人给予它的命令,当该命令与第一定律冲突时例外。
第三定律:机器人在不违反第一、第二定律的情况下要尽可能保护自己的生存。
简单说这些定律指导机器人的行为准则或者说道德指南,让机器人不要伤害,特别是不要伤害人类。
这些规则实践起来相当不足,并且有很多模糊的地方,但 阿西莫夫三定律
激发了大量科幻小说讨论和学术讨论,如今有专门讨论机器人伦理的会议。
重要的是,阿西莫夫写这些虚构规则是为了反对 机器人都很邪恶
这种常见描述,他童年读的小说里,这样的场景很常见,机器人脱离控制,然后伤害甚至毁灭创造者,阿西莫夫认为机器人有用,可靠,甚至可以让人喜爱。
我们讨论过的许多技术,有好的一面也有坏的一面,我们要认真思考计算机的潜力和危害,来改善这个世界。