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

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

▶ ザ・ボーイング・カンパニーの特許一覧

<>
  • 特許-ロボット制御ための方法及び装置 図1
  • 特許-ロボット制御ための方法及び装置 図2
  • 特許-ロボット制御ための方法及び装置 図3
  • 特許-ロボット制御ための方法及び装置 図4
  • 特許-ロボット制御ための方法及び装置 図5
  • 特許-ロボット制御ための方法及び装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-16
(45)【発行日】2023-11-27
(54)【発明の名称】ロボット制御ための方法及び装置
(51)【国際特許分類】
   B25J 9/22 20060101AFI20231117BHJP
   B25J 13/08 20060101ALI20231117BHJP
   G05B 19/4155 20060101ALI20231117BHJP
   G05B 19/42 20060101ALI20231117BHJP
【FI】
B25J9/22 A
B25J13/08 A
G05B19/4155 S
G05B19/42 U
【請求項の数】 9
【外国語出願】
(21)【出願番号】P 2019161467
(22)【出願日】2019-09-04
(65)【公開番号】P2020062743
(43)【公開日】2020-04-23
【審査請求日】2022-08-29
(31)【優先権主張番号】16/122,514
(32)【優先日】2018-09-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】クルツ, タイラー
(72)【発明者】
【氏名】ホジナッキ, エドワード
【審査官】樋口 幸太郎
(56)【参考文献】
【文献】特表2019-529135(JP,A)
【文献】特表2012-529104(JP,A)
【文献】特表2013-543764(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/22
B25J 13/08
G05B 19/4155
G05B 19/42
(57)【特許請求の範囲】
【請求項1】
コマンド生成器を備えた装置であって、前記コマンド生成器が:
コンピュータベースのモデルに基づいたロボットの第1の姿勢に基づいて、前記ロボットが第1の組立品を第2の組立品に連結することを含む第1のタスクを実施するために、前記ロボットに対し、エンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令すること
前記ロボットが第2の実際のタスク前位置へ移動する時、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、前記第1のタスクを実施するように前記ロボットを、前記推定タスク前位置に近接した第1の実際のタスク前位置に調節すること;及び
補正ファクタに基づいて第2のタスクを実施するように前記ロボットに指示すること
を行い、前記補正ファクタが、
前記第1のタスクを実施した後の前記ロボットに関連付けられる位置情報に対応したタスク後位置において、前記ロボットに関連付けられる位置情報に対応した前記ロボットの第2の姿勢を決定すること及び
前記第1の姿勢に関連付けられた第1の一様行列を逆行列としたものと前記第2の姿勢に関連付けられた第2の一様行列を乗じることにより、前記補正ファクタを計算すること
により決定される装置。
【請求項2】
前記第1の一様行列及び前記第2の一様行列が4×4の一様行列である、請求項に記載の装置。
【請求項3】
前記第2のタスクに関連付けられる一組の軌道を生成すること;
前記第2の姿勢に最も近い目標状態を有する前記組の前記軌道の一つを決定すること;及び
前記補正ファクタを前記目標状態に適用することにより、前記軌道の前記一つに関連付けられる一つ又は複数の接合状態を生成すること
により、前記補正ファクタに基づいて前記モデルを更新するモデルハンドラ
を更に含む、請求項1又は2に記載の装置。
【請求項4】
前記推定タスク前位置の座標を決定するために、前記モデルをグラウンドトルースとして使用することにより前記推定タスク前位置を決定するモデルハンドラを更に含む、請求項1からのいずれか一項に記載の装置。
【請求項5】
命令を含む非一過性コンピュータ可読記憶媒体であって、前記命令は、実行されると、マシンに少なくとも:
コンピュータベースのモデルに基づいたロボットの第1の姿勢に基づいて、前記ロボットが第1の組立品を第2の組立品に連結することを含む第1のタスクを実施するために、前記ロボットに対し、エンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令すること
前記ロボットが第2の実際のタスク前位置へ移動する時、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、前記第1のタスクを実施するように前記ロボットを、前記推定タスク前位置に近接した第1の実際のタスク前位置に調節すること
前記第1のタスクを実施した後の前記ロボットの位置に対応したタスク後位置において、前記ロボットに関連付けられる位置情報に対応した、前記第1のタスクを実施した後の前記ロボットの第2の姿勢を決定すること
前記第1の姿勢に関連付けられた第1の一様行列を逆行列としたものと前記第2の姿勢に関連付けられた第2の一様行列を乗じることにより、補正ファクタを計算すること;及び
前記補正ファクタに基づいて第2のタスクを実施するように前記ロボットに指示すること
を行わせる、非一過性コンピュータ可読記憶媒体。
【請求項6】
前記第1の一様行列と前記第2の一様行列が4×4の一様行列である、請求項に記載の非一過性コンピュータ可読記憶媒体。
【請求項7】
実行されると、前記マシンに少なくとも:
前記第2のタスクに関連付けられる一組の軌道を生成すること;
前記第2の姿勢に最も近い目標状態を有する前記組の前記軌道の一つを決定すること;及び
前記補正ファクタを前記目標状態に適用することにより、前記軌道の前記一つに関連付けられる一つ又は複数の接合状態を生成すること
により、前記補正ファクタに基づいて前記モデルを更新させる命令を更に含む、請求項5又は6に記載の非一過性コンピュータ可読記憶媒体。
【請求項8】
実行されると、前記マシンに少なくとも、前記推定タスク前位置の座標を決定するために、前記モデルをグラウンドトルースとして使用することにより、前記推定タスク前位置を決定させる命令を更に含む、請求項からのいずれか一項に記載の非一過性コンピュータ可読記憶媒体。
【請求項9】
コンピュータベースのモデルに基づいたロボットの第1の姿勢に基づいて、前記ロボットが第1の組立品を第2の組立品に連結することを含む第1のタスクを実施するために、前記ロボットに対し、エンドエフェクタを第1の位置から第2の位置へ移動させるように命令すること
前記ロボットが第3の位置へ移動することに応答して、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、前記第1のタスクを実施するために前記ロボットを、前記第2の位置に近接した第4の位置に調節すること
前記第1のタスクを実施することに応答して、前記第1のタスクを実施した後の前記ロボットの位置に対応した第5の位置において、前記ロボットに関連付けられる位置情報に対応した前記ロボットの第2の姿勢を決定すること
前記第1の姿勢に関連付けられた第1の一様行列を逆行列としたものと前記第2の姿勢に関連付けられた第2の一様行列を乗じることにより、補正ファクタを計算すること;及び
前記補正ファクタに基づいて第2のタスクを実施するように前記ロボットに指示すること
を含む、請求項1からのいずれか一項に記載の装置を実装する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してロボットに関し、より詳細にはロボット制御のための方法及び装置に関する。
【背景技術】
【0002】
オブジェクト認識システムは、数々のアプリケーションと対応するデバイスに展開されている。コラボレイティブロボットのようなデバイスは、組立又は製造に関連するタスクを実施するためにオブジェクト認識システムを使用することができる。オブジェクト認識システムは、組立タスクを実施する特定のロケーションへロボティックアームとエンドエフェクタをガイドすることができる。しかしながら、オブジェクト認識システムは、組立タスクの経費、複雑性、及び待ち時間を増大させ得る。
【発明の概要】
【0003】
ロボット制御のためのシステム、方法、装置、及び製造品が開示される。
【0004】
本明細書に開示される一つの例示的装置はコマンド生成器を含み、コマンド生成器は、ロボットに対し、ロボットの第1の姿勢に基づいて第1のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第1の姿勢がモデルに基づいている、命令すること、ロボットが第2の実際のタスク前位置へ移動する時第1のタスクを実施するためにロボットを第1の実際のタスク前位置に調節することであって、第1の実際のタスク前位置が推定タスク前位置に近接している、調節すること、及び補正ファクタに基づいて第2のタスクを実施するようにロボットに指示することであって、補正ファクタが、ロボットの第2の姿勢を決定することであって、第2の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第1のタスクを実施した後のロボットに関連付けられる位置情報に対応する、ロボットの第2の姿勢を決定することと、第1の姿勢及び第2の姿勢に基づいて補正ファクタを計算することとによって決定される、指示することを行う。
【0005】
一つの例示的非一過性コンピュータ可読記憶媒体は命令を含み、これら命令は、実行されると、マシンに少なくとも、ロボットに対し、ロボットの第1の姿勢に基づいて第1のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第1の姿勢がモデルに基づいている、命令すること、ロボットが第2の実際のタスク前位置へ移動する時第1のタスクを実施するためにロボットを第1の実際のタスク前位置に調節することであって、第1の実際のタスク前位置が推定タスク前位置に近接している、調節すること、第1のタスクを実施した後のロボットの第2の姿勢を決定することであって、第2の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第1のタスクを実施した後のロボットの位置に対応する、決定すること、第1の姿勢と第2の姿勢に基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第2のタスクを実施することをロボットに指示することを行わせる。
【0006】
本明細書に開示される一つの例示的方法は、ロボットに対し、ロボットの第1の姿勢に基づいて第1のタスクを実施するためにエンドエフェクタを第1の位置から第2の位置へ移動するように命令することであって、第1の姿勢がモデルに基づいている、命令すること、ロボットが第3の位置へ移動することに応答して第1のタスクを実施するためにロボットを第4の位置に調節することであって、第4の位置が第2の位置に近接している、調節すること、第1のタスクを実施することに応答してロボットの第2の姿勢を決定することであって、第2の姿勢が第5の位置におけるロボットに関連付けられる位置情報に対応しており、第5の位置が第1のタスクを実施した後のロボットの位置に対応している、決定すること、第1の姿勢と第2の姿勢に基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第2のタスクを実施することをロボットに指示することを含む。
【図面の簡単な説明】
【0007】
図1】A及びBは、例示的アセンブリ上で組立タスクを実施するように例示的ロボットを制御する例示的ロボットマネージャを示している。
図2図1A及び1Bの例示的ロボットマネージャの一つの例示的実装態様のブロック図である。
図3図1A-1Bの例示的ロボットを用いて組立タスクを実施する図1A-2の例示的ロボットマネージャを実装するように実行され得る、例示的なマシン可読命令を表すフロー図である。
図4】補正ファクタに基づいてモデルを更新するために図1A-2の例示的なロボットマネージャによって使用され得る、例示的なマシン可読命令を表すフロー図である。
図5図1A-1Bの例示的ロボットを用いて組立タスクを実施する図1A-2の例示的ロボットマネージャを実装するように実行され得る、例示的なマシン可読命令を表す別のフロー図である。
図6図1A-2の例示的ロボットマネージャを実装するように図3-5例示的マシン可読命令を実行するために構造化された例示的処理プラットフォームのブロック図である。
【0008】
図面は原寸に比例しない。一般に、図面及び図面に関する記載の全体を通して、同一の部分又は類似の部分には同じ参照番号が使用される。
【発明を実施するための形態】
【0009】
コラボレーションロボットのような産業的組立又は製造作業のために使用される典型的なロボットは、位置確認のためにロボットのエンドエフェクタに関連付けられる外部センサ又は一次センサへの追加センサを利用する及び/又はそれ以外の方法で依存する。コボット又は協働ロボットとも呼ばれるコラボレイティブロボットは、共有ワークスペースにおいて人間と物理的に対話することを意図したマシンである。いくつかの事例では、協働ロボットは、自律的に又は限定されたガイダンスで動作するようにプログラムされている及び/又はそれ以外の方法で構成されている。このようなロボットは、一つ又は複数の組立位置における一つ又は複数の組立作業又はタスクを含むワークフローを実行するために使用することができる。例えば、ロボットは、オブジェクト表面の一つのロケーション又は位置でオブジェクト表面にファスナを連結する及び/又は他の方法で取り付ける組立タスクを実施するために使用することができる。
【0010】
位置確認は、ロボットが、ロボットの物理的環境に対応するコンピュータベースのモデル環境内でのロボットの位置を決定することを指す。例えば、ロボットは、エンコーダ等の一次センサからのフィードバックを使用して、コンピュータベースのモデルを参照することにより、物理的環境内におけるロボットの位置、位置の変化等を決定することができる。いくつかの事例では、ロボットは、位置確認決定の努力を支援するための一つ又は複数の二次センサシステムを含む。例えば、ロボットは、ロボットの位置を決定するために一次センサと連携する別のエンコーダ(例えば光学エンコーダ)、カメラ(例えばカメラベースのセンサシステム)、レーザ等を使用する。
【0011】
いくつかの既知のロボットは、各々が開始位置と終了位置を含む、事前に生成された軌道を使用して連続的組立タスクを実施する。いくつかの事例では、既知のロボットは、ロボット位置確認の不確実性が不確実性閾値を満たすがために、組立タスクを正常に完了できない場合がある。既知のロボットは、実際のロボットの姿勢(例えば実際のロボット位置)と予想されるロボット姿勢(例えば予想ロボット位置)との差が不確実性閾値を上回るために、組立タスクが正常に完了できないと決定することができる。例えば、既知のロボットは、既知のロボットが物理的環境に対するロボットの位置情報を確実に決定できないことに起因して、ロボットのエンドエフェクタとアセンブリとの衝突を引き起こすことがある。
【0012】
本明細書において使用される用語「姿勢」は、(規定の)座標系に対するオブジェクト(例えば、エンドエフェクタ、ロボットの一つ又は複数の接合部等)の配向又は位置のうちの少なくとも一つを含む位置情報を指す。いくつかの事例では、姿勢は、オブジェクトを基準姿勢又は推定姿勢から実際の姿勢又は観察姿勢に移動させることのできる回転変換及び/又は並行移動変換を用いて説明される。いくつかの事例では、回転及び/又は並行移動変換情報は、一つ又は複数の回転行列、並行移動行列等により表わされる。いくつかの事例では、回転及び/又は並行移動変換情報は、一つ又は複数の回転四元数、並行移動四元数等により表わされる。いくつかの事例では、ロボットは、第1の姿勢を第2の姿勢にリンクさせる及び/又は他の方法で接続する軌道を辿ること、軌道に沿った一つ又は複数の中間地点へ移動すること等により、第1の姿勢から第2の姿勢へ移動する。例えば、軌道は、種々のロボットアーム部分の動き、角度、速度等、及び/又はそれらの組み合わせを含む、ロボットのエンドエフェクタの走行軌跡を指す。
【0013】
いくつかの事例では、既知のロボットは、組立タスクの完了を容易にするために実際のロボット姿勢を予想ロボット姿勢に調節する二次センサシステムを使用する。例えば、既知のロボットは、物理的環境内でモデルに基づく第1の位置へ移動することを意図しながら、モデル環境内でのロボットと比較した場合の物理的環境内でのロボットの寸法の差、許容誤差の蓄積等に起因して、物理的環境内での第2の位置へ移動することがある。このような例では、第1の位置における第1の姿勢は推定ロボット姿勢であり、第2の位置における第2の姿勢は実際のロボット姿勢である。既知のロボットは、補正ファクタ又は位置確認のずれを計算することにより、第2の位置から組立タスクを実施する第1の位置へロボットを移動させるために二次センサシステムを使用することができる。既知のロボットは、計算された補正ファクタが一つの組立タスクと次の組立タスクで異なる場合、組立タスクの実施後に毎回補正ファクタを計算してそのような調節を実施することができる。
【0014】
しかしながら、二次センサシステムは、このような既知のロボットに追加の材料費及び維持費を付加する。二次センサシステムはまた、センサに付属するシステムを組み込むためにこのような既知のロボットのプログラミングの複雑性が増大するために、演算コスト及び開発費を付加する。既知のロボットは、センサデータを取得し、センサデータを処理し、処理されたセンサデータに基づいて位置確認情報を生成するために必要な実行時間が延びるために、作業を実施するために二次センサシステムを使用する及び/又は他の方法で二次センサシステムに依存することにより、悪影響を受ける。
【0015】
本明細書に開示される実施例は、ロボットがタスクを実施する時位置確認のずれを決定してロボット軌道に適用することによるロボット制御のための一つの例示的ロボットマネージャを含む。開示されるいくつかの実施例では、ロボットマネージャは、ユーザ又は第三者の介在なしで複数の組立タスク(例えば、10の組立タスク、100の組立タスク、1000の組立タスク等)を含むワークフローを連続的に実施するロボットに関連付けられる推定姿勢、軌道等を含む、コンピュータベースのモデルを生成する。開示されるいくつかの実施例では、ロボットがワークフローを開始する及び/又は他の方法で実施する前に、ユーザが、ワークフローに含まれる第1の組立タスクの実施に関連付けられる第1の組立位置(例えば、第1のタスク前位置、第1の操作前位置等)へロボットをガイドする。ロボットを第1の組立位置へガイドした後、ユーザは、ロボットが、第1の組立タスクを実施するための正確な位置にあることを確認する。開示されるいくつかの実施例では、ロボットマネージャは、第1のタスク前位置におけるロボットの第1の実際のタスク前姿勢を計算する。第1の実際のタスク前姿勢は、ボルト上につばをねじ込むといった組立タスクを実施する前のロボットの位置を指し得る。
【0016】
ユーザが位置を確認すると、ロボットマネージャはロボットに対し、第1の組立タスクの実施を命令する。ロボットは、第1の組立タスクを実施すると、タスク後位置(例えば操作後位置)へ移動し、ロボットマネージャはロボットの第1の実際のタスク後姿勢を計算する。第1の実際のタスク後姿勢は、ボルト上につばをねじ込むといった組立タスクを実施した後のロボットの位置を指し得る。ロボットマネージャは、ロボットのエンドエフェクタをモニタするセンサから測定値を取得することによりロボットの第1の実際のタスク前姿勢及び第1の実際のタスク後姿勢を計算する。ロボットマネージャは、(1)第1の実際のタスク前姿勢と第1の推定タスク前姿勢、又は(2)第1の実際のタスク後姿勢と第1の推定タスク後姿勢のうちの少なくとも一つを比較することにより位置確認のずれを計算し、ここで第1の推定タスク前姿勢と第1の推定タスク後姿勢はコンピュータベースのモデルにより決定される。例えば、位置確認のずれは、一つ又は複数の回転四元数、並行移動四元数等により表される回転及び/又は並行移動変換情報により規定される。いくつかの実施例では、位置確認のずれは位置確認にずれのある姿勢に対応し、ここでロボットマネージャ100は、現在の推定姿勢から位置確認にずれのある姿勢までの軌道を決定する。
【0017】
開示されるいくつかの実施例では、ロボットマネージャは、それ以上のユーザの介入なしで位置確認のずれに基づいて複数の組立タスクを実施する。例えば、ロボットマネージャは、ロボットに対し、位置確認のずれに基づいて第2の組立タスク、第3の組立タスク等の実施を命令する。ロボットマネージャは、ロボットに対し、第2の組立タスクの実施に関連付けられる第2の推定タスク前姿勢へ移動するように命令することができる。第2の推定タスク前姿勢へ移動するようにとの命令に応答して、ロボットは、コンピュータベースのモデルによって決定された第1の軌道に沿って移動し、ホーム姿勢から第2の実際のタスク前姿勢へ移動することができる。ロボットが第1の軌道を完了すると、ロボットマネージャは位置確認のずれを第1の軌道に適用してロボットの位置を調節する。例えば、ロボットマネージャは、ロボットに対し、第2の軌道に沿って移動し、第2の実際のタスク前姿勢から第3の実際のタスク前姿勢へ移動することを命令することができ、ここで第2の軌道は位置確認のずれを第1の軌道に適用することにより決定され、第3の実際のタスク前姿勢は第2の推定タスク前姿勢に近接している。このような実施例では、ロボットマネージャは、追加の位置確認のずれを計算するユーザの介入又は二次センサシステムなしで、位置確認のずれを使用することにより第2の組立タスク及びその後の組立タスクの実施を容易にする。
【0018】
図1Aは、例示的環境106内において例示的アセンブリ104上で組立タスクを実施するように例示的ロボット102を制御する例示的ロボットマネージャ100を示している。図1Aでは、ロボットマネージャ100はロボット102の外部にある。追加的に又は代替的に、ロボットマネージャ100はロボット102に含まれてもよい。図1Aでは、ロボット102は、例示的エンドエフェクタ108を含むインピーダンス制御ロボット(例えばインピーダンス制御コラボレイティブロボット)である。図1Aのロボット102は、一つ又は複数のプロセッサを使用して作動させる及び/又は他の方法で制御することのできる、一つ又は複数のアクチュエータ110(例えば、電動モータ、油圧ポンプ、空気ピストン、ソレノイド、バルブ等)を含む。一つ又は複数のプロセッサは、ロボット102に含まれてもよい、及び/又は(通信可能に)ロボット102に連結されてもよい。代替的に、ロボット102は、オペレータ(例えば、保守要員、技師、ユーザ等)からのアシスト又は入力あり又はなしで、組立タスクを実施することのできる他のいずれかの種類のマシンでもよい。図1Aでは、環境106は、ロボット102、アセンブリ104等を含む物理的環境である。例えば、環境106は組立工場、製造施設等に対応する。
【0019】
図1Aでは、エンドエフェクタ108は、ナットランナーツール(例えば、電動ナットランナー、空気ナットランナー等)、又はトルクレンチである。例えば、ナットランナーツールは、構成要素、組立品等を互いに対して取り付ける及び/又は他の方法で連結するために使用される。代替的に、エンドエフェクタ108は、グリッパー(例えば、インパクトグリッパー、吸引式グリッパー、収束式グリッパー、連続式グリッパー等)、ペイントスプレーガン、溶接ヘッド等といった他のいずれかの種類のアイテムマニピュレータでもよい。図1Aのロボット102は、エンドエフェクタ108に関連付けられた一つ又は複数の例示的センサ112を含む。図1Aでは、センサ112はフォーストルクセンサである。例えば、センサ112は、エンドエフェクタ108の一つ又は複数の軸、及び/又はより一般的には組立品に関連付けられる一つ又は複数の軸(例えば、X軸、Y軸、Z軸等)に沿ったフォース及び/又はトルクを測定する。追加的に又は代替的に、センサ112はエンコーダとすることができる。代替的に、ロボット102は、カメラ、エンコーダ等といったセンサを含んでもよい。例えば、図1Aのロボット102は、タスクを実施する時ロボット102の移動、配向等をアシストするためにロボットマネージャ100に通信可能に連結されたカメラベースのシステム(例えば、一つ又は複数のカメラ、ビデオカメラ等を含むシステム)を含み得る。例えば、ロボット102は、カメラ、エンコーダ、フォーストルクセンサ等、及び/又はこれらの組み合わせといった一つ又は複数のセンサ112を含む。
【0020】
図1Aでは、ロボット102は、アセンブリ104に関連付けられた一つ又は複数の組立タスクを実施するようにプログラムされている(例えば、マシン可読命令を実行する一つ又は複数のプロセッサ)及び/又は他の方法で構成されている。図1Aのアセンブリ104は、タービンエンジンの空気取入口である。例えば、アセンブリ104は航空機のエンジン入口である。代替的に、アセンブリ104は、他のいずれかの種類の構成要素、装置、構造等でもよい。
【0021】
図1Aのロボット102は、アセンブリ104に関連付けられた一つ又は複数の組立タスクを実施するように構成されている。図1Aでは、ロボット102は、例示的なつば114を含む第1の組立品を、例示的なボルト116を含む第2の組立品に取り付ける及び/又は他の方法で連結するように構成されている。代替的に、ロボット102は、他のいずれかの種類のファスナをアセンブリ104に連結することができるか、又はアセンブリ104上で他のいずれかの操作タスクを実施することができる。図1Aでは、ロボット102は第1の位置(例えば、ホーム位置、開始位置等)にある。
【0022】
図1Aでは、ロボット102は、第1の位置まで進むこと、第2の位置(例えば、組立品採取位置、ステージング位置等)に移動して、処理すべきつば114の一つを取得すること、処理すべきボルト116の一つに近接する第3の位置(例えば、操作前位置、タスク前位置等)まで進むこと、及びつば114をボルト116に連結した後で第4の位置(例えば、操作後位置、タスク後位置等)に移動することを含む組立タスクを実施することができる。例えば、タスク前位置は、処理すべきボルト116に近接するが、処理すべきつば114にボルト116を連結する前のロボット102の位置に対応する。タスク後位置は、ボルト116をつば114に連結した後のロボット102の位置に対応し得る。つば114をボルト116に連結することに応答して、ロボット102は、別の組立タスクを実施するための第1の位置へ移動及び/又はそうでなければ戻ることができる。
【0023】
図1Bは、図1Aに関して上述したように図1Aのロボット102を制御して組立タスクを実施させる図1Aのロボットマネージャ100を示している。例えば、ロボットマネージャ100は、つば114を取得するために移動する時、図1Aに示す第1の位置から第2の位置へ移動するようにロボット102に指示する及び/又は他の方法で命令する。図1Bでは、ロボット102は第3の位置にある。例えば、ロボット102は、処理すべきボルト116に近接するタスク前位置にある。タスク前位置は、操作前(即ちねじ込み前の)位置、又はボルト116につば/ナット114をねじ込む前にロボット102が移動する先の位置に対応する。
【0024】
動作時、ロボットマネージャ100は、ロボット102によって実施される一つ又は複数の組立タスクを含むワークフローを取得する。例えば、ワークフローは、一つ又は複数の例示的なコンピュータベースのモデル118に関連付けられた一連の組立タスク(例えば、10の組立タスク、100の組立タスク、1000の組立タスク等)を含む。コンピュータベースのモデル118は、ロボット102、アセンブリ104、つば/ナット114、ボルト116等のコンピュータ支援設計(CAD)モデルを含むことができる。CADモデルは、二次元(2-D)モデル、三次元(3-D)モデル等とすることができる。例えば、モデル118は、ロボット102の物理的環境106に対応するモデル環境内でのロボット102、アセンブリ104等の位置情報(例えば姿勢)を含む。
【0025】
いくつかの実施例では、ロボットマネージャ100は、ワークフローが、ボルト116に近接する位置に対応する組立位置でロボット102がボルト116につば114を連結することを含と決定する。追加的に又は代替的に、ワークフローは、異なる組立タスクを含み得る。ロボットマネージャ100は、ワークフローが、第1の組立位置でつば114のうちの第1のつばをボルト116のうちの第1のボルトに連結することに関連付けられる第1の組立タスク、第2の組立位置でつば114のうちの第2のつばをボルト116のうちの第2のボルトに連結することに関連付けられる第2の組立タスク等を含む一連の組立タスクを含むと決定することができ、ここで、第1の組立位置は、第2の組立位置に隣接及び/又は近接し、第1の組立位置は第2の組立位置等とは異なる。代替的に、第1の組立位置は、第2の組立位置に隣接及び/又は近接しなくてもよい。
【0026】
動作時、ロボットマネージャ100は、ボルト116、及び/又はより一般的にはアセンブリ104に関連付けられる一つ又は複数のモデル118に含まれる組立位置を決定する。例えば、ロボットマネージャ100は、推定タスク前位置、推定タスク後位置等を決定することができる。ロボットマネージャ100は、組立位置に基づいて、一つ又は複数の接合状態、中間地点等を含む軌道(例えばロボット軌道)を決定する。いくつかの実施例では、接合状態は、エンドエフェクタ108、接合部(例えば、ロボット102の二つ以上の構造的構成要素の連結点)、及び/又は、より一般的にはロボット102の位置に関連付けられる、一つ又は複数の角度、一つ又は複数の座標等の少なくとも一つを含む。例えば、ロボット102がホーム位置にあるときのロボット102の接合状態は、ロボット102の基部に対するエンドエフェクタ108の角度(度、ラジアン等)に対応する。
【0027】
いくつかの実施例では、ロボットマネージャ100は、ロボット102をホーム位置からステージング位置へ、ステージング位置から推定タスク前位置へ等移動させることに対応する軌道を決定する。このような実施例では、ロボットマネージャ100は、ホーム位置に関連付けられる第1の接合状態、ステージング位置に関連付けられる第2の接合状態等を決定する。ロボットマネージャ100は、ロボット102の推定タスク前姿勢に基づいて、ロボットをホーム位置から推定タスク前位置へ移動させるコマンドを生成し、ロボット102に送信することができる。例えば、推定タスク前姿勢は、軌道に沿ってホーム位置からモデル(複数可)118によって規定される及び/又はそうでなければモデル(複数可)118に含まれる推定タスク前位置へ移動した後の、モデル(複数可)118によって規定される及び/又はそうでなければモデル(複数可)118によって表されるロボット102の姿勢に対応する。
【0028】
動作時、ロボットマネージャ100がワークフローを開始する及び/又は他の方法で実施する前に、ユーザは、第1の軌道に沿って第1のステージング位置から第1のタスク前位置へロボット102をガイドし、第1の組立タスクを実施することができる。第1のステージング位置は、つば114のうちの第1のつばを取得する時のロボット102の位置に対応し得る。第1のタスク前位置は、ロボット102の第1の実際のタスク前位置に対応し得る。ユーザは、ロボット102を第1のタスク前位置へ移動させる時、第1の組立タスクを実施するために、ロボット102の第1のタスク前位置を位置合わせ及び確認する。ユーザがロボット102の第1のタスク前位置を確認する時、ロボットマネージャ100は第1の実際のタスク前姿勢を計算する。第1の実際のタスク前姿勢を計算した後、ロボットマネージャ100は、ロボット102に対し、第1の組立タスクを実施するように命令する。ロボット102が第1の組立タスクを実施した後で実際のタスク後位置に到達すると、ロボットマネージャ100は第1の実際のタスク後姿勢を計算する。ロボットマネージャ100は、(1)第1の実際のタスク前姿勢と第1の推定タスク前姿勢、又は(2)第1の実際のタスク後姿勢と第1の推定タスク後姿勢のうちの少なくとも一つを比較することにより位置確認のずれを計算し、ここで第1の推定タスク前姿勢と第1の推定タスク後姿勢はモデル(複数可)118に基づいている。
【0029】
動作時、ロボット102は、ユーザ又は他の第三者のアシスト又は介入なしで、ロボットマネージャ100によって決定された位置確認のずれを使用して、ワークフローの残りを実施する。例えば、ロボット102は、位置確認のずれを使用することにより、第2の組立タスク、第3の組立タスク等を実施する。例えば、ロボットマネージャ100は、ロボット102に対し、第2の軌道に沿ってホーム位置から第2のステージング位置へ、次いで第2の推定タスク前位置へ移動することを指示し、次にロボット102を、第2の推定タスク前位置とは異なる第2の実際のタスク前位置へ移動させる。このような実施例では、ロボットマネージャ100は、位置確認のずれに基づいて、第2の軌道に付加される第3の軌道を計算する。例えば、ロボット102が第2の軌道を完了した後、ロボットマネージャ100は、ロボット102に対し、第3の軌道に沿って第2の実際のタスク前位置から第3の推定タスク前位置へ移動することを指示し、次にロボット102を、第3の実際のタスク前位置へ移動させ、ここで第2の実際のタスク前位置と第3の実際のタスク前位置の差は位置確認のずれに対応する。ロボット102は、第3の実際のタスク前位置へ移動すると、第2の組立タスクを実施する。ロボット102は、ワークフロー中の追加の組立タスクを同様に実施する。いくつかの実施例では、ロボットマネージャ100は、位置確認のずれに基づいてモデル(複数可)118を更新する。例えば、ロボットマネージャ100は、第3の組立タスク、第4の組立タスク等といった未処理の又は処理前の組立タスクに関連付けられる姿勢を調節するようにモデル(複数可)118を更新する。
【0030】
いくつかの実施例では、ロボット102は組立位置まで進んで及び/又は他の方法でナビゲートされて組立タスクを実施する。他の実施例では、ロボット102は、閾値(例えば位置確認不確実性の閾値)を満たす位置確認の不確実性に基づいて組立タスクを実施しない。位置確認不確実性は、ロボット軌道に沿った一つ又は複数の中間地点における位置不確実性に基づいてロボット102が組立タスクを実施することができないかどうかを決定する一つ又は複数の確率関数の出力に対応させることができる。位置不確実性は、センサ112の測定、ロボット102の確認された接合状態等により一部又は全部が決定される実際の姿勢と推定姿勢との確率的相関を指し得る。例えば、ロボット102は、位置確認不確実性の決定に基づいて、組立位置において組立タスクを実施することが、ロボット102、つば114、ボルト116等を損傷させ得る衝突を生むであろうと決定することができる。他の実施例では、ロボット102は、エンドエフェクタ108がボルト116、アセンブリ104等と衝突することに起因して、組立タスクを実施することができない。いくつかの実施例では、閾値を満たす位置確認不確実性に応答して、ロボットマネージャ100は、位置確認のずれ(例えば、位置確認の調節、補正ファクタ等)を計算する及び/又は他の方法で決定する。
【0031】
図2は、図1A及び1Bのロボットマネージャ100の例示的実装態様のブロック図である。ロボットマネージャ100は、組立タスクを実施する時、図1A-1Bのロボット102の動作を容易にする。ロボットマネージャ100は、コマンドを生成してこのコマンドをロボット102に送信し、モデル(複数可)118から決定された接合状態、中間地点等を含む軌道に基づいて、一つ又は複数の位置へロボット102を方向付ける。いくつかの実施例では、ロボットマネージャ100は、ユーザがロボット102を確認済みの実際のタスク前位置へガイドする時、補正ファクタを決定する。他の実施例では、ロボットマネージャ100は、組立タスクに関連付けられた位置確認不確実性が閾値を満たす時、補正ファクタを決定する。ロボットマネージャ100は、その後の組立タスクの作業を容易にするために、補正ファクタに基づいてモデル(複数可)118を更新する(モデルハンドラ220に関して後述する)。図2に示される実施例では、ロボットマネージャ100は、例示的ワークフローディレクター210、例示的モデルハンドラ220、例示的姿勢エンジン230、例示的コマンド生成器240、及び例示的データベース250を含む。
【0032】
図2に示される実施例では、ロボットマネージャ100は、ロボット102によって実施される一つ又は複数の組立タスクを含むワークフローを取得するためのワークフローディレクター210を含む。いくつかの実施例では、ワークフローディレクター210は、例示的ネットワーク260からワークフローを取得する。図2に示される実施例のネットワーク260はインターネットである。しかしながら、ネットワーク260は、例えば、一つ又は複数のデータバス、一つ又は複数のローカルエリアネットワーク(LAN)、一つ又は複数の無線LAN、一つ又は複数のプロセス制御ネットワーク、一つ又は複数のセルラ通信網、一つ又は複数の私設通信網、一つ又は複数の公衆網等を含むいずれかの適切な有線及び/又は無線ネットワーク(複数可)を使用して実装することができる。いくつかの実施例では、ネットワーク260は、ロボットマネージャ100がネットワーク260に連結された外部コンピューティング装置(例えば、データベース、サーバ等)と通信することを可能にする。
【0033】
いくつかの実施例では、ワークフローディレクター210は、ワークフローに関連付けられたモデル(複数可)118をインポートするための手段を含む。例えば、ワークフローディレクター210は、ロボット102に関連付けられる第1のCADモデル、アセンブリ104に関連付けられる第2のCADモデル、ロボット102及び/又はアセンブリ104の環境に関連付けられる第3のCADモデル等を取得する。ワークフローディレクター210は、二つ以上のモデル118を単一のモデルに合成する及び/又は他の方法で組み合わせることができる。
【0034】
いくつかの実施例では、ワークフローディレクター210は、ワークフローに関連付けられる作業の順序又はシーケンスを決定するための手段を含む。例えば、ワークフローディレクター210は、図1A-1Bのボルト116のうちの第1のボルトにつば114のうちの第1のつばを連結することに関連付けられる第1の組立タスクと、続いてボルト116のうちの第2のボルトにつば114のうちの第2のつばを連結することに関連付けられる第2の組立タスクとを含むシーケンスを決定する。他の実施例では、ワークフローディレクター210は、ロボット102によって実施されるべき追加の組立タスクが存在しないと決定する。
【0035】
図2に示される実施例では、ロボットマネージャ100は、モデル(複数可)118に基づいてロボット102の移動を調整する及び/又は他の方法で容易にするモデルハンドラ220を含む。いくつかの実施例では、モデルハンドラ220は、モデル(複数可)118に基づいて、推定タスク前位置、推定タスク後位置等といった組立位置を決定する。例えば、モデルハンドラ220は、モデル化環境(例えば、モデル空間、CAD環境等)内の推定タスク前位置に関連付けられる座標を決定する。他の実施例では、モデルハンドラ220は、ロボット102のホーム位置、一つ又は複数のステージング位置、つば114のうちの一つ又は複数、ボルト116のうちの一つ又は複数等、或いは図1A-1Bのロボット102及び/又はアセンブリ104に関連付けられる他のいずれかの構成要素若しくはオブジェクトの位置に関連付けられる座標を決定することができる。
【0036】
いくつかの実施例では、モデルハンドラ220は、組立タスクに関連付けられる軌道(例えばロボット軌道)を決定するための手段を含む。例えば、モデルハンドラ220は、ロボット102をホーム位置、ステージング位置等からタスク前位置へ移動させるために使用することのできる軌道に含まれる、一つ又は複数の接合状態、中間地点等を特定することができる。いくつかの実施例では、ロボット102は、複数の軌道を介して組立品(例えばつば114)の適切な操作を果たすことができる。例えば、モデルハンドラ220は、第1の組立品(例えば、つば114のうちの第1のつば)を操作することを含む、処理すべき第1の組立タスクを選択することができる。第1の組立タスクを選択することに応答して、モデルハンドラ220は、第1の組立タスクに関連付けられる一つ又は複数の軌道を含む一組の軌道を生成することができる。
【0037】
いくつかの実施例では、モデルハンドラ220は、特定される軌道が直前に処理された組立品のタスク後状態に近接する目標状態を有することを決定することにより、第1の組立タスクを実施するために、生成された一組の軌道から一つの軌道を特定するための手段を含む。例えば、モデルハンドラ220は、直前の組立タスクのタスク後位置におけるロボット102の姿勢が、複数のそれに先行するタスクからのロボット102の姿勢を使用するよりも信頼できる軌道を生成できると決定することにより、軌道を特定する。いくつかの実施例では、目標状態は、所望の位置、取り付けられた時の所望のトルク値等といった所望の特性を有する組立品の状態を指す。例えば、つば114のうちの一つの目標状態は、所望の位置及び/又は所望の トルクでボルト116のうちの一つに連結されていることに対応する。例えば、所望の位置は、モデル(複数可)118内のボルト116の位置に基づいている。軌道を特定することに応答して、モデルハンドラ220は、軌道に関連付けられる接合状態を生成する。例えば、接合状態の各々は、中間地点、中間地点におけるロボット102の特性等に対応する。
【0038】
いくつかの実施例では、モデルハンドラ220は、グラウンドトルースに基づいて推定ロボット姿勢を決定するための手段を含み、ここでグラウンドトルースはロボット102が利用できる最も正確な測定値に対応する。モデルハンドラ220は、モデル(複数可)118を、推定ロボット姿勢(例えば、推定タスク前姿勢、推定タスク後姿勢等)を決定するためのグラウンドトルースとして使用することができる。モデルハンドラ220は、軌道を用いてロボット102を移動させるシミュレーションを介してモデル(複数可)118内の座標を計算することにより、推定ロボット姿勢を決定することができる。例えば、モデルハンドラ220は、軌道を用いて、ホーム位置から、ボルト116のうちの第1のボルトに関連付けられる推定タスク前位置へロボット102を移動させることをシミュレートする。モデルハンドラ220は、シミュレーションにおいてロボット102が軌道に沿って移動する際のロボット102の座標を決定することにより、ホーム位置、推定タスク前位置等の座標を特定することができる。結果として、モデルハンドラ220は、モデル(複数可)118をグラウンドトルースとして使用することにより軌道をシミュレートする時、エンドエフェクタ108及び/又はロボット102の座標を特定することにより、エンドエフェクタ108及び/又はロボット102の推定姿勢を決定することができる。
【0039】
いくつかの実施例では、モデルハンドラ220は、補正ファクタに基づいてモデル(複数可)118を更新するための手段を含む。例えば、モデルハンドラ220は、補正ファクタを使用して、ワークフロー中の組立タスクの実施に関連付けられる軌道に付加することのできる一組の軌道を生成することにより、モデル(複数可)118を更新する。例えば、モデルハンドラ220は、第1の組立タスクの間にロボット102がホーム位置から第1のステージング位置、第1の推定タスク前位置等へ移動するために使用する第1の軌道を含む第1の組の軌道を生成し、次にロボット102を第1の実際のタスク前位置へ移動させる。モデルハンドラ220は、ロボット102が第1の実際のタスク前位置から第2の実際のタスク前位置へ移動するために使用する第2の軌道を含む第2の組の軌道を生成することができ、ここで、第1から第2の実際のタスク前位置への動きの差は補正ファクタに基づいている。例えば、ロボット102は、ワークフロー中の組立タスクを実施する時、第1の組の軌道に付加する第2の組の軌道を使用する。他の実施例では、モデルハンドラ220は、第1の組の軌道をと第2の組の軌道とを組み合わせるか又は合成する第3の組の軌道を生成し、第3の組の軌道は第1の組の軌道と第2の組の軌道を置き換える。
【0040】
いくつかの実施例では、モデルハンドラ220は、ロボット102が推定タスク前位置に移動する時のロボット102の実際の姿勢を決定するための手段を含む。例えば、モデルハンドラ220は、センサ112からの測定値をホーム姿勢又はステージング姿勢に適用することでホーム姿勢又はステージング姿勢からのエンドエフェクタ108の回転、並行移動等の変化を決定することにより、実際のタスク前ロボット102の姿勢を決定する。モデルハンドラ220は、前記測定値をホーム姿勢、ステージング姿勢等に適用することで一つ又は複数の回転四元数、一つ又は複数の並行移動四元数等、及び/又はこれらの組み合わせを計算することにより、実際のタスク前姿勢を決定することができる。
【0041】
いくつかの実施例では、ロボットマネージャ100は、組立タスクが(正常に)完了した時(例えば、ロボット102がタスク後位置にある時)、ロボット102の実際の姿勢を決定する。例えば、ロボット102がタスク前位置でつば114のうちの第1のつばをボルト116のうちの第1のボルトに連結することを開始して、連結完了後のタスク後位置へ移動する時、ロボットマネージャ100はロボット102の実際のタスク後姿勢を決定する。このような実施例では、連結に関連付けられるトルク測定値がトルク閾値を満たす時(例えば、つば114のうちの第1のつばがボルト116のうちの第1のボルトの底部に達した時)、ロボットマネージャ100は実際のタスク後位置におけるロボット102の実際のタスク後姿勢を決定する。ロボットマネージャ100は、一つ又は複数の回転四元数、一つ又は複数の並行移動四元数等、及び/又はそれらの組み合わせを生成するために、センサ112からの測定値をホーム姿勢、ステージング姿勢等に適用することにより、実際のタスク後姿勢を決定してもよい。
【0042】
図2に示される実施例では、ロボットマネージャ100は、ロボット102による組立タスクの実施を容易にするために補正ファクタ又は位置確認のずれを決定する姿勢エンジン230を含む。いくつかの実施例では、姿勢エンジン230は、ユーザがロボット102を、確認済みの実際のタスク前位置、確認済みの実際のタスク後位置等に移動させた後、補正ファクタを決定する。いくつかの実施例では、姿勢エンジン230は、組立タスクが完了したかどうかに基づいて補正ファクタを決定する。例えば、姿勢エンジン230は、エンドエフェクタ108に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たすと決定する。他の実施例では、姿勢エンジン230は、エンドエフェクタ108に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たさないと決定する。このような実施例では、姿勢エンジン230は、エンドエフェクタ108及びつば114に関連付けられるトルク値が操作閾値(例えばトルク閾値)を満たすとき、組立タスクが正常に実施されたと決定することができる。例えば、姿勢エンジン230は、トルク値がトルク閾値より大きく、したがってトルク閾値を満たすとき、つば114がボルト116の底部に到達したと決定する。
【0043】
いくつかの実施例では、姿勢エンジン230は、位置確認不確実性位置確認が不確実性の閾値を満たすかどうかを決定するための手段を含む。例えば、姿勢エンジン230は、第1のステージング位置に対応するロボット102の第1の接合状態を決定し、タスク前位置におけるロボット102の第2の接合状態を決定する。いくつかの実施例では、姿勢エンジン230は、第1の接合状態及び第2の接合状態の不確実性間の相関が位置確認不確実性の閾値を満たすと決定する。例えば、二つの接合状態の不確実性間の相関は、ユークリッド空間における二つの接合状態間の距離の関数として増大する。このような実施例では、姿勢エンジン230は、(その後の)接合状態に関連付けられる位置情報の信頼性が、ロボット102の現在の又は所与の接合状態に関連付けられる位置情報との類似性と共に増大すると決定する。
【0044】
いくつかの実施例では、姿勢エンジン230は、組立タスクの実施が正常に完了しなかったときに補正ファクタが決定済みであるかどうかを決定するための手段を含む。例えば、姿勢エンジン230は、補正ファクタについてデータベース250に照会する。いくつかの実施例では、姿勢エンジン230は、データベース250から補正ファクタを受け取ること及び/又は他の方法で取得することに基づいて補正ファクタが決定済みであると決定する。他の実施例では、姿勢エンジン230は、照会に応答してデータベース250からヌル値、ヌル指標等を受け取ること及び/又は他の方法で取得することに基づいて、補正ファクタが未決であると決定する。
【0045】
いくつかの実施例では、姿勢エンジン230は補正ファクタを決定するための手段を含む。例えば、姿勢エンジン230は、以下の方程式(1)に記載されるように、位置確認調節に対応する補正ファクタを計算する:
correction_factor=robot_base_to_actual_pose*robot_base_to_expected_pose.inverse()
方程式(1)
【0046】
上の方程式(1)の実施例では、項「robot_base_to_actual_pose」は、ロボット102が組立タスクを完了したときのロボット102の姿勢に対応する。例えば、姿勢エンジン230は、図1A-1Bのつば114のうちの一つを操作することに関連付けられるトルク値がトルク閾値を満たす時(例えば、トルク値がトルク閾値を上回る)、「robot_base_to_actual_pose」を決定することができる。上の方程式(1)の実施例では、項「robot_base_to_expected_pose」は、モデル(複数可)118に基づいて決定されるロボット102の姿勢に対応する。例えば、項「robot_base_to_expected_pose」は、モデル(複数可)118に基づいてロボット102が組立タスクを完了したときのロボット102の予想姿勢に対応する。
【0047】
上の方程式(1)の実施例では、項「correction_factor、robot_base_to_actual_pose」、及び「robot_base_to_expected_pose」は行列である。いくつかの実施例では、行列は、一つ又は複数の複素数又は一つ又は複数の実数のうちの少なくとも一つを含む。例えば、上の方程式(1)の実施例に含まれる一つ又は複数の項は、一つ又は複数の複素数又は一つ又は複数の実数のうちの少なくとも一つを含む四元数を表す行列に対応する。いくつかの実施例では、項のうちの一つ又は複数は、一様行列(例えば、一様な変換行列、4×4の一様な変換行列等)である。例えば、方程式(1)の実施例に含まれる一つ又は複数の項は、ロボット102の位置情報に関連付けられる一つ又は複数の座標を含む行列に対応する。例えば、姿勢エンジン230は、(1)項「robot_base_to_actual_pose」に対応するロボット102の第1の姿勢に関連付けられる第1の一様行列と(2)項「robot_base_to_expected_pose」に対応するロボット102の第2の姿勢に関連付けられる第2の一様行列の逆行列とを乗じることにより、補正ファクタを決定する。代替的に、項は、異なるサイズ及び/又は種類の行列でもよい。
【0048】
図2に示される実施例では、ロボットマネージャ100は、コマンド、命令等を生成する及び/又は他の方法で決定し、このコマンド、命令等をロボット102に送付してロボット102を制御するコマンド生成器240を含む。いくつかの実施例では、コマンド生成器240は、組立タスクを実施するためのコマンドを生成する。例えば、コマンド生成器240は、つば114のうちの一つをボルト116のうちの一つに連結するようにロボット102に命令するための一つ又は複数のコマンドを生成する。コマンド生成器240は、ロボット102をホーム位置からステージング位置へ移動させるための第1のコマンド、ステージング位置でつば114のうちの一つを取得するための第2のコマンド、ステージング位置からタスク前位置へ移動するための第3のコマンド等を生成することができる。いくつかの実施例では、コマンド生成器240は、モデル(複数可)118のグラウンドトルースを用いて生成された推定タスク前位置に基づいてコマンドを生成する。
【0049】
いくつかの実施例では、コマンド生成器240は、補正ファクタを使用して組立タスクを実施するようにロボット102を制御するための手段を含む。例えば、コマンド生成器240は、ロボット102を制御する一つ又は複数のプロセッサに、ロボット102を第1の推定タスク前位置へ移動させ、次にロボット102を第1の実際のタスク前位置へ移動させる第1のコマンドを送付することができる。いくつかの実施例では、コマンド生成器240は、ロボット102を制御する一つ又は複数のプロセッサに、ロボット102を第2の実際のタスク前位置へ移動させる第2のコマンドを送付することができ、ここで第1の実際のタスク前位置と第2の実際のタスク前位置は補正ファクタにより決定される。他の実施例では、姿勢エンジン230は、組立位置に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たすという決定に基づいて補正ファクタを使用する。位置確認不確実性が位置確認不確実性の閾値を満たすことに応答して、コマンド生成器240は、組立タスクを実施するための第2のコマンドを生成することができる。
【0050】
いくつかの実施例では、コマンド生成器240は、組立位置に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たすとき、アシストベースのシステムを用いてロボット102を制御するための手段を含む。例えば、コマンド生成器240は、アシストモードに入る及び/又は他の方法で移行するようにロボット102に指示する。例えば、ロボット102は、ロボット102が軌道に基づいて組立位置に近接する位置へ移動するが、近接位置と組立位置との差が位置確認不確実性の閾値を満たす位置確認不確実性を生む時、アシストモードに入る。
【0051】
いくつかの実施例では、アシストモードにある時、ユーザは近接位置から組立位置にロボット102の姿勢を調節する。他の実施例では、アシストモードにある時、コマンド生成器240は、ロボット102に対し、カメラベースのシステム、エンコーダ等といったセンサ、又は他のいずれかの種類のセンサからの出力に基づき、近接位置から組立位置へ移動するように命令する。例えば、カメラベースのシステムは、近接位置と組立位置の差(例えば位置の差)を特定する。コマンド生成器240は、この差異に基づいて、ロボット102を組立位置へ移動させるためのコマンドを生成することができる。
【0052】
いくつかの実施例では、コマンド生成器240は、組立ロケーションで組立品を操作するための手段を含む。例えば、コマンド生成器240は、エンドエフェクタ108を用いて組立ロケーションでつば114をボルト116に連結するようにロボット102に指示するためのコマンドを生成する。コマンド生成器240は、センサ測定値が閾値を満たす時、組立ロケーションで組立品を操作することを停止することができる。例えば、コマンド生成器240は、センサ112からトルク測定値を取得し、トルク測定値とトルク閾値とを比較し、トルク測定値がトルク閾値を上回る時、エンドエフェクタ108がつば114とボルト116とを連結することを停止するためのコマンドを生成する。センサ測定値が閾値を上回る(例えば、センサ測定値が閾値を満たす)時、コマンド生成器240は、実際のロボット姿勢に対応するロボット102の姿勢を決定するように姿勢エンジン230に指示することができる。
【0053】
図2に示される実施例では、ロボットマネージャ100は、データを記録する及び/又は他の方法で記憶するためのデータベース250を含む。図2のデータベース250は、図1A及び1Bのモデル(複数可)118を含む。いくつかの実施例では、データベース250は、ロボット102に関連付けられるモデル118のうちの一つ又は複数、一つ又は複数の組立タスクのシーケンス、一つ又は複数の軌道、センサ112からの測定値、一つ又は複数の閾値、一つ又は複数の補正ファクタ、一つ又は複数の姿勢等を記録する及び/又は他の方法で記憶する。データベース250は、揮発性メモリ(例えば、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、ラムバスダイナミックランダムアクセスメモリ(RDRAM)等)及び/又は不揮発性メモリ(例えばフラッシュメモリ)によって実装することができる。データベース250は、追加的に又は代替的に、DDR、DDR2、DDR3、モバイルDDR(mDDR)等といった一つ又は複数のダブルデータレート(DDR)メモリによって実装することができる。データベース250は、追加的に又は代替的に、ハードディスクドライブ(複数可)、コンパクトディスクドライブ(複数可)、デジタル多用途ディスク(DVD)ドライブ(複数可)等といった一つ又は複数の大容量記憶装置によって実装することができる。
【0054】
図2に示される実施例では、データベース250は単一のデータベースとして示されているが、データベース250は、任意の数及び/又は種類(複数可)のデータベースによって実装することができる。更に、データベース250に記憶されたデータは、例えば、バイナリデータ、コンマ区切りのデータ、モデルデータ(例えばCADデータ)、タブ区切りのデータ、構造化照会言語(SQL)構造等といった任意のデータフォーマットにすることができる。いくつかの実施例では、データベース250は、ネットワーク260を介してロボットマネージャ100に通信可能に連結された一つ又は複数のコンピューティング装置を用いた同期検索及び更新を可能にするクラウドベースとすることができる。
【0055】
図1A-1Bのロボットマネージャ100を実装する例示的方式が図2に示されているが、図2に示されるエレメント、プロセス、及び/又は装置のうちの一つ又は複数は、他の任意の方法で組み合わせる、分割する、再構成する、省略する、除去する及び/又は実装されてもよい。更に、図1A-1Bの、例示的なワークフローディレクター210、例示的なモデルハンドラ220、例示的な姿勢エンジン230、例示的なコマンド生成器240、例示的なデータベース250、及び/又は、より一般的には例示的なロボットマネージャ100は、ハードウエア、ソフトウエア、ファームウエア、並びに/又はハードウエア、ソフトウエア、及び/若しくはファームウエアのいずれかの組み合わせによって実装され得る。したがって、例えば、例示的なワークフローディレクター210、例示的なモデルハンドラ220、例示的な姿勢エンジン230、例示的なコマンド生成器240、例示的なデータベース250、及び/又は、より一般的には例示的なロボットマネージャ100のいずれもが、一つ又は複数のアナログ又はデジタル回路(複数可)、論理回路、プログラマブルプロセッサ(複数可)、プログラマブルコントローラ(複数可)、グラフィック処理ユニット(GPU)(複数可)、デジタル信号プロセッサ(DSP)(複数可)、特定用途向け集積回路(ASIC)(複数可)、プログラマブル論理装置(PLD)(複数可)、及び/又はフィールドプログラマブル論理装置(FPLD)(複数可)によって実装され得る。純粋にソフトウエア及び/又はファームウエアの一実装態様をカバーするものとして本特許の装置又はシステムの請求項のいずれかを読むとき、例示的なワークフローディレクター210、例示的なモデルハンドラ220、例示的な姿勢エンジン230、例示的なコマンド生成器240、及び/又は例示的なデータベース250のうちの少なくとも一つは、非一過性のコンピュータ可読記憶装置、又はソフトウエア及び/又はファームウエアを含む、メモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、ブルーレイディスク等といった記憶ディスクを含むものと、ここで明示的に定義される。更に、図1A-1Bの例示的なロボットマネージャ100は、図2に示されるものに加えて又はその代わりに、一つ又は複数のエレメント、プロセス、及び/又はデバイスを含み得る、及び/又は図示されるエレメント、プロセス、及びデバイスのいずれか又はすべてを複数含み得る。本明細書で使用される「通信する」という句は、そのバリエーションも含めて、一つ又は複数の中間的構成要素を通じた直接的な通信及び/又は間接的な通信を包含し、直接的な物理的(例えば有線による)通信及び/又は不断の通信を必要とせず、むしろ追加的に、周期的な間隔、予定された間隔、非周期的な間隔、及び/又は一度限りのイベントでの選択的な通信を含む。
【0056】
図1A-2のロボットマネージャ100を実装するための、例示的なハードウエア論理、マシン可読命令、ハードウエア実装ステートマシン、及び/又はこれらのいずれかの組み合わせを表すフロー図が、図3-5に示されている。マシン可読命令は、図6に関連して後述する例示的なプロセッサプラットフォーム600に示されるプロセッサ612のようなコンピュータプロセッサによる実行のための、実行可能プログラム又は同プログラムの一部であってよい。プログラムは、CD-ROM、フロッピーディスク、ハードドライブ、DVD、ブルーレイディスク、又はプロセッサ612に関連付けられるメモリといった、非一過性のコンピュータ可読記憶媒体に記憶されたソフトウエアに埋め込まれてよいが、代替的に、プログラム全体及び/又はその一部が、プロセッサ612以外の装置によって実行され得る及び/又はファームウエア又は専用のハードウエアに埋め込まれ得る。更に、図3-5に示すフロー図を参照して例示的なプログラムを記載するが、例示的ロボットマネージャ100を実装する他の多くの方法が代替的に使用可能である。例えば、ブロックの実行順序を変更してよく、及び/又は記載されるブロックのいくつかを変更する、削除する、又は組み合わせることができる。代替的又は追加的に、ブロックのいずれか又はすべてを、ソフトウエア又はファームウエアを実行せずに対応する作業を実施するように構造化された一つ又は複数のハードウエア回路(例えば、ディスクリート及び/又は集積アナログ及び/又はデジタル回路、FPGA、ASIC、比較器、演算増幅器(op-amp)、論理回路等)により遂行してもよい。
【0057】
上述のように、図3-5の例示的なプロセスは、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び/又は任意の期間にわたって(例えば、長期的に、永続的に、短期的に、一時バッファ用として、及び/又は情報のキャッシング用として)情報が格納される他のいずれかの記憶装置又は記憶ディスクといった、非一過性のコンピュータ及び/又はマシン可読媒体に格納された実行可能な命令(例えば、コンピュータ及び/又はマシン可読命令)を用いて遂行され得る。本明細書において使用される非一過性のコンピュータ可読媒体という用語は、任意の種類のコンピュータ可読記憶装置及び/又は記憶ディスクを含み、伝播信号を除外し、伝送媒体を除外するものと明示的に定義される。
【0058】
「含む」及び「備える」(並びに、これらのすべての活用形及び時制)は、本明細書においてオープンエンドの語として使用される。したがって、請求項で、「含む」又は「備える」(並びに、これらの文法的変化形)のいずれかの形式が、プリアンブルとして又はいずれかの請求項の記載の範囲内で使用されるときは常に、対応する請求項又記載の範囲から逸脱することなく、追加的のエレメント、用語等が存在し得ると解されたい。本明細書において使用される「少なくとも」という句は、例えば、請求項のプリアンブルで移行部の用語として使用されるとき、「備える」及び「含む」という用語がオープンエンド形式であるのと同様に、オープンエンド形式である。用語「及び/又は」が、例えば、「A、B、及び/又はC」といった形式で使用されるとき、A、B、Cのいずれかの組み合わせ又はサブセット、例えば(1)Aのみ、(2)Bのみ、(3)Cのみ、(4)AとB、(5)AとC、(6)BとC、及び(7)AとBとCに言及する。本明細書において構造、構成要素、アイテム、オブジェクト及び/又はものを記載する文脈で使用されるとき、「A及びBのうちの少なくとも一つ」という句は、(1)少なくとも一つのA、(2)少なくとも一つのB、及び(3)少なくとも一つのAと少なくとも一つのBのうちのいずれかを含む実装態様に言及することを意図している。同様に、本明細書において構造、構成要素、アイテム、オブジェクト及び/又はものを記載する文脈で使用されるとき、「A又はBのうちの少なくとも一つ」という句は、(1)少なくとも一つのA、(2)少なくとも一つのB、及び(3)少なくとも一つのAと少なくとも一つのBのうちのいずれかを含む実装態様に言及することを意図している。本明細書においてプロセス、命令、動作、活動及び/又はステップの実施又は実行を記載する文脈で使用されるとき、「A及びBのうちの少なくとも一つ」という句は、(1)少なくとも一つのA、(2)少なくとも一つのB、及び(3)少なくとも一つのAと少なくとも一つのBのうちのいずれかを含む実装態様に言及することを意図している。同様に、本明細書においてプロセス、命令、動作、活動及び/又はステップの実施又は実行を記載する文脈で使用されるとき、「A又はBのうちの少なくとも一つ」という句は、(1)少なくとも一つのA、(2)少なくとも一つのB、及び(3)少なくとも一つのAと少なくとも一つのBのうちのいずれかを含む実装態様に言及することを意図している。
【0059】
図3は、実行されると図1A-2のロボットマネージャ100に組立タスクの実施を遂行させることのできる、例示的なマシン可読命令300を表すフロー図である。マシン可読命令300はブロック302で開始され、このブロックでは、ロボットマネージャ100は、ロボットによって実施される組立タスクを含むワークフローを取得する。例えば、ワークフローディレクター210(図2)は、図1A-1Bのアセンブリ104に対して一つ又は複数の組立タスクを実施することを含むワークフローを取得する。
【0060】
ブロック304では、ロボットマネージャ100は、ワークフローに関連付けられるモデル(複数可)をインポートする。例えば、ワークフローディレクター210は、図1Aのロボット102-1B、図1A-1Bのアセンブリ104等に関連付けられる図1A-2のモデル118のうちの一つ又は複数をインポートする。
【0061】
ブロック306では、ロボットマネージャ100は、モデル(複数可)に含まれる組立ロケーションを決定する。例えば、モデルハンドラ220(図2)は、モデル(複数可)118に基づいてアセンブリ104に連結される、ボルト116のうちの第1のボルトに関連付けられる第1の推定タスク前位置、ボルト116のうちの第2のボルトに関連付けられる第2の推定タスク前位置等を決定する。
【0062】
ブロック308では、ロボットマネージャ100は、組立ロケーションに基づいてロボット軌道を決定する。例えば、モデルハンドラ220は、第1の推定タスク前位置に関連付けられる軌道を決定する。モデルハンドラ220は、つば114のうちの一つを取得する第1のステージング位置にあるロボット102に関連付けられる第1の接合状態、第1の推定タスク前位置でのロボット102に関連付けられる第2の接合状態等、及び/又は軌道に含まれる一つ又は複数の他の位置又は中間地点に関連付けられる他のいずれかの接合状態を決定する。
【0063】
ブロック310では、ロボットマネージャ100は、組立タスクを実施するようにロボットにコマンドを出す。例えば、コマンド生成器240(図2)は、ロボット102に対し、第1のステージング位置から第1の推定タスク前位置へ移動して、図1A-1Bのつば114のうちの一つを図1A-1Bのボルト116のうちの一つに連結するように命令する。この命令に応答して、ロボット102は、第1の推定タスク前位置とは異なる第1の実際のタスク前位置へ移動する。
【0064】
ブロック312では、ロボットマネージャ100は、補正ファクタが決定済みであるかどうかを決定する。例えば、姿勢エンジン230(図2)は、補正ファクタが計算済みであるかどうかを決定するためにデータベース250(図2)に照会する。このような実施例では、姿勢エンジン230は、照会に応答して、データベース250から補正ファクタを検索及び/又は他の方法で取得する。他の実施例では、姿勢エンジン230は、照会に応答して、データベース250からのヌル値の検索及び/又は他の方法での取得に基づいて補正ファクタが未決であると決定する。
【0065】
ブロック312で補正ファクタが決定済みであるとロボットマネージャ100が決定した場合、制御はブロック316に進み、補正ファクタを用いて組立タスクを実施するようにロボットにコマンドを出す。ブロック312で補正ファクタが未決であるとロボットマネージャ100が決定した場合、ブロック314においてロボットマネージャ100は補正ファクタを決定する。例えば、姿勢エンジン230は、アシストモードに入るようにロボット102に指示する。ユーザは、ロボット102を、正確な、即ち確認済みのタスク前位置へと移動させることができる。ロボット102が第1の組立タスクを実施するための正確な位置へと移動したことをユーザが確認すると、姿勢エンジン230は、ロボット102の第1の実際のタスク前姿勢を決定する。姿勢エンジン230は、ロボット102の第1の実際のタスク前姿勢とロボット102の第1の推定タスク前姿勢との比較に基づいて補正ファクタを決定することができる。他の実施例では、姿勢エンジン230は、カメラシステム又は他のいずれかの種類の二次的なセンサベースのシステムからの出力に基づく正確な位置、即ち確認済みの位置へ、ロボット102を移動させるようにコマンド生成器240を起動する。
【0066】
ブロック314での補正ファクタの決定に応答して、ロボットマネージャ100は、ブロック316において、補正ファクタに基づいて組立タスクを実施するようにロボットにコマンドを出す。例えば、コマンド生成器240は、補正ファクタを用いて、モデルハンドラ220によって決定される第1の軌道への付加軌道に基づいて、第1のタスク前位置でつば114をボルト116に連結するようにロボット102に指示するコマンドを生成する。
【0067】
ブロック318では、ロボットマネージャ100は、補正ファクタに基づいてモデル(複数可)を更新する。例えば、モデルハンドラ220は、補正ファクタに基づいて、ブロック308で生成された軌道への一組の付加軌道を生成することにより、モデル(複数可)118のうちの一つ又は複数を更新する。他の実施例では、モデルハンドラ220は、ブロック308で生成された軌道と付加軌道とを合成する及び/又は他の方法で組み合わせる一組の軌道を生成することにより、モデル(複数可)118のうちの一つ又は複数を更新する。ブロック318を遂行するために使用され得る例示的なプロセスが、図4に関連して後述される。
【0068】
ブロック320では、ロボットマネージャ100は、別の組立タスクを実施するかどうかを決定する。例えば、ワークフローディレクター210は、処理すべき別の組立タスクが存在すると決定する。他の実施例では、ワークフローディレクター210は、ワークフローが完了しており、処理すべき追加の組立タスクが存在しないと決定する。ブロック320でロボットマネージャ100が別のタスクを実施することを決定した場合、制御はブロック310に戻ってロボットに別の組立タスクを実施するようにコマンドを出す。ブロック320でロボットマネージャ100が別のタスクを実施しないことを決定した場合、図3のマシン可読命令300は終了する。
【0069】
図4は、補正ファクタに基づいてモデルを更新するために図1A-2の例示的なロボットマネージャ100によって使用され得る、例示的なマシン可読命令400を表すフロー図である。図4の例示的プロセスは、図3のブロック318の作業を遂行するために使用され得る。
【0070】
マシン可読命令318はブロック402で開始され、このブロックでは、ロボットマネージャ100は、補正ファクタに基づいて組立タスクに関連付けられる軌道を更新する。例えば、モデルハンドラ220(図2)は、補正ファクタに基づいて第1の組立タスクに関連付けられる軌道を更新する。このような実施例では、モデルハンドラ220は、第1の実際のタスク前位置から第2の実際のタスク前位置へロボット102を移動させる現在の軌道に付加される新規の軌道を生成する。
【0071】
ブロック404では、ロボットマネージャ100は、次の組立タスクに関連付けられる一組の軌道を生成する。例えば、モデルハンドラ220は、図1A-1Bのつば114のうちの第2のつばを図1A-1Bのボルト116のうちの第2のボルトに連結することに関連付けられる、一組の、一つ又は複数の軌道を生成する。このような一つ又は複数の軌道の組は、第2の組立タスクを実施するために使用される軌道の補正のために、コマンド生成器240(図2)によって使用される潜在的付加軌道に対応し、ここでこの補正はロボット102がユーザの介入又は二次センサシステムからの入力なしで第2の組立タスクを実施することを可能にする。
【0072】
ブロック406では、ロボットマネージャ100は、実際のロボット姿勢に最も近い目標状態(局所性)を有する軌道を決定する。例えば、モデルハンドラ220は、第1の組立タスクを実施する時、ロボット102の実際のタスク前姿勢、実際のタスク後姿勢等に最も近い選択軌道に関連付けられる目標状態に基づいて、組内の軌道の一つを選択する。
【0073】
ブロック408では、ロボットマネージャ100は、目標状態に補正ファクタを適用することにより、新規接合状態を生成する。例えば、モデルハンドラ220は、第2の実際のタスク前位置から第3の実際のタスク前位置へ移動するロボット102に関連付けられる第3の接合状態、第3の実際のタスク前位置から第2の実際のタスク後位置へ移動するロボット102に関連付けられる第4の接合状態等を生成する。
【0074】
ブロック410では、ロボットマネージャ100は、別の組立タスクのための一組の軌道を生成するべきからどうかを決定する。例えば、モデルハンドラ220は、第3の組立タスクのための一組の軌道を生成すると決定する。他の実施例では、モデルハンドラ220は、補正ファクタに基づく新規接合状態を決定するために、ワークフローに含まれる組立タスクの各々のための一組の軌道を生成すると決定する。他の実施例では、モデルハンドラ220は、別の組立タスクのための一組の軌道を生成しないと決定する。
【0075】
ブロック410でロボットマネージャ100が別の組立タスクのための一組の軌道を生成することを決定すると、制御はブロック404に戻り、次の又はその後の組立タスクに関連付けられる一組の軌道を生成する。ブロック410でロボットマネージャ100が別の組立タスクのための一組の軌道を生成しないと決定すると、図4のマシン可読命令318は図3の実施例のブロック320に戻り、別の組立タスクを実施するべきかどうかを決定する。
【0076】
図5は、実行されると図1A-2のロボットマネージャ100に組立タスクの実施を遂行させることのできる、例示的なマシン可読命令500を表す別のフロー図である。このマシン可読命令はブロック502で開始され、このブロックでは、ロボットマネージャ100は、処理対象の組立タスクを選択する。例えば、ワークフローディレクター210(図2)は、図1A-1Bのボルト116のうちの第1のボルトにつば114のうちの第1のつばを連結することを含む、処理すべき組立タスクを選択する。
【0077】
ブロック504では、ロボットマネージャ100は、グラウンドトルースとしてモデル(複数可)を使用して、組立品に対応する組立ロケーションでの推定ロボット姿勢(複数可)を決定する。例えば、モデルハンドラ220(図2)は、モデル(複数可)118に基づいて、図1A-1Bのアセンブリ104上でのつば114のうちの第1のつば、ボルト116のうちの第1のボルト等の座標を決定する。モデルハンドラ220は、第1の位置(例えば、ホーム位置、第1のステージング位置等)におけるロボット102の第1の接合状態、第2の位置(例えば、ボルト116のうちの第1のボルトに関連付けられるタスク前位置)におけるロボット102に関連付けられる第2の接合状態等、及び/又は軌道に沿った一つ又は複数の他の位置若しくは中間地点に関連付けられる他のいずれかの接合状態を含む軌道を決定することができる。モデルハンドラ220は、軌道に基づいて第2の位置におけるロボット102の姿勢に関連付けられる座標を決定し、第1の推定タスク前姿勢として姿勢を特定することができる。
【0078】
ブロック506では、ロボットマネージャ100は、推定ロボット姿勢(複数可)に基づいて、組立ロケーションへロボットをナビゲートする。例えば、コマンド生成器240(図2)は、ロボット102を第1の位置から第2の位置へ移動させて第1の推定タスク前姿勢に到達させ、次にロボット102を第1の実際のタスク前位置へ移動させるコマンドを生成し、そのコマンドをロボット102に送信する。
【0079】
ブロック508では、ロボットマネージャ100は、位置確認不確実性が閾値を満たすかどうかを決定する。例えば、姿勢エンジン230(図2)は、ロボット102の第1の接合状態と第2の接合状態の相関に関連付けられる位置確認不確実性が位置確認不確実性の閾値を満たすと決定する。
【0080】
ブロック508で位置確認不確実性が閾値を満たさないとロボットマネージャ100が決定した場合、制御はブロック516に進んで組立ロケーションで組立品を操作する。ブロック508で位置確認不確実性が閾値を満たすとロボットマネージャ100が決定した場合、ブロック510においてロボットマネージャ100は補正ファクタが決定済みであるかどうかを決定する。例えば、姿勢エンジン230は、補正ファクタが計算済みであるかどうかを決定するためにデータベース250(図2)に照会する。このような実施例では、姿勢エンジン230は、照会に応答して、データベース250から補正ファクタを検索及び/又は他の方法で取得する。他の実施例では、姿勢エンジン230は、照会に応答して、データベース250からのヌル値の検索及び/又は他の方法での取得に基づいて、補正ファクタが未決であると決定する。
【0081】
ブロック510で補正ファクタが決定済みであるとロボットマネージャ100が決定した場合、制御はブロック514に進み、補正ファクタを用いてロボット姿勢を組立ロケーションに調節する。ブロック510で補正ファクタが未決であるとロボットマネージャ100が決定した場合、プロック512においてロボットマネージャ100はアシストベースのシステムを使用してロボット姿勢を組立ロケーションに調節する。例えば、姿勢エンジン230は、アシストモードに入るようにロボット102に命令する。ユーザは、ロボット102を、第1の組立タスクを実施するための正確な位置へと移動させることができる。他の実施例では、姿勢エンジン230は、カメラベースのシステム又は他のいずれかのセンサベースのシステムをロボット102に使用可能であるときはそのようなシステムを使用して、正確な位置へとロボット102を移動させるようにコマンド生成器240を起動する。
【0082】
ブロック512でアシストベースのシステムを使用してロボット姿勢を組立ロケーションに調節すること又はブロック512で補正ファクタを用いてロボット姿勢を組立ロケーションに調節することに応答して、ブロック516でロボットマネージャ100は組立ロケーションにおいて組立品を操作する。例えば、コマンド生成器240は、第2の位置においてつば114をボルト116に連結するようロボット102に指示するコマンドを生成し、そのコマンドをロボット102に送信する。
【0083】
ブロック518では、ロボットマネージャ100は、センサ測定値が操作閾値を満たすかどうかを決定する。例えば、コマンド生成器240は、図1A-1Bのセンサ112からトルク測定値を取得し、トルク測定値をトルク閾値と比較し、トルク測定値がトルク閾値を上回る時、つば114とボルト116の連結を停止するためのコマンドを生成する。
【0084】
ブロック518でセンサ測定値が操作閾値を満たさないとロボットマネージャ100が決定する場合、制御はブロック518でロボット102が連結を完了させるのを待つ。ブロック518でセンサ測定値が操作閾値を満たすとロボットマネージャ100が決定する場合、ブロック520において、ロボットマネージャ100は実際のロボット姿勢を決定する。例えば、トルク測定値がトルク閾値を満たす時、コマンド生成器240は、ロボットの第1の実際のタスク後姿勢102に対応するロボット102の姿勢を決定するように姿勢エンジン230を起動する。
【0085】
ブロック522では、ロボットマネージャ100は、実際のロボット姿勢と推定ロボット姿勢とに基づいて補正ファクタを決定する。例えば、姿勢エンジン230は、第1の実際のタスク前姿勢、第1の実際のタスク後姿勢、第1の推定タスク前姿勢、第1の推定タスク後姿勢等に基づき、上記方程式(1)の実施例を用いることにより、位置確認調節を決定及び/又は他の方法で計算する。
【0086】
ブロック524では、ロボットマネージャ100は、補正ファクタに基づいてモデルを更新する。例えば、モデルハンドラ220は、図4のプロセスを使用することにより補正ファクタに基づいてモデル(複数可)118を更新する。いくつかの実施例では、モデルハンドラ220は、一つ又は複数のその後の組立タスクに関連付けられる情報を更新することにより、モデル(複数可)118を更新する。例えば、モデルハンドラ220は、組立タスクを実施するために使用される軌道に付加及び/又は他の方法で適用される一組の軌道を生成するためにモデル(複数可)118を更新する。
【0087】
ブロック526では、ロボットマネージャ100は、処理対象の別の組立タスクを選択するかどうかを決定する。例えば、ワークフローディレクター210は、第2の組立ロケーションにおいてつば114のうちの第2のつばをボルト116のうちの第2のボルトに連結することを含む別の組立タスクを実施すると決定する。他の実施例では、ワークフローディレクター210は、処理対象の別の組立タスクが存在しないと決定する。ブロック526でロボットマネージャ100が処理対象の別の組立タスクを選択すると決定した場合、制御はブロック502に戻り、処理対象の別の組立タスクを選択し、それ以外の場合は図5のマシン可読命令500は終了する。
【0088】
図6は、図1A-2のロボットマネージャ100を実装するために図3-5の命令を実行するように構造化された例示的プロセッサプラットフォーム600のブロック図である。プロセッサプラットフォーム600は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習機械(例えばニューラルネットワーク)、モバイル装置(例えば、携帯電話、スマートフォン、iPadTM等のタブレット)、ロボットコンピューティングプラットフォーム、又は他のいずれかの種類のコンピューティング装置とすることができる。
【0089】
図示の実施例のプロセッサプラットフォーム600はプロセッサ612を含む。図示の実施例のプロセッサ612はハードウエアである。例えば、プロセッサ612は、任意の望ましい系列会社又は製造者からの一つ又は複数の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、又はコントローラによって実装することができる。ハードウエアプロセッサは、半導体ベース(例えばシリコンベース)の装置であってよい。この実施例では、プロセッサ612は、例示的ワークフローディレクター210、例示的モデルハンドラ220、例示的姿勢エンジン230、例示的コマンド生成器240、及び/又は、より一般的には、図1A-2の例示的ロボットマネージャ100を実装する。
【0090】
図示の実施例のプロセッサ612はローカルメモリ613(例えばキャッシュ)を含む。図示の例示例のプロセッサ612は、揮発性メモリ614及び不揮発性メモリ616を含むメインメモリと、バス618を介して通信する。揮発性メモリ614は、同期型ダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、RAMBUS(登録商標)ダイナミックランダムアクセスメモリ(RDRAM(登録商標))、及び/又は他のいずれかの種類のランダムアクセスメモリデバイスによって実装され得る。不揮発性メモリ616は、フラッシュメモリ及び/又は他のいずれかの望ましい種類の記憶装置によって実装され得る。メインメモリ614、616へのアクセスはメモリコントローラによって制御される。
【0091】
図示の実施例のプロセッサプラットフォーム600は、インターフェース回路620も含む。インターフェース回路620は、イーサネットインターフェース、ユニバーサルシリアルバス(USB)、Bluetooth(登録商標)インターフェース、近距離無線通信(NFC)インターフェース、及び/又はPCIエクスプレスインターフェースといった任意の種類のインターフェース規格により実装され得る。
【0092】
図示の実施例では、一つ又は複数の入力デバイス622がインターフェース回路620に接続されている。入力デバイス(複数可)622は、ユーザがデータ及び/又はコマンドをプロセッサ612に入力することを可能にする。入力デバイス(複数可)622は、例えば、音声センサ、マイクロフォン、カメラ(静止画又は映像)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント(isopoint)、及び/又は音声認識システムによって実装され得る。
【0093】
一つ又は複数の出力デバイス624も、図示の実施例のインターフェース回路620に接続されている。出力デバイス624は、例えば、ディスプレイデバイス(例えば発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ(LCD)、カソードレイチューブディスプレイ(CRT)、インプレイススイッチング(IPS)ディスプレイ、タッチスクリーン等)、触覚出力デバイス、プリンタ、及び/又はスピーカーによって実装することができる。したがって、図示の実施例のインターフェース回路620は、典型的には、グラフィックドライバカード、グラフィックドライバチップ、及び/又はグラフィックドライバプロセッサを含む。
【0094】
図示の実施例のインターフェース回路620は、ネットワーク626を介する外部の機械(例えば、任意の種類のコンピューティングデバイス)とのデータ交換を容易にするための、送信器、受信器、トランシーバ、モデム、常駐ゲートウェイ、無線アクセスポイント、及び/又はネットワークインターフェースといった通信機器も含む。この実施例では、ネットワーク626が図2の例示的ネットワーク260を実装している。通信は、例えば、イーサネット接続、デジタル加入者回線(DSL)接続、電話線接続、同軸ケーブルシステム、衛星システム、見通し内無線システム、携帯電話システム等を介するものとすることができる。
【0095】
図示の実施例のプロセッサプラットフォーム600は、ソフトウエア及び/又はデータを記憶するための一つ又は複数の大容量記憶装置628も含む。そのような大容量記憶装置628の例には、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、独立ディスクのリダンダントアレイ(RAID)システム、及びデジタル多用途ディスク(DVD)ドライブが含まれる。この実施例では、一つ又は複数の大容量記憶装置628が図2の例示的データベース250を実装している。
【0096】
図3から5のマシンにより実行可能な命令632は、大容量記憶装置628、揮発性メモリ614、不揮発性メモリ616、及び/又は、CD若しくはDVDといった取り外し可能な非一過性のコンピュータ可読記憶媒体に記憶することができる。
【0097】
前述より、ロボット制御を向上させる例示的な方法、装置、及び製造品が開示されたことが明らかであろう。開示された方法、装置、及び製造品により、ロボットにより実施される組立タスクに適用される補正ファクタを決定するために、ロボットのエンドエフェクタに関連付けられる情報を使用することにより、ロボットの作業を容易にするセンサ及びセンサベースのシステムの量が低減される。カメラベースのシステムといったセンサベースのシステムは、機能するためにコンピューティング及びストレージリソースの量の増加を要し、開示された方法、装置、及び製造品は、そのようなシステムの必要性を低下させる及び/又は他の方法で排除する。開示された方法、装置、及び製造品は、従来のロボットと比較して、ロボットの作業を容易にするために必要なコンピューティング及び/又はストレージリソースの量を低減することができる。例えば、開示された方法、装置、及び製造品は、追加の処理タスクを実施するために未使用のリソースを割り付けることができ、したがって、ロボットに関連付けられる一つ又は複数のプロセッサの能力又は機能を向上させる及び/又は他の方法で増大させることができる。したがって、開示された方法、装置、及び製造品は、コンピュータの機能性の一つ又は複数の向上を目的としている。
【0098】
以下は、本明細書に開示される更なる実施例に関する。
【0099】
実施例1はコマンド生成器を備える装置を含み、コマンド生成器は、ロボットに対し、ロボットの第1の姿勢に基づいて第1のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第1の姿勢がモデルに基づいている、命令すること、ロボットが第2の実際のタスク前位置へ移動する時第1のタスクを実施するためにロボットを第1の実際のタスク前位置に調節することであって、第1の実際のタスク前位置が推定タスク前位置に近接している、調節すること、及び補正ファクタに基づいて第2のタスクを実施するようにロボットに指示することであって、補正ファクタが、ロボットの第2の姿勢を決定することであって、第2の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第1のタスクを実施した後のロボットに関連付けられる位置情報に対応する、ロボットの第2の姿勢を決定することと、第1の姿勢及び第2の姿勢に基づいて補正ファクタを計算することとによって決定される、指示することを行う。
【0100】
実施例2は、第1のタスクが、ロボットが第1の組立品を第2の組立品に連結することを含む、実施例1の装置を含む。
【0101】
実施例3は、第1の姿勢が第1の一様行列であり、第2の姿勢が第2の一様行列であり、補正ファクタが、第2の一様行列と第1の一様行列の逆行列とを乗じることにより計算される、実施例1又は2の装置を含む。
【0102】
実施例4は、第1の一様行列及び第2の一様行列が4×4の一様行列である、実施例3の装置を含む。
【0103】
実施例5は、第2のタスクに関連付けられる一組の軌道を生成すること、第2の姿勢に最も近い目標状態を有する前記組内の軌道の一つを決定すること、及び補正ファクタを目標状態に適用して前記軌道の一つに関連付けられる一つ又は複数の接合状態を生成することにより、補正ファクタに基づいてモデルを更新するモデルハンドラを更に含む、実施例1から4のいずれか一つの装置を含む。
【0104】
実施例6は、モデルハンドラが、推定タスク前位置の座標を決定するために、グラウンドトルースとしてモデルを使用することにより推定タスク前位置を決定することを更に含む、実施例1から5のいずれか一つの装置を含む。
【0105】
実施例7は、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、コマンド生成器がロボットを第1の実際のタスク前位置に調節する、実施例1から6のいずれか一つの装置を含む。
【0106】
実施例8は、命令を含む非一過性コンピュータ可読記憶媒体を含み、命令は、実行されると、マシンに少なくとも、ロボットに対し、ロボットの第1の姿勢に基づいて第1のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第1の姿勢がモデルに基づいている、命令すること、ロボットが第2の実際のタスク前位置へ移動する時第1のタスクを実施するためにロボットを第1の実際のタスク前位置に調節することであって、第1の実際のタスク前位置が推定タスク前位置に近接している、調節すること、第1のタスクを実施した後のロボットの第2の姿勢を決定することであって、第2の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第1のタスクを実施した後のロボットの位置に対応する、決定すること、第1の姿勢と第2の姿勢とに基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第2のタスクを実施することをロボットに指示することを行わせる。
【0107】
実施例9は、第1のタスクが、ロボットが第1の組立品を第2の組立品に連結することを含む、実施例8の非一過性コンピュータ可読記憶媒体を含む。
【0108】
実施例10は、第1の姿勢が第1の一様行列であり、第2の姿勢が第2の一様行列であり、実行されるとマシンに少なくとも第2の一様行列と第1の一様行列とを乗じることにより補正ファクタを計算させる命令を更に含む、実施例8又は9の非一過性コンピュータ可読記憶媒体を含む。
【0109】
実施例11は、第1の一様行列及び第2の一様行列が4×4の一様行列である、実施例10の非一過性コンピュータ可読記憶媒体を含む。
【0110】
実施例12は、実行されると、マシンに少なくとも、第2のタスクに関連付けられる一組の軌道を生成することにより補正ファクタに基づいてモデルを更新させ、第2の姿勢に最も近い目標状態を有する組内の軌道の一つを決定させ、目標状態に補正ファクタを適用することにより軌道の一つに関連付けられる一つ又は複数の接合状態を生成させる命令を更に含む、実施例8から11のいずれか一つの非一過性コンピュータ可読記憶媒体を含む。
【0111】
実施例13は、実行されると、マシンに少なくとも、推定タスク前位置の座標を決定するために、グラウンドトルースとしてモデルを使用することにより推定タスク前位置を決定させる命令を更に含む、実施例8から12のいずれか一つの非一過性コンピュータ可読記憶媒体を含む。
【0112】
実施例14は、実行されると、マシンに少なくとも、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、ロボットを第1の実際のタスク前位置に調節させる命令を更に含む、実施例8から13のいずれか一つの非一過性コンピュータ可読記憶媒体を含む。
【0113】
実施例15は、ロボットに対してモデルに基づくロボットの第1の姿勢に基づいて第1のタスクを実施するためにエンドエフェクタを第1の位置から第2の位置へ移動するように命令すること、ロボットが第3の位置へ移動することに応答して、第1のタスクを実施するために、ロボットを第2の位置に近接する第4の位置に調節すること、第1のタスクを実施することに応答して、ロボットの第2の姿勢を決定することであって、第2の姿勢が第5の位置におけるロボットに関連付けられる位置情報に対応しており、第5の位置が第1のタスクを実施した後のロボットの位置に対応している、決定すること、第1の姿勢と第2の姿勢に基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第2のタスクを実施するようにロボットに指示することを含む方法を含む。
【0114】
実施例16は、第1のタスクが、ロボットが第1の組立品を第2の組立品に連結することを含む、実施例15の方法を含む。
【0115】
実施例17は、第1の姿勢が第1の一様行列であり、第2の姿勢が第2の一様行列であり、補正ファクタを計算することが、第2の一様行列と第1の一様行列の逆行列とを乗じることを含む、実施例15又は16の方法を含む。
【0116】
実施例18は、補正ファクタに基づいてモデルを更新することであって、第2のタスクに関連付けられる一組の軌道を生成することを含む、更新すること、第2の姿勢に最も近い目標状態を有する前記組内の軌道の一つを決定すること、及び補正ファクタを目標状態に適用して軌道の一つに関連付けられる一つ又は複数の接合状態を生成することを更に含む、実施例15から17のいずれか一つの方法を含む。
【0117】
実施例19は、第2の位置が、第2の位置の座標を決定するためにグラウンドトルースとしてモデルを使用することにより決定される、実施例15から18のいずれか一つの方法を含む。
【0118】
実施例20は、ロボットを第4の位置に調節することが、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することを含む、実施例15のいずれかの方法を含む。
【0119】
本明細書では、特定の例示的な方法、装置、及び製品が開示されたが、本特許の対象範囲はこれらに限定されるものではない。むしろ、本特許は、本特許の特許請求の範囲内に公正に当てはまるすべての方法、装置、及び製品を対象としている。
図1
図2
図3
図4
図5
図6