大自然早已給出答案
看一群螞蟻抬起數倍於自身體型的葉子,或是一群椋鳥在天空中翻飛,宛如一整片活的雲。沒有哪隻螞蟻在指揮,也沒有哪隻鳥在發號施令。每個個體只遵循幾條簡單的規則——靠近鄰居、別撞到牠們、大致朝同一方向走——而正是這無數微小的局部選擇,匯聚出龐大而看似聰明的整體行為。早在人類造出第一台機器之前,大自然就解決了一個難題:如何用許多渺小、能力有限的工人,完成一項大工程?
機器人學直接借用了這條經驗。一台機器人——哪怕再出色——也只有一副身體、一組感測器,一次只能待在一個地方。多機器人系統不過是一群朝著共同目標協作的機器人:團隊能同時出現在多個地點,能在任何一名成員失效時繼續運轉,還能把一項龐大的任務拆成易於處理的小塊。本指南為整個機器人系統專題揭開序幕,提出一個看似簡單的問題:什麼時候一群普通的機器,勝過一位天才?
群體:簡單規則中誕生的聰明
多機器人系統中有一類把螞蟻的思路推到極致。在群體機器人中,你製造許多廉價、近乎相同的機器人,只給每個機器人局部資訊——它在近距離內能感知到的、或透過短程無線電鏈路能接收到的東西——然後讓有用的群體行為自發湧現,無需任何單台機器人理解整體計畫。沒有哪個成員知道全局地圖,每個只是對鄰居作出反應。我們把這種結果稱為湧現行為:團隊完成了任何單個成員自己都無法描述的事。
最著名的入門例子是「boids」,由克雷格·雷諾茲於1986年提出的群飛模擬。每隻模擬鳥遵循三條規則——分離(別擠到鄰居)、對齊(朝附近鄰居的轉向方向走)、凝聚(向附近鄰居的平均位置靠攏)。僅此而已。可滿螢幕的boids卻能像真正的鳥群一樣繞過障礙。群體機器人用真實的輪子和感測器做著同樣的事:輸入局部規則,輸出群體行為。
集中式大腦 vs. 去中心化團隊
並非每個團隊都是群體。最關鍵的設計分岔在於:誰來決策。在集中式系統中,一台電腦掌握全局,精確指揮每台機器人——就像空中交通管制員指揮飛機。在去中心化系統中,每台機器人僅憑自己感知到、以及從鄰居那裡聽到的資訊自行決策——更像沒有引導員、卻仍能有序散場的人群。兩者都行得通,只是各有取捨。這一權衡正是機器人自主性的核心:每台機器自己決定多少,又有多少是自上而下安排的。
集中式控制能給出乾淨、全局最佳化的方案,也便於分析——但中央大腦是單點故障,而且團隊一大,無線網路就可能阻塞。去中心化控制經得起機器人失聯和訊息丟失,擴展性極佳——但誰也無法保證團隊在做最優的事,只能做到足夠好。真實系統往往兩者兼用:一個監督者設定高層目標,而每台機器人處理自己每時每刻的動作。
各自的舞台在哪裡?在倉庫裡——想想倉儲與物流機器人——成百上千台搬運貨架的機器人通常偏向集中式:建築有地圖、網路可靠,一個車隊管理器可以為所有機器人規劃路線、避免堵塞。而在倒塌建築中的搜救場景(搜救機器人),無線電時斷時續、機器人隨時可能被壓毀,因此一支即使成員不斷減少仍能繼續工作的去中心化團隊更勝一籌。在農業機器人領域,一群小型田間機器人可以並行除草或巡查農場,比一台巨型機器更便宜,也對土壤更溫和。
難點:協調才是真正的功夫
增加機器人聽起來全是好處,但每多一台機器人,也就多了一個可能相撞、搶話、起爭執的對象。組隊的代價是多機器人協調:確保機器人彼此幫忙,而不是互相絆腳。兩台機器人都決定去抓同一個箱子,或者都朝同一方向閃避卻反而撞上,結果比一台機器人單幹還糟。
協調可以拆解為幾個反覆出現的難題,本專題會逐一展開。團隊必須在嘈雜、片面的資訊下就共同事實達成一致——這就是分散式共識,機器人像委員會投票那樣達成協議。它們必須在移動中保持有用的隊形,這就是隊形控制,如同大雁保持人字形。它們還必須公平地分配工作,這就是多機器人任務分配——決定誰去取哪個包裹、誰去搜哪個房間。
這一切之下,是一層管道:讓機器人傳遞訊息、共享地圖、互相觸發動作而不陷入混亂的軟體。後續指南會介紹讓這一切變得可行的工具——用於鬆耦合通訊的發布-訂閱模式、把機器人各個程式串聯起來的機器人作業系統,以及用於組織「機器人在何時做什麼」的行為樹。眼下,只需記住這個大局:硬體讓機器人能行動,而協調,才是把一堆機器人變成一支團隊的關鍵。