(57)【要約】      （修正有）【課題】タスクの経費、複雑性、および時間を増大させないオブジェクト認識システムに係るロボット制御のための方法及び装置を提供する。【解決手段】ロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第１の姿勢がモデルに基づいている。ロボットが第２の実際のタスク前位置へ移動する時第１のタスクを実施するためにロボットを第１の実際のタスク前位置に調節することであって、第１の実際のタスク前位置が推定タスク前位置に近接している。補正ファクタに基づいて第２のタスクを実施するようにロボットに指示することであって、補正ファクタが、ロボットの第２の姿勢を決定することであって、第２の姿勢がタスク後位置に関連付けられる位置情報に対応する、ロボットの第２の姿勢を決定する。【選択図】なし【特許請求の範囲】
【請求項１】
コマンド生成器を備えた装置であって、前記コマンド生成器が：
ロボットに対し、前記ロボットの第１の姿勢に基づいて第１のタスクを実施するために、エンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、前記第１の姿勢がモデルに基づいている、命令すること；
前記ロボットが第２の実際のタスク前位置へ移動する時、前記第１のタスクを実施するように前記ロボットを第１の実際のタスク前位置に調節することであって、前記第１の実際のタスク前位置が前記推定タスク前位置に近接している、調節すること；並びに
補正ファクタに基づいて第２のタスクを実施するように前記ロボットに指示することであって、前記補正ファクタが、
前記ロボットの第２の姿勢を決定することであって、前記第２の姿勢がタスク後位置における前記ロボットに関連付けられる位置情報に対応し、前記タスク後位置が前記第１のタスクを実施した後の前記ロボットに関連付けられる位置情報に対応する、前記ロボットの第２の姿勢を決定すること；及び
前記第１の姿勢と前記第２の姿勢とに基づいて前記補正ファクタを計算すること
により決定される、指示すること
を行う、装置。
【請求項２】
前記第１のタスクが、前記ロボットが第１の組立品を第２の組立品に連結することを含む、請求項１に記載の装置。
【請求項３】
前記第１の姿勢が第１の一様行列であり、前記第２の姿勢が第２の一様行列であり、前記補正ファクタが、前記第２の一様行列と前記第１の一様行列の逆行列とを乗じることにより計算される、請求項１又は２に記載の装置。
【請求項４】
前記第１の一様行列及び前記第２の一様行列が４×４の一様行列である、請求項３に記載の装置。
【請求項５】
前記第２のタスクに関連付けられる一組の軌道を生成すること；
前記第２の姿勢に最も近い目標状態を有する前記組の前記軌道の一つを決定すること；及び
前記補正ファクタを前記目標状態に適用することにより、前記軌道の前記一つに関連付けられる一つ又は複数の接合状態を生成すること
により、前記補正ファクタに基づいて前記モデルを更新するモデルハンドラ
を更に含む、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記推定タスク前位置の座標を決定するために、前記モデルをグラウンドトルースとして使用することにより前記推定タスク前位置を決定するモデルハンドラを更に含む、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記コマンド生成器が、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、前記第１の実際のタスク前位置に前記ロボットを調節する、請求項１から６のいずれか一項に記載の装置。
【請求項８】
命令を含む非一過性コンピュータ可読記憶媒体であって、前記命令は、実行されると、マシンに少なくとも：
ロボットに対し、前記ロボットの第１の姿勢に基づいて第１のタスクを実施するために、エンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、前記第１の姿勢がモデルに基づいている、命令すること；
前記ロボットが第２の実際のタスク前位置へ移動する時、前記第１のタスクを実施するように前記ロボットを第１の実際のタスク前位置に調節することであって、前記第１の実際のタスク前位置が前記推定タスク前位置に近接している、調節すること；
前記第１のタスクを実施した後の前記ロボットの第２の姿勢を決定することであって、前記第２の姿勢がタスク後位置における前記ロボットに関連付けられる位置情報に対応し、前記タスク後位置が前記第１のタスクを実施した後の前記ロボットの位置に対応する、決定すること；
前記第１の姿勢と前記第２の姿勢とに基づいて補正ファクタを計算すること；及び
前記補正ファクタに基づいて第２のタスクを実施するように前記ロボットに指示すること
を行わせる、非一過性コンピュータ可読記憶媒体。
【請求項９】
前記第１のタスクが、前記ロボットが第１の組立品を第２の組立品に連結することを含む、請求項８に記載の非一過性コンピュータ可読記憶媒体。
【請求項１０】
前記第１の姿勢が第１の一様行列であり、前記第２の姿勢が第２の一様行列であり、実行されると、前記マシンに少なくとも、前記第２の一様行列と前記第１の一様行列の逆行列とを乗じることにより前記補正ファクタを計算させる命令を更に含む、請求項８に記載の非一過性コンピュータ可読記憶媒体。
【請求項１１】
前記第１の一様行列と前記第２の一様行列が４×４の一様行列である、請求項１０に記載の非一過性コンピュータ可読記憶媒体。
【請求項１２】
実行されると、前記マシンに少なくとも：
前記第２のタスクに関連付けられる一組の軌道を生成すること；
前記第２の姿勢に最も近い目標状態を有する前記組の前記軌道の一つを決定すること；及び
前記補正ファクタを前記目標状態に適用することにより、前記軌道の前記一つに関連付けられる一つ又は複数の接合状態を生成すること
により、前記補正ファクタに基づいて前記モデルを更新させる命令を更に含む、請求項８から１１のいずれか一項に記載の非一過性コンピュータ可読記憶媒体。
【請求項１３】
実行されると、前記マシンに少なくとも、前記推定タスク前位置の座標を決定するために、前記モデルをグラウンドトルースとして使用することにより、前記推定タスク前位置を決定させる命令を更に含む、請求項８から１２のいずれか一項に記載の非一過性コンピュータ可読記憶媒体。
【請求項１４】
実行されると、前記マシンに少なくとも、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、前記ロボットを前記第１の実際のタスク前位置に調節させる命令を更に含む、請求項８から１３のいずれか一項に記載の非一過性コンピュータ可読記憶媒体。
【請求項１５】
ロボットの第１の姿勢に基づいて第１のタスクを実施するために、前記ロボットに対し、エンドエフェクタを第１の位置から第２の位置へ移動させるように命令することであって、前記第１の姿勢がモデルに基づいている、命令すること；
前記ロボットが第３の位置へ移動することに応答して、前記第１のタスクを実施するために前記ロボットを第４の位置に調節することであって、前記第４の位置が前記第２の位置に近接している、調節すること；
前記第１のタスクを実施することに応答して、前記ロボットの第２の姿勢を決定することであって、前記第２の姿勢が、第５の位置における前記ロボットに関連付けられる位置情報に対応し、前記第５の位置が、前記第１のタスクを実施した後の前記ロボットの位置に対応する、決定すること；
前記第１の姿勢と前記第２の姿勢とに基づいて補正ファクタを計算すること；及び
前記補正ファクタに基づいて第２のタスクを実施するように前記ロボットに指示すること
を含む、請求項１から７のいずれか一項に記載の装置を実装する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してロボットに関し、より詳細にはロボット制御のための方法及び装置に関する。
【背景技術】
【０００２】
オブジェクト認識システムは、数々のアプリケーションと対応するデバイスに展開されている。コラボレイティブロボットのようなデバイスは、組立又は製造に関連するタスクを実施するためにオブジェクト認識システムを使用することができる。オブジェクト認識システムは、組立タスクを実施する特定のロケーションへロボティックアームとエンドエフェクタをガイドすることができる。しかしながら、オブジェクト認識システムは、組立タスクの経費、複雑性、及び待ち時間を増大させ得る。
【発明の概要】
【０００３】
ロボット制御のためのシステム、方法、装置、及び製造品が開示される。
【０００４】
本明細書に開示される一つの例示的装置はコマンド生成器を含み、コマンド生成器は、ロボットに対し、ロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第１の姿勢がモデルに基づいている、命令すること、ロボットが第２の実際のタスク前位置へ移動する時第１のタスクを実施するためにロボットを第１の実際のタスク前位置に調節することであって、第１の実際のタスク前位置が推定タスク前位置に近接している、調節すること、及び補正ファクタに基づいて第２のタスクを実施するようにロボットに指示することであって、補正ファクタが、ロボットの第２の姿勢を決定することであって、第２の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第１のタスクを実施した後のロボットに関連付けられる位置情報に対応する、ロボットの第２の姿勢を決定することと、第１の姿勢及び第２の姿勢に基づいて補正ファクタを計算することとによって決定される、指示することを行う。
【０００５】
一つの例示的非一過性コンピュータ可読記憶媒体は命令を含み、これら命令は、実行されると、マシンに少なくとも、ロボットに対し、ロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第１の姿勢がモデルに基づいている、命令すること、ロボットが第２の実際のタスク前位置へ移動する時第１のタスクを実施するためにロボットを第１の実際のタスク前位置に調節することであって、第１の実際のタスク前位置が推定タスク前位置に近接している、調節すること、第１のタスクを実施した後のロボットの第２の姿勢を決定することであって、第２の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第１のタスクを実施した後のロボットの位置に対応する、決定すること、第１の姿勢と第２の姿勢に基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第２のタスクを実施することをロボットに指示することを行わせる。
【０００６】
本明細書に開示される一つの例示的方法は、ロボットに対し、ロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタを第１の位置から第２の位置へ移動するように命令することであって、第１の姿勢がモデルに基づいている、命令すること、ロボットが第３の位置へ移動することに応答して第１のタスクを実施するためにロボットを第４の位置に調節することであって、第４の位置が第２の位置に近接している、調節すること、第１のタスクを実施することに応答してロボットの第２の姿勢を決定することであって、第２の姿勢が第５の位置におけるロボットに関連付けられる位置情報に対応しており、第５の位置が第１のタスクを実施した後のロボットの位置に対応している、決定すること、第１の姿勢と第２の姿勢に基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第２のタスクを実施することをロボットに指示することを含む。
【図面の簡単な説明】
【０００７】
【図１】Ａ及びＢは、例示的アセンブリ上で組立タスクを実施するように例示的ロボットを制御する例示的ロボットマネージャを示している。
【図２】図１Ａ及び１Ｂの例示的ロボットマネージャの一つの例示的実装態様のブロック図である。
【図３】図１Ａ−１Ｂの例示的ロボットを用いて組立タスクを実施する図１Ａ−２の例示的ロボットマネージャを実装するように実行され得る、例示的なマシン可読命令を表すフロー図である。
【図４】補正ファクタに基づいてモデルを更新するために図１Ａ−２の例示的なロボットマネージャによって使用され得る、例示的なマシン可読命令を表すフロー図である。
【図５】図１Ａ−１Ｂの例示的ロボットを用いて組立タスクを実施する図１Ａ−２の例示的ロボットマネージャを実装するように実行され得る、例示的なマシン可読命令を表す別のフロー図である。
【図６】図１Ａ−２の例示的ロボットマネージャを実装するように図３−５例示的マシン可読命令を実行するために構造化された例示的処理プラットフォームのブロック図である。
【０００８】
図面は原寸に比例しない。一般に、図面及び図面に関する記載の全体を通して、同一の部分又は類似の部分には同じ参照番号が使用される。
【発明を実施するための形態】
【０００９】
コラボレーションロボットのような産業的組立又は製造作業のために使用される典型的なロボットは、位置確認のためにロボットのエンドエフェクタに関連付けられる外部センサ又は一次センサへの追加センサを利用する及び／又はそれ以外の方法で依存する。コボット又は協働ロボットとも呼ばれるコラボレイティブロボットは、共有ワークスペースにおいて人間と物理的に対話することを意図したマシンである。いくつかの事例では、協働ロボットは、自律的に又は限定されたガイダンスで動作するようにプログラムされている及び／又はそれ以外の方法で構成されている。このようなロボットは、一つ又は複数の組立位置における一つ又は複数の組立作業又はタスクを含むワークフローを実行するために使用することができる。例えば、ロボットは、オブジェクト表面の一つのロケーション又は位置でオブジェクト表面にファスナを連結する及び／又は他の方法で取り付ける組立タスクを実施するために使用することができる。
【００１０】
位置確認は、ロボットが、ロボットの物理的環境に対応するコンピュータベースのモデル環境内でのロボットの位置を決定することを指す。例えば、ロボットは、エンコーダ等の一次センサからのフィードバックを使用して、コンピュータベースのモデルを参照することにより、物理的環境内におけるロボットの位置、位置の変化等を決定することができる。いくつかの事例では、ロボットは、位置確認決定の努力を支援するための一つ又は複数の二次センサシステムを含む。例えば、ロボットは、ロボットの位置を決定するために一次センサと連携する別のエンコーダ（例えば光学エンコーダ）、カメラ（例えばカメラベースのセンサシステム）、レーザ等を使用する。
【００１１】
いくつかの既知のロボットは、各々が開始位置と終了位置を含む、事前に生成された軌道を使用して連続的組立タスクを実施する。いくつかの事例では、既知のロボットは、ロボット位置確認の不確実性が不確実性閾値を満たすがために、組立タスクを正常に完了できない場合がある。既知のロボットは、実際のロボットの姿勢（例えば実際のロボット位置）と予想されるロボット姿勢（例えば予想ロボット位置）との差が不確実性閾値を上回るために、組立タスクが正常に完了できないと決定することができる。例えば、既知のロボットは、既知のロボットが物理的環境に対するロボットの位置情報を確実に決定できないことに起因して、ロボットのエンドエフェクタとアセンブリとの衝突を引き起こすことがある。
【００１２】
本明細書において使用される用語「姿勢」は、（規定の）座標系に対するオブジェクト（例えば、エンドエフェクタ、ロボットの一つ又は複数の接合部等）の配向又は位置のうちの少なくとも一つを含む位置情報を指す。いくつかの事例では、姿勢は、オブジェクトを基準姿勢又は推定姿勢から実際の姿勢又は観察姿勢に移動させることのできる回転変換及び／又は並行移動変換を用いて説明される。いくつかの事例では、回転及び／又は並行移動変換情報は、一つ又は複数の回転行列、並行移動行列等により表わされる。いくつかの事例では、回転及び／又は並行移動変換情報は、一つ又は複数の回転四元数、並行移動四元数等により表わされる。いくつかの事例では、ロボットは、第１の姿勢を第２の姿勢にリンクさせる及び／又は他の方法で接続する軌道を辿ること、軌道に沿った一つ又は複数の中間地点へ移動すること等により、第１の姿勢から第２の姿勢へ移動する。例えば、軌道は、種々のロボットアーム部分の動き、角度、速度等、及び／又はそれらの組み合わせを含む、ロボットのエンドエフェクタの走行軌跡を指す。
【００１３】
いくつかの事例では、既知のロボットは、組立タスクの完了を容易にするために実際のロボット姿勢を予想ロボット姿勢に調節する二次センサシステムを使用する。例えば、既知のロボットは、物理的環境内でモデルに基づく第１の位置へ移動することを意図しながら、モデル環境内でのロボットと比較した場合の物理的環境内でのロボットの寸法の差、許容誤差の蓄積等に起因して、物理的環境内での第２の位置へ移動することがある。このような例では、第１の位置における第１の姿勢は推定ロボット姿勢であり、第２の位置における第２の姿勢は実際のロボット姿勢である。既知のロボットは、補正ファクタ又は位置確認のずれを計算することにより、第２の位置から組立タスクを実施する第１の位置へロボットを移動させるために二次センサシステムを使用することができる。既知のロボットは、計算された補正ファクタが一つの組立タスクと次の組立タスクで異なる場合、組立タスクの実施後に毎回補正ファクタを計算してそのような調節を実施することができる。
【００１４】
しかしながら、二次センサシステムは、このような既知のロボットに追加の材料費及び維持費を付加する。二次センサシステムはまた、センサに付属するシステムを組み込むためにこのような既知のロボットのプログラミングの複雑性が増大するために、演算コスト及び開発費を付加する。既知のロボットは、センサデータを取得し、センサデータを処理し、処理されたセンサデータに基づいて位置確認情報を生成するために必要な実行時間が延びるために、作業を実施するために二次センサシステムを使用する及び／又は他の方法で二次センサシステムに依存することにより、悪影響を受ける。
【００１５】
本明細書に開示される実施例は、ロボットがタスクを実施する時位置確認のずれを決定してロボット軌道に適用することによるロボット制御のための一つの例示的ロボットマネージャを含む。開示されるいくつかの実施例では、ロボットマネージャは、ユーザ又は第三者の介在なしで複数の組立タスク（例えば、１０の組立タスク、１００の組立タスク、１０００の組立タスク等）を含むワークフローを連続的に実施するロボットに関連付けられる推定姿勢、軌道等を含む、コンピュータベースのモデルを生成する。開示されるいくつかの実施例では、ロボットがワークフローを開始する及び／又は他の方法で実施する前に、ユーザが、ワークフローに含まれる第１の組立タスクの実施に関連付けられる第１の組立位置（例えば、第１のタスク前位置、第１の操作前位置等）へロボットをガイドする。ロボットを第１の組立位置へガイドした後、ユーザは、ロボットが、第１の組立タスクを実施するための正確な位置にあることを確認する。開示されるいくつかの実施例では、ロボットマネージャは、第１のタスク前位置におけるロボットの第１の実際のタスク前姿勢を計算する。第１の実際のタスク前姿勢は、ボルト上につばをねじ込むといった組立タスクを実施する前のロボットの位置を指し得る。
【００１６】
ユーザが位置を確認すると、ロボットマネージャはロボットに対し、第１の組立タスクの実施を命令する。ロボットは、第１の組立タスクを実施すると、タスク後位置（例えば操作後位置）へ移動し、ロボットマネージャはロボットの第１の実際のタスク後姿勢を計算する。第１の実際のタスク後姿勢は、ボルト上につばをねじ込むといった組立タスクを実施した後のロボットの位置を指し得る。ロボットマネージャは、ロボットのエンドエフェクタをモニタするセンサから測定値を取得することによりロボットの第１の実際のタスク前姿勢及び第１の実際のタスク後姿勢を計算する。ロボットマネージャは、（１）第１の実際のタスク前姿勢と第１の推定タスク前姿勢、又は（２）第１の実際のタスク後姿勢と第１の推定タスク後姿勢のうちの少なくとも一つを比較することにより位置確認のずれを計算し、ここで第１の推定タスク前姿勢と第１の推定タスク後姿勢はコンピュータベースのモデルにより決定される。例えば、位置確認のずれは、一つ又は複数の回転四元数、並行移動四元数等により表される回転及び／又は並行移動変換情報により規定される。いくつかの実施例では、位置確認のずれは位置確認にずれのある姿勢に対応し、ここでロボットマネージャ１００は、現在の推定姿勢から位置確認にずれのある姿勢までの軌道を決定する。
【００１７】
開示されるいくつかの実施例では、ロボットマネージャは、それ以上のユーザの介入なしで位置確認のずれに基づいて複数の組立タスクを実施する。例えば、ロボットマネージャは、ロボットに対し、位置確認のずれに基づいて第２の組立タスク、第３の組立タスク等の実施を命令する。ロボットマネージャは、ロボットに対し、第２の組立タスクの実施に関連付けられる第２の推定タスク前姿勢へ移動するように命令することができる。第２の推定タスク前姿勢へ移動するようにとの命令に応答して、ロボットは、コンピュータベースのモデルによって決定された第１の軌道に沿って移動し、ホーム姿勢から第２の実際のタスク前姿勢へ移動することができる。ロボットが第１の軌道を完了すると、ロボットマネージャは位置確認のずれを第１の軌道に適用してロボットの位置を調節する。例えば、ロボットマネージャは、ロボットに対し、第２の軌道に沿って移動し、第２の実際のタスク前姿勢から第３の実際のタスク前姿勢へ移動することを命令することができ、ここで第２の軌道は位置確認のずれを第１の軌道に適用することにより決定され、第３の実際のタスク前姿勢は第２の推定タスク前姿勢に近接している。このような実施例では、ロボットマネージャは、追加の位置確認のずれを計算するユーザの介入又は二次センサシステムなしで、位置確認のずれを使用することにより第２の組立タスク及びその後の組立タスクの実施を容易にする。
【００１８】
図１Ａは、例示的環境１０６内において例示的アセンブリ１０４上で組立タスクを実施するように例示的ロボット１０２を制御する例示的ロボットマネージャ１００を示している。図１Ａでは、ロボットマネージャ１００はロボット１０２の外部にある。追加的に又は代替的に、ロボットマネージャ１００はロボット１０２に含まれてもよい。図１Ａでは、ロボット１０２は、例示的エンドエフェクタ１０８を含むインピーダンス制御ロボット（例えばインピーダンス制御コラボレイティブロボット）である。図１Ａのロボット１０２は、一つ又は複数のプロセッサを使用して作動させる及び／又は他の方法で制御することのできる、一つ又は複数のアクチュエータ１１０（例えば、電動モータ、油圧ポンプ、空気ピストン、ソレノイド、バルブ等）を含む。一つ又は複数のプロセッサは、ロボット１０２に含まれてもよい、及び／又は（通信可能に）ロボット１０２に連結されてもよい。代替的に、ロボット１０２は、オペレータ（例えば、保守要員、技師、ユーザ等）からのアシスト又は入力あり又はなしで、組立タスクを実施することのできる他のいずれかの種類のマシンでもよい。図１Ａでは、環境１０６は、ロボット１０２、アセンブリ１０４等を含む物理的環境である。例えば、環境１０６は組立工場、製造施設等に対応する。
【００１９】
図１Ａでは、エンドエフェクタ１０８は、ナットランナーツール（例えば、電動ナットランナー、空気ナットランナー等）、又はトルクレンチである。例えば、ナットランナーツールは、構成要素、組立品等を互いに対して取り付ける及び／又は他の方法で連結するために使用される。代替的に、エンドエフェクタ１０８は、グリッパー（例えば、インパクトグリッパー、吸引式グリッパー、収束式グリッパー、連続式グリッパー等）、ペイントスプレーガン、溶接ヘッド等といった他のいずれかの種類のアイテムマニピュレータでもよい。図１Ａのロボット１０２は、エンドエフェクタ１０８に関連付けられた一つ又は複数の例示的センサ１１２を含む。図１Ａでは、センサ１１２はフォーストルクセンサである。例えば、センサ１１２は、エンドエフェクタ１０８の一つ又は複数の軸、及び／又はより一般的には組立品に関連付けられる一つ又は複数の軸（例えば、Ｘ軸、Ｙ軸、Ｚ軸等）に沿ったフォース及び／又はトルクを測定する。追加的に又は代替的に、センサ１１２はエンコーダとすることができる。代替的に、ロボット１０２は、カメラ、エンコーダ等といったセンサを含んでもよい。例えば、図１Ａのロボット１０２は、タスクを実施する時ロボット１０２の移動、配向等をアシストするためにロボットマネージャ１００に通信可能に連結されたカメラベースのシステム（例えば、一つ又は複数のカメラ、ビデオカメラ等を含むシステム）を含み得る。例えば、ロボット１０２は、カメラ、エンコーダ、フォーストルクセンサ等、及び／又はこれらの組み合わせといった一つ又は複数のセンサ１１２を含む。
【００２０】
図１Ａでは、ロボット１０２は、アセンブリ１０４に関連付けられた一つ又は複数の組立タスクを実施するようにプログラムされている（例えば、マシン可読命令を実行する一つ又は複数のプロセッサ）及び／又は他の方法で構成されている。図１Ａのアセンブリ１０４は、タービンエンジンの空気取入口である。例えば、アセンブリ１０４は航空機のエンジン入口である。代替的に、アセンブリ１０４は、他のいずれかの種類の構成要素、装置、構造等でもよい。
【００２１】
図１Ａのロボット１０２は、アセンブリ１０４に関連付けられた一つ又は複数の組立タスクを実施するように構成されている。図１Ａでは、ロボット１０２は、例示的なつば１１４を含む第１の組立品を、例示的なボルト１１６を含む第２の組立品に取り付ける及び／又は他の方法で連結するように構成されている。代替的に、ロボット１０２は、他のいずれかの種類のファスナをアセンブリ１０４に連結することができるか、又はアセンブリ１０４上で他のいずれかの操作タスクを実施することができる。図１Ａでは、ロボット１０２は第１の位置（例えば、ホーム位置、開始位置等）にある。
【００２２】
図１Ａでは、ロボット１０２は、第１の位置まで進むこと、第２の位置（例えば、組立品採取位置、ステージング位置等）に移動して、処理すべきつば１１４の一つを取得すること、処理すべきボルト１１６の一つに近接する第３の位置（例えば、操作前位置、タスク前位置等）まで進むこと、及びつば１１４をボルト１１６に連結した後で第４の位置（例えば、操作後位置、タスク後位置等）に移動することを含む組立タスクを実施することができる。例えば、タスク前位置は、処理すべきボルト１１６に近接するが、処理すべきつば１１４にボルト１１６を連結する前のロボット１０２の位置に対応する。タスク後位置は、ボルト１１６をつば１１４に連結した後のロボット１０２の位置に対応し得る。つば１１４をボルト１１６に連結することに応答して、ロボット１０２は、別の組立タスクを実施するための第１の位置へ移動及び／又はそうでなければ戻ることができる。
【００２３】
図１Ｂは、図１Ａに関して上述したように図１Ａのロボット１０２を制御して組立タスクを実施させる図１Ａのロボットマネージャ１００を示している。例えば、ロボットマネージャ１００は、つば１１４を取得するために移動する時、図１Ａに示す第１の位置から第２の位置へ移動するようにロボット１０２に指示する及び／又は他の方法で命令する。図１Ｂでは、ロボット１０２は第３の位置にある。例えば、ロボット１０２は、処理すべきボルト１１６に近接するタスク前位置にある。タスク前位置は、操作前（即ちねじ込み前の）位置、又はボルト１１６につば／ナット１１４をねじ込む前にロボット１０２が移動する先の位置に対応する。
【００２４】
動作時、ロボットマネージャ１００は、ロボット１０２によって実施される一つ又は複数の組立タスクを含むワークフローを取得する。例えば、ワークフローは、一つ又は複数の例示的なコンピュータベースのモデル１１８に関連付けられた一連の組立タスク（例えば、１０の組立タスク、１００の組立タスク、１０００の組立タスク等）を含む。コンピュータベースのモデル１１８は、ロボット１０２、アセンブリ１０４、つば／ナット１１４、ボルト１１６等のコンピュータ支援設計（ＣＡＤ）モデルを含むことができる。ＣＡＤモデルは、二次元（２−Ｄ）モデル、三次元（３−Ｄ）モデル等とすることができる。例えば、モデル１１８は、ロボット１０２の物理的環境１０６に対応するモデル環境内でのロボット１０２、アセンブリ１０４等の位置情報（例えば姿勢）を含む。
【００２５】
いくつかの実施例では、ロボットマネージャ１００は、ワークフローが、ボルト１１６に近接する位置に対応する組立位置でロボット１０２がボルト１１６につば１１４を連結することを含と決定する。追加的に又は代替的に、ワークフローは、異なる組立タスクを含み得る。ロボットマネージャ１００は、ワークフローが、第１の組立位置でつば１１４のうちの第１のつばをボルト１１６のうちの第１のボルトに連結することに関連付けられる第１の組立タスク、第２の組立位置でつば１１４のうちの第２のつばをボルト１１６のうちの第２のボルトに連結することに関連付けられる第２の組立タスク等を含む一連の組立タスクを含むと決定することができ、ここで、第１の組立位置は、第２の組立位置に隣接及び／又は近接し、第１の組立位置は第２の組立位置等とは異なる。代替的に、第１の組立位置は、第２の組立位置に隣接及び／又は近接しなくてもよい。
【００２６】
動作時、ロボットマネージャ１００は、ボルト１１６、及び／又はより一般的にはアセンブリ１０４に関連付けられる一つ又は複数のモデル１１８に含まれる組立位置を決定する。例えば、ロボットマネージャ１００は、推定タスク前位置、推定タスク後位置等を決定することができる。ロボットマネージャ１００は、組立位置に基づいて、一つ又は複数の接合状態、中間地点等を含む軌道（例えばロボット軌道）を決定する。いくつかの実施例では、接合状態は、エンドエフェクタ１０８、接合部（例えば、ロボット１０２の二つ以上の構造的構成要素の連結点）、及び／又は、より一般的にはロボット１０２の位置に関連付けられる、一つ又は複数の角度、一つ又は複数の座標等の少なくとも一つを含む。例えば、ロボット１０２がホーム位置にあるときのロボット１０２の接合状態は、ロボット１０２の基部に対するエンドエフェクタ１０８の角度（度、ラジアン等）に対応する。
【００２７】
いくつかの実施例では、ロボットマネージャ１００は、ロボット１０２をホーム位置からステージング位置へ、ステージング位置から推定タスク前位置へ等移動させることに対応する軌道を決定する。このような実施例では、ロボットマネージャ１００は、ホーム位置に関連付けられる第１の接合状態、ステージング位置に関連付けられる第２の接合状態等を決定する。ロボットマネージャ１００は、ロボット１０２の推定タスク前姿勢に基づいて、ロボットをホーム位置から推定タスク前位置へ移動させるコマンドを生成し、ロボット１０２に送信することができる。例えば、推定タスク前姿勢は、軌道に沿ってホーム位置からモデル（複数可）１１８によって規定される及び／又はそうでなければモデル（複数可）１１８に含まれる推定タスク前位置へ移動した後の、モデル（複数可）１１８によって規定される及び／又はそうでなければモデル（複数可）１１８によって表されるロボット１０２の姿勢に対応する。
【００２８】
動作時、ロボットマネージャ１００がワークフローを開始する及び／又は他の方法で実施する前に、ユーザは、第１の軌道に沿って第１のステージング位置から第１のタスク前位置へロボット１０２をガイドし、第１の組立タスクを実施することができる。第１のステージング位置は、つば１１４のうちの第１のつばを取得する時のロボット１０２の位置に対応し得る。第１のタスク前位置は、ロボット１０２の第１の実際のタスク前位置に対応し得る。ユーザは、ロボット１０２を第１のタスク前位置へ移動させる時、第１の組立タスクを実施するために、ロボット１０２の第１のタスク前位置を位置合わせ及び確認する。ユーザがロボット１０２の第１のタスク前位置を確認する時、ロボットマネージャ１００は第１の実際のタスク前姿勢を計算する。第１の実際のタスク前姿勢を計算した後、ロボットマネージャ１００は、ロボット１０２に対し、第１の組立タスクを実施するように命令する。ロボット１０２が第１の組立タスクを実施した後で実際のタスク後位置に到達すると、ロボットマネージャ１００は第１の実際のタスク後姿勢を計算する。ロボットマネージャ１００は、（１）第１の実際のタスク前姿勢と第１の推定タスク前姿勢、又は（２）第１の実際のタスク後姿勢と第１の推定タスク後姿勢のうちの少なくとも一つを比較することにより位置確認のずれを計算し、ここで第１の推定タスク前姿勢と第１の推定タスク後姿勢はモデル（複数可）１１８に基づいている。
【００２９】
動作時、ロボット１０２は、ユーザ又は他の第三者のアシスト又は介入なしで、ロボットマネージャ１００によって決定された位置確認のずれを使用して、ワークフローの残りを実施する。例えば、ロボット１０２は、位置確認のずれを使用することにより、第２の組立タスク、第３の組立タスク等を実施する。例えば、ロボットマネージャ１００は、ロボット１０２に対し、第２の軌道に沿ってホーム位置から第２のステージング位置へ、次いで第２の推定タスク前位置へ移動することを指示し、次にロボット１０２を、第２の推定タスク前位置とは異なる第２の実際のタスク前位置へ移動させる。このような実施例では、ロボットマネージャ１００は、位置確認のずれに基づいて、第２の軌道に付加される第３の軌道を計算する。例えば、ロボット１０２が第２の軌道を完了した後、ロボットマネージャ１００は、ロボット１０２に対し、第３の軌道に沿って第２の実際のタスク前位置から第３の推定タスク前位置へ移動することを指示し、次にロボット１０２を、第３の実際のタスク前位置へ移動させ、ここで第２の実際のタスク前位置と第３の実際のタスク前位置の差は位置確認のずれに対応する。ロボット１０２は、第３の実際のタスク前位置へ移動すると、第２の組立タスクを実施する。ロボット１０２は、ワークフロー中の追加の組立タスクを同様に実施する。いくつかの実施例では、ロボットマネージャ１００は、位置確認のずれに基づいてモデル（複数可）１１８を更新する。例えば、ロボットマネージャ１００は、第３の組立タスク、第４の組立タスク等といった未処理の又は処理前の組立タスクに関連付けられる姿勢を調節するようにモデル（複数可）１１８を更新する。
【００３０】
いくつかの実施例では、ロボット１０２は組立位置まで進んで及び／又は他の方法でナビゲートされて組立タスクを実施する。他の実施例では、ロボット１０２は、閾値（例えば位置確認不確実性の閾値）を満たす位置確認の不確実性に基づいて組立タスクを実施しない。位置確認不確実性は、ロボット軌道に沿った一つ又は複数の中間地点における位置不確実性に基づいてロボット１０２が組立タスクを実施することができないかどうかを決定する一つ又は複数の確率関数の出力に対応させることができる。位置不確実性は、センサ１１２の測定、ロボット１０２の確認された接合状態等により一部又は全部が決定される実際の姿勢と推定姿勢との確率的相関を指し得る。例えば、ロボット１０２は、位置確認不確実性の決定に基づいて、組立位置において組立タスクを実施することが、ロボット１０２、つば１１４、ボルト１１６等を損傷させ得る衝突を生むであろうと決定することができる。他の実施例では、ロボット１０２は、エンドエフェクタ１０８がボルト１１６、アセンブリ１０４等と衝突することに起因して、組立タスクを実施することができない。いくつかの実施例では、閾値を満たす位置確認不確実性に応答して、ロボットマネージャ１００は、位置確認のずれ（例えば、位置確認の調節、補正ファクタ等）を計算する及び／又は他の方法で決定する。
【００３１】
図２は、図１Ａ及び１Ｂのロボットマネージャ１００の例示的実装態様のブロック図である。ロボットマネージャ１００は、組立タスクを実施する時、図１Ａ−１Ｂのロボット１０２の動作を容易にする。ロボットマネージャ１００は、コマンドを生成してこのコマンドをロボット１０２に送信し、モデル（複数可）１１８から決定された接合状態、中間地点等を含む軌道に基づいて、一つ又は複数の位置へロボット１０２を方向付ける。いくつかの実施例では、ロボットマネージャ１００は、ユーザがロボット１０２を確認済みの実際のタスク前位置へガイドする時、補正ファクタを決定する。他の実施例では、ロボットマネージャ１００は、組立タスクに関連付けられた位置確認不確実性が閾値を満たす時、補正ファクタを決定する。ロボットマネージャ１００は、その後の組立タスクの作業を容易にするために、補正ファクタに基づいてモデル（複数可）１１８を更新する（モデルハンドラ２２０に関して後述する）。図２に示される実施例では、ロボットマネージャ１００は、例示的ワークフローディレクター２１０、例示的モデルハンドラ２２０、例示的姿勢エンジン２３０、例示的コマンド生成器２４０、及び例示的データベース２５０を含む。
【００３２】
図２に示される実施例では、ロボットマネージャ１００は、ロボット１０２によって実施される一つ又は複数の組立タスクを含むワークフローを取得するためのワークフローディレクター２１０を含む。いくつかの実施例では、ワークフローディレクター２１０は、例示的ネットワーク２６０からワークフローを取得する。図２に示される実施例のネットワーク２６０はインターネットである。しかしながら、ネットワーク２６０は、例えば、一つ又は複数のデータバス、一つ又は複数のローカルエリアネットワーク（ＬＡＮ）、一つ又は複数の無線ＬＡＮ、一つ又は複数のプロセス制御ネットワーク、一つ又は複数のセルラ通信網、一つ又は複数の私設通信網、一つ又は複数の公衆網等を含むいずれかの適切な有線及び／又は無線ネットワーク（複数可）を使用して実装することができる。いくつかの実施例では、ネットワーク２６０は、ロボットマネージャ１００がネットワーク２６０に連結された外部コンピューティング装置（例えば、データベース、サーバ等）と通信することを可能にする。
【００３３】
いくつかの実施例では、ワークフローディレクター２１０は、ワークフローに関連付けられたモデル（複数可）１１８をインポートするための手段を含む。例えば、ワークフローディレクター２１０は、ロボット１０２に関連付けられる第１のＣＡＤモデル、アセンブリ１０４に関連付けられる第２のＣＡＤモデル、ロボット１０２及び／又はアセンブリ１０４の環境に関連付けられる第３のＣＡＤモデル等を取得する。ワークフローディレクター２１０は、二つ以上のモデル１１８を単一のモデルに合成する及び／又は他の方法で組み合わせることができる。
【００３４】
いくつかの実施例では、ワークフローディレクター２１０は、ワークフローに関連付けられる作業の順序又はシーケンスを決定するための手段を含む。例えば、ワークフローディレクター２１０は、図１Ａ−１Ｂのボルト１１６のうちの第１のボルトにつば１１４のうちの第１のつばを連結することに関連付けられる第１の組立タスクと、続いてボルト１１６のうちの第２のボルトにつば１１４のうちの第２のつばを連結することに関連付けられる第２の組立タスクとを含むシーケンスを決定する。他の実施例では、ワークフローディレクター２１０は、ロボット１０２によって実施されるべき追加の組立タスクが存在しないと決定する。
【００３５】
図２に示される実施例では、ロボットマネージャ１００は、モデル（複数可）１１８に基づいてロボット１０２の移動を調整する及び／又は他の方法で容易にするモデルハンドラ２２０を含む。いくつかの実施例では、モデルハンドラ２２０は、モデル（複数可）１１８に基づいて、推定タスク前位置、推定タスク後位置等といった組立位置を決定する。例えば、モデルハンドラ２２０は、モデル化環境（例えば、モデル空間、ＣＡＤ環境等）内の推定タスク前位置に関連付けられる座標を決定する。他の実施例では、モデルハンドラ２２０は、ロボット１０２のホーム位置、一つ又は複数のステージング位置、つば１１４のうちの一つ又は複数、ボルト１１６のうちの一つ又は複数等、或いは図１Ａ−１Ｂのロボット１０２及び／又はアセンブリ１０４に関連付けられる他のいずれかの構成要素若しくはオブジェクトの位置に関連付けられる座標を決定することができる。
【００３６】
いくつかの実施例では、モデルハンドラ２２０は、組立タスクに関連付けられる軌道（例えばロボット軌道）を決定するための手段を含む。例えば、モデルハンドラ２２０は、ロボット１０２をホーム位置、ステージング位置等からタスク前位置へ移動させるために使用することのできる軌道に含まれる、一つ又は複数の接合状態、中間地点等を特定することができる。いくつかの実施例では、ロボット１０２は、複数の軌道を介して組立品（例えばつば１１４）の適切な操作を果たすことができる。例えば、モデルハンドラ２２０は、第１の組立品（例えば、つば１１４のうちの第１のつば）を操作することを含む、処理すべき第１の組立タスクを選択することができる。第１の組立タスクを選択することに応答して、モデルハンドラ２２０は、第１の組立タスクに関連付けられる一つ又は複数の軌道を含む一組の軌道を生成することができる。
【００３７】
いくつかの実施例では、モデルハンドラ２２０は、特定される軌道が直前に処理された組立品のタスク後状態に近接する目標状態を有することを決定することにより、第１の組立タスクを実施するために、生成された一組の軌道から一つの軌道を特定するための手段を含む。例えば、モデルハンドラ２２０は、直前の組立タスクのタスク後位置におけるロボット１０２の姿勢が、複数のそれに先行するタスクからのロボット１０２の姿勢を使用するよりも信頼できる軌道を生成できると決定することにより、軌道を特定する。いくつかの実施例では、目標状態は、所望の位置、取り付けられた時の所望のトルク値等といった所望の特性を有する組立品の状態を指す。例えば、つば１１４のうちの一つの目標状態は、所望の位置及び／又は所望の  トルクでボルト１１６のうちの一つに連結されていることに対応する。例えば、所望の位置は、モデル（複数可）１１８内のボルト１１６の位置に基づいている。軌道を特定することに応答して、モデルハンドラ２２０は、軌道に関連付けられる接合状態を生成する。例えば、接合状態の各々は、中間地点、中間地点におけるロボット１０２の特性等に対応する。
【００３８】
いくつかの実施例では、モデルハンドラ２２０は、グラウンドトルースに基づいて推定ロボット姿勢を決定するための手段を含み、ここでグラウンドトルースはロボット１０２が利用できる最も正確な測定値に対応する。モデルハンドラ２２０は、モデル（複数可）１１８を、推定ロボット姿勢（例えば、推定タスク前姿勢、推定タスク後姿勢等）を決定するためのグラウンドトルースとして使用することができる。モデルハンドラ２２０は、軌道を用いてロボット１０２を移動させるシミュレーションを介してモデル（複数可）１１８内の座標を計算することにより、推定ロボット姿勢を決定することができる。例えば、モデルハンドラ２２０は、軌道を用いて、ホーム位置から、ボルト１１６のうちの第１のボルトに関連付けられる推定タスク前位置へロボット１０２を移動させることをシミュレートする。モデルハンドラ２２０は、シミュレーションにおいてロボット１０２が軌道に沿って移動する際のロボット１０２の座標を決定することにより、ホーム位置、推定タスク前位置等の座標を特定することができる。結果として、モデルハンドラ２２０は、モデル（複数可）１１８をグラウンドトルースとして使用することにより軌道をシミュレートする時、エンドエフェクタ１０８及び／又はロボット１０２の座標を特定することにより、エンドエフェクタ１０８及び／又はロボット１０２の推定姿勢を決定することができる。
【００３９】
いくつかの実施例では、モデルハンドラ２２０は、補正ファクタに基づいてモデル（複数可）１１８を更新するための手段を含む。例えば、モデルハンドラ２２０は、補正ファクタを使用して、ワークフロー中の組立タスクの実施に関連付けられる軌道に付加することのできる一組の軌道を生成することにより、モデル（複数可）１１８を更新する。例えば、モデルハンドラ２２０は、第１の組立タスクの間にロボット１０２がホーム位置から第１のステージング位置、第１の推定タスク前位置等へ移動するために使用する第１の軌道を含む第１の組の軌道を生成し、次にロボット１０２を第１の実際のタスク前位置へ移動させる。モデルハンドラ２２０は、ロボット１０２が第１の実際のタスク前位置から第２の実際のタスク前位置へ移動するために使用する第２の軌道を含む第２の組の軌道を生成することができ、ここで、第１から第２の実際のタスク前位置への動きの差は補正ファクタに基づいている。例えば、ロボット１０２は、ワークフロー中の組立タスクを実施する時、第１の組の軌道に付加する第２の組の軌道を使用する。他の実施例では、モデルハンドラ２２０は、第１の組の軌道をと第２の組の軌道とを組み合わせるか又は合成する第３の組の軌道を生成し、第３の組の軌道は第１の組の軌道と第２の組の軌道を置き換える。
【００４０】
いくつかの実施例では、モデルハンドラ２２０は、ロボット１０２が推定タスク前位置に移動する時のロボット１０２の実際の姿勢を決定するための手段を含む。例えば、モデルハンドラ２２０は、センサ１１２からの測定値をホーム姿勢又はステージング姿勢に適用することでホーム姿勢又はステージング姿勢からのエンドエフェクタ１０８の回転、並行移動等の変化を決定することにより、実際のタスク前ロボット１０２の姿勢を決定する。モデルハンドラ２２０は、前記測定値をホーム姿勢、ステージング姿勢等に適用することで一つ又は複数の回転四元数、一つ又は複数の並行移動四元数等、及び／又はこれらの組み合わせを計算することにより、実際のタスク前姿勢を決定することができる。
【００４１】
いくつかの実施例では、ロボットマネージャ１００は、組立タスクが（正常に）完了した時（例えば、ロボット１０２がタスク後位置にある時）、ロボット１０２の実際の姿勢を決定する。例えば、ロボット１０２がタスク前位置でつば１１４のうちの第１のつばをボルト１１６のうちの第１のボルトに連結することを開始して、連結完了後のタスク後位置へ移動する時、ロボットマネージャ１００はロボット１０２の実際のタスク後姿勢を決定する。このような実施例では、連結に関連付けられるトルク測定値がトルク閾値を満たす時（例えば、つば１１４のうちの第１のつばがボルト１１６のうちの第１のボルトの底部に達した時）、ロボットマネージャ１００は実際のタスク後位置におけるロボット１０２の実際のタスク後姿勢を決定する。ロボットマネージャ１００は、一つ又は複数の回転四元数、一つ又は複数の並行移動四元数等、及び／又はそれらの組み合わせを生成するために、センサ１１２からの測定値をホーム姿勢、ステージング姿勢等に適用することにより、実際のタスク後姿勢を決定してもよい。
【００４２】
図２に示される実施例では、ロボットマネージャ１００は、ロボット１０２による組立タスクの実施を容易にするために補正ファクタ又は位置確認のずれを決定する姿勢エンジン２３０を含む。いくつかの実施例では、姿勢エンジン２３０は、ユーザがロボット１０２を、確認済みの実際のタスク前位置、確認済みの実際のタスク後位置等に移動させた後、補正ファクタを決定する。いくつかの実施例では、姿勢エンジン２３０は、組立タスクが完了したかどうかに基づいて補正ファクタを決定する。例えば、姿勢エンジン２３０は、エンドエフェクタ１０８に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たすと決定する。他の実施例では、姿勢エンジン２３０は、エンドエフェクタ１０８に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たさないと決定する。このような実施例では、姿勢エンジン２３０は、エンドエフェクタ１０８及びつば１１４に関連付けられるトルク値が操作閾値（例えばトルク閾値）を満たすとき、組立タスクが正常に実施されたと決定することができる。例えば、姿勢エンジン２３０は、トルク値がトルク閾値より大きく、したがってトルク閾値を満たすとき、つば１１４がボルト１１６の底部に到達したと決定する。
【００４３】
いくつかの実施例では、姿勢エンジン２３０は、位置確認不確実性位置確認が不確実性の閾値を満たすかどうかを決定するための手段を含む。例えば、姿勢エンジン２３０は、第１のステージング位置に対応するロボット１０２の第１の接合状態を決定し、タスク前位置におけるロボット１０２の第２の接合状態を決定する。いくつかの実施例では、姿勢エンジン２３０は、第１の接合状態及び第２の接合状態の不確実性間の相関が位置確認不確実性の閾値を満たすと決定する。例えば、二つの接合状態の不確実性間の相関は、ユークリッド空間における二つの接合状態間の距離の関数として増大する。このような実施例では、姿勢エンジン２３０は、（その後の）接合状態に関連付けられる位置情報の信頼性が、ロボット１０２の現在の又は所与の接合状態に関連付けられる位置情報との類似性と共に増大すると決定する。
【００４４】
いくつかの実施例では、姿勢エンジン２３０は、組立タスクの実施が正常に完了しなかったときに補正ファクタが決定済みであるかどうかを決定するための手段を含む。例えば、姿勢エンジン２３０は、補正ファクタについてデータベース２５０に照会する。いくつかの実施例では、姿勢エンジン２３０は、データベース２５０から補正ファクタを受け取ること及び／又は他の方法で取得することに基づいて補正ファクタが決定済みであると決定する。他の実施例では、姿勢エンジン２３０は、照会に応答してデータベース２５０からヌル値、ヌル指標等を受け取ること及び／又は他の方法で取得することに基づいて、補正ファクタが未決であると決定する。
【００４５】
いくつかの実施例では、姿勢エンジン２３０は補正ファクタを決定するための手段を含む。例えば、姿勢エンジン２３０は、以下の方程式（１）に記載されるように、位置確認調節に対応する補正ファクタを計算する：
ｃｏｒｒｅｃｔｉｏｎ＿ｆａｃｔｏｒ＝ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ａｃｔｕａｌ＿ｐｏｓｅ＊ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ｅｘｐｅｃｔｅｄ＿ｐｏｓｅ．ｉｎｖｅｒｓｅ（）
方程式（１）
【００４６】
上の方程式（１）の実施例では、項「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ａｃｔｕａｌ＿ｐｏｓｅ」は、ロボット１０２が組立タスクを完了したときのロボット１０２の姿勢に対応する。例えば、姿勢エンジン２３０は、図１Ａ−１Ｂのつば１１４のうちの一つを操作することに関連付けられるトルク値がトルク閾値を満たす時（例えば、トルク値がトルク閾値を上回る）、「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ａｃｔｕａｌ＿ｐｏｓｅ」を決定することができる。上の方程式（１）の実施例では、項「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ｅｘｐｅｃｔｅｄ＿ｐｏｓｅ」は、モデル（複数可）１１８に基づいて決定されるロボット１０２の姿勢に対応する。例えば、項「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ｅｘｐｅｃｔｅｄ＿ｐｏｓｅ」は、モデル（複数可）１１８に基づいてロボット１０２が組立タスクを完了したときのロボット１０２の予想姿勢に対応する。
【００４７】
上の方程式（１）の実施例では、項「ｃｏｒｒｅｃｔｉｏｎ＿ｆａｃｔｏｒ、ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ａｃｔｕａｌ＿ｐｏｓｅ」、及び「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ｅｘｐｅｃｔｅｄ＿ｐｏｓｅ」は行列である。いくつかの実施例では、行列は、一つ又は複数の複素数又は一つ又は複数の実数のうちの少なくとも一つを含む。例えば、上の方程式（１）の実施例に含まれる一つ又は複数の項は、一つ又は複数の複素数又は一つ又は複数の実数のうちの少なくとも一つを含む四元数を表す行列に対応する。いくつかの実施例では、項のうちの一つ又は複数は、一様行列（例えば、一様な変換行列、４×４の一様な変換行列等）である。例えば、方程式（１）の実施例に含まれる一つ又は複数の項は、ロボット１０２の位置情報に関連付けられる一つ又は複数の座標を含む行列に対応する。例えば、姿勢エンジン２３０は、（１）項「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ａｃｔｕａｌ＿ｐｏｓｅ」に対応するロボット１０２の第１の姿勢に関連付けられる第１の一様行列と（２）項「ｒｏｂｏｔ＿ｂａｓｅ＿ｔｏ＿ｅｘｐｅｃｔｅｄ＿ｐｏｓｅ」に対応するロボット１０２の第２の姿勢に関連付けられる第２の一様行列の逆行列とを乗じることにより、補正ファクタを決定する。代替的に、項は、異なるサイズ及び／又は種類の行列でもよい。
【００４８】
図２に示される実施例では、ロボットマネージャ１００は、コマンド、命令等を生成する及び／又は他の方法で決定し、このコマンド、命令等をロボット１０２に送付してロボット１０２を制御するコマンド生成器２４０を含む。いくつかの実施例では、コマンド生成器２４０は、組立タスクを実施するためのコマンドを生成する。例えば、コマンド生成器２４０は、つば１１４のうちの一つをボルト１１６のうちの一つに連結するようにロボット１０２に命令するための一つ又は複数のコマンドを生成する。コマンド生成器２４０は、ロボット１０２をホーム位置からステージング位置へ移動させるための第１のコマンド、ステージング位置でつば１１４のうちの一つを取得するための第２のコマンド、ステージング位置からタスク前位置へ移動するための第３のコマンド等を生成することができる。いくつかの実施例では、コマンド生成器２４０は、モデル（複数可）１１８のグラウンドトルースを用いて生成された推定タスク前位置に基づいてコマンドを生成する。
【００４９】
いくつかの実施例では、コマンド生成器２４０は、補正ファクタを使用して組立タスクを実施するようにロボット１０２を制御するための手段を含む。例えば、コマンド生成器２４０は、ロボット１０２を制御する一つ又は複数のプロセッサに、ロボット１０２を第１の推定タスク前位置へ移動させ、次にロボット１０２を第１の実際のタスク前位置へ移動させる第１のコマンドを送付することができる。いくつかの実施例では、コマンド生成器２４０は、ロボット１０２を制御する一つ又は複数のプロセッサに、ロボット１０２を第２の実際のタスク前位置へ移動させる第２のコマンドを送付することができ、ここで第１の実際のタスク前位置と第２の実際のタスク前位置は補正ファクタにより決定される。他の実施例では、姿勢エンジン２３０は、組立位置に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たすという決定に基づいて補正ファクタを使用する。位置確認不確実性が位置確認不確実性の閾値を満たすことに応答して、コマンド生成器２４０は、組立タスクを実施するための第２のコマンドを生成することができる。
【００５０】
いくつかの実施例では、コマンド生成器２４０は、組立位置に関連付けられる位置確認の不確実性が位置確認不確実性の閾値を満たすとき、アシストベースのシステムを用いてロボット１０２を制御するための手段を含む。例えば、コマンド生成器２４０は、アシストモードに入る及び／又は他の方法で移行するようにロボット１０２に指示する。例えば、ロボット１０２は、ロボット１０２が軌道に基づいて組立位置に近接する位置へ移動するが、近接位置と組立位置との差が位置確認不確実性の閾値を満たす位置確認不確実性を生む時、アシストモードに入る。
【００５１】
いくつかの実施例では、アシストモードにある時、ユーザは近接位置から組立位置にロボット１０２の姿勢を調節する。他の実施例では、アシストモードにある時、コマンド生成器２４０は、ロボット１０２に対し、カメラベースのシステム、エンコーダ等といったセンサ、又は他のいずれかの種類のセンサからの出力に基づき、近接位置から組立位置へ移動するように命令する。例えば、カメラベースのシステムは、近接位置と組立位置の差（例えば位置の差）を特定する。コマンド生成器２４０は、この差異に基づいて、ロボット１０２を組立位置へ移動させるためのコマンドを生成することができる。
【００５２】
いくつかの実施例では、コマンド生成器２４０は、組立ロケーションで組立品を操作するための手段を含む。例えば、コマンド生成器２４０は、エンドエフェクタ１０８を用いて組立ロケーションでつば１１４をボルト１１６に連結するようにロボット１０２に指示するためのコマンドを生成する。コマンド生成器２４０は、センサ測定値が閾値を満たす時、組立ロケーションで組立品を操作することを停止することができる。例えば、コマンド生成器２４０は、センサ１１２からトルク測定値を取得し、トルク測定値とトルク閾値とを比較し、トルク測定値がトルク閾値を上回る時、エンドエフェクタ１０８がつば１１４とボルト１１６とを連結することを停止するためのコマンドを生成する。センサ測定値が閾値を上回る（例えば、センサ測定値が閾値を満たす）時、コマンド生成器２４０は、実際のロボット姿勢に対応するロボット１０２の姿勢を決定するように姿勢エンジン２３０に指示することができる。
【００５３】
図２に示される実施例では、ロボットマネージャ１００は、データを記録する及び／又は他の方法で記憶するためのデータベース２５０を含む。図２のデータベース２５０は、図１Ａ及び１Ｂのモデル（複数可）１１８を含む。いくつかの実施例では、データベース２５０は、ロボット１０２に関連付けられるモデル１１８のうちの一つ又は複数、一つ又は複数の組立タスクのシーケンス、一つ又は複数の軌道、センサ１１２からの測定値、一つ又は複数の閾値、一つ又は複数の補正ファクタ、一つ又は複数の姿勢等を記録する及び／又は他の方法で記憶する。データベース２５０は、揮発性メモリ（例えば、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ラムバスダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）等）及び／又は不揮発性メモリ（例えばフラッシュメモリ）によって実装することができる。データベース２５０は、追加的に又は代替的に、ＤＤＲ、ＤＤＲ２、ＤＤＲ３、モバイルＤＤＲ（ｍＤＤＲ）等といった一つ又は複数のダブルデータレート（ＤＤＲ）メモリによって実装することができる。データベース２５０は、追加的に又は代替的に、ハードディスクドライブ（複数可）、コンパクトディスクドライブ（複数可）、デジタル多用途ディスク（ＤＶＤ）ドライブ（複数可）等といった一つ又は複数の大容量記憶装置によって実装することができる。
【００５４】
図２に示される実施例では、データベース２５０は単一のデータベースとして示されているが、データベース２５０は、任意の数及び／又は種類（複数可）のデータベースによって実装することができる。更に、データベース２５０に記憶されたデータは、例えば、バイナリデータ、コンマ区切りのデータ、モデルデータ（例えばＣＡＤデータ）、タブ区切りのデータ、構造化照会言語（ＳＱＬ）構造等といった任意のデータフォーマットにすることができる。いくつかの実施例では、データベース２５０は、ネットワーク２６０を介してロボットマネージャ１００に通信可能に連結された一つ又は複数のコンピューティング装置を用いた同期検索及び更新を可能にするクラウドベースとすることができる。
【００５５】
図１Ａ−１Ｂのロボットマネージャ１００を実装する例示的方式が図２に示されているが、図２に示されるエレメント、プロセス、及び／又は装置のうちの一つ又は複数は、他の任意の方法で組み合わせる、分割する、再構成する、省略する、除去する及び／又は実装されてもよい。更に、図１Ａ−１Ｂの、例示的なワークフローディレクター２１０、例示的なモデルハンドラ２２０、例示的な姿勢エンジン２３０、例示的なコマンド生成器２４０、例示的なデータベース２５０、及び／又は、より一般的には例示的なロボットマネージャ１００は、ハードウエア、ソフトウエア、ファームウエア、並びに／又はハードウエア、ソフトウエア、及び／若しくはファームウエアのいずれかの組み合わせによって実装され得る。したがって、例えば、例示的なワークフローディレクター２１０、例示的なモデルハンドラ２２０、例示的な姿勢エンジン２３０、例示的なコマンド生成器２４０、例示的なデータベース２５０、及び／又は、より一般的には例示的なロボットマネージャ１００のいずれもが、一つ又は複数のアナログ又はデジタル回路（複数可）、論理回路、プログラマブルプロセッサ（複数可）、プログラマブルコントローラ（複数可）、グラフィック処理ユニット（ＧＰＵ）（複数可）、デジタル信号プロセッサ（ＤＳＰ）（複数可）、特定用途向け集積回路（ＡＳＩＣ）（複数可）、プログラマブル論理装置（ＰＬＤ）（複数可）、及び／又はフィールドプログラマブル論理装置（ＦＰＬＤ）（複数可）によって実装され得る。純粋にソフトウエア及び／又はファームウエアの一実装態様をカバーするものとして本特許の装置又はシステムの請求項のいずれかを読むとき、例示的なワークフローディレクター２１０、例示的なモデルハンドラ２２０、例示的な姿勢エンジン２３０、例示的なコマンド生成器２４０、及び／又は例示的なデータベース２５０のうちの少なくとも一つは、非一過性のコンピュータ可読記憶装置、又はソフトウエア及び／又はファームウエアを含む、メモリ、デジタル多用途ディスク（ＤＶＤ）、コンパクトディスク（ＣＤ）、ブルーレイディスク等といった記憶ディスクを含むものと、ここで明示的に定義される。更に、図１Ａ−１Ｂの例示的なロボットマネージャ１００は、図２に示されるものに加えて又はその代わりに、一つ又は複数のエレメント、プロセス、及び／又はデバイスを含み得る、及び／又は図示されるエレメント、プロセス、及びデバイスのいずれか又はすべてを複数含み得る。本明細書で使用される「通信する」という句は、そのバリエーションも含めて、一つ又は複数の中間的構成要素を通じた直接的な通信及び／又は間接的な通信を包含し、直接的な物理的（例えば有線による）通信及び／又は不断の通信を必要とせず、むしろ追加的に、周期的な間隔、予定された間隔、非周期的な間隔、及び／又は一度限りのイベントでの選択的な通信を含む。
【００５６】
図１Ａ−２のロボットマネージャ１００を実装するための、例示的なハードウエア論理、マシン可読命令、ハードウエア実装ステートマシン、及び／又はこれらのいずれかの組み合わせを表すフロー図が、図３−５に示されている。マシン可読命令は、図６に関連して後述する例示的なプロセッサプラットフォーム６００に示されるプロセッサ６１２のようなコンピュータプロセッサによる実行のための、実行可能プログラム又は同プログラムの一部であってよい。プログラムは、ＣＤ−ＲＯＭ、フロッピーディスク、ハードドライブ、ＤＶＤ、ブルーレイディスク、又はプロセッサ６１２に関連付けられるメモリといった、非一過性のコンピュータ可読記憶媒体に記憶されたソフトウエアに埋め込まれてよいが、代替的に、プログラム全体及び／又はその一部が、プロセッサ６１２以外の装置によって実行され得る及び／又はファームウエア又は専用のハードウエアに埋め込まれ得る。更に、図３−５に示すフロー図を参照して例示的なプログラムを記載するが、例示的ロボットマネージャ１００を実装する他の多くの方法が代替的に使用可能である。例えば、ブロックの実行順序を変更してよく、及び／又は記載されるブロックのいくつかを変更する、削除する、又は組み合わせることができる。代替的又は追加的に、ブロックのいずれか又はすべてを、ソフトウエア又はファームウエアを実行せずに対応する作業を実施するように構造化された一つ又は複数のハードウエア回路（例えば、ディスクリート及び／又は集積アナログ及び／又はデジタル回路、ＦＰＧＡ、ＡＳＩＣ、比較器、演算増幅器（ｏｐ−ａｍｐ）、論理回路等）により遂行してもよい。
【００５７】
上述のように、図３−５の例示的なプロセスは、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び／又は任意の期間にわたって（例えば、長期的に、永続的に、短期的に、一時バッファ用として、及び／又は情報のキャッシング用として）情報が格納される他のいずれかの記憶装置又は記憶ディスクといった、非一過性のコンピュータ及び／又はマシン可読媒体に格納された実行可能な命令（例えば、コンピュータ及び／又はマシン可読命令）を用いて遂行され得る。本明細書において使用される非一過性のコンピュータ可読媒体という用語は、任意の種類のコンピュータ可読記憶装置及び／又は記憶ディスクを含み、伝播信号を除外し、伝送媒体を除外するものと明示的に定義される。
【００５８】
「含む」及び「備える」（並びに、これらのすべての活用形及び時制）は、本明細書においてオープンエンドの語として使用される。したがって、請求項で、「含む」又は「備える」（並びに、これらの文法的変化形）のいずれかの形式が、プリアンブルとして又はいずれかの請求項の記載の範囲内で使用されるときは常に、対応する請求項又記載の範囲から逸脱することなく、追加的のエレメント、用語等が存在し得ると解されたい。本明細書において使用される「少なくとも」という句は、例えば、請求項のプリアンブルで移行部の用語として使用されるとき、「備える」及び「含む」という用語がオープンエンド形式であるのと同様に、オープンエンド形式である。用語「及び／又は」が、例えば、「Ａ、Ｂ、及び／又はＣ」といった形式で使用されるとき、Ａ、Ｂ、Ｃのいずれかの組み合わせ又はサブセット、例えば（１）Ａのみ、（２）Ｂのみ、（３）Ｃのみ、（４）ＡとＢ、（５）ＡとＣ、（６）ＢとＣ、及び（７）ＡとＢとＣに言及する。本明細書において構造、構成要素、アイテム、オブジェクト及び／又はものを記載する文脈で使用されるとき、「Ａ及びＢのうちの少なくとも一つ」という句は、（１）少なくとも一つのＡ、（２）少なくとも一つのＢ、及び（３）少なくとも一つのＡと少なくとも一つのＢのうちのいずれかを含む実装態様に言及することを意図している。同様に、本明細書において構造、構成要素、アイテム、オブジェクト及び／又はものを記載する文脈で使用されるとき、「Ａ又はＢのうちの少なくとも一つ」という句は、（１）少なくとも一つのＡ、（２）少なくとも一つのＢ、及び（３）少なくとも一つのＡと少なくとも一つのＢのうちのいずれかを含む実装態様に言及することを意図している。本明細書においてプロセス、命令、動作、活動及び／又はステップの実施又は実行を記載する文脈で使用されるとき、「Ａ及びＢのうちの少なくとも一つ」という句は、（１）少なくとも一つのＡ、（２）少なくとも一つのＢ、及び（３）少なくとも一つのＡと少なくとも一つのＢのうちのいずれかを含む実装態様に言及することを意図している。同様に、本明細書においてプロセス、命令、動作、活動及び／又はステップの実施又は実行を記載する文脈で使用されるとき、「Ａ又はＢのうちの少なくとも一つ」という句は、（１）少なくとも一つのＡ、（２）少なくとも一つのＢ、及び（３）少なくとも一つのＡと少なくとも一つのＢのうちのいずれかを含む実装態様に言及することを意図している。
【００５９】
図３は、実行されると図１Ａ−２のロボットマネージャ１００に組立タスクの実施を遂行させることのできる、例示的なマシン可読命令３００を表すフロー図である。マシン可読命令３００はブロック３０２で開始され、このブロックでは、ロボットマネージャ１００は、ロボットによって実施される組立タスクを含むワークフローを取得する。例えば、ワークフローディレクター２１０（図２）は、図１Ａ−１Ｂのアセンブリ１０４に対して一つ又は複数の組立タスクを実施することを含むワークフローを取得する。
【００６０】
ブロック３０４では、ロボットマネージャ１００は、ワークフローに関連付けられるモデル（複数可）をインポートする。例えば、ワークフローディレクター２１０は、図１Ａのロボット１０２−１Ｂ、図１Ａ−１Ｂのアセンブリ１０４等に関連付けられる図１Ａ−２のモデル１１８のうちの一つ又は複数をインポートする。
【００６１】
ブロック３０６では、ロボットマネージャ１００は、モデル（複数可）に含まれる組立ロケーションを決定する。例えば、モデルハンドラ２２０（図２）は、モデル（複数可）１１８に基づいてアセンブリ１０４に連結される、ボルト１１６のうちの第１のボルトに関連付けられる第１の推定タスク前位置、ボルト１１６のうちの第２のボルトに関連付けられる第２の推定タスク前位置等を決定する。
【００６２】
ブロック３０８では、ロボットマネージャ１００は、組立ロケーションに基づいてロボット軌道を決定する。例えば、モデルハンドラ２２０は、第１の推定タスク前位置に関連付けられる軌道を決定する。モデルハンドラ２２０は、つば１１４のうちの一つを取得する第１のステージング位置にあるロボット１０２に関連付けられる第１の接合状態、第１の推定タスク前位置でのロボット１０２に関連付けられる第２の接合状態等、及び／又は軌道に含まれる一つ又は複数の他の位置又は中間地点に関連付けられる他のいずれかの接合状態を決定する。
【００６３】
ブロック３１０では、ロボットマネージャ１００は、組立タスクを実施するようにロボットにコマンドを出す。例えば、コマンド生成器２４０（図２）は、ロボット１０２に対し、第１のステージング位置から第１の推定タスク前位置へ移動して、図１Ａ−１Ｂのつば１１４のうちの一つを図１Ａ−１Ｂのボルト１１６のうちの一つに連結するように命令する。この命令に応答して、ロボット１０２は、第１の推定タスク前位置とは異なる第１の実際のタスク前位置へ移動する。
【００６４】
ブロック３１２では、ロボットマネージャ１００は、補正ファクタが決定済みであるかどうかを決定する。例えば、姿勢エンジン２３０（図２）は、補正ファクタが計算済みであるかどうかを決定するためにデータベース２５０（図２）に照会する。このような実施例では、姿勢エンジン２３０は、照会に応答して、データベース２５０から補正ファクタを検索及び／又は他の方法で取得する。他の実施例では、姿勢エンジン２３０は、照会に応答して、データベース２５０からのヌル値の検索及び／又は他の方法での取得に基づいて補正ファクタが未決であると決定する。
【００６５】
ブロック３１２で補正ファクタが決定済みであるとロボットマネージャ１００が決定した場合、制御はブロック３１６に進み、補正ファクタを用いて組立タスクを実施するようにロボットにコマンドを出す。ブロック３１２で補正ファクタが未決であるとロボットマネージャ１００が決定した場合、ブロック３１４においてロボットマネージャ１００は補正ファクタを決定する。例えば、姿勢エンジン２３０は、アシストモードに入るようにロボット１０２に指示する。ユーザは、ロボット１０２を、正確な、即ち確認済みのタスク前位置へと移動させることができる。ロボット１０２が第１の組立タスクを実施するための正確な位置へと移動したことをユーザが確認すると、姿勢エンジン２３０は、ロボット１０２の第１の実際のタスク前姿勢を決定する。姿勢エンジン２３０は、ロボット１０２の第１の実際のタスク前姿勢とロボット１０２の第１の推定タスク前姿勢との比較に基づいて補正ファクタを決定することができる。他の実施例では、姿勢エンジン２３０は、カメラシステム又は他のいずれかの種類の二次的なセンサベースのシステムからの出力に基づく正確な位置、即ち確認済みの位置へ、ロボット１０２を移動させるようにコマンド生成器２４０を起動する。
【００６６】
ブロック３１４での補正ファクタの決定に応答して、ロボットマネージャ１００は、ブロック３１６において、補正ファクタに基づいて組立タスクを実施するようにロボットにコマンドを出す。例えば、コマンド生成器２４０は、補正ファクタを用いて、モデルハンドラ２２０によって決定される第１の軌道への付加軌道に基づいて、第１のタスク前位置でつば１１４をボルト１１６に連結するようにロボット１０２に指示するコマンドを生成する。
【００６７】
ブロック３１８では、ロボットマネージャ１００は、補正ファクタに基づいてモデル（複数可）を更新する。例えば、モデルハンドラ２２０は、補正ファクタに基づいて、ブロック３０８で生成された軌道への一組の付加軌道を生成することにより、モデル（複数可）１１８のうちの一つ又は複数を更新する。他の実施例では、モデルハンドラ２２０は、ブロック３０８で生成された軌道と付加軌道とを合成する及び／又は他の方法で組み合わせる一組の軌道を生成することにより、モデル（複数可）１１８のうちの一つ又は複数を更新する。ブロック３１８を遂行するために使用され得る例示的なプロセスが、図４に関連して後述される。
【００６８】
ブロック３２０では、ロボットマネージャ１００は、別の組立タスクを実施するかどうかを決定する。例えば、ワークフローディレクター２１０は、処理すべき別の組立タスクが存在すると決定する。他の実施例では、ワークフローディレクター２１０は、ワークフローが完了しており、処理すべき追加の組立タスクが存在しないと決定する。ブロック３２０でロボットマネージャ１００が別のタスクを実施することを決定した場合、制御はブロック３１０に戻ってロボットに別の組立タスクを実施するようにコマンドを出す。ブロック３２０でロボットマネージャ１００が別のタスクを実施しないことを決定した場合、図３のマシン可読命令３００は終了する。
【００６９】
図４は、補正ファクタに基づいてモデルを更新するために図１Ａ−２の例示的なロボットマネージャ１００によって使用され得る、例示的なマシン可読命令４００を表すフロー図である。図４の例示的プロセスは、図３のブロック３１８の作業を遂行するために使用され得る。
【００７０】
マシン可読命令３１８はブロック４０２で開始され、このブロックでは、ロボットマネージャ１００は、補正ファクタに基づいて組立タスクに関連付けられる軌道を更新する。例えば、モデルハンドラ２２０（図２）は、補正ファクタに基づいて第１の組立タスクに関連付けられる軌道を更新する。このような実施例では、モデルハンドラ２２０は、第１の実際のタスク前位置から第２の実際のタスク前位置へロボット１０２を移動させる現在の軌道に付加される新規の軌道を生成する。
【００７１】
ブロック４０４では、ロボットマネージャ１００は、次の組立タスクに関連付けられる一組の軌道を生成する。例えば、モデルハンドラ２２０は、図１Ａ−１Ｂのつば１１４のうちの第２のつばを図１Ａ−１Ｂのボルト１１６のうちの第２のボルトに連結することに関連付けられる、一組の、一つ又は複数の軌道を生成する。このような一つ又は複数の軌道の組は、第２の組立タスクを実施するために使用される軌道の補正のために、コマンド生成器２４０（図２）によって使用される潜在的付加軌道に対応し、ここでこの補正はロボット１０２がユーザの介入又は二次センサシステムからの入力なしで第２の組立タスクを実施することを可能にする。
【００７２】
ブロック４０６では、ロボットマネージャ１００は、実際のロボット姿勢に最も近い目標状態（局所性）を有する軌道を決定する。例えば、モデルハンドラ２２０は、第１の組立タスクを実施する時、ロボット１０２の実際のタスク前姿勢、実際のタスク後姿勢等に最も近い選択軌道に関連付けられる目標状態に基づいて、組内の軌道の一つを選択する。
【００７３】
ブロック４０８では、ロボットマネージャ１００は、目標状態に補正ファクタを適用することにより、新規接合状態を生成する。例えば、モデルハンドラ２２０は、第２の実際のタスク前位置から第３の実際のタスク前位置へ移動するロボット１０２に関連付けられる第３の接合状態、第３の実際のタスク前位置から第２の実際のタスク後位置へ移動するロボット１０２に関連付けられる第４の接合状態等を生成する。
【００７４】
ブロック４１０では、ロボットマネージャ１００は、別の組立タスクのための一組の軌道を生成するべきからどうかを決定する。例えば、モデルハンドラ２２０は、第３の組立タスクのための一組の軌道を生成すると決定する。他の実施例では、モデルハンドラ２２０は、補正ファクタに基づく新規接合状態を決定するために、ワークフローに含まれる組立タスクの各々のための一組の軌道を生成すると決定する。他の実施例では、モデルハンドラ２２０は、別の組立タスクのための一組の軌道を生成しないと決定する。
【００７５】
ブロック４１０でロボットマネージャ１００が別の組立タスクのための一組の軌道を生成することを決定すると、制御はブロック４０４に戻り、次の又はその後の組立タスクに関連付けられる一組の軌道を生成する。ブロック４１０でロボットマネージャ１００が別の組立タスクのための一組の軌道を生成しないと決定すると、図４のマシン可読命令３１８は図３の実施例のブロック３２０に戻り、別の組立タスクを実施するべきかどうかを決定する。
【００７６】
図５は、実行されると図１Ａ−２のロボットマネージャ１００に組立タスクの実施を遂行させることのできる、例示的なマシン可読命令５００を表す別のフロー図である。このマシン可読命令はブロック５０２で開始され、このブロックでは、ロボットマネージャ１００は、処理対象の組立タスクを選択する。例えば、ワークフローディレクター２１０（図２）は、図１Ａ−１Ｂのボルト１１６のうちの第１のボルトにつば１１４のうちの第１のつばを連結することを含む、処理すべき組立タスクを選択する。
【００７７】
ブロック５０４では、ロボットマネージャ１００は、グラウンドトルースとしてモデル（複数可）を使用して、組立品に対応する組立ロケーションでの推定ロボット姿勢（複数可）を決定する。例えば、モデルハンドラ２２０（図２）は、モデル（複数可）１１８に基づいて、図１Ａ−１Ｂのアセンブリ１０４上でのつば１１４のうちの第１のつば、ボルト１１６のうちの第１のボルト等の座標を決定する。モデルハンドラ２２０は、第１の位置（例えば、ホーム位置、第１のステージング位置等）におけるロボット１０２の第１の接合状態、第２の位置（例えば、ボルト１１６のうちの第１のボルトに関連付けられるタスク前位置）におけるロボット１０２に関連付けられる第２の接合状態等、及び／又は軌道に沿った一つ又は複数の他の位置若しくは中間地点に関連付けられる他のいずれかの接合状態を含む軌道を決定することができる。モデルハンドラ２２０は、軌道に基づいて第２の位置におけるロボット１０２の姿勢に関連付けられる座標を決定し、第１の推定タスク前姿勢として姿勢を特定することができる。
【００７８】
ブロック５０６では、ロボットマネージャ１００は、推定ロボット姿勢（複数可）に基づいて、組立ロケーションへロボットをナビゲートする。例えば、コマンド生成器２４０（図２）は、ロボット１０２を第１の位置から第２の位置へ移動させて第１の推定タスク前姿勢に到達させ、次にロボット１０２を第１の実際のタスク前位置へ移動させるコマンドを生成し、そのコマンドをロボット１０２に送信する。
【００７９】
ブロック５０８では、ロボットマネージャ１００は、位置確認不確実性が閾値を満たすかどうかを決定する。例えば、姿勢エンジン２３０（図２）は、ロボット１０２の第１の接合状態と第２の接合状態の相関に関連付けられる位置確認不確実性が位置確認不確実性の閾値を満たすと決定する。
【００８０】
ブロック５０８で位置確認不確実性が閾値を満たさないとロボットマネージャ１００が決定した場合、制御はブロック５１６に進んで組立ロケーションで組立品を操作する。ブロック５０８で位置確認不確実性が閾値を満たすとロボットマネージャ１００が決定した場合、ブロック５１０においてロボットマネージャ１００は補正ファクタが決定済みであるかどうかを決定する。例えば、姿勢エンジン２３０は、補正ファクタが計算済みであるかどうかを決定するためにデータベース２５０（図２）に照会する。このような実施例では、姿勢エンジン２３０は、照会に応答して、データベース２５０から補正ファクタを検索及び／又は他の方法で取得する。他の実施例では、姿勢エンジン２３０は、照会に応答して、データベース２５０からのヌル値の検索及び／又は他の方法での取得に基づいて、補正ファクタが未決であると決定する。
【００８１】
ブロック５１０で補正ファクタが決定済みであるとロボットマネージャ１００が決定した場合、制御はブロック５１４に進み、補正ファクタを用いてロボット姿勢を組立ロケーションに調節する。ブロック５１０で補正ファクタが未決であるとロボットマネージャ１００が決定した場合、プロック５１２においてロボットマネージャ１００はアシストベースのシステムを使用してロボット姿勢を組立ロケーションに調節する。例えば、姿勢エンジン２３０は、アシストモードに入るようにロボット１０２に命令する。ユーザは、ロボット１０２を、第１の組立タスクを実施するための正確な位置へと移動させることができる。他の実施例では、姿勢エンジン２３０は、カメラベースのシステム又は他のいずれかのセンサベースのシステムをロボット１０２に使用可能であるときはそのようなシステムを使用して、正確な位置へとロボット１０２を移動させるようにコマンド生成器２４０を起動する。
【００８２】
ブロック５１２でアシストベースのシステムを使用してロボット姿勢を組立ロケーションに調節すること又はブロック５１２で補正ファクタを用いてロボット姿勢を組立ロケーションに調節することに応答して、ブロック５１６でロボットマネージャ１００は組立ロケーションにおいて組立品を操作する。例えば、コマンド生成器２４０は、第２の位置においてつば１１４をボルト１１６に連結するようロボット１０２に指示するコマンドを生成し、そのコマンドをロボット１０２に送信する。
【００８３】
ブロック５１８では、ロボットマネージャ１００は、センサ測定値が操作閾値を満たすかどうかを決定する。例えば、コマンド生成器２４０は、図１Ａ−１Ｂのセンサ１１２からトルク測定値を取得し、トルク測定値をトルク閾値と比較し、トルク測定値がトルク閾値を上回る時、つば１１４とボルト１１６の連結を停止するためのコマンドを生成する。
【００８４】
ブロック５１８でセンサ測定値が操作閾値を満たさないとロボットマネージャ１００が決定する場合、制御はブロック５１８でロボット１０２が連結を完了させるのを待つ。ブロック５１８でセンサ測定値が操作閾値を満たすとロボットマネージャ１００が決定する場合、ブロック５２０において、ロボットマネージャ１００は実際のロボット姿勢を決定する。例えば、トルク測定値がトルク閾値を満たす時、コマンド生成器２４０は、ロボットの第１の実際のタスク後姿勢１０２に対応するロボット１０２の姿勢を決定するように姿勢エンジン２３０を起動する。
【００８５】
ブロック５２２では、ロボットマネージャ１００は、実際のロボット姿勢と推定ロボット姿勢とに基づいて補正ファクタを決定する。例えば、姿勢エンジン２３０は、第１の実際のタスク前姿勢、第１の実際のタスク後姿勢、第１の推定タスク前姿勢、第１の推定タスク後姿勢等に基づき、上記方程式（１）の実施例を用いることにより、位置確認調節を決定及び／又は他の方法で計算する。
【００８６】
ブロック５２４では、ロボットマネージャ１００は、補正ファクタに基づいてモデルを更新する。例えば、モデルハンドラ２２０は、図４のプロセスを使用することにより補正ファクタに基づいてモデル（複数可）１１８を更新する。いくつかの実施例では、モデルハンドラ２２０は、一つ又は複数のその後の組立タスクに関連付けられる情報を更新することにより、モデル（複数可）１１８を更新する。例えば、モデルハンドラ２２０は、組立タスクを実施するために使用される軌道に付加及び／又は他の方法で適用される一組の軌道を生成するためにモデル（複数可）１１８を更新する。
【００８７】
ブロック５２６では、ロボットマネージャ１００は、処理対象の別の組立タスクを選択するかどうかを決定する。例えば、ワークフローディレクター２１０は、第２の組立ロケーションにおいてつば１１４のうちの第２のつばをボルト１１６のうちの第２のボルトに連結することを含む別の組立タスクを実施すると決定する。他の実施例では、ワークフローディレクター２１０は、処理対象の別の組立タスクが存在しないと決定する。ブロック５２６でロボットマネージャ１００が処理対象の別の組立タスクを選択すると決定した場合、制御はブロック５０２に戻り、処理対象の別の組立タスクを選択し、それ以外の場合は図５のマシン可読命令５００は終了する。
【００８８】
図６は、図１Ａ−２のロボットマネージャ１００を実装するために図３−５の命令を実行するように構造化された例示的プロセッサプラットフォーム６００のブロック図である。プロセッサプラットフォーム６００は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習機械（例えばニューラルネットワーク）、モバイル装置（例えば、携帯電話、スマートフォン、ｉＰａｄＴＭ等のタブレット）、ロボットコンピューティングプラットフォーム、又は他のいずれかの種類のコンピューティング装置とすることができる。
【００８９】
図示の実施例のプロセッサプラットフォーム６００はプロセッサ６１２を含む。図示の実施例のプロセッサ６１２はハードウエアである。例えば、プロセッサ６１２は、任意の望ましい系列会社又は製造者からの一つ又は複数の集積回路、論理回路、マイクロプロセッサ、ＧＰＵ、ＤＳＰ、又はコントローラによって実装することができる。ハードウエアプロセッサは、半導体ベース（例えばシリコンベース）の装置であってよい。この実施例では、プロセッサ６１２は、例示的ワークフローディレクター２１０、例示的モデルハンドラ２２０、例示的姿勢エンジン２３０、例示的コマンド生成器２４０、及び／又は、より一般的には、図１Ａ−２の例示的ロボットマネージャ１００を実装する。
【００９０】
図示の実施例のプロセッサ６１２はローカルメモリ６１３（例えばキャッシュ）を含む。図示の例示例のプロセッサ６１２は、揮発性メモリ６１４及び不揮発性メモリ６１６を含むメインメモリと、バス６１８を介して通信する。揮発性メモリ６１４は、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ＲＡＭＢＵＳ（登録商標）ダイナミックランダムアクセスメモリ（ＲＤＲＡＭ（登録商標））、及び／又は他のいずれかの種類のランダムアクセスメモリデバイスによって実装され得る。不揮発性メモリ６１６は、フラッシュメモリ及び／又は他のいずれかの望ましい種類の記憶装置によって実装され得る。メインメモリ６１４、６１６へのアクセスはメモリコントローラによって制御される。
【００９１】
図示の実施例のプロセッサプラットフォーム６００は、インターフェース回路６２０も含む。インターフェース回路６２０は、イーサネットインターフェース、ユニバーサルシリアルバス（ＵＳＢ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）インターフェース、近距離無線通信（ＮＦＣ）インターフェース、及び／又はＰＣＩエクスプレスインターフェースといった任意の種類のインターフェース規格により実装され得る。
【００９２】
図示の実施例では、一つ又は複数の入力デバイス６２２がインターフェース回路６２０に接続されている。入力デバイス（複数可）６２２は、ユーザがデータ及び／又はコマンドをプロセッサ６１２に入力することを可能にする。入力デバイス（複数可）６２２は、例えば、音声センサ、マイクロフォン、カメラ（静止画又は映像）、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント（ｉｓｏｐｏｉｎｔ）、及び／又は音声認識システムによって実装され得る。
【００９３】
一つ又は複数の出力デバイス６２４も、図示の実施例のインターフェース回路６２０に接続されている。出力デバイス６２４は、例えば、ディスプレイデバイス（例えば発光ダイオード（ＬＥＤ）、有機発光ダイオード（ＯＬＥＤ）、液晶ディスプレイ（ＬＣＤ）、カソードレイチューブディスプレイ（ＣＲＴ）、インプレイススイッチング（ＩＰＳ）ディスプレイ、タッチスクリーン等）、触覚出力デバイス、プリンタ、及び／又はスピーカーによって実装することができる。したがって、図示の実施例のインターフェース回路６２０は、典型的には、グラフィックドライバカード、グラフィックドライバチップ、及び／又はグラフィックドライバプロセッサを含む。
【００９４】
図示の実施例のインターフェース回路６２０は、ネットワーク６２６を介する外部の機械（例えば、任意の種類のコンピューティングデバイス）とのデータ交換を容易にするための、送信器、受信器、トランシーバ、モデム、常駐ゲートウェイ、無線アクセスポイント、及び／又はネットワークインターフェースといった通信機器も含む。この実施例では、ネットワーク６２６が図２の例示的ネットワーク２６０を実装している。通信は、例えば、イーサネット接続、デジタル加入者回線（ＤＳＬ）接続、電話線接続、同軸ケーブルシステム、衛星システム、見通し内無線システム、携帯電話システム等を介するものとすることができる。
【００９５】
図示の実施例のプロセッサプラットフォーム６００は、ソフトウエア及び／又はデータを記憶するための一つ又は複数の大容量記憶装置６２８も含む。そのような大容量記憶装置６２８の例には、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、独立ディスクのリダンダントアレイ（ＲＡＩＤ）システム、及びデジタル多用途ディスク（ＤＶＤ）ドライブが含まれる。この実施例では、一つ又は複数の大容量記憶装置６２８が図２の例示的データベース２５０を実装している。
【００９６】
図３から５のマシンにより実行可能な命令６３２は、大容量記憶装置６２８、揮発性メモリ６１４、不揮発性メモリ６１６、及び／又は、ＣＤ若しくはＤＶＤといった取り外し可能な非一過性のコンピュータ可読記憶媒体に記憶することができる。
【００９７】
前述より、ロボット制御を向上させる例示的な方法、装置、及び製造品が開示されたことが明らかであろう。開示された方法、装置、及び製造品により、ロボットにより実施される組立タスクに適用される補正ファクタを決定するために、ロボットのエンドエフェクタに関連付けられる情報を使用することにより、ロボットの作業を容易にするセンサ及びセンサベースのシステムの量が低減される。カメラベースのシステムといったセンサベースのシステムは、機能するためにコンピューティング及びストレージリソースの量の増加を要し、開示された方法、装置、及び製造品は、そのようなシステムの必要性を低下させる及び／又は他の方法で排除する。開示された方法、装置、及び製造品は、従来のロボットと比較して、ロボットの作業を容易にするために必要なコンピューティング及び／又はストレージリソースの量を低減することができる。例えば、開示された方法、装置、及び製造品は、追加の処理タスクを実施するために未使用のリソースを割り付けることができ、したがって、ロボットに関連付けられる一つ又は複数のプロセッサの能力又は機能を向上させる及び／又は他の方法で増大させることができる。したがって、開示された方法、装置、及び製造品は、コンピュータの機能性の一つ又は複数の向上を目的としている。
【００９８】
以下は、本明細書に開示される更なる実施例に関する。
【００９９】
実施例１はコマンド生成器を備える装置を含み、コマンド生成器は、ロボットに対し、ロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第１の姿勢がモデルに基づいている、命令すること、ロボットが第２の実際のタスク前位置へ移動する時第１のタスクを実施するためにロボットを第１の実際のタスク前位置に調節することであって、第１の実際のタスク前位置が推定タスク前位置に近接している、調節すること、及び補正ファクタに基づいて第２のタスクを実施するようにロボットに指示することであって、補正ファクタが、ロボットの第２の姿勢を決定することであって、第２の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第１のタスクを実施した後のロボットに関連付けられる位置情報に対応する、ロボットの第２の姿勢を決定することと、第１の姿勢及び第２の姿勢に基づいて補正ファクタを計算することとによって決定される、指示することを行う。
【０１００】
実施例２は、第１のタスクが、ロボットが第１の組立品を第２の組立品に連結することを含む、実施例１の装置を含む。
【０１０１】
実施例３は、第１の姿勢が第１の一様行列であり、第２の姿勢が第２の一様行列であり、補正ファクタが、第２の一様行列と第１の一様行列の逆行列とを乗じることにより計算される、実施例１又は２の装置を含む。
【０１０２】
実施例４は、第１の一様行列及び第２の一様行列が４×４の一様行列である、実施例３の装置を含む。
【０１０３】
実施例５は、第２のタスクに関連付けられる一組の軌道を生成すること、第２の姿勢に最も近い目標状態を有する前記組内の軌道の一つを決定すること、及び補正ファクタを目標状態に適用して前記軌道の一つに関連付けられる一つ又は複数の接合状態を生成することにより、補正ファクタに基づいてモデルを更新するモデルハンドラを更に含む、実施例１から４のいずれか一つの装置を含む。
【０１０４】
実施例６は、モデルハンドラが、推定タスク前位置の座標を決定するために、グラウンドトルースとしてモデルを使用することにより推定タスク前位置を決定することを更に含む、実施例１から５のいずれか一つの装置を含む。
【０１０５】
実施例７は、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、コマンド生成器がロボットを第１の実際のタスク前位置に調節する、実施例１から６のいずれか一つの装置を含む。
【０１０６】
実施例８は、命令を含む非一過性コンピュータ可読記憶媒体を含み、命令は、実行されると、マシンに少なくとも、ロボットに対し、ロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタをステージング位置から推定タスク前位置へ移動させるように命令することであって、第１の姿勢がモデルに基づいている、命令すること、ロボットが第２の実際のタスク前位置へ移動する時第１のタスクを実施するためにロボットを第１の実際のタスク前位置に調節することであって、第１の実際のタスク前位置が推定タスク前位置に近接している、調節すること、第１のタスクを実施した後のロボットの第２の姿勢を決定することであって、第２の姿勢がタスク後位置におけるロボットに関連付けられる位置情報に対応し、タスク後位置が第１のタスクを実施した後のロボットの位置に対応する、決定すること、第１の姿勢と第２の姿勢とに基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第２のタスクを実施することをロボットに指示することを行わせる。
【０１０７】
実施例９は、第１のタスクが、ロボットが第１の組立品を第２の組立品に連結することを含む、実施例８の非一過性コンピュータ可読記憶媒体を含む。
【０１０８】
実施例１０は、第１の姿勢が第１の一様行列であり、第２の姿勢が第２の一様行列であり、実行されるとマシンに少なくとも第２の一様行列と第１の一様行列とを乗じることにより補正ファクタを計算させる命令を更に含む、実施例８又は９の非一過性コンピュータ可読記憶媒体を含む。
【０１０９】
実施例１１は、第１の一様行列及び第２の一様行列が４×４の一様行列である、実施例１０の非一過性コンピュータ可読記憶媒体を含む。
【０１１０】
実施例１２は、実行されると、マシンに少なくとも、第２のタスクに関連付けられる一組の軌道を生成することにより補正ファクタに基づいてモデルを更新させ、第２の姿勢に最も近い目標状態を有する組内の軌道の一つを決定させ、目標状態に補正ファクタを適用することにより軌道の一つに関連付けられる一つ又は複数の接合状態を生成させる命令を更に含む、実施例８から１１のいずれか一つの非一過性コンピュータ可読記憶媒体を含む。
【０１１１】
実施例１３は、実行されると、マシンに少なくとも、推定タスク前位置の座標を決定するために、グラウンドトルースとしてモデルを使用することにより推定タスク前位置を決定させる命令を更に含む、実施例８から１２のいずれか一つの非一過性コンピュータ可読記憶媒体を含む。
【０１１２】
実施例１４は、実行されると、マシンに少なくとも、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することにより、ロボットを第１の実際のタスク前位置に調節させる命令を更に含む、実施例８から１３のいずれか一つの非一過性コンピュータ可読記憶媒体を含む。
【０１１３】
実施例１５は、ロボットに対してモデルに基づくロボットの第１の姿勢に基づいて第１のタスクを実施するためにエンドエフェクタを第１の位置から第２の位置へ移動するように命令すること、ロボットが第３の位置へ移動することに応答して、第１のタスクを実施するために、ロボットを第２の位置に近接する第４の位置に調節すること、第１のタスクを実施することに応答して、ロボットの第２の姿勢を決定することであって、第２の姿勢が第５の位置におけるロボットに関連付けられる位置情報に対応しており、第５の位置が第１のタスクを実施した後のロボットの位置に対応している、決定すること、第１の姿勢と第２の姿勢に基づいて補正ファクタを計算すること、及び補正ファクタに基づいて第２のタスクを実施するようにロボットに指示することを含む方法を含む。
【０１１４】
実施例１６は、第１のタスクが、ロボットが第１の組立品を第２の組立品に連結することを含む、実施例１５の方法を含む。
【０１１５】
実施例１７は、第１の姿勢が第１の一様行列であり、第２の姿勢が第２の一様行列であり、補正ファクタを計算することが、第２の一様行列と第１の一様行列の逆行列とを乗じることを含む、実施例１５又は１６の方法を含む。
【０１１６】
実施例１８は、補正ファクタに基づいてモデルを更新することであって、第２のタスクに関連付けられる一組の軌道を生成することを含む、更新すること、第２の姿勢に最も近い目標状態を有する前記組内の軌道の一つを決定すること、及び補正ファクタを目標状態に適用して軌道の一つに関連付けられる一つ又は複数の接合状態を生成することを更に含む、実施例１５から１７のいずれか一つの方法を含む。
【０１１７】
実施例１９は、第２の位置が、第２の位置の座標を決定するためにグラウンドトルースとしてモデルを使用することにより決定される、実施例１５から１８のいずれか一つの方法を含む。
【０１１８】
実施例２０は、ロボットを第４の位置に調節することが、カメラシステムからの出力又はエンコーダからのセンサ測定値のうちの少なくとも一つを取得することを含む、実施例１５のいずれかの方法を含む。
【０１１９】
本明細書では、特定の例示的な方法、装置、及び製品が開示されたが、本特許の対象範囲はこれらに限定されるものではない。むしろ、本特許は、本特許の特許請求の範囲内に公正に当てはまるすべての方法、装置、及び製品を対象としている。
【図１】
2020062743.tif 000002
【図２】
2020062743.tif 000003
【図３】
2020062743.tif 000004
【図４】
2020062743.tif 000005
【図５】
2020062743.tif 000006
【図６】
2020062743.tif 000007
【外国語明細書】
2020062743000001.pdf
2020062743000002.pdf
2020062743000003.pdf
2020062743000004.pdf