在「機器人領域」使用ChatGPT提高生產力。

將門創投 2023-03-31 08:22 發表於北京

以下文章來源於空中機器人前沿 ,作者小米

最近幾個月,ChatGPT 大火,它是OpenAI於去年11月底推出的人工智能聊天機器人程序,已經成為了歷史上增長最快的消費者應用程序 [1]。毫無疑問,ChatGPT受到了各個行業的廣泛關注。

其中在機器人領域,微軟於今年2月20日發佈了"ChatGPT for Robotics"的技術報告 [2],為如何將ChatGPT 融入機器人領域提供了一種可能的視角。與純文本的應用不同,機器人系統需要對現實世界的物理、環境背景和物理動作的執行能力有深入的了解。而且所生成機器人模型需要具備相當的常識性知識和符合實際的物理模型,以及與用戶交互以解釋和執行實際現實中可行的命令。下面筆者將根據這份報告,解讀怎樣在機器人領域使用ChatGPT 來提升生產力。

一、Pipeline 設計流程

1. 整體流程

ChatGPT 本質上是一個語言模型,采用對話的形式,根據用戶的指令做出相應的回應。從最基本的語言回應,到代碼生成與debug,再到情景角色扮演,這些應用的一個核心關鍵就是用戶提示詞的撰寫《prompt),用戶需要通過準確詳細的提示詞告訴ChatGPT應該做什麼,然後讓ChatGPT 去執行。為此,

1.首先需要手工設計一系列的機器人功能庫函數來實現底層執行器的命令,如,移動,停止,獲得目標的位置信息等等。2.第二步是給ChatGPT 寫一個提示詞,用來描述需要讓ChatGPT 執行的目標。3.第三步是使用者評估ChatGPT 生成的代碼,並且給ChatGPT 提供反饋,讓ChatGPT 進行下一步改進。4.通過提供反饋,將代碼進行不斷迭代改進,當用戶測試通過之後,就可以部署到實際的系統中了。流程圖如下:

圖 1 利用ChatGPT 進行機器人頂層算法設計 [2]

2. 關於Prompt 的注意事項

如果想要讓ChatGPT 更容易理解用戶的意思,產生更準確的回應,那麼用戶所給出的提示詞就需要清晰明了:描述中除了要包含讓ChatGPT調用的底層機器人功能庫函數之外,還要考慮以下幾點內容:

1.具體的任務要求和約束條件:舉個例子比如說想要讓機器人移動物體,那麼prompt 裡面首先要介紹相關信息告訴ChatGPT,比如物體的位置、尺寸等等。

2.對環境的描述:提示詞中需要描述清楚這個任務是在什麼環境下進行的。舉個例子來說,比如目標任務是在迷宮中導航,那麼就需要介紹迷宮的尺寸和形狀,以及裡面存在的障礙物等信息。

3.目前的狀態信息:需要告訴ChatGPT 機器人系統目前的它的狀態信息,比如位置、朝向等等。

4.目標:比如任務是組裝一個拼圖,那就需要告訴ChatGPT 需要拼接的零件數目以及期望的完成時間。

5.解決方案的樣例:當任務比較復雜的時候,比如需要ChatGPT 與使用者進行交互的時候,可以通過給一些例子來描述這個過程。見下圖。作者向ChatGPT提供了一個機器人何時向人類詢問以獲取進一步指令的例子。

圖 2 提供范例告訴ChatGPT如何以及何時與用戶進行交互以尋求幫助 [2]

6.提示詞的設計原則:可參考:https://learningprompt.wiki,該網站指出了設計提示詞的所有技巧和原則。也可以參考https://promptperfect.jina.ai/,該網站能夠自動優化所使用的提示詞,從而讓ChatGPT提供期望的高質量結果。

二、潛在應用前景

在設計完成Pipeline 之後,就可以把目光轉到ChatGPT的具體機器人應用上來:如仿真環境下無人機的任務規劃和避障,現實世界的空中無人機感知和操縱部署等等。

值得注意的是,在微軟的文章中 [2],除了展示ChatGPT 的強大能力之外,也強調了ChatGPT的局限性:不應忽視實際的部署安全性問題,尤其是在實際物理系統機器人部署的情況下。在 ChatGPT有可能產生意外行為的情況下,必須有人在循環中進行監控和幹預。此外,在將模型部署到現實世界之前,使用模擬器進行仿真有助於更好地評估模型的性能。文中強調,將 ChatGPT 用於機器人技術並不是完全自動化的過程,而是充當增強人類能力的工具。

本文中主要把應用場景分成了三類:零樣本任務規劃、通過人在回路的反饋交互來完成復雜任務、包含感知層的任務執行。筆者將針對這三種情況進行一一介紹。

1. 零樣本任務規劃

《1》在AirSim 環境下的工業巡檢

