🤖

【DeepL訳】ChatGPT for Robotics

2023/04/19に公開

全文はこちら

https://www.microsoft.com/en-us/research/group/autonomous-systems-group-robotics/articles/chatgpt-for-robotics/

ロボティクスのためのChatGPT:設計原理とモデル能力

ChatGPTの機能をロボティクスに拡張し、ロボットアームやドローン、ホームアシスタントロボットなど複数のプラットフォームを言語によって直感的に制御しました。

https://www.microsoft.com/en-us/research/uploads/prod/2023/02/ChatGPT___Robotics.pdf
https://github.com/microsoft/PromptCraft-Robotics

ロボットに、人間に言うように、自分の言葉で指示を出したいと思ったことはないだろうか。ホームアシスタントのロボットに「お弁当を温めてください」と伝えるだけで、勝手に電子レンジを探してくれるなんて、すごいことだと思いませんか?「お弁当を温めてください」と伝えれば、ロボットが勝手に電子レンジを探してくれるなんて。言語が最も直感的な意思表示方法であるにもかかわらず、私たちはロボットを制御するために、手書きのコードに大きく依存しています。私たちのチームは、OpenAIの新しいAI言語モデル「ChatGPT」を使って、この現実を変え、人間とロボットの自然な対話を可能にする方法を模索しています。

ChatGPTは、膨大なテキストと人間との対話のコーパスをもとに学習させた言語モデルで、さまざまなプロンプトや質問に対して首尾一貫した文法的に正しい応答を生成することができるようになりました。この研究の目標は、ChatGPTがテキストを越えて、物理的な世界について考え、ロボット工学のタスクを支援できるかどうかを確認することです。私たちは、複雑なプログラミング言語やロボットシステムの詳細を学ぶことなく、人々がより簡単にロボットと対話できるようにしたいと考えています。ここで重要なのは、物理法則や動作環境のコンテキスト、ロボットの物理的な動作がどのように世界の状態を変化させるかを考慮して問題を解決する方法をChatGPTに教えることです。

ChatGPTはそれ自体で多くのことができることが判明していますが、まだいくつかの助けが必要です。私たちのテクニカルペーパーでは、言語モデルをロボット工学のタスク解決に導くために使用できる一連の設計原則を説明しています。これには、特別なプロンプトの構造、高レベルのAPI、テキストによる人間のフィードバックなどが含まれますが、これらに限定されるものではありません。私たちは、私たちの研究が、ロボットシステムの開発方法におけるシフトの始まりに過ぎないと信じており、他の研究者がこのエキサイティングな分野に飛び込むきっかけになることを願っています。私たちの方法とアイデアに関する技術的な詳細については、引き続きお読みください。

https://youtu.be/NYd0QcZcS6Q

ロボット工学の今日的課題、そしてChatGPTの可能性

現在のロボティクス・パイプラインは、エンジニアやテクニカルユーザーがタスクの要件をシステムのコードに変換するところから始まります。エンジニアは、ロボットの動作を修正するために新しいコードや仕様を書く必要があり、ループの中にいることになります。このプロセスは、時間がかかり(ユーザーは低レベルのコードを書く必要がある)、コストがかかり(ロボット工学の深い知識を持つ熟練したユーザーが必要)、非効率的(物事を正しく動作させるために複数のやり取りが必要)である。

ChatGPTは新しいロボット工学のパラダイムを解き放ち、(潜在的に非技術的な)ユーザーがループに座って、ロボットのパフォーマンスを監視しながら大規模言語モデル(LLM)に高レベルのフィードバックを提供することができます。ChatGPTは、私たちの設計原則に従うことで、ロボットのシナリオに沿ったコードを生成することができます。LLMの知識を活用することで、さまざまなタスクに対応したロボットを制御することができます。私たちは、ChatGPTがロボット工学のパズルを解き、マニピュレーション、エアリアル、ナビゲーションの領域で複雑なロボットを配置する複数の例を示しています。

ChatGPTを使ったロボティクス:設計の原則

LLMのプロンプティングは、非常に経験的な科学である。私たちは試行錯誤の末、ロボットタスクのプロンプトを書くための方法論と設計原則のセットを構築しました:

  1. まず、高レベルのロボットAPIまたは関数ライブラリのセットを定義します。このライブラリは特定のロボットに特化したもので、ロボットの制御スタックや知覚ライブラリから得られる既存の低レベルの実装にマッピングする必要があります。ChatGPTがその挙動を推論できるように、高レベルのAPIには説明的な名前を使うことが非常に重要です;
  2. 次に、ChatGPT用のテキストプロンプトを作成します。このプロンプトには、タスクのゴールを記述すると同時に、高レベルライブラリのどの関数が利用可能かを明示します。プロンプトには、タスクの制約に関する情報も含めることができます、あるいは、ChatGPTがどのように回答を形成するか(特定のコーディング言語、補助的なパージング要素の使用);
  3. ユーザーは、ChatGPTのコード出力を評価するために、直接検査するか、シミュレータを使用して、ループに留まります。必要に応じて、ユーザーは自然言語を使って、答えの品質と安全性についてChatGPTにフィードバックを提供します。
  4. ユーザーが納得した上で、最終的なコードをロボットに配置することができます。

話は変わりますが、ChatGPTは具体的にどんなことができるのでしょうか?

