(57)【特許請求の範囲】
【請求項１】
ロボットユニットを手動で動作させるためのジョグコマンドを受信するように構成されたユーザインターフェースと、
前記ユーザインターフェースに結合された制御ユニットと、を備え、
前記制御ユニットは、
衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、前記ジョグコマンドが、動作環境内の前記ロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、
ジョグ操作スレッドを実行して、前記障害物のないステータスが衝突チェック時間制限内に提供されるかどうかを判定することと、を含む、前記ジョグコマンドをリアルタイム並列処理することと、
前記衝突チェック時間制限前に提供された前記障害物のないステータスに基づいて、前記ロボットユニットに対する前記ジョグコマンドを実行することと、
を行うように構成された、ロボットシステム。
【請求項２】
前記制御ユニットは、
前記ロボットユニットを表す前記ロボットモデルを生成することであって、前記ロボットモデルは、前記ロボットユニットを取り囲むバッファゾーンを含むことと、
前記ロボットユニットを含む前記動作環境を表す前記環境モデルを生成することと、
前記衝突チェックスレッドを実行して、前記環境モデル内のアイテムが前記バッファゾーンに進入するかどうかを判定することを含め、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することと、
を行うようにさらに構成されている、請求項１に記載のシステム。
【請求項３】
前記制御ユニットは、
前記衝突チェックスレッドを実行して、前記動作環境の前記環境モデルに含まれていないアイテムが前記バッファゾーンに進入するかどうか判定することを含め、前記ジョグコマンドが前記衝突をもたらすどうかを判定することと、
前記環境モデルを更新して、前記アイテムを含めることと、
を行うようにさらに構成されている、請求項２に記載のシステム。
【請求項４】
前記制御ユニットは、前記動作環境を非複雑なものとして表す前記環境モデルに基づいて、前記バッファゾーンをサイズ変更するようにさらに構成されている、請求項２又は３に記載のシステム。
【請求項５】
前記制御ユニットは、
前記ロボットユニットを表す前記ロボットモデルを生成することであって、前記ロボットモデルは、前記ロボットユニットを取り囲むバッファゾーンと、前記ロボットユニットのリンクおよびジョイントと、前記リンクおよび前記ジョイントのための第１のバッファと、を含むことと、
前記衝突チェックスレッドを実行して、前記環境モデル内のアイテムが前記第１のバッファに進入するかどうかを判定することを含め、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することと、
を行うようにさらに構成されている、請求項１に記載のシステム。
【請求項６】
前記制御ユニットは、
前記環境モデルで前記動作環境を複雑なものとしてモデル化することと、
前記環境モデルが前記動作環境に対して複雑であることに基づいて、前記バッファゾーンを低減することと、
を行うようにさらに構成されている、請求項２、３又は５に記載のシステム。
【請求項７】
前記制御ユニットは、前記障害物のないステータスが前記衝突チェック時間制限の前に提供されていないことに基づいて、前記ロボットユニットに対する前記ジョグコマンドを終了するようにさらに構成されている、請求項１に記載のシステム。
【請求項８】
ロボットシステムの動作の方法であって、 前記ロボットシステムが備える制御ユニットが、  ロボットユニットを手動で動作させるためのジョグコマンドを受信することと、    衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、前記ジョグコマンドが、動作環境内の前記ロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、    ジョグ操作スレッドを実行して、前記障害物のないステータスが衝突チェックの時間制限内に提供されるかどうかを判定することと、を含む、前記ジョグコマンドをリアルタイム並列処理することと、  前記衝突チェック時間制限前に提供された前記障害物のないステータスに基づいて、前記ロボットユニットによって前記ジョグコマンドを実行することと、を行う、方法。
【請求項９】
前記制御ユニットが、
前記ロボットユニットを取り囲むバッファゾーンを含む、前記ロボットユニットを表す前記ロボットモデルを生成することと、
前記ロボットユニットを含む前記動作環境を表す前記環境モデルを生成することと、をさらに行い、
前記衝突チェックスレッドを実行して、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することは、前記バッファゾーンに進入する環境モデル内のアイテムの表現を判定することを含む、請求項８に記載の方法。
【請求項１０】
前記衝突チェックスレッドを実行して、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することは、前記動作環境に対する前記環境モデルに含まれるアイテムの表現を伴わない前記バッファゾーンをトラバースすることを含み、
前記制御ユニットが、前記アイテムの前記表現で前記環境モデルを更新することをさらに行う、請求項９に記載の方法。
【請求項１１】
前記制御ユニットが、
前記動作環境を非複雑なものとして表す前記環境モデルに基づいて、前記バッファゾーンをサイズ変更することをさらに行う、請求項９に記載の方法。
【請求項１２】
前記制御ユニットが、前記ロボットユニットを表す前記ロボットモデルを生成することをさらに行い、
前記ロボットモデルは、前記ロボットユニットを取り囲むバッファゾーンを含み、
前記ロボットモデルを生成することは、
リンクおよびジョイントをモデル化することと、
前記リンクおよび前記ジョイントのための第１のバッファをモデル化することと、を含み、
前記衝突チェックスレッドを実行して、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することは、前記環境モデル内のアイテムが前記第１のバッファに進入すると判定することを含む、請求項８に記載の方法。
【請求項１３】
前記制御ユニットが、
前記動作環境に対して前記環境モデルを複雑なものとして生成することと、
前記環境モデルが複雑であること基づいて、前記バッファゾーンのサイズを縮小することと、
をさらに行う、請求項９に記載の方法。
【請求項１４】
前記制御ユニットが、前記障害物のないステータスが前記衝突チェック時間制限の前に提供されていないことに基づいて、前記ロボットユニットによって前記ジョグコマンドを終了することをさらに行う、請求項８に記載の方法。
【請求項１５】
ロボットシステムの制御ユニットによって実行可能な命令を含む、非一時的なコンピュータ可読媒体であって、
前記命令は、
ロボットユニットを手動で動作させるためのジョグコマンドを受信することと、
衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、前記ジョグコマンドが、動作環境内の前記ロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、
ジョグ操作スレッドを実行して、前記障害物のないステータスが衝突チェックの時間制限内に提供されるかどうかを判定することと、を含む、前記ジョグコマンドをリアルタイム並列処理することと、
前記衝突チェック時間制限前に提供された前記障害物のないステータスに基づいて、前記ロボットユニットによって前記ジョグコマンドを実行することと、を含む、非一時的なコンピュータ可読媒体。
【請求項１６】
前記命令は、
前記ロボットユニットを取り囲むバッファゾーンを含む、前記ロボットユニットを表す前記ロボットモデルを生成することと、
前記ロボットユニットを含む前記動作環境を表す前記環境モデルを生成することと、をさらに含み、
前記衝突チェックスレッドを実行して、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することは、前記バッファゾーンに進入する環境モデル内のアイテムの表現を判定することを含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記命令は、
前記衝突チェックスレッドを実行して、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することは、前記動作環境に対する前記環境モデルに含まれるアイテムの表現を伴わない前記バッファゾーンをトラバースすることを含み、
前記アイテムで前記環境モデルを更新することをさらに含む、請求項１６に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記命令は、
前記動作環境を非複雑なものとして表す前記環境モデルに基づいて、前記バッファゾーンをサイズ変更することをさらに含む、請求項１６又は１７に記載の非一時的なコンピュータ可読媒体。
【請求項１９】
前記命令は、
前記ロボットユニットを表す前記ロボットモデルを生成することをさらに含み、
前記ロボットモデルは、前記ロボットユニットを取り囲むバッファゾーンを含み、
前記ロボットモデルを生成することは、
リンクおよびジョイントをモデル化することと、
前記リンクおよび前記ジョイントのための第１のバッファをモデル化することと、を含み、
前記衝突チェックスレッドを実行して、前記ジョグコマンドが前記衝突をもたらすかどうかを判定することは、前記環境モデル内のアイテムが前記第１のバッファに進入すると判定することを含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記命令は、
前記動作環境に対して前記環境モデルを複雑なものとして生成することと、
前記環境モデルが複雑であること基づいて、前記バッファゾーンのサイズを縮小することと、
をさらに含む、請求項１６に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０２０年４月１５日に出願された米国仮特許出願第６３／０１０，０６８号の利益を主張し、その主題は、それを参照することにより本明細書に組み込まれる。
【０００２】
本技術は、概して、ロボットシステム、より具体的には衝突回避機構を対象とする。
【背景技術】
【０００３】
現代のロボット工学および自動化は、製造施設、搬入および配送センタ、倉庫などの工業環境においてサポートする機能の水準向上を提供している。既存の技術の研究開発は、無数の異なる方向に進み得る。
【０００４】
ユーザが、ロボットシステムの成長に、より力を与えるようになるにつれて、新旧のパラダイムは、この新しいテクノロジースペースを利用し始める。ロボットシステムが衝突を回避する能力など、ロボットシステムの自動化を強化または増強するこれらの新しい能力を利用するための多くの技術的な解決策がある。しかしながら、ロボットシステムの追加機能には手動操作が依然として必要であり、手動操作には衝突の回避が依然として必要である。
【０００５】
したがって、手動操作のための衝突回避機構を備えたロボットシステムに対する必要性が依然として残っている。ますます高まる商業的競争圧力、消費者の期待の高まり、市場における重要な製品差別化の機会の減少を考慮すると、これらの問題に対する答えを見つけることがますます重要である。さらに、コストを削減し、効率および性能を向上させ、競争圧力に対応する必要性は、これらの問題に対する答えを見つける重大な必要性に、さらに一層の緊急性が加えられる。
【０００６】
これらの問題に対する解決策は、長い間模索されてきたが、従来の開発は、解決策を教示または示唆しておらず、したがって、これらの問題に対する解決策は、長い間当業者が成し遂げられなかった。
【発明の概要】
【０００７】
本発明の一実施形態は、ロボットシステムを提供し、当該ロボットシステムは、ロボットユニットを手動で動作させるためのジョグコマンドを受信するように構成されたユーザインターフェースと、ユーザインターフェースに結合された制御ユニットとを含み、当該制御ユニットは、衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、ジョグコマンドが、動作環境内のロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、ジョグ操作スレッドを実行して、前記障害物のないステータスが衝突チェック時間制限内に提供されるかどうかを判定することと、を含む、ジョグコマンドをリアルタイム並列処理することと、衝突チェック時間制限前に提供された障害物のないステータスに基づいて、ロボットユニットに対するジョグコマンドを実行することと、を行うように構成される。
【０００８】
本発明の一実施形態は、ロボットシステムの動作の方法を提供し、当該方法は、ロボットユニットを手動で動作させるためのジョグコマンドを受信することと；衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、ジョグコマンドが、動作環境内の前記ロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、ジョグ操作スレッドを実行して、障害物のないステータスが衝突チェックの時間制限内に提供されるかどうかを判定することと、を含む、ジョグコマンドをリアルタイム並列処理することと；衝突チェック時間制限前に提供された障害物のないステータスに基づいて、ロボットユニットによってジョグコマンドを実行することと、を含む。
【０００９】
本発明の一実施形態は、ロボットシステムのための命令を含む非一時的なコンピュータ可読媒体を提供し、ロボットユニットを手動で動作させるためのジョグコマンドを受信することと；衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、ジョグコマンドが、動作環境内のロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、ジョグ操作スレッドを実行して、障害物のないステータスが衝突チェックの時間制限内に提供されるかどうかを判定することと、を含む、ジョグコマンドをリアルタイム並列処理することと；衝突チェック時間制限前に提供された障害物のないステータスに基づいて、ロボットユニットによってジョグコマンドを実行することと、を含む。
【００１０】
本発明の特定の実施形態は、上述したものに加えて、または上述したものの代わりに、他のステップまたは要素を有する。これらのステップまたは要素は、添付の図面を参照して以下の詳細な説明を読むことにより、当業者に明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】一実施形態における衝突回避機構を備えたロボットシステムの例示的な環境である。
【００１２】
【図２】ロボットシステムのブロック図の一例である。
【００１３】
【図３】さらなる実施形態におけるロボットシステムの別の例である。
【００１４】
【図４】ロボットユニットの一例である。
【００１５】
【図５】図３のロボットシステムのための制御フローの一例である。
【００１６】
【図６】本発明の一実施形態におけるロボットシステムの動作の方法のフローチャートである。
【発明を実施するための形態】
【００１７】
以下の説明では、多くの特定の詳細は、本開示の技術の深い理解をもたらすように記載されている。他の実施形態では、本明細書で導入される技術は、これらの特定の詳細を伴わずに実施することができる。他の例では、本開示を不要に不明瞭にすることを避けるために、特定の機能またはルーチンなどのよく知られている特徴は、詳細には説明されない。本説明における、「実施形態」、「一実施形態」または同様のものへの言及は、説明されている特定の特徴、構造、材料または特性が、本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書におけるかかる語句の出現は、必ずしもすべてが同じ実施形態を指すわけではない。その一方で、かかる言及は、必ずしも相互に排他的であるというわけでもない。さらに、特定の特徴、構造、材料、または特性は、１つまたは複数の実施形態において任意の好適な様式で組み合わされてもよい。
【００１８】
図に示される様々な実施形態は、単に例示的な表現であることを理解されたい。さらに、本システムの実施形態を示す図面は、半図式的（ｓｅｍｉ−ｄｉａｇｒａｍｍａｔｉｃ）であり、縮尺どおりではなく、特に、寸法の一部は、表現を分かりやすくするためのものであり、図面において誇張して示されている。同様に、説明を容易にするために、図面の表示は、概ね同様の向きを示しているが、図中のこのような描写は、ほとんどの部分に関して恣意的である。概して、本発明は、任意の向きで動作させられることができる。
【００１９】
周知であり、かつ、しばしばロボットシステムおよびロボットサブシステムに関連付けられるが、開示される技術のいくつかの重要な態様を不要に不明瞭にし得る構造またはプロセスを説明するいくつかの詳細は、分かりやすくするために、以下の説明には記載されない。さらに、以下の開示は、本技術の異なる態様のいくつかの実施形態を説明しているが、いくつかの他の実施形態は、本セクションで説明されるものとは異なる構成または異なる構成要素を有してもよい。したがって、開示される技術は、追加の要素を伴うか、または以下で説明される要素のうちのいくつかを伴わない他の実施形態を有してもよい。
【００２０】
以下で説明する本開示の多くの実施形態または態様は、プログラム可能なコンピュータまたはコントローラによって実行されるルーチンを含む、コンピュータ実行可能命令またはコントローラ実行可能命令の形式であってもよい。当業者は、開示される技術が、以下で示され、説明されるもの以外のコンピュータシステムまたはコントローラシステム上で実施され得ることを理解するであろう。本明細書で説明する技術は、以下で説明するコンピュータ実行可能命令のうちの１つまたは複数を実行するように特にプログラム、構成、または構築された専用のコンピュータまたはデータプロセッサにおいて具現化され得る。したがって、本明細書で大略的に使用される際、「コンピュータ」および「コントローラ」という用語は、任意のデータプロセッサを指し、パームトップコンピュータ、ウェアラブルコンピュータ、セルラ式電話または携帯電話、マルチプロセッサシステム、プロセッサベースのまたはプログラム可能な家電、ネットワークコンピュータ、ミニコンピュータおよび同様のものを含むインターネット機器およびハンドヘルドデバイスを含むことができる。これらのコンピュータおよびコントローラが扱う情報は、液晶ディスプレイ（ＬＣＤ）を含む任意の好適なディスプレイ媒体に表示され得る。コンピュータ実行可能なタスクまたはコントローラ実行可能なタスクを実行するための命令は、ハードウェア、ファームウェア、またはハードウェアとファームウェアの組み合わせを含む任意の好適なコンピュータ読み取り可能媒体中にまたはコンピュータ読み取り可能媒体上に格納され得る。命令は、例えば、フラッシュドライブ、ＵＳＢデバイス、および／またはその他の好適な媒体を含む任意の好適なメモリデバイスに含まれ得る。
【００２１】
「連結され」および「接続され」という用語は、これらの派生語とともに、部品間の構造的関係を説明するために本明細書で使用することができる。これらの用語は、互いの同義語として意図されていないことが理解されるべきである。むしろ、特定の実施形態では、「接続され」は、２つ以上の要素が、互いに直接接触していることを示すために使用することができる。文脈上で別途明示されない限り、「連結され」という用語は、２つ以上の要素が、互いに、直接的にもしくは間接的に（当該要素の間に他の介在要素を伴って）のいずれか一方で接触していること、または２つ以上の要素が、（例えば、信号の送信／受信のため、または関数呼び出しのためなどの因果関係にあるように）互いに協働もしくは相互作用していること、またはその両方を示すために使用することができる。
【００２２】
以下の実施形態は、当業者が、本発明を実施および使用することができるように十分詳細に説明されている。本開示に基づいて、他の実施形態が明らかとなると考えられ、本発明の実施形態の範囲から逸脱することなく、システム、プロセス、または機械的な変更がなされ得ることが理解されるべきである。
【００２３】
本明細書で言及される「モジュール」または「ユニット」という用語は、その用語が使用される文脈に従って、本発明の実施形態におけるソフトウェア、ハードウェア、機械的メカニズム、またはそれらの組み合わせを含み得る。例えば、ソフトウェアは、マシンコード、ファームウェア、埋め込まれたコード、またはアプリケーションソフトウェアであり得る。また、例えば、ハードウェアは、回路、プロセッサ、専用コンピュータ、集積回路、集積回路コア、圧力センサ、慣性センサ、微小電気機械システム（ＭＥＭＳ）、受動素子、またはそれらの組み合わせであり得る。さらに、機械的メカニズムは、アクチュエータ、モータ、アーム、ジョイント、ハンドル、エンドエフェクタ、ガイド、ミラー、固定ベース、真空ライン、真空発生器、液体ソースライン、またはストッパを含み得る。さらに、「モジュール」または「ユニット」が以下のシステムクレームセクションに記載されている場合、「モジュール」または「ユニット」は、システムクレームの目的および範囲に対してハードウェア回路を含むと見なされる。
【００２４】
以下の実施形態の説明におけるモジュールまたはユニットは、説明されるように、または示されるように、互いに連結され、または取り付けられ得る。連結または取り付けは、連結または取り付けられたモジュールまたはユニットの間にアイテムを介在させずに、または介在させて、直接または間接であり得る。連結または取り付けは、物理的な接触またはモジュールもしくはユニット間の通信によるものであり得る。
【００２５】
実施形態における名詞または要素は、単数の例として説明され得ることも理解されたい。単数の使用法は、単数に限定されず、単数の使用法は、用途内の特定の名詞または要素に対する複数の例に適用可能であり得ることを理解されたい。多数の例は、同じもしくは類似し得、または異なり得る。
【００２６】
ここで図１を参照すると、一実施形態における衝突回避機構を備えたロボットシステム１００の例示的な環境が示されている。ロボットシステム１００のための動作環境は、１つまたは複数のタスクを実行するように構成された、ロボットまたはロボットデバイスなどの、１つまたは複数の構造を含み得る。物体衝突回避機構の態様は、様々な構造によって実践または実装されることができる。
【００２７】
図１に例解される例において、ロボットシステム１００は、荷降ろしユニット１０２、移送ユニット１０４、運搬ユニット１０６、荷積みユニット１０８、ロボットユニット１１０、コントローラ１１２、またはこれらの組み合わせを、倉庫、物流センタ、または出荷ハブ内において含み得る。ロボットシステム１００またはロボットシステム１００の一部分は、１つまたは複数のタスクを実行するように構成され得る。
【００２８】
タスクは、順に組み合わされ、例えば、倉庫内での保管のために、トラック、トレーラ、バン、もしくは列車などの車両から対象物体１２０を荷降ろしすること、または保管場所から対象物体１２０を荷降ろしし、対象物体１２０を出荷のために車両へと荷積みすることなどの目標を達成する動作を実施し得る。タスクは、荷降ろしユニット１０２、移送ユニット１０４、運搬ユニット１０６、荷積みユニット１０８、ロボットユニット１１０、またはそれらの組み合わせによる物理的変換のために、ロボットシステム１００によって実施または実行される機能である。
【００２９】
例えば、タスクは、コンテナ、ビン、ケージ、バスケット、棚、プラットフォーム、パレット、またはコンベヤベルトなどの１つの場所から別の場所へ対象物体１２０を移動させることを含み得る。ロボットシステム１００またはロボットシステム１００の一部分は、その内部の１つまたは複数の構成要素を動作させるなど、一連の行動を実行して、タスクを実行するように構成され得る。
【００３０】
対象物体１２０は、ロボットシステム１００によって変位されるまたは移動される１つまたは複数のコンテナを表し得る。対象物体１２０の例は、ビン、ボックス、クレート、エンクロージャ、パッケージ、またはそれらの組み合わせを含み得る。対象物体１２０については、後でさらに説明する。
【００３１】
この例では、ロボットシステム１００のための動作環境１２４は、ロボットユニット１１０が動作する領域および領域内のアイテム１２６として説明されている。動作環境１２４は、ロボットユニット１１０自体を含む。具体例として、動作環境１２４はまた、コントローラ１１２、移送ユニット１０４、対象物体１２０、またはそれらの組み合わせを含み得る。動作環境１２４はまた、ロボットユニット１１０の動作に影響を及ぼし得る、図１に示されている、または示されていない他のアイテム１２６を含み得る。同様に、動作環境１２４はまた、荷降ろしユニット１０２が動作する領域および領域内のアイテム１２６を含み得るか、またはそれらとして説明され得る。簡潔にするために、ロボットシステム１００は、ロボットユニット１１０に関して説明されるが、荷降ろしユニット１０２、またはロボットシステム１００に関連付けられた関節運動または移動を実施するロボットシステム１００の他の部分に適用可能であり得る。
【００３２】
図１は、目標物体１２０を操縦する際に、ロボットシステム１００の様々なユニットによって実施され得る可能な機能および動作の例を例解しており、動作環境１２４を含む環境、および条件は、以下で説明されるものとは異なり得ることを理解されたい。例えば、荷降ろしユニット１０２は、目標物体１２０を、トラックなどの運搬手段内のある場所から、コンベヤベルト上のある場所へ移送するように構成された車両荷降ろしロボットであり得る。
【００３３】
また、パレタイジングロボットなどの移送ユニット１０４は、目標物体１２０を運搬ユニット１０６上のパレットに荷積みするためなど、目標物体１２０を、コンベヤベルト上のある場所から運搬ユニット１０６上のある場所へ移送するように構成され得る。別の例では、移送ユニット１０４は、目標物体１２０を移送するように構成されたピースピッキングロボットであり得る。動作を完了する際、運搬ユニット１０６は、目標物体１２０を、移送ユニット１０４に関連付けられた領域から、荷積みユニット１０８に関連付けられた領域に移送し得、荷積みユニット１０８は、目標物体１２０を運ぶパレットを移動させるなどによって、目標物体１２０を、移送ユニット１０４から棚上のある場所などの保管場所に移送し得る。
【００３４】
例示の目的のために、ロボットシステム１００は、出荷センタの文脈で説明される。しかしながら、ロボットシステム１００は、他の環境で、または製造、組立て、パッケージング、ヘルスケア、もしくは他のタイプの自動化などの他の目的のためにタスクを実行するように構成され得ることを理解されたい。ロボットシステム１００は、図１に示されていないマニピュレータ、サービスロボット、またはモジュール式ロボットなどの他のユニットを含み得ることもまた理解されたい。例えば、いくつかの実施形態では、ロボットシステム１００は、物体をケージ、カート、もしくはパレットからコンベヤもしくは他のパレットに移送するためのデパレタイジングユニット、物体を１つのコンテナから別のコンテナに移送するためのコンテナスイッチングユニット、物体を包装するためのパッケージングユニット、物体を１つもしくは複数の特性に従ってグループ化するためのソートユニット、物体を１つもしくは複数の特性に従って、ソート、グループ化、および／もしくは移送など様々に操作するためのピースピッキングユニット、またはこれらの組み合わせを含むことができる。
【００３５】
コントローラ１１２は、ロボットシステム１００またはロボットシステム１００の一部分にインテリジェンスを提供して、タスクを実施し得る。一例として、コントローラ１１２は、ロボットユニット１１０の動作およびロボットユニット１１０の運動を制御して、タスクを実施し得る。コントローラ１１２は、ロボットユニット１１０の動作を制御して、対象物体１２０に関連付けられたタスクを実施し得る。コントローラ１１２は、手動操作命令だけでなく、軌道を有する事前にプログラムされた動作もロボットユニット１１０に提供し得る。手動操作は、ロボットユニット１１０の少なくとも一部分の運動に対する事前にプログラムされた軌道を有しない。
【００３６】
コントローラ１１２は、タスクを実施するための命令を実行する並列処理を提供し得る。一例として、コントローラ１１２は、ロボットユニット１１０による衝突１２８を回避するための衝突チェックをするだけでなく、同時に、衝突チェックが完了するのを待たずに手動操作に関連する他の命令を実行するための命令を並列処理し得る。衝突１２８は、ロボットユニット１１０の動作の命令の一部として含まれない、動作環境１２４内のアイテム１２６のうちの少なくとも１つとのロボットユニット１１０による物理的接触である。衝突１２８はまた、ロボットユニット１１０の動作の命令の一部として含まれない、ロボットユニット１１０の別の部分とのロボットユニット１１０の少なくとも一部分による物理的接触も含み得る。
【００３７】
例示の目的のために、ロボットシステム１００は、ロボットユニット１１０およびコントローラ１１２などの別個の構成要素を有すると説明されているが、ロボットシステム１００は、異なって編成され得ることを理解されたい。例えば、ロボットシステム１００は、図１に示されるように、コントローラ１１２のための別個のエンクロージャとしてではなく、ロボットシステム１００全体に分散されたコントローラ１１２によって提供される機能を含み得る。また、例えば、コントローラ１１２は、ロボットユニット１１０の一部分として含まれ得る。さらに、例えば、コントローラ１１２は、マルチプルエンクロージャであり得、各々がロボットシステム１００の異なる部分またはユニットにインテリジェンスを提供する。
【００３８】
ロボットユニット１１０に戻ると、ロボットユニット１１０は、グリッパ１２２を含み得る。ロボットユニット１１０は、グリッパ１２２を利用して、移送ユニット１０４内の対象物体１２０を移動させ得る。前述のように、コントローラ１１２は、ロボットユニット１１０にインテリジェンスを提供し得る。同様に、コントローラ１１２はまた、グリッパ１２２にインテリジェンスを提供し得る。
【００３９】
一例として、コントローラ１１２からのインテリジェンスは、ロボットユニット１１０とともに分散され得る。具体例として、グリッパ１２２はまた、グリッパ１２２の動作のためのいくつかのインテリジェンスを提供し得、コントローラ１１２からのインテリジェンス、またはロボットユニット１１０の一部として分散されたインテリジェンスと相互作用し得る。
【００４０】
ここで図２を参照すると、ロボットシステム１００のブロック図の例が示されている。図２に示される例は、図１に示されるロボットシステム１００の場合であり得る。一実施形態では、ロボットシステム１００は、制御ユニット２０２、記憶ユニット２０６、通信ユニット２１２、ユーザインターフェース２１６、作動ユニット２２０、およびセンサユニット２３０を含み得る。一実施形態では、これらの構成要素のうちの１つまたは複数は、破線のボックスによって描写されるように、コントローラ１１２内で組み合わされ得る。
【００４１】
コントローラ１１２は、ロボットシステム１００の一部分を収容し得る。例えば、コントローラ１１２は、ケース、シャーシ、ボックス、コンソール、コンピュータタワー、またはコンピュータマザーボードであり得る。具体例として、図１の動作環境１２４は、コントローラ１１２を含み得る。また、具体例として、図１のロボットユニット１１０はまた、コントローラ１１２を含み得る。さらに、具体例として、コントローラ１１２は、ロボットシステム１００において分散され得る。さらにまた、具体例として、複数のコントローラ１１２が、ロボットシステム１００に関して、その内部、外部、またはそれらの組み合わせで存在し得る。
【００４２】
例を続けると、制御ユニット２０２、記憶ユニット２０６、通信ユニット２１２、またはそれらの組み合わせは、コントローラ１１２に収容され、およびそれに含められ得る。また、例えば、制御ユニット２０２、記憶ユニット２０６、通信ユニット２１２、またはそれらの組み合わせは、コントローラ１１２内に収容され、およびそれに含められ得、一方、ユーザインターフェース２１６は、コントローラ１１２の外部からアクセス可能であり得る。
【００４３】
ロボットシステム１００の１つまたは複数の部分は、コントローラ１１２内またはコントローラ１１２上に収容され得るが、ロボットシステム１００の他の部分は、コントローラ１１２の外部にあり得る。例えば、ユーザインターフェース２１６、作動ユニット２２０、センサユニット２３０、またはそれらの組み合わせは、コントローラ１１２の外部にあり得、制御ユニット２０２、記憶ユニット２０６、および通信ユニット２１２は、コントローラ１１２内に収容され、およびそれに含まれる。ロボットシステム１００またはロボットユニット１１０の部分の他の組み合わせは、コントローラ１１２内に、または一緒に収容され得る。
【００４４】
さらに、例えば、動作環境１２４は、ロボットユニット１１０、コントローラ１１２、センサユニット２３０、ユーザインターフェース２１６、通信ユニット２１２、記憶ユニット２０６、制御ユニット２０２、またはそれらの組み合わせを含み得る。具体例として、ロボットユニット１１０は、センサユニット２３０、通信ユニット２１２、記憶ユニット２０６、制御ユニット２０２、またはそれらの組み合わせを含み得る。
【００４５】
制御ユニット２０２は、ソフトウェア２１０を実行して、ロボットシステム１００の命令およびインテリジェンスを提供し得る。制御ユニット２０２はまた、ロボットシステム１００、ロボットユニット１１０、コントローラ１１２、またはそれらの組み合わせの他の機能のためのソフトウェア２１０を実行し得る。制御ユニット２０２は、いくつかの様々な方法で実装されてもよい。例えば、制御ユニット２０２は、プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、組み込みプロセッサ、マイクロプロセッサ、ハードウェア制御ロジック、ハードウェア有限状態機械（ＦＳＭ）、デジタル信号プロセッサ（ＤＳＰ）、またはこれらの組み合わせであってもよい。
【００４６】
例示の目的のために、制御ユニット２０２は、単一の要素として示されているが、制御ユニット２０２は、いくつかのデバイスおよびコンピュートリソースの分散を表し得ることを理解されたい。例えば、制御ユニット２０２は、ロボットシステム１００の全体およびその外部のコンピュートリソースの分散であり得る。また、例えば、制御ユニット２０２は、図１のコントローラ１１２、ロボットユニット１１０、センサユニット２３０、グリッパ１２２、またはそれらの組み合わせの間に分散され得る。ソフトウェア２１０はまた、コントローラ１１２、ロボットユニット１１０、センサユニット２３０、グリッパ１２２、またはそれらの組み合わせの間で分散され得る。
【００４７】
制御ユニット２０２は、ソフトウェア２１０の命令の並列処理を実施し得、いくつかの方法で実装され得る。例えば、制御ユニット２０２は、複数の処理コアを含み得、各々は、ソフトウェア２１０からの命令を実行することができる。また、例えば、制御ユニット２０２は、前の命令の完了前にソフトウェア２１０の複数の命令を実行することができるパイプラインアーキテクチャを含み得る。さらに、例えば、制御ユニット２０２は、処理コアおよびパイプラインアーキテクチャに加えて、分散コンピューティングを用いてソフトウェア２１０の複数の命令を実行し得る。
【００４８】
制御ユニット２０２は、制御インターフェース２０４を含み得る。制御インターフェース２０４は、制御ユニット２０２と、ロボットシステム１００の他の機能ユニット、ロボットユニット１１０、センサユニット２３０、またはそれらの組み合わせのとの通信のために使用され得る。制御インターフェース２０４はまた、ロボットシステム１００の外部の通信にも使用され得る。制御インターフェース２０４は、他の機能ユニットから、もしくは外部の送信元から情報を受信し得、または他の機能ユニットに、もしくは外部の送信先に情報を送信し得る。外部の送信元および外部の送信先とは、ロボットシステム１００の外部の送信元および送信先を指すものである。
【００４９】
制御インターフェース２０４は、様々な方法で実装され得、どの機能ユニットまたは外部ユニットが制御インターフェース２０４とインターフェースされているかに応じて異なる実装を含み得る。例えば、制御インターフェース２０４は、圧力センサ、慣性センサ、微小電気機械システム（ＭＥＭＳ）、光回路、導波路、無線回路、有線回路、アプリケーションプログラミングインターフェース、またはこれらの組み合わせによって実装され得る。
【００５０】
記憶ユニット２０６は、ソフトウェア２１０を記憶し得る。例示の目的のために、記憶ユニット２０６は、単一の要素として示されているが、記憶ユニット２０６は、いくつかのデバイスおよび記憶要素の分散を表し得ることを理解されたい。また、例示の目的のために、ロボットシステム１００は、単一階層記憶システムとしての記憶ユニット２０６を有して示されているが、ロボットシステム１００は、異なる構成の記憶ユニット２０６を有し得ることを理解されたい。例えば、記憶ユニット２０６は、キャッシング、メインメモリ、回転媒体、またはオフライン記憶装置の異なるレベルを含むメモリ階層システムを形成する異なる記憶技術を用いて形成され得る。また、例えば、記憶ユニット２０６は、コントローラ１１２、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせの間に分散され得る。ソフトウェア２１０もまた、コントローラ１１２、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせの間に分配され得る。
【００５１】
記憶ユニット２０６は、揮発性メモリ、不揮発性メモリ、内部メモリ、外部メモリ、またはこれらの組み合わせであり得る。例えば、記憶ユニット２０６は、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、ディスク記憶装置などの不揮発性記憶装置、またはスタティックランダムアクセスメモリ（ＳＲＡＭ）などの揮発性記憶装置であり得る。
【００５２】
記憶ユニット２０６は、記憶インターフェース２０８を含み得る。記憶インターフェース２０８は、記憶ユニット２０６とロボットシステム１００の他の機能ユニットとの間の通信に使用され得る。記憶インターフェース２０８はまた、ロボットシステム１００の外部の通信にも使用され得る。記憶インターフェース２０８は、ロボットシステム１００の他の機能ユニットから、もしくは外部の送信元から情報を受信し得、またはロボットシステム１００の他の機能ユニットに、もしくは外部の送信先に情報を送信し得る。外部の送信元および外部の送信先とは、ロボットシステム１００の外部の送信元および送信先を指すものである。
【００５３】
記憶インターフェース２０８は、どの機能ユニットまたは外部ユニットが記憶ユニット２０６とインターフェースされているかに応じて異なる実装を含み得る。記憶インターフェース２０８は、制御インターフェース２０４の実装と類似の技術および手法で実装され得る。
【００５４】
通信ユニット２１２は、ロボットシステム１００の部分、外部デバイス、またはそれらの組み合わせの間の通信を含む、ロボットシステム１００との間の通信を可能にし得る。例えば、通信ユニット２１２は、ロボットシステム１００が、通信経路２３８を介して、外部コンピュータ、外部データベース、外部マシン、外部周辺デバイスなどの外部デバイス、またはこれらの組み合わせと通信することを可能にし得る。
【００５５】
通信経路２３８は、様々なネットワークおよび様々なネットワークトポロジにまたがり、それらを表し得る。例えば、通信経路２３８は、無線通信、有線通信、光通信、超音波通信、またはこれらの組み合わせを含み得る。例えば、衛星通信、セルラ通信、Ｂｌｕｅｔｏｏｔｈ（登録商標）、赤外線データ協会規格（ｌｒＤＡ）、ワイヤレスフィデリティ（ＷｉＦｉ）、および全世界相互運用マイクロ波アクセス（ＷｉＭａＸ（登録商標））は、通信経路２３８に含められ得る無線通信の例である。ケーブル、イーサネット、デジタル加入者線（ＤＳＬ）、光ファイバ回線、ファイバトゥザホーム（ＦＴＴＨ）、および基本電話サービス（ＰＯＴＳ）は、通信経路２３８に含められ得る有線通信の例である。
【００５６】
さらに、通信経路２３８は、いくつかのネットワークトポロジおよびネットワーク距離をトラバースし得る。例えば、通信経路２３８は、直接接続、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、またはこれらの組み合わせを含み得る。また、例えば、通信経路２３８はまた、ロボットシステム１００内の要素間の情報交換を含み得る。具体例として、通信経路２３８は、ロボットユニット１１０の部分の間、センサユニット２３０との間、コントローラ１１２との間、またはそれらの組み合わせであり得る。制御ユニット２０２は、通信ユニット２１２を介する通信経路２３８との相互作用のためにソフトウェア２１０をさらに実行し得る。
【００５７】
通信ユニット２１２はまた、通信ハブとして機能し得、ロボットシステム１００が通信経路２３８の一部として機能することを可能にし、かつ、通信経路２３８に対するエンドポイントまたは端末ユニットであると限定されない。通信ユニット２１２は、通信経路２３８との相互作用のための、マイクロエレクトロニクスまたはアンテナなどの能動部品および受動部品を含み得る。
【００５８】
通信ユニット２１２は、通信インターフェース２１４を含み得る。通信インターフェース２１４は、通信ユニット２１２とロボットシステム１００の他の機能ユニットとの間の通信に使用され得る。通信インターフェース２１４は、ロボットシステム１００の他の機能ユニットから、もしくは外部の送信元から情報を受信し得、またはロボットシステム１００の他の機能ユニットに、もしくは外部の送信先に情報を送信し得る。通信インターフェース２１４は、どの機能ユニットが通信ユニット２１２とインターフェースされているかに応じて異なる実装を含み得る。通信インターフェース２１４は、制御インターフェース２０４の実装と類似の技術および手法で実装され得る。
【００５９】
制御ユニット２０２は、ユーザインターフェース２１６を動作させて、ロボットシステム１００によって生成された情報を提示または受信し得る。ユーザインターフェース２１６は、入力デバイスおよび出力デバイスを含み得る。ユーザインターフェース２１６の入力デバイスの例は、キーパッド、タッチパッド、ソフトキー、キーボード、マイクロフォン、リモート信号を受信するためのセンサ、モーションコマンドを受信するためのカメラ、またはこれらの任意の組み合わせを含み、データおよび通信入力を提供し得る。出力デバイスの例は、ディスプレイインターフェース２１８およびオーディオインターフェース２３２を含み得る。
【００６０】
ディスプレイインターフェース２１８は、ディスプレイ、プロジェクタ、ビデオスクリーン、またはこれらの任意の組み合わせなどの任意のグラフィカルユーザインターフェースであり得る。オーディオインターフェース２３２は、スピーカ、マイクロフォン、ヘッドホン、サブウーファ、サウンドコンポーネント、トランスデューサ、またはそれらの任意の組み合わせを含み得る。ディスプレイインターフェース２１８およびオーディオインターフェース２３２は、ロボットシステム１００のユーザがロボットシステム１００と相互作用することを可能にする。ディスプレイインターフェース２１８およびオーディオインターフェース２３２は、任意選択であり得る。
【００６１】
ロボットシステム１００はまた、作動ユニット２２０を含み得る。作動ユニット２２０は、駆動、操作、変位、方向付け、再方向付け、またはそれらの組み合わせを行うように構成されたデバイス、例えば、モータ、スプリング、ギア、プーリ、チェーン、レール、ワイヤ、人工筋肉、電気活性ポリマー、またはそれらの組み合わせ、対応する機械的接合部の周りまたはその位置にあるロボットシステム１００の構造部材または機械的構成要素を含み得る。制御ユニット２０２は、作動ユニット２２０を動作させて、作動ユニット２２０を制御または操作し得る。
【００６２】
例示の目的のために、作動ユニット２２０は、単一の要素として示されているが、作動ユニット２２０は、いくつかのデバイスを表し得、アクチュエータの分散であり得ることを理解されたい。例えば、作動ユニット２２０は、ロボットシステム１００全体に分散され得る。また、例えば、作動ユニット２２０は、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせ全体に分散され得る。
【００６３】
作動ユニット２２０は、作動インターフェース２２２を含み得る。作動インターフェース２２２は、作動ユニット２２０と、ロボットシステム１００の他の機能ユニット、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせとの間の通信に使用され得る。作動インターフェース２２２はまた、ロボットシステム１００の外部の通信にも使用され得る。作動インターフェース２２２は、ロボットシステム１００の他の機能ユニットから、もしくは外部の送信元から情報を受信し得、またはロボットシステム１００の他の機能ユニットに、もしくは外部の送信先に情報を送信し得る。作動インターフェース２２２は、ガスラインなどの作動プロセスのための供給源として機能し得る。
【００６４】
作動インターフェース２２２は、ロボットシステム１００のどの機能ユニット、または外部ユニットが作動ユニット２２０とインターフェースされているかに応じて異なる実装を含み得る。作動インターフェース２２２は、制御インターフェース２０４の実装と類似の技術および手法で実装され得る。作動インターフェース２２２はまた、空気圧装置またはガス装置を用いて実装され得る。
【００６５】
ロボットシステム１００は、ロボットシステム１００の構造部材、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせを操作するためなど、タスクおよび動作を実行するために使用されるセンサ読み取り値２４６を取得するように構成されたセンサユニット２３０を含み得る。センサユニット２３０はまた、ロボットシステム１００の部分のためのセンサ読み取り値２４６を取得するように構成され得る。例えば、センサユニット２３０は、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせのためのセンサ読み取り値２４６を取得し得る。また、例えば、センサユニット２３０は、ロボットシステム１００、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせによって動作される図１のアイテム１２６のためのセンサ読み取り値２４６を取得し得る。具体例として、センサユニット２３０は、図１の対象物体１２０のためのセンサ読み取り値２４６を提供し得る。
【００６６】
センサ読み取り値２４６は、ロボットシステム１００の環境におけるイベントまたは変化を検出し、ロボットシステム１００の部分、外部デバイス、またはそれらの組み合わせに情報を送信して、タスクを容易にするためのセンサユニット２３０からの情報またはデータを含み得る。センサ読み取り値２４６の例は、画像読み取り値、光学読み取り値、圧力読み取り値、距離読み取り値、またはそれらの組み合わせを含み得る。また、例として、センサ読み取り値２４６は、ロボットユニット１１０またはロボットユニット１１０の一部分に衝突または衝撃を引き起こし得る物体からの距離を表し得る。
【００６７】
例示の目的のために、センサユニット２３０は、単一の要素として示されているが、センサユニット２３０はいくつかのデバイスを表し得ることを理解されたい。例えば、作動ユニット２２０は、ロボットシステム１００全体に分散され得る。また、例えば、作動ユニット２２０は、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせ全体に分散され得る。
【００６８】
センサユニット２３０は、センサインターフェース２２４を含み得る。センサインターフェース２２４は、センサユニット２３０と、ロボットシステム１００の他の部分、ロボットユニット１１０、またはそれらの組み合わせとの間の通信に使用され得る。センサインターフェース２２４はまた、ロボットシステム１００、ロボットユニット１１０、またはその組み合わせの外部の通信にも使用され得る。センサインターフェース２２４は、ロボットシステム１００の他の部分もしくは外部の送信元から情報を受信し得、またはロボットシステム１００の他の部分もしくは外部の送信先に情報を送信し得る。具体例として、センサインターフェース２２４は、ロボットユニット１１０、グリッパ１２２、またはそれらの組み合わせとの通信およびそれらの間の通信、およびロボットシステム１００の他の部分との通信を提供し得る。
【００６９】
センサインターフェース２２４は、ロボットシステム１００のどの機能ユニット、または外部ユニットがセンサユニット２３０とインターフェースされているかに応じて異なる実装を含み得る。センサインターフェース２２４は、制御インターフェース２０４の実装と類似の技術および手法で実装され得る。
【００７０】
ここで図３を参照すると、さらなる実施形態におけるロボットシステム３００の別の例が示されている。ロボットシステム３００は、１つまたは複数のタスクを実行するように構成された、ロボットまたはロボットデバイスなどの、１つまたは複数の構造を含み得る。物体衝突回避機構の態様は、様々な構造によって実践または実装されることができる。ロボットシステム１００との類似点は、ロボットシステム３００についてすべて繰り返されない。ロボットシステム１００からの追加情報またはそれとの差異が、図３に記載され得る。図２のブロック図は、ロボットシステム３００にも適用可能であり、簡潔にするために繰り返されない。
【００７１】
図３の実施例および実施形態では、ロボットシステム３００は、移送ユニット３０６、ロボットユニット３１０、コントローラ３１２、またはそれらの組み合わせを含み得る。ロボットシステム３００またはロボットシステム３００の一部分は、１つまたは複数のタスクを実行するように構成され得る。
【００７２】
図３に示される実施形態の場合、および例として、移送ユニット３０６は、ロボットユニット３１０による処理のタスクのために対象物体３２０を移送し得る。移送ユニット３０６は、対象物体３２０が搭載され、ロボットユニット３１０によってアクセスされる場所に転がされる棚３３４またはビンを含み得る。移送ユニット３０６はまた、移送ユニット３０６と、ロボットユニット３１０が動作するための動作環境３２４の一部分との間にドア３３６を含み得る。
【００７３】
ドア３３６は、この例では、移送ユニット３０６の内部と、ロボットユニット３１０が配置されている動作環境３２４の部分との分離を提供し得る。ドア３３６は、開位置または閉位置にあり得る。開位置は、ロボットユニット３１０が移送ユニット３０６の内部にアクセスすることを可能にする。閉位置は、ロボットユニット３１０が移送ユニット３０６の内部にアクセスするのを防ぐ。
【００７４】
図３の例を続けると、ロボットユニット３１０は、対象物体３２０上で動作し得る。具体例として、ロボットユニット３１０は、移送ユニット３０６から対象物体３２０をつかみ得る。ロボットユニット３１０は、ロボットシステム３００による処理のために、および処理中に、対象物体３２０を固定および移動させ得る。ユーザインターフェース２１６は、タスクを呼び出して、ロボットユニット３１０、ロボットシステム３００、またはその組み合わせによって、対象物体３２０を固定、移動、処理、またはそれらの組み合わせを行いし得る。ユーザインターフェース２１６は、ロボットシステム３００、ロボットユニット３１０、またはそれらの組み合わせに手動コマンドを提供し得る。ユーザインターフェース２１６は、コントローラ３１２の一部であるか、またはコントローラ３１２とともに動作し得る。
【００７５】
例えば、手動コマンドは、ジョグコマンド３３８を含み得る。ジョグコマンド３３８は、ロボットユニット３１０の少なくとも一部分に手動操作により移動するように指示する。一例として、ジョグコマンド３３８は、事前に計画された運動の軌道を含まず、代わりに、手動操作によってロボットユニット３１０を指示するコマンドを含む。
【００７６】
図１のコントローラ１１２と同様に、コントローラ３１２は、ロボットシステム３００、ロボットユニット３１０、またはそれらの組み合わせに対して、タスクのための命令、インテリジェンス、または動作制御を提供し得る。コントローラ３１２はまた、ロボットシステム３００内のロボットユニット３１０の動作環境３２４、移送ユニット３０６、またはそれらの組み合わせとの衝突回避を提供し得る。タスクは、ロボットシステム３００によって実施または実行されて、移送ユニット３０６、ロボットユニット３１０、対象物体３２０、またはそれらの組み合わせによる物理的変換を達成する機能である。
【００７７】
ロボットシステム３００のための動作環境３２４は、ロボットシステム１００について説明したものと同様である。この例では、ロボットシステム３００のための動作環境３２４は、ロボットユニット３１０が動作する物理空間および物理空間内のアイテム１２６を含めて説明される。動作環境３２４は、ロボットユニット３１０自体を含む。
【００７８】
この例を続けると、動作環境３２４は、ロボットシステム３００、ロボットユニット３１０、またはそれらの組み合わせに関する情報を提供し得る。移送ユニット３０６の例に戻ると、動作環境３２４は、ロボットユニット３１０がその中に収容されるチャンバを含み得る。動作環境３２４は、物理的環境、物理的環境のための情報、またはそれらの組み合わせを表す。物理的環境を表すときの動作環境３２４はまた、開位置、閉位置であろうと、位置などのドア３３６に関する情報、棚３３４の位置および情報、対象物体３２０の位置および情報、またはそれらの組み合わせを含み得る。
【００７９】
この例をさらに続けると、動作環境３２４はまた、ツーリングを含む他の種類のアイテム１２６、および対象物体３２０を処理するためのタスクを実行するためのチャンバ内の１つまたは複数の機構であり得る。動作環境３２４はまた、ロボットユニット３１０、またはロボットユニット３１０と同様の、すなわちロボットユニット３１０と同じまたは異なる移動が可能である他のロボットデバイスのさらなるインスタンスを含み得る。他のツーリング、機構（複数可）、構造、またはそれらの組み合わせは、静止して固定位置にあるか、または対象物体３２０を処理するために移動することが可能であり得る。動作環境３２４はまた、ロボットユニット３１０の動作に影響を及ぼし得る、図３に示されている、または示されていないアイテム１２６の他のインスタンスを含み得る。
【００８０】
図３は、目標物体３２０を操縦する際に、ロボットシステム３００の様々なユニットによって実施され得る可能な機能および動作の例を例解しており、動作環境３２４を含む環境、および環境に関連付けられた条件は、以下で説明されるものとは異なり得ることを理解されたい。例えば、図２の荷降ろしユニット１０２は、目標物体３２０を、トラックなどの運搬手段内のある場所から、コンベヤベルト上のある場所へ移送するように構成された車両荷降ろしロボットであり得る。また、例として、図１の移送ユニット１０４は、対象物体３２０を移送ユニット３０６に移送するように構成され得る。
【００８１】
例示の目的のために、ロボットシステム３００は、対象物体３２０を処理する文脈で説明され、図１で説明したようなロボットシステム１００の拡張であり得るか、またはロボットシステム１００に含まれ得るが、ロボットシステム３００は、図１に記載された動作例とは別に動作するように構成され得る。ロボットシステム３００は、他の環境において、または製造、組立て、パッケージング、ヘルスケア、または他のタイプの自動化などの他の目的のために、タスクを実行し得る。ロボットシステム３００は、図３に示されていないマニピュレータ、サービスロボット、またはモジュール式ロボットなどの他のユニットを含み得ることもまた理解されたい。
【００８２】
また、例示の目的で、ロボットシステム３００は、ロボットユニット３１０およびコントローラ３１２などの別個の構成要素を有すると説明されているが、ロボットシステム３００は、異なって編成され得ることを理解されたい。例えば、ロボットシステム３００は、図３に示されるように、移送ユニット３０６、ロボットユニット３１０、またはそれらの組み合わせとは別個のエンクロージャとしてではなく、ロボットシステム３００全体に分散されたコントローラ３１２によって提供される機能を含み得る。また、例えば、コントローラ３１２は、移送ユニット３０６、ロボットユニット３１０、またはそれらの組み合わせの一部として含まれ得る。さらに、例えば、コントローラ３１２は、マルチプルエンクロージャであり得、各々がロボットシステム３００の異なる部分またはユニットにインテリジェンスを提供する。
【００８３】
ここで図４を参照すると、ロボットユニット３１０の例である。ロボットユニット３１０のための説明は、図１のロボットユニット１１０、および図１の荷積みユニット１０８などの図１の他のロボットデバイスにも適用可能である。
【００８４】
この例では、ロボットユニット３１０は、リンク３４０およびジョイント３４２を含む。ジョイント３４２は、ロボットユニット３１０の関節部分または作動部分を提供する。ジョイント３４２は、典型的には、リンク３４０の間にある。集合的に、ジョイント３４２は、ロボットユニット３１０の剛性部材を提供するリンク３４０とともに、全体としてロボットユニット３１０の関節運動または作動を提供し得る。一例として、ジョイント３４２の移動は、同じまたは異なるタイプの図２の作動ユニット２２０のうちの１つまたは複数によって実装され得る。
【００８５】
ジョイント３４２のいくつかは、回転関節運動、またはより具体的には、ジョイント３４２の各々に取り付けられたリンク３４０の回転作動を提供し得る。グリッパ４２２に取り付けられた、またはそれを関節接合するジョイント３４２のインスタンスなど、ジョイント３４２の他のインスタンスは、並進または線形の関節運動または作動を提供し得る。グリッパ４２２は、図１のグリッパ１２２と同様に説明され得る。
【００８６】
この例を続けると、ロボットユニット３１０は、ロボットユニット３１０が動作するロボットシステム３００の内部チャンバを表す動作環境３２４の内部に取り付けられた一端に示されている。この例では、ジョイント３４２は、第１のジョイント４４４、第２のジョイント４４６、第３のジョイント４４８、第４のジョイント４５０、第５のジョイント４５２、またはそれらの組み合わせを含み得る。また、例えば、リンク３４０は、第１のリンク４５４、第２のリンク４５６、第３のリンク４５８、第４のリンク４６０、またはそれらの組み合わせを含み得る。
【００８７】
具体例として、チャンバの内部を第１のリンク４５４に接続する第１のジョイント４４４が示されている。第１のジョイント４４４は、回転作動を提供するものとして図４に示され、第１のリンク４５４に作用する。第２のジョイント４４６は、回転作動を提供するものとして示され、第１のリンク４５４から第２のリンク４５６に作用する。第３のジョイント４４８は、回転作動を提供するものとして示され、第２のリンク４５６から第３のリンク４５８に作用する。第４のジョイント４５０は、回転作動を提供するものとして示され、第３のリンク４５８から第４のリンク４６０に作用する。第５のジョイント４５２は、線形作動を提供するものとして示され、第４のリンク４６０からグリッパ４２２を開くように作用する。
【００８８】
例として、図３の棚３３４、図３の対象物体３２０、およびロボットユニット３１０は、各々、バッファゾーン４６２でモデル化され得る。ロボットシステム３００、図３のコントローラ３１２、またはそれらの組み合わせは、ロボットユニット３１０を動作させ、バッファゾーン４６２を利用して、図１の衝突１２８、または図３の動作環境３２４、移送ユニット３０６内の、もしくは図３のドア３３６との意図しない接触を回避し得る。
【００８９】
バッファゾーン４６２は、ロボットユニット３１０の周りに閾値距離４６４を提供し、移動によって生じる衝突が発生し得るかどうかを判定する。閾値距離４６４は、速度４６６、サイクル数４６８、およびサイクル時間４７０によって定義される。速度４６６は、ジョグコマンド３３８に基づくロボットユニット３１０の少なくとも一部による運動の速度である。サイクル数４６８は、制御間隔４７２の数である。サイクル時間４７０は、制御間隔４７２の各々に対する時間または継続時間の量である。制御間隔４７２については後述する。
【００９０】
一例として、バッファゾーン４６２は、ロボットユニット３１０の物理的輪郭全体を表すモデルを取り囲み得、バッファゾーン４６２のカバレッジの次元は、様々であり得る。例えば、バッファゾーン４６２は、ロボットユニット３１０の物理的輪郭を取り囲む３次元カバレッジを含み得る。また、例えば、バッファゾーン４６２はまた、ロボットユニット３１０の部分的な輪郭を提供し得、２次元であり得る。バッファゾーン４６２の２次元バージョンは、移動面に対して平面であり得る。バッファゾーン４６２の２次元バージョンはまた、非線形の移動経路と一致するように非平面であり得る。バッファゾーン４６２はまた、必要に応じて、ロボットユニット３１０の側面に限定することができ、その側面は移動の方向に向いている。さらに、例えば、バッファゾーン４６２はまた、ロボットユニット３１０の側面に沿ったさらなる範囲から１次元であり得、その側面は、移動の方向に向いている。
【００９１】
ロボットユニット３１０、リンク３４０、ジョイント３４２、またはそれらの組み合わせの物理的輪郭を超えた、閾値距離４６４によって決定されるバッファゾーン４６２のサイズまたは範囲は、固定され得、動的に調整され得、または固定または調整の間で交換可能である。例えば、バッファゾーン４６２のサイズは、固定され得、ロボットユニット３１０、リンク３４０、ジョイント３４２、またはそれらの組み合わせを取り囲む動作環境３２４の複雑さに基づき得る。また、例えば、バッファゾーン４６２の閾値距離４６４はまた、固定され得るか、またはロボットユニット３１０、リンク３４０、ジョイント３４２、またはそれらの組み合わせの移動の速度４６６に基づき得る。閾値距離４６４は、動作環境３２４への変更、衝突イベント、またはそれらの組み合わせに基づいて調整され得る。
【００９２】
具体的な例として、バッファゾーン４６２は、ジョイント３４２の各々、リンク３４０の各々、グリッパ４２２、またはそれらの組み合わせに対して、意図しない接触を回避するためのセグメントを含み得る。一例として、バッファゾーン４６２のセグメントは、ジョイント３４２、リンク３４０、グリッパ４２２、またはそれらの組み合わせに対応し得、第１のバッファ、第２のバッファ、第３のバッファ、第４のバッファ、第５のバッファ、またはそれらの組み合わせを含み得る。簡潔にするために、バッファゾーン４６２について説明したような１次元、２次元、および３次元の輪郭についての説明は、第１のバッファから第５のバッファまでの個々のバッファにも適用し得る。バッファゾーン４６２の次元および閾値距離４６４は、第１のバッファから第５のバッファの間で同じまたは異なり得る。
【００９３】
例を続けると、第１のバッファは、第１のジョイント４４４および第１のリンク４５４に対する衝突回避閾値または潜在的な衝突検出閾値を表し得る。第２のバッファは、第２のジョイント４４６および第２のリンク４５６に対する衝突回避閾値または潜在的な衝突検出閾値を表し得る。第３のバッファは、第３のジョイント４４８および第３のリンク４５８に対する衝突回避閾値または潜在的な衝突検出閾値を表し得る。第４のバッファは、第４のジョイント４５０および第４のリンク４６０に対する衝突回避閾値または潜在的な衝突検出閾値を表し得る。第５のバッファは、第５のジョイント４５２およびグリッパ４２２に対する衝突回避閾値または潜在的な衝突検出閾値を表し得る。
【００９４】
一例として、ロボットユニット３１０は、ジョイント３４２、リンク３４０、またはそれらの組み合わせの周りのバッファゾーン４６２に対して図２のセンサ読み取り値２４６を提供するためのセンサユニット２３０を含み得る。この例では、センサ読み取り値２４６は、バッファゾーン４６２に対する閾値距離４６４によって輪郭が描かれた距離閾値または境界がトリガされたか、またはトリガされ得るかどうかの指標を提供し得る。
【００９５】
また、例えば、ロボットユニット３１０は、単一のインスタンスまたはセンサユニット２３０を含み得る。具体例として、センサユニット２３０は、動作環境３２４におけるチャンバの壁に取り付けられた部分から離れたロボットユニット３１０のさらなる範囲にあり得る。具体例を続けると、センサユニット２３０は、第５のジョイント４５２またはグリッパ４２２に取り付けられ得るか、または配置され得る。
【００９６】
さらに、例えば、センサユニット２３０は、第１のセンサ、第２のセンサ、第３のセンサ、第４のセンサ、第５のセンサ、またはそれらの組み合わせを含み得る。第１のセンサは、第１のバッファを提供し得る。第１のセンサは、第１のバッファを監視し、第１のジョイント４４４が配置されている反対側の端部の第１のリンク４５４または第１のジョイント４４４に配置され得る。第２のセンサは、第２のバッファを提供し得る。第２のセンサは、第２のバッファを監視し、第２のジョイント４４６が配置されている反対側の端部の第２のリンク４５６または第２のジョイント４４６に配置され得る。第３のセンサは、第３のバッファを提供し得る。第３のセンサは、第３のバッファを監視し、第３のジョイント４４８が配置されている反対側の端部の第３のリンク４５８または第３のジョイント４４８に配置され得る。第４のセンサは、第４のバッファを提供し得る。第４のセンサは、第４のバッファを監視し、第４のジョイント４５０が配置されている反対側の端部の第４のリンク４６０または第４のジョイント４５０に配置され得る。第５のセンサは、第５のバッファを提供し得る。第５のセンサは、第５のバッファを監視し、グリッパ４２２またはグリッパ４２２に配置することができる。
【００９７】
動作環境３２４の複雑さは、ロボットユニット３１０、ロボットシステム３００、またはそれらの組み合わせに対するセンサユニット２３０のインスタンスの数およびセンサ読み取り値２４６の数を決定し得る。動作環境３２４の複雑さはまた、センサユニット２３０のタイプまたは複数のタイプ、およびロボットユニット３１０、ロボットシステム３００、またはそれらの組み合わせに利用または提供される各センサ読み取り値４９４からの情報のタイプを決定し得る。
【００９８】
例えば、非複雑であると説明される動作環境３２４は、ロボットユニット３１０の近くの非常に小さな障害物を指し、ロボットユニット３１０を取り囲むアイテム１２６は、静止または固定されている、ロボットユニット３１０を取り囲むアイテム１２６は、動かない、またはそれらの組み合わせである。バッファゾーン４６２に関して前述した例が、ロボットユニット３１０に対する可動域または運動の経路に適用される場合、動作環境３２４はまた、非複雑であり得る。動作環境３２４は、前述の例のいずれか、またはロボットユニット３１０に対する可動域の経路で障害物変化が発生した場合、非複雑ではなく、より複雑であり得る。
【００９９】
さらに、非複雑なタイプの動作環境３２４の例は、他の移動物体がなく、静的環境、障害物またはアイテム１２６またはそれらの組み合わせがほとんどない静的環境を含み得、したがって、ロボットユニット３１０の周囲の領域を、衝突の可能性なく、閾値サイクル数、動作させ得る。閾値サイクル数は、ロボットユニット３１０が動作環境３２４における別のオブジェクトまたはアイテムと衝突すると判定される前の、事前定義された期間、図３のジョグコマンド３３８を実行するロボットユニット３１０の動作を指し得る。動作環境３２４の最も複雑でないものは、ロボットユニット３１０に対する可動域内に、潜在的な衝突に対する物体またはアイテム１２６がない空の部屋であろう。
【０１００】
動作環境３２４が非複雑であるか、または単純であると考えられる場合、コントローラ３１２、ロボットシステム３００、またはそれらの組み合わせは、センサ読み取り値２４６のより少ない数または複雑さを利用して、ロボットユニット３１０に対する衝突１２８を回避し得る。一例として、ロボットシステム１００は、センサユニット２３０の１つのインスタンスを利用し得、センサ読み取り値２４６は、移動の方向に面するリンク３４０の側面での距離閾値に対して１次元であり得るバッファゾーン４６２を表し得る。この例の選択は、コントローラ３１２、ロボットシステム３００、またはそれらの組み合わせに対する計算を簡素化し、また、コントローラ３１２、ロボットユニット３１０、センサユニット２３０、ロボットシステム３００、またはそれらの組み合わせに対する電力消費を減少させ得る。簡素化はまた、衝突１２８を回避するためのより迅速な判定を可能にし、それにより、ロボットシステム３００、ロボットユニット３１０、またはそれらの組み合わせの動作を向上させる。
【０１０１】
複雑な環境の例は、ロボットユニット３１０の可動域が静的障害物、動的障害物、またはそれらの組み合わせによって制限される環境として説明され得る。例えば、動作環境が複雑であるか、単純ではないか、または複雑さのスペクトルに沿ってより複雑に向かっている場合、コントローラ３１２、ロボットシステム３００、またはそれらの組み合わせは、センサユニット２３０のより多くの数または複雑さを利用して、ロボットユニット３１０に対する衝突１２８を回避し得る。一例として、ロボットシステム１００は、センサユニット２３０の複数のインスタンスを利用し得、センサ読み取り値２４６は、バッファゾーン４６２を表し得る。バッファゾーン４６２は、第１のバッファから第５のバッファまでなど、より小さなセグメントに分割され得る。次元は、バッファゾーン４６２の各セグメントによって様々であり得る。
【０１０２】
例を続けると、バッファゾーン４６２のセグメントのいくつかは、閾値距離４６４に対して１次元であり得、他のセグメントは、２次元であり得、さらに他のセグメントは、３次元であり得る。センサユニット２３０の各々、バッファゾーン４６２のセグメントの各々、リンク３４０の各々、ジョイント３４２の各々、またはそれらの組み合わせに対する次元は、ロボットユニット３１０の異なる部分に対する潜在的な運動経路に対する動作環境３２４の複雑さによって決定され得る。言い換えれば、動作環境３２４の複雑さのレベルは、ロボットユニット３１０の異なる部分に対して異なり得る。リンク３４０のいくつかに対する可動域または潜在的な運動の経路は、単純であると判定され得る動作環境３２４の一部分で動作し得る一方、リンク３４０の他のインスタンスは、異なるタイプのセンサ読み取り値２４６、センサユニット２３０、またはそれらの組み合わせを必要とし得る異なるレベルの複雑さであると判定される動作環境３２４の異なる部分で動作し、衝突１２８を回避し得る。
【０１０３】
ロボットユニット３１０のリンク３４０の異なるインスタンスに沿ったセンサユニット２３０、センサ読み取り値２４６、バッファゾーン４６２、またはそれらの組み合わせの変化は、付随する利点とともに、前述のように、ロボットシステム３００に計算を簡素化する能力を提供するが、必要に応じて、動作環境３２４における異なるまたは様々な複雑さを処理する柔軟性も提供して、衝突回避に対する精度のバランスをとる。動作環境３２４における異なるレベルの複雑さを混合し、一致させ、説明する能力は、ロボットシステム３００が効率を改善させる一方で、機能精度を高めて、衝突１２８を回避することを可能にする。
【０１０４】
ここで図５を参照すると、図３のロボットシステム３００のための制御フローの例が示されている。説明はまた、図１に記載されているロボットシステム１００にも適用し得る。制御フローは、モデル生成モジュール５０２、コマンド受信モジュール５０４、モデル更新モジュール５０６、衝突チェックモジュール５０８、計算制限モジュール５１０、コマンドフラグモジュール５１２、コマンド確認モジュール５１４、コマンド転送モジュール５１６、モードチェックモジュール５１８、モード終了モジュール５２０、またはそれらの組み合わせを含み得る。
【０１０５】
簡潔にするために、制御フローの一部分は、衝突チェックスレッド５２２が、モデル更新モジュール５０６、衝突チェックモジュール５０８、コマンド確認モジュール５１４、またはそれらの組み合わせを含み得ると説明されている。制御フローの一部は、ジョグ操作スレッド５２４が、コマンド受信モジュール５０４、計算制限モジュール５１０、コマンド転送モジュール５１６、モードチェックモジュール５１８、モード終了モジュール５２０、またはそれらの組み合わせを含み得ると説明されている。
【０１０６】
制御フローは、図２のソフトウェア２１０によって実装され、図２の制御ユニット２０２、図３のコントローラ３１２、またはそれらの組み合わせによって実行され得る。コマンドは、制御ユニット２０２、コントローラ３１２、図３のロボットユニット３１０、図３のロボットシステム３００、またはそれらの組み合わせによって生成され得る。コマンドは、ユーザインターフェース２１６で開始され得る。
【０１０７】
ソフトウェア２１０は、図２の記憶ユニット２０６に記憶され得、制御ユニット２０２によって実行され得る。制御フローは、コマンドを送信すること、または図２の通信ユニット２１２、図２の通信インターフェース２１４、図２の制御インターフェース２０４、図２の記憶インターフェース２０８、図２の作動インターフェース２２２、図２のセンサインターフェース２２４、またはそれらの組み合わせを必要に応じて利用して、行動を呼び出すことを含み得る。制御フローは、図４のグリッパ４２２、ロボットユニット３１０、コントローラ３１２、ロボットシステム３００、またはそれらの組み合わせによって実行され得る。
【０１０８】
モデル生成モジュール５０２、コマンド受信モジュール５０４、モデル更新モジュール５０６、衝突チェックモジュール５０８、計算制限モジュール５１０、コマンドフラグモジュール５１２、コマンド確認モジュール５１４、コマンド転送モジュール５１６、モードチェックモジュール５１８、およびモード終了モジュール５２０は、一方のモジュールの出力を他方の入力として含めることによって、一方のモジュールの動作が他方のモジュールの動作に影響を与えることによって、またはそれらの組み合わせによって、有線または無線接続を使用して互いに結合され得る。制御フローの部分は、間にコネクタ以外の構造もしくは物体を介在させることなく直接結合され得、または互いに間接的に結合され得る。
【０１０９】
モデル生成モジュール５０２は、ロボットユニット３１０に対する周囲環境に関する情報として、図３の動作環境３２４に対する環境モデル５２６を提供する。モデル生成モジュール５０２はまた、ロボットユニット３１０に対するロボットモデル５２８を生成し得る。環境モデル５２６はまた、ロボットモデル５２８を含み得る。
【０１１０】
環境モデル５２６は、図１のアイテム１２６の数、アイテム１２６の種類、アイテム１２６の位置、アイテム１２６の寸法、アイテム１２６の可動性、アイテム１２６のステータスまたは状態に関する情報、およびそれらを表すことを含み得る。アイテム１２６の例は、対象物体３２０、図１の荷降ろしユニット１０２または図１の移送ユニット１０４などの他のロボットデバイス、図１の荷積みユニット１０８、図３のドア３３６、図３の棚３３４、ロボットユニット３１０の他の例、またはそれらの組み合わせを含み得る。
【０１１１】
具体例として、環境モデル５２６は、ロボットユニット３１０、ロボットユニット３１０の周りの壁、ドア３３６、棚３３４、コンテナなどの物体の位置および寸法の表現を含む座標系を実装し得る。ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、動作環境３２４内のアイテム１２６に関する情報を受信し得、それらの物体は、環境モデル５２６に含められ得る。
【０１１２】
ロボットモデル５２８は、図４のリンク３４０、図４のジョイント３４２、図２のセンサユニット２３０、またはそれらの組み合わせを表し得る。ロボットモデル５２８は、リンク３４０の各々、ジョイント３４２の各々に対する物理的寸法、ロボットユニット３１０に対するリンク３４０およびジョイント３４２の物理的関係、またはそれらの組み合わせを含み得る。ロボットモデル５２８は、リンク３４０の各々、ジョイント３４２の各々、またはそれらの組み合わせに対する可動域または運動能力を含み得る。ロボットモデル５２８はまた、図４のバッファゾーン４６２、および図４の第１のバッファ、図４の第２のバッファ、図４の第３のバッファ、図４の第４のバッファ、図４の第５のバッファ、またはそれらの組み合わせとしてセグメント化された形態を含み得る。
【０１１３】
ロボットモデル５２８は、ロボットユニット３１０の実際の物理的測定値／寸法よりも大きいサイズのバッファゾーン４６２に対応するメッシュであり得、ロボットユニット３１０の周りにバッファ領域を提供する。一例として、モデル生成モジュール５０２は、ロボットモデル５２８のバッファゾーン４６２、図３の閾値距離４６４、またはそれらの組み合わせを、図３のジョグコマンド３３８の図４の速度４６６に基づいて、バッファゾーン４６２の端からロボットユニット３１０への実際の接点まで移動する制御間隔４７２の時間または数に合わせて、サイズ設定し得る。
【０１１４】
速度４６６に対するより高い移動値の場合の具体例として、バッファゾーン４６２の閾値距離４６４は、ロボットユニット３１０の速度４６６に対するより低い移動値の場合よりも大きくすることができる。いくつかの実施形態では、バッファゾーン４６２の閾値距離４６４は、バッファゾーン４６２が大きすぎる場合、ロボットユニット３１０が実際には動作環境３２４を介して安全にジョギングし得るにもかかわらず、特定の空間で操縦または動作し得ない場合、最大または最小に制限され得る。
【０１１５】
一例として、バッファゾーン４６２のサイズまたは図３の閾値距離４６４は、衝突がないと見なされる、ロボットユニット３１０の運動の速度４６６と、制御間隔４７２の数と、２ミリ秒（ｍｓ）または４ｍｓなどの制御間隔４７２の各々に対するユニット時間との積に基づいて計算され得る。制御間隔４７２については後述する。
【０１１６】
モデル生成モジュール５０２はまた、ロボットユニット３１０に対して使用されるセンサユニット２３０の認識を提供して、バッファゾーン４６２を決定し得る。例えば、モデル生成モジュール５０２は、ロボットユニット３１０とともに利用されるセンサユニット２３０のインスタンスの数、センサユニット２３０の位置、センサユニット２３０のその特定のインスタンスに対して監視されるバッファゾーン４６２の次元に対するセンサユニット２３０の各々の仕様または機能、またはその組み合わせを決定し得る。フローは、コマンド受信モジュール５０４に進み得る。
【０１１７】
コマンド受信モジュール５０４は、ロボットユニット３１０のためのタスクに対する命令を受信する。コマンド受信モジュール５０４は、図３のユーザインターフェース２１６からの入力であり得る。一例として、コマンド受信モジュール５０４は、ロボットユニット３１０、ロボットシステム３００、またはそれらの組み合わせを手動操作で動作させる場合に、タスクに対するコマンドを受信し得る。
【０１１８】
手動操作に対するコマンドの例は、ジョグコマンド３３８であり、これは、ロボットユニット３１０、グリッパ４２２、ロボットユニット３１０の別の部分、またはそれらの組み合わせを移動させるタスクに対するコマンドである。ジョグコマンド３３８は、事前に計画された軌道を有しないが、手動操作に対して受信された入力によって制御される。一例として、ジョグコマンド３３８は、全体としてロボットユニット３１０、リンク３４０およびジョイント３４２の特定のインスタンス、タスクを実施するためのリンク３４０およびジョイント３４２の単一および選択されたインスタンスのみ、またはそれらの組み合わせを作動させ得る。また、例えば、ジョグコマンド３３８は、単一の運動を提供し得、またはジョグコマンド３３８の少なくとも一部分に対する１つ以上の運動を表し得る。
【０１１９】
具体例として、ロボットシステム３００、ロボットユニット３１０、またはそれらの組み合わせは、手動操作に対するジョギングモードにあり得る。ジョギングモードでは、ロボットシステム３００、ロボットユニット３１０、またはそれらの組み合わせに送信される命令は、方向および速度４６６を含み得るか、またはそれらに限定され得る。ジョグコマンド３３８または命令は、事前定義された開始もしくは終了点または速度４６６がないという点で軌道とは異なる。軌道の場合、ロボットシステム３００、コントローラ３１２、ロボットユニット３１０、またはそれらの組み合わせは、ロボットユニット３１０または作動されるロボットユニット３１０の部分に対する開始点および終了点を備えており、軌道を事前に計画し得る。
【０１２０】
例えば、ジョギングモードでは、ユーザがジョギング機能をアクティベートするか、ユーザインターフェース２１６、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせでジョギングモードを開始すると、アクティベーションは、ユーザによって入力または設定された方向および速度４６６で、ロボットユニット３１０の少なくとも一部分をジョギングまたは移動させ始め、ユーザがジョグコマンド３３８を停止するか、または終了コマンド５３０を送信すると、停止する。終了コマンド５３０は、ロボットユニット３１０の少なくとも一部分が運動を停止するための命令である。一例として、終了コマンド５３０は、ジョギングモードを維持するためにオペレータによって使用されるボタンまたはダイヤルが解放されたときに発生し得る。ロボットユニット３１０は、ジョグコマンド３３８をリアルタイムで受信および実行し、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、運動に対する軌道を事前に計画することができない。
【０１２１】
フローは、衝突チェックスレッド５２２およびジョグ操作スレッド５２４のリアルタイム並列処理のために、それぞれ、モデル更新モジュール５０６および計算制限モジュール５１０に進み得る。並列処理とは、制御フローの両方のパスが並行してまたは同時に実行されていることを指す。並列処理とは、制御フローの両方のパスが順次機能する必要がないことを指す。リアルタイムとは、命令のそのインスタンスの完了またはその命令の終了のための手動呼び出し前の、ロボットユニット３１０の手動操作のための命令の処理を指す。具体例として、ジョグコマンド３３８に対するリアルタイム並列処理は、ジョグコマンド３３８のそのインスタンスの呼び出しから始まり、ジョグコマンド３３８の同じインスタンスの完了前、またはジョグコマンド３３８の同じインスタンスに対する終了コマンド５３０の呼び出し前の、衝突チェックスレッド５２２およびジョグ操作スレッド５２４を介した、ジョグコマンド３３８のそのインスタンスの並列処理を指す。
【０１２２】
モデル更新モジュール５０６は、ジョグコマンド３３８の過去の呼び出しに基づいて、かつ、環境モデル５２６を更新または修正する必要があるように追加情報が収集された場合に、環境モデル５２６を更新し得る。例えば、環境モデル５２６は、衝突を含み得る、動作環境３２４に変化があることを示す、センサユニット２３０からのセンサ読み取り値２４６に基づく新しい外部センサ情報が受信された場合に更新され得る。環境モデル５２６はまた、所定の間隔に従って更新され得る。所定の間隔は、いくつかの方法で設定または決定され得る。例えば、所定の間隔は、センサユニット２３０のための異なるセンサのデフォルトサンプリング周波数に基づき得る。また、例えば、環境モデル５２６を更新することは、ロボットシステム３００にとってリソースを大量に消費し得るため、所定の間隔は、指定され得る。さらに、例えば、所定の間隔はまた、動作環境３２４の複雑さに基づき得、環境モデル５２６をより頻繁に更新するために非常に動的であり得る。さらに、例えば、手動操作は、ミリ秒の時間枠と比較してそれほど迅速に反応することができないので、所定の間隔は、秒のオーダーであり得る。フローは、衝突チェックモジュール５０８に進み得る。
【０１２３】
さらに、モデル更新モジュール５０６は、ロボットユニット３１０、ロボットシステム３００、またはそれらの組み合わせに対する、外部システムから受信した情報で環境モデル５２６を更新し得る。情報は、動作環境３２４におけるアイテム１２６の可動タイプに関連付けられている。一例として、動作環境３２４のための情報は、環境モデル５２６において表され得、バイナリ情報である。具体例として、ドア３３６のセンサ位置から受信した情報またはドア３３６のための情報は、ドア３３６が開いているか、または閉じているかを示す。この例では、情報は、外部センサから受信した情報に基づいて、単に「開」または「閉」および位置、ならびに「開」位置および「閉」位置にあるドア３３６の位置としてバイナリであり得る。一例として、環境モデル５２６は、動作環境３２４の近似値を提供し、正確または厳格な表現である必要はない。外部システムからの情報の例は、周辺センサなどの外部センサからの情報、アクチュエータ読み取り値、または動作環境３２４における他の可動タイプのアイテム１２６または他のロボットの位置またはポーズを示すジョイント値、ジョイント／サーボの角度／位置／速度を監視する３次元カメラ、エンコーダを含み得る。
【０１２４】
一例として、外部システムからの通知は、リアルタイムで受信される必要はなく、制御間隔４７２の１つまたは２つのインスタンスのオーダーなど、わずかに遅延され得る。言い換えれば、環境モデル５２６のあらゆる態様への更新は、制御間隔４７２のすべてのインスタンスで発生する必要はない。環境情報を提供する外部システムは、動作環境３２４に変更があったとしても、遅れるか、または制御間隔４７２のうちの１つよりも大きい期間を有し得る。外部システムは、ジョギングコントローラとしての機能を提供するコントローラ３１２に変更を報告するのに時間がかかる場合がある。また、例えば、ドア３３６の開閉は、バイナリ情報として提供されるので、ドア３３６が閉じている途中であっても、外部報告システムは、ドア３３６がまだ部分的に開いていても、ドア３３６を閉じているとまだ報告し得るか、または制御間隔４７２の１つまたは複数のインスタンスを取り、ドア３３６が実際に閉じていることを登録および報告し得る。ロボットシステム３００は、外部システムとインターフェースして様々なタイプのセンサと連動し得るアプリケーションプログラミングインターフェース（ＡＰＩ）を提供し得る。
【０１２５】
衝突チェックモジュール５０８は、潜在的な衝突のリアルタイムの判定を実施する。例えば、衝突を回避するために、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、ジョグコマンド３３８の呼び出しが衝突をもたらし得るかどうかを決定し得る。
【０１２６】
一例として、ロボットユニット３１０のジョギングモード中に、ロボットシステム３００は、エラー、および特に、ロボットユニット３１０と環境モデル５２６におけるアイテム１２６との間の衝突につながるエラーを防止または軽減するための方法を提供するリアルタイム衝突チェック機構を含み得る。具体例として、手動ジョギング動作中に、オペレータまたはユーザは、ロボットユニット３１０を制御する際に、例えば、ロボットユニット３１０に逆方向に移動するように命令する意図がある場合に、ロボットユニット３１０が前進するためのジョグコマンド３３８に対するユーザインターフェース２１６上の制御部を誤って押すなど、間違いを犯し得る。
【０１２７】
衝突チェックモジュール５０８は、いくつかの方法で潜在的な衝突を判定し得る。例えば、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、ロボットモデル５２８、センサ読み取り値２４６、またはそれらの組み合わせを利用して、環境モデル５２６内のアイテム１２６のいずれかの近接がバッファゾーン４６２を通過するか、または横切るかどうかを判定し得る。衝突チェックモジュール５０８はまた、ジョグコマンド３３８が、図１の衝突１２８が発生した経路に沿ったロボットユニット３１０の移動、ロボットモデル５２８のバッファゾーン４６２の継続的なトラバーサル、またはそれらの組み合わせが、衝突１２８につながることを指示するかどうかを判定し得る。そうである場合、衝突１２８の可能性があり、フローは、コマンドフラグモジュール５１２に移動し得る。
【０１２８】
また、例えば、ロボットモデル５２８は、前に説明したように、環境モデル５２６において捕捉されたような動作環境３２４の複雑さに基づいて、センサユニット２３０の数、タイプ、位置、またはそれらの組み合わせを表すセンサ読み取り値２４６に対する粒度または数を含み得る。具体的な例として、ロボットモデル５２８は、前述のように、バッファゾーン４６２の第１のバッファから第５のバッファなどのセグメントの数に対する次元を表すセンサ読み取り値２４６を含み得る。動作環境３２４内のいずれかのアイテムが、監視されている第１のバッファから第５のバッファを含む閾値のいずれかを横断する場合、およびジョグコマンド３３８が、衝突の経路に沿ったロボットユニット３１０の移動、ロボットモデル５２８のバッファゾーン４６２の継続的なトラバーサル、またはそれらの組み合わせが衝突をもたらすことを指示する場合、衝突の可能性があり、フローは、コマンドフラグモジュール５１２に移動し得る。
【０１２９】
例としての実施形態は、ロボットモデル５２８に、バッファゾーン４６２の閾値距離４６４、またはロボットユニット３１０の物理的測定値よりも大きい閾値距離４６４を提供して、衝突チェック計算が完了する余分な時間の利点を提供し、処理時間、帯域幅、またはそれらの組み合わせを削減することにより、動作の効率、および潜在的な衝突を検出する効率を改善し、衝突の誤検出を回避することが発見された。バッファゾーン４６２が動作環境３２４内のアイテム１２６と衝突しているとしても、ロボットユニット３１０自体は、依然として衝突がない場合がある。
【０１３０】
例としての実施形態は、ロボットユニット３１０の周りのバッファゾーン４６２をサイズ決定またはサイズ変更することができることによって、潜在的な衝突を検出する効率を改善することも発見された。ロボットモデル５２８は、環境モデル５２６によって表される動作環境３２４のより複雑ではないものに対し、バッファゾーン４６２をより大きくするように含み得、それにより、ロボットユニット３１０の運動を妨げ得る動作環境３２４内にアイテム１２６の数が非常に少ないか、または全くない場合に、バッファゾーン４６２のトラバースのための処理時間を短縮する。一方、ロボットモデル５２８は、環境モデル５２６によって表されるより動作環境３２４のより複雑なタイプに対し、バッファゾーン４６２をより小さくするか、または閾値距離４６４を低減するように含み得、それにより、ロボットユニット３１０の運動を妨げ得る動作環境３２４内に多数のアイテム１２６が存在する場合に、ロボットユニット３１０の移動を過度に制約しないだけでなく、バッファゾーン４６２のトラバーサルのための処理時間を短縮する。
【０１３１】
動作環境３２４内のアイテム１２６のインスタンスが、バッファゾーン４６２、すなわち、より具体的な例として、監視されている第１のバッファから第５のバッファのいずれかを横切る場合、およびアイテム１２６のそのインスタンスが、動作環境３２４に対する環境モデル５２６にまだ見つからない場合、モデル更新モジュール５０６は、追加情報で環境モデル５２６を更新し得る。追加情報はまた、コマンドフラグモジュール５１２に渡され得る。
【０１３２】
ロボットシステム３００、コントローラ３１２、センサユニット２３０、またはそれらの組み合わせが、バッファゾーン４６２のトラバーサルを検出しないか、またはジョグコマンド３３８のパスが、衝突１２８をもたらさない場合、ジョグコマンド３３８は、動作環境３２４において、既知または未知のアイテム１２６との衝突１２８をもたらさないと判定される。この状況では、フローは、コマンド確認モジュール５１４に移動し得る。
【０１３３】
例示の目的のために、ロボットシステム３００は、バッファゾーン４６２のトラバーサルおよびジョグコマンド３３８のパスに基づいて、衝突１２８をもたらし得るジョグコマンド３３８のインスタンスを判定するように説明されるが、ロボットシステム３００は、異なって動作し得る。例えば、ロボットシステム３００、コントローラ３１２、ロボットユニット３１０、センサユニット２３０、またはそれらの組み合わせは、判定の一部として、ロボットユニット３１０のパスをトラバースすることなく、ジョグコマンド３３８に対して衝突１２８の潜在的な発生を判定し得る。この例では、バッファゾーン４６２のトラバーサルだけで、ジョグコマンド３３８に基づく衝突１２８または潜在的な衝突を示し得る。この例を続けると、ロボットシステム３００、コントローラ３１２、ロボットユニット３１０、センサユニット２３０、またはそれらの組み合わせは、ジョグコマンド３３８に基づくパスが衝突または潜在的な衝突の判定に含まれないように、バッファゾーン４６２または第１のバッファから第５のバッファのいずれかをサイズ変更し得る。
【０１３４】
コマンドフラグモジュール５１２を続けると、コマンドフラグモジュール５１２は、バッファゾーン４６２または監視されている第１のバッファから第５のバッファまでのセグメントのうちのいずれか１つのトラバーサルに基づいて、ロボットユニット３１０に行動を提供する。コマンドフラグモジュール５１２は、いくつかの行動を取り得る。
【０１３５】
例えば、コマンドフラグモジュール５１２は、警告を生成することを提供し得る。警告は、ユーザインターフェース２１６に配信され得る。警告は、ユーザインターフェース２１６への触覚フィードバック、音声フィードバック、表示フィードバック、またはそれらの組み合わせを含み得、ジョグコマンド３３８の呼び出しを中止すること、終了コマンド５３０を呼び出すこと、またはそれらの組み合わせをユーザに通知する。警告は、センサユニット２３０の近接読み取り値によって検出されたアイテム１２６に関する情報を含み得る。警告は、図４の第１のセンサから図４の第５のセンサまでのセンサユニット２３０のうちのどれが、それぞれ、第１のバッファから第５のバッファの近接トラバーサルを検出したかを提供し得る。警告はまた、動作環境３２４に対する環境モデル５２６には見られない、検出されたアイテム１２６のいずれかのための情報を提供し得る。
【０１３６】
また、例えば、コマンドフラグモジュール５１２はまた、警告の生成および配信の代わりに、その前に、その間に、またはその後に、ジョグコマンド３３８を終了し得る。ロボットシステム３００、ロボットユニット３１０、コントローラ３１２、またはそれらの組み合わせが、ジョグコマンド３３８を終了する必要性を判定し得る状況があり得る。
【０１３７】
説明のために、図５に示される制御フローの例は、コマンドフラグモジュール５１２で終了するフローを描写しているが、ロボットシステム３００、コントローラ３１２、ロボットユニット３１０、またはそれらの組み合わせは、異なって機能し得ることを理解されたい。例えば、フローは、ジョグコマンド３３８の警告または終了のオーバーライドを可能にし得る。また、例えば、フローは、アイテム１２６が除去されることを可能に得、ジョグコマンド３３８が継続することを可能にし、フローは、コマンド確認モジュール５１４に進み得る。
【０１３８】
コマンド確認モジュール５１４は、処理されているジョグコマンド３３８がロボットシステム３００、コントローラ３１２、ロボットユニット３１０、センサユニット２３０、またはそれらの組み合わせによって衝突がないと判定された、障害物のないステータス５３２を生成し得る。コマンド確認モジュール５１４は、ジョグコマンド３３８が、ジョグコマンド３３８の一部ではない、ロボットユニット３１０の一部分によるロボットユニット３１０の別の部分への不慮の物理的接触を含む、環境モデル５２６によって提供されるような動作環境３２４内のロボットユニット３１０による衝突１２８をもたらさない場合に、障害物のないステータス５３２を判定し得る。フローは、コマンド転送モジュール５１６に進み得る。
【０１３９】
計算制限モジュール５１０に戻ると、計算制限モジュール５１０は、衝突チェックスレッド５２２を介する衝突チェック機能が衝突チェック時間制限５３４を超えたかどうかを判定し得る。一例として、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、制御間隔４７２で、ジョグコマンド３３８などの命令またはコマンドをロボットユニット３１０に提供し得る。制御間隔４７２は、コマンドがロボットユニット３１０に送信される頻度を表す。制御間隔４７２の各々に対する値は、ロボットユニット３１０の異なるタイプまたはロボットユニット３１０のための異なる構成に対して異なり得る。例えば、ロボットシステム３００、コントローラ３１２、ユーザ、またはそれらの組み合わせは、２ミリ秒（ｍｓ）、４ｍｓ、または６ｍｓなどの異なる期間へのいくつかの動作に対する制御間隔４７２の値を構成し得る。また、例えば、他の動作に対しては、制御間隔４７２は修正されることができるできない。
【０１４０】
制御間隔４７２が２ミリ秒である値の場合の例として、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、２ｍ間隔でジョグコマンド３３８に対するジョギング命令を送信し得る。ジョグコマンド３３８は、一例として、ロボットユニット３１０に対してジョイント３４２または図２の作動ユニット２２０に対する値を計算するために、ジョグ操作スレッド５２４に送信され得、これは、オペレータ／ユーザによる制御またはコマンド入力に応じて、２ミリ秒ごとの、方向、位置、速度４６６、またはその組み合わせに対する命令を含み得る。計算は、ジョギング命令またはジョグコマンド３３８に従うように移動するジョイント３４２のすべてのインスタンスに対して実施される。例えば、ジョグコマンド３３８がリンク３４０のうちの１つを、ある方向に移動させることである場合、その運動を発生させるために、ジョイント３４２の各々に対してジョイント値を計算する必要がある。ジョイント値は、ジョグコマンド３３８を実行するために実際に移動するジョイント３４２の各々に対して計算され得る。
【０１４１】
例を続けると、動作環境３２４におけるロボットユニット３１０とアイテム１２６との間の衝突１２８を防止するために、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、制御間隔４７２の各々の間、並列して衝突チェックスレッド５２２でリアルタイム衝突チェックを実施し得る。
【０１４２】
また、例えば、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、衝突チェックを実施して、制御間隔４７２の現在のインスタンスに対するジョグコマンド３３８が衝突をもたらさないことを検証し得る。衝突が発生した場合、ロボットシステム３００、コントローラ３１２、衝突チェックモジュール５０８、コマンドフラグモジュール５１２、またはそれらの組み合わせは、ジョグコマンド３３８を拒否するか、ジョギング動作を終了するか、またはそれらの組み合わせを行い得る。
【０１４３】
例えば、ロボットシステム３００、コントローラ３１２、衝突チェックスレッド５２２、またはそれらの組み合わせが、制御間隔４７２の１つのインスタンスにおいて、例えば、衝突チェックモジュール５０８で、衝突チェックを完了し得ない場合、計算制限モジュール５１０は、ジョグコマンド３３８に対する不完全な衝突チェックを判定し得、フローは、コマンドフラグモジュール５１２に進み得る。一例として、動作環境３２４、環境モデル５２６、またはそれらの組み合わせの複雑さは、処理帯域幅の制限のために、不完全な衝突チェックにつながり得る。
【０１４４】
不完全な衝突チェックが、ジョグコマンド３３８に基づくジョギング動作の終了を生じさせる状況を回避するために、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、衝突チェック、モデル更新モジュール５０６での環境モデリングもしくは更新、またはそれらの組み合わせに特化した衝突チェックスレッド５２２を動作させ、それは、ジョグ操作スレッド５２４とは別個または独立しており、並列である。
【０１４５】
具体例として、ロボットユニット３１０の周りの動作環境３２４は、頻繁に変化せず、制御間隔４７２のすべてのインスタンスの間に更新される必要はない。ジョグコマンド３３８を受信するロボットユニット３１０は、環境モデル５２６が、衝突チェック中にも使用され、動作環境３２４に関してロボットユニット３１０も考慮するので、環境モデル５２６の一部として含まれ得る。
【０１４６】
別の例では、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、開閉し得る図３のドア３３６、または他の移動ロボットなどの動的物体を有する、より複雑である動作環境３２４において動作し得、環境モデル５２６は、衝突チェックモジュール５０８による衝突チェック計算が、完了するために制御間隔４７２の複数のインスタンスを取ることができるように、より複雑であり得る。制御間隔４７２の単一のインスタンス内で衝突チェック計算が完了しない状況では、ロボットシステム３００、コントローラ３１２、ユーザインターフェース２１６、またはそれらの組み合わせは、計算制限モジュール５１０によって判定されるように、衝突チェック時間制限５３４に達するまで、ジョグコマンド３３８をロボットユニット３１０に提供し続け得る。
【０１４７】
例を続けると、衝突チェック時間制限５３４は、例えば、４ｍｓすなわち制御間隔４７２の２つのインスタンス、または６ｍｓすなわち制御間隔４７２の３つのインスタンスとしての合計期間など、可能な衝突が発生し得るまでの制御間隔４７２の数であり得る。いくつかの実施形態では、衝突チェック時間制限５３４は、ロボットユニット３１０に対するロボットモデル５２８に基づき得る。衝突チェックスレッド５２２からの障害物のないステータス５３２に対する応答を伴わずに、衝突チェック時間制限５３４に達した場合、ロボットシステム３００、コントローラ３１２、またはそれらの組み合わせは、衝突が発生すると判定し、ジョグコマンド３３８に対するジョギング動作を終了し、フローは、コマンドフラグモジュール５１２に進み得る。
【０１４８】
例としての実施形態は、ロボットユニット３１０に取り付けられたセンサユニット２３０の使用を通じて、ロボットシステム３００の効率を改善し、ロボットユニット３１０による衝突１２８を正確かつ確実に回避することがさらに発見された。センサユニット２３０は、バッファゾーン４６２によって生成された近接範囲の任意のトラバーサルを示すセンサ読み取り値２４６を提供するための近接センサを含み得る。衝突チェックモジュール５０８による衝突分析は、２ミリ秒などの短い時間枠で、または計算制限モジュール５１０によって判定された衝突チェック時間制限５３４内で実施されるので、センサ読み取り値２４６からの情報は、リアルタイムで、かつ非常に短い時間で処理される。実施形態は、３次元点群情報に基づく詳細な視覚情報、および環境モデル５２６に対するアイテム１２６の位置などの詳細なモデルを必要としない。実施形態は、ロボットユニット３１０、リンク３４０、ジョイント３４２、またはそれらの組み合わせに取り付けられた近接センサとしてセンサユニット２３０を使用して、アイテムがジョギング経路に存在するかどうかを判定することによって動作する。カメラはまた、衝突または潜在的な衝突、環境モデル５２６内の情報を検証するため、または環境モデル５２６を更新するための視覚的確認または追加の検証として使用され得る。
【０１４９】
例としての実施形態は、環境モデル５２６およびロボットモデル５２８を動的に更新することによって、ロボットユニット３１０の手動操作の機能を改善することがさらに発見された。動作環境３２４が変更されると、実施形態は、バッファゾーン４６２へのトラバーサルを検出し得、アイテムが予測されない場合、環境モデル５２６は、バッファゾーン４６２のトラバーサルに基づいて更新され得る。環境モデル５２６は、動作環境３２４内のアイテム１２６の同じまたは異なるインスタンスに対する、バッファゾーン４６２またはバッファゾーン４６２のセグメントの追加のトラバーサルによって、追加情報が受信されると、改良され続けられ得る。
【０１５０】
例としての実施形態は、衝突チェックスレッド５２２およびジョグ操作スレッド５２４をリアルタイムで並列処理することにより、ロボットユニット３１０の手動操作の機能および効率を改善することがさらに発見された。リアルタイム衝突チェックは、衝突チェックを実施しながら、ロボットシステム３００にジョグコマンド３３８を提供し続けるという利点をロボットユニット３１０に提供し、これは、衝突チェック計算の計算期間が制御間隔４７２のインスタンスを超えた場合でも、ロボットユニット３１０の周辺の動作環境３２４、および動作環境３２４に対するロボットユニット３１０自体を記述する環境モデル５２６を生成することまたは更新することを含み得る。例えば、動作環境３２４が、ロボットユニット３１０と壁との間の距離が大きい空の部屋または静的環境など、かなりの数の障害物またはアイテム１２６を含まない状況では、衝突チェックスレッド５２２は、環境モデル５２６を生成すること、および制御間隔４７２のうちの１つ以内で衝突チェック計算を実施することを行いやすくなり得る。
【０１５１】
フローは、計算制限モジュール５１０からコマンド転送モジュール５１６に進み得る。コマンド転送モジュール５１６は、呼び出されているジョグコマンド３３８がロボットユニット３１０によって処理され続け得ると判定する。一例として、コマンド転送モジュール５１６は、呼び出されているジョグコマンド３３８が、衝突チェックスレッド５２２、衝突チェックモジュール５０８、またはそれらの組み合わせが、分析されているジョグコマンド３３８に基づくロボットユニット３１０の移動は衝突がないものであると判定することを、コマンド確認モジュール５１４によって確認されたと判定する。
【０１５２】
例を続けると、コマンド転送モジュール５１６は、障害物のないステータス５３２に基づいて、ジョグコマンド３３８が衝突がないものであると判定し得る。コマンド転送モジュール５１６は、ジョグ操作スレッド５２４が衝突チェック時間制限５３４に達する前に、衝突チェックスレッド５２２によって提供される障害物のないステータス５３２に基づく実行のために、ジョグコマンド３３８をロボットユニット３１０に送信し得る。フローは、モードチェックモジュール５１８に進み得る。
【０１５３】
モードチェックモジュール５１８は、ロボットシステム３００、コントローラ３１２、ロボットユニット３１０がまだ手動操作モードにあるかどうかを判定する。モードチェックモジュール５１８は、ロボットユニット３１０が別の手動コマンドまたはジョグコマンド３３８の別の呼び出しを受け入れ得るかどうかを判定する。そうである場合、フローは、コマンド受信モジュール５０４にループバックする。そうでない場合、フローは、モード終了モジュール５２０に進み得る。
【０１５４】
モード終了モジュール５２０は、ロボットユニット３１０の手動操作を禁止する。例えば、モード終了モジュール５２０は、手動コマンドの実行、またはユーザインターフェース２１６によって提供されるジョグコマンド３３８のさらなる呼び出しを拒否または防止し得る。
【０１５５】
例示の目的のために、制御フローは、モジュールの分割およびモジュールの各々に対する機能とともに図５に記載されているが、制御フローは、異なって動作および構成され得ることを理解されたい。例えば、ロボットモデル５２８の生成は、デフォルト設定に設定し得、モデル生成モジュール５０２で生成される必要はない。また、例えば、コマンドフラグモジュール５１２は、モードチェックモジュール５１８に流れて、次の手動操作コマンドを受け入れるために移動し得る。
【０１５６】
ここで図６を参照すると、本発明の一実施形態におけるロボットシステム３００の動作の方法６００のフローチャートが示されている。方法６００は、ブロック６０２において、ロボットユニットを手動で動作させるためのジョグコマンドを受信することと、ジョグコマンドをリアルタイム並列処理することと、衝突チェックスレッドを実行して、環境モデルとロボットモデルに基づいて、ジョグコマンドが、動作環境内のロボットユニットに対する衝突をもたらすか、または障害物のないステータスをもたらすかどうかを判定することと、ブロック６０４において、ジョグ操作スレッドを実行して、障害物のないステータスが衝突チェック時間制限内に提供されるかどうかを判定することと、ブロック６０６において、衝突チェック時間制限の前に提供された障害物のないステータスに基づいて、ロボットユニットによってジョグコマンドを実行することと、を含む。
【０１５７】
方法６００は、ロボットユニットを取り囲むバッファゾーンを含む、ロボットユニットを表すロボットモデルを生成することと、ロボットユニットを含む動作環境を表す環境モデルを生成することと、をさらに含み、衝突チェックスレッドを実行して、ジョグコマンドが衝突をもたらすかどうかを判定することは、バッファゾーンに進入する環境モデル内のアイテムの表現を判定することを含む。
【０１５８】
方法６００は、衝突チェックスレッドを実行して、ジョグコマンドが衝突をもたらすかどうかを判定することは、動作環境に対する環境モデルに含まれるアイテムの表現を伴わないバッファゾーンをトラバースすることを含み、アイテムの表現で環境モデルを更新することをさらに含む。
【０１５９】
方法６００は、動作環境を非複雑として表す環境モデルに基づいて、バッファゾーンをサイズ変更することをさらに含む。
【０１６０】
方法６００は、ロボットユニットのロボットモデルを生成することをさらに含み、ロボットモデルは、ロボットユニットを取り囲むバッファゾーンを含み、ロボットユニットをモデル化することは、リンクおよびジョイントをモデル化することと、リンクおよびジョイントのための第１のバッファをモデル化することと、を含み、衝突チェックスレッドを実行して、ジョグコマンドが衝突をもたらすかどうかを判定することは、環境モデル内のアイテムが第１のバッファに進入すると判定することを含む。
【０１６１】
方法６００は、動作環境に対して環境モデルを複雑なものとして生成することと、環境モデルが複雑であることに基づいて、バッファゾーンのサイズを縮小することと、をさらに含む。
【０１６２】
方法６００は、障害物のないステータスが衝突チェック時間制限の前に提供されないことに基づいて、ロボットユニットによってジョグコマンドを終了することをさらに含む。
【０１６３】
結果としてもたらされる方法、プロセス、装置、デバイス、製品、および／またはシステムは、費用対効果が高く、非常に用途が広く、正確で、感度が良く、効率的であり、かつ既知の構成要素を、迅速、効率的、かつ経済的な製造、用途、および利用に対して適合させることによって実施され得る。本発明の実施形態の別の重要な態様は、実施形態が、コストを削減し、システムを簡素化し、かつパフォーマンスを向上させるという歴史的傾向を有用に支持し、かつこれに応えるということである。
【０１６４】
本発明の実施形態のこれらの有用な態様およびその他の有用な態様は、結果として、技術の状態を少なくとも次の水準へと前進させる。
【０１６５】
本発明は、特定の最良の形態と併せて説明されてきたが、前述の説明に照らして、多くの代替、修正、および変形が当業者には明らかであることを理解されるべきである。したがって、含まれる特許請求の範囲内にあるそのようなすべての代替、修正、および変形を包含することが意図されている。本明細書に記載されている、または添付の図面に示されているすべての事項は、例示的かつ非限定的な意味で解釈されるべきである。
【要約】
【課題】手動操作のための衝突回避機構を備えたロボットシステムに対する必要性が依然として残っている。
【解決手段】ロボットシステムは、ロボットユニットを手動で動作させるためのジョグコマンドを受信するように構成されたユーザインターフェースと、ユーザインターフェースに結合された制御ユニットと、を含む。制御ユニットは、ジョグコマンドをリアルタイム並列処理することを行い、これは、衝突チェックスレッドを実行して、環境モデルおよびロボットモデルに基づいて、ジョグコマンドが、動作環境内のロボットユニットに対する衝突をもたらすか、又は障害物のないステータスをもたらすかどうかを判定することと、ジョグ操作スレッドを実行して、障害物のないステータスが衝突チェック時間制限内に提供されるかどうかを判定することと、を含む。また、制御ユニットは、衝突チェック時間制限前に提供された障害物のないステータスに基づいて、ロボットユニットによるジョグコマンドを実行する。
【選択図】図６【図１】
0006839881.tif 000002
【図２】
0006839881.tif 000003
【図３】
0006839881.tif 000004
【図４】
0006839881.tif 000005
【図５】
0006839881.tif 000006
【図６】
0006839881.tif 000007