拉斯·泰德雷克:欠驱动机器人、控制、动力学与触觉
Russ Tedrake: Underactuated Robotics, Control, Dynamics and Touch
机器人学家谈欠驱动系统的控制理论、动力学建模与优化,以及触觉感知对机器操作的意义。
一台没有电机、没有电池、没有控制器的机器人,被放到一个小斜坡顶端,轻轻一推,它自己就走了下去,膝盖自然弯曲,手臂跟着摆动,姿态松弛得像散步。
那是 2001 年前后,Honda 的 Asimo 刚刚亮相,代表着当时双足机器人的最高水平。Asimo 屈着膝盖、小心翼翼地挪步,像踩在滚烫的煤堆上。而康奈尔那台纯靠重力驱动的机器,看起来比它更像人在走路。
MIT 教授拉斯·泰德雷克(Russ Tedrake)在 Lex Fridman 的播客里说,这是他见过最美的机器人运动。泰德雷克研究机器人控制,同时在丰田研究院(Toyota Research Institute,TRI)担任机器人研究副总裁。他见过的机器人不少,但真正让他念念不忘的,是不带动力、不含算法的运动。
把轮子拆成腿,物理学自己就会走路
泰德雷克描述这个系统时,先从一个最简单的模型讲起:一个没有轮缘的自行车轮,只剩下一圈辐条。推它一把,它照样往坡下滚,但每根辐条撞地都会损失一点能量,每一次“迈步”又补回一点,两者恰好平衡,它就进入一个稳定的周期性运动。太快了会慢下来,太慢了会加速。
接着把多余的辐条去掉,中间加一个铰链,就成了两条腿,这就是所谓的“指南针式”行走器。再往后,史蒂夫·柯林斯(Steve Collins)和安迪·鲁伊纳(Andy Ruina)在康奈尔加上了膝盖、手臂和躯干,做出了三维版本。推一把,它能顺着斜坡走出一段接近散步的姿态,全部动力来自重力。
值得看的其实是设计过程本身。泰德雷克说,那件事处在艺术和科学的边界上。系统没有被精确建模,也谈不上精确控制,膝盖上的吸盘要在正确的时间吸住、又在正确的时间松开,靠的全是一点点调出来的手感。没有人写下最优控制律,可它走起来了,而且走得优雅。
这件事留下了一个路径的证明。控制一个复杂系统,不用把世界施加给你的力全部抵消掉,再强加一套自己能看懂的动力学。你可以放手,让物理去做大部分工作,自己只管在合适的时候补一点能量。
“也许我们不该把世界给我们的力换成我们自己想要的力,而应该让世界推着我们走,顺着它走。”(Russ Tedrake)
Asimo 和 Atlas 走的是相反方向。泰德雷克说得很直接,那些机器人能效不高,因为它们要靠电机不断抵消重力,把复杂的动力学抹平,换成可以数学分析的简单形式。这套方法能奏效,代价是大量的能量消耗,以及一种永远需要“对抗世界”的紧张感。
一条死鱼为什么会逆流而上
说到最高效的运动,泰德雷克提到了哈佛和 MIT 的乔治·劳德(George Lauder)做过的一系列实验。他们研究彩虹鳟鱼在产卵季逆流时的行为。这些鱼常常待在石头后面,看起来是在偷懒,但也许那里有能量上的玄机。
研究者在鱼道里放了一个圆柱体,后面形成卡门涡街,也就是一连串脱落的涡。然后放一条活鱼在涡流后面,从上方看它的步态。不在石头后面时,鱼有固定的摆动节奏,就像看人走路能认出人一样。一旦进入涡流区,它的节奏变了,像是在涡与涡之间“冲浪”。
但活鱼说明不了问题,因为这可能是大脑在控制。于是他们把一条死鱼绑在石头上,防止它被冲进格栅。按常理,死鱼只会随波逐流地漂。视频里发生的事情是,那条死鱼开始逆流游动。没有大脑,没有电机,没有控制,只是鱼身的力学结构与涡街发生了共振。
泰德雷克说这是他见过最好的实验之一。它把控制与力学那条模糊的界线整个撕开了。
控制与力学之间,界线没有想象中清楚
他不太愿意把两者分开定义。机器人有电机、有连杆,电机断电的时候,机器仍然有被动动力学,重力还在工作。放上弹簧、加上阻尼器,那是力学。肌肉和肌腱本身就是弹簧和阻尼器。真正做事的是那些主动输出能量、改变系统状态的部分,控制器负责的是“给电机发指令”这件事。
问题在于,这条线比教科书上画的模糊得多。他提到自己二十多岁时失去了一根手指,第五掌骨。平时不觉得,但开罐子、走路不小心撞到东西的时候才发现它有多重要。原本承受撞击的是第五掌骨,现在换第四掌骨挨撞,起初很疼。几年过去,骨头自己重塑了,几何形状变了,力学结构适应了新的受力情况。
适应和进化也发生在身体上,大脑只占了其中一部分。
进化论的论证,大多是坏论证
Lex 问了一个流行的说法:人类直立行走,是为了把食物带回部落分享。泰德雷克对这类论证持保留态度。他说这类故事大多很糟糕,因为我们手里的信息太少了。
真正决定一个物种能否存活的,常常是冰期来临时谁刚好站在了合适的位置,谁刚好找到了一种能撑过去的食物。丰年时谁吃得更好,放到这个尺度上几乎不重要。几百万个变量同时在起作用,事后挑出一个讲成因果链,很容易,也很不可靠。历史经常被几件看似毫无意义的小事推动,比如有人因为睡错了人被石头砸了脑袋,然后部落开战。
他举了自己的例子:现在有一群人用进化论论证该吃什么,说祖先吃什么我们就该吃什么。泰德雷克自己长期只吃肉,他母亲觉得这非常不健康。他说这些论证听听就好,他吃肉只是因为感觉好。
同一套怀疑也适用于双足机器人。他说自己研究双足行走,主要原因是它难,它给控制理论提出了真问题,而不是因为他相信人形是未来。有人论证世界是为人类形体建造的,想让机器人在今天的世界里工作,人形是个好起点。他觉得这个论证有道理,但长期看,我们大概会为机器人重新设计环境,到那时候这个理由就不成立了。
赤脚跑 12 英里上下班
泰德雷克住在离 MIT 大约 12 英里的地方。他常年赤脚或者穿极简鞋跑步通勤,有时候跑过去骑车回来,有时候骑车过去跑回来。他说自己跑过好几次往返,加起来接近一个马拉松。
他起初并不是跑者。是先接触了赤脚跑步的理论,才开始跑长距离,所以不需要“纠正”什么。他参加过动态行走会议(Dynamic Walking Conference),那是个把生物力学界和行走机器人界放在一起的会议。他在那里听了很多关于赤脚跑步力学的报告,后来才读了那本畅销书《天生就会跑》。
他给的理由很朴素:穿鞋跑 10 英里,感觉挺好,晚上回家才发现膝盖疼,说明途中做错了什么,但身体当时没告诉你。赤脚跑的话,落地一重就疼,立刻就知道,步态会当场调整,很多时候是下意识的。他现在穿鞋跑反而会不自觉地用他认为更差的落地方式。
他要的是跑到很老还能跑,比赛名次从来不在目标里。所以用短期的不适换长期的保护,在他看来是划算的交易。被石头划一下,一个星期就好了;膝盖废了,就永远告别跑步。
关于入门,他给的建议只有两个字:慢。最容易受伤的恰恰是那些本来就能跑很远很快的人,脱了鞋还想按原来的配速和距离来,立刻就伤了。他自己运气好,刚开始根本跑不远,身体强制他循序渐进。他也会带一双极简鞋或者跑步凉鞋,不舒服就穿上。
Lex 分享了自己的经验:读完书之后发现自己的步态完全错了,步子太大,脚跟重重砸地。后来改成很小的步幅,跟着每分钟 180 拍的歌练,练了很久。他觉得赤脚是最彻底的办法,但调整步频也能解决大部分问题。
泰德雷克补充说,脚上的肌肉和感受器数量跟手差不多,我们却把它塞进一个坚硬的大壳子里。赤脚带来的是更多的本体感觉,你对动作的偏差更敏感。至于路上的石头和玻璃,他说脚会变厚,现在几乎什么路面都能跑。
通勤是一天里最重要的思考时间
12 英里的通勤,他试过各种方式:跑步、骑车、轮滑,最近喜欢划船走查尔斯河。有人问他怎么舍得花这么多时间在路上,他的回答是,那段时间是用来思考和消化的。早上做完一堆工作,需要让它沉淀一下才好去开会;晚上回家路上,再把一天的东西放下。
Lex 追问:如果实验室的机器人正在崩溃,一小时后有个关键会议,这种紧迫感和“顺其自然”的禅意之间怎么平衡?
泰德雷克笑了。他说自己不是快跑者,最快的配速大概是赶托儿所关门的时候,迟到要按分钟罚款。他承认工作是围绕通勤安排的,而且他很少觉得两者真的冲突,因为那段时间让他工作得更好。
他不追求痛苦。Lex 提到大卫·戈金斯(David Goggins)那种刻意选择受苦的路线,泰德雷克说自己恰恰相反:走完应该比出发时感觉更好。疫情让他失去了通勤,他就带着妻子和孩子在城里走,核心是离开键盘一段时间,让东西沉淀。
机器人学里最美的想法,是清晰的思考
被问到机器人学里最美的想法,泰德雷克没有讲某个算法或定理。他说自己有幸和一些真正出色的控制理论家相处,那种把极其复杂、看起来一团乱麻的问题,用数学语言说清楚的能力,对他影响极大。
他讲了几周前的一天:白天开了一整天的线上机器人会议,聊了很多好想法,感觉很好。下午晚些时候,他和一位喜欢的控制理论家开会。两个人从“如果……会怎样”的抽象讨论,慢慢收敛到极其精确的陈述。那些陈述描述的系统,并不比他真正关心的系统简单多少,抽象程度却高得多。这种反差让他印象很深。
他担心的是,人们低估了清晰思考的力量。深度学习非常了不起,他自己也用得很重,但它让很多事情变得太容易做成了,以至于不需要那么批判性地思考。作为教育者,他的挑战是让学生仍然尝到严谨思考的味道。
他举了个具体边界:矩阵求逆。这件事我们很清楚怎么做,哪怕矩阵很大,数学上也很成熟。你可以训练一个深度网络来做,但不该这么做。区分“该用学习”和“不该用学习”,靠的就是对方法适用范围和局限的理解。
Lex 追问:数学建模时,我们是不是总把系统简化成玩具?泰德雷克说那恰恰是好东西。他反问道:如果牛顿和伽利略手上有深度学习,做了一堆实验,然后给世界一个神经网络说“问题解决了”,我们今天会在哪里?
他认为我们不会走得像现在这么远。对现象给出最简单的解释,这件事本身有价值。他不怀疑神经网络能拟合出薛定谔方程那样的东西,但他希望再出一个牛顿,因为更复杂的任务还需要更简单的模型。
他补充了一个技术上的转折:最简单的解释不等于低维。控制论里找系统的最小状态维数实现,是标准做法,但他觉得状态维数不是复杂度的正确度量。
他举了自己最关心的例子:机器人手抓取物体。写运动方程时,方程看起来极其复杂,让方程变复杂的,主要是接触的开启与关闭,手腾空运动时的动力学倒在其次。手在空中时,高维但简单的描述完全够用。一旦开始接触,如果为手上的每个多边形和物体的每个多边形、每种接触与否的组合分别写一套动力学,组合数会爆炸。他需要一种更接近直觉物理的方式来概括这件事。他对此很乐观,认为机器学习会带我们到那里。
DARPA 机器人挑战赛:从虚拟赛场到一台 400 磅的机器
DARPA 机器人挑战赛(DARPA Robotics Challenge,DRC)紧跟在自动驾驶的 Grand Challenge 和 Urban Challenge 之后。提出这个构想的是当时在 DARPA 的吉尔·普拉特(Gill Pratt),背景是福岛核事故。如果当时有可以直接送进去的机器人,灾难也许能被控制住;事故之后,也有很多次人们希望有机器人能进去。
比赛有两条赛道。硬件队带自己的机器人,软件队则要先在虚拟赛场(Virtual Robotics Challenge)中胜出,赢得使用波士顿动力 Atlas 的资格。Atlas 是 400 磅的人形机器,昂贵,外形也相当威猛。
泰德雷克说,当时并不完全清楚自己签下的是什么。任务书里既要走过复杂地形,又要转阀门、拿电钻、在墙上钻孔。比赛可以偏重行走和平衡,也可以偏重感知和自主规划,最后的结果是,复杂地形上的移动占了很大比重。
自主程度始终是核心争议。设计意图是半自主:网络降级的情况下,操作员只能传几个比特的指令,机器人得自己完成大部分动作。组织者的意图很清楚,就是要区分“点几下说去那里做这个”的队伍和“每一步都要人踩”的队伍。
他把这看作职业生涯里的决定性经历。他刚拿到终身教职,本来可以休一个轻松恢复的学术假。他选择把假期的后半段投进去。当时团队已经有一批自己很满意的算法,想看看能推到多远,也想借机做一次真正的软件工程。
比赛前三天,仿真器突然变快了
虚拟赛用 Gazebo 在云端跑仿真。组织方希望物理仿真按实时速率运行,因为有人类操作环节,帧率稳定很重要。但要把那些复杂场景实时跑起来非常难,直到比赛前几天,仿真器还没完全达到实时。
这对泰德雷克反而是好事。他的控制器在解一个相当大的优化问题,也跑不到实时,双方都在零点七倍速左右,正好跟得上。
然后邮件来了:好消息,仿真器提速了,现在是一倍速。
他说自己当时就想,这下麻烦了。控制器的优化解不出来,机器人就会摔倒,感知团队做得再好也没用。他当天晚上就去找当时还在实验室的弗兰克·皮门塔(Frank Pimenta),说要让二次规划求解器变快,不是快一点,是快很多。两个人那晚一起写了一个新求解器。
他们没有简化问题。做法是热启动:每个时间步都在解一个大优化问题,但如果跑得够快,这一步的解和上一步很接近。他们写了一个很轻、很快的封装层,先检查附近有没有现成的解能让机器人稳住,如果没有,再退回完整求解器。
风险在于,这个封装层没法真正测试。因为一旦退回原求解器,就意味着可能跟不上,机器人会当场倒下去。他们是在悬崖边上跑完了那场比赛。
输了比赛,学到的是测试
被问到最大的收获,泰德雷克说 DARPA 挑战赛彻底改变了他对复杂系统鲁棒性的看法。
比赛前几天,他们看到机器人以一种从未有过的方式摔倒。整支队伍醒着的每一分钟都在跑这台机器,但它还是摔了,因为他们没有足够的小时数去测试。他当时的结论是:某些东西必须改变。
赢的那支队伍有两台机器人。他们不仅工程做得好,测试的频率和纪律也是别人跟不上的。
测试是什么样子?他讲了两个极端。一端是单元测试,写一个函数,就写一个测试检查输入输出。另一端是集成测试,把整个系统跑起来,验证所有你以为正确的部分一起工作。系统级测试的规格很难写,尤其是人形机器人这种复杂度。真实机器人上更难,因为同一个实验无法跑两次。你看到一次失败,只能希望日志里抓到了线索,但大概率永远无法精确复现。
现在的做法基本是蒙特卡洛:尽可能多地跑实验,把环境设置成让担心的事情尽量频繁地发生。本质上还是在依赖某种随机搜索。他说也许只能这样,因为真正会伤到你的,往往是那些极其细微、根本没法放回仿真里的情况。
从车里爬出来,为什么那么难
DRC 里最难的任务,泰德雷克认为是让机器人从 Polaris 车里出来。开车本身相对容易。问题在于,组织方给了一台 400 磅的人形机器和一辆小型的 Polaris,机器人根本塞不进去。脚没法放在转向柱下面,只能一条腿跨在副驾、一条腿跨在主驾,用左手开车。
下车更难。没有车门,坐在极其局促的位置上,要从蹲姿站起来。
Lex 说看完那些视频之后,他对上下车这件事有了全新的敬畏,尤其受伤的时候。泰德雷克认同,那是个真正的控制难题。
他们准备了类似 NASA 发射前检查清单的东西。比赛第一天,一项项往下走。其中一项是要关掉控制左脚的驱动器,那个控制器负责踩油门。然后打开平衡控制器。第一天神经绷得太紧,有人漏掉了那个勾选框。
机器人在一个非常别扭的姿势里,想把大长腿从车侧挪出来。那个以为还在开车的控制器,命令左脚做了一个动作。问题在于,他们没有空间恢复。平时如果机器人被十英尺长的杆子捅一下,它也能恢复过来,靠的是迈一步之类的次级平衡机制。可这一次这些机制全都失效了,因为在车里,没有地方可以迈。
他们只能退到最低层的反射。泰德雷克说,单纯脚撞到座位或者地板,大概还能救回来。真正致命的是接下来那一下:机器人被晃动之后,尾椎骨离座位本来只差一点点,撞上了座位,另一只脚同时微微离地。
没有任何一份计划写过:屁股坐在座位上、双脚悬空的时候该怎么办。
一旦脱离剧本,事情就开始朝着不可预测的方向滚。连状态估计系统也不知道发生了什么。那套系统收集所有传感器数据、推断机器人当前的状态,它不认识这个姿势,于是给出的预测全是错的。机器人剧烈地晃了一下,从车里摔了出去,脸朝下,落在了终点区域里面。
泰德雷克说,严格讲他们拿到了离开车辆这一项的分数。全场哄笑。
机器人最怕的事情,是碰到世界
Lex 顺势问:Atlas 有没有可能学会屁股着地、双脚悬空时该怎么处理?
泰德雷克说这正是大挑战之一。波士顿动力和全世界做腿式机器人的团队,绝大多数擅长的是脚与地面接触的情况,而且通常还是点足,脚底就是几个小球。一旦肘部撞到墙上,情况就完全不同了。成熟的方案会有层层机制,防止控制器做出蠢事,但人类能利用偶发接触来完成任务。你推我一把,我可能伸手扶一下,制造一个全新的接触点。四足机器人会用脚做这件事,可整个机器人学界基本害怕身体其他部位发生接触。
他说这挺荒谬的:有一整个运动规划的分支叫无碰撞运动规划,我们写出非常复杂的算法,就是为了让机器人绕开世界,确保不碰到任何东西。
恐惧的根源是接触本身被当成难题,控制和感知两边都难。
摔跤是接触的艺术,机器人还差得远
Lex 练柔术,从小摔跤。他问那个所有人都要问的问题:什么时候能看到机器人打赢人类的摔跤比赛?
泰德雷克先承认这个问题的难度。摔跤里还有对手,是个博弈论问题,动态且双向。但如果先把对手拿掉,只看“如何推理接触”,他认为有理由乐观,只是目前最好的理解仍然相当有限。
他最近越来越关注操作(manipulation),那里的接触更丰富。深度学习策略已经有了一些令人印象深刻的例子,能在接触中做出看起来不错的行为;也有模型能预测物体在接触过程中会发生什么。但“根据这些模型快速做出决策”这件事,仍然没有解决。
他补了一句:人类自己大概也不是在实时求解最优接触序列。你可能有一个慢速的版本,学会了基本技能,然后把细节磨得更细。指望机器人当场把人形模型拿来做最优规划,也许这个问题永远不会被解决。
Lex 说,格斗里最迷人的地方是熟练之后的松弛感。你能把很大的重量甩出去,几乎不费力。学习的过程他很清楚,一部分是理智上理解,更大一部分是身体自己在学,像本能一样长出来。他不确定那是不是等价于训练一个深度强化学习控制器,感觉更像是分布式学习。
泰德雷克接着说,还有层级和组合,这些是现在的系统没捕捉好的。底层是反射,顶层是能规划一次远途旅行的那种系统,你不可能为每个目的地都准备一条策略,中间那一段最神奇。
他提到乔什·特南鲍姆(Josh Tenenbaum)常玩的一个游戏:在桌上摆一堆杂物,挑三样,比如电话、鞋、纸巾盒。先用右手拿起第一个,再用左手拿起第二个,然后用这两样当工具,把第三样夹起来。他说自己从没用鞋和矿泉水瓶夹过电话,第一次做会慢一点,但多数时候能想出办法。
这种灵活性,在熟悉的领域调用练熟的低层控制器,在不熟悉的时候调用模型来规划,才是真正了不起的地方。他还注意到,随着专长提升,人对自身的感知也在变精细。刚学时你只有一个粗糙的力学模型,练久了,你会意识到以前根本没注意到的肌肉和平衡要素。
2050 年的机器人足球队,还是 UFC 冠军
RoboCup 有个著名的目标:2050 年,机器人足球队要赢人类世界冠军。
Lex 问:我们会先看到机器人世界杯冠军,还是先看到机器人在 UFC 里夺冠?
泰德雷克说,很难说哪个技术更难,更重要的可能是哪个组织先开始。RoboCup 已经有二十多年积累,有历史、有社群、有不断迭代的人形机器人,势头在那儿。想做机器人综合格斗,最好现在就开始办组织。
他还指出,真要让机器人踢足球,正确的做法是让它踢得跟人完全不一样。它会利用规则漏洞,利用超强的执行器和超低延迟的反馈回路,结果不会是你期待的那场比赛。DRC 已经证明了这一点:你很难写出一套没人能钻空子的规则。
至于格斗,他开玩笑说这有点奇怪,因为机器人的力量远比人大。Atlas 踢你小腿一下,比赛就结束了。
《黑镜》之后,人们看机器狗的眼神变了
Lex 提到《黑镜》里那集机器狗,带枪,会杀人。
泰德雷克说他没看过那集,但他知道它播出的时间,因为那件事他记得很清楚。某个普通的周一,他给 MIT 的一群教授做报告,讲机器人现状,放了波士顿动力四足机器人 Spot 早期版本的一段视频。房间里出现了一片惊恐的表情。
他问怎么回事,他放这类视频放过很多次了。后来才明白,那集《黑镜》改变了人们看他这些视频的方式。
他说自己不是心理学家,不清楚人们为什么这么反应。但机器人研究者有责任去思考机器人如何影响社会。他也坦承,自己以前开玩笑说,遇到机器人追你,跑五分钟它的电池就没了;现在不行了,电池能撑一个多小时。
他觉得恐惧有很大一部分是文化性的。他那代美国人看着《终结者》长大,同一时期在日本长大的人,看的可能是《铁臂阿童木》,对机器人的反应完全不同。这到底是人类对金属造物的本能恐惧,还是我们自己用科幻故事喂养出来的,他说不清楚。
至于那些觉得 Spot 上街巡逻就是反乌托邦的人,他没有简单否定。他说这种担忧是合理的,因为未来本身充满不确定性。但同时,技术上我们远没到那一步。技术是复杂的,可以被用在很多方向上;纯软件的攻击也能造成巨大破坏,也许已经发生过了;轮式机器人、无人机同样可以被滥用。
他给自己的定位是技术乐观主义者:我们会继续创造,世界会变,会引入新问题,我们会搞砸一些事情,但他相信我们也会用新的发明把自己从这些麻烦里救出来。
他还补了一层解释:人们看到像动物的机器人,会下意识赋予它自我意识或心智,而它并没有。恐惧的一部分来自这种过度拟人化。
关于 AI 的生存性风险,他更认同罗德尼·布鲁克斯(Rod Brooks)的说法:不会出现“机器人 vs 人类”的阵营对立,因为我们会变成“机器人化的人”。我们已经有智能手机,有些人身上已经植入了技术,助听器、起搏器、假肢。这个趋势大概率会继续。等到脑机接口成熟,“外面那个机器人”这个说法本身就站不住了。
所以从这个角度讲,智能手机已经是我们该警惕的那个机器人了。信息误导、注意力操控,这些问题全是人的问题。
洗碗机不算机器人,这是机器人学的诅咒
Lex 问了一个听起来很傻的问题:什么是机器人?
泰德雷克给了标准定义:把计算能力和做功能力结合起来。但他随即指出机器人学的一个诅咒:一旦某样东西真正好用了,我们就不再叫它机器人。家里的洗碗机结构精巧、算力不弱、里面有好几块芯片在做很复杂的事,但没人把它当机器人。
结果是,机器人学永远要去解决下一个问题,享受不到过去的成功。工厂里那些成熟的工业机器人极其成功,可你要问机器人学的成功案例,它们不会第一时间跳进脑子里。
他半开玩笑地给了个定义:机器人就是那种经常失败的自动化系统。
从控制的角度,机器人分很多类。柜台上跟你互动但不碰你的机器人、自动驾驶汽车、无人机、会走路会用手抓东西的机器人,需要的控制方法完全不同。他自己一直偏爱那些与世界有更多动态交互的场景,行走和操作。而让它们区别于经典控制问题的核心,是接触。
经典控制有太多辉煌战绩:稳定本来被动不稳定的战斗机、电网、航天器着陆。这些系统至少还有个奢侈之处,变化相对连续。给副翼一个小的指令变化,航迹的变化也小。于是你可以在局部把它线性化,搬出线性代数和它的各种推广。
接触不一样。机器人开始碰触世界、或者断开接触的那一瞬间,是不连续的;接触的方式、接触
接触不一样。机器人开始碰触世界、或者断开接触的那一瞬间,是不连续的;接触的方式、接触的顺序,也会以复杂的方式改变结果。
四条腿的桌子,物理定律答不上来
泰德雷克用一张桌子把问题讲得很清楚。
三条腿的凳子,每条腿只在一个点上接触地面。按高中物理的受力分析,桌子静止,说明合力为零,重力被地面的支持力抵消;桌子不转,说明力矩也平衡。这两个条件恰好唯一确定了三条腿上的法向力,解是唯一的。
四条腿的桌子,如果四条腿被加工得完全一样高,桌子放稳不动,守恒定律并不能唯一确定四个支持力。有无数种组合都能让桌子不动。
本来这也没关系,随便挑一个解就行。可一旦引入摩擦就出问题了。标准的库仑摩擦模型说,最大静摩擦力正比于法向力。法向力越小,越容易打滑;法向力越大,越难推动。现在你不知道四条腿各自的法向力,你推这张桌子,就不知道它会往哪边滑,可能往左、可能往右、也可能直着走。
刚体接触的假设,会带来这类悖论。写仿真器、写控制器都会撞上。软接触在数值上可能更难,所以很多仿真器仍然采用刚体假设,最好的那些则两种都做,或者做混合。
后果是,我们没法给操作任务写出像战斗机那样漂亮的控制器。在接触发生的那一刻,方程不告诉你接下来会发生什么。
标准处理方式是接受这件事,把微分方程换成微分包含,一个集合值的方程:我在这个构型、受这些力,可能发生的结果是一个集合。真正的不光滑发生在建立或断开接触的瞬间,以及从静摩擦切换到滑动的那一下,速度会出现不连续的变化。
面对不确定性,控制理论有一个答案叫鲁棒控制:设计一个控制器,不管世界给出哪种可能,都能完成任务。桌子可能想往左滑也可能想往右滑,控制器多推一点、少推一点,总能把它推到你想要的方向。代价是控制系统的负担更重。
更麻烦的是组合爆炸。每一种接触构型,粘着还是滑动、身体哪些部位在接触,在方程里都是一个不同的系统。要分别推理,组合数迅速失控。他说自己没有足够的时间去计算人形机器人所有可能的接触构型,而一个人活了这么多年,也从未遍历过自己所有的状态。所以“枚举所有接触构型”这条路,从一开始就不该走。
举个最简单的例子:一只平底脚。脚跟着地、脚尖着地,这两个接触点就能组合出四种不同的接触构型。如果脚底还有凸起,还会更细。左脚大脚趾比右脚早一点点触地,情况又变了。换成灵巧的手去抓一个矿泉水瓶,如果要枚举手指接触瓶子的每一种顺序,那就彻底走不下去了。行走之所以还能用这套办法,是因为脚接触地面的点很少;灵巧手至今没走通。
仿真不准不是借口,工程投入不够才是
很多人说机器人学受限于接触仿真不准确。泰德雷克认为这个说法部分成立,但原因被误解了。我们其实知道控制方程是什么,虽然有不唯一这类小毛病,但本可以精确地仿真。问题在于写一个真正好的仿真器,需要一个专业工程团队投入大量工作。开源社区很了不起,但持续维护一个成熟仿真器,是另一回事。
这就是 Drake 的由来。他不太愿意把 Drake 只叫仿真器,因为他们的控制器、部分感知系统也是在 Drake 里写的,规划和优化也在里面。
Drake 大致有三块。第一块是优化库,在 C++ 和 Python 里给商业求解器加一层抽象,你可以写线性规划、二次规划、二阶锥规划、混合整数规划,它负责把问题整理好、送给合适的求解器。第二块是系统建模语言,有点像 LabVIEW 或 Simulink,可以用模块图搭出复杂系统;跟 ROS 的区别在于,写一个系统时你得把状态和参数显式声明出来。前期多花一点力气,换来的是可以在单进程里跑全部东西,可以针对系统做控制设计,可以回放和重放仿真。
这个设计受 Atlas 的复杂度刺激。ROS 让快速拼装原型变得很容易,这点非常好,但他认为一个由各种零件拼起来的、像土豆先生一样随意拼装的软件栈,很难被清晰地思考。你对每个部件多要求一点,才能理解它们怎么工作,才能验证,才能在上面做学习。
第三块是物理引擎,一堆多体方程,还有渲染等等。他说物理这一块是整个项目里最特别的,团队做了大量工程,保证方程写得正确。各种翻滚的卫星、旋转的陀螺,凡是能想到的测试用例都测过。他们还在接触仿真的基本方法上做改进。
洗碗机考验的是验证,抓取早就不是瓶颈
丰田研究院在 Drake 上投了重资,迈克尔·舍曼(Michael Sherman)带了一支动力学专家团队。还有一支做操作的团队,专门研究装洗碗机这类任务,用它来啃那些真正难的边角问题。
泰德雷克说得很清楚:如果只关心把水槽里的盘子拿起来,他们完全可以不写任何仿真,直接写一个控制器,然后收工。他们真正想弄明白的是,通往一个商用产品的路径是什么:在任何人的厨房里、对任何一只盘子,都有足够的把握完成任务。
这个系统里有深度学习的感知在环、有复杂动力学在环、有控制器、有规划器。问题是怎么把这一整套复杂度塞进工程纪律和验证确认流程,直到有足够的信心部署。
DRC 让他明白,最后这段不是可以甩给别人去硬化的。在验证和测试阶段把最后那道缝补上,本身就是根本性的挑战,甚至可能改变我们写系统的方式。
他抛出一串没有满意答案的问题:机器人跑了大量测试,打碎了一只盘子,你怎么记录这件事?真实机器人上的失败无法复现,你需不需要把这个一次性的失败搬回仿真里,研究它、改控制器、确保不再发生?还是只要把它加进分布里,相信平均意义上会覆盖到这种情况?
黑天鹅生成器
怎么高效地找到边角情况?泰德雷克说必须在这件事上做得更好。
控制理论讲了四十年的主动实验设计,今天人们管它叫好奇心,本质是探索与利用的权衡,但主动实验设计更具体:先刻画系统里的不确定性,然后设计一个实验,让这个实验提供最多的信息来削减不确定性。如果你想知道某个参数,那么能最优地学到这个参数的轨迹是什么?
把这件事扩展到有深度网络在环、有规划在环的系统上,很难。他们和马科·凯利(Marco Kelly)等人做过一些证伪算法(falsification),做稀有事件仿真,在仿真器里反复锤打。只要仿真器足够可信,你可以选择花大量时间,也可以写出好算法,把大部分时间花在边角上。
想象你要做自动驾驶,那就把车一直放在新德里市中心跑。这就是加速测试。采样策略要能找出控制器表现糟糕的区域,然后在那附近大量生成样本。问题在于,可能出错的地方太多了,空间非常大,这类算法很难写。
他们内部管这个叫“黑天鹅生成器”。因为你要的是稀有事件里影响最巨大的那些。
Lex 把话题拉到人身上:人类其实也一直在问“最坏能坏到什么程度”,我们做得并不好。好在这个星球上有七十五亿人,很多人会把自己干的蠢事写成博客,我们因此能以分布式的方式学习。
泰德雷克说,这正是 TRI 在推的“车队学习”(fleet learning)。一台人形机器人没有时间遍历自己所有的状态,但这个问题其实不必由一台机器人解决。未来会有大量结构相似、附件相似的机器人,它们的集体数据足够多,计算过程也应该与我们人类不同。
Lex 补了一个乐观的观察:人们其实很喜欢看一个系统在进步。特斯拉车主愿意忍受还很笨的辅助驾驶,因为能感觉到它在学。对家用机器人更是如此,盘子掉地上不会出人命,用户甚至愿意像教小孩一样教它。汽车不一样,车会杀人,所以难度高得多。
家里的机器人,会先以什么形状出现
泰德雷克认为扫地机器人已经在家里跑,Alexa 和 Google Home 已经在厨房台面下,长出胳膊来做事只是时间问题。
他提到丰田的切入点是“原地养老”(aging in place):帮老人留在自己家里,保持活跃、保持社交,提升生活质量。这不一定是第一个最赚钱的市场,但可能是无论如何都必须解决的问题。
Lex 指出其中的张力:老人往往不是对技术最适应的人群。泰德雷克觉得这恰恰有意思,机器人在学习人,人也在学习这个新东西。Lex 补充说,他父母那一代对机器人几乎是一张白纸,没看过《黑镜》,所以反应是“这东西能帮我干什么”,而不是恐惧。
泰德雷克判断,无人机在学术界成熟之后冲出去成了一个产业,自动驾驶正在发生,操作领域会先在物流里落地,家庭紧随其后。这会是一个真正爆发的东西。
把鸡蛋握在手里,比用两根手指捏更安全
回到接触这个话题,Lex 问软体机器人。
泰德雷克说他特别不喜欢机器人害怕全身接触这件事。仔细看机器人真正接触世界的地方,几乎都是软的:指尖有垫,脚底有橡胶。可往上看,整条胳膊是纯铝的。这让撞到桌子的情况变糟,刚体接触的那堆麻烦全都回来了。
软体从根本上改变了接触的力学。点接触变成面接触,可以有扭转摩擦,可以分布载荷。他举了鸡蛋的例子:用两个点去夹鸡蛋,要产生足够大的力托住它,很容易把壳夹碎;如果整个手把鸡蛋包住,力可以分散到整个壳面上,碎的概率就小得多。
软体会不会让问题更难?他说恰恰相反,会改变计算问题本身。我们的数学被刚体偏向太久了。软接触让结果更光滑,小动作不会引发不连续的后果,也不容易有东西瞬间飞出去。
另一个好处是传感。软体天然适合嵌入传感器,测量形变。TRI 有一支团队在做软手,相当于把摄像头藏在皮肤后面,能拿到非常好的触觉信息。这在操作里极其重要:你花了很大力气做头戴式感知,识别出物体,然后伸手去碰,最关键的那一瞬间,你的手正好挡住了所有头戴相机。没有触觉,你在最重要的时刻是瞎的。
欠驱动:为什么你没法直接控制自己的重心
泰德雷克在 MIT 开了一门研究生课,叫欠驱动机器人(Underactuated Robotics),视频都在网上。他开玩笑说第一讲基本就是在解释课程名字里那个词是什么意思,很多人是报名之后才知道的。
欠驱动的定义很简单:一个机械系统有若干个自由度,也有若干个执行器。自由度数和执行器数相等,叫全驱动;少一个,就是欠驱动。
有朋友逗他:如果研究经费再多一点,你会不会去做全驱动机器人?他说不会。世界给我们的就是欠驱动机器人,不管我们喜不喜欢。他自己就是一台欠驱动机器人,虽然有些关节上连着多块肌肉,肌肉数量超过自由度,但有一个自由度他始终无法直接驱动:质心在空间中的位置。跳到空中的时候,没有任何一个电机把他的质心和地面连起来。
被动行走器是这件事的极端形态:把所有电机都拿走,全交给物理。而所有行走机器人都处在这条谱系的中间,你得用一部分关节去推拉那些没有执行器的自由度。
即便双脚着地,限制依然存在。除非脚底有吸盘,否则你没法让质心以超过重力加速度的速度向下加速,因为没有东西能把你往下推。多数时候你可以近似地把它当成全驱动来处理,可一旦迈出一步,就进入了更微妙的领域。想做真正动态的机器人,就得拥抱欠驱动。
操作同样是欠驱动的。哪怕手臂每个关节都有电机,如果目标是控制一个杯子的位置和姿态,你没有直接驱动那个杯子的执行器。再往深一层,系衬衫扣子的时候,衬衫的自由度是什么?这个问题本身就让人头皮发麻。
也正是这些问题让泰德雷克对当下的操作研究兴奋:它打破了他思考了很多年的那套控制理论的基础。
解决欠驱动系统的技术路线,是把决策写成优化问题,用最优控制、多数时候是数值最优控制的语言来平衡那些复杂的方程,同时让物理承担更多工作。至于感知,DRC 时期他们就用了复杂的感知系统,后来在高速穿越森林的固定翼项目上也用摄像头,萨蒂亚吉特·卡拉曼(Sarty Karaman)当时在队里,后来把它推得更远。深度学习革命毫无疑问改变了机器人感知的边界,现在操作任务可以用更深的方式接入感知。
但最自然的用法,让网络看摄像头、输出物体的位姿,往往不是对的做法。他反问:衬衫的状态是什么?你系扣子的第一步,难道是估计整件衬衫的完整状态,包括背后那一堆褶皱?
显然不是。有些状态维度对任务极其重要,很多维度根本观测不到也不重要。这就把状态表示的问题重新打开了。
切洋葱的时候,状态空间在膨胀还是在收缩
实验室里最近在玩切洋葱,或者说切胡萝卜,因为洋葱味道大、在相机里也难看清。
移动一个物体的时候,你想要的状态是它在空间中的位置和姿态。可当你开始切洋葱,第一刀下去,桌上变成了一百块碎粒。控制系统真的需要知道这一百块碎粒各自的位置、姿态乃至形状吗?大概率不需要。继续切下去,块会越来越多。状态空间是在变大吗?
泰德雷克说不是。这里需要一个更丰富的状态概念。拉格朗日力学给出的那个状态是存在的,但对任务而言,真正相关的是某种潜在状态(latent state),一种不同的表示,某种压缩过的表示。他说自己不太在意它是不是低维,关键是它要更容易被人或控制算法处理。
如果接触力学要为每一块洋葱、为它们之间所有可能的接触排列组合建模,那么即使给我一个高维但线性的表示,我也能接受。可要是必须处理那种爆炸式的组合,机器人就会坐在那里想,汤都凉了。
触觉:主动地去碰,和被动机看,是两件事
Lex 讲了他和父亲的争论:他认为人可以仅凭语言就爱上机器人,他父亲坚持触觉和嗅觉不可或缺。
泰德雷克先从工程角度回答:如果机器人要在人身边做有实际意义的体力工作,而且是近距离的,那就必须造得不一样,必须不再害怕接触世界。他提到《超能陆战队》里的大白,觉得那个设计非常棒,TRI 有人正在尝试做类似的东西。如果家里走动的机器人长得更像泰迪熊而不是终结者,人们的反应会完全不同,甚至会想去教它,而不是评判它不如人。
他还提到 MIT 的感知科学家泰德·阿德尔森(Ted Adelson),研究了一辈子视觉。有了孩子之后,他本以为会被孩子的视觉发展吸引,结果真正让他震撼的是触觉:孩子什么都摸、什么都舔、拿起来就往舌头上放。看着女儿长大,他说服自己必须更多地去研究触觉。
泰德雷克补了一层解释:这跟被动与主动有关。你可以被动地感知世界,但如果你能对它做实验,能改变它,你能学到的东西和一个纯粹的旁观者完全不同。看 YouTube 视频和伸手施力,是两个量级的问题。
至于情感连接,他说这不是自己的领域,但他也相信拟人化的价值。Lex 提到 Rethink Robotics 的 Baxter,那双眼睛。泰德雷克说工业机械臂有了人的元素会更好用。
被问到对 Atlas 有没有情感,他承认有。他没有说这比别的投入巨大心力的科研项目更多,但确实有。决赛时他们给那台机器人做了心脏手术,因为它烧坏了核心部件。一小时后就要比赛,机器人吊在那里,内脏被掏出来。那个画面他一直记得。
他说,一百年后回看,这些是机器人学的重要时刻。所有学科的早期都显得可笑,充满失败。而机器人学在未来一百年大概会很重要,所以现在就是它的早期。
三本书,以及为什么读得深比读得多重要
泰德雷克说自己小时候读书不多,现在读得很凶。
他推荐了尤瓦尔·赫拉利的《人类简史》和《未来简史》,说能打开思路。塔勒布的《黑天鹅》他也提了,虽然对塔勒布本人有些保留。然后他给了一个可能让人意外的推荐:莫蒂默·阿德勒的《如何阅读一本书》。
很多人讨厌这本书,他很喜欢。他说自己读到它的时候,正好被大量低质量信息淹没。我们现在的处境是,arxiv 上每天涌出大量未经充分同行评审的论文,信息量极大,但真正值得你花时间的只有很少一部分。一旦找到那一部分,就该钻进去、读透它,在书页边上写批注,留一本被翻烂的纸质书。
他喜欢阿德勒的那个观点。苏格拉底和柏拉图说,文字永远无法承载对话的美。阿德勒反驳说,一本真正好的书就是你和作者之间的一场对话,它跨越时间和空间。泰德雷克说这个看法很浪漫。
第二个影响他的人是阿西莫夫。阿西莫夫以科幻闻名,但职业生涯里有大量时间在写非虚构,他的回忆录非常好看。他痴迷于把东西讲清楚,写过各种主题的科普,被称为“伟大的解释者”。泰德雷克说自己的风格与他共鸣:通过沟通和解释去学习,本身就是一种学习方式。
他说自己在 MIT 教了这些年,思考问题的方式已经和当年不同了。讲课带来的恐惧感、被当场提问的压力,逼着他对这些想法做到绝对扎实。如果没有这些,他的思想大概会停在另一个地方。
谈到线上教学,他觉得这是媒体形态的一次分岔。他可以直接把内容送进你的浏览器,你手边就有一个搜索引擎,他可以在讲课的同时把三维内容推给你。这是去年他没有的工具。机器人学也许能从中受益,今年秋天他会把它当成一次实验。
Lex 提到剪辑的魔力:把一小时讲座里的五到十分钟废话剪掉,整场讲座会变得不一样。那些跑题的、含糊的、没有澄清任何东西的段落,删掉之后,剩下的东西会发光。
给二十岁的人:想得深,是唯一不容易被替代的能力
泰德雷克说这是个当孩子很有意思的时代,一切迹象都指向赢家通吃。在他看来,真正能脱颖而出的,是那些能对问题做深度思考的人。你需要在网上敏捷地提问,用好互联网的一切,这些技能很多人会有。
但能比别人想得更深、更批判的人,才会成为引领者。这件事更难学,一条路径是数学和工程。
他建议尽早开始学数学。他自己一直上的是能选到的最好的数学课,但直到进了 MIT 才算真正扎进去。他也建议动手:把东西拆开,再装回去,这是理解事物最好的方式之一。
然后要接受这是一段很长的旅程。你不需要什么都知道,你也永远不会什么都知道。想得深,坚持下去,享受这个过程,但一定要停下来想一想,为什么事情是这样运作的。这个世界的内容太多了,很容易被淹没。
Lex 讲了自己的那本书:《动物农场》。他出生在苏联,这本书对他而言连着整个苏联史、二战、那里发生过的爱与恨与苦难,以及权力的腐化。他说这本像童书一样讲猪的小册子,教给他的东西可能比任何书都多。
泰德雷克说他理解。他也有几本技术书和一些算法论文,会反复回去看。他承认自己最近在丢这个习惯:arxiv、博客、GitHub、新东西,一路刷过去,人就失去了真正掌握一个想法的能力。
在查尔斯河边,意识到自己被狠狠打败了
泰德雷克在密歇根读的计算机工程,他非常喜欢,喜欢计算机,喜欢编程。但到了 MIT,跟计算神经科学家塞巴斯蒂安·塞翁(Sebastian Seung)做研究之后,他感觉文化完全不同。这里对他的数学要求更高,批判性思维的要求也更高。
他记得有一天,从导师办公室借了一本书,走到查尔斯河边坐下,心里想的是:我正在被狠狠地打败。
他说每个做这类事情的人都会经历这个时刻。但他从没想过退出。他还在拼命工作,同时也乐在其中。他觉得自己很幸运,身边的人几乎每天都会让他意识到:这个东西我不懂。只要弄懂它,就能再拼上一块拼图。愿意弄清楚自己能做什么、不能做什么,并且热爱去学那些还不会的东西,这才是最好的部分。
回头看这整场对话,泰德雷克反复在讲同一件事的不同侧面。那条靠重力走下坡的腿,那条在涡流里逆流而上的死鱼,那只被整个手掌包住的鸡蛋,都在说同一句话:不要急着用控制去覆盖世界,先看看世界本身已经提供了什么。
而他自己每天赤脚跑 12 英里,也是在用同样的逻辑。身体会给反馈,前提是你别把反馈的通道堵死。
- 想入门赤脚跑,先把距离砍到原来的十分之一。最容易受伤的是本来就能跑的人。脱鞋之后按原来的配速跑,当天就可能出问题。带上极简鞋或跑步凉鞋,不舒服就穿。
- 不想脱鞋,也可以先改步频。用每分钟 180 拍左右的音乐跟着跑,缩小步幅,避免脚跟重砸。这是成本最低的一次步态修正。
- 把通勤变成思考时间,而不是从工作里偷来的时间。泰德雷克把 12 英里的路程安排进日程,而不是挤出来。选一种方式(走、跑、骑车、划船),把早晚各一段固定成沉淀时间,会议自然围着它排。
- 遇到复杂系统,先问哪些部分可以让物理自己完成。无论是造机器人还是设计流程,先识别出可以顺着走的动力学,再决定哪里必须加控制。默认选项往往是把所有力都抵消掉,那通常是最费能量的做法。
- 用学习的工具之前,先判断这个问题该不该用学习。矩阵求逆这类有成熟解法的部分,交给数学;真正没有解析解、边界模糊的部分,再上模型。判断的依据是你对方法适用范围的了解。
- 找一个真正值得读透的文本,读第二遍、第三遍,写批注。不要用刷 arxiv 和博客的节奏对待它。泰德雷克说,值得你花全部时间的只有很少几篇,找到了就钻进去。
- 给关键系统准备一套显式检查清单,并且执行到底。DRC 那次摔倒,起因是比赛第一天有人漏勾了一个复选框。清单的价值不在于写出来,而在于高压环境下逐条核对。
- 做边角测试时,别只测罕见事件,要测影响大的罕见事件。稀有事件仿真如果只追求稀有,会浪费大量算力在没有后果的角落里。给测试目标加上后果权重。
本集资源与出处
- 视频在 YouTube 收看
- 音频官方 MP3 直链来自 lexfridman.com 官方播客 RSS
- 官网Lex Fridman 官网本集页面
- 文稿HappyScribe 版文稿