(57)【特許請求の範囲】
【請求項１】
ロボット上の基準物体の知られているポジションに基づいて、前記ロボットに取り付け点で接続されたツールが前記ロボット上の前記基準物体に向かうように当該ロボットを動かすステップと、
前記ツールが第１の接触イベント中に前記ロボット上の前記基準物体に接触したことを決定するステップと、
前記ツールが前記第１の接触イベント中に前記ロボット上の前記基準物体に接触するときに、前記ロボットのポジションを示すロボットポジションデータを受信するステップと、
前記ロボット上の前記基準物体の前記ポジションおよび前記ロボットポジションデータに少なくとも基づいて、前記取り付け点と前記ツール上の少なくとも１つの点との間の距離を記述する前記ツールについてのツールオフセットデータを決定するステップと
前記ツールを前記基準物体に接触させることによって複数の異なるロボットポジションに対応する複数の接触イベントを反復して引き起こさせるステップと、
前記複数の接触イベントに対応する前記複数の異なるロボットポジションを示すロボットポジションデータを受信するステップと、
受信した前記ロボットポジションデータに基づいて前記ツールの３次元モデルを決定するステップと
を含む方法。
【請求項２】
前記基準物体は、予め決定された向きおよび予め決定されたポジションに第１の平坦面を有する厚板であり、前記ツールが前記第１の接触イベント中に前記厚板の前記第１の平坦面に接触する、請求項１に記載の方法。
【請求項３】
前記ロボットは、基部の頂部にロボットアームを備え、
前記ロボット上の前記基準物体は、前記基部に接続されている、請求項１又は２に記載の方法。
【請求項４】
前記基準物体は、第１の平坦面および第２の平坦面を有し、前記第１の平坦面は、前記第２の平坦面に対してある角度で位置している、請求項１に記載の方法。
【請求項５】
前記ツールオフセットデータは、第１の方向の第１の距離と、前記第１の方向に直交する第２の方向の第２の距離と、前記第１の方向と前記第２の方向の両方に直交する第３の方向の第３の距離とを含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
第２の接触イベント中に前記ツールが前記基準物体に接触するように前記ロボットを制御するステップと、
前記第２の接触イベント中に前記ツールが前記基準物体に接触するときに、前記ロボットのポジションを示すロボットポジションデータを受信するステップと、
前記ロボット上の前記基準物体の前記ポジション、前記第１の接触イベント中に受信した前記ロボットポジションデータ、および前記第２の接触イベント中に受信した前記ロボットポジションデータに少なくとも基づいて前記ツールについてのツールオフセットデータを決定するステップと
をさらに含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記ツールについてのツールオフセットデータは、前記取り付け点と前記ツール上の複数の点との間の各距離を記述する、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記ロボット上の力センサから力検知データを受信するステップと、
前記力検知データに基づいて、前記ロボットが前記ツールを前記基準物体に接触させたことを決定するステップと、
前記ロボットが前記ツールを前記基準物体に接触させたとの決定に応じて、前記ロボットに前記ツールの移動を停止させるステップと
をさらに含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記ツール上の少なくとも１つの点についての前記ツールオフセットデータに少なくとも基づいて前記ツールの形状を決定するステップと、
決定した前記ツールの形状に基づいて前記ツールについてのツールのタイプを決定するステップと
をさらに含む、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記ロボットポジションデータは、前記ロボットのエンコードされた関節角に少なくとも基づいて決定される、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
１つまたは複数のコンピューティング装置によって実行可能である命令を記憶する非一時的なコンピュータ可読媒体であって、前記命令の実行によって、
ロボット上の基準物体の知られているポジションに基づいて、前記ロボットに取り付け点で接続されたツールが前記ロボット上の前記基準物体に向かうように当該ロボットを動かすこと、
前記ツールが第１の接触イベント中に前記ロボット上の前記基準物体に接触したことを決定すること、
前記ツールが前記第１の接触イベント中に前記ロボット上の前記基準物体に接触するときに、前記ロボットのポジションを示すロボットポジションデータを受信すること、
前記ロボット上の前記基準物体の前記ポジションおよび前記ロボットポジションデータに少なくとも基づいて、前記取り付け点と前記ツール上の少なくとも１つの点との間の距離を記述する前記ツールについてのツールオフセットデータを決定すること、
前記ツールを前記基準物体に接触させることによって複数の異なるロボットポジションに対応する複数の接触イベントを反復して引き起こさせること、
前記複数の接触イベントに対応する前記複数の異なるロボットポジションを示すロボットポジションデータを受信すること、
受信した前記ロボットポジションデータに基づいて前記ツールの３次元モデルを決定すること、
を含む機能を、前記１つまたは複数のコンピューティング装置に実行させる、非一時的なコンピュータ可読媒体。
【請求項１２】
前記基準物体は、予め決定された向きおよび予め決定されたポジションに第１の平坦面を有する厚板であり、前記ツールが前記第１の接触イベント中に前記厚板の前記第１の平坦面に接触する、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記ロボットは、基部の頂部にロボットアームを備え、
前記ロボット上の前記基準物体は、前記基部に接続されている、請求項１１又は１２に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記基準物体は、第１の平坦面および第２の平坦面を有し、前記第１の平坦面は、前記第２の平坦面に対してある角度で位置している、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
前記ロボットポジションデータは、前記ロボットのエンコードされた関節角に少なくとも基づいて決定される、請求項１１から１４のいずれか一項に記載の非一時的なコンピュータ可読媒体。
【請求項１６】
プロセッサと、
命令を記憶するメモリと
を備えるシステムであって、
前記命令は、前記プロセッサによって実行されるときに、
ロボット上の基準物体の知られているポジションに基づいて、前記ロボットに取り付け点で接続されたツールが前記ロボット上の前記基準物体に向かうように当該ロボットを動かすこと、
前記ツールが第１の接触イベント中に前記ロボット上の前記基準物体に接触したことを決定すること、
前記ツールが前記第１の接触イベント中に前記ロボット上の前記基準物体に接触するときに、前記ロボットのポジションを示すロボットポジションデータを受信すること、
前記ロボット上の前記基準物体の前記ポジションおよび前記ロボットポジションデータに少なくとも基づいて、前記取り付け点と前記ツール上の少なくとも１つの点との間の距離を記述する前記ツールについてのツールオフセットデータを決定すること、
前記ツールを前記基準物体に接触させることによって複数の異なるロボットポジションに対応する複数の接触イベントを反復して引き起こさせること、
前記複数の接触イベントに対応する前記複数の異なるロボットポジションを示すロボットポジションデータを受信すること、
受信した前記ロボットポジションデータに基づいて前記ツールの３次元モデルを決定すること、
を含む機能を、前記システムに実行させる、システム。
【請求項１７】
前記基準物体は、予め決定された向きおよび予め決定されたポジションに第１の平坦面を有する厚板であり、前記ツールが前記第１の接触イベント中に前記厚板の前記第１の平坦面に接触する、請求項１６に記載のシステム。
【請求項１８】
前記ロボットは、基部の頂部にロボットアームを備え、
前記ロボット上の前記基準物体は、前記基部に接続されている、請求項１６又は１７に記載のシステム。
【請求項１９】
前記メモリは、前記プロセッサによって実行されるときに、
前記ロボットの接触電気回路のステータスが変化したことを決定すること、
前記決定されたステータスの変化に基づいて、前記ロボットが前記ツールを用いて前記基準物体に接触したことを決定すること、
前記ロボットが前記ツールを前記基準物体に接触させたとの決定に応じて、前記ロボットに前記ツールの移動を停止させること、
を含む機能を、前記システムにさらに実行させる命令を記憶している、請求項１６から１８のいずれか一項に記載のシステム。
【請求項２０】
前記ロボットポジションデータは、前記ロボットのエンコードされた関節角に少なくとも基づいて決定される、請求項１６から１９のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ロボットシステムは、とりわけマテリアルハンドリング、溶接、組立ておよび分配を伴う応用に使用され得る。時が経つにつれてこれらのロボットシステムが動作する仕方は、より知的に、より効率的に、およびより直感的になっている。ロボットシステムが現代生活の数多くの局面においてますます普及するにつれて、人間と一緒に動作するとともに人間との橋渡し役をすることができるロボットシステムの必要性が明らかになっている。したがって、そのようなロボットシステムの需要は、アクチュエータ、検知技術、コントローラ、ならびにコンポーネントの設計および組立てにおけるイノベーションの場を切り開くのに役立っている。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]  例示のシステムおよび方法は、ロボットに取り付けられたツールについてのツールオフセットデータの決定をもたらすことができる。ツールは、位置が知られている取り付け点でロボットに取り付けることができる。ロボットは、制御システムによって、ツールに基準物体と１回または複数回接触させるように制御を受けることができる。基準物体は、位置が知られている剛体の対象とすることができる。さらに、基準物体は、ツールが接触するための１つまたは複数の平坦面を知られている位置および向きに備えることができる。例えば、基準物体は、知られている位置と共に知られている向きでロボットに取り付けられた１つの平坦面を有する厚板であり得る。
【０００３】
[0003]  ロボットの力フィードバックセンサは、ツールが基準物体に接触したときを示すことができる。接触がなされると、ロボットは、ツールおよび／または基準物体への損傷を防ぐためにツールの移動を一時的に停止させることができる。制御システムは、ロボットのエンコードされた関節角に基づいてツールの接触中にロボットポジションデータを決定することもできる。次いで、ツールオフセットデータは、ロボットポジションデータおよびロボットに対しての基準物体のポジションに基づいて決定することもできる。ツールオフセットデータは、ツール上の１つまたは複数の点と取り付け点の間の距離を記述することができる。例えば、ツールオフセットデータは、ツールの高さを記述することができる。
【０００４】
[0004]  一例では、ロボットに対しての基準物体のポジションを決定するステップを含む方法が提供される。この方法は、ロボットに取り付け点で接続されたツールが第１の接触イベント中に基準物体に接触するようにロボットを制御するステップも含むことができる。上記方法は、ツールが第１の接触イベント中に基準物体に接触するときに、ロボットのポジションを示すロボットポジションデータを受信するステップをさらに含むことができる。上記方法は、ロボットに対しての基準物体のポジションおよびロボットポジションデータに少なくとも基づいて、取り付け点とツール上の少なくとも１つの点との間の距離を記述するツールについてのツールオフセットデータを決定するステップも含むことができる。
【０００５】
[0005]  追加の一例では、１つまたは複数のコンピューティング装置によって実行可能である命令を記憶する非一時的なコンピュータ可読媒体が提供される。この命令が実行されるとき、上記命令は、ロボットに対しての基準物体のポジションを決定することを含む機能を１つまたは複数のコンピューティング装置に実行させる。この機能は、ロボットに取り付け点で接続されたツールが第１の接触イベント中に基準物体に接触するようにロボットを制御することも含むことができる。上記機能は、ツールが第１の接触イベント中に基準物体に接触するときに、ロボットのポジションを示すロボットポジションデータを受信することも含むことができる。上記機能は、ロボットに対しての基準物体のポジションおよびロボットポジションデータに少なくとも基づいて、取り付け点とツール上の少なくとも１つの点との間の距離を記述するツールについてのツールオフセットデータを決定することも含むことができる。
【０００６】
[0006]  別の例では、プロセッサと、このプロセッサによって実行される命令を記憶するメモリとを備えるシステムが開示されている。実行されるときに、命令は、ロボットに対しての基準物体のポジションを決定することを含む機能をシステムに実行させる。この機能は、ロボットに取り付け点で接続されたツールが第１の接触イベント中に基準物体に接触するようにロボットを制御することも含むことができる。上記機能は、ツールが第１の接触イベント中に基準物体に接触するときに、ロボットのポジションを示すロボットポジションデータを受信することも含むことができる。上記機能は、ロボットに対しての基準物体のポジションおよびロボットポジションデータに少なくとも基づいて、取り付け点とツール上の少なくとも１つの点との間の距離を記述するツールについてのツールオフセットデータを決定することも含むことができる。
【０００７】
[0007]  さらなる一例では、システムは、ロボットに対しての基準物体のポジションを決定する手段も備えることができる。このシステムは、ロボットに取り付け点で接続されたツールが第１の接触イベント中に基準物体に接触するようにロボットを制御する手段も備えることができる。上記システムは、ツールが第１の接触イベント中に基準物体に接触するときに、ロボットのポジションを示すロボットポジションデータを受信する手段をさらに備えることができる。システムは、ロボットに対しての基準物体のポジションおよびロボットポジションデータに少なくとも基づいて、取り付け点とツール上の少なくとも１つの点との間の距離を記述するツールについてのツールオフセットデータを決定する手段も備えることができる。
【０００８】
[0008]  前述の発明の概要は、例示的なものに過ぎず、決して限定していることを意図していない。上記の例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、各図および以下の発明を実施するための形態および添付図面を参照することによって明らかになろう。
【図面の簡単な説明】
【０００９】
【図１】[0009]例示の実施形態によるロボットシステムの構成例を示す図である。
【図２Ａ】[0010]例示の実施形態による例示のロボティックアームを示す図である。
【図２Ｂ】[0011]例示の実施形態による別の例のロボティックアームを示す図である。
【図３Ａ】[0012]例示の実施形態による例示のエンドエフェクタおよび基準物体の平面図である。
【図３Ｂ】[0013]例示の実施形態による例示のエンドエフェクタおよび基準物体の側面図である。
【図４】[0014]例示の実施形態による例示の方法のブロック図である。
【発明を実施するための形態】
【００１０】
[0015]  例示の方法およびシステムが本明細書中に記載されている。本明細書中に記載された任意の例示の実施形態または特徴は、必ずしも他の実施形態または特徴よりも好ましいまたは有利であると解釈されるべきではない。本明細書中に記載された例示の実施形態は、限定していることを意図していない。本開示のシステムおよび方法のいくつかの態様は、幅広い種類の異なる構成に構成および組み合わせることができ、それらの全てが本明細書中で考えられていることを容易に理解されよう。
【００１１】
[0016]  さらに、図に示された特定の構成は、限定と見られるべきではない。他の実施形態は所与の図に示された各要素をより多くまたはより少なく備えてもよいことを理解されたい。さらに、例示された要素のいくつかは、組み合わされても、または省かれてもよい。またさらに、例示の実施形態は、図に示されていない要素を備えてもよい。
【００１２】
[0017]  タスクを実行するようにロボットを制御するための共通の問題は、ツールオフセットの決定である。例えば、ユーザは、１つまたは複数のタスクを実行するように取り付けられたツールまたはエンドエフェクタを備えたロボットを制御することを望む場合がある。ユーザは、実行されるタスクに基づいてあるタイプのツールをロボットに取り付けることができる。この場合には、ユーザは、選択したツールがロボットに取り付けられる取り付け点の位置を知ることができる。加えて、ユーザは、ロボットに取り付けられるツールのタイプを知ることもできる。
【００１３】
[0018]  しかしながら、ユーザは、取り付けられたツールの幾何学的形状に関しての知識を欠き得る。あるいは、ユーザは、取り付け点の位置をだいたい知るに過ぎない場合がある。どちらの筋書でも、ユーザは、ロボットおよび取り付けられたツールの制御を改善してタスクを実行するために、ツール上の点と取り付け点の間のオフセットを決定することを望む場合がある。オフセットは、ツール上の点と取り付け点の間の距離であり得る。場合によっては、オフセットは、ツール高さであり得る。あるいは、オフセットは、取り付け点とツール上の他の点の間の距離を記述することができる。ツールオフセットは、Ｘ方向、Ｙ方向、およびＺ方向の距離、ならびにシータなどの角度オフセットを含む様々な寸法を用いて記述することができる。
【００１４】
[0019]  典型的には、ツールオフセットは、タスクを実行するようにロボットおよび取り付けられたツールを精密かつ正確に制御するために、ユーザによってロボット制御システムに手入力される。しかしながら、ツールオフセットデータの手入力に関する問題の１つは、それがユーザにオフセットを正しく測定するように要求することである。別の問題は、ツールオフセットを精密かつ正確に測定する方法をユーザが知らなければならないことである。さらに別の問題は、ツールのオフセットが、ツールが使用されるにつれて時が経つと変化し得ることである（例えば、経時的なツールの曲がり、歪み、または摩滅）。したがって、ツールオフセットデータを決定するためにロボットによって実行される自動プロセスは、手動測定およびツールオフセットの決定に関連した問題をなくすことができる。
【００１５】
[0020]  ロボットは、ロボットにツールが取り付けられた後にツールオフセットデータを決定するための自動プロセスを実行することができる。まず、ロボットは、基準物体として働く剛体構造を特定することができる。次に、ロボットは、取り付けられたツールを基準物体に接触することができる。ロボットは、基準物体に接触する取り付けられたツールに基づいてロボットポジションデータを収集することができる。ロボットポジションデータに基づいて、ロボットは、ツールオフセットデータの一部を決定することができる。次いで、ロボットは、より多くのロボットポジションデータを取得するために、ツールを剛体の基準物体に反復して接触させ続けることができる。追加のロボットポジションデータに基づいて、ロボットは、ツール上の点についての追加のツールオフセットデータを決定することができる。いくつかの実施形態では、ロボットは、ツール上の複数の関心点についてのツールオフセットデータを決定するために、ツールを剛体の物体に反復して接触させることができる。一実施形態では、ロボットは、取り付けられたツールの３Ｄモデルを生成するのに十分なロボットポジションデータを蓄積するために、ツールを剛体の物体に反復して接触させることができる。
【００１６】
[0021]  基準物体は、ツールオフセットデータを決定するためにロボットポジションデータを蓄積するようにロボットが取り付けられたツールに接触することを可能にする剛体構造であり得る。基準物体は、知られている場所でロボットに取り付けることができる。例えば、基準物体は、ロボットに知られている位置で設けられた厚板であり得る。基準物体は、２つの面を有する厚板とすることができ、第１の基準物体表面は、第２の基準物体表面に対してある角度で設けられる。別に例については、基準物体は、ロボットに知られている位置で設けられたツーリングボールであり得る。基準物体は、基準物体がロボットの動作を妨げないような位置でロボットに配置することができる。代替として、基準物体は、遠隔位置にあってもよい（すなわち、ロボットになくてもよい）。基準物体の遠隔位置は、ロボットによって知ることができる。他の基準物体および基準物体の位置も可能である。ロボットに対しての基準物体の相対的位置は、ツールオフセットデータを決定するために、ロボットポジションデータと組み合わせて使用することができる。
【００１７】
[0022]  ロボットが基準物体に接触するときに、ロボットは、ロボットポジションデータを収集してツールオフセットデータを決定し、ロボット制御を改善することができる。ロボットポジションデータは、ロボット、ロボットアーム、ロボットツール、基準物体、および／またはロボットの他の部品のポジション、位置、および／または向きについて情報を与えることができる。例えば、ロボットは、ロボットのエンコードされた関節角に基づいて、接触中の取り付け点のポジションおよび角度向きを決定することができる。他の実施形態では、ロボットポジションデータは、他の情報を含むことができる。収集されたロボットポジションデータは、ツールオフセットデータの全部または一部を決定するために使用することができる。ＩＭＪなどのセンサは、ロボットポジションデータを取得するために使用することができる。センサは、ロボットに取り付けることができる。
【００１８】
[0023]  力検知データは、ロボットに設けられた力フィードバックセンサからロボットによって取得することができる。例えば、力フィードバックセンサは、ロボットツールが基準物体に接触したことを示す力検知データをもたらすことができる。この指示は、ロボットと基準物体の間の過度のおよび／または不要な接触を無にすることによってツールおよび／またはロボットへの損傷を防ぐことができる。力フィードバックセンサは、取り付け点に設けることができる。しかしながら、力フィードバックセンサの他の位置も可能である。センサは、力が取り付け点でロボットに及ぼされるときを示す精密かつ正確な測定値を与え、これは、取り付けられたツールと基準物体の間の接触を示す。力センサからの正確かつ精密な測定値は、ツールオフセットデータの正確かつ精密な決定を可能にする。
【００１９】
[0024]  ロボットは、様々なタイプのツールがロボットに取り付けられることを可能にすることができる。一実施形態では、ロボットは、シリンジ内に格納された流体を送達することを伴うタスクを実行するために、ロボットアームに取り付けられたシリンジを備える。シリンジツールについての関心点は、シリンジの針の先端であり得る。この点は、ロボットがシリンジ内に格納された流体を送達することを伴うタスクを実行するためにロボットアームおよび取り付けられたシリンジをどのように制御するのか決定することを可能にすることができる。
【００２０】
[0025]  ロボットに取り付けることができる別のツールは、２フィンガ平行グリッパであり得る。グリッパは、物体の持ち上げ、保持、および持ち下げを伴うタスクを実行することができる。グリッパのフィンガは、物体を握持および／または解放するように互いに向けておよび互いから離れるように関節動作することができる。グリッパは、グリッパを制御するために様々なグリッパ寸法を決定するための複数の関心点を有することができる。例えば、グリッパについての関心点は、各フィンガについての内面上の点、各フィンガについての外面上の点、フィンガの内面同士を接続するグリッパの内面上の点、および各フィンガについての内面と外面を接続する端面上の点を含むことができる。
【００２１】
[0026]  各フィンガについての内面上の点は、グリッパのフィンガの内側幅を決定するために使用することができる。各フィンガについての外面上の点は、グリッパのフィンガの外側幅を決定するために使用することができる。フィンガの内面同士を接続するグリッパの内面上の点、およびグリッパのフィンガの端面上の点は、グリッパのフィンガ長さを決定するために使用することができる。グリッパのフィンガ長さおよび内側幅は、どの物体をグリッパによってつかむことができるのかを決定するために使用することができる。グリッパは、これら２つの状態中のロボットポジションデータを蓄積するために最大内側幅と最小内側幅の間で作動することができる。次いで、ロボットポジションデータは、最大内側幅と最小内側幅を決定するために使用することができる。グリッパ上の他の関心点は、グリッパの他の寸法を計算するために決定することもできる。
【００２２】
[0027]  次に図を参照すると、図１は、ロボットシステム１００の構成例を示す。ロボットシステム１００は、ロボティックアーム、様々なタイプのロボティックマニピュレータとすることができ、またはそれは、いくつかの異なる形態を有することができる。加えて、ロボットシステム１００は、とりわけロボット装置、ロボティックマニピュレータ、またはロボットなどと呼ばれることもあり得る。
【００２３】
[0028]  ロボットシステム１００は、プロセッサ１０２と、データストレージ１０４と、プログラム命令１０６と、コントローラ１０８と、センサ１１０と、電源１１２と、アクチュエータ１１４と、可動コンポーネント１１６とを備えることが示されている。ロボットシステム１００は、本発明の範囲から逸脱することなく、ロボットシステム１００が、追加のコンポーネントを含むことができ、および／または１つまたは複数のコンポーネントを取り除くことができるものとして例示の目的で示されているものに過ぎないことに留意されたい。さらに、ロボットシステム１００の様々なコンポーネントは、任意のやり方で接続することができることに留意されたい。
【００２４】
[0029]  プロセッサ１０２は、汎用プロセッサまたは特定目的プロセッサ（例えば、デジタル信号プロセッサ、特定用途向け集積回路など）であり得る。プロセッサ１０２は、データストレージ１０４に記憶されているとともに、本明細書中に記載されたロボットシステム１００の機能性を与えるように実行可能であるコンピュータ可読プログラム命令１０６を実行するように構成することができる。例えば、プログラム命令１０６は、コントローラ１０８の機能性を与えるように実行可能とすることができ、ここで、コントローラ１０８は、１つまたは複数の可動コンポーネント１１６の移動を引き起こすようアクチュエータ１１４を命令するように構成することができる。
【００２５】
[0030]  データストレージ１０４は、プロセッサ１０２によって読み込みまたはアクセスすることができる１つまたは複数のコンピュータ可読記憶媒体を含むことができるまたはその形態をとることができる。１つまたは複数のコンピュータ可読記憶媒体は、光、磁気、有機、または他のメモリまたはディスクストレージなどの揮発性および／または不揮発性記憶コンポーネントを含むことができ、これは、プロセッサ１０２と全部または一部において一体化することができる。いくつかの実施形態では、データストレージ１０４は、単一の物理的装置（例えば、１つの光、磁気、有機、または他のメモリまたはディスクストレージユニット）を用いて実現することができ、一方、他の実施形態では、データストレージ１０４は、２つ以上の物理的装置を用いて実現することができる。さらに、コンピュータ可読プログラム命令１０６に加えて、データストレージ１０４は、他の実現可能なものの中でも診断データなどの追加のデータを含むことができる。
【００２６】
[0031]  ロボットシステム１００は、他の実現可能なものの中でも力センサ、近接センサ、運動センサ、荷重センサ、ポジションセンサ、タッチセンサ、深度センサ、超音波距離センサ、および赤外線センサ等の１つまたは複数のセンサ１１０を含み得る。センサ１１０は、ロボットシステム１００が環境に及ぼす適切な相互作用を可能にするようにセンサデータをプロセッサ１０２に供給することができる。加えて、センサデータは、さらに後述するように、フィードバックを与えるために様々なファクタの評価に使用することができる。さらに、ロボットシステム１００は、ロボットシステム１００の様々なコンポーネントに電力を供給するように構成された１つまたは複数の電源１１２を備えることもできる。例えば、ガソリンエンジン、またはバッテリなどの任意のタイプの電源を使用することができる。
【００２７】
[0032]  ロボットシステム１００は、１つまたは複数のアクチュエータ１１４を備えることもできる。アクチュエータは、機械的運動を導入するために使用することができる機構である。詳細には、アクチュエータは、蓄えられたエネルギーを１つまたは複数のコンポーネントの移動に変換するように構成することができる。アクチュエータに動力を供給するために様々な機構が使用され得る。例えば、アクチュエータは、他の実現可能なものの中でも、化学物質、圧縮空気、または電気などによって動力を供給することができる。場合によっては、アクチュエータは、回転の運動形態（例えば、ロボットシステム１００内の関節）を含むシステムに使用することができる回転式アクチュエータであってもよい。他の場合には、アクチュエータは、直線運動を伴うシステムに使用することができるリニアアクチュエータであり得る。
【００２８】
[0033]  どちらの場合にも、アクチュエータ１１４は、ロボットシステム１００様々な可動コンポーネント１１６の移動を引き起こすことができる。可動コンポーネント１１６は、ロボティックアーム、脚、および／またはハンド等の付属物を含み得る。可動コンポーネント１１６は、可動基部、ホイール、および／またはエンドエフェクタなども含み得る。
【００２９】
[0034]  いくつかの実施では、コンピューティングシステム（図示せず）は、ロボットシステム１００に結合することができるとともに、グラフィカルユーザインタフェースなどを介してユーザから入力を受け取るように構成することができる。このコンピューティングシステムは、ロボットシステム１００内に組み込みことができ、またはロボットシステム１００と（有線または無線）通信することができる外部コンピューティングシステムとすることができる。したがって、ロボットシステム１００は、他の実現可能なものの中でも、グラフィカルユーザインタフェースにおけるユーザ入力、および／またはロボットシステム１００上のボタンの押下（または触覚入力）を介して受け取られるユーザ入力等に基づいて情報および命令を受信することができる。
【００３０】
[0035]  ロボットシステム１００は、様々な形態をとることができる。例示するために、図２Ａおよび図２Ｂは、例示のロボティックアーム２００を示す。図示の通り、ロボティックアーム２００は、固定基部とすることができるまたは可動基部とすることができる基部２０２を備える。可動基部の場合、基部２０２は、可動コンポーネント１１６の１つとみなすことができ、アクチュエータ１１４のうち１つまたは複数によって動力が供給されるホイール（図示せず）を備えることができ、これによってロボティックアーム２００全体の移動性を可能にする。
【００３１】
[0036]  加えて、ロボティックアーム２００は、アクチュエータ１１４の１つまたは複数にそれぞれ結合された関節２０４Ａ〜２０４Ｆを備える。関節２０４Ａ〜２０４Ｆにおけるアクチュエータは、付属物２０６Ａ〜２０６Ｆおよび／またはエンドエフェクタ２０８などの様々な可動コンポーネント１１６を移動させるように動作することができる。例えば、関節２０４Ｆにおけるアクチュエータは、付属物２０６Ｆおよびエンドエフェクタ２０８を移動させることができる（すなわち、エンドエフェクタ２０８が付属物２０６Ｆに結合されるからである）。さらに、エンドエフェクタ２０８は、様々な形態をとることができるとともに、様々な部品を含むことができる。一例では、エンドエフェクタ２０８は、図２Ａに示されるような２フィンガ平行グリッパなどのグリッパ、異なるタイプのフィンガグリッパ、または吸引グリッパなどの異なるタイプのグリッパの形態をとることができる。別の例では、エフェクタ２０８Ｂは、図２Ｂに示されるようなシリンジ、または何らかの他のツール（例えば、ドリル、ブラシなど）の形態をとることができる。シリンジ２０８Ｂは、シリンジの針の端に設けられた関心点２１０を有することができる。さらに別の例では、エンドエフェクタは、力センサ、位置センサ、および／または近接センサなどのセンサを含み得る。他の例も可能であり得る。
【００３２】
[0037]  例示の実施では、ロボティックアーム２００などのロボットシステム１００は、教示モードで動作することが可能であり得る。詳細には、教示モードは、ユーザが、様々な移動を実行し記録する方にロボティックアーム２００と物理的に相互作用し案内することを可能にするロボティックアーム２００の動作モードであり得る。教示用モードでは、特定のタスクを実行する仕方に関してロボットシステムを教示するように意図されている教示用入力に基づいて、外力が（例えば、ユーザによって）ロボットシステム１００へ加えられる。このようにして、ロボティックアーム２００は、ユーザからの命令およびガイダンスに基づいて特定のタスクを実行する仕方に関してのデータを得ることができる。そのようなデータは、他の実現可能なものの中でも、可動コンポーネント１１６の複数の構成、関節ポジションデータ、速度データ、加速度データ、トルクデータ、力データ、および電力データ等に関連し得る。
【００３３】
[0038]  例えば、教示モード中、ユーザは、ロボティックアーム２００の任意の部分を把持し、ロボティックアーム２００を物理的に移動することによって外力を与えることができる。詳細には、ユーザは、物体を把持している方へロボティックアーム２００を案内し、次いで第１の位置から第２の位置まで物体を移動させることができる。ユーザが教示モード中にロボティックアーム２００を案内するとき、システムは、独立動作中（例えば、ロボティックアーム２００が教示モード以外で独立して動作するとき）の将来の時点でロボティックアーム２００がタスクを独立して実行するように構成することができるように、移動に関連したデータを得て記録することができる。しかしながら、この外力は、他の実現可能なものの中でも、他の物体、機械、および／またはロボットシステム等による物理的作業空間内の他の存在によって加えることもできることに留意されたい。
【００３４】
[0039]  図２Ａおよび図２Ｂでは、ツール２０８（またはツール２０８Ｂ）は、ロボティックアーム２００に取り付けられたグリッパ、シリンジ、または何らかの他のタイプのツールであり得る。ツール２０８は、取り付け点２０９でアーム２００に取り付けることができる。取り付け点２０９は、ツール２０８がロボティックアーム２００などのロボット１００の一部に接続することができる位置を表す。取り付け点２０９の位置は、ロボット１００によって知ることができる。代替として、取り付け点２０９は、ロボット１００によって一部知られていてもよく、または知られていなくてもよい。いくつかの実施形態では、取り付け点２０９は、ツール２０８がロボット１００の異なる一部に取り付けることができる位置を表す。
【００３５】
[0040]  図２Ａは、第１の面２１４および第２の面２１６を備える基準物体２１２を示す。第１の面２１４および第２の面２１６は、縁２１８を作り出すようにある角度でともに接続されている。面２１４および２１６は、縁２１８と共に、ロボティックアーム２００の付属物２０６Ａから離れるように外に突出する。図２Ａの基準物体２１２は、示されたものよりも多いまたは少ない面を備えてもよい。加えて、基準物体２１２の面は、図２Ａに示されたものとは異なる角度で接続されてもよい。基準物体の示された面は平坦であるが、他の実施形態では、基準物体２１２の面は、凹形、凸形、または何らかの他の形状などの異なる形状であってもよい。
【００３６】
[0041]  図２Ｂは、平坦である第１の面２１４Ｂを備える基準物体２１２Ｂを示す。基準物体２１２Ｂは、図２Ｂのロボティックアーム２００から遠隔位置に設けられている。対照的に、図２Ａの基準物体２１２は、ロボティックアーム２００に基部２０２で接続されている。他の実施形態では、基準物体は、ロボットの異なる部分に接続されてもよく、またはロボティックアーム２００に異なる位置で接続されてもよい。
【００３７】
[0042]  基準物体２１２（または２１２Ｂ）は、ツール２０８についてのツールオフセットを決定するためにロボット１００によって使用され得る。いくつかの実施形態では、ロボット１００は、基準物体を自動的に特定することができる。他の実施形態では、基準物体は、ロボット１００に入力され得る。基準物体は、ポジションおよび向きが予め決定されている剛体構造（例えば、厚板）とすることができる。基準物体のポジションおよび／または向きは、ロボット１００に対して記述することができる。
【００３８】
[0043]  さらに、基準物体の１つまたは複数の面は、予め決定された向きとともに予め決定されたポジションで設けることができる。加えて、基準物体の面は、１つまたは複数の縁および１つまたは複数の角度を生むことができる。基準物体、基準物体表面、および基準物体縁の向き、ポジション、および／または角度についての情報は、ロボット１００の入力することができる。ロボットに対しての基準物体のポジションは、ツールオフセットデータを決定するためにロボットポジションデータと共に使用することができる。
【００３９】
[0044]  基準物体のポジション情報は、ＸＹＺ座標系についてＸ方向の第１の寸法、Ｙ方向の第２の寸法、およびＺ方向の第３の寸法などの１つまたは複数の寸法を用いて記述することができる。他の実施形態では、基準物体についての他の情報は、ロボット１００に入力することができる。いくつかの実施形態では、基準物体のポジションおよび／または向きが知られていない場合、ロボット１００は、基準物体のポジションおよび向きを決定することができる。
【００４０】
[0045]  基準物体は、ロボットアーム２００の移動などのロボットの動作を妨げないポジションに設けられた剛体構造とすることができる。基準物体は、厚板とすることができるが、基準物体は、ツーリングボールなどの異なる物品であってもよい。さらに、基準物体は、１つまたは複数の厚板、１つまたは複数のツーリングボール、または何らかの他の物品を含み得る。他のタイプの基準物体も可能であり得る。
【００４１】
[0046]  ロボット１００は、ロボット１００にロボットアーム２００の取り付け点２０９などの位置で取り付けられたツール２０８についてのツールオフセットを決定する方法を実行することができる。ツールオフセットは、取り付け点２０９とツール２０８上の少なくとも１つの点の間の距離を説明することができる。ツールオフセットは、１つまたは複数の寸法を用いて位置として表現することができる。例えば、ツールオフセットは、ＸＹＺ座標系についてＸ方向の第１の寸法、Ｙ方向の第２の寸法、およびＺ方向の第３の寸法などの１つまたは複数の寸法を用いて記述することができる。角度オフセットθなどの他の寸法も可能であり得る。
【００４２】
[0047]  場合によっては、ロボット１００は、ツール上の関心点の位置を決定するために、取り付け点の知られている位置に基づいてツールオフセットデータを決定することができる。代替として、ロボット１００は、取り付け点のより精密な位置を決定するために、ツールの知られている幾何学的形状に基づいてツールオフセットデータを決定することができる。この筋書では、取り付け点の精密な位置が決定されると、次いで、ロボット１００は、取り付け点の決定した精密な位置に基づいて、ロボット１００に対してツール上の１つまたは複数の関心点の位置を決定することができる。
【００４３】
[0048]  ロボット１００は、新しいツールがロボティックアーム２００などのロボット１００の一部に取り付けられるとき、自動起動手順としてツールオフセットを決定する方法を実行することができる。代替として、ツールオフセット決定方法は、トラブルシューティング方法の一部として実行されてもよい。例えば、ツール２０８の動作中にエラーまたは予期せぬ結果が生じる場合、ロボット１００は、エラーおよび／または予期せぬ結果を補正するために、自動ツールオフセット決定方法を実行することができる。
【００４４】
[0049]  いっそうさらに、ロボット１００は、自動保守手順としてツールオフセット決定方法を実行することができる。例えば、ツールの寸法は、先の使用による摩耗および引裂き、曲がり、歪み、ならびに／または他の理由により、時が経つにつれて変化し得る。結果として、周期的にツールオフセット決定方法を実行することによって、ロボットが正確かつ精密なツールオフセットを用いてツール２０８を動作させているようにツールの寸法の変化を説明することができる。他の実施形態では、ロボット１００は、他の理由のために、自動ツールオフセット決定方法を実行することができる。
【００４５】
[0050]  自動ツールオフセット決定方法は、ツールオフセットをロボット１００に手入力することを上回るいくつかの改善をもたらすことができる。第１に、自動化された方法は、手入力よりも正確かつ精密であり得る。第２に、自動化された方法は、より迅速、より効率的、および手入力よりもユーザが実行するよりも少ない仕事であり得る。第３に、自動化された手順は、ユーザに関わらず一貫したツールオフセット決定手順であり得るのに対し、手入力は、ユーザに基づいて変わり得る。第４に、自動化されたツールオフセット決定プロセスは、ユーザがツールオフセットを決定する正確かつ精密な方法を知っている必要がないことを意味する。他の利益も、ツールオフセットを決定する自動化された手順を実行することから存在し得る。
【００４６】
[0051]  ロボット１００は、基準物体を特定することによってツールオフセット決定方法の実行を開始することができる。次に、ロボット１００は、ツール２０８を基準物体２１２に接触させ、接触イベント中のロボットポジションデータおよび力検知データを得るようにロボティックアーム２００を移動させることができる。次いで、ロボット１００は、ロボットポジションデータに基づいてツールオフセットデータの一部を決定することができる。ロボット１００は、接触イベントを反復して発生させ、接触イベント中のロボットポジションデータおよび力検知データを取得することによって、ツールオフセットデータの追加部分を決定し続けることができる。次いで、ツールオフセットデータの決定された部分を使用して、ロボットに対しての１つまたは複数の関心点の位置を決定することができる。次いで、１つまたは複数の寸法および／またはツールオフセットは、関心点の位置に基づいて決定することができる。決定される寸法および関心点は、ツールタイプ（例えば、グリッパ、シリンジ、ドリル、ブラシなど）に基づいて様々であり得る。
【００４７】
[0052]  図３Ａは、（図２Ａからの）例示のツール２０８、ならびに面２１４および２１６と縁２１８とを備える基準物体２１２の平面図３００を示す。図３Ｂは、（図２Ａからの）同じ例示のツール２０８、および基準物体２１２の側面図３５０を示す。ツール２０８は、２フィンガ平行グリッパである。表示された実施形態では、様々な関心点が、様々な寸法および／またはツールオフセットを決定するために計算され得るグリッパについて示されている。
【００４８】
[0053]  図３Ａおよび図３Ｂの表示された実施形態では、グリッパ２０８は、第１のフィンガ３０１と、第２のフィンガ３０２と、接続部３０３と、取り付け点２０９とを備える。グリッパ２０８は、基準物体２１２に向けて作動方向３０４に沿って移動させられる。計算され得るグリッパの寸法の一部は、外側幅寸法３０５、内側幅寸法３０６、外側の長さ寸法３０７、内側の長さ寸法３０８、および高さ寸法３０９を含む。グリッパ２０８は、計算される他の寸法を有してもよい。
【００４９】
[0054]  第１のフィンガ３０１は、内面３１１と、外面３１２と、上面３１３とを備える。同様に、第２のフィンガ３０２は、内面３２１と、外面３２２と、上面３２３と、底面３２４とを備える。さらに、接続部３０３は、内面３３１と、外面３３２と、上面３３３とを備える。各フィンガおよび／または接続部は、上記のものよりも多いおよび／または上記のものとは異なる面を備えてもよい。
【００５０】
[0055]  グリッパ２０８は、様々な関心点も備える。関心点は、第１のフィンガ３０１の第１の点３４１、第１のフィンガ３０１の第２の点３４３、第２のフィンガ３０２の第１の点３４２、第２のフィンガ３０２の第２の点３４４、および第２のフィンガ３０２の第３の点３４８を含む。接続部３０３は、グリッパ２０８について第１の点３４５、第２の点３４６、および第３の点３４７も含む。グリッパ２０８についての他の関心点も可能であり得る。
【００５１】
[0056]  第１のフィンガ３０１については、第１の点３４１は、第１のフィンガ３０１の上面３１３と内面３１１が交差する隅に位置する。第２の点３４３は、第１のフィンガ３０１の上面３１３と外面３１２が交差する隅に位置する。第２のフィンガ３０２については、第１の点３４２は、上面３２３と内面３２１が交差する隅に位置する。第２の点３４４は、第２のフィンガ３０２の上面３２３と外面３２２が交差する隅に位置する。第３の点３４８は、第２のフィンガ３０２の外面３２２と底面３２４が交差する隅に位置する。
【００５２】
[0057]  接続部３０３については、第１の点３４５は、接続部３０３の内面３３１と第１のフィンガ３０１の内面３１１が接続部３０３の上面３３３に沿って交差する隅に位置する。第２の点３４６は、接続部３０３の内面３３１と第２のフィンガ３０２の内面３２１が接続部３０３の上面３３３に沿って交差する隅に位置する。第３の点３４７は、第２のフィンガ３０２の外面３２２と接続部３０３の外面３３２が接続部３０３の上面３３３に沿って交差する隅に位置する。
【００５３】
[0058]  グリッパ２０８の正確かつ精密な制御を実行するために、ロボット１００は、グリッパ２０８についての様々な関心点に基づいて寸法およびツールオフセットを決定することができる。例えば、寸法３０５〜３０９は、１つまたは複数の関心点３４１〜３４８に基づいてロボット１００によって決定することができる。詳細には、外側幅寸法３０５は、点３４３および３４４の位置に基づいて決定することができる。内側幅寸法３０６は、点３４１および３４２（または３４５および３４６）の位置に基づいて計算することができる。外側の長さ寸法３０７は、点３４４および３４７の位置に基づいて決定することができる。内側のフィンガ長さ寸法３０８は、点３４１および３４５（または点３４２および３４６）に基づいて決定することができる。高さ寸法３０９は、点３４４および３４８の位置に基づいて決定することができる。各点についての位置は、関心点についてツールオフセット決定方法を実行することによってロボット１００によって決定することができる。
【００５４】
[0059]  図３Ａおよび図３Ｂは、ＸＹＺ座標系についてＸ、Ｙ、およびＺ方向を示す凡例３５１および３５２を含む。表示された実施形態では、幅寸法３０５および３０６は、Ｘ方向に沿った距離を記述することができる。加えて、長さ寸法３０７および３０８は、Ｙ方向に沿った距離を記述することができる。さらに、作動方向３０４も、Ｙ方向に沿ったものであり得る。また、高さ寸法３０９は、Ｚ方向に沿った距離を説明することができる。しかしながら、他の実施形態では、寸法は、異なる方向に沿って距離を説明することができる。
【００５５】
[0060]  ツールオフセットを決定する自動プロセスの一部として、ロボット１００は、ツール２０８を基準物体２１２に接触させることによって１つまたは複数の接触イベントを発生させるようにツール２０８を制御することができる。接触イベントは、ツール２０８が基準物体２１２に接触するようにロボット１００に接続されたツール２０８が移動させられるときに生じる。接触イベント中、ロボット１００は、ロボットポジションデータ、力検知データ、およびまたは他の情報を含むデータを収集することができる。ロボット１００は、少なくとも第１の接触イベントを含む１回または複数回だけ基準物体２１２に接触するようにツール２０８を移動させることができる。
【００５６】
[0061]  ツール２０８が基準物体２１２に接触するとき、ロボットは、ツール２０８の移動を停止することができ、それによってツール２０８を基準物体２１２が接触したままになるとともにデータを収集することを可能にする。次いで、ロボット１００は、ツール２０８が基準物体２１２にもはや接触しないポジションへツール２０８を移動することができる。接触イベントは、最初にツール２０８が基準物体２１２と継続的接触するときに開始し、基準物体２１２との継続的接触が終わるときに終了する。しかしながら、他の実施形態では、接触イベントを異なったように定めてもよい。
【００５７】
[0062]  力検知データは、力フィードバックセンサを介してロボット１００によって取得される。力フィードバックセンサは、取り付け点２０９でロボットに設けることができ、または何らかの他の点でロボット１００に設けることができる。力フィードバックセンサは、ツール２０８が基準物体２１２に接触しているときの指示を与えるように使用される。センサは、接触イベントの精密かつ正確な測定値を得ることができるようにセンサが受ける力に敏感であるように設計され得る。接触イベントの精密かつ正確な測定値は、ロボットが精密かつ正確なツールオフセットを決定することを可能にし、これはツール２０８の精密かつ正確な制御を可能にする。
【００５８】
[0063]  力フィードバックセンサが、ツール２０８が基準物体２１２に接触していることを示すデータを受信すると、センサは、ロボット１００がツール２０８の移動を停止するとともに、ロボット１００がデータを集めることを可能にする。ロボットの移動を中断することによって、力センサは、ツール２０８、基準物体２１２、ロボット１００、およびロボティックアーム２００が、反復的な接触または過度の接触による何らかの追加の損傷を受けるのを防ぐのを助ける。
【００５９】
[0064]  代替の実施形態では、接触イベントの指示は、接触イベント電気回路が作られる（または壊される）ことに対応し得る。具体的には、接触イベント電気回路は、ツール２０８が基準物体２１２に接触するときに作られ（または壊され）得る。したがって、接触イベント電気回路が作られる（または壊される）との指示は、ツール２０８が基準物体２１２に接触することによって開始する接触イベントに対応し得る。接触イベントが終わる（すなわち、ツール２０８は、基準物体２１２にもはや接触しない）とき、接触イベント電気回路は、その元の開いた（または閉じた）状態に戻ることができる。接触イベントを決定する他の実施形態も可能であり得る。
【００６０】
[0065]  接触イベント中、ロボット１００は、接触イベント中のロボットのポジションを示すロボットポジションデータを得ることもできる。ロボットポジションデータは、接触イベント中のロボットのエンコードされた関節角に基づいて決定することができる。エンコードされた関節角および／または他の情報は、ロボット１００、ロボティックアーム２００、取り付け点２０９、または決定されるロボットの他の部分のポジション、位置、および／または向きを与えることができる。ロボットポジションデータを得るために、ロボット１００に取り付けられたＩＭＵセンサが使用され得る。ロボットポジションデータは、ツールオフセットデータの一部を決定するために、ロボットに対しての基準物体のポジションと組み合わせて使用することができる。
【００６１】
[0066]  １つまたは複数の接触イベントを発生させることによって、ツールオフセットデータの一部は、ツール２０８について決定することができる。ツールオフセットデータは、取得されたロボットポジションデータ、ロボットに対しての基準物体のポジション、および場合によっては、先に決定されたツールオフセットデータに基づいて決定することができる。他のファクタも、ツールオフセットデータの決定に影響を及ぼし得る。
【００６２】
[0067]  外側の長さ寸法３０７は、取り付け点２０９に関して点３４４および３４７についてのツールオフセットデータを用いて決定することができる。表示された実施形態では、取り付け点２０９の位置は、ロボット１００によって知られる。取り付け点２０９は、接続部３０３の外面３３２のほぼ中央に位置することができる。加えて、基準物体２１２、面２１４および２１６、ならびに縁２１８の位置および向きは、ロボット１００によって知られる。したがって、点３４４および３４７についてのツールオフセットデータは、取り付け点２０９および基準物体２１２についての知られている位置および向きに基づいて決定することができる。
【００６３】
[0068]  点についてのツールオフセットデータは、取り付け点２０９に対してのＸＹＺ座標系上の点（Ｘ，Ｙ，Ｚ）として記述することができる。点についてのツールオフセットデータの決定は、取り付け点２０９に対しての特定の点についての３つのツールオフセットの寸法（Ｘ、Ｙ、およびＺ）の各々を決定することを含み得る。取り付け点に対しての特定の点についてのツールオフセットの寸法は、接触イベントを発生させるための作動方向３０４に沿ったグリッパの移動がロボットポジションデータに基づくツールオフセットの寸法の計算を可能にするようにグリッパを向けることによって決定することができる。
【００６４】
[0069]  例えば、点３４７についてのツールオフセットデータを決定することは、取り付け点２０９に対しての点３４７についてのツールオフセットの寸法Ｘ、Ｙ、およびＺを決定することを含む。点３４７についてのツールオフセットのＸ寸法は、第２のフィンガ３０２の外面３２２が接触イベント中に基準物体２１２の縁２１８に接触するように方向３０４に沿ってグリッパ２０８を移動させることによって決定することができる。加えて、点３４７についてのツールオフセットのＹ寸法は、接続部３０３の外面３３２が接触イベント中に基準物体２１２の縁２１８に接触するように方向３０４に沿ってグリッパ２０８を移動させることによって決定することができる。さらに、点３４７についてのツールオフセットのＺ寸法は、第２のフィンガ３０２の上面３２３が接触イベント中に基準物体２１２の縁２１８に接触するように方向３０４に沿ってグリッパ２０８を移動させることによって決定することができる。
【００６５】
[0070]  特定の点についてのツールオフセットの寸法Ｘ、Ｙ、およびＺは、接触イベント中に計算することができる。詳細には、グリッパがＹ方向に対応する方向３０４に沿って移動している接触イベントについて、特定のツールオフセットの寸法は、基準物体位置、取り付け点位置、および基準物体に接触するグリッパ２０８の部分に基づいて決定することができる。具体的には、ツールオフセットの寸法の大きさは、接触イベント中の基準物体と取り付け点の各位置のＹ座標の差に等しい。決定される特定の寸法は、接触イベント中にグリッパのどの面が基準物体２１２に接触しているのか次第である。
【００６６】
[0071]  例えば、点３４７については、ツールオフセットのＸ寸法は、第２のフィンガ３０２の外面３２２が基準物体２１２の縁２１８に接触する接触イベント中に計算される。ツールオフセットのＸ寸法の大きさは、接触イベント中の縁２１８と取り付け点２０９の各位置のＹ座標の差に等しい。ロボット１００は、接触イベント中の取り付け点２０９の位置を決定することができる。いくつかの実施形態では、取り付け点２０９の位置は、接触イベント中のエンコードされた関節角に基づいて決定される。より早く述べたように、ロボット１００は、縁２１８を含む基準物体２１２の位置をすでに知っている。この接触イベント中、Ｙ座標の差は、外側幅寸法３０５の半分（すなわち、Ｗ／２）に等しい。したがって、取り付け点２０９に対しての点３４７についてのツールオフセットのＸ寸法は、Ｗ／２である。
【００６７】
[0072]  加えて、ツールオフセットのＹ寸法は、接続部３０３の外面３３２が基準物体２１２の縁２１８に接触する接触イベント中に計算される。この接触イベント中、基準物体２１２の縁２１８および取り付け点２０９のＹ座標の差は、ゼロに等しい。したがって、取り付け点２０９に対しての点３４７についてのツールオフセットのＹ寸法は、ゼロである。
【００６８】
[0073]  さらに、ツールオフセットのＺ寸法は、第２のフィンガ３０２の上面３２３が基準物体２１２の縁２１８に接触する接触イベント中に計算される。この接触イベント中、基準物体２１２の縁２１８と取り付け点２０９のＹ座標の差は、グリッパ２０８の高さ３０９の半分（すなわち、Ｈ／２）に等しい。したがって、取り付け点２０９に対しての点２４７についてのツールオフセットのＺ寸法は、Ｈ／２である。したがって、取り付け点２０９に対しての点３４７についてのツールオフセットデータは、（Ｗ／２，０，Ｈ／２）に等しい。
【００６９】
[0074]  取り付け点２０９に対しての点３４４についてのツールオフセットデータは、上述した点３４７のツールオフセットデータの決定と同様のやり方で決定することができる。点３４４および３４７についてのツールオフセットデータが決定されると、グリッパ２０８の外側の長さ寸法３０７が計算することができる。同様に、他の関心点３４１〜３４８についてのツールオフセットデータは、取り付け点２０９に対して決定することができる。次いで、計算されたツールオフセットデータは、グリッパ寸法３０５〜３０９を決定するために使用することができる。
【００７０】
[0075]  いくつかの実施形態では、ロボット１００は、接触イベントを開始する前に、ツール２０８を用いて基準物体２１２を探索することができる。ロボット１００は、基準物体を探索するために基準物体の知られている位置および向きに基づいてツール２０８を移動させることができる。ロボット１００がツール２０８を用いて基準物体２１２を探索、発見、および接触したら、接触イベントを開始することができる。
【００７１】
[0076]  例えば、ロボットが取り付け点２０９に対しての点３４７についてのツールオフセットデータを決定しているとき、ロボット１００は、縁２１８で基準物体２１２に接触するようにツール２０８を制御することができる。しかしながら、ツールは、最初に面２１４または２１６で基準物体２１２に接触することができる。したがって、ロボット１００は、縁２１８を探索するようにツール２０８を制御しなければならない場合がある。
【００７２】
[0077]  ロボット１００は、基準物体２１２の位置および向きを知っているので、ロボット１００は、縁２１８が見つかるまで面２１４および／または面２１６に沿ってツール２０８を移動させることによって縁２１８を探索することができる。ロボット１００は、それが面２１４と面２１６の間の角度トランジションを検知すると、縁２１８が見つかったことを知る。ロボットが縁２１８に接触していると、接触イベントが開始され得る。ロボットは、縁２１８との終点接点までツールを移動させる前に、ロボットポジションデータおよび力検知データを収集することができる。ツール２０８による他のタイプの探索も可能であり得る。
【００７３】
[0078]  基準物体２１２が、角度付きの面２１４および２１６を備えるので、ロボットは、ツールオフセットデータを決定するために様々なタイプの接触イベントを使用することができる。例えば、ロボット１００は、グリッパの特定の寸法を決定するために、基準物体２１２の２つの点で１つの接触イベントを発生させるようにグリッパ２１８を制御することができる。具体的には、ロボットアーム２００は、点３４１を面２１４に接触させるとともに、同時に点３４２を面２１６に接触させるようにグリッパ２０８を移動させることによって接触イベントを発生させることができる。この接触イベント中、ロボット１００は、グリッパ２０８の内側幅寸法３０６を決定するために、ロボットポジションデータを得ることができる。
【００７４】
[0079]  最初に、グリッパ２０８は、基準物体２１２に向けて方向３０４に沿って移動させられ得る。グリッパ２０８が基準物体２１２に接触した後、グリッパは、点３４１が面２１４に接触するとともに、同時に点３４２が面２１６に接触するように、基準物体を探索することができる。詳細には、グリッパ２０８は、適切な点が適切な面に接触しているまで、基準物体２１２のまわりでグリッパ２０８を移動させることができる。点３４１が面２１４に接触しているとともに、同時に点３４２が面２１６に接触していると、ロボット１００は、グリッパ２０８の移動を停止させ、ロボットポジションデータを得ることができる。
【００７５】
[0080]  得られたロボットポジションデータは、グリッパ２０８の内側幅寸法３０６を決定するために、知られている基準物体位置および向きと組み合わせて使用することができる。具体的には、ロボットポジションデータは、接触イベント中の取り付け点２０９のポジションを決定するために、エンコードされた関節角を頼ることができる。決定された取り付け点のポジション、基準物体位置および向き、ならびに先に得られたツールオフセットデータ（例えば、グリッパ２０８の外側の長さ寸法３０７）に基づいて、次いで、ロボットは、面２１４との接触中の点３４１の位置、および面２１６との接触中の点３４２の位置を決定することができる。これらの決定された位置を用いて、次いで、ロボットは、グリッパ２０８の内側幅寸法３０６を計算することができる。他の実施形態では、ロボット１００は、異なるツールオフセットデータを得るために、異なるツールオフセット決定方法を用いることができる。
【００７６】
[0081]  ツールオフセットの決定に使用される関心点は、ロボット１００に取り付けられたツール２０８のタイプに依存している。例えば、図２Ｂでは、ロボット１００のロボティックアーム２００は、エンドエフェクタ２０８Ｂとしてシリンジを備えて示されている。２フィンガ平行グリッパとは違って、シリンジについての関心点２１０は、針の先端である。ロボット１００は、ツールオフセット決定方法を実行して、取り付け点２０９に対して点２１０の位置を決定することができる。点２１０についてのツールオフセットデータの決定は、ロボット１００によるシリンジ２０８Ｂの正確かつ精密な制御を可能にする。
【００７７】
[0082]  ロボット１００は、点３４７について説明されたものと同様の方法を用いてシリンジ２０８Ｂの点２１０についてのツールオフセットデータを決定することができる。詳細には、点２１０についてのツールオフセットデータは、取り付け点２０９に対して決定される。ツールオフセットの寸法Ｘ、Ｙ、およびＺは、取り付け点２０９に対して点２１０について決定される。シリンジ２０８の針は、グリッパ２０８のような面を有さないが、ロボティックアーム２００は、ツールオフセットの寸法Ｘ、Ｙ、およびＺが点２１０について測定され得るように、シリンジ針の異なる部分が接触イベント中に基準物体２１２に接触することを可能にするように適切な向きへ回転することができる。ツールオフセットデータの決定のために、他のツールタイプおよび関心点も可能であり得る。
【００７８】
[0083]  他の実施形態では、ロボットは、ツールについてのツールオフセットデータを継続的に得るために、複数の接触イベントを反復して発生させることができる。一実施形態では、ロボットは、取り付けられたツールの３Ｄモデルを生成するのに十分な関心点についての十分なツールオフセットデータを決定するのに十分な接触イベントを反復して発生させる。ツールオフセット決定方法の他の実施形態も可能である。
【００７９】
[0084]  図４は、例示の実施形態によるツールオフセットを決定することを可能にすることができる方法４００を示す流れ図を示す。方法４００は、図１に関して図示および説明されたロボットなどのロボットによって実施することができる。しかしながら、ロボット制御システム、または図１に記載されたロボットとは異なる何らかの他の装置も、方法４００を実施することができる。
【００８０】
[0085]  さらに、本明細書中に記載された流れ図と共に説明される機能性は、図４に示された流れ図と共に説明される特定の論理機能、決定、および／または工程を実現するために、特定機能および／または設定された汎用機能のハードウェアモジュール、プロセッサによって実行されるプログラムコードの一部として実施することができることに留意されたい。使用される場合、プログラムコードは、任意のタイプのコンピュータ可読媒体、例えば、ディスクまたはハードドライブを含む記憶装置などに記憶することができる。
【００８１】
[0086]  加えて、図４に示された流れ図の各ブロックは、プロセス内の特定の論理機能を実行するように配線されている回路構成を表すことができる。特に示されない限り、図４に示された流れ図の機能は、記載された方法の機能性全体が維持される限り、含まれる機能性に応じて、いくつかの例では別個に記載された機能をほぼ同時に実行することまたは逆の順序でも実行することを含めて図示または説明されたものとは異なる順序で実行することができる。
【００８２】
[0087]  図４のブロック４０２によって示されるように、方法４００は、ロボットに対しての基準物体のポジションを決定するステップを伴うことができる。いくつかの例では、基準物体は、１つまたは複数の平坦面を有する剛体構造とすることができる。追加の例では、基準物体は、ロボットから遠隔位置にあってもよく、またはロボットに取り付けられてもよい。
【００８３】
[0088]  方法４００は、図４のブロック４０４によって示されるように、ロボットに取り付け点で接続されたツールが第１の接触イベント中に基準物体に接触するようにロボットを制御するステップをさらに含むことができる。いくつかの例では、ロボットに接続されているツールは、２フィンガ平行グリッパ、シリンジ、ドリル、ブラシ、または何らかの他のツールとすることができる。追加の例では、取り付け点位置は、ロボットによって知られている、一部知られている、または知られていないものである得る。
【００８４】
[0089]  方法４００は、図４のブロック４０６によって示されるように、第１の接触イベント中にツールが基準物体に接触するときにロボットのポジションを示すロボットポジションデータを受信するステップを含むこともできる。いくつかの例では、ロボットポジションデータは、第１の接触イベント中のロボットのエンコードされた関節角に基づいて決定することができる。追加の例では、エンコードされた関節角は、ロボットおよび／またはロボット部品のポジション、位置、または向きを決定するために使用することができる。
【００８５】
[0090]  方法４００は、図４のブロック４０８によって示されるように、ロボットに対しての基準物体のポジションおよびロボットポジションデータに少なくとも基づいてツールについてのツールオフセットデータを決定するステップをさらに含むことができ、ただし、ツールについてのツールオフセットデータは、取り付け点とツール上の少なくとも１つの点の間の距離を記述する。いくつかの例では、ツールオフセットデータは、ツール上の関心点と取り付け点の間の距離に基づいてツールの寸法（例えば、ツール長さ）を記述することができる。追加の例では、２フィンガ平行グリッパなどのツールオフセットデータを決定することができるツールについての複数の関心点が存在することができる。さらなる例では、シリンジなどについてのツールオフセットデータが決定される１つだけの関心点が存在してもよい。追加の一例では、ツールオフセットデータが決定されるシリンジの関心点は、シリンジの針の端とすることができる。
【００８６】
[0091]  本開示のシステムおよび方法にとって、ツールを取り付けたロボットを用いる様々な応用および環境が可能である。例えば、ツールを取り付けたロボットについてのツールオフセットの決定が適用可能であり得るいくつかの環境には、製造設備、郵便または出荷設備、空港、病院、またはツールを取り付けたロボットを用いる他の環境が含まれる。さらに、ツールを取り付けたロボットについてのツールオフセットの決定が適用可能であり得る他の応用には、建設、出荷、製造、ヘルスケア、および／またはツールを取り付けたロボットを用いる他の応用が含まれる。本開示のシステムおよび方法についての他の適用可能な環境および応用も可能であり得る。
【００８７】
[0092]  本開示は、様々な態様の例示として意図されている本出願に記載された特定の実施形態の観点に限定されるべきではない。多くの修正および変形は、当業者にとって明らかであるので、本開示の趣旨および範囲から逸脱することなくなされてもよい。本開示の範囲内の機能的に均等な方法および装置は、本明細書中に挙げられたものに加えて、前述の説明から当業者に明らかであろう。そのような修正および変形は、添付の特許請求の範囲内に含まれることが意図される。
【００８８】
[0093]  上記の発明を実施するための形態は、開示されたシステム、装置、および方法の様々な特徴および機能を、添付図面を参照して説明する。各図において、文脈上別段の指示がない限り、典型的には同様の記号は、同様の構成要素を特定する。本明細書および図面に記載された例示の実施形態は、限定していることを意図していない。本明細書中に提示された主題の趣旨または範囲から逸脱することなく、他の実施形態が利用されてもよく、他の変更がなされてもよい。概して本明細書中に説明されるおよび図に示されるような本開示の態様は、幅広い種類の異なる構成にアレンジ、置換、組み合わせ、分離、および設計されてもよく、それらの全ては本明細書中で明確に考えられることが容易に理解されよう。
【００８９】
[0094]  情報処理を表すブロックは、本明細書中に記載した方法または技法の特定の論理機能を実行するように構成され得る回路構成に対応し得る。代替としてまたは加えて、情報処理を表すブロックは、モジュール、セグメント、または（関連データを含む）プログラムコードの一部に対応し得る。プログラムコードは、上記方法もしくは技法における特定の論理機能または操作を実施するためのプロセッサによって実行可能な１つまたは複数の命令を含むことができる。プログラムコードおよび／または関連データは、ディスクもしくはハードドライブ、または他の記憶媒体を含む記憶装置などの任意のタイプのコンピュータ可読媒体に記憶することができる。
【００９０】
[0095]  コンピュータ可読媒体は、レジスタメモリ、プロセッサキャッシュ、およびランダムアクセスメモリ（RAM）のような短期間にわたってデータを記憶するコンピュータ可読媒体などの非一時的なコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、例えば、リードオンリメモリ（ROM）、光ディスクもしくは磁気ディスク、コンパクトディスクリードオンリメモリ（CD-ROM）のような二次または永続性長期ストレージなどのより長期間にわたってプログラムコードおよび／またはデータを記憶する非一時的なコンピュータ可読媒体も含み得る。コンピュータ可読媒体は、任意の他の揮発性または不揮発性記憶システムとすることもできる。コンピュータ可読媒体は、例えば、コンピュータ可読記憶媒体、または有形の記憶装置とみなされもよい。
【００９１】
[0096]  また、１つまたは複数の情報伝送を表すブロックは、同じ物理的装置内のソフトウェアおよび／またはハードウェアモジュール間の情報伝送に対応し得る。しかしながら、他の情報伝送が、異なる物理的装置内のソフトウェアモジュールおよび／またはハードウェアモジュール間にあってもよい。
【００９２】
[0097]  図に示された特定の構成は、限定と見られるべきではない。他の実施形態は、所与の図に示された各要素をより多くまたはより少なく備えてもよいことを理解されたい。さらに、示された要素の一部が組み合わされたり、または省かれたりしてもよい。またさらに、例示の実施形態は、図に示されていない要素を備えてもよい。
【００９３】
[0098]  様々な態様および実施形態を本明細書中に開示してきたが、他の態様および実施形態が、当業者には明らかであろう。本明細書中に開示された様々な態様および実施形態は、例示のためであり、限定していることを意図しておらず、真の範囲は、添付の特許請求の範囲によって示されている。
【図１】
0006663978.tif 000002
【図２Ａ】
0006663978.tif 000003
【図２Ｂ】
0006663978.tif 000004
【図３Ａ】
0006663978.tif 000005
【図３Ｂ】
0006663978.tif 000006
【図４】
0006663978.tif 000007