いくつかの事例を見てみましょう...私たちのコードリポジトリには、さらに多くの事例が掲載されています。

ゼロショット・タスク・プランニング

ChatGPTに本物のドローンを制御する機能を持たせたところ、技術者でないユーザーとロボットの間の言語ベースのインターフェースとして非常に直感的であることがわかりました。ChatGPTは、ユーザーからの指示があいまいな場合に説明を求めたり、棚を目視するためのジグザグパターンなど、複雑なコード構造をドローンに記述したりしました。さらに、自撮りの方法まで考えてくれました!

https://youtu.be/i5wZJFb4dyA

また、Microsoft AirSimシミュレーターを使った工業検査シナリオのシミュレーションでもChatGPTを使用しました。このモデルは、ユーザーのハイレベルな意図と幾何学的な手がかりを効果的に解析し、ドローンを正確に制御することができました。

https://youtu.be/38lA3U2J43w

ループ上のユーザー:複雑なタスクのために会話が必要な場合

次に、ロボットアームによる操作シナリオでChatGPTを使用しました。会話によるフィードバックで、もともと提供されているAPIを、ChatGPTが自らコーディングした、より複雑な高レベルの関数に合成する方法をモデルに教えました。カリキュラムに基づいた戦略により、モデルはこれらの学習したスキルを論理的に連鎖させ、ブロックを積み上げるなどの操作を行うことができるようになりました。

さらに、このモデルは、木製のブロックからマイクロソフトのロゴを作るという課題を与えられ、テキストと物理の領域を橋渡しする魅力的な例を示しました。このモデルは、内部知識ベースからロゴを呼び出すことができただけでなく、ロゴを(SVGコードとして)「描く」ことができ、さらに、上記のスキルを使って、既存のロボットアクションがその物理的形状を構成できることを理解することができたのです。

https://youtu.be/wLOChUtdqoA

次に、ChatGPTに、ドローンが障害物にぶつからないようにしながら、空間上のゴールに到達するためのアルゴリズムを書くように命じました。このドローンには前方に距離センサーがあることをモデルに伝えると、ChatGPTはすぐにアルゴリズムの主要な構成要素のほとんどをコーディングしてくれました。このタスクでは人間との会話が必要でしたが、ChatGPTが言語フィードバックだけで局所的にコードを改善する能力に感心しました。

https://youtu.be/Vn6NapLlHPE

知覚と行動のループ:世界を感じてから行動するロボット

何かをする(アクション)前に世界を感じる(パーセプション)能力は、あらゆるロボティクスシステムにとって基本的なものです。そこで、ChatGPTにこの概念を理解させ、ユーザが指定した物体を見つけるまで環境を探索させることにしました。そして、物体検出や物体距離などのAPIにアクセスさせ、生成したコードが知覚と行動のループをうまく実装していることを確認しました。

実験的な特徴として、ChatGPTがリアルタイムでセンサーのフィードバックに基づいてロボットの進むべき場所を決定できるかどうかを評価するために、追加の実験を行いました(ChatGPTがこれらの決定を行うコードループを生成するのとは対照的です)。興味深いことに、各ステップでのカメラ画像のテキスト記述をチャットに送り込むことができ、モデルが特定のオブジェクトに到達するまでロボットを制御する方法を見つけ出すことができることを検証しました。

https://youtu.be/p0fDH9zZm_c

LLM+Robotics研究のための共同オープンソースツール「PromptCraft」。

ロボットタスクのためのChatGPTのようなLLMの成功には、優れたプロンプト工学が不可欠である。残念ながら、プロンプトは経験科学であり、この分野の研究者や愛好家の助けとなる、良い例(と悪い例)を持つ包括的でアクセス可能なリソースが不足しているのが現状です。このギャップに対処するために、我々は、誰もが異なるロボティクスカテゴリのプロンプト戦略の例を共有することができる共同オープンソースプラットフォームであるPromptCraftを紹介します。本研究で使用したプロンプトと会話はすべて公開する。読者の皆様にも、より多くのプロンプトを投稿していただくようお願いいたします!

プロンプトデザイン以外にも、ChatGPTで生成したアルゴリズムをテストできるように、複数のロボットシミュレータやインターフェースも搭載したいと考えています。手始めに、ChatGPTを統合したAirSim環境も公開しており、誰でもこれらのアイデアを始めることができるようになっています。新しいシミュレータやインターフェースの提供も歓迎します。

The ChatGPT-AirSim interface

https://youtu.be/iE5tZ6_ZYE8

ロボット工学を研究室から世界へ。

私たちは、ロボット工学をより多くの人々の手に届けることを目的として、これらの技術をリリースすることに興奮しています。私たちは、言語ベースのロボット制御が、ロボット工学を科学研究所から日常のユーザーの手に届けるための基本になると信じています。

とはいえ、ChatGPTの出力は、注意深く分析することなくロボットに直接展開することを意図していないことを強調しています。私たちは、実生活に導入する前にこれらのアルゴリズムを評価するために、シミュレーションの力を活用することをユーザーに奨励し、常に必要な安全対策を講じることをお勧めします。私たちの研究は、ロボット工学の領域で動作する大規模な言語モデルの交差点で可能なことのほんの一部にすぎませんし、今後の研究の多くを刺激することを期待しています。

Discussion