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

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

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

<>
  • 特表-ロボット制御計画の生成 図1
  • 特表-ロボット制御計画の生成 図2A
  • 特表-ロボット制御計画の生成 図2B
  • 特表-ロボット制御計画の生成 図2C
  • 特表-ロボット制御計画の生成 図2D
  • 特表-ロボット制御計画の生成 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-19
(54)【発明の名称】ロボット制御計画の生成
(51)【国際特許分類】
   B25J 9/22 20060101AFI20231212BHJP
   B25J 13/00 20060101ALI20231212BHJP
   G05B 19/042 20060101ALI20231212BHJP
   G06N 3/008 20230101ALI20231212BHJP
   G05B 19/418 20060101ALI20231212BHJP
【FI】
B25J9/22 A
B25J13/00 Z
G05B19/042
G06N3/008
G05B19/418 A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023533340
(86)(22)【出願日】2021-10-13
(85)【翻訳文提出日】2023-07-28
(86)【国際出願番号】 US2021054748
(87)【国際公開番号】W WO2022119652
(87)【国際公開日】2022-06-09
(31)【優先権主張番号】17/108,761
(32)【優先日】2020-12-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
(71)【出願人】
【識別番号】521430508
【氏名又は名称】イントリンジック イノベーション エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100126480
【弁理士】
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】バターフォス,ライアン
(72)【発明者】
【氏名】ラックストン,アダム ニコラス
【テーマコード(参考)】
3C100
3C707
5H220
【Fターム(参考)】
3C100AA22
3C100AA66
3C100BB06
3C100BB11
3C707JS02
3C707JU03
3C707KS33
3C707KS35
3C707KT01
3C707KT04
3C707LW12
5H220AA05
5H220BB12
5H220BB17
5H220CC09
5H220CX01
5H220CX09
5H220JJ12
5H220JJ21
5H220JJ53
(57)【要約】
【課題】 ロボットの動きを計画することである。
【解決手段】 ロボット制御計画を生成するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む、方法、システム、及び装置。方法のうちの1つは、ユーザデバイスから、複数の組立コンポーネントを組み立てるための指示書を描写する画像データを取得することと、機械学習モデルを使用して画像データを処理して、複数の組立コンポーネントを組み立てるための指示のシーケンスを表す指示データを生成することであって、機械学習モデルが、指示書を描写する画像を処理し、指示書において識別される指示のシーケンスを特徴付ける指示データを生成するように、訓練を通して構成されている、生成することと、指示データを処理して、複数の組立コンポーネントを組み立てるために1つ以上のロボットコンポーネントによって実行されるロボット制御計画を生成することと、1つ以上のロボットコンポーネントを使用してロボット制御計画を実行するために、ロボット制御計画をロボット制御システムに提供することと、を含む。
【選択図】 図1
【特許請求の範囲】
【請求項1】
方法であって、
ユーザデバイスから、複数の組立コンポーネントを組み立てるための指示書を描写する画像データを取得することと、
機械学習モデルを使用して前記画像データを処理して、前記複数の組立コンポーネントを組み立てるための指示のシーケンスを表す指示データを生成することであって、前記機械学習モデルが、指示書を描写する画像を処理し、前記指示書において識別される指示のシーケンスを特徴付ける指示データを生成するように、訓練を通して構成されている、前記指示データを生成することと、
前記指示データを処理して、前記複数の組立コンポーネントを組み立てるために1つ以上のロボットコンポーネントによって実行されるロボット制御計画を生成することと、
前記1つ以上のロボットコンポーネントを使用して前記ロボット制御計画を実行するために、前記ロボット制御計画をロボット制御システムに提供することと、を含む、方法。
【請求項2】
前記ロボット制御計画を生成することが、
前記ユーザデバイスから、前記複数の組立コンポーネントを描写する第2の画像データを取得することと、
前記組立コンポーネントのうちの1つ以上について、前記組立コンポーネントの1つ以上の特性を特徴付ける組立コンポーネントデータを取得することと、
i)前記指示データ、及びii)前記組立コンポーネントデータを処理して、前記ロボット制御計画を生成することと、を含む、請求項1に記載の方法。
【請求項3】
特定の組立コンポーネントについての組立コンポーネントデータを取得することが、
第2の機械学習モデルを使用して前記特定の組立コンポーネントを描写する前記第2の画像データを処理して、前記特定の組立コンポーネントについての前記組立コンポーネントデータを生成することであって、前記第2の機械学習モデルが、組立コンポーネントを描写する画像を処理し、前記組立コンポーネントの1つ以上の特性を特徴付ける組立コンポーネントデータを生成するように、訓練を通して構成されている、前記組立コンポーネントデータを生成することと、を含む、請求項2に記載の方法。
【請求項4】
特定の組立コンポーネントについての組立コンポーネントデータを取得することが、
前記第2の画像データにおいて前記特定の組立コンポーネントを識別することと、
データ記憶部から、前記特定の組立コンポーネントについての所定の組立コンポーネントデータを取得することと、を含む、請求項2又は3に記載の方法。
【請求項5】
前記組立コンポーネントデータが、前記複数の組立コンポーネントのうちの1つ以上について、
前記組立コンポーネントの材料、
前記組立コンポーネントの重量、
前記組立コンポーネントの密度、
前記組立コンポーネントの質量中心、
前記組立コンポーネントの強度、
前記組立コンポーネントの可撓性、又は
前記組立コンポーネントの1つ以上の好適な若しくは必要なタッチポイント、のうちの1つ以上を識別するデータを含む、請求項2~4のいずれか一項に記載の方法。
【請求項6】
前記複数の組立コンポーネントが、特定の製造業者によって製造されており、前記機械学習モデルが、前記特定の製造業者に対応する訓練例を使用して訓練されている、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記指示データが、複数の異なる製造業者によって作成された指示書を表すために使用することができるコンピュータ言語を使用して表される、請求項6に記載の方法。
【請求項8】
前記1つ以上のロボットコンポーネントが、一時的なロボット動作環境において前記ロボット制御計画を実行する、請求項1~7のいずれか一項に記載の方法。
【請求項9】
前記画像データが、前記複数の組立コンポーネントの各々を識別する前記指示書の一部分を描写する画像を含み、
前記指示データを生成することが、各組立コンポーネントについて、前記組立コンポーネントの表現を生成することと、生成された前記表現を使用して、前記指示書のそれぞれの他の部分に対応する前記画像データの1つ以上の他の画像内の前記組立コンポーネントのそれぞれの描写を識別することと、を含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
1つ以上のコンピュータと命令を記憶している1つ以上の記憶デバイスとを備えるシステムであって、前記命令が、前記1つ以上のコンピュータによって実行されたときに、前記1つ以上のコンピュータに、請求項1~9のいずれか一項に記載の方法を実施させるように動作可能である、システム。
【請求項11】
1つ以上のコンピュータによって実行されたときに、前記1つ以上のコンピュータに、請求項1~9のいずれか一項に記載の方法を実施させる命令を記憶している、1つ以上の非一時的記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2020年12月1日に出願された米国特許出願第17/108,761号の優先権を主張する。上記出願の開示は、その全体が参照により本明細書に組み込まれる
【背景技術】
【0002】
本明細書は、ロボット工学に関し、より具体的には、ロボットの動きを計画することに関する。
【0003】
ロボット計画は、タスクを実施するためにロボットコンポーネントの物理的な動きを順序付けることを指す。例えば、自動車を組み立てる産業用ロボットは、最初に自動車部品を拾い上げ、次いで、自動車部品を自動車のフレームに溶接するようにプログラムすることができる。これらのアクションの各々は、それ自体、ロボットモータ及びアクチュエータによる数十又は数百の個々の動きを含むことができる。
【0004】
ロボット計画は、従来、特定のタスクを達成するためにロボットコンポーネントがどのように移動するべきかを綿密に指示するために、膨大な量の人手によるプログラミングを必要としてきた。人手によるプログラミングは、退屈で、時間がかかり、エラーを起こしやすい。加えて、1つのロボット動作環境のために人手によって生成される計画は、通常、他のロボット動作環境に使用することができない。本明細書では、ロボット動作環境は、ロボットコンポーネントが動作する物理的環境である。ロボット動作環境は、ロボットコンポーネントがロボット動作環境内でどのように動くことができるかについて制約を課す、特定の物理的特性、例えば、物理的寸法を有する。したがって、1つのロボット動作環境のための人手によってプログラムされた計画は、異なる物理的寸法を有するロボット動作環境と互換性がない場合がある。
【0005】
ロボット動作環境は、多くの場合、2つ以上のロボットを含む。例えば、ロボット動作環境は、各々が自動車のフレーム上に異なる自動車部品を同時に溶接する複数のロボットコンポーネントを有する場合がある。これらの場合、計画プロセスは、特定のロボットコンポーネントにタスクを割り当てること、及びロボットコンポーネントの各々の全ての動きを計画することを含むことができる。これらの動きを、タスクを完了するための時間を最小限に抑えながらロボットコンポーネント間の衝突を回避するように人手によってプログラムすることは困難である。なぜなら、6Dの座標系における探索空間は非常に大きく、妥当な時間内に網羅的に探索することができないからである。
【発明の概要】
【0006】
本明細書は、概して、システムが、複数の組立コンポーネントを組み立てるタスクのための指示、例えば、家具の組立指示を特徴付ける指示データをどのように取得することができるかを記載する。次いで、システムは、指示データに従って、ロボット動作環境内で組立タスクを達成するために、1つ以上のロボットコンポーネントのためのロボット制御計画を生成することができる。いくつかの実装形態では、システムは、組立タスクのための指示書を表すデータを使用して、例えば、指示書の画像を使用して、指示データを生成することができる。いくつかの他の実装形態では、システムは、外部システムによって提供される、例えば、組立コンポーネントの製造業者によって提供される指示データを識別することができる。
【0007】
本明細書において説明される主題の特定の実施形態は、以下の利点のうちの1つ以上を実現するように実装することができる。
【0008】
本明細書に記載される技術を使用して、システムは、ロボット制御計画を自動的に生成して、システムが以前にロボット制御計画を生成したことのない新しい組立タスクを達成することができる。例えばシステムは、ロボットコンポーネントがこれまで組み立てたことのない家具を組み立てるために、ロボット制御計画を自動的に生成することができる。いくつかの実装形態では、ユーザは、他の家具を組み立てるための指示書を使用して訓練された、機械学習モデルへの入力として、家具の指示書を描写する画像を提供することができる。機械学習モデルは、新しい指示書を自動的に解析して、システムがロボット制御計画を生成するために使用することができる指示データを生成することができる。したがって、ユーザは、任意の新しい家具の指示書の画像を簡単に取り込むことができ、システムは、新しい家具を組み立てるためのロボット制御計画を提供することができる。
【0009】
本明細書で記載される技術を使用して、システムは、「一時的な」ロボット動作環境、すなわち、ロボットコンポーネントが1つ又は数タスクのみを完了する、かつ/又はロボットコンポーネントが短い期間、例えば、1日若しくは1週間後に分解若しくは取り外される環境に特有のロボット制御計画を生成することができる。例えば、ロボット動作環境は、ユーザの自宅、例えば、ガレージ内にあり得、ロボットコンポーネントは、特定のタスク、例えば家具を組み立てることを達成するために、ユーザの自宅に配送され得る。したがって、本明細書に記載される技術は、完全に自動化された方式で、かつ一時的なロボット動作環境において、複雑なアイテムの堅牢かつ信頼性のある組み立てを可能にすることができる。
【0010】
特定の例として、ユーザは、組み立てられていない家具、例えば、机を店から購入する場合がある。店が、梱包された机の組立コンポーネントをユーザの自宅に送るとき、店は、1つ以上のロボットコンポーネントも送ることができる。
【0011】
本明細書に記載される技術を使用して、ユーザは、例えば、ユーザの家のガレージにおいて、机を組み立てるための一時的なロボット動作環境を作成するために、家の中でロボットコンポーネントをセットアップすることができる。ユーザがロボット動作環境をセットアップした後、ロボット計画システムは、机を組み立てるためのロボット制御計画を自動的に生成することができる。ロボット計画システムは、ロボット制御システムにロボット制御計画を提供することができ、ロボット制御システムは、机を組み立てるようにロボットコンポーネントに命令することができる。組み立てが完了した後、ユーザは、ロボットコンポーネントを店に送り返すことができる。このようにして、店は、顧客が購入した家具を新しい環境で時間効率よく、費用効率よく自動的に組み立てることを可能にすることができる。
【0012】
本明細書の主題の1つ以上の実施形態の詳細は、添付の図面及び以下の説明に記載される。主題の他の特徴、態様、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0013】
図1】例示的なシステムの図である。
図2A】指示書データを取り込むための例示的なユーザインターフェースを示す。
図2B】指示書データを取り込むための例示的なユーザインターフェースを示す。
図2C】指示書データを取り込むための例示的なユーザインターフェースを示す。
図2D】指示書データを取り込むための例示的なユーザインターフェースを示す。
図3】ロボット制御計画を生成するための例示的なプロセスのフローチャートである。
【0014】
様々な図面における同様の参照番号及び名称は、同様の要素を示す。
【発明を実施するための形態】
【0015】
図1は、例示的なシステム100を示す図である。システム100は、本明細書に記載される技術を実装することができるシステムの一実施例である。
【0016】
システム100は、ロボット動作環境102及びロボット計画システム110を含む。ロボット動作環境102は、ロボット制御システム150を含む。ロボット計画システムは、組立指示システム170、ロボットコンポーネントデータ記憶部180、及び計画部190を含む。これらのコンポーネントの各々は、任意の適切な通信ネットワーク、例えば、イントラネット若しくはインターネット、又はネットワークの組み合わせを通じて互いに結合された1つ以上の場所において、1つ以上のコンピュータ上にインストールされたコンピュータプログラムとして実装することができる。
【0017】
ロボット動作環境102は、N個のロボットコンポーネント160a~nを含み、N≧1である。ロボット制御システム150は、ロボットコンポーネント160a~nを制御するように構成される。ロボット計画システム110の計画部190の全体的な目標は、ロボット制御システム150がロボット動作環境102において1つ以上のタスクを実行することを可能にする、ロボット制御計画192を生成することである。ロボット制御計画192内のタスクは、組立タスクを含むことができ、それによって、ロボットコンポーネント160a~nは、最終組立製品を組み立てるために1つ以上の組立コンポーネントを操作する。特に、ロボット制御システム150は、ロボットコンポーネント160a~nの動きを駆動するために、ロボットコンポーネント160a~nにコマンド152を発行することによってロボット制御計画192を実行することができる。
【0018】
ロボット動作環境102はまた、M個のセンサコンポーネント162a~mを含むこともでき、M≧1である。センサコンポーネント162a~mは、ロボット動作環境102の現在の状態の測定値を取得することができる任意のタイプのセンサ、例えば、1つ以上のカメラ、1つ以上のライダーセンサ、1つ以上の超音波センサ、及び/又は1つ以上のマイクロフォンであり得る。複数のセンサコンポーネント162a~mが存在する実装形態では、異なるセンサコンポーネント162a~mは、ロボット動作環境102内の異なる位置にある異なるタイプのもの、及び/又はロボット動作環境102内の他のセンサコンポーネント162a~mとは異なるように構成されたものであり得る。
【0019】
センサコンポーネント162a~mは、ロボット制御計画192の実行前及び/又は実行中にセンサデータ154を取り込むことができ、センサデータ154は、ロボット動作環境102を特徴付けるものである。センサコンポーネント162a~mは、センサデータ154をロボット制御システム150に送信することができる。ロボット制御システム150は、ロボット制御計画192を実行するためにセンサデータ154を使用することができる。例えば、ロボット制御システム150は、センサコンポーネント160a~mによって取り込まれたセンサデータ154を使用して、例えば、ロボットコンポーネント162a~nがセンサデータ154内で識別された特定の障害物を回避することを確実にするコマンドを生成することによって、ロボットコンポーネント160a~nに発行されるコマンド152を生成することができる。
【0020】
いくつかの実装形態では、ロボット制御システム150はまた、センサコンポーネント162a~mにコマンド152を発行することができる。例えば、ロボット制御システム150は、1つ以上のセンサコンポーネント162a~mがロボット動作環境102の特定の所望の観察を取り込むべき特定の時間を識別するコマンド152を発行することもできる。いくつかの実装形態では、センサコンポーネント162a~mを、ロボット動作環境102内で移動させることができる。例えば、所望の観察を取り込むために、センサコンポーネント162a~mは、ロボット動作環境102内の異なる位置にセンサコンポーネント162a~mを移動させることができるロボットアームに取り付けることができる。これらの実装形態では、ロボット制御システム150は、所望の観察毎にセンサコンポーネント162a~mの配向及び/又は位置を指定するコマンド152を発行することができる。
【0021】
ロボット制御システム150は、多くの異なるタイプのロボット動作環境102においてロボット制御計画192を実行するように構成、例えば、ロボット制御システム150の1つ以上の機械学習モデルの訓練を通して構成することができる。例えば、ロボット制御システム150は、多くの異なる照明状況においてロボットコンポーネント160a~nを動作させるように構成することができる。特定の例として、ロボット制御システム150は、薄暗い動作環境において、例えば産業品質の照明機器が適合しないガレージ又は屋根裏等の一時的なロボット動作環境102において、センサコンポーネント160a~mによって取り込まれたセンサデータ154を使用して、ロボットコンポーネント162a~nを動作させることができる。
【0022】
特に、計画部190は、双方ともが組立指示システム170によって提供されるi)指示データ172及びii)組立コンポーネントデータ174を使用して、ロボット制御計画192を生成するように構成される。
【0023】
指示データ172は、ロボットコンポーネント160a~nによって完了される組立タスクのサブタスクのシーケンスを表すデータである。いくつかの実装形態では、サブタスクのシーケンスのうちの1つ以上のサブタスクを並列に完了することができる。各サブタスクを表すデータは、そのサブタスクに関与する組立コンポーネント、及びそのサブタスクを達成するためにロボットコンポーネント160a~nによって実施されなければならない1つ以上の動作(例えば、トルク挿入動作、垂直挿入動作、回転動作等)を識別することができる。任意選択で、各サブタスクを表すデータは、ロボット制御計画192内の1つ以上のアクションを実施すべきロボットコンポーネント160a~nのうちの1つ以上を識別することができる。
【0024】
組立コンポーネントデータ174は、ロボット制御計画192の組立タスクの最終組立製品を組み立てるために必要な1つ以上の組立コンポーネントを特徴付ける。例えば、組立コンポーネントデータ174は、例えば、CAD又はSTLファイルを用いて、各組立コンポーネントの寸法を定義することができる。組立コンポーネントデータ174はまた、各組立コンポーネントの他の特徴、例えば、組立コンポーネントの材料の引張強度を含むこともできる。
【0025】
いくつかの実装形態では、組立指示システム170は、指示データ172及び/又は組立コンポーネントデータ174を外部システムから取得する。例えば、組立指示システム170は、組立コンポーネントの製造業者の外部システムから、指示データ172及び/又は組立コンポーネントデータ174を取得することができる。すなわち、組立コンポーネント(例えば、組立式家具の組立コンポーネント)の製造業者は、組立タスクを完了するのに必要な全ての情報、例えば、組立コンポーネントを組み立てるための指示、組立コンポーネントの材料仕様、組立に必要なロボットコンポーネントを識別するロボットコンポーネント仕様等を提供することができる。
【0026】
いくつかのそのような実装形態では、組立指示システム170は、例えば、ユーザに販売される組立式製品の識別情報を受信することによって、システム100のユーザデバイス120から組立タスクの識別情報を受信するように構成される。例えば、ユーザデバイス120は、例えば、音声コマンド又はテキスト入力によって、組立タスクを識別するユーザ入力を取得し得る。別の例として、製造業者は、ユーザに販売される組立式製品の包装上に、視覚的マーカ、例えば、バーコード又はQRコードを含めることができ、ユーザは、それをスキャンして組立指示システム170に提供することができる。次に組立指示システム170は、ユーザ入力に従って、例えば製造業者によって提供されるデータベースから、指示データ172及び/又は組立コンポーネントデータ174を取得することができる。
【0027】
いくつかの他の実装形態では、例えば、組立タスクに関する情報が製造業者から入手可能でない場合、組立指示システムは、ユーザデバイス120によって提供されたデータを使用して、指示データ172及び/又は組立コンポーネントデータ174を生成することができる。ユーザデバイス120は、任意の適切なデバイス、例えば、モバイルフォン、タブレット、ラップトップ、又はデスクトップであり得る。
【0028】
ユーザデバイス120は、指示書データ122及び組立コンポーネント生データ124を組立指示システム170に提供するように構成され得る。指示書データ122は、組立タスクを完了するための指示書、例えば組立式製品の製造業者によってユーザに提供される指示書を特徴付ける。組立コンポーネント生データ124は、組立タスクの組立コンポーネントを特徴付ける。
【0029】
ユーザデバイス120は、指示書データ122及び組立コンポーネント生データ124を取り込むためのセンサシステム130を含むことができる。センサシステム130は、指示書及び/又は組立コンポーネントの、センサデータを取り込むように構成される、1つ以上のセンサを含むことができる。センサシステム130内のセンサは、任意の適切なタイプのセンサ、例えば、カメラ、ライダーセンサ、超音波センサ、又はマイクロフォンであり得る。いくつかの実装形態では、センサシステム130内には複数のセンサがあってよく、異なるセンサは、センサシステム130内の他のセンサとは異なるタイプのものである、かつ/又は異なるように構成される。
【0030】
例えば、センサシステム130は、指示書の画像を取り込むためにユーザが使用することができるカメラを含むことができる。特定の例として、ユーザデバイス120は、指示書内の各ページの画像を取り込むようにユーザに促すアプリケーションをインストールすることができる。そのようなアプリケーションのための例示的なユーザインターフェースは、図2A図2B図2C、及び図2Dに関して以下で説明される。指示書の画像は、次いで、指示書データ122に含まれ、組立指示システム170に提供され得る。
【0031】
ユーザはまた、センサシステム130のカメラを使用して、各組立コンポーネントの1つ以上の画像を取り込むことができる。画像は、組立コンポーネント生データ124に含まれ得る。ユーザはまた、各組立コンポーネントについて、利用可能な組立コンポーネントのいくつかの同一の複製物を識別することができる。例えば、ユーザは、組立タスクのために利用可能な同じタイプのねじの複数の複製物があることを識別し得る。
【0032】
別の例として、センサシステム130は、各組立コンポーネントの測定値を取り込み、例えば、各組立コンポーネントについてステレオリソグラフィ(stereolithography、STL)ファイルを生成することによって、組立コンポーネントの幾何学的形状を特徴付ける幾何学的形状データを生成することができる。特定の実施例として、センサシステム130は、各組立コンポーネントのライダーデータを取り込み、そのライダーデータを使用して幾何学的形状データを生成することができる。幾何学的形状データは、組立コンポーネント生データ124に含まれ得る。
【0033】
指示書データ122及び組立コンポーネント生データ124を受信した後、組立指示システム170は、指示書データ122を処理して指示データ172を生成し、組立コンポーネント生データ124を処理して組立コンポーネントデータ174を生成することができる。
【0034】
例えば、指示書データ122が指示書の画像を含む場合、組立指示システム170は、機械学習モデルを使用して各画像を処理して、例えば畳み込みニューラルネットワークを使用して、指示データ172を生成することができる。
【0035】
いくつかの実装形態では、組立指示システム170は、複数の異なる機械学習モデルを使用して、指示書の異なるタイプのページに対応する画像を処理することができる。
【0036】
例えば、指示書は、組立タスクを完了するために必要な組立コンポーネントを列挙する、例えば組立式製品に提供される各組立コンポーネントを列挙する、1つ以上の「コンポーネント識別」ページを、通常は説明書の冒頭に有することができる。多くの場合、コンポーネント識別ページは、組立コンポーネントの説明図及び/又はテキスト記述を含む。「コンポーネント識別」機械学習モデルは、組立タスクの組立コンポーネントを識別するためにコンポーネント識別ページの画像を処理することができる。
【0037】
別の例として、指示書は、各々が組立タスクの1つ以上のサブタスクを識別する、1つ以上の「サブタスク」ページを有することができる。すなわち、各サブタスクについて、指示書のそれぞれのサブタスクページは、i)サブタスクを完了するために必要な組立コンポーネント、及びii)サブタスクを完了するために実施されなければならないアクションを識別する。多くの場合、サブタスクページは、サブタスクを完了するのに必要なアクションの説明図及び/又はテキスト記述を含む。「サブタスク」機械学習モデルは、サブタスクページの画像を処理して、ページ毎に、ページ上で識別された組立タスクの1つ以上のサブタスクに対応する指示データ172を生成することができる。特定の例として、指示書の各サブタスクページが組立タスクの1つのサブタスクを示す場合、サブタスク機械学習モデルは、各サブタスクページの画像を処理して、それぞれのサブタスクを特徴付ける指示データ172を生成することができる。
【0038】
いくつかのそのような実装形態では、ユーザデバイス120によって組立指示システム170に提供される指示書データ122は、各画像について、画像によって描写されたページのタイプを識別する。例えば、指示書データ122の各画像には、指示書のページのタイプに対応する複数のクラスのうちの1つのクラスを割り当てることができる。特定の例として、ユーザデバイス120は、各画像について、クラスを識別するユーザ入力を提供するようにユーザに促すことができる。例えば、ユーザデバイス120は、画像が割り当てられるべきクラスのうちの1つをユーザが選択できるように、各画像について複数のクラスのリストを表示することができる。
【0039】
いくつかの他のそのような実装形態では、指示書データ122は、各画像のクラスを識別しない。例えば、組立指示システム170は、分類機械学習モデルを使用して各画像を処理して、画像の予測クラスを生成し、次いで、画像の予測クラスに従って画像を他のそれぞれの機械学習モデルに提供することができる。
【0040】
組立指示システム170は、コンポーネント識別機械学習モデルを使用して指示書のコンポーネント識別ページの画像を処理して、各組立コンポーネントについて、組立コンポーネントの表現を決定することができる。例えば、表現は、特徴ベクトル、行列、又はコンポーネントの代表値を有するテンソルであり得る。いくつかの実装形態では、表現は埋め込みである。本明細書において、埋め込みとは、特定の埋め込み空間内の入力を表す数値の、順序集合である。例えば、埋め込みは、固定次元を有する浮動小数点又は他の数値のベクトルとすることができる。例えば、各組立コンポーネントの埋め込みは、機械学習することができる。すなわち、各埋め込みは、コンポーネント識別機械学習モデルの訓練を通して決定された機械学習埋め込み空間内のそれぞれの組立コンポーネントを表すことができる。いくつかのそのような実装形態では、組立指示システム170は、各固有の組立コンポーネントについて異なる埋め込みを決定することができる。すなわち、利用可能な複数の複製物(例えば、同じタイプの複数のねじ)が存在する組立コンポーネント毎に、組立指示システム170は、単一の埋め込みを決定することができる。
【0041】
例えば、コンポーネント識別機械学習モデルは、各コンポーネント識別ページを処理してコンポーネント識別ページ上に描写された1つ以上の組立コンポーネントを検出する、第1の機械学習モデルを含むことができる。すなわち、各コンポーネント識別ページが複数の異なる組立コンポーネントの描写を含むことができるので、第1の機械学習モデルは、コンポーネント識別ページ上に描写された各組立コンポーネントのそれぞれの描写を検出し、分離することができる。例えば、第1の機械学習モデルは、コンポーネント識別ページの画像を入力として受信することができ、第1の機械学習モデルの出力は、それぞれの組立コンポーネントの1つ以上の描写の入力画像内の場所を定義するデータとすることができる。特定の例として、データは、1つ以上の境界ボックスを定義することができ、その場合、各境界ボックスは、それぞれの組立コンポーネントを示す入力画像の領域を囲む。組立指示システム170は次いで、検出された組立コンポーネント毎に、組立コンポーネントを描写する入力画像の部分を(例えば、定義された境界ボックス内のピクセルを抽出することによって)抽出し、第2の機械学習モデルを用いて入力画像の部分を処理して、組立コンポーネントの表現を決定することができる。
【0042】
いくつかの実装形態では、組立指示システム170は、例えば組立指示システム170のライブラリ140から、組立コンポーネントのうちの1つ以上の所定の表現を取得することができる。例えば、ライブラリ140は、複数の組立タスクで使用される共通の組立コンポーネント、例えば、特定のサイズ及びタイプの、ねじ又はパネルの表現を含むことができる。便宜上、ライブラリ140に記憶された所定の表現を有する組立コンポーネントを、「所定の組立コンポーネント」と呼ぶ。
【0043】
特定の例として、各所定の組立コンポーネントについて、ライブラリ140は、所定の組立コンポーネントのテキスト記述を含むことができる。次いで、組立指示システム170は、同じテキスト記述又は同様のテキスト記述がコンポーネント識別ページ上に出現するかどうかを判定することができる。出現する場合、組立指示システム170は、コンポーネント識別ページ上のテキスト記述に関連付けられた組立コンポーネントが所定の組立コンポーネントと同じであると判定することができる。
【0044】
別の特定の例として、組立指示システム170は、特定の組立コンポーネントが所定の組立コンポーネントと一致するかどうかの予測を生成するために、分類機械学習モデルを使用して、(例えば、上述の第1の機械学習モデルによって識別されたコンポーネント識別の画像の一部分を処理することによって)コンポーネント識別ページ上に描写された各特定の組立コンポーネントの描写を処理することができる。例えば、分類機械学習モデルは、所定の組立コンポーネント毎に、特定の組立コンポーネントが所定の組立コンポーネントと一致するという、予測される信頼度を表す信頼値を生成することができる。それぞれの所定の組立コンポーネントに対応する信頼値が閾値、例えば0.9又は0.95を超える場合、組立指示システム170は、特定の組立コンポーネントが所定の組立コンポーネントと同じであると判定することができる。
【0045】
別の特定の例として、指示書データ122又は組立コンポーネント生データ124は、現在の組立タスクの組立コンポーネントである1つ以上の所定の組立コンポーネントの識別情報を含むことができる。例えば、指示書データ122又は組立コンポーネント生データ124は、ライブラリ140に記憶された所定の組立コンポーネントに対応する視覚的マーカ、例えば、バーコード又はQRコードの、画像又は識別を含むことができる。視覚的マーカは、指示書内、ユーザに販売される組立式製品の包装上、又は物理的組立コンポーネント上に、直接印刷することができる。次いで、ユーザは、視覚的マーカの画像又はスキャンを取り込み、その画像又はスキャンを組立指示システム170に提供することができる。
【0046】
所定の表現を有さない組立コンポーネントについて、例えば、現在の組立タスクに固有の組立コンポーネントについて、コンポーネント識別機械学習モデルは、それぞれの表現を生成することができる。
【0047】
組立コンポーネントの表現を生成するために、コンポーネント識別機械学習モデルは、画像処理モデル、例えば畳み込みニューラルネットワークを使用して、組立コンポーネントの1つ以上の説明図を処理することができる。例えば、コンポーネント識別機械学習モデルは、第1のサブネットワークを使用してコンポーネント識別ページの画像を処理して、例えば、各説明図の周囲にそれぞれの境界ボックスを生成することによって、それぞれの組立コンポーネントの説明図を識別することができる。次いで、コンポーネント識別機械学習モデルは、組立コンポーネント毎に、第2のサブネットワークを使用して組立コンポーネントのそれぞれの説明図を(例えば、それぞれの境界ボックス内のピクセルを抽出することによって)処理して、組立コンポーネントの表現を生成することができる。代わりに又は加えて、コンポーネント識別機械学習モデルは、テキスト処理モデル、例えば、再帰型ニューラルネットワークを使用して、各組立コンポーネントのテキスト記述を処理することができる。
【0048】
各組立コンポーネントの表現を決定した後、組立指示システムは、指示データ172を生成するために、サブタスク機械学習モデルを使用して、i)組立コンポーネントの表現、及びii)サブタスクページの画像を処理することができる。
【0049】
サブタスクページは、多くの場合それぞれのサブタスクに必要な組立コンポーネントのリストを含み、例えば、サブタスクページの一部分は、サブタスクに必要な組立コンポーネントを示すことができる。サブタスク機械学習モデルは、第1のサブネットワークを使用してサブタスクページの画像を処理して、サブタスクに必要な組立コンポーネントを識別することができる。
【0050】
例えば、第1のサブネットワークは、必要とされる組立コンポーネントの説明図を(例えば説明図の周囲に境界ボックスを生成することによって)識別することができ、サブタスク機械学習モデルは、識別された説明図を組立コンポーネントの全ての表現と比較することができる。次いで、サブタスク機械学習モデルは、各説明図について、その表現が最も類似している組立コンポーネントを決定することができる。特定の例として、サブタスク機械学習モデルは、それぞれの組立コンポーネントの各説明図及び各表現について、i)表現及びii)説明図を処理して、例えば、オートエンコーダニューラルネットワークを使用して類似性スコアを生成することができる。次いで、サブタスク機械学習モデルは、各説明図について、対応する最高の類似性スコアを有する組立コンポーネントを決定することができる。
【0051】
別の例として、第1のサブネットワークは、必要な組立コンポーネント毎にテキスト記述を識別することができ、サブタスク機械学習モデルは、識別されたテキスト記述を全ての組立コンポーネントに対する表現と比較することができる。次いで、サブタスク機械学習モデルは、各テキスト記述について、その表現がテキスト記述に最も類似している組立コンポーネントを決定することができる。特定の例として、サブタスク機械学習モデルは、それぞれの組立コンポーネントの各テキスト記述及び各表現について、i)表現及びii)テキスト記述を処理して、類似性スコアを生成することができる。次いで、サブタスク機械学習モデルは、各テキスト記述について、対応する最高の類似性スコアを有する組立コンポーネントを決定することができる。
【0052】
サブタスクに必要な組立コンポーネントを決定した後、サブタスク機械学習モデルは、各サブタスクについて、指示書の対応するサブタスクページの画像を処理して、サブタスクの1つ以上のアクション、例えば必要な組立コンポーネントの1つ以上の操作、を決定することができる。サブタスクページは、i)サブタスクの1つ以上のアクションのテキスト記述、ii)サブタスクの1つ以上のアクションの説明図、又はiii)その両方を含むことができる。したがって、サブタスク機械学習モデルは、i)1つ以上のアクションのテキスト記述、ii)1つ以上のアクションの説明図、又はiii)その両方を処理して、サブタスクに対応する指示データ172を生成することができる。
【0053】
例えば、サブタスク機械学習モデルは、再帰型ニューラルネットワーク、例えば、長短期記憶(long short-term memory、LSTM)ニューラルネットワークを使用してサブタスクの1つ以上のアクションのテキスト記述を処理して、サブタスクのための指示データ172を生成することができる。特定の例として、テキスト記述は、「部品Aを部品Bのスロット2に挿入する(Insert part A into slot 2 in part B)」と読むことができ、再帰型ニューラルネットワークは、指示データ172の言語でサブタスクを表すネットワーク出力、例えば「アクション:挿入、部品:A、ターゲット:Bスロット2(action:insert;part:A;target:B slot 2)」を生成することができる。
【0054】
別の例として、サブタスク機械学習モデルは、畳み込みニューラルネットワークを使用してサブタスクの1つ以上のアクションの説明図を処理して、サブタスクのための指示データを生成することができる。
【0055】
いくつかの実装形態では、コンポーネント識別機械学習モデルは、1つ以上のサブタスクについて、サブタスク中に組み立てられた更新された組立コンポーネントの表現を生成することができる。すなわち、サブタスクは、2つ以上の組立コンポーネントを単一の更新された組立コンポーネントに組み立てる指示を含んでいた。次に、コンポーネント識別機械学習モデルは、上述したように、更新された組立コンポーネントの表現を生成することができる。次に、更新された組立コンポーネントの表現を使用して、後続のサブタスクページ上の更新された組立コンポーネントを識別することができる。
【0056】
いくつかの実装形態では、組立指示システム170の1つ以上の機械学習モデルは、他の組立タスクのための指示書を使用して訓練することができる。すなわち、訓練システムは、各々が、i)それぞれの指示書に対応する指示書データと、ii)指示書データから生成されるべきグラウンドトゥルースモデル出力とを含む、複数の訓練例を取得することができる。次に、訓練システムは、1つ以上の機械学習モデルを使用して訓練例を処理して、例えば、逆伝播を使用して、機械学習モデルのパラメータに対する更新を決定することができる。
【0057】
例えば、訓練例のコンポーネント識別ページ上の組立コンポーネントの各描写について、グラウンドトゥルースモデル出力は、i)描写の場所及び/又は寸法(例えば、記述を囲む境界ボックス)と、ii)現在の組立タスクの描写された組立コンポーネントを識別するラベルとを表すデータを含むことができる。いくつかの実装形態では、グラウンドトゥルース指示データはまた、上述のように、ライブラリ140に記憶された対応する所定の組立コンポーネントを識別するデータを含むことができる。
【0058】
別の例として、グラウンドトゥルースモデル出力は、訓練例の指示書データに応答して生成されるべき指示データ172を特徴付けるグラウンドトゥルース指示データを含むことができる。グラウンドトゥルース指示書データは、指示データ172と同じフォーマットを有することができ、例えば、以下でより詳細に記載するように、同じ言語によって表すことができる。次いで、訓練システムは、グラウンドトゥルース指示データを使用して、サブタスク機械学習モデルを訓練し、指示書のサブタスクページの画像を処理して、サブタスクを完了するための指示を特徴付ける視覚キューをサブタスクページから抽出することができる。視覚キューは、例えば特徴を指し示す矢印、挿入動作の描写等を含むことができる。
【0059】
いくつかの実装形態では、組立指示システム170の1つ以上の機械学習モデルは、訓練時にシステム170によって生成された訓練指示データ172に従って生成されたロボット制御計画のシミュレーションを表すシミュレーションデータを使用して訓練され得る。すなわち、訓練システムは、訓練指示データ172を生成するために、1つ以上の機械学習モデルを使用して、指示書データ及び/又は組立コンポーネント訓練生データを含む訓練例を処理することができる。次いで、シミュレーションシステムは、指示データ172に従って生成されたロボット制御計画192(例えば、訓練指示データ172の処理に応答して計画部190によって生成されたロボット制御計画192)の実行をシミュレートし、シミュレートされた実行を表すシミュレーションデータを生成することができる。例えば、シミュレートされたデータは、ロボット制御計画の結果、及び/又はロボット制御計画の実行の1つ以上の中間状態を表すデータを含むことができる。次いで、訓練システムは、シミュレーションデータを使用して機械学習モデルのパラメータに対する更新を決定することができる。例えば、訓練システムは、強化学習を使用して1つ以上の機械学習モデルを訓練するためにシミュレーションデータを使用することができる。特定の例として、訓練システムは、シミュレーションデータを使用して、訓練指示データ172に対応するロボット制御計画を実行する実現可能性の尺度を決定することができる。次いで、訓練システムは、強化学習中に、この実現可能性の尺度を報酬信号として使用することができる。別の特定の例として、訓練システムは、シミュレーションデータを使用して、訓練指示データ172に対応するロボット制御計画に従って組み立てられるであろう最終組立製品の正確さの尺度を決定することができる。次いで、訓練システムは、強化学習中に、この正確さの尺度を報酬信号として使用することができる。
【0060】
いくつかの実装形態では、訓練システムは、組立コンポーネントのそれぞれの製造業者に対応する異なる機械学習モデルを訓練することができる。製造業者が異なれば、指示書のフォーマット及び慣例も異なり得、例えば、特定の製造業者は、その特定の製造業者に固有の共通の視覚言語を全ての指示書で使用することができる。したがって、訓練システムは、複数の製造業者の各々について、製造業者に対応する訓練例を使用して、製造業者の指示書における製造業者の共通の視覚言語を識別するように、それぞれの機械学習モデルを訓練することができる。
【0061】
組立指示システム170は、組立コンポーネント生データ124を処理して組立コンポーネントデータ174を生成することができる。組立コンポーネントデータ174は、組立タスクの各組立コンポーネントを表すそれぞれのデータを含む。上述したように、組立タスクのサブタスクは、2つ以上の組立コンポーネントを組み立てて、2つ以上の組立コンポーネントの結合製品である「更新された組立コンポーネント」を生成することを含むことができる。いくつかの実装形態では、組立コンポーネントデータ174は、組立タスクのそれぞれのサブタスク中に生成される、各更新された組立コンポーネントを表すそれぞれのデータを含むことができる。いくつかの実装形態において、組立コンポーネントデータ174は、組立タスクの最終組立製品、すなわち、組立タスクの各元の組立コンポーネントを含む最終の更新された組立コンポーネントを表すデータを含む。
【0062】
組立コンポーネントデータ174は、各組立コンポーネントについて、i)例えばCAD又はSTLファイルを用いて各組立コンポーネントの寸法を定義するデータ、及び/又はii)各組立コンポーネントの1つ以上の特徴、例えば組立コンポーネントの材料の引張強度を含む。
【0063】
いくつかの実装形態では、組立コンポーネント生データ124が組立コンポーネントの画像を含む場合、組立指示システム170は、画像を処理して、例えばCAD又はSTLファイルによって表される各組立コンポーネントのそれぞれの三次元モデルを生成することができる。組立コンポーネントデータ174が、更新された組立コンポーネントを表すデータを含むいくつかの実装形態では、組立指示システム170は、更新された組立コンポーネントの三次元モデルを生成することができる。例えば、組立指示システム170は、更新された組立コンポーネントを生成するために組み立てられる組立コンポーネントの、それぞれの三次元モデルを組み合わせることができる。
【0064】
組立コンポーネント生データ124が、組立コンポーネントの画像を含むいくつかの実装形態では、ユーザデバイス120によって組立指示システム170に提供される組立コンポーネント生データ124は、各画像について、画像内に描写された組立コンポーネントを識別する。例えば、ユーザデバイス120のユーザは、組立コンポーネント生データ124の各画像について、描写された組立コンポーネントを識別するユーザ入力を提供することができる。特定の例として、ユーザデバイス120は、各画像について、組立コンポーネントの名前のテキスト入力を提供するようにユーザに促すことができる。別の特定の例として、組立指示システム170が指示書データ122を処理して、必要な各組立コンポーネントを識別した後、組立指示システム170は、必要な全ての組立コンポーネントのリストをユーザデバイス120に提供することができる。次いで、ユーザデバイス120は、各画像について、対応する組立コンポーネントの識別を提供するようにユーザに促すことができる。例えば、ユーザデバイス120は、各画像について、組立コンポーネントのリストを表示することができ、それによりユーザは、描写された組立コンポーネントをリストから選択することができる。
【0065】
いくつかの他の実装形態では、組立コンポーネント生データ124は、各画像に描写された組立コンポーネントの識別を含まない。例えば、組立指示システム170は、分類機械学習モデルを使用して各画像を処理して、対応する組立コンポーネントの予測識別を生成することができる。特定の例として、分類機械学習モデルは、各画像について、i)画像と、ii)指示書データ122を使用して決定された各組立コンポーネントのそれぞれの表現と、を処理して、例えば、オートエンコーダニューラルネットワークを使用して、画像と各表現との間のそれぞれの類似性スコアを生成することができる。次いで、分類機械学習モデルは、各画像について、最高の類似性スコアを有する表現を決定し、画像が表現に対応する組立コンポーネントを描写することを決定することができる。
【0066】
各画像に描写される組立コンポーネントを決定した後、組立指示システムは、各組立コンポーネントに対応する組立コンポーネントデータ174を決定することができる。組立コンポーネントデータ174は、計画部190によって解釈可能であり、かつ計画部190が組立コンポーネントを操作するためのロボット制御計画192を生成するのを助ける各組立コンポーネントの特性を含む。
【0067】
いくつかの実装形態では、組立指示システム170は、例えば組立指示システム170のライブラリ140から、1つ以上の組立コンポーネントに関する所定の組立コンポーネントデータ174を取得することができる。例えば、ライブラリ140は、複数の組立タスクで使用される共通の組立コンポーネントの、組立コンポーネントデータ174を含むことができる。
【0068】
所定の組立コンポーネントデータ174を有しない組立コンポーネントについて、例えば、現在の組立タスクに固有の組立コンポーネントについて、組立指示システム170は、組立コンポーネント機械学習モデルを使用して組立コンポーネントを描写する1つ以上の画像を処理して、組立コンポーネントに対応する組立コンポーネントデータ174を生成することができる。
【0069】
例えば、組立コンポーネント機械学習モデルは、それぞれの組立コンポーネントの1つ以上の画像を処理して組立コンポーネントに対応する組立コンポーネントデータ174を特徴付けるネットワーク出力を生成するように構成された、畳み込みニューラルネットワークを含むことができる。
【0070】
特定の組立コンポーネントに関する組立コンポーネントデータ174は、以下の特徴のうちの1つ以上を含むことができる。組立コンポーネントの材料、材料特性仕様(例えば、組立コンポーネントがどの程度曲がることができるか)、組立コンポーネントに印加することができる最大量の力、組立コンポーネントのテクスチャ、組立コンポーネントの重量、組立コンポーネントの密度、組立コンポーネントの質量中心、又はロボット操作のための1つ以上の好適な若しくは必要なタッチポイント(すなわち、ロボットコンポーネントによって組立コンポーネントが触れられ、把持され、持ち上げられ得る、組立コンポーネント上のそれぞれのポイントの識別)。上述したように、組立コンポーネントデータ174はまた、組立タスクの中間製品である更新された組立コンポーネントの特徴、例えば、上に列挙した特徴のうちの1つ以上を含むことができる。
【0071】
いくつかの実装形態では、組立指示システム170の1つ以上の機械学習モデルは、他の組立タスクに対応する組立コンポーネント生データ124を使用して訓練され得る。すなわち、訓練システムは、各々が、i)それぞれの組立タスクに対応する組立コンポーネント生データと、ii)組立コンポーネント生データから生成されるべきグラウンドトゥルース組立コンポーネントデータ174とを含む、複数の訓練例を取得することができる。例えば、各訓練例の各組立コンポーネントに対応するグラウンドトゥルース組立コンポーネントデータ174は、組立コンポーネントの各特徴、例えば、上述した1つ以上の特徴の各々に対する実際の値を含むことができる。次に、訓練システムは、1つ以上の機械学習モデルを使用して訓練例を処理して、例えば、逆伝播を使用して、機械学習モデルのパラメータに対する更新を決定することができる。
【0072】
指示データ172は、計画部190によって解釈可能である。いくつかの実装形態では、指示データ172は、ロボット計画システム110の全ての組立タスクにわたって共通のコンピュータ言語で表される。すなわち、任意の組立タスクに対応する指示データ172は、例えば、組立タスクの組立コンポーネントの製造業者にかかわらず、同じコンピュータ言語を使用して表すことができる。
【0073】
特定の例として、指示データ172は、以下を含むことができる。
段階1
部品:4部品
部品タイプ:木質パネルタイプC
視覚的マーカ:小孔
ピース:16ピース
ピースタイプ:木製スタッドタイプ2
サブタスクの数:16
動き:スタッド2をパネルCへ
スキルタイプ:横方向の挿入
力閾値:0.5ポンド
動作の順序:重要でない
成功1:4つの同一の物体
成功2:パネルCの基部から1m未満の、スタッドの均一な挿入
【0074】
この例では、組立タスクは複数の段階を含み、各段階は1つ以上のサブタスクを含み、第1の段階の指示データ172が提供されている。更に、この例では、ロボット計画システム110は、各組立コンポーネントを、2つのタイプ「部品」及び「ピース」のうちの1つとして表している。「部品」は、最終組立体製品に組み込まれる大きいコンポーネント(例えば、棚、テーブルの脚、木製パネル等)であり、「ピース」は、部品を一緒に構成するために使用される、より小さいコンポーネント(例えば、釘、ねじ、スタッド等)である。
【0075】
この例では、この例示的な組立タスクの第1の段階は、16のサブタスクを含み、各サブタスクは、「木製スタッドタイプ2」をそれぞれの「木製パネルタイプC」に配置することである。特に、ロボットコンポーネント160a~nは、木製スタッドを木製パネルの視覚的に特徴的な穴に挿入するためのものである。指示データ172は、サブタスクの「スキルタイプ」を識別することができ、これは、ロボット制御計画192内のサブタスクを完了するそれぞれのロボットコンポーネント160a~nが実施できなければならないアクションを表す。この例では、ロボットコンポーネントは、横方向の挿入を実施できなければならない。指示データ172は、サブタスクの組立コンポーネントに印加することができる力の量の上限である「力閾値」を識別することができる。この例では、組立コンポーネントは、0.5ポンドまでの力に耐えることができる。指示データ172は、組立タスクのサブタスクの動作の必要な又は好適な順序を識別することができる。この例では、サブタスクは、任意の順序で完了することができる。指示データ172は、サブタスクが成功したと判定され得る1つ以上の基準を識別することができる。この例では、成功の第1の尺度は、木製パネル及びスタッドが4つの同一の物体に組み立てられたかどうかであり、成功の第2の尺度は、スタッドが木製パネルの特定の部分に均一に挿入されたかどうかである。
【0076】
指示データ172を受信した後、計画部190は、指示データ172を、ロボット制御システム150によって実行され得るロボット制御計画192に解釈することができる。
【0077】
いくつかの実装形態では、計画部190は、組立タスクを成功裏に達成するロボットの動きの最も効率的なシーケンスを識別する1つ以上の最適化シミュレーションを実行することによって、ロボット制御計画192を生成することができる。例えば、計画部190は、ロボット制御計画192を微調整するために、数千、数百万、又は数十億ものそのようなシミュレーションを実行することができる。
【0078】
いくつかの実装形態では、計画部190は、ロボット制御計画192を生成するために、「計画部」機械学習モデルを使用して、指示データ172及び/又は組立コンポーネントデータ174を処理することができる。
【0079】
計画部機械学習モデルは、各々が他の組立タスクに対応するそれぞれの指示データ及び/又は組立コンポーネントデータを含む、訓練例を使用する訓練を通して構成され得る。訓練データの大きなコーパスに対して訓練することによって、計画部機械学習モデルは、異なるタイプの組立コンポーネントが、異なるタイプの組立タスクを実行するために、典型的にはどのように一緒に適合するかを学習することができる。
【0080】
いくつかの実装形態では、訓練システムは、訓練例を使用して訓練ロボット制御計画を生成することによって、かつシミュレーションシステムを使用して訓練ロボット制御計画の実行をシミュレートして訓練ロボット制御計画の品質の尺度を決定することによって、計画部機械学習モデルを訓練することができる。例えば、訓練ロボット制御計画中に完了した1つ以上のサブタスクの各々について、シミュレーションシステムは、訓練ロボット制御計画に従ってシミュレートされたロボット動作環境におけるサブタスクの組立コンポーネントの操作をシミュレートすることができる。次いで、訓練システムは、シミュレーションの結果から、例えば、サブタスクの組立コンポーネントが、更新された組立コンポーネントを生成するために成功裏に組み立てられたかどうかに従って、サブタスクの成功を判定することができる。
【0081】
特定の例として、シミュレーションシステムは、例えば、それぞれのCADファイルによって定義されるような組立コンポーネントの三次元モデルを使用して、組立コンポーネントの操作をシミュレートすることができる。次いで、訓練システムは、例えば、組立コンポーネントのそれぞれのCADファイルを使用して生成された組み合わされたCADファイルによって定義されるような、シミュレーション中に生成された更新された組立コンポーネントの三次元モデルを評価して、更新された組立コンポーネントがシミュレーション中に正しく組み立てられたかどうかを判定することができる。
【0082】
次いで、訓練システムは、シミュレーションの結果からの強化学習を使用して計画部機械学習モデルを訓練することができる。訓練システムは、上述したような更新された組立コンポーネントの正確さの尺度、更新された組立コンポーネントを使用して最終的に組み立てられた製品の、将来の実現可能性(すなわち、組立タスクの将来のサブタスクが、更新された組立コンポーネントを使用して正しく実行され得るか)の尺度、又はサブタスクを完了するのに必要な時間、のうちの1つ以上を使用して、強化学習の報酬信号を決定することができる。
【0083】
いくつかの実装形態では、訓練システムは、それぞれの製造業者に対応する異なる計画部機械学習モデルを訓練することができる。異なる製造業者は、組立コンポーネントがどのように一緒に組み立てられるかについて異なる規約を有することができる。異なる製造業者はまた、異なる標準組立コンポーネント、又は異なる標準指示のシーケンスを有することができる。したがって、複数の製造業者の各々について、訓練システムは、製造業者に対応する訓練例を使用して、製造業者の典型的な組立プロセスを識別するために、それぞれの計画部機械学習モデルを訓練することができる。
【0084】
いくつかの実装形態では、計画部190は、複数の異なる構成可能モジュールからロボット制御計画を構成することができる。例えば、1つ以上のモジュールは、それぞれの特定の組立コンポーネント又は組立コンポーネントのクラスに対応することができる。代わりに又は加えて、1つ以上のモジュールは、それぞれのアクション又はアクションのクラスに対応することができ、例えば、モジュールは、挿入動作、回転動作等に対応する。計画部190は、これらのモジュールのライブラリを維持し、特定のロボット制御計画192を生成するときに、関連するモジュールにアクセスすることができる。
【0085】
いくつかの実装形態では、計画部190は、外部システムによって生成された初期ロボット制御計画を取得し、最終ロボット制御計画192を生成するためにこの初期ロボット制御計画を更新することができる。いくつかのそのような実装形態では、初期ロボット制御計画は組立タスクを部分的に達成するが、最終組立製品が1つ以上の要件を満たさないか、又は初期ロボット制御計画に計画が実行されるのを妨げる1つ以上のエラーが含まれる。いくつかの他のそのような実装形態では、初期ロボット制御計画は、組立タスクを成功裏に達成したが、その様式は非効率的であるか、又は何らかの点で最適ではなかった。例えば、初期ロボット制御計画は、ロボット動作環境102とは異なるロボット動作環境において成功裏に実行されることができるが、ロボット動作環境102では成功裏に実行されることができない(又は最適でない方式でのみ実行され得る)可能性がある。計画部190は次いで、ロボット動作環境102のために最適化される最終ロボット制御計画192を生成するために、例えば、前述したように、初期ロボット制御計画を精緻化することができる。例えば、初期ロボット制御計画は、組立式製品の製造業者によって提供されてもよく、かつ/又は技術者によって人手によってプログラムされてもよい。
【0086】
いくつかの実装形態では、計画部190は、ロボットコンポーネント160a~nを使用して組立タスクを実施する1人以上の人間を特徴付けるデータを受信することができる。例えば、計画部190は、最終組立製品を生成するために、組立コンポーネントの人間による組み立て中に取り込まれたセンサデータ(例えば、画像データ、ビデオデータ、LIDARデータ、触覚知覚データ、力知覚データ、又は運動感覚データ)を受信することができる。次いで、計画部190は、データを処理して、ロボットコンポーネント160a~nを使用して人間によって実演される運動をエミュレートするロボット制御計画192を生成することができる。このプロセスは、「実演による学習(learning by demonstration)」と呼ばれることもある。
【0087】
特定の例として、計画部190は、特定の組立製品、例えば、特定の組立式の棚に対応する所定のロボット制御計画にアクセスすることができる。組立製品の製造業者は、特定の組立コンポーネントが交換されたこと、例えば特定のコネクタが再設計されたことを除いて同じ製品である、組立製品の更新されたモデルをリリースすることがある。この例では、計画部190は、組立製品の前のモデルに対応する所定のロボット制御計画を取得し、交換された組立コンポーネントに対応するモジュールを除去し、新しい組立コンポーネントに対応するモジュールを挿入して、最終ロボット制御計画192を生成することができる。したがって、計画部190は、効率性を向上させ、各組立製品について新しいロボット制御計画192を最初から再生成することを回避するために、構成可能性フレームワークを活用することができる。
【0088】
いくつかの実装形態では、ロボット制御計画192を生成するために、計画部190はまた、ロボットコンポーネントデータ記憶部180からロボットコンポーネントデータ182を取得する。ロボットコンポーネントデータ182は、ロボットコンポーネント160a~nの能力を特徴付ける。例えば、ロボットコンポーネントデータ182は、各ロボットコンポーネント160a~nの設計ファイル(例えば、CADファイル)、各ロボットコンポーネント160a~nの技術仕様(例えば、ペイロード容量、リーチ、速度、精度閾値等)、ロボット制御シミュレーション(robot control simulation、RCS)データ(例えば、モデル化されたロボットの運動軌道)、又はロボット制御システム150との相互作用のためのAPIのうちの1つ以上を含むことができる。APIは、センサAPI(例えば、力、トルク、運動、視覚、重力等を測定するセンサ)又はデータ管理インターフェース(例えば、製品ライフサイクル(product life-cycle、PLC)、製品ライフサイクル管理(product life-cycle management、PLM)、又は製造実行システム(manufacturing execution systems、MES)API)のうちの1つ以上を含むことができる。ロボットコンポーネントデータ182はまた、各ロボットコンポーネント160a~nについてのスキルタイプも含むことができ、スキルタイプは、ロボットコンポーネントが実施することができるアクションを識別する。
【0089】
ロボット制御計画192を生成した後、計画部190は、ロボット制御システム150にロボット制御計画192を提供することができる。上述したように、ロボット制御システム150は次いで、ロボットコンポーネント160a~nの動きを駆動するために、ロボットコンポーネント160a~nにコマンド152を発行することによってロボット制御計画192を実行することができる。
【0090】
いくつかの実装形態では、計画部190は、オンライン計画部である。すなわち、ロボット制御システム150は、ロボット制御計画192を受信して実行を開始し、次いで、実行中に、実行に関するフィードバックを計画部190に提供することができる。計画部190は、次いで、フィードバックに応答して、新しいロボット制御計画を生成することができる。いくつかの他の実装形態では、計画部190は、オフライン計画部である。すなわち、計画部190は、ロボット制御システム150が任意の動作を実行する前に、ロボット制御システム150にロボット制御計画192を提供することができ、計画部190は、ロボット制御システム150からいかなるフィードバックも直接受信しない。
【0091】
いくつかの実装形態では、ロボット計画システム110は、ロボット動作環境内にある。すなわち、ロボット制御計画192は、オンサイト計画部190によって生成することができる。いくつかの他の実装形態では、ロボット計画システム110は、1つ以上の場所に数百又は数千のコンピュータを有する分散コンピューティングシステムとすることができるオフサイトデータセンタ内でホストされる。特定の例として、ロボット動作環境102は、例えば、ユーザの自宅において、ユーザによって提供される一時的なロボット動作環境であることができる。
【0092】
図2A図2Dは、指示書データを取り込むための例示的なユーザインターフェース210~290を示す。ユーザインターフェース210~290は、組立タスクを実行するためのロボット制御計画を生成するための指示書データを取り込むために、ユーザデバイス、例えば図1に描写されたユーザデバイス120のユーザに表示され得る。指示書データは、組立タスクに対する指示書を特徴付ける。図2A図2Dに描写されているように、組立タスクは、組立式家具を組み立てるためのものである。
【0093】
図2A図2Dに示されるユーザインターフェースは、例示のみを目的とするものである。いくつかの実装形態では、図示された1つ以上のユーザインターフェースはユーザに提示されない。いくつかの実装形態では、1つ以上の追加のユーザインターフェースがユーザに提示される。いくつかの実装形態では、ユーザには、図示されるユーザインターフェースと同一又は類似の機能を有するが異なる設計を伴うユーザインターフェースを提示することができる。例えば、プロンプトを異なる言葉で表現することができ、色を異なるものとすることができ、レイアウトを異なるものとすることができ、インターフェースを異なる順序でユーザに提示することができる、等である。
【0094】
図2Aを参照すると、第1のユーザインターフェース210において、ユーザデバイスは、組立タスクのための指示書を取得するようにユーザに促す。
【0095】
第2のユーザインターフェース220において、ユーザデバイスは、指示書のコンポーネント識別ページ、すなわち、組立タスクを完了するために必要な組立コンポーネントを列挙するページの画像を取り込むようにユーザに促す。
【0096】
第3のユーザインターフェース230において、ユーザデバイスは、指示書のサブタスクページ、すなわち、組立タスクのサブタスクを完了する方法を記述するページの画像を取り込むようにユーザに促す。
【0097】
図2Bを参照すると、第4のユーザインターフェース240において、ユーザデバイスは、組立タスクが完了した後の組立式製品を示す、指示書の最終サブタスクページの画像を取り込むようにユーザに促す。
【0098】
指示書のそれぞれのページの取り込まれた画像は、ロボット制御計画を生成するための指示データを生成するために、組立指示システム、例えば、図1に描写された組立指示システム170によって処理され得る。
【0099】
図2Cを参照すると、第5のユーザインターフェース250において、ユーザデバイスは、ロボット制御計画が実行されるロボット動作環境の1つ以上の画像を取り込むようにユーザに促す。ロボット動作環境は、一時的ロボット動作環境とすることができる。図2Cに描写されているように、ロボット動作環境は、ユーザの自宅のガレージである。ロボット計画システム、例えば、図1に描写されたロボット計画システム110は、ロボット制御計画を生成するために、ロボット動作環境の画像を使用することができる。
【0100】
第6のユーザインターフェース260において、ユーザデバイスは、ロボット動作環境の1つ以上のビデオを取り込むようにユーザに促す。ロボット計画システムは、ロボット制御計画を生成するためにビデオを使用することができる。
【0101】
第7のユーザインターフェース270において、ユーザデバイスは、第5のユーザインターフェース250において取り込まれた画像及び/又は第6のユーザインターフェース260において取り込まれたビデオに描写された、ロボット動作環境内にある1つ以上のアイテムを識別するようにユーザに促す。例えば、ロボット計画システムは、1つ以上の機械学習モデルを使用して、画像及び/又はビデオ内のアイテムを識別することができる。ロボット計画システムは、識別されたアイテムを特徴付けるデータをユーザデバイスに送信することができる。ユーザデバイスは、第7のユーザインターフェース270において、アイテムの予測される分類を確認する(例えば、図2Cに描写されているように、冷蔵庫として識別されたアイテムが冷蔵庫であることを確認する)ように、又はアイテムに分類を割り当てるようにユーザに促すことができる。いくつかの実装形態では、ユーザデバイスはまた、例えば、ロボット制御計画を実行するためにより多くの空間を解放するために、アイテムがロボット動作環境から除去され得るか否かを識別するようにユーザに促すことができる。ロボット計画システムは、ロボット制御計画を生成するためにこの情報を使用することができる。
【0102】
図2Dを参照すると、第8のユーザインターフェース280において、ユーザデバイスは、ロボット制御計画を実行するための1つ以上のロボットコンポーネントを選択するようにユーザに促す。例えば、ロボット計画システムは、ロボット制御計画を実行するために使用され得る複数の異なる候補ロボットコンポーネントを特徴付けるデータを送信することができ、ユーザデバイスは、候補ロボットコンポーネントのリストをユーザに提供することができる。代わりに又は加えて、図2Dに示すように、ユーザは、候補ロボットコンポーネントの目録を検索することができる。特定の例として、ユーザは、組立タスクを完了するためにユーザの自宅に配送された、例えばユーザが組立式製品を購入した店によって配送された、ロボットコンポーネントを選択することができる。ロボット計画システムは、選択されたロボットコンポーネントを使用してロボット制御計画が実行され得るように、ロボット制御計画を生成することができる。例えば、ロボット計画システムは、選択されたロボットコンポーネントの能力を識別し、指示書の各指示に対して、識別された能力が指示の要件を満たすかどうかを判定することができる。
【0103】
第9のユーザインターフェース290において、ユーザデバイスは、ロボット制御計画が生成されたことをユーザに通知し、選択肢のリストをユーザに提供する。第1の選択肢は、ユーザが、生成されたロボット制御計画のシミュレーションが実行されることを要求して、例えばロボット制御計画を使用して組立タスクを完了するために必要な推定時間を決定することを可能にする。
【0104】
第2の選択肢は、インテグレータがロボット制御計画を処理して統合コスト、サービス考慮事項等を推定することができるように、生成されたロボット制御計画がインテグレータ、例えばサードパーティインテグレータに送信されることをユーザが要求することを可能にする。
【0105】
第3の選択肢は、ユーザが、ユーザの自宅でロボット動作環境をセットアップするときにユーザを支援する、ユーザデバイス、例えば携帯電話又はタブレットを選択することを可能にする。例えば、使用デバイスは、ロボット動作環境内の各組立コンポーネント及び/又はロボットコンポーネントを配置する場所を識別するアプリケーションを実行するために、拡張現実を使用することができる。特定の例として、ユーザデバイスは、ユーザデバイスのカメラからライブビデオを取り込んで、そのライブビデオをユーザデバイスのディスプレイ上に表示することができ、特定のコンポーネントが配置されるべき環境内の場所が、ビデオで描写されるようにハイライト表示、アウトライン表示、又は他の方法で強調される。
【0106】
図3は、ロボット制御計画を生成するための例示的プロセス300のフローチャートである。プロセス300は、1つ以上のコンピュータにインストールされ、本明細書に従ってプログラムされた1つ以上のコンピュータプログラムによって実装することができる。例えば、プロセス300は、ロボット計画システム、例えば、図1に描写されたロボット計画システム110によって実施することができる。便宜上、プロセス300は、1つ以上のコンピュータのシステムによって実施されるものとして説明される。
【0107】
システムは、複数の組立コンポーネントを組み立てるための指示書を示す画像を取得する(ステップ310)。システムは、外部システムから、例えばユーザデバイスから画像を取得することができる。
【0108】
システムは、機械学習モデルを使用して指示書を描写する画像を処理し、指示書データを生成する(ステップ320)。指示データは、組立コンポーネントを組み立てるための指示のシーケンスを表す。機械学習モデルは、指示書を描写する画像を処理し、指示書において識別される指示のシーケンスを特徴付ける指示データを生成するように、訓練を通して構成されることができる。
【0109】
いくつかの実装形態では、画像には、指示書の一部分、例えば、各組立コンポーネントを識別する、指示書の1つ以上のコンポーネント識別ページを描写する画像を含むことができる。機械学習モデルは、指示書の一部分を使用して、各組立コンポーネントの表現を生成することができる。次いで、機械学習モデルは、組立コンポーネント毎に、組立コンポーネントの生成された表現を使用して、指示書の後続する他の部分における、例えば指示書の1ページ以上のサブタスクの、組立コンポーネントの描写を識別することができる。
【0110】
いくつかの実装形態では、機械学習モデルは、組立コンポーネントの製造業者に対応することができる。すなわち、機械学習モデルは、製造業者に対応する訓練例を使用して、例えば、製造業者によって作成された他の指示書を含む訓練例を使用して、訓練されることができる。
【0111】
いくつかの実装形態では、指示データは、複数の異なる製造業者又は任意の製造業者によって作成された指示書を表すために使用することができる、共通のコンピュータ言語を使用して表され得る。
【0112】
任意選択的に、システムは、組立コンポーネントを描写する画像を取得する(ステップ330)。システムは、外部システムから、例えばユーザデバイスから画像を取得することができる。
【0113】
任意選択的に、システムは、組立コンポーネントを描写する画像を処理して、組立コンポーネントデータを取得する(ステップ340)。組立コンポーネントデータは、各組立コンポーネントについて、組立コンポーネントの1つ以上の特性を識別することができる。特性は、組立コンポーネントの材料、組立コンポーネントの重量、組立コンポーネントの密度、組立コンポーネントの質量中心、組立コンポーネントの強度、又は組立コンポーネントの可撓性のうちの1つ以上を含むことができる。
【0114】
いくつかの実装形態では、システムは、組立コンポーネントのうちの1つ以上を描写する画像を処理して、1つ以上の組立コンポーネントを識別する。次いで、システムは、データ記憶部、例えば図1に描写されたライブラリ140から、1つ以上の組立コンポーネントのための所定の組立コンポーネントデータを取得することができる。
【0115】
いくつかの実装形態では、システムは、第2の機械学習モデルを使用して1つ以上の組立コンポーネントを示す画像を処理して、1つ以上の組立コンポーネントのための組立コンポーネントデータを生成する。第2の機械学習モデルは、組立コンポーネントを描写する画像を処理し、組立コンポーネントの1つ以上の特性を特徴付ける組立コンポーネントデータを生成するように、訓練を通して構成されることができる。
【0116】
システムは、ロボット制御計画を生成するために、指示データ、及び任意選択で組立コンポーネントデータを処理する(ステップ350)。ロボット制御計画は、組立コンポーネントを組み立てるためにロボット制御計画を実行することができる、1つ以上のロボットコンポーネントを識別することができる。
【0117】
システムは、ロボット制御計画を実行するために、ロボット制御システムにロボット制御計画を提供する(ステップ360)。ロボット制御システムは、次いで、1つ以上のロボットコンポーネントを使用して、ロボット制御計画を実行することができる。例えば、ロボットコンポーネントは、一時的なロボット動作環境において、例えばユーザの自宅において、ロボット制御計画を実行することができる。
【0118】
本明細書において説明されたロボット機能は、少なくとも部分的にハードウェア非依存である、ハードウェア非依存型ソフトウェアスタック、又は簡潔にするために単にソフトウェアスタック、によって実装され得る。換言すると、ソフトウェアスタックは、コマンドが具体的にロボットの特定のモデル又は特定のロボットコンポーネントに関することを必要とせずに、上で説明された計画プロセスによって生成されたコマンドを入力として受け入れることができる。例えば、ソフトウェアスタックは、図1のロボット制御システム150によって少なくとも部分的に実装することができる。
【0119】
ソフトウェアスタックは、一方向においてハードウェア特異性を増加させ、他方向においてソフトウェア抽象化を増加させる複数のレベルを含むことができる。ソフトウェアスタックの最下位レベルには、下位レベルアクションを実行するデバイスと、下位レベルステータスを報告するセンサと、を含むロボットコンポーネントがある。例えば、ロボットコンポーネントは、モータ、エンコーダ、カメラ、ドライバ、グリッパ、特定用途向けセンサ、線形又は回転位置センサ、及び他の周辺デバイスを含む、様々な下位レベルコンポーネントを含むことができる。一実施例として、モータは、印加されるべきトルクの量を示すコマンドを受信することができる。コマンドの受信に応答して、モータは、例えば、エンコーダを使用して、ロボットの関節の現在位置を上位レベルのソフトウェアスタックに報告することができる。
【0120】
ソフトウェアスタック内の次に最も上位の各レベルは、複数の異なる基礎となる実装形態を支持するインターフェースを実装することができる。概して、レベル間の各インターフェースは、下位レベルから上位レベルにステータスメッセージを提供し、上位レベルから下位レベルにコマンドを提供する。
【0121】
典型的には、コマンド及びステータスメッセージは、各制御サイクル中に周期的に生成され、例えば、制御サイクル当たり1つのステータスメッセージ及び1つのコマンドが生成される。ソフトウェアスタックの下位レベルは、概して、ソフトウェアスタックの上位レベルよりも厳しいリアルタイム要件を有する。例えば、ソフトウェアスタックの最下位レベルでは、制御サイクルは、実際のリアルタイム要件を有することができる。本明細書において、リアルタイムとは、特定の制御サイクル時間内に、ソフトウェアスタックの1つのレベルにおいて受信されたコマンドが実行されなければならず、及び任意選択的に、ステータスメッセージがソフトウェアスタックの上位レベルに戻って提供されなければならないことを意味する。このリアルタイム要件が満たされない場合、ロボットは、例えば、全てのオペレーションをフリーズすることによって、障害状態に入るように構成することができる。
【0122】
次に最も上位のレベルでは、ソフトウェアスタックは、特定のコンポーネントのソフトウェア抽象化を含むことができ、これはモータフィードバックコントローラと称される。モータフィードバックコントローラは、文字通りのモータだけでなく、任意の適切な下位レベルコンポーネントのソフトウェア抽象化であり得る。それゆえ、モータフィードバックコントローラは、下位レベルハードウェアコンポーネントへのインターフェースを通して状態を受信し、スタック内の上位レベルから受信した上位レベルコマンドに基づいて、下位レベルハードウェアコンポーネントへのインターフェースを通してコマンドを送り返す。モータフィードバックコントローラは、上位レベルコマンドがどのように解釈され、下位レベルコマンドに変換されるべきかを決定する任意の適切な制御規則を有することができる。例えば、モータフィードバックコントローラは、上位レベルコマンドを下位レベルコマンドに変換するために、単純なロジック規則からより高度な機械学習技法までの任意のものを使用することができる。同様に、モータフィードバックコントローラは、障害状態に達したときを判定するための任意の適切な障害規則を使用することができる。例えば、モータフィードバックコントローラが、上位レベルコマンドを受信するが、制御サイクルの特定の部分内で下位レベルステータスを受信しない場合、モータフィードバックコントローラは、ロボットに、全てのオペレーションを停止する障害状態に入らせることができる。
【0123】
次に最も上位のレベルにおいて、ソフトウェアスタックは、アクチュエータフィードバックコントローラを含むことができる。アクチュエータフィードバックコントローラは、それぞれのモータフィードバックコントローラを通して複数のロボットコンポーネントを制御するための制御ロジックを含むことができる。例えば、いくつかのロボットコンポーネント、例えば、関節アームは、実際には複数のモータによって制御され得る。それゆえ、アクチュエータフィードバックコントローラは、その制御ロジックを使用して、複数のモータのモータフィードバックコントローラにコマンドを送信することによって、関節アームのソフトウェア抽象化を提供することができる。
【0124】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節フィードバックコントローラを含むことができる。関節フィードバックコントローラは、ロボットにおけるロジック自由度にマッピングする関節を表すことができる。それゆえ、例えば、ロボットの手首は、アクチュエータの複雑なネットワークによって制御され得るが、関節フィードバックコントローラは、その複雑性を抽象化し、その自由度を単一の関節として公開することができる。それゆえ、各関節フィードバックコントローラは、アクチュエータフィードバックコントローラの任意の複雑なネットワークを制御することができる。一実施例として、6自由度ロボットは、各々が実際のフィードバックコントローラの別個のネットワークを制御する、6つの異なる関節フィードバックコントローラによって制御され得る。
【0125】
ソフトウェアスタックの各レベルはまた、レベル特有の制約の強制を実施することもできる。例えば、アクチュエータフィードバックコントローラによって受信された特定のトルク値が、許容可能な範囲外である場合、アクチュエータフィードバックコントローラは、それを範囲内になるように修正するか、又は障害状態に入り得る。
【0126】
関節フィードバックコントローラへの入力を駆動するために、ソフトウェアスタックは、システム内の各モータに関する下位レベルにある各コンポーネント、例えば、正、トルク、及び速度のためのコマンドパラメータを含む、コマンドベクトルを使用することができる。関節フィードバックコントローラからのステータスを公開するために、ソフトウェアスタックは、システム内の各モータに関する下位レベルの各コンポーネント、例えば、位置、速度、及びトルクのためのステータス情報を含む、ステータスベクトルを使用することができる。いくつかの実装形態では、コマンドベクトルはまた、下位レベルにあるコントローラによって強制される制約に関するいくつかの制限情報も含む。
【0127】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節収集コントローラを含むことができる。関節収集コントローラは、一組の部品抽象化として公開されるコマンド及びステータスベクトルの発行を管理することができる。各部品は、例えば、逆運動学計算を実施すること、制限情報、並びに関節状態ベクトル及び関節コマンドベクトル等の運動学モデルを含むことができる。例えば、単一の関節収集コントローラを使用して、異なる組のポリシーを下位レベルの異なるサブシステムに適用することができる。関節収集コントローラは、モータが物理的にどのように表されるかと、制御ポリシーがそれらのパーツとどのように関連付けられるかとの間の関係を効果的に切り離すことができる。それゆえ、例えば、ロボットアームが移動可能なベースを有する場合、関節収集コントローラを使用して、アームがどのように移動するかについて一組の制限ポリシーを強制し、移動可能なベースがどのように移動するかについて異なる一組の制限ポリシーを強制することができる。
【0128】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節選択コントローラを含むことができる。関節選択コントローラは、異なるソースから発行されているコマンド間で動的に選択することに対して責任を負うことができる。換言すると、関節選択コントローラは、制御サイクル中に複数のコマンドを受信し、制御サイクル中に実行される複数のコマンドのうちの1つを選択することができる。リアルタイム制御サイクル中に複数のコマンドから動的に選択する能力により、従来のロボット制御システムよりも制御において柔軟性を大きく増加させる。
【0129】
次に最も上位のレベルにおいて、ソフトウェアスタックは、関節位置コントローラを含むことができる。関節位置コントローラは、目標パラメータを受信し、目標パラメータを達成するために必要なコマンドを動的に計算することができる。例えば、関節位置コントローラは、位置目標を受信することができ、目標を達成するための設定点を計算することができる。
【0130】
次に最も上位のレベルにおいて、ソフトウェアスタックは、デカルト位置コントローラ及びデカルト選択コントローラを含むことができる。デカルト位置コントローラは、入力としてデカルト空間における目標を受信し、逆運動学ソルバを使用して、関節位置空間における出力を計算することができる。次いで、デカルト選択コントローラは、関節位置空間内の計算結果をスタックの次の最下位レベル内の関節位置コントローラに渡す前に、デカルト位置コントローラによって計算された結果に対して制限ポリシーを強制することができる。例えば、デカルト位置コントローラは、デカルト座標x、y、及びzにおける3つの別個の目標状態を与えられ得る。いくつかの度に関して、目標状態は、位置であり得るが、一方で他の度に関して、目標状態は、所望の速度であり得る。
【0131】
それゆえ、ソフトウェアスタックによって与えられるこれらの機能は、上で説明されたより上位レベルの計画技法と自然にかみ合うように、制御指令が目標状態として容易に表現されるための広い柔軟性を提供する。換言すると、計画プロセスがプロセス定義グラフを使用して、行われる具体的なアクションを生成するとき、アクションは、個々のロボットコンポーネントのための下位レベルコマンドで指定される必要はない。むしろ、それらは、最終的に下位レベルコマンドになるまで、様々なレベルを通して変換されるソフトウェアスタックによって受け入れられる上位レベル目標として表現され得る。更に、計画プロセスを通じて生成されたアクションは、人間のオペレータが理解できるようにデカルト空間において指定することができ、これにより、スケジュールのデバッグ及び分析がより容易に、より迅速に、及びより直観的になる。加えて、計画プロセスを通して生成されたアクションは、任意の特定のロボットモデル又は下位レベルコマンドフォーマットに緊密に結合される必要はない。代わりに、計画プロセス中に生成された同じアクションは、異なるロボットモデルが同じ自由度を支持し、適切な制御レベルがソフトウェアスタック内に実装されている限り、異なるロボットモデルによって実際に実行され得る。
【0132】
本明細書で説明される主題及び機能的オペレーションの実施形態は、本明細書において開示された構造及びそれらの構造的均等物を含む、デジタル電子回路、有形に具現化されたコンピュータソフトウェア若しくはファームウェア、コンピュータハードウェア、又はそれらのうちの1つ以上の組み合わせにおいて、実装することができる。本明細書において説明される主題の実施形態は、1つ以上のコンピュータプログラム、すなわち、データ処理装置による実行のために、又はデータ処理装置のオペレーションを制御するために有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実装され得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダム若しくはシリアルアクセスメモリデバイス、又はそれらのうちの1つ以上の組み合わせであり得る。代替的又は追加的に、プログラム命令は、データ処理装置による実行のための好適な受信機装置への送信のための情報を符号化するために生成される、人工的に生成された伝搬信号、例えば、機械生成された電気信号、光信号、又は電磁信号上で符号化され得る。
【0133】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、及び機械を包含する。装置はまた、特殊目的ロジック回路、例えば、FPGA(field programmable gate array、フィールドプログラマブルゲートアレイ)又はASIC(application-specific integrated circuit、特定用途向け集積回路)であるか、又はそれを更に含むことができる。装置は、任意選択的に、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、又はそれらのうちの1つ以上の組み合わせを構成するコードを含むことができる。
【0134】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、又はコードとして称されるか又は説明され得る)コンピュータプログラムは、コンパイラ型言語若しくはインタープリタ型言語、又は宣言型言語若しくは手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアローンプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくはコンピューティング環境における使用に好適な他のユニットとして含む、任意の形態で展開することができる。プログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラム又はデータを保持するファイルの一部分、例えば、マークアップ言語文書内、問題のプログラム専用の単一ファイル内、又は複数の協調ファイル、例えば、1つ以上のモジュール、サブプログラム、又はコードの一部分を記憶するファイル内に記憶された1つ以上のスクリプトにおいて記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、又は1つのサイトに位置付けられるか、若しくは複数のサイトにわたって分散され、データ通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
【0135】
1つ以上のコンピュータのシステムが特定のオペレーション又はアクションを実施するように構成されるとは、システムが、オペレーション中にシステムにオペレーション又はアクションを実施させる、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせをインストールしていることを意味する。1つ以上のコンピュータプログラムが特定のオペレーション又はアクションを実施するように構成されるとは、1つ以上のプログラムが、データ処理装置によって実行されたとき、装置にオペレーション又はアクションを実施させる命令を含むことを意味する。
【0136】
本明細書で使用されるように、「エンジン」又は「ソフトウェアエンジン」は、入力とは異なる出力を提供する、ソフトウェア実装入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(software development kit、「SDK」)、又はオブジェクト等、符号化された機能ブロックであり得る。各エンジンは、1つ以上のプロセッサ及びコンピュータ可読媒体を含む、任意の適切なタイプのコンピューティングデバイス、例えば、サーバ、モバイルフォン、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子書籍リーダ、ラップトップ若しくはデスクトップコンピュータ、PDA、スマートフォン、又は他の固定若しくはポータブルデバイス上に実装することができる。加えて、エンジンのうちの2つ以上は、同じコンピューティングデバイス上に、又は異なるコンピューティングデバイス上に実装され得る。
【0137】
本明細書で説明されるプロセス及びロジックフローは、入力データに対して動作し、出力を生成することによって機能を実施するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータによって実施され得る。プロセス及びロジックフローはまた、特殊目的ロジック回路、例えば、FPGA若しくはASICによって、又は特殊目的ロジック回路と1つ以上のプログラムされたコンピュータとの組み合わせによって実施され得る。
【0138】
コンピュータプログラムの実行に好適なコンピュータは、汎用、若しくは特殊目的マイクロプロセッサ若しくはその両方、又は任意の他の種類の中央処理装置に基づくことができる。概して、中央処理装置は、読み出し専用メモリ、又はランダムアクセスメモリ、又はその両方から命令及びデータを受信する。コンピュータの必須要素は、命令を実施するか又は実行するための中央処理装置、及び命令及びデータを記憶するための1つ以上のメモリデバイスである。中央処理装置及びメモリは、特殊目的ロジック回路によって補完され得るか、又は特殊目的ロジック回路に組み込まれ得る。概して、コンピュータはまた、データを記憶するための1つ以上の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、又は光ディスクを含むか、又はそれらからデータを受信するか、それらにデータを転送するか、又はその両方を行うように動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。更に、コンピュータは、別のデバイス、例えば、ほんの数例を挙げると、モバイル電話、携帯情報端末(personal digital assistant、PDA)、モバイルオーディオ若しくはビデオプレーヤ、ゲームコンソール、全地球測位システム(Global Positioning System、GPS)受信機、又はポータブル記憶デバイス、例えば、ユニバーサルシリアルバス(universal serial bus、USB)フラッシュドライブに組み込まれ得る。
【0139】
コンピュータプログラム命令及びデータを記憶するのに好適なコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスクと、光磁気ディスクと、CD-ROM及びDVD-ROMディスクと、を含む。
【0140】
ユーザとの相互作用を提供するために、本明細書において説明される主題の実施形態は、ディスプレイデバイス、例えば、ユーザに情報を表示するためのCRT(cathode ray tube、陰極線管)又はLCD(liquid crystal display、液晶ディスプレイ)モニタと、キーボードと、ポインティングデバイス、例えば、マウス、トラックボール、又はユーザがコンピュータに入力を提供することができる存在感知ディスプレイ若しくは他の表面と、を有するコンピュータ上で実装され得る。他の種類のデバイスが、ユーザとの相互作用を提供するために同様に使用され得、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり得、ユーザからの入力は、音響、音声、又は触覚入力を含む、任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、デバイスから文書を受信すること、例えば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。また、コンピュータは、テキストメッセージ又は他の形式のメッセージをパーソナルデバイス、例えば、スマートフォンに送信し、メッセージングアプリケーションを実行し、返信としてユーザから応答メッセージを受信することによって、ユーザと相互作用することができる。
【0141】
本明細書において説明される主題の実施形態は、例えば、データサーバとしてのバックエンドコンポーネントを含む、又はミドルウェアコンポーネント、例えば、アプリケーションサーバを含む、又はフロントエンドコンポーネント、例えば、グラフィカルユーザインターフェース、ウェブブラウザ、若しくはユーザが本明細書において説明される主題の実装形態と相互作用することができるアプリを有するクライアントコンピュータを含む、又は1つ以上のかかるバックエンド、ミドルウェア、若しくはフロントエンドコンポーネントの任意の組み合わせを含む、コンピューティングシステムにおいて実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形態又は媒体、例えば、通信ネットワークによって相互接続することができる。通信ネットワークの実施例は、ローカルエリアネットワーク(local area network、LAN)及びワイドエリアネットワーク(wide area network、WAN)、例えばインターネットを含む。
【0142】
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは概して互いに離れており、典型的には通信ネットワークを介して対話する。クライアント及びサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、例えば、クライアントとして動作するデバイスと相互作用するユーザにデータを表示し、ユーザからユーザ入力を受信する目的で、データ、例えば、HTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、例えば、ユーザ相互作用の結果は、デバイスからサーバにおいて受信され得る。
【0143】
上で説明された実施形態に加えて、以下の実施形態もまた革新的である。
【0144】
実施形態1は、方法であって、
ユーザデバイスから、複数の組立コンポーネントを組み立てるための指示書を描写する画像データを取得することと、
機械学習モデルを使用して画像データを処理して、複数の組立コンポーネントを組み立てるための指示のシーケンスを表す指示データを生成することであって、機械学習モデルが、指示書を描写する画像を処理し、指示書において識別される指示のシーケンスを特徴付ける指示データを生成するように、訓練を通して構成されている、生成することと、
指示データを処理して、複数の組立コンポーネントを組み立てるために1つ以上のロボットコンポーネントによって実行されるロボット制御計画を生成することと、
1つ以上のロボットコンポーネントを使用してロボット制御計画を実行するために、ロボット制御計画をロボット制御システムに提供することと、を含む、方法である。
【0145】
実施形態2は、実施形態1に記載の方法であって、ロボット制御計画を生成することが、
ユーザデバイスから、複数の組立コンポーネントを描写する第2の画像データを取得することと、
組立コンポーネントのうちの1つ以上について、組立コンポーネントの1つ以上の特性を特徴付ける組立コンポーネントデータを取得することと、
i)指示データ、及びii)組立コンポーネントデータを処理して、ロボット制御計画を生成することと、を含む、方法である。
【0146】
実施形態3は、実施形態2に記載の方法であって、特定の組立コンポーネントについての組立コンポーネントデータを取得することが、
第2の機械学習モデルを使用して特定の組立コンポーネントを描写する第2の画像データを処理して、特定の組立コンポーネントについての組立コンポーネントデータを生成することであって、第2の機械学習モデルが、組立コンポーネントを描写する画像を処理し、組立コンポーネントの1つ以上の特性を特徴付ける組立コンポーネントデータを生成するように訓練を通して構成されている、生成することと、を含む、方法である。
【0147】
実施形態4は、実施形態2又は3のいずれか1つに記載の方法であって、特定の組立コンポーネントについての組立コンポーネントデータを取得することが、
第2の画像データにおいて特定の組立コンポーネントを識別することと、
データ記憶部から、特定の組立コンポーネントについての所定の組立コンポーネントデータを取得することと、を含む、方法である。
【0148】
実施形態5は、実施形態2~4のいずれか1つに記載の方法であって、組立コンポーネントデータが、複数の組立コンポーネントのうちの1つ以上について、
組立コンポーネントの材料、
組立コンポーネントの重量、
組立コンポーネントの密度、
組立コンポーネントの質量中心、
組立コンポーネントの強度、
組立コンポーネントの可撓性、又は
組立コンポーネントの1つ以上の好適な若しくは必要なタッチポイント、のうちの1つ以上を識別するデータを含む、方法である。
【0149】
実施形態6は、実施形態1~5のいずれか1つに記載の方法であって、複数の組立コンポーネントが、特定の製造業者によって製造されており、機械学習モデルが、特定の製造業者に対応する訓練例を使用して訓練されている、方法である。
【0150】
実施形態7は、実施形態6の方法であって、指示データが、複数の異なる製造業者によって作成された指示書を表すために使用することができるコンピュータ言語を使用して表される、方法である。
【0151】
実施形態8は、実施形態1~7のいずれか1つに記載の方法であって、1つ以上のロボットコンポーネントが、一時的なロボット動作環境においてロボット制御計画を実行する、方法である。
【0152】
実施形態9は、実施形態1~8のいずれか1つに記載の方法であって、
画像データが、複数の組立コンポーネントの各々を識別する指示書の一部分を描写する画像を含み、
指示データを生成することが、各組立コンポーネントについて、組立コンポーネントの表現を生成することと、生成された表現を使用して、指示書のそれぞれの他の部分に対応する画像データの1つ以上の他の画像内の組立コンポーネントのそれぞれの描写を識別することと、を含む、方法である。
【0153】
実施形態10は、1つ以上のコンピュータと命令を記憶している1つ以上の記憶デバイスとを備えるシステムであって、命令が、1つ以上のコンピュータによって実行されたときに、1つ以上のコンピュータに、実施形態1~9のいずれか1つに記載の方法を実施させるように動作可能である、システムである。
【0154】
実施形態11は、コンピュータプログラムで符号化された1つ以上の非一時的記憶媒体であって、プログラムは、データ処理装置によって実行されたときに、データ処理装置に実施形態1~9のいずれか1つに記載の方法を実施させるように動作可能な命令を含む、1つ以上の非一時的記憶媒体である。
【0155】
本明細書は、多くの特定の実装形態の詳細を含むが、これらは、任意の発明の範囲又は特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されるある特徴はまた、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されている様々な特徴は、複数の実施形態で別個に、又は任意の好適な部分的組み合わせで実装することもできる。更に、特徴は、ある組み合わせで動作するものとして上で説明され、最初にそのように特許請求され得るが、特許請求される組み合わせからの1つ以上の特徴は、いくつかの場合では、組み合わせから削除することができ、特許請求される組み合わせは、部分的組み合わせ又は部分的組み合わせの変形形態を対象とすることができる。
【0156】
同様に、動作は特定の順序で図面に描写されているが、これは、所望の結果を達成するために、そのような動作が示された特定の順序で若しくは連続的な順序で実行されること、又は全ての例示された動作が実行されることを必要とすると理解されるべきではない。ある特定の状況では、マルチタスキング及び並列処理が有利であり得る。更に、上で説明された実施形態における様々なシステムモジュール及びコンポーネントの分離は、全ての実施形態においてかかる分離を必要とすると理解されるべきではなく、説明されたプログラムコンポーネント及びシステムは、概して、単一のソフトウェア製品にともに一体化され得るか、又は複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【0157】
主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲の範囲内である。例えば、特許請求の範囲内に記載されたアクションは、異なる順序で実施することができ、それでも所望の結果を達成することができる。一実施例として、添付の図面内に描写されたプロセスは、所望の結果を達成するために、示される特定の順序、又は連続的な順序を必ずしも必要としない。あるいくつかの場合では、マルチタスキング及び並列処理が有利であり得る。
図1
図2A
図2B
図2C
図2D
図3
【国際調査報告】