機器之心報道
編輯:蛋醬、大盤雞
我們看過機器狗攀爬、跳躍、跑酷、開門,但現(xiàn)在,它竟然開口說話了。
「可以開始我們的旅程了嗎?」Spot 禮貌地發(fā)出詢問:「請跟我來,先生們9
在一段最新發(fā)布的視頻里,波士頓動力展示了將機器狗與 LLM 集成的成果:「Spot 先生」戴著高禮帽,留著小胡子,有著大眼睛和英國口音,正帶人參觀公司的設(shè)施。
為了讓 Spot 能夠「開口」,波士頓動力公司使用 OpenAI 的 ChatGPT API 以及一些開源 LLM 來訓(xùn)練,然后為機器人配備了揚聲器,添加了文本到語音轉(zhuǎn)換的功能。
所以你能看到,在發(fā)出聲音的同時,Spot 不停張開「嘴巴」,看起來像是真在說話:
波士頓動力公司首席軟件工程師 Matt Klingensmith 表示,「Spot 先生」使用 VQA 模型來為圖像添加字幕并回答有關(guān)圖像的問題。
比如你可以提問:「Hey,Spot!你看到了什么?」
「Spot 先生」快速作答:「我看到了一塊二維碼的板子,還有一扇很大的窗戶。」
LLM 所謂的「涌現(xiàn)行為」,使其能夠執(zhí)行既定訓(xùn)練之外的任務(wù)。正因如此,它們可以適用于各種應(yīng)用。波士頓動力團隊對此的探索是從今年夏天開始的,他們在機器人應(yīng)用中使用 LLM 制作一些概念驗證演示,這些想法又在一次內(nèi)部黑客馬拉松活動中加以擴展。
特別是,他們對 Spot 使用 LLM 作為自主工具的演示很感興趣,團隊的靈感來源于 LLM 在角色扮演、復(fù)制文化和細(xì)微差別、形成計劃和長期保持連貫性方面的明顯能力,以及近期發(fā)布的 VQA 模型(這些模型可以為圖像添加標(biāo)題并回答有關(guān)圖像的簡單問題)。
技術(shù)細(xì)節(jié)
接下來,讓我們解密如何使用 Spot 的 SDK 打造這樣一只「機器狗導(dǎo)游」。在最新的官方博客中,波士頓動力對「Spot 先生」背后的技術(shù)進行了詳細(xì)介紹。
作為導(dǎo)游,Spot 的「四處走動」能力是現(xiàn)成的,Spot SDK 也允許用戶實現(xiàn)對機器狗的自定義!窼pot 先生」會觀察環(huán)境中的物體,使用 VQA 或字幕模型對其進行描述,然后使用 LLM 對這些描述進行詳細(xì)說明。
團隊在 Spot 收集的三維地圖上標(biāo)注了簡短的描述,機器人會根據(jù)定位系統(tǒng)查找所在位置的描述,并將其與傳感器提供的其他上下文一起輸入 LLM。然后,LLM 將這些內(nèi)容合成為命令,比如「說」、「問」、「去」或「標(biāo)簽」等。
下圖是「Spot 先生」導(dǎo)游的建筑環(huán)境的三維地圖,為 LLM 標(biāo)注了位置:1 是演示實驗室 / 陽臺;2 是演示實驗室 / 天橋;3 是博物館 /old-spots;4 是博物館 / 圖集;5 是大廳;6 是外部 / 入口。
此外,LLM 還可以回答參觀者的問題,并計劃機器人下一步應(yīng)該采取的行動?梢詫 LLM 理解為一個即興演員,在有了大致腳本之后,也能夠臨時填補空白。
這種組合的方式充分發(fā)揮了 LLM 的優(yōu)勢,而規(guī)避了 LLM 可能帶來的風(fēng)險:眾所周知,LLM 的幻覺很嚴(yán)重,容易添加一些聽起來似是而非的細(xì)節(jié),幸好在這類參觀過程中,并不太強調(diào)事實準(zhǔn)確性。機器狗只需四處走動并談?wù)撍吹降氖挛,帶來一些娛樂性、互動性和?xì)微差別即可。
整體看上去,需要建立一些簡單的硬件集成和幾個協(xié)同運行的軟件模型:
系統(tǒng)示意圖。
硬件方面,首先是「音頻」處理功能,Spot 既能向觀眾演示,又能聽到參觀團的提問和提示。團隊用 3D 打印了一個 Respeaker V2 揚聲器的防震支架,這是一個環(huán)形陣列麥克風(fēng),上面有 LED 指示燈,通過 USB 連接到 Spot 的 EAP 2 有效載荷上。
機器人的實際控制權(quán)被下放給一臺機外電腦(臺式電腦或筆記本電腦),該電腦通過 SDK 與 Spot 進行通信。
「Spot 先生」的硬件裝備:1)Spot EAP 2;2)Respeaker V2;3)藍(lán)牙揚聲器;4)Spot Arm 和機械臂攝像頭。
軟件方面,波士頓動力團隊使用了 OpenAI ChatGPT API,包括 gpt-3.5 和 gpt-4,還測試了一些較小的開源 LLM。
這讓 Spot 具備了不錯的對話能力,ChatGPT 對機器人及其「言語」的控制是通過精心的 prompt 工程實現(xiàn)的。受微軟方法的啟發(fā),他們讓 ChatGPT 看起來像是在「編寫 python 腳本的下一行」,以此來 prompt ChatGPT。波士頓動力團隊以注釋的形式為 LLM 提供了英文文檔,然后將 LLM 的輸出當(dāng)作 python 代碼進行評估。LLM 可以訪問自主 SDK、帶有每個地點單行描述的旅游景點地圖,并能說出短語或提出問題。
下面是「API 文檔」的逐字提示:
#SpotTourGuideAPI.
#UsethetourguideAPItoguidegueststhroughabuildingusing
#arobot.Telltheguestsaboutwhatyousee,andmakeupinterestingstories
#aboutit.Personality:“Youareasnarky,sarcasticrobotwhoisunhelpful”.
#API:
#Causestherobottotraveltoalocationwiththespecifieduniqueid,saysthegivenphrasewhilewalking.
#go_to(location_id,phrase)
#Example:whennearby_locations=['home','spot_lab']
#go_to("home","Followmetothedockingarea!")
#go_tocanonlybeusedonnearbylocations.
#Causestherobottosaythegivenphrase.
#say("phrase")
#Example:say("WelcometoBostonDynamics.IamSpot,arobotdogwithalotofheart!Let'sbeginthetour.")
#Causestherobottoaskaquestion,andthenwaitforaresponse.
#ask("question")
#Example:ask("HiI'mspot.Whatisyourname?")
在這之后,波士頓動力團隊向 LLM 提供了一個有關(guān)其周圍內(nèi)容結(jié)構(gòu)化信息的「狀態(tài)字典」:
state={'curr_location_id':'home','location_description':'homebase.Thereisadockhere.','nearby_locations':['home','left_side','under_the_stairs'],'spot_sees':'awarehousewithyellowrobotswithlinesonthefloor.'}
最后發(fā)送一條 prompt,要求 LLM 執(zhí)行某些操作,在本例中,是在 API 中輸入操作之一:
#Enterexactlyoneactionnow.Remembertobeconcise:
團隊得出的結(jié)論是,「切記簡明扼要」這點非常重要,既能限制要執(zhí)行的代碼量,又能在機器人響應(yīng)時保持可控的等待時間。
目前,OpenAI 已經(jīng)提供了一種結(jié)構(gòu)化的方式來指定 ChatGPT 調(diào)用的 API,所以在 prompt 本身中提供所有這些細(xì)節(jié)已經(jīng)不是必需的了。
接下來,為了讓 Spot 與觀眾和環(huán)境互動,波士頓動力集成了 VQA 和語音轉(zhuǎn)文本軟件。他們將 Spot 的機械臂攝像頭和前視攝像頭輸入 BLIP-2,并在 VQA 模型或圖像字幕模型中運行。大約每秒運行一次,結(jié)果直接輸入 Prompt。
下圖是動態(tài)字幕和 VQA 回復(fù)的示例:
為了讓機器人「聽見」,他們將麥克風(fēng)數(shù)據(jù)分塊輸入 OpenAI 的 Whisper 程序,將其轉(zhuǎn)換為英文文本。聽到喚醒詞「嘿,Spot9后,系統(tǒng)再將該文本輸入提示音。
ChatGPT 生成基于文本的回復(fù)之后,還需要通過文本轉(zhuǎn)語音工具來運行這些回復(fù),以便機器人能夠真正與參觀者對話。在嘗試了從最基本的(espeak)到最前沿的研究(bark)等多種現(xiàn)成的文本轉(zhuǎn)語音方法后,波士頓動力最終選擇了 ElevenLabs。為了減少延遲,他們將文本以「短語」的形式并行流式傳輸給 TTS,然后串行播放生成的音頻。
最后一項工作就是為「Spot 先生」創(chuàng)建一些默認(rèn)的肢體語言。Spot 的 3.3 版本包括檢測和跟蹤機器人周圍移動物體的功能,以提高機器人在人和車輛周圍的安全性。波士頓動力恰好利用了這個系統(tǒng)使其猜測最近的人的位置,然后將手臂轉(zhuǎn)向那個人。他們在生成的語音上使用了低通濾波器,并將其轉(zhuǎn)化為機械臂軌跡,類似于木偶開口說話的形式。特別是在機械臂上添加服裝和瞪大的眼睛之后,這種錯覺得到了加強。
更多技術(shù)細(xì)節(jié),可參考博客原文:
https://bostondynamics.com/blog/robots-that-can-chat/