IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ イントリンシック イノベーション エルエルシーの特許一覧

特許7427113ロボットデモンストレーション学習用スキルテンプレート
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-25
(45)【発行日】2024-02-02
(54)【発明の名称】ロボットデモンストレーション学習用スキルテンプレート
(51)【国際特許分類】
   G06N 20/00 20190101AFI20240126BHJP
   B25J 13/00 20060101ALI20240126BHJP
【FI】
G06N20/00
B25J13/00 Z
【請求項の数】 20
(21)【出願番号】P 2022571197
(86)(22)【出願日】2021-05-10
(65)【公表番号】
(43)【公表日】2023-06-26
(86)【国際出願番号】 US2021031482
(87)【国際公開番号】W WO2021236365
(87)【国際公開日】2021-11-25
【審査請求日】2023-01-19
(31)【優先権主張番号】16/880,862
(32)【優先日】2020-05-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521430508
【氏名又は名称】イントリンジック イノベーション エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100126480
【弁理士】
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】コルリ,バラ ヴェンカタ サイ ラヴィ クリシュナ
(72)【発明者】
【氏名】シャール,ステファン
(72)【発明者】
【氏名】デイヴィス,ベンジャミン エム.
(72)【発明者】
【氏名】シェーンヘル,ラルフ オリバー マイケル
(72)【発明者】
【氏名】イェ,ニン
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2016-159407(JP,A)
【文献】特開2019-079227(JP,A)
【文献】米国特許出願公開第2020/0090042(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
B25J 13/00
(57)【特許請求の範囲】
【請求項1】
1つ以上のコンピュータによって実施される方法であって、
ロボットによって実施されるタスクのためのスキルテンプレートを受信することであって、前記スキルテンプレートが、複数のサブタスク、及び前記サブタスクのうちの1つ以上の間の1つ以上のそれぞれの遷移条件を有する状態機械を定義し、
前記スキルテンプレートが、前記サブタスクのうちのどれがローカルデモンストレーションデータを使用して精緻化されるデモンストレーションサブタスクであるかを示す、前記スキルテンプレートを受信することと、
前記スキルテンプレートのデモンストレーションサブタスクのためのベース制御ポリシーを取得することと、
前記スキルテンプレートの前記デモンストレーションサブタスクについて、前記デモンストレーションサブタスクの実施方法を前記ロボットでデモンストレーションするユーザから生成されたローカルデモンストレーションデータを受信することと、
前記デモンストレーションサブタスクのための機械学習モデルを精緻化することであって、前記デモンストレーションサブタスクのための前記機械学習モデルが、1つ以上の入力センサストリームを使用して、前記ロボットによって実行されるコマンドを生成するように構成されている、前記機械学習モデルを精緻化することと、
前記ロボットにおいて前記スキルテンプレートを実行し、それによって、前記ロボットに、前記スキルテンプレートによって定義された前記状態機械を通して遷移させて、前記機械学習モデルによって生成されたコマンドを実施させることを含む、前記タスクを実施させることと、を含む、方法。
【請求項2】
ローカルデモンストレーションデータを受信することが、前記スキルテンプレートの前記デモンストレーションサブタスクのための複数の遷移条件の各々に関してローカルデモンストレーションデータを受信することを含む、請求項1に記載の方法。
【請求項3】
前記スキルテンプレートが、前記デモンストレーションサブタスクの全ての遷移条件よりも少ない遷移条件がローカルデモンストレーションデータを必要とすることを指定する、請求項1に記載の方法。
【請求項4】
前記スキルテンプレートが、ハードウェア非依存である、請求項1に記載の方法。
【請求項5】
複数の異なるロボットモデルに前記スキルテンプレートを適応させることを更に含み、前記適応させることは、前記複数の異なるロボットモデルによってそれぞれのローカルデモンストレーションデータを生成することを含む、請求項4に記載の方法。
【請求項6】
前記スキルテンプレートが、前記複数のサブタスクのうちの各サブタスクに関して、どの入力センサストリームが、前記サブタスクを完了するために必要とされるかを指定する、請求項1に記載の方法。
【請求項7】
前記ベース制御ポリシーが、複数の異なるロボットモデルにおけるデモンストレーションから生成された、請求項6に記載の方法。
【請求項8】
前記スキルテンプレートの第1のサブタスクが、複数の第2のサブタスクを有する異なる第2のスキルテンプレートを参照する、請求項1に記載の方法。
【請求項9】
システムであって、
1つ以上のコンピュータと、前記1つ以上のコンピュータによって実行されたとき、前記1つ以上のコンピュータに、
ロボットによって実施されるタスクのためのスキルテンプレートを受信することであって、前記スキルテンプレートが、複数のサブタスク、及び前記サブタスクのうちの1つ以上の間の1つ以上のそれぞれの遷移条件を有する状態機械を定義し、
前記スキルテンプレートが、前記サブタスクのうちのどれがローカルデモンストレーションデータを使用して精緻化されるデモンストレーションサブタスクであるかを示す、前記スキルテンプレートを受信することと、
前記スキルテンプレートのデモンストレーションサブタスクのためのベース制御ポリシーを取得することと、
前記スキルテンプレートの前記デモンストレーションサブタスクについて、前記デモンストレーションサブタスクの実施方法を前記ロボットでデモンストレーションするユーザから生成されたローカルデモンストレーションデータを受信することと、
前記デモンストレーションサブタスクのための機械学習モデルを精緻化することであって、前記デモンストレーションサブタスクのための前記機械学習モデルが、1つ以上の入力センサストリームを使用して、前記ロボットによって実行されるコマンドを生成するように構成されている、前記機械学習モデルを精緻化することと、
前記ロボットにおいて前記スキルテンプレートを実行し、それによって、前記ロボットに、前記スキルテンプレートによって定義された前記状態機械を通して遷移させて、前記機械学習モデルによって生成されたコマンドを実施させることを含む、前記タスクを実施させることと、を含む、オペレーションを実施させるように動作可能な命令を記憶する、1つ以上の記憶デバイスと、を備える、システム。
【請求項10】
ローカルデモンストレーションデータを受信することが、前記スキルテンプレートの前記デモンストレーションサブタスクのための複数の遷移条件の各々に関してローカルデモンストレーションデータを受信することを含む、請求項9に記載のシステム。
【請求項11】
前記スキルテンプレートが、前記デモンストレーションサブタスクの全ての遷移条件よりも少ない遷移条件が、ローカルデモンストレーションデータを必要とすることを指定する、請求項9に記載のシステム。
【請求項12】
前記スキルテンプレートが、ハードウェア非依存である、請求項9に記載のシステム。
【請求項13】
前記オペレーションが、複数の異なるロボットモデルに前記スキルテンプレートを適応させることを更に含み、前記適応させることは、前記複数の異なるロボットモデルによってそれぞれのローカルデモンストレーションデータを生成することを含む、請求項12に記載のシステム。
【請求項14】
前記スキルテンプレートが、前記複数のサブタスクのうちの各サブタスクに関して、どの入力センサストリームが、前記サブタスクを完了するために必要とされるかを指定する、請求項9に記載のシステム。
【請求項15】
前記ベース制御ポリシーが、複数の異なるロボットモデルにおけるデモンストレーションから生成された、請求項14に記載のシステム。
【請求項16】
前記スキルテンプレートの第1のサブタスクが、複数の第2のサブタスクを有する異なる第2のスキルテンプレートを参照する、請求項9に記載のシステム。
【請求項17】
1つ以上の非一時的コンピュータ記憶媒体であって、1つ以上のコンピュータによって実行されるとき、前記1つ以上のコンピュータに、
ロボットによって実施されるタスクのためのスキルテンプレートを受信することであって、前記スキルテンプレートが、複数のサブタスク、及び前記サブタスクのうちの1つ以上の間の1つ以上のそれぞれの遷移条件を有する状態機械を定義し、
前記スキルテンプレートが、前記サブタスクのうちのどれがローカルデモンストレーションデータを使用して精緻化されるデモンストレーションサブタスクであるかを示す、前記スキルテンプレートを受信することと、
前記スキルテンプレートのデモンストレーションサブタスクのためのベース制御ポリシーを取得することと、
前記スキルテンプレートの前記デモンストレーションサブタスクについて、前記デモンストレーションサブタスクの実施方法を前記ロボットでデモンストレーションするユーザから生成されたローカルデモンストレーションデータを受信することと、
前記デモンストレーションサブタスクのための機械学習モデルを精緻化することであって、前記デモンストレーションサブタスクのための前記機械学習モデルが、1つ以上の入力センサストリームを使用して、前記ロボットによって実行されるコマンドを生成するように構成されている、前記機械学習モデルを精緻化することと、
前記ロボットにおいて前記スキルテンプレートを実行し、それによって、前記ロボットに、前記スキルテンプレートによって定義された前記状態機械を通して遷移させて、前記機械学習モデルによって生成されたコマンドを実施させることを含む、前記タスクを実施させることと、を含むオペレーションを実施させるコンピュータプログラム命令で符号化された、1つ以上の非一時的コンピュータ記憶媒体。
【請求項18】
ローカルデモンストレーションデータを受信することが、前記スキルテンプレートの前記デモンストレーションサブタスクのための複数の遷移条件の各々に関してローカルデモンストレーションデータを受信することを含む、請求項17に記載の1つ以上の非一時的コンピュータ記憶媒体。
【請求項19】
前記スキルテンプレートが、前記デモンストレーションサブタスクの全ての遷移条件よりも少ない遷移条件が、ローカルデモンストレーションデータを必要とすることを指定する、請求項17に記載の1つ以上の非一時的コンピュータ記憶媒体。
【請求項20】
前記スキルテンプレートが、ハードウェア非依存である、請求項17に記載の1つ以上の非一時的コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ロボット工学に関し、より具体的には、ロボットの動きを計画することに関する。
【背景技術】
【0002】
ロボット制御は、タスクを実施するためにロボットの物理的な動きを制御することを指す。例えば、自動車を組み立てる産業用ロボットは、最初に自動車部品を拾い上げ、次いで、自動車部品を自動車のフレームに溶接するようにプログラムすることができる。これらの動作の各々は、それ自体、ロボットモータ及びアクチュエータによる数十又は数百の個々の動きを含むことができる。
【0003】
ロボット工学計画は、従来、特定のタスクを達成するためにロボットコンポーネントがどのように移動するべきかを綿密に指示するために、膨大な量の手動プログラミングを必要としてきた。手動プログラミングは、退屈で、時間がかかり、エラーを起こしやすい。加えて、1つのワークセルのために手動で生成されるスケジュールは、概して、他のワークセルに使用することができない。本明細書では、ワークセルは、ロボットが動作する物理的環境である。ワークセルは、ロボットがワークセル内でどのように移動することができるかについて制約を課す、特定の物理的特性、例えば、物理的寸法を有する。それゆえ、1つのワークセルに関して手動でプログラムされたスケジュールは、異なるロボット、異なる数のロボット、又は異なる物理的寸法を有するワークセルと互換性がない場合がある。
【0004】
特定のタスクを実施させるようにロボットを制御するために、機械学習制御アルゴリズム、例えば、強化学習を使用することに対して、いくつかの研究が行われてきた。しかしながら、ロボットは、従来の学習手法を概して不満足なものにするいくつかの欠点を有する。
【0005】
まず、ロボットは、元来、非常に複雑かつ高次元の連続的な動作空間を有する。それゆえ、全ての可能な候補動作を生成し、評価することは計算コストが高い。第二に、ロボット制御は、ほとんどの可能な動作が特定のタスクを完了することをもたらさないため、報酬が非常に疎な環境である。報酬形成(reward shaping)として既知の技法が、疎らな報酬問題を緩和するために用いられてきたが、それは、概して、手作業で設計された報酬関数に対して拡張可能ではない。
【0006】
更なる複雑化させる要因は、ロボット制御のためにロボット学習を使用することに関する従来の技法が非常に脆弱であることである。これは、作業可能なモデルが成功裏に訓練されたとしても、タスク、ロボット、又は環境に対する非常に小さな変更で、モデル全体が完全に使用不能になる可能性があることを意味する。
【0007】
これらの問題の全ては、ロボット制御のための強化学習などの技法を使用する従来の方法が、作業を行うことがそもそも困難であり、うまくスケーリングせず、他の状況に汎化されない計算コストの高いプロセスをもたらすことを意味する。
【発明の概要】
【0008】
本明細書は、デモンストレーションベースのロボット学習に関する技法を説明する。特に、本明細書は、ロボットが、デモンストレーションデータを使用して学習されたカスタマイズされた制御ポリシーを有する1つ以上のサブタスクを有するスキルテンプレートをどのように実行することができるかを説明する。
【0009】
本明細書では、タスクは、1つ以上のサブタスクを実施することを伴う特定のロボットの能力を指す。例えば、コネクタ挿入タスクは、ロボットがワイヤコネクタをソケットに挿入することを可能にする能力である。このタスクは、典型的には、2つのサブタスク:1)ロボットのツールをソケットの場所に移動させることと、2)コネクタをソケットの特定の場所に挿入することと、を含む。
【0010】
本明細書では、サブタスクは、ツールを使用してロボットによって実施されるオペレーションである。簡潔にするために、ロボットがわずか1つのツールを有するとき、サブタスクは、全体としてロボットによって実施されるオペレーションとして説明することができる。例示的なサブタスクは、ほんの数例を挙げると、溶接、接着剤分注、部品位置決め、及び表面研磨を含む。サブタスクは、概して、サブタスクを実施するために必要とされるツールを示すタイプ、並びにサブタスクが実施されるワークセルの座標系内の場所と関連付けられる。
【0011】
本明細書では、スキルテンプレート、又は簡潔に、テンプレートは、ロボットが特定のタスクを実施するように調整されることを可能にするデータ及びソフトウェアの集合体である。スキルテンプレートデータは、タスクを実施するために必要とされる1つ以上のサブタスク、並びにスキルのどのサブタスクがローカルデモンストレーション学習を必要とするか、及びどの知覚ストリームが成功又は失敗を決定するために必要とされるかを記述する情報を表す。それゆえ、スキルテンプレートは、ローカルデモンストレーション学習を必要とするデモンストレーションサブタスク、ローカルデモンストレーション学習を必要としない非デモンストレーションサブタスク、又はその両方を定義することができる。
【0012】
これらの技法は、機械学習、例えば、強化学習を使用して制御することが従来困難であったロボットタスクに特に有利である。これらのタスクには、作業空間内の物体との物理的接触を伴うタスク、例えば、ほんの数例を挙げると、研磨、接続及び挿入タスク、並びにワイヤルーティングが挙げられる。
【0013】
本明細書において説明される主題の特定の実施形態は、以下の利点のうちの1つ以上を実現するように実装することができる。本明細書において説明されるデモンストレーションデータを使用する学習は、従来の強化学習方法の問題を汎化するために、疎らな報酬及び不能を解決する。
【0014】
システムは、視覚、固有感覚(関節)データ、触覚データ、及び任意の他の特徴を使用して、タスクを実施することができ、これにより、システムが、高精度で特定のロボットモデルに迅速に適応することが可能となる。ロボット工学における最小感知の古典的な見解とは対照的に、「センサリッチロボット操作」に重点が置かれている。これは、概して、より安価なロボットを使用して、より少ない設定時間で同じタスクを行うことができることを意味する。
【0015】
以下に説明される技法は、機械学習技法が、適切にインストールされたハードウェア抽象化を有する任意の適切なロボットに迅速に適応させることを可能にする。典型的なシナリオでは、1人の非専門家が、1日未満の設定時間でスキルテンプレートを実行するようにロボットを訓練することができる。これは、専門家のチームが、報酬関数の設計に数週間の間、問題に取り組むことを必要とする可能性があり、非常に大規模なデータセンタで数週間の訓練時間を必要とする、従来の方法からの大幅な改善である。これは、機械学習ロボット制御が、多くのタイプのロボット及びシステムが以前に全く見たことがないロボットにも、広く分配されることを効果的に可能にする。
【0016】
これらの技法は、ロボット学習をサービスとして効果的に実装することができ、これは、これらの技法へのより大きなアクセスをもたらす。これにより、ロボット産業全体が全体的により安全かつより効率的になる。
【0017】
強化学習、機械学習を伴う知覚データ処理、及び高度なインピーダンス/アドミタンス制御の組み合わせは、タスクの複雑さにもかかわらず、産業用途において必要とされるような非常に高い成功率で実施するロボットスキルを可能にする。
【0018】
本明細書の主題の1つ以上の実施形態の詳細は、添付の図面及び以下の説明に記載される。主題の他の特徴、態様、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0019】
図1】例示的なデモンストレーション学習システムの図である。
図2A】ローカルデモンストレーションデータに基づいて、カスタマイズされた制御ポリシーを使用してサブタスクを実行するための例示的なシステムの図である。
図2B】ローカルデモンストレーションデータを使用してサブタスクを実行するための別の例示的なシステムの図である。
図2C】残差強化学習を使用してサブタスクを実行するための別の例示的なシステムの図である。
図3A】複数の異なるセンサストリームからのセンサデータを組み合わせるための例示的なプロセスのフローチャートである。
図3B】カメラリストバンドの図である。
図3C】カメラリストバンドの別の例示的な図である。
図3D】カメラリストバンドの別の例示的な図である。
図4】例示的なスキルテンプレートを例解する。
図5】スキルテンプレートを使用してスキルを実施するようにロボットを構成するための例示的なプロセスのフローチャートである。
図6A】力をガイドとして使用するタスクに対してスキルテンプレートを使用するための例示的なプロセスのフローチャートである。
図6B】クラウドベースの訓練システムを使用してスキルテンプレートを訓練するための例示的なプロセスのフローチャートである。 様々な図面における同様の参照番号及び名称は、同様の要素を示す。
【発明を実施するための形態】
【0020】
図1は、例示的なデモンストレーション学習システムの図である。システム100は、本明細書で説明されたデモンストレーションベースの学習技法を実装することができるシステムの一実施例である。
【0021】
システム100は、オンライン実行システム110、訓練システム120、及びロボットインターフェースサブシステム160を含む、いくつかの機能コンポーネントを含む。これらのコンポーネントの各々は、任意の適切な通信ネットワーク、例えば、イントラネット若しくはインターネット、又はネットワークの組み合わせを通じて互いに結合された1つ以上の場所において、1つ以上のコンピュータ上にインストールされたコンピュータプログラムとして実装することができる。
【0022】
システム100は、2つの基本モード:デモンストレーションモード及び実行モードでロボット170a~nを制御するように動作する。
【0023】
デモンストレーションモードでは、ユーザは、1つ以上のロボット170a~nを制御して、特定のタスク又はサブタスクを実施することができる。その間に、オンライン実行システム110は、ステータスメッセージ135及びオンライン観測145を収集して、ローカルデモンストレーションデータを生成する。デモンストレーションデータコレクタ150は、ステータスメッセージ135及びオンライン観測145からローカルデモンストレーションデータ115を生成することができるモジュールであり、オンライン実行システム110は、次いで、訓練システム120に提供することができる。次いで、訓練システムは、タスク及びタスクを実施するロボットの両方の特定の特性に固有であるカスタマイズされた制御ポリシー125を生成することができる。
【0024】
本明細書では、制御ポリシーは、ロボットが所与の観測入力に対して実施する1つ以上の次の動作を生成するモジュール又はサブシステムである。制御ポリシーの出力は、ポリシーによって直接出力されるコマンドとして、又はロボット制御スタックの機構を通して複数のロボットコンポーネントによって各々消費される上位コマンドとして、1つ以上のロボットコンポーネント、例えば、モータ又はアクチュエータへの動きに影響を及ぼすことができる。それゆえ、制御ポリシーは、環境観測を1つ以上の動作に変換する、1つ以上の機械学習モデルを含むことができる。
【0025】
本明細書では、ローカルデモンストレーションデータは、ロボットに物理的な動きを実施させることによって、ロボットが特定のタスクをどのように実施することができるかをデモンストレーションするための、ユーザがロボットを制御している間に収集されたデータである。ローカルデモンストレーションデータは、運動学データ、例えば、関節位置、配向、及び角度を含むことができる。ローカルデモンストレーションデータはまた、センサデータ、例えば、1つ以上のセンサから収集されたデータを含むことができる。センサとしては、力センサ、視覚センサ、例えば、カメラ、深度カメラ、及びライダ、電気接続センサ、加速度センサ、オーディオセンサ、ジャイロ、接触センサ、レーダセンサ、並びに近接センサ、例えば、ほんの数例を挙げると、赤外線近接センサ、容量性近接センサ、又は誘導性近接センサを挙げることができる。
【0026】
典型的には、ローカルデモンストレーションデータは、デモンストレーションモードにおいてロボットを制御するユーザに近接している、1つ以上のロボットから取得される。しかしながら、ユーザとロボットとの間の物理的近接性は、ローカルデモンストレーションデータを取得するための要件ではない。例えば、ユーザは、リモートユーザインターフェースを通して特定のロボットからリモートでローカルデモンストレーションデータを取得することができる。
【0027】
訓練システム120は、機械学習技法を使用して、ローカルデモンストレーションデータ115からカスタマイズされた制御ポリシー125を生成することができるコンピュータシステムである。訓練システム120は、典型的には、オンライン実行システム110よりもはるかに多くのコンピューティングリソースを有する。例えば、訓練システム120は、数百又は数千のコンピューティングノードを有するクラウドベースのコンピューティングシステムであり得る。
【0028】
カスタマイズされた制御ポリシー125を生成するために、訓練システム120は、まず、タスクのためのベース制御ポリシーを取得するか、又は事前生成することができる。ベース制御ポリシーは、任意の十分に類似したロボットがタスクを実施することができるように比較的近くなるようにするために、特定のタスクに対して十分に良好に機能することが予想される制御ポリシーである。大多数のタスクに対して、ベース制御ポリシー単独では、十分に信頼できる成功を伴ってタスクを達成するために十分に正確であることは予想されない。例えば、接続及び挿入タスクは、典型的には、サブミリメートル精度を必要とし、これは、特定のロボットのためのローカルデモンストレーションデータによって提供される仕様なしでは取得することができない精度である。
【0029】
特定のタスクに対するベース制御ポリシーは、様々な方法で生成することができる。例えば、ベース制御ポリシーは、手動でプログラムされ、従来の強化学習技法を使用して、又は本明細書において説明されるデモンストレーションベースの学習技法を使用して訓練されることができる。これらの技法の全ては、ベース制御ポリシーを生成するときに時間があまり考慮されないため、タスクのためのローカルデモンストレーションデータを受信する前にベース制御ポリシーを事前生成するのに好適であり得る。
【0030】
いくつかの実装形態では、訓練システムは、汎化された訓練データ165からベース制御ポリシーを生成する。オンライン実行システム110によって収集されたローカルデモンストレーションデータ115は、典型的には、1つの特定のロボット又は1つの特定のロボットモデルに特有であるが、汎化された訓練データ165は、対照的に、同じモデルである必要はなく、同じ現場に位置付けられた、又は同じ製造業者によって構築された、1つ以上の他のロボットから生成され得る。例えば、汎化された訓練データ165は、異なる特性を有し、異なるモデルである数十又は数百又は数千の異なるロボットから現場を離れて生成され得る。加えて、汎化された訓練データ165は、物理的ロボットから生成される必要さえない。例えば、汎化された訓練データは、物理的ロボットのシミュレーションから生成されたデータを含むことができる。
【0031】
それゆえ、ローカルデモンストレーションデータ115は、ユーザがアクセスし、操作することができる特定のロボットに固有であるという意味でローカルである。ローカルデモンストレーションデータ115は、そのように特定のロボットに固有のデータを表すが、ローカル変数、例えば、特定のタスクの特定の特性、並びに特定の作業環境の特定の特性を表すこともできる。
【0032】
ベース制御ポリシーはまた、スキルテンプレートを開発するプロセス中に収集されるシステムデモンストレーションデータを使用して定義することもできる。例えば、スキルテンプレートを生成するエンティティと関連付けられたエンジニアのチームは、システム100から遠隔にある及び/又はシステム100と関連付けられていない施設において、1つ以上のロボットを使用してデモンストレーションを実施することができる。システムデモンストレーションデータを生成するために使用されるロボットはまた、ワークセル170内のロボット170a~nと同じロボット又は同じロボットモデルである必要もない。この場合、システムデモンストレーションデータを使用して、ベース制御ポリシーの動作をブートストラップすることができる。次いで、ベース制御ポリシーは、より計算コストの高い、洗練された学習方法を使用して、カスタマイズされた制御ポリシーに適応させることができる。
【0033】
ローカルデモンストレーションデータを使用してベース制御ポリシーを適応させることは、例えば、システムデモンストレーションデータを収集することによって、又は汎化された訓練データ165を使用して訓練することによって、ベース制御ポリシーを生成することと比較して、比較的速いという非常に望ましい効果を有する。例えば、特定のタスクのための汎化された訓練データ165のサイズは、ローカルデモンストレーションデータ115よりも何桁も大きい傾向があり、それゆえ、ベース制御ポリシーを訓練することは、それを特定のロボットに適応させることよりもはるかに長くかかると予想される。例えば、ベース制御ポリシーを訓練することは、膨大なコンピューティングリソースを必要とする可能性があり、いくつかの場合では、データセンタは、汎化された訓練データからベース制御ポリシーを訓練するために、数日又は数週間にわたって動作する数百又は数千の機械を有する。対照的に、ローカルデモンストレーションデータ115を使用してベース制御ポリシーを適合させることは、数時間しかかからない可能性がある。
【0034】
同様に、ベース制御ポリシーを定義するためにシステムデモンストレーションデータを収集することは、ローカルデモンストレーションデータに対して必要とされるよりもより多くの反復を必要とし得る。例えば、ベース制御ポリシーを定義するために、エンジニアのチームは、1000の成功したタスク及び1000の不成功のタスクをデモンストレーションすることができる。対照的に、結果として生じるベース制御ポリシーを十分に適応させることは、50の成功したデモンストレーション及び50の不成功のデモンストレーションのみを必要とし得る。
【0035】
それゆえ、訓練システム120は、デモンストレーションデータを生成するために使用された特定のロボットのためのカスタマイズされた制御ポリシー125を生成するために、ローカルデモンストレーションデータ115を使用するベース制御ポリシーを精緻化することができる。カスタマイズされた制御ポリシー125は、ベース制御ポリシーを調節して、特定のロボットの特性並びにタスクに対するローカル変数を考慮する。ローカルデモンストレーションデータを使用してカスタマイズされた制御ポリシー125を訓練することは、ベース制御ポリシーを訓練することよりもはるかに少ない時間しかかからない可能性がある。例えば、ベース制御ポリシーを訓練することは、多くの日数又は週数がかかる可能性があるが、ユーザは、ローカルデモンストレーションデータ115を生成するためにロボットでわずか1~2時間を費やし得、これが、次いで訓練システム120にアップロードされ得る。訓練システム120は、次いでベース制御ポリシーを訓練するためにかかる時間よりもはるかに短い時間、例えば、おそらくわずか1時間又は2時間で、カスタマイズされた制御ポリシー125を生成することができる。
【0036】
実行モードでは、実行エンジン130は、カスタマイズされた制御ポリシー125を使用して、任意のユーザ介入なしでタスクを自動的に実施することができる。オンライン実行システム110は、カスタマイズされた制御ポリシー125を使用して、ワークセル170内の1つ以上のロボット、例えば、ロボット170a~nを駆動するロボットインターフェースサブシステム160に提供されるコマンド155を生成することができる。オンライン実行システム110は、ロボット170a~nによって生成されたステータスメッセージ135、及びワークセル170内で観測を行う1つ以上のセンサ171a~nによって行われたオンライン観測145を消費することができる。図1に例解されるように、各センサ171は、それぞれのロボット170に結合される。しかしながら、センサは、ロボットと1対1の対応を有する必要はなく、ロボットに結合される必要もない。実際、各ロボットは、複数のセンサを有することができ、センサは、ワークセル170内の静止表面又は移動可能な表面上に取り付けられ得る。
【0037】
実行エンジン130は、訓練システム120から受信したカスタマイズされた制御ポリシー125への入力として、ステータスメッセージ135及びオンライン観測145を使用することができる。それゆえ、ロボット170a~nは、それらの特定の特性及びタスクの特定の特性に従ってタスクを完了するためにリアルタイムで反応することができる。
【0038】
それゆえ、制御ポリシーを調節するためにローカルデモンストレーションデータを使用することは、大きく異なるユーザ経験をもたらす。ユーザの観点から、カスタマイズされた制御ポリシーを用いてタスクを非常に正確に実施するようにロボットを訓練することは、ローカルデモンストレーションデータを生成することと、カスタマイズされた制御ポリシーが生成されるのを待つこととを含み、1日未満の設定時間がかかり得る、非常に迅速なプロセスである。速度は、事前計算されたベース制御ポリシーを活用することから得られる。
【0039】
この配置は、通常、それらが工業生産に好適となるように、手動で設計された報酬関数の試験及び生成に数週間、好適な訓練データの生成に数週間、モデルの訓練、試験、及び精緻化に更に数週間を必要とする既存のロボット学習方法に対して大きな技法的改善を導入する。
【0040】
加えて、従来のロボット強化学習とは異なり、ローカルデモンストレーションデータを使用することは、ロボット、タスク、及び環境の特性における小さい摂動に対して非常にロバスト性である。会社が新しいロボットモデルを購入した場合、ユーザは、新しいカスタマイズされた制御ポリシーのための新しいローカルデモンストレーションデータを生成するのに1日を費やすだけでよい。これは、ロボット、タスク、又は環境の物理的特性に対する任意の変化が、初めから全数週間にわたるプロセスを開始することを必要とし得る、既存の強化学習方法とは対照的である。
【0041】
デモンストレーションベースの学習プロセスを開始するために、オンライン実行システムは、訓練システム120からスキルテンプレート105を受信することができる。上で説明されたように、スキルテンプレート105は、スキルを実施するために必要とされる1つ以上のサブタスクのシーケンス、サブタスクのうちのどれがローカルデモンストレーション学習を必要とするか、及びどの知覚ストリームがどのサブタスクに対して必要とされるか、並びにスキルテンプレートの1つのサブタスクの実施から次のサブタスクの実施にいつ遷移するかを指定する遷移条件を指定することができる。
【0042】
上で説明されたように、スキルテンプレートは、ローカルデモンストレーション学習を必要とするデモンストレーションサブタスク、ローカルデモンストレーション学習を必要としない非デモンストレーションサブタスク、又はその両方を定義することができる。
【0043】
デモンストレーションサブタスクは、上で説明されたように、汎化された訓練データ又はシステムデモンストレーションデータから予め計算することができる、ベース制御ポリシーに暗黙的又は明示的に結び付けられる。それゆえ、スキルテンプレートは、テンプレート内の各デモンストレーションサブタスクに関して、別個のベース制御ポリシー、又はベース制御ポリシーの識別子を含むことができる。
【0044】
スキルテンプレートはまた、各デモンストレーションサブタスクに関して、ローカルデモンストレーションデータを使用してデモンストレーションサブタスクを調整するために必要とされるソフトウェアモジュールを含むことができる。各デモンストレーションサブタスクは、異なるタイプの機械学習モデルに依存することができ、調整のために異なる技法を使用することができる。例えば、移動デモンストレーションサブタスクは、特定のタスク目標を見出すために、ローカルワークセル環境のカメラ画像に大きく依存することができる。それゆえ、移動デモンストレーションサブタスクのための調整手順は、ローカルデモンストレーションデータにおいて捕捉されたカメラ画像内の特徴を認識するように機械学習モデルをより大きく調整することができる。対照的に、挿入デモンストレーションサブタスクは、接続ソケットの縁部を感知し、適切に穏やかな力を使用してコネクタをソケットに挿入するために、力フィードバックデータに大きく依存し得る。したがって、挿入デモンストレーションサブタスクのための調整手順は、力知覚及び対応するフィードバックを扱う機械学習モデルをより大きく調整することができる。換言すると、スキルテンプレート内のサブタスクに関する基礎モデルが同じであっても、各サブタスクは、異なる方法でローカルデモンストレーションデータを組み込むためのそれ自体のそれぞれの調整手順を有することができる。
【0045】
非デモンストレーションサブタスクは、ベース制御ポリシーと関連付けられてもよいし、又は関連付けられなくてもよい。例えば、非デモンストレーションサブタスクは、単に特定の座標場所への移動を指定することができる。代替的に、非デモンストレーションサブタスクは、例えば、他のロボットから計算される際、センサデータを使用して関節が特定の座標場所にどのように移動すべきかを指定するベース制御ポリシーと関連付けられ得る。
【0046】
スキルテンプレートの目的は、特定のタスク能力を有するようにロボットをプログラミングするための汎化されたフレームワークを提供することである。特に、スキルテンプレートを使用して、比較的少ない労力で同様のタスクを実施するようにロボットを適応させることができる。それゆえ、特定のロボット及び特定の環境に対してスキルテンプレートを適応させることは、スキルテンプレート内の各デモンストレーションサブタスクのための訓練プロセスを実施することを伴う。簡潔にするために、このプロセスは、複数の別々に訓練されたモデルが関与し得る場合であっても、スキルテンプレートを訓練することと称され得る。
【0047】
例えば、ユーザは、第1の移動サブタスクと、それに続くコネクタ挿入サブタスクを実施することを指定する、コネクタ挿入スキルテンプレートをダウンロードすることができる。コネクタ挿入スキルテンプレートはまた、第1のサブタスクが、例えば、カメラからの視覚知覚ストリームに依存するが、第2のサブタスクが、例えば、力センサからの力知覚ストリームに依存することを指定することができる。コネクタ挿入スキルテンプレートはまた、第2のサブタスクのみがローカルデモンストレーション学習を必要とすることを指定することができる。これは、ロボットを特定の場所に移動させることが、通常、手近なタスクの状況又は作業環境において非常に依存しないためであり得る。しかしながら、作業環境が狭い空間要件を有する場合、テンプレートはまた、ロボットが作業環境の狭い空間要件を通してナビゲートすることを迅速に学習することができるように、第1のサブタスクが、ローカルデモンストレーション学習を必要とすることを指定してもよい。
【0048】
ロボットにコネクタ挿入スキルを装備するために、ユーザは、ローカルデモンストレーションデータが必要であるとスキルテンプレートによって示されるサブタスクの実施において、ロボットをガイドするだけでよい。ロボットは、訓練システムがコネクタ挿入サブタスクと関連付けられたベース制御ポリシーを精緻化するために使用することができる、ローカルデモンストレーションデータを自動的に捕捉する。カスタマイズされた制御ポリシーの訓練が完了するとき、ロボットは、サブタスクを実施するために装備されるように最終的に訓練されたカスタマイズされた制御ポリシーをダウンロードする必要があるだけである。
【0049】
特に、同じスキルテンプレートが、多くの異なる種類のタスクに対して使用することができる。例えば、同じコネクタ挿入スキルテンプレートを使用して、ロボットがHDMIケーブル挿入若しくはUSBケーブル挿入、又はその両方を実施するように装備することができる。必要とされることは、ユーザが、学習されているデモンストレーションサブタスクのためのベース制御ポリシーを精緻化するように、これらの異なる挿入サブタスクをデモンストレーションすることだけである。上で説明されたように、典型的には、このプロセスは、完全な制御ポリシーを最初から開発するか、又は学習するよりもはるかに少ない計算能力及びはるかに少ない時間しかかからない。
【0050】
加えて、スキルテンプレートアプローチは、ハードウェア非依存であり得る。これは、訓練システムが、その特定のロボットモデルに関する制御ポリシーを訓練したことがないときでも、スキルテンプレートを使用して、ロボットにタスクを実施させるように装備することができることを意味する。それゆえ、この技法は、強化学習を使用してロボットを制御することに伴う問題の多くを解決する。特に、非常に小さいハードウェア変更であっても、最初から制御ポリシーを再学習することを必要とし、費用がかかり、二重の労力である脆弱性の問題を解決する。
【0051】
ローカルデモンストレーションデータの収集を支持するために、システム100はまた、1つ以上のUIデバイス180及び1つ以上のデモンストレーションデバイス190を含むことができる。UIデバイス180は、カスタマイズされた制御ポリシー125を生成する際に最も有益である、ローカルデモンストレーションデータを取得する際にユーザをガイドするのを助けることができる。UIデバイス180は、どの種類の動作を実施するか又は繰り返すかについてユーザに命令するユーザインターフェース、並びにユーザがロボットの物理的に隣にいることなくロボットを制御することを可能にする拡張現実デバイスを含むことができる。
【0052】
デモンストレーションデバイス190は、システム100の主要なオペレーションを補助するデバイスである。概して、デモンストレーションデバイス190は、外部からの力データをローカルデモンストレーションデータに導入することなく、ユーザがロボットに対してスキルをデモンストレーションすることを可能にするデバイスである。換言すると、デモンストレーションデバイス190は、ユーザのデモンストレーション動作が、実行中に力センサが実際に読み取るものに影響を及ぼす可能性を低減することができる。
【0053】
オペレーション中、ロボットインターフェースサブシステム160及びオンライン実行システム110は、異なるタイミング制約に従って動作することができる。いくつかの実装形態では、ロボットインターフェースサブシステム160は、ハードリアルタイム要件を有するリアルタイムソフトウェア制御システムである。リアルタイムソフトウェア制御システムは、通常のオペレーションを達成するために厳密なタイミング要件内で実行することを必要とするソフトウェアシステムである。タイミング要件は、多くの場合、システムが障害状態に入ることを回避するために、ある動作が実行されなければならないこと、又は出力が特定の時間ウィンドウ内で生成されなければならないことを指定する。障害状態では、システムは、実行を停止するか、又は通常のオペレーションを中断する何らかの他の動作をする可能性がある。
【0054】
一方、オンライン実行システム110は、典型的には、オペレーションにおいてより高い柔軟性を有する。換言すると、オンライン実行システム110は、ロボットインターフェースサブシステム160が動作する全てのリアルタイム時間ウィンドウ内でコマンド155を提供し得るが、必ずしも提供する必要はない。しかしながら、センサベースの反応を行う能力を提供するために、オンライン実行システム110は、依然として厳密なタイミング要件の下で動作し得る。典型的なシステムでは、ロボットインターフェースサブシステム160のリアルタイム要件は、ロボットが5ミリ秒ごとにコマンドを提供することを必要とし、一方でオンライン実行システム110のオンライン要件は、オンライン実行システム110が20ミリ秒ごとにロボットインターフェースサブシステム160にコマンド155を提供すべきであることを指定する。しかしながら、かかるコマンドがオンライン時間ウィンドウ内に受信されない場合であっても、ロボットインターフェースサブシステム160は、必ずしも障害状態に入る必要はない。
【0055】
それゆえ、本明細書では、オンラインという用語は、オペレーションのための時間パラメータ及び剛性パラメータの両方を指す。時間ウィンドウは、リアルタイムロボットインターフェースサブシステム160の時間ウィンドウよりも大きく、タイミング制約が満たされないとき、典型的には、より多くの柔軟性が存在する。いくつかの実装形態では、ロボットインターフェースサブシステム160は、オンサイト実行エンジン150によって発行されたコマンド155が、複数の異なるバージョンのロボットと互換性があるように、ハードウェア非依存インターフェースを提供する。実行中、ロボットインターフェースサブシステム160は、オンライン実行システム150が、例えば、ローカルの障害又は他の予期せぬ条件に起因して、ロボットの動きに対するオンライン調節を行うことができるように、オンライン実行システム110に戻ってステータスメッセージ135を報告することができる。ロボットは、リアルタイムロボットであり得、これは、ロボットが、非常に制約されたタイムラインに従ってそれらのコマンドを継続的に実行するようにプログラムされることを意味する。例えば、各ロボットは、特定の周波数、例えば、100Hz又は1kHzにおいてロボットインターフェースサブシステム160からのコマンドを予想し得る。ロボットが予想されたコマンドを受信しない場合、ロボットは、障害モードに入り、動作を停止し得る。
【0056】
図2Aは、ローカルデモンストレーションデータに基づいて、カスタマイズされた制御ポリシーを使用してサブタスクを実行するための例示的なシステム200の図である。概して、複数のセンサ260からのデータは、複数の別々に訓練されたニューラルネットワークを通して供給され、単一の低次元タスク状態表現205に組み合わされる。次いで、低次元表現205は、ロボット270によって実行されるロボットコマンド235を生成するように構成されている、調整された制御ポリシー210への入力として使用される。それゆえ、システム200は、修正サブシステム280を通してベース制御ポリシーの修正をもたらすことによって、ローカルデモンストレーションデータに基づきカスタマイズされた制御ポリシーを実装することができる。
【0057】
センサ260は、ロボット又はロボットのワークセル内のターゲットの視覚特性を表す知覚データストリームを生成する知覚センサを含むことができる。例えば、より良好な視覚能力を達成するために、ロボットツールは、複数のカメラ、例えば、ほんの数例を挙げると、可視光カメラ、赤外線カメラ、及び深度カメラを装備することができる。
【0058】
異なる知覚データストリーム202は、それぞれの畳み込みニューラルネットワーク220a~nによって独立して処理され得る。各知覚データストリーム202は、異なる知覚センサ、例えば、異なるカメラ又は異なるタイプのカメラに対応することができる。各カメラからのデータは、異なるそれぞれの畳み込みニューラルネットワークによって処理され得る。
【0059】
センサ260はまた、ロボット又はロボットのコンポーネントの物理的特性を表す、ロボット状態データストリーム204を生成する1つ以上のロボット状態センサを含む。例えば、ロボット状態データストリーム204は、ほんの数例を挙げると、ロボット又はロボットのそれぞれのコンポーネントの力、トルク、角度、位置、速度、及び加速度を表すことができる。ロボット状態データストリーム204の各々は、それぞれのディープニューラルネットワーク230a~mによって処理され得る。
【0060】
修正サブシステム280は、センサデータを並列に処理する任意の数のニューラルネットワークサブシステムを有することができる。いくつかの実装形態では、システムは、1つの知覚ストリーム及び1つのロボット状態データストリームのみを含む。
【0061】
ニューラルネットワークサブシステムの出力は、ロボット270によって実施されているサブタスクの状態を累積的に表すタスク状態表現205のそれぞれの部分である。いくつかの実装形態では、タスク状態表現205は、100未満の特徴、例えば、10、30、又は50の特徴を有する低次元表現である。低次元タスク状態表現を有することは、学習すべきモデルパラメータがより少ないことを意味し、これは、ローカルデモンストレーションデータが特定のサブタスクを適応させるために使用され得る速度を更に増加させる。
【0062】
次いで、タスク状態表現205は、調整された制御ポリシー210への入力として使用される。実行中に、調整された制御ポリシー210は、入力タスク状態表現205から、次いでロボット270によって実行されるロボットコマンド235を生成する。
【0063】
訓練中、訓練エンジン240は、ローカルにデモンストレーションされた動作275、並びに調整された制御ポリシー210によって生成された提案コマンド245の表現を使用することによって、パラメータ補正255を生成する。次いで、訓練エンジンは、パラメータ補正255を使用して、調整された制御ポリシー210を精緻化することができ、その結果、将来の反復において調整された制御ポリシー210によって生成されたコマンドは、ローカルにデモンストレーションされた動作275により厳密に一致する。
【0064】
訓練プロセスでは、調整された制御ポリシー210は、訓練されているデモンストレーションサブタスクと関連付けられたベース制御ポリシーで初期化され得る。調整された制御ポリシー210は、ローカルにデモンストレーションされた動作275を使用して反復的に更新することができる。訓練エンジン240は、調整された制御ポリシー210を調節するための任意の適切な機械学習技法、例えば、教師あり学習、回帰、又は強化学習を使用することができる。調整された制御ポリシー210がニューラルネットワークを使用して実装されるとき、パラメータ補正235は、出力された提案コマンド245が将来の反復においてローカルにデモンストレーションされた動作275により近くなるように、ネットワークを通して逆伝搬され得る。
【0065】
上述したように、スキルテンプレートの各サブタスクは、それらの基礎となるモデルのアーキテクチャが同じか、又は類似しているときでさえ、異なる訓練優先度を有し得る。それゆえ、いくつかの実装形態では、訓練エンジン240は、任意選択的に、調整された制御ポリシー210の更新方法を指定するサブタスクハイパーパラメータ275を入力として取得することができる。例えば、サブタスクハイパーパラメータは、視覚感知が非常に重要であることを示すことができる。それゆえ、訓練エンジン240は、調整された制御ポリシー210をより積極的に補正して、ローカルにデモンストレーションされた動作275で捕捉されたカメラデータと整合させることができる。いくつかの実装形態では、サブタスクハイパーパラメータ275は、異なるサブタスクごとに使用される別個の訓練モジュールを識別する。
【0066】
図2Bは、ローカルデモンストレーションデータを使用してサブタスクを実行するための別の例示的なシステムの図である。この実施例では、単一の調整された制御ポリシーのみを有する代わりに、システムは、複数の独立した制御ポリシー210a~nを含む。各制御ポリシー210a~nは、タスク状態表現205を使用して、それぞれのロボットサブコマンド234a~nを生成することができる。次いで、システムは、サブコマンドを組み合わせて、ロボット270によって実行される単一のロボットコマンド235を生成することができる。
【0067】
複数の別々に調整可能な制御ポリシーを有することは、例えば、異なる更新速度を有する複数のセンサからのデータを使用することができる、センサリッチな環境において有利であり得る。例えば、異なる制御ポリシー210a~nは、異なる更新速度で実行することができ、これは、システムが、単純な制御アルゴリズム及びより高度な制御アルゴリズムの両方を同じシステムに組み込むことを可能にする。例えば、1つの制御ポリシーは、画像データよりもはるかに速い速度で更新され得る、現在の力データを使用してロボットコマンドに焦点を合わせることができる。一方、別の制御ポリシーは、現在の画像データを使用するロボットコマンドに焦点を合わせることができ、これは、非決定性の実行時間を有し得る、より高度な画像認識アルゴリズムを必要とし得る。その結果、力データに迅速に適応できるだけでなく、力データへの適応を減速させることなく、画像データにも適応できるシステムが得られる。訓練中、サブタスクハイパーパラメータは、別々に調整可能な制御ポリシー210-anの各々について別々の訓練手順を識別することができる。
【0068】
図2Cは、残差強化学習を使用してサブタスクを実行するための別の例示的なシステムの図である。この実施例では、ロボットコマンドを生成する単一の調整された制御ポリシーを有する代わりに、システムは、残差強化学習サブシステム212を使用して、ベース制御ポリシー250によって生成されたベース動作215を修正する、補正動作225を生成する。
【0069】
この実施例では、ベース制御ポリシー250は、1つ以上のセンサ260からセンサデータ245を入力として取得し、ベース動作215を生成する。上で説明されたように、ベース制御ポリシー250の出力は、ロボット270のそれぞれのコンポーネントによって消費される1つ以上のコマンドであり得る。
【0070】
実行中、強化学習サブシステム212は、入力タスク状態表現205から、ベース動作215と組み合わされる補正動作225を生成する。補正動作225は、ベース制御ポリシー250からベース動作215を修正するという意味で補正的である。結果として生じるロボットコマンド235は、次いでロボット270によって実行され得る。
【0071】
従来の強化学習プロセスは、2つの段階:(1)システムが新しい候補動作を生成する動作段階、及び(2)モデルの重みが、各候補動作の累積報酬を最大化するように調節される訓練段階を使用してきた。上記の背景技術セクションで説明されたように、ロボット工学のために強化学習を使用する従来の手法は、深刻な疎な報酬問題に悩まされており、これは、動作段階中にランダムに生成される動作が、タスクに関する報酬関数によって任意のタイプの報酬を得る可能性が極めて低いことを意味する。
【0072】
しかし、従来の強化学習とは異なり、ローカルデモンストレーションデータを使用することは、動作段階中にどの動作を選択すべきかに関する全ての情報を提供することができる。換言すると、ローカルデモンストレーションデータは、動作のシーケンスを提供することができ、それゆえ、動作はランダムに生成される必要がない。この技法は、問題空間を大きく制約し、モデルの収束をはるかに速くする。
【0073】
訓練中、ロボット270を駆動するためにローカルデモンストレーションデータが使用される。換言すると、補正動作225及びベース動作215から生成されたロボットコマンド235は、ロボット270を駆動するために使用される必要がある。各時間工程において、強化学習サブシステム210は、ロボット270を物理的に移動させるために使用された、デモンストレーションされた動作の表現を受信する。強化学習サブシステム210はまた、ベース制御ポリシー250によって生成されたベース動作215を受信する。
【0074】
強化学習サブシステム210は、次いでデモンストレーションされた動作をベース動作215と比較することによって、再構築された補正動作を生成することができる。強化学習サブシステム210はまた、報酬関数を使用して、再構築された補正動作に対する実際の報酬値を生成することができる。
【0075】
強化学習サブシステム210はまた、強化学習モデルの現在の状態によって生成された、予測補正動作、並びに予測補正動作を使用することによって生成された予測報酬値を生成することができる。予測補正動作は、現在のタスク状態表現205に対して強化学習サブシステム210によって生成された補正動作である。
【0076】
次いで、強化学習サブシステム210は、予測補正動作、予測報酬値、再構築された補正動作、及び実際の報酬値を使用して、強化モデルに関する重み更新を計算することができる。訓練データの反復にわたって、重み更新は、予測された補正動作を、デモンストレーション動作によって反映された再構築された補正動作に向けて調節するように機能する。強化学習サブシステム210は、任意の適切な報酬最大化手順に従って、重み更新を計算することができる。
【0077】
図2A図2Cに例解されるアーキテクチャによって与えられる1つの能力は、異なる更新速度を有するセンサストリームのための複数の異なるモデルを組み合わせるための能力である。いくつかのリアルタイムロボットは、非常に厳しい制御ループ要件を有し、したがって、リアルタイムロボットは、例えば、100、1000、又は10,000Hzにおいて、高周波数更新を生成する、力及びトルクセンサを装備することができる。対照的に、60Hz超で動作するカメラ又は深度カメラはほとんどない。
【0078】
複数の並列かつ独立したセンサストリーム、及び任意選択的に、複数の異なる制御ポリシーを有する図2A図2Cに例解されたアーキテクチャは、これらの異なるデータ速度を組み合わせることを可能にする。
【0079】
図3Aは、複数の異なるセンサストリームからのセンサデータを組み合わせるための例示的なプロセスのフローチャートである。プロセスは、1つ以上の場所において、1つ以上のコンピュータを有するコンピュータシステム、例えば、図1のシステム100によって実施され得る。プロセスは、1つ以上のコンピュータのシステムによって実施されるものとして説明される。
【0080】
システムは、ベース更新速度を選択する(302)。ベース更新速度は、学習サブシステム、例えば、調整された制御ポリシー210がロボットを駆動するためのコマンドを生成する速度を規定する。いくつかの実装形態では、システムは、ロボットの最小リアルタイム更新速度に基づいて、ベース更新速度を選択する。代替的に、システムは、最速速度でデータを生成するセンサに基づいて、ベース更新速度を選択することができる。
【0081】
システムは、それぞれの更新速度でタスク状態表現のそれぞれの部分を生成する(304)。ニューラルネットワークサブシステムは、独立して並列に動作することができるので、ニューラルネットワークサブシステムは、それぞれのセンサの速度によって規定された速度において、タスク状態表現のそれぞれの部分を繰り返し生成することができる。
【0082】
システムの独立した並列の性質を強化するために、いくつかの実装形態では、システムは、タスク状態表現の異なる部分が書き込まれる複数の別個のメモリデバイス又はメモリ区分を維持する。これは、異なるニューラルネットワークサブシステムが、高周波数でそれらの出力を生成する間、メモリアクセスのために競合することを防止することができる。
【0083】
システムは、ベース更新速度においてタスク状態表現を繰り返し生成する(306)。ベース更新速度によって定義される各期間中に、システムは、複数のニューラルネットワークサブシステムによって出力された直近に更新されたセンサデータから読み取ることによって、タスク状態表現の新しいバージョンを生成することができる。例えば、システムは、複数の別個のメモリデバイス又はメモリ区分から読み出して、完全なタスク状態表現を生成することができる。特に、これは、いくつかのニューラルネットワークサブシステムによって生成されたデータが、消費される速度とは異なる速度で生成されることを意味する。例えば、より遅い更新速度を有するセンサに関して、データは、生成されるよりもはるかに速い速度で消費され得る。
【0084】
システムは、タスク状態表現を繰り返し使用して、ベース更新速度においてロボットのためのコマンドを生成する(308)。独立した並列のニューラルネットワークサブシステムを使用することによって、システムは、ハードリアルタイム制約を有するロボットにも電力供給するために、コマンドが十分に速い更新速度で生成されることを確実とすることができる。
【0085】
この配置はまた、システムが、異なる更新周波数を有する複数の独立した制御アルゴリズムを同時に供給することができることを意味する。例えば、図2Bに関して上で説明されたように、システムが単一のコマンドを生成するのではなく、システムは、各々がサブコマンドを生成する複数の独立した制御ポリシーを含むことができる。次いで、システムは、サブコマンドを、複数の異なる制御アルゴリズムの出力を表す最終的なハイブリッドロボットコマンドに組み合わせることによって、最終的なコマンドを生成することができる。
【0086】
例えば、視覚制御アルゴリズムは、認識された物体に向かってロボットをより速く移動させることができる。一方、力制御アルゴリズムは、ロボットが接触した表面に沿ってロボットに追跡させることができる。視覚制御アルゴリズムは、典型的には、力制御アルゴリズムよりもはるかに遅い速度で更新されるが、システムは、依然として、図2A図2Cに描写されるアーキテクチャを使用して、ベース更新速度で両方を同時に電力供給することができる。
【0087】
図2A図2Cに例解されるアーキテクチャは、大きなリエンジニアリングなしにシステムの能力を拡張する多くの機会を提供する。複数の並列で独立したデータストリームは、ローカルのデモンストレーション学習のために有利な機械学習関数を実装することを可能にする。
【0088】
例えば、特定の環境において実施させるようにロボットをより完全に適応させるために、ローカル環境データを考慮に入れるセンサを一体化させることが非常に有利であり得る。
【0089】
ローカル環境データを使用する一実施例は、電気的接続性を考慮する関数である。電気的接続性は、2つのコンポーネント間に電流を確立することを伴う、様々な困難なロボットタスクのための報酬係数として有用であり得る。これらのタスクは、ほんの数例を挙げると、ケーブルをジャックに挿入すること、電源プラグを電源ソケットに挿入すること、及び電球をねじ込むことを含む。
【0090】
電気的接続性を修正サブシステム280に一体化するために、例えば、センサ260のうちの1つであり得る、電気センサは、いつ電流が確立されたかを検出するようにワークセル内に構成され得る。次いで、電気センサの出力が、別個のニューラルネットワークサブシステムによって処理され得、その結果が、タスク状態表現205に追加され得る。代替的に、電気センサの出力は、調整された制御ポリシー又は強化学習サブシステムを実装するシステムへの入力として直接提供され得る。
【0091】
ローカル環境データを使用する別の実施例は、あるタイプのオーディオデータを考慮する関数である。例えば、多くのコネクタ挿入タスクは、タスクが成功裏に完了したときに非常に特徴的な音を有する。それゆえ、システムは、音声を捕捉するためのマイク、及びその出力がタスク状態表現に追加され得る音声処理ニューラルネットワークを使用することができる。次いで、システムは、コネクタ挿入の音の特定の音響特性を考慮に入れる関数を使用することができ、これは、学習サブシステムに、成功したコネクタ挿入がどのように聞こえるかを学習させる。
【0092】
図3Bは、カメラリストバンドの図である。カメラリストバンドは、上で説明したアーキテクチャを用いて高精度のデモンストレーション学習を実施するために使用することができるタイプの豊富な機器の一実施例である。図3Bは、ロボットアームの端部におけるツールが最も閲覧者に近い斜視図である。
【0093】
この実施例では、カメラリストバンドは、ロボットアーム335の最端部に位置するツール345の直前でロボットアーム335上に取り付けられる。カメラリストバンドは、カラー345でロボットアーム335上に取り付けられ、4つの放射状に取り付けられたカメラ310a~dを有する。
【0094】
カラー345は、カラー345がロボットアームの端部にしっかりと取り付けられることを可能にする、任意の適切な凸形状を有することができる。カラー345は、第三者製造業者によって構築されたロボットに追加されるように設計することができる。例えば、スキルテンプレートを分配するシステムはまた、非エキスパートユーザがモデルを迅速に収束させるのを支援するために、カメラリストバンドを分配することもできる。代替的又は追加的に、カラー345は、製造業者による製造プロセス中にロボットアームに一体化され得る。
【0095】
カラー345は、楕円形状、例えば、円形若しくは卵形、又は矩形形状を有することができる。カラー345は、ツール345が締結される前にロボットアームの端部に締結される単一の固体体積から形成することができる。又は、カラー345は、締結機構、例えば、留め金又はラッチによって開放され及び確実に閉鎖され得る。カラー345は、ロボットアームへの確実な接続を提供する任意の適切な材料、例えば、硬質プラスチック、ガラス繊維、布地、又は金属、例えば、アルミニウム若しくは鋼から構成することができる。
【0096】
各カメラ310a~dは、センサ、他の電子機器、及びそれぞれのレンズ315a~dをカラー345に固定するそれぞれのマウント325a~dを有する。カラー345はまた、カメラ310a~dによって捕捉された体積を照明するための1つ以上のライト355a~bを含むことができる。概して、カメラ310a~dは、ツール345又はツール345のすぐ後ろの作業体積の異なるそれぞれの図を捕捉するように配置される。
【0097】
例示的なカメラリストバンドは、4つの放射状に取り付けられたカメラを有するが、任意の適切な数のカメラ、例えば、2つ、5つ、又は10のカメラを使用することができる。上で説明されたように、修正サブシステム280のアーキテクチャは、任意の数のセンサストリームがタスク状態表現に含まれることを可能にする。例えば、ロボットと関連付けられたコンピュータシステムは、異なるそれぞれの畳み込みニューラルネットワークを実装して、カメラ310a~dの各々によって並列に生成されたセンサデータを処理することができる。次いで、処理されたカメラ出力は、タスク状態表現を生成するために組み合わせることができ、タスク状態表現は、上で説明されたように、異なる周波数で動作する複数の制御アルゴリズムに電力供給するために使用することができる。上で説明されたように、処理されたカメラ出力は、力センサ、トルクセンサ、位置センサ、速度センサ、若しくは触覚センサ、又はこれらのセンサの任意の適切な組み合わせの出力を独立して処理する他のネットワークからの出力と組み合わせることができる。
【0098】
概して、デモンストレーション学習プロセスにおいてカメラリストバンドを使用することは、システムがより多くの位置及び配向において報酬条件を認識することができるため、モデルのより速い収束をもたらす。それゆえ、カメラリストバンドを使用することは、ベース制御ポリシーをローカルデモンストレーションデータに適応させるために必要とされる訓練時間の量を更に低減させる効果を有する。
【0099】
図3Cは、カメラリストバンドの別の例示的な図である。図3Cは、カメラの出力をそれぞれの畳み込みニューラルネットワークに供給するために使用することができるケーブル配線385a~dを含む、カメラリストバンドを実装するために使用され得る更なる機器を例解する。図3Cはまた、追加の深度カメラ375がどのようにカラー345上に取り付けられ得るかを例解する。上で説明されたように、システムのアーキテクチャは、任意の他のセンサが知覚システムに一体化されることを可能にし、それゆえ、例えば、別個に訓練された畳み込みニューラルネットワークが、深度カメラ375の出力を処理して、タスク状態表現の別の部分を生成することができる。
【0100】
図3Dは、カメラリストバンドの別の例示的な図である。図3Dは、金属カラー及び4つの放射状に取り付けられたカメラ317a~dを有するカメラリストバンドの斜視図である。
【0101】
ローカルデモンストレーションデータを使用して、制御ポリシーを精緻化するためのこれらの基本機構を用いて、ユーザは、タスクを構成して、ハードウェア非依存のスキルテンプレートを構築することができ、これは、多くの異なる種類のロボットにおいて、及び多くの異なる種類の環境において、タスクを迅速に展開するためにダウンロード及び使用することができる。
【0102】
図4は、例示的なスキルテンプレート400を例解する。概して、スキルテンプレートは、タスクを実施するために必要とされる複数のサブタスクのための状態機械を定義する。特に、スキルテンプレートは、階層的に構成可能であり、これは、各サブタスクがスタンドアローンタスク又は別のスキルテンプレートであり得ることを意味する。
【0103】
スキルテンプレートの各サブタスクは、サブタスクidを有し、かつサブタスクメタデータを含み、サブタスクメタデータは、サブタスクがデモンストレーションサブタスクであるか、若しくは非デモンストレーションサブタスクであるか、又はサブタスクが別個に訓練されるべき別のスキルテンプレートを参照するかを含む。サブタスクメタデータはまた、サブタスクを実施するためにどのセンサストリームが使用されるかを示すこともできる。デモンストレーションサブタスクであるサブタスクは、ローカルデモンストレーションデータからの学習を通して学習する補正動作と組み合わされる、ベースポリシーを識別するベースポリシーidを加えて含む。各デモンストレーションサブタスクはまた、サブタスクのための訓練プロセスを制御する、1つ以上のソフトウェアモジュールと明示的又は暗示的に関連付けられる。
【0104】
スキルテンプレートの各サブタスクはまた、スキルテンプレート内の別のタスクへの遷移が行われるべき条件を指定する、1つ以上の遷移条件も有する。遷移条件はまた、サブタスクのサブタスク目標とも称され得る。
【0105】
図4の実施例は、従来のロボット学習技法を用いて達成することが悪名高くも困難であったタスクを実施するためのスキルテンプレートを例解する。タスクは、把持及び接続挿入タスクであり、ロボットがワークセル内のワイヤを見出し、ワイヤの一方の端部上のコネクタをワークセル内にあるソケットに挿入することを必要とする。ワイヤには多くの異なるテクスチャ、直径、及び色があるので、この問題を従来の強化学習技法で汎化することは困難である。加えて、スキルの把持サブタスクが成功しない場合、従来の強化学習技法は、次に何をすべきか、又はどのように進行することができるかをロボットに知らせることができない。
【0106】
スキルテンプレート400は、状態機械を定義するグラフのノードとして図4に表される4つのサブタスクを含む。実際には、図4の全ての情報は、任意の適切なフォーマットで、例えば、純粋なテキスト構成ファイル又はリレーショナルデータベース内のレコードとして表すことができる。代替的又は追加的に、ユーザインターフェースデバイスは、ユーザが、グラフィカルユーザインターフェースを通してスキルテンプレートを定義することを可能にするグラフィカルスキルテンプレートエディタを生成することができる。
【0107】
スキルテンプレート400内の第1のサブタスクは、移動サブタスク410である。移動サブタスク410は、ワークセル内にワイヤを位置付けるように設計されており、ロボットを初期位置から、例えば、組立ライン内の前のロボットによって設置されるようなワイヤの予想された場所へ移動させることを必要とする。ある場所から次の場所への移動は、典型的には、ロボットのローカル特性にあまり依存せず、それゆえ、移動サブタスク410のメタデータは、サブタスクが非デモンストレーションサブタスクであることを指定する。移動サブタスク410のメタデータはまた、ワイヤを位置付けるためにカメラストリームが必要であることを指定する。
【0108】
移動サブタスク410はまた、ロボットがスキルテンプレート内の次のサブタスクにいつ遷移すべきかを示す「ワイヤ視覚獲得」遷移条件405を指定する。
【0109】
スキルテンプレート400における次のサブタスクは、把持サブタスク420である。把持サブタスク420は、ワークセル内のワイヤを把持するように設計される。このサブタスクは、ワイヤの特性及びロボットの特性、特にワイヤを把持するために使用されるツールに非常に依存する。したがって、把持サブタスク420は、ローカルデモンストレーションデータによる精緻化を必要とするデモンストレーションサブタスクとして指定される。把持サブタスク420はまた、それにより、概してワイヤを把持するための以前に生成されたベース制御ポリシーを識別するベースポリシーidとも関連付けられる。
【0110】
把持サブタスク420はまた、サブタスクを実施するために必要とされるカメラストリーム及び力センサストリームの両方を指定する。
【0111】
把持サブタスク420はまた、3つの遷移条件を含む。第1の遷移条件である「ワイヤ見失い」遷移条件415は、ロボットがワイヤ見失ったときにトリガされる。これは、例えば、ワイヤが、例えば、人間又は別のロボットによってワークセル内で予期せずに移動するときに起こり得る。その場合、ロボットは、移動サブタスク410に遷移して戻る。
【0112】
把持サブタスク420の第2の遷移条件である「把持失敗」遷移条件425は、ロボットがワイヤを把持しようとするが失敗したときにトリガされる。そのシナリオでは、ロボットは、単にループバックして、把持サブタスク420を再び試みることができる。
【0113】
把持サブタスク420の第3の遷移条件である「把持成功」遷移条件435は、ロボットがワイヤを把持しようとして成功したときにトリガされる。
【0114】
デモンストレーションサブタスクはまた、どの遷移条件がローカルデモンストレーションデータを必要とするかを示すことができる。例えば、特定のサブタスクは、ローカルデモンストレーションデータが3つ全ての遷移条件に必要であることを示すことができる。それゆえ、ユーザは、把持がどのように成功するかをデモンストレーションし、失敗した把持をデモンストレーションし、ロボットがワイヤを見失ったことをデモンストレーションすることができる。
【0115】
スキルテンプレート400内の次のサブタスクは、第2の移動サブタスク430である。移動サブタスク430は、把持されたワイヤを、ソケットに近いワークセル内の場所に移動させるように設計される。ユーザがロボットに実施可能であることを望む多くの接続及び挿入状況において、ソケットは、非常に制約された空間内、例えば、組立中の食器洗浄機、テレビ、又は電子レンジの内側にある。その非常に制約された空間内での移動は、サブタスク及びワークセルに非常に依存するため、第2の移動タスク430が、ワークセル内の1つの場所から別の場所への移動のみを伴う場合であっても、デモンストレーションサブタスクとして指定される。それゆえ、移動サブタスクは、スキルの要件に応じて、デモンストレーションサブタスク又は非デモンストレーションサブタスクのいずれかであり得る。
【0116】
第2の移動サブタスク430は、デモンストレーションサブタスクであるように示されているが、第2の移動サブタスク430は、任意のベースポリシーidを指定しない。これは、いくつかのサブタスクが、ローカルワークセルに非常に依存しており、ベースポリシーを含むことが、モデルの収束を妨げるだけだからである。例えば、第2の動きタスク430が、機器の内側でロボットを非常に特定の配向で移動させることを必要とする場合、移動のために汎化されたベースポリシーは役に立たない。それゆえ、ユーザは、精緻化プロセスを実施して、ローカルデモンストレーションデータを生成することができ、ローカルデモンストレーションデータは、機器の内側で特定の配向を実現するために、ロボットがワークセルを通してどのように移動すべきかをデモンストレーションする。
【0117】
第2の移動サブタスク430は、2つの遷移条件445及び485を含む。第1の「ソケット視覚獲得」遷移条件445は、カメラストリームがソケットの視認を行うときにトリガされる。
【0118】
第2の「ワイヤ落下」遷移条件485は、ロボットがソケットに向かって移動しながらワイヤを落下させた場合にトリガされる。その場合、スキルテンプレート400は、スキルをもう一度やり直すために、ロボットが移動サブタスク1に戻る必要があることを指定する。スキルテンプレート内のこれらの種類の遷移条件は、従来の強化学習技法が単純に提供することができない、ロボットのための組込みロバスト性及び動的反応のレベルを提供する。
【0119】
スキルテンプレート400内の最後のサブタスクは、挿入サブタスク440である。挿入サブタスク440は、把持されたワイヤのコネクタをソケットに挿入するように設計される。挿入サブタスク440は、ワイヤのタイプ及びソケットのタイプに非常に依存し、それゆえ、スキルテンプレート400は、挿入サブタスク440が、概して挿入サブタスクに関するベースポリシーidと関連付けられたデモンストレーションサブタスクであることを示す。挿入サブタスク440はまた、サブタスクがカメラストリーム及び力センサストリームの両方を必要とすることを示す。
【0120】
挿入サブタスク440は、3つの遷移条件を含む。第1の「挿入失敗」遷移条件465は、挿入がいずれかの理由で失敗したときにトリガされ、再び挿入を試みることを指定する。第2の「ソケット見失い」遷移条件455は、ソケットが図らずもカメラの視野外に移動したときにトリガされ、非常に制約された空間内のワイヤをソケットの場所に再び移動させることを指定する。最後に、「ワイヤ落下」遷移条件475は、挿入タスクの実施中にワイヤが落下したときにトリガされる。その場合、スキルテンプレート400は、第1の移動サブタスク410まで遡ることを指定する。
【0121】
図4で例解されるスキルテンプレートの主な利点のうちの1つは、開発者によるその構成可能性である。これは、新しいスキルテンプレートが、すでに開発されたサブタスクから構成され得ることを意味する。この機能はまた、階層的構成可能性を含み、これは、特定のスキルテンプレート内の各サブタスクが別のスキルテンプレートを参照することができることを意味する。
【0122】
例えば、代替的な実装形態では、挿入サブタスク440は、複数の細かく制御された動きの状態機械を定義する、挿入スキルテンプレートを実際に参照することができる。例えば、挿入スキルテンプレートは、コネクタをソケットにできるだけ正確に位置合わせすることを目標とする第1の移動サブタスクと、コネクタとソケットの側面との間の接触を部分的に達成することを目標とする第2の移動サブタスクと、ソケットの側面を力ガイドとして使用することによって完全な接続を達成することを目標とする第3の移動サブタスクと、を含むことができる。
【0123】
更なるスキルテンプレートが、スキルテンプレート400から階層的に構成することができる。例えば、スキルテンプレート400は、電子機器を組み立てるために必要とされるより複雑な組のサブタスクのうちの1つの小さい一片であり得る。全体のスキルテンプレートは、サブタスク、例えば、スキルテンプレート400を達成するためにスキルテンプレートを各々が参照する、複数のコネクタ挿入サブタスクを有することができる。
【0124】
図5は、スキルテンプレートを使用してスキルを実施するようにロボットを構成するための例示的なプロセスのフローチャートである。プロセスは、1つ以上の場所において、1つ以上のコンピュータを有するコンピュータシステム、例えば、図1のシステム100によって実施され得る。プロセスは、1つ以上のコンピュータのシステムによって実施されるものとして説明される。
【0125】
システムは、スキルテンプレートを受信する(510)。上で説明されたように、スキルテンプレートは、複数のサブタスク、並びに、ロボットが1つのタスクの実施から次のタスクの実施にいつ遷移すべきかを定義する遷移条件を有する状態機械を定義する。加えて、スキルテンプレートは、タスクのうちのどれがローカルデモンストレーションデータを使用する精緻化を必要とするデモンストレーションサブタスクであるかを定義することができる。
【0126】
システムは、スキルテンプレートのデモンストレーションサブタスクのためのベース制御ポリシーを取得する(520)。ベース制御ポリシーは、複数の異なるロボットモデルから生成される汎化された制御ポリシーであり得る。
【0127】
システムは、デモンストレーションサブタスクのためのローカルデモンストレーションデータを受信する(530)。ユーザは、入力デバイス又はユーザインターフェースを使用して、ロボットに複数の反復にわたってデモンストレーションサブタスクを実施させることができる。このプロセスの間、システムは、サブタスクを実施するためのローカルデモンストレーションデータを自動的に生成する。
【0128】
システムは、デモンストレーションサブタスクのための機械学習モデルを訓練する(540)。上で説明されたように、機械学習モデルは、1つ以上の入力センサストリームに関して、ロボットによって実行されるコマンドを生成するように構成され得、機械学習モデルは、ローカルデモンストレーションデータを使用して調整され得る。いくつかの実装形態では、機械学習モデルは、ベース制御ポリシーによって生成されたベース動作と組み合わされる補正動作を生成する残差強化学習モデルである。
【0129】
システムは、ロボットにおいてスキルテンプレートを実行する(550)。全てのデモンストレーションサブタスクを訓練した後、システムは、スキルテンプレートを使用して、ロボットにタスクを完全に実施させることができる。このプロセスの間、ロボットは、ローカルデモンストレーションデータを使用してロボットのハードウェア及び作業環境のために特別に合わせた、精緻化されたデモンストレーションサブタスクを使用する。
【0130】
図6Aは、力をガイドとして使用するタスクに対してスキルテンプレートを使用するための例示的なプロセスのフローチャートである。上で説明されたスキルテンプレート配置は、複数の非常に複雑なサブタスクから構成される、非常に高度なタスクを生成するための比較的容易な方法を提供する。かかるタスクの一実施例は、力データをガイドとして考慮するタスクを使用する、コネクタ挿入タスクである。これにより、ロボットは、別様に達成することができるよりもはるかに高い精度を達成することができる。プロセスは、1つ以上の場所において、1つ以上のコンピュータを有するコンピュータシステム、例えば、図1のシステム100によって実施され得る。プロセスは、1つ以上のコンピュータのシステムによって実施されるものとして説明される。
【0131】
システムは、ロボットによって保持された物体とロボットの環境内の表面との間の物理的接触力の確立を要求する遷移条件を有するスキルテンプレートを受信する(602)。上で説明されたように、スキルテンプレートは、複数のタスクを有する状態機械を定義することができる。遷移条件は、状態機械の第1のサブタスクと第2のサブタスクとの間の遷移を定義することができる。
【0132】
例えば、第1のサブタスクは、移動サブタスクであり、第2のサブタスクは、挿入サブタスクであり得る。遷移条件は、ロボットによって保持され、ソケットに挿入されるコネクタが、ソケットの縁部と物理的接触力を作製する必要があることを指定することができる。
【0133】
システムは、遷移のためのローカルデモンストレーションデータを受信する(604)。換言すると、システムは、第1のサブタスクと第2のサブタスクとの間の遷移をデモンストレーションするようにユーザに要求することができる。システムはまた、失敗シナリオをデモンストレーションするようにユーザに要求することができる。1つのかかる失敗シナリオは、ソケットの縁部との物理的接触力を失うことであり得る。それが発生した場合、スキルテンプレートは、テンプレートの第1の移動サブタスクに戻ることを指定することができ、その結果、ロボットは、遷移条件によって指定されるように物理的接触力を再確立することができる。
【0134】
システムは、ローカルデモンストレーションデータを使用して機械学習モデルを訓練する(606)。上で説明されたように、訓練を通して、システムは、物理的接触力の損失をもたらす動作を回避することを学習し、第2のタスク全体を通して物理的接触力を維持する可能性が高い動作を選択することを学習する。
【0135】
システムは、ロボットにおいて訓練されたスキルテンプレートを実行する(608)。これは、ロボットに、スキルテンプレートによって定義されたサブタスク及び遷移を自動的に実施させる。例えば、接続タスク及び挿入タスクに関して、ローカルデモンストレーションデータは、ロボットに、1つの特定の種類のコネクタを挿入することに対して非常に適応させることができる。
【0136】
図6Bは、クラウドベースの訓練システムを使用してスキルテンプレートを訓練するための例示的なプロセスのフローチャートである。概して、システムは、全てのデモンストレーションデータをローカルに生成し、次いで、デモンストレーションデータをクラウドベースの訓練システムにアップロードして、スキルテンプレートの全てのデモンストレーションサブタスクを訓練することができる。プロセスは、1つ以上の場所において、1つ以上のコンピュータを有するコンピュータシステム、例えば、図1のシステム100によって実施され得る。プロセスは、1つ以上のコンピュータのシステムによって実施されるものとして説明される。
【0137】
システムは、スキルテンプレートを受信する(610)。例えば、オンライン実行システムは、スキルテンプレートのデモンストレーションサブタスクを訓練するクラウドベースの訓練システムから、又は別のコンピュータシステムから、スキルテンプレートをダウンロードすることができる。
【0138】
システムは、スキルテンプレートによって定義された1つ以上のデモンストレーションサブタスクを識別する(620)。上で説明されたように、スキルテンプレートにおいて定義された各サブタスクは、サブタスクが、デモンストレーションサブタスクであるか非デモンストレーションサブタスクであるかを示す、メタデータと関連付けることができる。
【0139】
システムは、1つ以上のデモンストレーションサブタスクの各々についてローカルデモンストレーションデータのそれぞれの組を生成する(630)。上で説明されたように、システムは、ユーザがロボットを操作して、ローカルワークセル内でサブタスクを実施している間に、各々がローカルデモンストレーションデータを生成する別個のタスクシステムをインスタンス化して展開することができる。タスク状態表現は、データをタスク状態表現に寄与するセンサに関して更新速度が何であるかに関わらず、サブタスクのベース速度で生成することができる。これは、後に何らかの形で全てが照合されなければならないセンサデータの多くの異なる組を生成するのではなく、ローカルデモンストレーションデータを記憶し、編成する便利な方法を提供する。
【0140】
システムは、ローカルデモンストレーションデータの組をクラウドベースの訓練システムにアップロードする(640)。現実世界のタスクのためにロボットを用いるほとんどの施設は、高度な機械学習モデルを訓練するのに好適なオンサイトデータセンタを有しない。それゆえ、ローカルデモンストレーションデータは、タスクを実施するロボットと同じ場所に位置付けられたシステムによってオンサイトで収集することができるが、実際のモデルパラメータは、インターネット又は別のコンピュータネットワークを介してのみアクセス可能なクラウドベースの訓練システムによって生成することができる。
【0141】
上で説明されたように、ローカルデモンストレーションデータのサイズは、ベース制御ポリシーを訓練するために使用されるデータのサイズよりも数桁小さいことが予想される。それゆえ、ローカルデモンストレーションデータは大きい可能性があるが、アップロード負担は、妥当な時間量、例えば、数分~1時間のアップロード時間で管理可能である。
【0142】
クラウドベースの訓練システムは、ローカルデモンストレーションデータの各セットに関してそれぞれの訓練されたモデルパラメータを生成する(650)。上で説明されたように、訓練システムは、学習システムを訓練して、ロボットコマンドを生成することができ、ロボットコマンドは、例えば、ベース制御ポリシーによって生成されたベース動作を修正する修正動作から構成することができる。このプロセスの一部として、訓練システムは、各デモンストレーションサブタスクのためのそれぞれのベース制御ポリシーを、ローカルに、又はタスク若しくはスキルテンプレートを公開する第三者のコンピュータシステムであり得る、別のコンピュータシステムから取得することができる。
【0143】
クラウドベースの訓練システムは、典型的には、オンライン実行システムよりもはるかに高い計算能力を有する。それゆえ、各デモンストレーションサブタスクを訓練することに伴う大きい計算負荷があるが、これらのオペレーションは、クラウドベースの訓練システム上で大規模に並列化することができる。したがって、典型的なシナリオでは、クラウドベースの訓練システム上のローカルなデモンストレーションデータからスキルテンプレートを訓練するために必要な時間は、わずか数時間である。
【0144】
システムは、クラウドベースの訓練システムによって生成された訓練済みモデルパラメータを受信する(660)。訓練されたモデルパラメータのサイズは、典型的には、特定のサブタスクのためのローカルデモンストレーションデータのサイズよりもはるかに小さく、それゆえ、モデルが訓練された後、訓練されたパラメータをダウンロードすることは、無視できる量の時間しかかからない。
【0145】
システムは、クラウドベースの訓練システムによって生成された、訓練されたモデルパラメータを使用してスキルテンプレートを実行する(670)。このプロセスの一部として、システムはまた、例えば、訓練システムから、それらの元のソースから、又は別のソースから、デモンストレーションサブタスクのためのベース制御ポリシーをダウンロードすることができる。次いで、訓練されたモデルパラメータを使用して、ロボットが実行するためのコマンドを生成することができる。デモンストレーションサブタスクのための強化学習システムでは、パラメータを使用して、ベース制御ポリシーによって生成されたベース動作を修正する、修正動作を生成することができる。次いで、オンライン実行システムは、特定のタスクを実施するようにロボットを駆動するために、結果として生じるロボットコマンドを繰り返し発行することができる。
【0146】
図6Bで説明したプロセスは、ロボットにその環境に合わせた方法で高精度のスキルを実施させるために、1日の間に1人のチームによって実施され得る。これは、他のシナリオに十分に汎化されないモデルを設計し、試験し、及び訓練するために多くのエンジニアのチームの数週間又は数ヶ月にわたる作業を必要とする、手動プログラミングの従来の方法、又は強化学習の従来の方法さえも超える大幅な改善である。
【0147】
本明細書では、ロボットは、ベース位置と、1つ以上の移動可能コンポーネントと、1つの座標系、例えば、デカルト座標における所望の位置、姿勢、又はその両方を、1つ以上の移動可能なコンポーネントを所望の位置又は姿勢に物理的に移動させるためのコマンドにマッピングするために使用され得る運動学的モデルと、を有する機械である。本明細書では、ツールは、ロボットの1つ以上の移動可能なコンポーネントの運動連鎖の一部であり、その端部に取り付けられたデバイスである。例示的なツールは、グリッパ、溶接デバイス、及び研磨デバイスを含む。
【0148】
本明細書では、タスクは、ツールによって実施されるオペレーションである。簡潔にするために、ロボットが1つのツールのみを有するとき、タスクは、ロボット全体によって実施されるオペレーションとして説明することができる。例示的なタスクは、ほんの数例を挙げると、溶接、接着剤分注、部品位置決め、及び表面研磨を含む。タスクは、概して、タスクを実施するのに必要なツールを示すタイプ、並びにタスクが実施されるワークセル内の位置と関連付けられる。
【0149】
本明細書において、運動計画は、タスク、タスクのクラスタ、又は遷移であり得る動作を実行するための情報を提供するデータ構造である。運動計画は、ロボットのための全ての制御可能な自由度に関する全ての値が、明示的又は暗示的に表されることを意味する、完全な制約となり得るか、又は、制御可能な自由度のいくつかの値が指定されていないことを意味する、不十分な制約となり得る。いくつかの実装形態では、運動計画に対応する動作を実際に実施するために、運動計画は、ロボットの全ての制御可能な自由度に関して、全ての必要な値を含むように完全に制約されなければならない。それゆえ、本明細書において説明される計画プロセス内のいくつかの点において、いくつかの運動計画は、不十分に制約され得るが、運動計画がロボットにおいて実際に実行される時間までに、運動計画は完全に制約され得る。いくつかの実装形態では、運動計画は、単一ロボットのための2つの構成状態間のタスクグラフ内の縁部を表す。それゆえ、概して、ロボット当たり1つのタスクグラフが存在する。
【0150】
本明細書において、運動掃引体積は、運動計画の実行全体の間にロボット又はツールの少なくとも一部分によって占有される空間の領域である。運動掃引体積は、ロボットツールシステムと関連付けられた衝突幾何学形状によって生成され得る。
【0151】
本明細書において、遷移は、始点と終点との間で実施される動きを記述する運動計画である。始点及び終点は、姿勢、座標系内の場所、又は実施されるタスクによって表すことができる。遷移は、ロボットのための1つ以上のそれぞれの制御可能な自由度(degrees of freedom、DOF)のうちの1つ以上の値を欠くことによって、不十分に制約され得る。いくつかの遷移は、自由運動を表す。本明細書では、自由運動は、自由度のうちのいずれも制約されない遷移である。例えば、姿勢Aから姿勢Bへ、これら2つの姿勢間の移動方法についての制限なしに、単純に移動するロボット運動は、自由運動である。計画プロセス中、自由運動に関するDOF変数は、最終的に値が割り当てられ、経路プランナは、ワークセルの物理的制約と競合しない運動の任意の適切な値を使用することができる。
【0152】
本明細書において説明されたロボット機能は、少なくとも部分的にハードウェア非依存である、ハードウェア非依存型ソフトウェアスタック、又は簡潔にするために単にソフトウェアスタック、によって実装され得る。換言すると、ソフトウェアスタックは、コマンドが具体的にロボットの特定のモデル又は特定のロボットコンポーネントに関することを必要とせずに、上で説明された計画プロセスによって生成されたコマンドを入力として受け入れることができる。例えば、ソフトウェアスタックは、図1のオンサイト実行エンジン150及びロボットインターフェースサブシステム160によって少なくとも部分的に実装され得る。
【0153】
ソフトウェアスタックは、一方向においてハードウェア特異性を増加させ、他方向においてソフトウェア抽象化を増加させる複数のレベルを含むことができる。ソフトウェアスタックの最下位レベルには、下位レベル動作を実行するデバイスと、下位レベルステータスを報告するセンサと、を含むロボットコンポーネントがある。例えば、ロボットは、モータ、エンコーダ、カメラ、ドライバ、グリッパ、特定用途向けセンサ、線形又は回転位置センサ、及び他の周辺デバイスを含む、様々な下位レベルコンポーネントを含むことができる。一実施例として、モータは、印加されるべきトルクの量を示すコマンドを受信することができる。コマンドの受信に応答して、モータは、例えば、エンコーダを使用して、ロボットの関節の現在位置を上位レベルのソフトウェアスタックに報告することができる。
【0154】
ソフトウェアスタック内の次に最も上位の各レベルは、複数の異なる基礎となる実装形態を支持するインターフェースを実装することができる。概して、レベル間の各インターフェースは、下位レベルから上位レベルにステータスメッセージを提供し、上位レベルから下位レベルにコマンドを提供する。
【0155】
典型的には、コマンド及びステータスメッセージは、各制御サイクル中に周期的に生成され、例えば、制御サイクル当たり1つのステータスメッセージ及び1つのコマンドが生成される。ソフトウェアスタックの下位レベルは、概して、ソフトウェアスタックの上位レベルよりも厳しいリアルタイム要件を有する。例えば、ソフトウェアスタックの最下位レベルでは、制御サイクルは、実際のリアルタイム要件を有することができる。本明細書において、リアルタイムとは、特定の制御サイクル時間内に、ソフトウェアスタックの1つのレベルにおいて受信されたコマンドが実行されなければならず、及び任意選択的に、ステータスメッセージがソフトウェアスタックの上位レベルに戻って提供されなければならないことを意味する。このリアルタイム要件が満たされない場合、ロボットは、例えば、全てのオペレーションをフリーズすることによって、障害状態に入るように構成することができる。
【0156】
次に最も上位のレベルでは、ソフトウェアスタックは、特定のコンポーネントのソフトウェア抽象化を含むことができ、これはモータフィードバックコントローラと称される。モータフィードバックコントローラは、文字通りのモータだけでなく、任意の適切な下位レベルコンポーネントのソフトウェア抽象化であり得る。それゆえ、モータフィードバックコントローラは、下位レベルハードウェアコンポーネントへのインターフェースを通して状態を受信し、スタック内の上位レベルから受信した上位レベルコマンドに基づいて、下位レベルハードウェアコンポーネントへのインターフェースを通してコマンドを送り返す。モータフィードバックコントローラは、上位レベルコマンドがどのように解釈され、下位レベルコマンドに変換されるべきかを決定する任意の適切な制御規則を有することができる。例えば、モータフィードバックコントローラは、上位レベルコマンドを下位レベルコマンドに変換するために、単純なロジック規則からより高度な機械学習技法までの任意のものを使用することができる。同様に、モータフィードバックコントローラは、障害状態に達したときを判定するための任意の適切な障害規則を使用することができる。例えば、モータフィードバックコントローラが、上位レベルコマンドを受信するが、制御サイクルの特定の部分内で下位レベルステータスを受信しない場合、モータフィードバックコントローラは、ロボットに、全てのオペレーションを停止する障害状態に入らせることができる。
【0157】
次に最も上位のレベルにおいて、ソフトウェアスタックは、アクチュエータフィードバックコントローラを含むことができる。アクチュエータフィードバックコントローラは、それぞれのモータフィードバックコントローラを通して複数のロボットコンポーネントを制御するための制御ロジックを含むことができる。例えば、いくつかのロボットコンポーネント、例えば、関節アームは、実際には複数のモータによって制御され得る。それゆえ、アクチュエータフィードバックコントローラは、その制御ロジックを使用して、複数のモータのモータフィードバックコントローラにコマンドを送信することによって、関節アームのソフトウェア抽象化を提供することができる。
【0158】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節フィードバックコントローラを含むことができる。関節フィードバックコントローラは、ロボットにおける論理的自由度にマッピングする関節を表すことができる。それゆえ、例えば、ロボットの手首は、アクチュエータの複雑なネットワークによって制御され得るが、関節フィードバックコントローラは、その複雑性を抽象化し、その自由度を単一の関節として公開することができる。それゆえ、各関節フィードバックコントローラは、アクチュエータフィードバックコントローラの任意の複雑なネットワークを制御することができる。一実施例として、6自由度ロボットは、各々が実際のフィードバックコントローラの別個のネットワークを制御する、6つの異なる関節フィードバックコントローラによって制御され得る。
【0159】
ソフトウェアスタックの各レベルはまた、レベル特有の制約の強制を実施することもできる。例えば、アクチュエータフィードバックコントローラによって受信された特定のトルク値が、許容可能な範囲外である場合、アクチュエータフィードバックコントローラは、それを範囲内になるように修正するか、又は障害状態に入り得る。
【0160】
関節フィードバックコントローラへの入力を駆動するために、ソフトウェアスタックは、システム内の各モータに関する下位レベルにある各コンポーネント、例えば、正、トルク、及び速度のためのコマンドパラメータを含む、コマンドベクトルを使用することができる。関節フィードバックコントローラからのステータスを公開するために、ソフトウェアスタックは、システム内の各モータに関する下位レベルの各コンポーネント、例えば、位置、速度、及びトルクのためのステータス情報を含む、ステータスベクトルを使用することができる。いくつかの実装形態では、コマンドベクトルはまた、下位レベルにあるコントローラによって強制される制約に関するいくつかの制限情報も含む。
【0161】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節収集コントローラを含むことができる。関節収集コントローラは、一組の部品抽象化として公開されるコマンド及びステータスベクトルの発行を管理することができる。各部品は、例えば、逆運動学計算を実施すること、制限情報、並びに関節状態ベクトル及び関節コマンドベクトルなどの運動学モデルを含むことができる。例えば、単一の関節収集コントローラを使用して、異なる組のポリシーを下位レベルの異なるサブシステムに適用することができる。関節収集コントローラは、モータが物理的にどのように表されるかと、制御ポリシーがそれらのパーツとどのように関連付けられるかとの間の関係を効果的に切り離すことができる。それゆえ、例えば、ロボットアームが移動可能なベースを有する場合、関節収集コントローラを使用して、アームがどのように移動するかについて一組の制限ポリシーを強制し、移動可能なベースがどのように移動するかについて異なる一組の制限ポリシーを強制することができる。
【0162】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節選択コントローラを含むことができる。関節選択コントローラは、異なるソースから発行されているコマンド間で動的に選択することに対して責任を負うことができる。換言すると、関節選択コントローラは、制御サイクル中に複数のコマンドを受信し、制御サイクル中に実行される複数のコマンドのうちの1つを選択することができる。リアルタイム制御サイクル中に複数のコマンドから動的に選択する能力により、従来のロボット制御システムよりも制御において柔軟性を大きく増加させる。
【0163】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節位置コントローラを含むことができる。関節位置コントローラは、目標パラメータを受信し、目標パラメータを達成するために必要なコマンドを動的に計算することができる。例えば、関節位置コントローラは、位置目標を受信することができ、目標を達成するための設定点を計算することができる。
【0164】
次に最も上位のレベルにおいて、ソフトウェアスタックは、デカルト位置コントローラ及びデカルト選択コントローラを含むことができる。デカルト位置コントローラは、入力としてデカルト空間における目標を受信し、逆運動学ソルバを使用して、関節位置空間における出力を計算することができる。次いで、デカルト選択コントローラは、関節位置空間内の計算結果をスタックの次の最下位レベル内の関節位置コントローラに渡す前に、デカルト位置コントローラによって計算された結果に対して制限ポリシーを強制することができる。例えば、デカルト位置コントローラは、デカルト座標x、y、及びzにおける3つの別個の目標状態を与えられ得る。いくつかの度に関して、目標状態は、位置であり得るが、一方で他の度に関して、目標状態は、所望の速度であり得る。
【0165】
それゆえ、ソフトウェアスタックによって与えられるこれらの機能は、上で説明されたより上位レベルの計画技法と自然にかみ合うように、制御指令が目標状態として容易に表現されるための広い柔軟性を提供する。換言すると、計画プロセスがプロセス定義グラフを使用して、行われる具体的な動作を生成するとき、動作は、個々のロボットコンポーネントのための下位レベルコマンドで指定される必要はない。むしろ、それらは、最終的に下位レベルコマンドになるまで、様々なレベルを通して変換されるソフトウェアスタックによって受け入れられる上位レベル目標として表現され得る。更に、計画プロセスを通じて生成された動作は、人間のオペレータが理解できるようにデカルト空間において指定することができ、これにより、スケジュールのデバッグ及び分析がより容易に、より迅速に、及びより直観的になる。加えて、計画プロセスを通して生成された動作は、任意の特定のロボットモデル又は下位レベルコマンドフォーマットに緊密に結合される必要はない。代わりに、計画プロセス中に生成された同じ動作は、異なるロボットモデルが同じ自由度を支持し、適切な制御レベルがソフトウェアスタック内に実装されている限り、異なるロボットモデルによって実際に実行され得る。
【0166】
本明細書で説明される主題及び機能的オペレーションの実施形態は、本明細書において開示された構造及びそれらの構造的均等物を含む、デジタル電子回路、有形に具現化されたコンピュータソフトウェア若しくはファームウェア、コンピュータハードウェア、又はそれらのうちの1つ以上の組み合わせにおいて、実装することができる。本明細書において説明される主題の実施形態は、1つ以上のコンピュータプログラム、すなわち、データ処理装置による実行のために、又はデータ処理装置のオペレーションを制御するために有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実装され得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダム若しくはシリアルアクセスメモリデバイス、又はそれらのうちの1つ以上の組み合わせであり得る。代替的又は追加的に、プログラム命令は、データ処理装置による実行のための好適な受信機装置への送信のための情報を符号化するために生成される、人工的に生成された伝搬信号、例えば、機械生成された電気信号、光信号、又は電磁信号上で符号化され得る。
【0167】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、及び機械を包含する。装置はまた、特殊目的ロジック回路、例えば、FPGA(field programmable gate array、フィールドプログラマブルゲートアレイ)又はASIC(application-specific integrated circuit、特定用途向け集積回路)であるか、又はそれを更に含むことができる。装置は、任意選択的に、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、又はそれらのうちの1つ以上の組み合わせを構成するコードを含むことができる。
【0168】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、又はコードとして称されるか又は説明され得る)コンピュータプログラムは、コンパイラ型言語若しくはインタープリタ型言語、又は宣言型言語若しくは手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアローンプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくはコンピューティング環境における使用に好適な他のユニットとして含む、任意の形態で展開することができる。プログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラム又はデータを保持するファイルの一部分、例えば、マークアップ言語文書内、問題のプログラム専用の単一ファイル内、又は複数の協調ファイル、例えば、1つ以上のモジュール、サブプログラム、又はコードの一部分を記憶するファイル内に記憶された1つ以上のスクリプトにおいて記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、又は1つのサイトに位置付けられるか、若しくは複数のサイトにわたって分散され、データ通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
【0169】
1つ以上のコンピュータのシステムが特定のオペレーション又は動作を実施するように構成されるとは、システムが、オペレーション中にシステムにオペレーション又は動作を実施させる、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせをインストールしていることを意味する。1つ以上のコンピュータプログラムが特定のオペレーション又は動作を実施するように構成されるとは、1つ以上のプログラムが、データ処理装置によって実行されたとき、装置にオペレーション又は動作を実施させる命令を含むことを意味する。
【0170】
本明細書で使用されるように、「エンジン」又は「ソフトウェアエンジン」は、入力とは異なる出力を提供する、ソフトウェア実装入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(software development kit、「SDK」)、又はオブジェクトなど、符号化された機能ブロックであり得る。各エンジンは、1つ以上のプロセッサ及びコンピュータ可読媒体を含む、任意の適切なタイプのコンピューティングデバイス、例えば、サーバ、モバイルフォン、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子書籍リーダ、ラップトップ若しくはデスクトップコンピュータ、PDA、スマートフォン、又は他の固定若しくはポータブルデバイス上に実装することができる。加えて、エンジンのうちの2つ以上は、同じコンピューティングデバイス上に、又は異なるコンピューティングデバイス上に実装され得る。
【0171】
本明細書で説明されるプロセス及びロジックフローは、入力データに対して動作し、出力を生成することによって機能を実施するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータによって実施され得る。プロセス及びロジックフローはまた、特殊目的ロジック回路、例えば、FPGA若しくはASICによって、又は特殊目的ロジック回路と1つ以上のプログラムされたコンピュータとの組み合わせによって実施され得る。
【0172】
コンピュータプログラムの実行に好適なコンピュータは、汎用、特殊目的マイクロプロセッサ若しくはその両方、又は任意の他の種類の中央処理装置に基づくことができる。概して、中央処理装置は、読み出し専用メモリ、又はランダムアクセスメモリ、又はその両方から命令及びデータを受信する。コンピュータの必須要素は、命令を実施するか又は実行するための中央処理装置、及び命令及びデータを記憶するための1つ以上のメモリデバイスである。中央処理装置及びメモリは、特殊目的ロジック回路によって補完され得るか、又は専用ロジック回路に組み込まれ得る。概して、コンピュータはまた、データを記憶するための1つ以上の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、又は光ディスクを含むか、又はそれらからデータを受信するか、それらにデータを転送するか、又はその両方を行うように動作可能に結合される。しかしながら、コンピュータは、かかるデバイスを有する必要はない。更に、コンピュータは、別のデバイス、例えば、ほんの数例を挙げると、モバイル電話、携帯情報端末(personal digital assistant、PDA)、モバイルオーディオ若しくはビデオプレーヤ、ゲームコンソール、全地球測位システム(Global Positioning System、GPS)受信機、又はポータブル記憶デバイス、例えば、ユニバーサルシリアルバス(universal serial bus、USB)フラッシュドライブに組み込まれ得る。
【0173】
コンピュータプログラム命令及びデータを記憶するのに好適なコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスク、光磁気ディスク、並びにCD-ROM及びDVD-ROMディスクを含む、全ての形態の不揮発性メモリ、媒体、及びメモリデバイスを含む。
【0174】
ユーザとの相互作用を提供するために、本明細書において説明される主題の実施形態は、ディスプレイデバイス、例えば、ユーザに情報を表示するためのCRT(cathode ray tube、陰極線管)又はLCD(liquid crystal display、液晶ディスプレイ)モニタと、キーボードと、ポインティングデバイス、例えば、マウス、トラックボール、又はユーザがコンピュータに入力を提供することができる存在感知ディスプレイ若しくは他の表面と、を有するコンピュータ上で実装され得る。他の種類のデバイスが、ユーザとの相互作用を提供するために同様に使用することができ、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり得、ユーザからの入力は、音響、音声、又は触覚入力を含む、任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、デバイスから文書を受信すること、例えば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。また、コンピュータは、テキストメッセージ又は他の形式のメッセージをパーソナルデバイス、例えば、スマートフォンに送信し、メッセージングアプリケーションを実行し、返信としてユーザから応答メッセージを受信することによって、ユーザと相互作用することができる。
【0175】
本明細書において説明される主題の実施形態は、例えば、データサーバとしてのバックエンドコンポーネントを含む、又はミドルウェアコンポーネント、例えば、アプリケーションサーバを含む、又はフロントエンドコンポーネント、例えば、グラフィカルユーザインターフェース、ウェブブラウザ、若しくはユーザが本明細書において説明される主題の実装形態と相互作用することができるアプリを有するクライアントコンピュータを含む、又は1つ以上のかかるバックエンド、ミドルウェア、若しくはフロントエンドコンポーネントの任意の組み合わせを含む、コンピューティングシステムにおいて実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形態又は媒体、例えば、通信ネットワークによって相互接続することができる。通信ネットワークの実施例は、ローカルエリアネットワーク(local area network、LAN)及びワイドエリアネットワーク(wide area network、WAN)、例えばインターネットを含む。
【0176】
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは、概して、互いに離れており、典型的には、通信ネットワークを介して相互作用する。クライアント及びサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、例えば、クライアントとして動作するデバイスと相互作用するユーザにデータを表示し、ユーザからユーザ入力を受信する目的で、データ、例えば、HTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、例えば、ユーザ相互作用の結果は、デバイスからサーバにおいて受信され得る。
【0177】
上で説明された実施形態に加えて、以下の実施形態もまた革新的である。
実施形態1は、方法であって、
ロボットによって実施されるタスクのためのスキルテンプレートを受信することであって、スキルテンプレートが、複数のサブタスク、及びサブタスクのうちの1つ以上の間の1つ以上のそれぞれの遷移条件を有する状態機械を定義し、
スキルテンプレートが、サブタスクのうちのどれがローカルデモンストレーションデータを使用して精緻化されるデモンストレーションサブタスクであるかを示す、受信することと、
スキルテンプレートのデモンストレーションサブタスクのためのベース制御ポリシーを取得することと、
スキルテンプレートのデモンストレーションサブタスクについて、デモンストレーションサブタスクの実施方法をロボットでデモンストレーションするユーザから生成されたローカルデモンストレーションデータを受信することと、
デモンストレーションサブタスクのための機械学習モデルを精緻化することであって、デモンストレーションサブタスクのための機械学習モデルが、1つ以上の入力センサストリームを使用して、ロボットによって実行されるコマンドを生成するように構成されている、精緻化することと、
ロボットにおいてスキルテンプレートを実行し、それによって、ロボットに、スキルテンプレートによって定義された状態機械を通して遷移させて、機械学習モデルによって生成されたコマンドを実施させることを含む、タスクを実施させることと、を含む。
実施形態2は、実施形態1の方法であり、ローカルデモンストレーションデータを受信することは、スキルテンプレートのデモンストレーションサブタスクのための複数の遷移条件の各々に関してローカルデモンストレーションデータを受信することを含む。
実施形態3は、実施形態1又は2に記載の方法であり、スキルテンプレートは、デモンストレーションサブタスクの全ての遷移条件よりも少ない遷移条件がローカルデモンストレーションデータを必要とすることを指定する。
実施形態4は、実施形態1~3のいずれか1つに記載の方法であり、スキルテンプレートは、ハードウェア非依存である。
実施形態5は、実施形態4に記載の方法であり、複数の異なるロボットモデルにスキルテンプレートを適応させることを更に含み、適応させることは、複数の異なるロボットモデルによってそれぞれのローカルデモンストレーションデータを生成することを含む。
実施形態6は、実施形態1~5のいずれか1つに記載の方法であり、スキルテンプレートは、複数のサブタスクのうちの各サブタスクに関して、どの入力センサストリームが、サブタスクを完了するために必要とされるかを指定する。
実施形態7は、実施形態6に記載の方法であり、ベース制御ポリシーは、複数の異なるロボットモデルにおけるデモンストレーションから生成された。
実施形態8は、実施形態1~7のいずれか1つに記載の方法であり、スキルテンプレートの第1のサブタスクは、複数の第2のサブタスクを有する異なる第2のスキルテンプレートを参照する。
実施形態9は、1つ以上のコンピュータによって実行されたときに、1つ以上のコンピュータに実施形態1~8のいずれか1つに記載の方法を実施させるように動作可能である命令を記憶する、1つ以上のコンピュータ及び1つ以上の記憶デバイスを備えるシステムである。
実施形態10は、コンピュータプログラムで符号化されたコンピュータ記憶媒体であり、プログラムは、データ処理装置によって実行されるとき、データ処理装置に実施形態1~8のいずれか1つに記載の方法を実施させるように動作可能な命令を含む。
【0178】
本明細書は、多くの特定の実装形態の詳細を含むが、これらは、任意の発明の範囲又は特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されるある特徴はまた、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されている様々な特徴は、複数の実施形態で別個に、又は任意の好適な部分的組み合わせで実装することもできる。更に、特徴は、ある組み合わせで動作するものとして上で説明され、最初にそのように特許請求され得るが、特許請求される組み合わせからの1つ以上の特徴は、いくつかの場合では、組み合わせから削除することができ、特許請求される組み合わせは、部分的組み合わせ又は部分的組み合わせの変形形態を対象とすることができる。
【0179】
同様に、オペレーションは特定の順序で図面内に描写されているが、これは、望ましい結果を達成するために、かかるオペレーションが示された特定の順序で若しくは連続的な順序で実施されること、又は全ての例解されたオペレーションが実施されることを必要とすると理解されるべきではない。ある状況では、マルチタスキング及び並列処理が有利であり得る。更に、上で説明された実施形態における様々なシステムモジュール及びコンポーネントの分離は、全ての実施形態においてかかる分離を必要とすると理解されるべきではなく、説明されたプログラムコンポーネント及びシステムは、概して、単一のソフトウェア製品にともに一体化され得るか、又は複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【0180】
主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲内である。例えば、特許請求の範囲内に記載された動作は、異なる順序で実施することができ、それでも所望の結果を達成することができる。一実施例として、添付の図面内に描写されたプロセスは、所望の結果を達成するために、示される特定の順序、又は連続的な順序を必ずしも必要としない。あるいくつかの場合では、マルチタスキング及び並列処理が有利であり得る。
図1
図2A
図2B
図2C
図3A
図3B
図3C
図3D
図4
図5
図6A
図6B