在該情境下,即使是讓非專業的使用者通過ChatGPT 也能夠控制無人機完成工業巡檢任務目標。

ChatGPT 能夠理解用戶的意圖並且能夠精準控制無人機完成任務。視頻見https://www.youtube.com/watch?v=38lA3U2J43w

圖 3 AirSim 環境下的工業巡檢 [2]

《2》通過人與機器人的語言交互達成現實世界中無人機的飛行任務

ChatGPT 在用戶和機器人之間提供了極其直觀的自然語言交互界面,僅僅根據一些模棱兩可和定義不明確的指令就可以編寫機器人代碼,並在必要時請求問題的進一步闡釋。這種交互模式能夠為無人機導航的任務編寫復雜的代碼結構。視頻鏈接見https://youtu.be/i5wZJFb4dyA2. 使用者在回路:通過與ChatGPT交互式對話實現復雜任務

這一部分專註於讓ChatGPT 執行復雜任務。這種交互方式允許復雜的結構,例如課程學習《curriculum learning》。在這種情況下,會教授給ChatGPT較小規模的技能,這些技能可以結合起來用於更大、更復雜的任務。此外,ChatGPT 能夠獲取有關生成的代碼的文本反饋,並修改其代碼,從而使非專業使用者能夠輕松地與之交互。

《1》利用Curriculum learning 實現對物體的操縱擺放

第一個例子是使用機械臂設置了一個塊排列任務,為此設計了一個課程。ChatGPT 被要求學習更簡單的拾取對象然後放置它們的技能。隨後,當被要求使用這些技能來執行更復雜的塊排列任務時,ChatGPT將這些學到的技能能夠組合在一起。此外,當任務是用五塊構建微軟徽標時,該模型展示了一個典型的通用性示例,它可以橋接文本域和物理域:因為此任務需要記住公司徽標的外觀,包括其顏色,然後將徽標抽象為可由現有機器人動作構建的物理部分。

圖4 用機械臂實現物塊擺放 [2]

視頻鏈接見https://youtu.be/wLOChUtdqoA

《2》在AirSim 環境下實現無人機避障ChatGPT 可以為配備前向距離傳感器的無人機編寫具有避障功能的目標到達算法。ChatGPT 構建了避障算法的大部分關鍵模塊,但仍需要一些人工反饋以進行矯正。盡管人工反饋以高級文本形式提供,但ChatGPT 能夠理解人的指令要求並對代碼進行相應的修改。

圖5 AirSim 環境下實現無人機避障 [2]

視頻鏈接見https://youtu.be/Vn6NapLlHPE

3. 具備感知功能後進行行動

文章還評估了 ChatGPT 進行感知-動作循環的能力。首先,模型能夠利用 API 庫在其輸出代碼中構建感知-動作循環的能力。它能夠正確地利用圖像采集和目標檢測等感知功能來提取機器人導航和控制的相關信息。然後進一步的,使用者可以通過文本對話不斷向模型提供感知信息,用戶在對話期間可以將觀察結果《轉換為文本格式》輸入 ChatGPT。ChatGPT 能夠解析此觀察流並輸出相應的操作。

具身智能:目標導航

該任務中ChatGPT 擁有了對計算機視覺模型的訪問權限,並作為其功能庫的一部分,賦予它探索未知環境並導航到用戶指定對象的任務。對象檢測 API《後端的 YOLOv8 [3]》返回邊界框,ChatGPT 生成代碼來估計相對對象角度並向它們導航。當用戶向 ChatGPT 提供來自深度傳感器的附加信息時,它產生了一種帶有像素深度掩碼的改進算法。

圖6 提供視覺接口後進行目標導航 [2]

視頻鏈接見https://youtu.be/p0fDH9zZm_c

三、總結

在微軟的這份文檔中,提出了一個將 ChatGPT 用於機器人應用程序的框架。該框架首先需要設計和實施用於機器人控制的 API 庫,這些 API 可以幫助 ChatGPT 進行頂層設計。並且,該框架能夠用於多種機器人應用場景中:如空中機器人、操縱和視覺導航的部署等等。同時文章也強調,不應讓這些工具完全控制機器人系統,尤其是對於安全關鍵型系統, 因為ChatGPT具有生成錯誤響應的傾向。因此在實際機器人上執行代碼之前,應該在人工監督下確保代碼的質量和安全性。

參考文獻

[1] https://redian.news/wxnews/251179

[2] Vemprala,Sai,et al. "ChatGPT for Robotics: Design Principles and Model Abilities." (2023).

[3] Redmon,Joseph,et al. "You only look once: Unified,real-time object detection." Proceedings ofthe IEEE conference on computer vision and pattern recognition. 2016.

作者:小米來源:空中機器人前沿

Illustration by IconScout Store from IconScout