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