<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。なお、本実施形態における長さの単位は、如何なる単位であってもよい。以下では、一例として、本実施形態における長さの単位が、ミリメートルである場合について説明する。このため、以下では、長さを表す数値、変数、符号等に対して単位を付すことを省略している。
<ロボットシステムの構成>
まず、ロボットシステム1の構成について説明する。
図1は、実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、ロボット20と、ロボット制御装置30を備える。図1に示した例では、ロボット制御装置30は、ロボット20の外部に設置されている。なお、ロボットシステム1では、ロボット制御装置30は、ロボット20に内蔵される構成であってもよい。また、ロボットシステム1は、撮像部、撮像部を制御する画像処理装置、ロボット制御装置30を制御する情報処理装置、ロボット制御装置30にロボット20の動作を教示する教示装置等を備える構成であってもよい。
ロボット20は、アームAと、アームAを支持する基台Bを備える単腕ロボットである。単腕ロボットは、この一例におけるアームAのような1本のアーム(腕)を備えるロボットのことである。
アームAは、エンドエフェクターEと、マニピュレーターMと、力検出部FSを備える。なお、アームAは、エンドエフェクターEを備えない構成であってもよい。
エンドエフェクターEは、1以上の指部と、当該1以上の指部のそれぞれを支持する基部EBを備え、当該1以上の指部によって物体を挟んで持つことにより把持するエンドエフェクターである。また、エンドエフェクターEでは、エンドエフェクターEが備える1以上の指部が、基部EBに対して移動可能に設けられている。以下では、一例として、エンドエフェクターEが、図1に示したように、第1指部F1と第2指部F2との2つの指部を備える場合について説明する。なお、エンドエフェクターEは、把持部の一例である。
第1指部F1と第2指部F2は、基部EBが有する面のうち第1指部及び第2指部が設けられた面上において予め決められた1本の直線に沿って互いに対向するように基部EBに対して設けられている。また、第1指部F1と第2指部F2は、基部EBに対して当該直線に沿って移動可能に設けられている。すなわち、エンドエフェクターEにおいて、第1指部F1と第2指部F2は、互いに近づくように、又は、互いに遠のくように、1次元的に基部EBに対して移動可能である。これにより、エンドエフェクターEは、第1指部F1と第2指部F2とのそれぞれが互いに近づく方向に第1指部F1と第2指部F2とのいずれか一方又は両方を移動させて物体を挟むことができる。以下では、説明の便宜上、当該直線に沿った2つの方向のうち第1指部F1から第2指部F2に向かう方向を第1方向と称し、当該2つの方向のうち第2指部F2から第1指部F1に向かう方向を第2方向と称して説明する。なお、当該直線は、当該面上において予め決められた直線であれば、如何なる直線であってもよい。以下では、一例として、当該直線が、当該面に直交する方向に沿って当該面を見た場合においてエンドエフェクターEの重心を通る直線である場合について説明する。
なお、第1指部F1は、基部EBに対して2本以上の直線に沿って移動可能に設けられている構成であってもよい。当該2本以上の直線は、基部EBが有する面のうち第1指部及び第2指部が設けられた面上において予め決められた2本以上の直線のことである。ただし、この場合、エンドエフェクターEでは、第2指部F2は、基部EBに対して、当該2本以上の直線のうちのいずれか1本に沿って移動可能に設けられる。
また、第2指部F2は、基部EBに対して2本以上の直線に沿って移動可能に設けられている構成であってもよい。当該2本以上の直線は、基部EBが有する面のうち第1指部及び第2指部が設けられた面上において予め決められた2本以上の直線のことである。ただし、この場合、エンドエフェクターEでは、第1指部F1は、基部EBに対して、当該2本以上の直線のうちのいずれか1本に沿って移動可能に設けられる。
また、エンドエフェクターEは、基部EBに対して第1指部F1を動かす第1駆動部MT1と、基部EBに対する第1指部F1の位置を検出する第1位置検出部EC1と、基部EBに対して第2指部F2を動かす第2駆動部MT2と、基部EBに対する第2指部F2の位置を検出する第2位置検出部EC2を備える。
第1駆動部MT1及び第2駆動部MT2は、アクチュエーターであり、例えば、サーボモーターである。なお、第1駆動部MT1は、サーボモーターに代えて、基部EBに対して第1指部F1を動かすことが可能な他のアクチュエーターであってもよい。また、第2駆動部MT2は、サーボモーターに代えて、基部EBに対して第2指部F2を動かすことが可能な他のアクチュエーターであってもよい。
第1位置検出部EC1及び第2位置検出部EC2は、エンコーダーである。第1位置検出部EC1は、例えば、光学式エンコーダーであってもよく、磁気式エンコーダーであってもよく、光学式と磁気式とを組み合わせた形式のエンコーダーであってもよく、基部EBに対する第1指部F1の位置を検出可能な他の形式のエンコーダーであってもよい。第2位置検出部EC2は、例えば、光学式エンコーダーであってもよく、磁気式エンコーダーであってもよく、光学式と磁気式とを組み合わせた形式のエンコーダーであってもよく、基部EBに対する第2指部F2の位置を検出可能な他の形式のエンコーダーであってもよい。
第1位置検出部EC1は、基部EBに対する第1指部F1の位置を検出し、検出した位置を示す情報を第1位置検出情報としてロボット制御装置30に出力する。
第2位置検出部EC2は、基部EBに対する第2指部F2の位置を検出し、検出した位置を示す情報を第2位置検出情報としてロボット制御装置30に出力する。
なお、第1駆動部MT1と第1位置検出部EC1とは、一体に構成されてもよく、それぞれ別体として構成されてもよい。図1に示した例では、第1駆動部MT1と第1位置検出部EC1とは、一体に構成されている。
また、第2駆動部MT2と第2位置検出部EC2とは、一体に構成されてもよく、それぞれ別体として構成されてもよい。図1に示した例では、第2駆動部MT2と第2位置検出部EC2とは、一体に構成されている。
マニピュレーターMは、6つの関節を備えた垂直多関節型のマニピュレーターである。また、マニピュレーターMが備える6つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、マニピュレーターMを備えるアームAは、6軸垂直多関節型のアームである。アームAは、基台Bと、エンドエフェクターEと、マニピュレーターMと、マニピュレーターMが備える6つの関節それぞれのアクチュエーターとによる連携した動作によって6軸の自由度の動作を行う。なお、アームAは、5軸以下の自由度で動作する構成であってもよく、7軸以上の自由度で動作する構成であってもよい。
力検出部FSは、エンドエフェクターEとマニピュレーターMの間に設けられる。力検出部FSは、例えば、水晶を含む力検出素子を4つ備える。そして、力検出部FSは、4つの水晶のそれぞれに加わる剪断力に基づいて、ロボット20の図示しないハンドに作用した外力を検出する。これにより、ロボット20は、水晶を含まない力検出素子を4つ備えた力センサーと比べて、力検出部FSから出力される出力値が、温度等の環境因子の変化、経年劣化等に応じて変動してしまうことを抑制することができる。
ここで、ロボット20のハンドは、エンドエフェクターE、又はエンドエフェクターEにより把持された物体のことである。すなわち、力検出部FSは、エンドエフェクターE、又はエンドエフェクターEにより把持された物体に作用した外力を検出する。当該外力には、当該ハンドを並進させる並進力が含まれる。当該並進力には、図1において図示しない力検出座標系FCにおけるX軸、Y軸、Z軸それぞれの方向に作用する3つの並進力が含まれている。ここで、力検出座標系FCは、力検出部FSに対応付けられた三次元直交座標系のことである。また、当該外力には、当該ハンドを回転させる回転モーメント(トルク)が含まれる。当該回転モーメントには、当該X軸、当該Y軸、当該Z軸それぞれの周りに作用する3つの回転モーメントが含まれている。すなわち、力検出部FSは、当該3つの並進力と当該3つの回転モーメントとのそれぞれを当該外力として検出する。力検出部FSは、検出した当該3つの並進力のそれぞれに応じた出力値と、検出した当該3つの回転モーメントのそれぞれに応じた出力値との6つの出力値のそれぞれを示す情報を外力検出情報としてロボット制御装置30に出力する。すなわち、当該6つの出力値のうちの一部又は全部は、力検出部から出力される出力値の一例である。
外力検出情報は、ロボット制御装置30によるロボット20の力制御に用いられる。力制御は、力検出部FSから出力された出力値に基づく制御、すなわち、力検出部FSからロボット制御装置30に出力された外力検出情報に基づく制御のことであり、例えば、インピーダンス制御等のコンプライアントモーション制御のことである。
なお、力検出部FSは、水晶を含む力検出素子を3つ以下備える構成であってもよく、水晶を含む力検出素子を5つ以上備える構成であってもよい。また、力検出部FSは、水晶を含む4つの力検出素子のうちの一部又は全部に代えて、水晶を含まない力検出素子を備える構成であってもよい。また、力検出部FSは、水晶を含む4つの力検出素子のうちの一部又は全部に加えて、水晶を含まない力検出素子を備える構成であってもよい。
ここで、第1駆動部MT1と、第2駆動部MT2と、第1位置検出部EC1と、第2位置検出部EC2と、マニピュレーターMが備える6つのアクチュエーターのそれぞれと、力検出部FSとは、ケーブルによってロボット制御装置30と通信可能に接続されている。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、第1駆動部MT1と、第2駆動部MT2と、第1位置検出部EC1と、第2位置検出部EC2と、力検出部FSとのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。また、マニピュレーターMが備える6つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
ロボット制御装置30は、ロボット20を制御する。ロボット制御装置30は、ロボット制御装置30が備えるメモリーに予め記憶された動作プログラムに基づいて、ロボット20に予め決められた作業を行わせる。なお、図1では、図を簡略化するため、当該メモリーを図示していない。
より具体的には、ロボット制御装置30は、ロボット20のアームAとともに動く仮想的な点である制御点Tを、アームAの予め決められた位置に設定する。制御点Tは、例えば、アームAについてのTCP(Tool Center Point)である。なお、制御点Tは、当該TCPに代えて、制御点Tとともに動く他の仮想的な点であってもよい。当該予め決められた位置は、例えば、エンドエフェクターEの重心の位置である。なお、当該予め決められた位置は、当該重心の位置に代えて、アームAに応じた他の位置であってもよい。
制御点Tには、制御点Tとともに動く三次元直交座標系である図示しない制御点座標系が対応付けられている。制御点Tの位置は、制御点座標系の原点のロボット座標系RCにおける位置によって表される。また、制御点Tの姿勢は、制御点座標系における各座標軸のロボット座標系RCにおける方向によって表される。ここで、ロボット座標系RCは、ロボット20の基台Bに対応付けられた三次元直交座標系のことである。以下では、一例として、ロボット座標系RCにおけるZ軸の負方向が重力方向と一致している場合について説明する。なお、ロボット座標系RCにおけるZ軸の負方向は、重力方向と一致していない構成であってもよい。
ロボット制御装置30は、前述の動作プログラムに基づく位置制御によってアームAを動作させる。当該位置制御において、ロボット制御装置30は、制御点Tを動作プログラムにより指定された教示点と一致させる。教示点は、制御点Tを一致させる目標となる仮想的な点のことである。教示点には、教示点の位置を示す教示点位置情報と、教示点の姿勢を示す教示点姿勢情報とが対応付けられている。ここで、この一例では、ある教示点と制御点Tとの一致は、当該教示点の位置及び姿勢と制御点Tの位置及び姿勢との一致を意味する。すなわち、当該位置制御において、この一例におけるロボット制御装置30は、制御点Tの位置及び姿勢を動作プログラムにより指定された教示点の位置及び姿勢と一致させる。
また、ロボット制御装置30は、力検出部FSから外力検出情報を取得し、取得した外力検出情報と、動作プログラムとに基づく力制御によってアームAを動作させる。当該力制御において、ロボット制御装置30は、アームAを動作させ、当該外力検出情報が示す6つの出力値のうち動作プログラムにより指定された1つ以上の出力値が、動作プログラムにより指定された目標値となるように制御点Tの位置及び姿勢を変化させる。この際、ロボット制御装置30は、当該1つ以上の出力値が当該目標値と一致するように制御点Tの位置及び姿勢を変化させる場合における制御点Tの位置及び姿勢それぞれの変化分を、力制御に応じた運動方程式を解くことによって算出する。この一例における力制御は、前述した通り、インピーダンス制御である。この一例における当該運動方程式は、インピーダンス制御に応じた運動方程式である。なお、当該力制御に応じた運動方程式については、公知であるため、これ以上の詳細な説明を省略する。
ロボット制御装置30は、このような位置制御と力制御との少なくとも一方によってアームAを動作させ、ロボット20に予め決められた作業を行わせる。
予め決められた作業は、例えば、図1に示した物体Oを把持し、把持した物体Oを予め決められた図示しない領域に載置する作業である。なお、予め決められた作業は、何らかの物体を把持する動作を伴う作業であれば如何なる作業であってもよい。
物体Oは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。図1に示した例では、物体Oは、断面が十字型の柱形状の物体(十字型断面柱)であり、当該断面がロボット座標系RCにおけるX軸と直交するように載置されている。なお、物体Oは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、物体Oの形状は、断面が十字型の柱形状に代えて、他の形状であってもよい。
ここで、以下では、一例として、物体Oが剛体として近似可能な物体である場合について説明する。物体Oが剛体として近似可能な物体であることは、この一例において、エンドエフェクターEによって物体Oが把持された場合における物体Oの変形が、肉眼で検出不可能な程度の変形であることを意味する。なお、物体Oが剛体として近似可能な物体であることは、これに代えて、エンドエフェクターEによって物体Oが把持された場合における物体Oの変形が、定規、ノギス、マイクロメーターのうちのいずれかで検出不可能な程度の変形であることを意味してもよい。このような意味で、以下では、一例として、物体Oが、エンドエフェクターEによって把持されても変形しない場合について説明する。この場合、例えば、物体Oの材質は、鉄である。なお、物体Oの材質は、鉄に代えて、エンドエフェクターEによって把持されても変形しない他の材質であってもよい。
<ロボット制御装置のハードウェア構成>
以下、図2を参照し、ロボット制御装置30のハードウェア構成について説明する。図2は、ロボット制御装置30のハードウェア構成の一例を示す図である。
ロボット制御装置30は、例えば、プロセッサー31と、メモリー32と、通信部34を備える。これらの構成要素は、バスを介して相互に通信可能に接続されている。また、ロボット制御装置30は、通信部34を介してロボット20と通信を行う。
プロセッサー31は、例えば、CPU(Central Processing Unit)である。なお、プロセッサー31は、CPUに代えて、FPGA(Field-Programmable Gate Array)等の他のプロセッサーであってもよい。プロセッサー31は、メモリー32に格納された各種のプログラムを実行する。
メモリー32は、前述のメモリーの一例である。メモリー32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)等を含む。なお、メモリー32は、ロボット制御装置30に内蔵されるものに代えて、USB等のデジタル入出力ポート等によってロボット制御装置30に接続された外付け型の記憶装置であってもよい。メモリー32は、ロボット制御装置30が処理する各種の情報、動作プログラム等を格納する。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
なお、ロボット制御装置30は、キーボード、マウス、タッチパッド等の入力装置と、ディスプレイを有する表示装置とのいずれか一方又は両方を備える構成であってもよい。
<ロボット制御装置の機能構成>
以下、図3を参照し、ロボット制御装置30の機能構成について説明する。図3は、ロボット制御装置30の機能構成の一例を示す図である。
ロボット制御装置30は、メモリー32と、通信部34と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、取得部361と、判定部363と、ロボット制御部365を備える。制御部36が備えるこれらの機能部は、例えば、プロセッサー31が、メモリー32に記憶された各種の指令を実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
取得部361は、第1位置検出部EC1から出力される第1位置検出情報を第1位置検出部EC1から取得する。また、取得部361は、第2位置検出部EC2から出力される第2位置検出情報を第2位置検出部EC2から取得する。また、取得部361は、力検出部FSから出力される外力検出情報を力検出部FSから取得する。
判定部363は、ロボット制御装置30が行う各種の判定を行う。判定部363が行う判定の具体例については、後述する。
ロボット制御部365は、メモリー32に予め記憶された動作プログラムをメモリー32から読み出す。ロボット制御部365は、読み出した動作プログラムに基づいてロボット20を制御する。
なお、制御部36において、取得部361と、判定部363と、ロボット制御部365とのうちの一部又は全部は、1つの機能部として構成されてもよい。
<ロボット制御装置がロボットに予め決められた作業を行わせる処理>
以下、図4を参照し、ロボット制御装置30がロボット20に予め決められた作業を行わせる処理について説明する。図4は、ロボット制御装置30がロボット20に予め決められた作業を行わせる処理の流れの一例を示す図である。以下では、一例として、図4に示したステップS110の処理が行われるよりも前のタイミングにおいて、メモリー32に予め決められた動作プログラムをロボット制御部365がメモリー32から読み出している場合について説明する。また、以下では、一例として、当該タイミングにおいて、ロボット20の動作を開始させる操作をロボット制御装置30が受け付けている場合について説明する。
判定部363は、メモリー32に予め記憶された第1情報をメモリー32から読み出す(ステップS110)。第1情報は、この一例において、後述するステップS180において行われる第1判定処理において用いられる所定の値を示す情報のことである。なお、ステップS110の処理は、ステップS180の処理が行われるよりも前のタイミングであれば、如何なるタイミングにおいて行われてもよい。
次に、ロボット制御部365は、メモリー32から予め読み出した動作プログラムに基づく位置制御によってアームAを動作させ、予め決められた作業を開始させる直前に制御点Tを待機させる教示点と制御点Tとを一致させる(ステップS120)。以下では、一例として、当該教示点の位置が、当該教示点に制御点Tが一致した場合において、エンドエフェクターEと他の物体とが接触しない位置であり、且つ、当該作業を行う対象となる物体Oが第1指部F1と第2指部F2との間に位置する位置である場合について説明する。ここで、第1指部F1と第2指部F2との間は、第1指部F1と第2指部F2とを近づけた場合において第1指部F1と第2指部F2とによって挟まれて把持される領域のことを示す。また、以下では、一例として、当該教示点の姿勢が、当該教示点に制御点Tが一致した場合において、物体OとエンドエフェクターEとが接触しない姿勢であり、且つ、エンドエフェクターEに応じた軸が重力方向と並行になる姿勢である場合について説明する。エンドエフェクターEに応じた軸は、例えば、エンドエフェクターEとともに動く軸であり、且つ、マニピュレーターMが備える6つの関節のうち最もエンドエフェクターE側の関節の回動軸と一致する軸である。なお、当該教示点の位置は、当該教示点に制御点Tが一致した場合において、物体OとエンドエフェクターEとが接触しない位置であれば他の位置であってもよい。また、当該教示点の姿勢は、当該教示点に制御点Tが一致した場合において、物体OとエンドエフェクターEとが接触しない姿勢であれば他の姿勢であってもよい。また、エンドエフェクターEに応じた軸は、エンドエフェクターEとともに動く他の軸であってもよい。
次に、ロボット制御部365は、メモリー32から予め読み出した動作プログラムに基づく力制御によって、第1動作をロボット20に開始させる(ステップS130)。ここで、図5を参照し、第1動作について説明する。
図5は、予め決められた作業を開始させる直前にロボット制御装置30が制御点Tを待機させる教示点と制御点Tとが一致している様子の一例を示す図である。以下では、一例として、図5に示したように、第1指部F1と第2指部F2とのそれぞれが移動可能な方向が、ロボット座標系RCにおけるY軸に沿った方向と一致している場合について説明する。また、以下では、一例として、前述の力検出座標系FCにおけるX軸の正方向とロボット座標系RCにおけるX軸の正方向とが一致し、力検出座標系FCにおけるY軸の正方向とロボット座標系RCにおけるY軸の負方向とが一致し、力検出座標系FCにおけるZ軸の正方向とロボット座標系RCにおけるZ軸の負方向とが一致している場合について説明する。また、図5に示した軸AXOは、物体Oに応じた軸である。物体Oに応じた軸は、例えば、物体Oの重心を通る軸のうち重力方向と並行な軸のことである。なお、物体Oに応じた軸は、物体Oの重心を通る軸のうち重力方向と並行な軸に代えて、物体Oに応じた他の軸であってもよい。図5に示したように、当該教示点と制御点Tとが一致している場合、軸AXEは、重力方向と並行になっている。また、図5に示したように、当該場合、物体Oは、第1指部F1と第2指部F2との間に位置している。
ここで、ステップS130においてロボット制御部365は、力制御によって第1指部F1を物体Oに接触させる動作を第1動作としてロボット20に開始させる。この一例では、ステップS130においてロボット制御部365は、動作プログラムに基づいて、力検出部FSから出力された外力検出情報が示す6つの出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値に対して、所定の第1閾値を力制御における目標値として設定する。これにより、ロボット制御部365は、当該出力値が第1閾値以上となるまで制御点Tを当該Y軸の負方向(すなわち、ロボット座標系RCにおけるY軸の正方向)に向かって移動させる動作を第1動作としてロボット20に行わせる。図5では、力検出座標系FCにおけるY軸の負方向は、矢印A1が示す方向によって示されている。
このような力制御によって、ロボット制御部365は、エンドエフェクターEの全体を矢印A1が示す方向に移動させる。ここで、本実施形態では、エンドエフェクターEの全体を移動させることは、基部EBと第1指部F1及び第2指部F2それぞれとの相対的な位置関係を変えずにエンドエフェクターEを移動させることを意味する。すなわち、この一例では、ステップS120の処理が行われた後、ロボット制御部365は、ロボット座標系RCにおけるY軸の正方向に当該位置関係を変えずにエンドエフェクターEを力制御によって移動させ、第1指部F1を物体Oに接触させる動作を第1動作としてロボット20に開始させる。換言すると、ステップS130では、ロボット制御部365は、第1指部F1を物体Oに接触させ、力検出部FSから出力される出力値が所定の第1閾値以上となるまで第1指部F1を物体Oに付勢させる動作を第1動作としてロボット20に行わせ始める。なお、第1動作において、ロボット制御部365は、基部EBを移動させずに、基部EBに対して第1指部F1を第1方向(この一例において、矢印A1が示す方向)に向かって移動させて第1指部F1を物体Oに接触させる構成であってもよい。また、第1動作において、ロボット制御部365は、基部EBを矢印A1が示す方向を移動させるとともに、基部EBに対して第1指部F1を第1方向(この一例において、矢印A1が示す方向)に向かって移動させて第1指部F1を物体Oに接触させる構成であってもよい。
ステップS130においてロボット制御部365が力制御によって第1動作をロボット20に開始させた後、判定部363は、取得部361が力検出部FSから取得した外力検出情報が示す6つの出力値のうち、力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値が第1閾値以上であるか否かを判定する(ステップS140)。当該出力値が第1閾値未満であると判定部363が判定した場合(ステップS140−NO)、ロボット制御部365は、ステップS130において開始させた第1動作をロボット20に継続させる。一方、当該出力値が第1閾値以上であると判定部363が判定した場合(ステップS140−YES)、ロボット制御部365は、ロボット20の動作を停止させ、ロボット20の第1動作を終了させる。そして、ロボット制御部365は、動作プログラムに基づく力制御によって、第2動作をロボット20に開始させる(ステップS150)。ここで、図6を参照し、第2動作について説明する。
図6は、図5に示したエンドエフェクターEと物体Oとの位置関係のうちロボット20の第1動作が終了した直後における位置関係の一例を示す図である。ステップS150においてロボット制御部365は、力検出部FSから出力される出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値を保持しながら物体O(又は第1指部F1)に対する第2指部F2の位置を変化させて物体Oを第1指部F1と第2指部F2とによって把持させる動作を第2動作としてロボット20に開始させる。例えば、ロボット制御部365は、物体O及び第1指部F1の両方の位置を変化させることなく、基台Bと第2指部F2とのうちいずれか一方又は両方を動かすことによって物体Oに対する第2指部F2の位置を物体Oに近づけ、物体Oを第1指部F1と第2指部F2とによって把持させる動作を第2動作としてロボット20に開始させる。また、例えば、ロボット制御部365は、物体Oに対する第1指部F1の位置を変化させることなく第1指部F1を第1方向に移動させることによって物体Oを移動させるとともに、基台Bと第2指部F2とのうちいずれか一方又は両方を動かすことによって物体Oに対する第2指部F2の位置を物体Oに近づけ、物体Oを第1指部F1と第2指部F2とによって把持させる動作を第2動作としてロボット20に開始させる。以下では、一例として、ロボット制御部365が、物体O及び第1指部F1の両方の位置を変化させることなく、基台Bと第2指部F2との両方を動かすことによって物体Oに対する第2指部F2の位置を物体Oに近づけ、物体Oを第1指部F1と第2指部F2とによって把持させる動作を第2動作としてロボット20に開始させる場合について説明する。換言すると、ステップS150では、ロボット制御部365は、力検出部FSから出力される出力値が第1閾値以上である状態を維持し、第1指部F1とアームAとを移動させ、物体Oに第1指部F1と第2指部F2とを接触させる動作を第2動作としてロボット20に行わせ始める。
また、第2動作において、ロボット制御部365は、更に、軸AXEが第1指部F1と第2指部F2との中間に位置するように基部EBを第1指部F1及び第2指部F2のそれぞれに対して移動させる動作をロボット20に行わせる。これにより、ロボット制御装置30は、エンドエフェクターEによって物体Oと把持させた場合において、エンドエフェクターEに応じた軸と、物体Oに応じた軸とを一致させることができる。より具体的には、これにより、ロボット制御装置30は、当該場合において、力検出部FSから出力される出力値のうち3つの回転モーメントのそれぞれに応じた出力値をすべてゼロにすることができる。その結果、ロボット制御装置30は、エンドエフェクターEによる物体Oの把持が不安定になってしまうことを抑制することができる。
エンドエフェクターEに応じた軸と、物体Oに応じた軸とが一致した状態とは、物体OがエンドエフェクターEに対して所定の位置であり、且つ、物体OがエンドエフェクターEに対して所定の姿勢である状態である。所定の位置とは、例えば、当該エンドエフェクターEに応じた軸と、当該物体Oに応じた軸と、が重なる位置である。また、所定の姿勢とは、例えば、当該エンドエフェクターEに応じた軸と、当該物体Oに応じた軸と、が平行となる姿勢である。
図6では、第2動作において基部EBに対して第2指部F2が移動する第2方向が、矢印A3によって示されている。また、図6では、第2動作において第1指部F1及び第2指部F2に対して基部EBが移動する方向が、矢印A4によって示されている。そして、図6に示した例では、第1指部F1及び物体Oの両方が移動していない。
ここで、第2動作を行うことによって第2指部F2が物体Oに接触し始めると、力検出部FSから出力される出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値は、第1閾値よりも小さくなる。具体的には、当該出力値は、第2動作を行うことによって第2指部F2が物体Oに接触し始めると、図7に示したように低下する。図7は、力検出部FSから出力される出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値の第2動作における変化の一例を示す図である。図7に示したグラフの横軸は、第2動作における経過時間を示す。当該グラフの縦軸は、当該出力値の大きさを示す。図7に示した値EF1は、第1閾値を示す。図7に示したタイミングTSは、第2動作において第2指部F2が物体Oに接触したタイミングを示す。
第2動作において第2指部F2が物体Oに接触し始めると、物体Oには、第1指部F1と第2指部F2とのそれぞれから互いに反対向きに互いにほぼ同じ大きさの力が加えられ始める。このため、図7に示したように、力検出部FSから出力される出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値は、タイミングTSからほぼ時間が経過することなく値EF1からゼロ(又はほぼゼロ)へと低下する。図7に示した例では、当該出力値は、タイミングTSからほぼ時間が経過することなく値EF1からゼロへと低下している。これは、第1指部F1から物体Oに加えられた力と、第2指部F2から物体Oに加えられた力との合力がゼロになった結果である。当該合力がゼロになることは、換言すると、エンドエフェクターEによって物体Oが把持されたことを示す。そこで、ロボット制御装置30は、後述するステップS160において当該出力値が所定の第2閾値未満となった場合、エンドエフェクターEにより物体Oが把持されたと判定し、ロボット20の動作を停止させ、第2動作を終了させる。第2閾値は、ゼロ以上第1閾値以下の値であれば如何なる値であってもよい。ここで、前述した通り、力検出部FSから出力される出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値は、タイミングTSからほぼ時間が経過することなく値EF1からゼロへと低下する。このため、第2閾値は、第1閾値と同じ値であってもよい。この場合、ロボット制御装置30は、当該出力値が第1閾値未満となった場合、エンドエフェクターEにより物体Oが把持されたと判定する。また、第2閾値は、図7に示したように、ゼロ以上第1閾値未満の値であってもよい。図7に示した値EF2は、第2閾値の一例を示す。なお、ロボット制御装置30は、ステップS160において当該出力値が予め決められた第3閾値以下となった場合、エンドエフェクターEにより物体Oが把持されたと判定し、ロボット20の動作を停止させ、第2動作を終了させる構成であってもよい。第3閾値は、第2閾値よりも小さい値であり、例えば、ゼロである。
なお、本実施形態において、力検出部FSから出力される出力値のうち力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値の変化は、当該出力値の誤差による変動幅を超えた変化のことを意味する。すなわち、本実施形態では、当該出力値の誤差による低下は、当該出力値の低下として扱わない。
ステップS150においてロボット制御部365が力制御によって第2動作をロボット20に開始させた後、判定部363は、取得部361が力検出部FSから取得した外力検出情報が示す6つの出力値のうち、力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値が第2閾値未満であるか否かを判定する(ステップS160)。当該出力値が第2閾値以上であると判定部363が判定した場合(ステップS160−NO)、ロボット制御部365は、ステップS150において開始させた第2動作をロボット20に継続させる。一方、当該出力値が第2閾値未満であると判定部363が判定した場合(ステップS140−YES)、ロボット制御部365は、エンドエフェクターEにより物体Oが把持されたと判定し、ロボット20の動作を停止させ、ロボット20の第2動作を終了させる。ただし、ロボット制御部365は、当該場合において、軸AXEが第1指部F1と第2指部F2との中間に位置するように基部EBを第1指部F1及び第2指部F2のそれぞれに対して移動させる動作が完了していない場合、当該動作を完了させてから、エンドエフェクターEにより物体Oが把持されたと判定し、ロボット20の動作を停止させ、ロボット20の第2動作を終了させる。
ここで、図8は、図5に示したエンドエフェクターEと物体Oとの位置関係のうちロボット20の第2動作が終了した直後における位置関係の一例を示す図である。図8に示したように、第2動作が終了した場合において、軸AXEと軸AXOとは、一致している。また、この一例では、第2動作において第1指部F1が第1方向に移動しないため、図8に示した物体Oの位置は、図6に示した物体Oの位置と一致している。
ステップS140においてロボット制御部365がロボット20の第2動作を終了させた場合、取得部361は、第1位置検出部EC1から第1位置検出情報を取得するとともに、第2位置検出部EC2から第2位置検出情報を取得する(ステップS170)。図4に示したフローチャートでは、このようなステップS170における取得部361の処理を、位置検出情報取得と示している。
次に、判定部363は、ステップS170において取得部361が取得した第1位置検出情報及び第2位置検出情報に基づいて、第1判定処理を行う(ステップS180)。
ここで、ステップS180の処理について説明する。第1判定処理は、ロボット制御装置30が行う判定のうち、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されているか否かの判定を行う処理である。この一例において、所定の状態は、エンドエフェクターEに対する物体Oの位置及び姿勢が所定の位置及び姿勢と一致している状態のことである。なお、所定の状態は、エンドエフェクターEに対する物体Oの位置が所定の位置と一致している状態のことであってもよく、エンドエフェクターEに対する物体Oの姿勢が所定の姿勢と一致している状態のことであってもよく、エンドエフェクターEと物体Oとに応じた他の状態であってもよい。
所定の状態で物体Oが第1指部F1と第2指部F2とによって把持された場合、物体Oに予め決められた2つの部位のうちの一方が第1指部F1によって押圧されるとともに、当該2つの部位のうちの他方が第2指部F2によって押圧される。以下では、説明の便宜上、当該2つの部位のうち所定の状態において第1指部F1によって押圧される部位のことを第1把持部位と称し、当該2つの部位のうち所定の状態において第2指部F2によって押圧される部位のことを第2把持部位と称して説明する。
また、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持された場合、第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さと一致する。所定の状態に応じた長さは、すなわち、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持された場合における第1指部F1と第2指部F2との間の長さのことである。換言すると、所定の状態に応じた長さは、前述の第1把持部位と第2把持部位との間の長さのことである。ここで、図9は、図5に示した物体Oがロボット20の第2動作によって所定の状態で第1指部F1と第2指部F2とによって把持されている様子の一例を示す図である。図9に示した面X1は、物体Oが有する面のうち第1指部F1が接触している面である。また、図9に示した面X2は、物体Oが有する面のうち第2指部F2が接触している面である。
ここで、所定の状態と異なる状態で物体Oが第1指部F1と第2指部F2とによって把持された場合、第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さと一致しない可能性が高い。
例えば、図10は、図5に示した物体Oをロボット20が第2動作によって把持できなかった様子の一例を示す図である。物体Oをロボット20が第2動作によって把持できなかった場合、力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値は、第1指部F1と第2指部F2とが接触して互いに押圧し合うことによって第2閾値未満となる。このため、ロボット20の第2動作が終了した直後における第1指部F1と第2指部F2とは、図10に示したように互いに接触している。第1指部F1と第2指部F2とが接触している場合、第1指部F1と第2指部F2との間の長さはゼロである。すなわち、物体Oをロボット20が第2動作によって把持できなかった場合、第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さと一致しない。ここで、図10に示した長さD2は、当該場合における第1指部F1と第2指部F2との間の長さの一例を示す。
また、例えば、図11は、図5に示した物体Oがロボット20の第2動作によって所定の状態と異なる状態で第1指部F1と第2指部F2とによって把持されている様子の一例を示す図である。図11に示した状態は、エンドエフェクターEに対する物体Oの姿勢が所定の姿勢と一致しており、エンドエフェクターEに対する物体Oの位置が所定の位置と一致していない状態の一例である。以下では、説明の便宜上、当該状態のことを第1誤把持状態と称して説明する。第1誤把持状態では、ロボット20の第2動作が終了した直後において、第1指部F1と第2指部F2との間の長さが、所定の状態に応じた長さと異なる場合がある。ここで、図11に示した長さD3は、当該場合における第1指部F1と第2指部F2との間の長さの一例を示す。図11に示した例では、第1誤把持状態における第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さよりも短くなっている。すなわち、長さD3は、長さD1よりも短い。図示しない他の例では、第1誤把持状態における第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さよりも長くなることもある。第1誤把持状態において第1指部F1と第2指部F2との間の長さが所定の状態に応じた長さと異なってしまうことは、物体Oの幅が重力方向に沿って一定ではない場合に起こり得る。すなわち、物体Oの形状が複雑になるほど、第1誤把持状態において第1指部F1と第2指部F2との間の長さが所定の状態に応じた長さと異なってしまう可能性が高くなる。
また、例えば、図12は、図5に示した物体Oがロボット20の第2動作によって所定の状態と異なる状態で第1指部F1と第2指部F2とによって把持されている様子の他の例を示す図である。図12に示した状態は、エンドエフェクターEに対する物体Oの位置が所定の位置と一致しており、エンドエフェクターEに対する物体Oの姿勢が所定の姿勢と一致していない状態の一例である。以下では、説明の便宜上、当該状態のことを第2誤把持状態と称して説明する。第2誤把持状態では、ロボット20の第2動作が終了した直後において、第1指部F1と第2指部F2との間の長さが、所定の状態に応じた長さと異なる場合がある。ここで、図12に示した長さD4は、当該場合における第1指部F1と第2指部F2との間の長さの一例を示す。図12に示した例では、第2誤把持状態における第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さよりも長くなっている。すなわち、長さD4は、長さD1よりも長い。図示しない他の例では、第2誤把持状態における第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さよりも短くなることもある。第2誤把持状態において第1指部F1と第2指部F2との間の長さが所定の状態に応じた長さと異なってしまうことは、物体Oの形状が球体形状ではない場合に起こり得る。すなわち、物体Oの形状が複雑になるほど、第2誤把持状態において第1指部F1と第2指部F2との間の長さが所定の状態に応じた長さと異なってしまう可能性が高くなる。
このように、所定の状態と異なる状態で物体Oが第1指部F1と第2指部F2とによって把持された場合、第1指部F1と第2指部F2との間の長さは、所定の状態に応じた長さと一致しない可能性が高い。
そこで、判定部363は、第1判定処理において、第1指部F1と第2指部F2との間の長さが、所定の状態に応じた長さと一致しているか否かを判定することにより、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されているか否かを判定する。すなわち、判定部363は、第1指部F1と第2指部F2との間の長さが、所定の状態に応じた長さと一致していないと判定した場合、所定の状態と異なる状態で物体Oが第1指部F1と第2指部F2とによって把持されていると判定する。一方、判定部363は、第1指部F1と第2指部F2との間の長さが、所定の状態に応じた長さと一致していると判定した場合、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されていると判定する。
より具体的には、判定部363は、第1判定処理において、ステップS170において取得部361が取得した第1位置検出情報及び第2位置検出情報に基づいて、第1指部F1に対する第2指部F2の位置を、第1指部F1と第2指部F2との間の長さとして検出(又は算出)する。当該長さは、第1位置検出部から出力される出力値に応じた値の一例であり、第1位置検出部から出力される出力値と第2位置検出部から出力される出力値とに応じた値の一例でもある。判定部363は、検出した長さと、メモリー32から予め読み出した第1情報が示す所定の値とが一致しているか否かを判定する。所定の値は、この一例において、所定の状態に応じた長さを示す値である。
そして、判定部363は、検出した長さと所定の値とが一致していないと判定した場合、所定の状態と異なる状態で物体Oが第1指部F1と第2指部F2とによって把持されていると判定する。一方、判定部363は、検出した長さと所定の値とが一致していると判定した場合、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されていると判定する。
ここで、判定部363は、例えば、検出した長さを中心値とした誤差範囲に所定の値が含まれている場合、当該長さと所定の値とが一致していると判定する。一方、判定部363は、当該誤差範囲に所定の値が含まれている場合、当該長さと所定の値とが一致していると判定する。当該誤差範囲は、例えば、当該長さを中心値とした90%信頼区間の範囲であってもよく、当該長さを中心値とした±1標準偏差の範囲であってもよく、他の誤差範囲であってもよい。また、判定部363は、当該長さに応じた値に基づいて、当該長さと所定の値とが一致しているか否かを判定する構成であってもよい。なお、所定の値は、第1値の一例である。また、誤差範囲は、所定の範囲の一例である。
このように、ステップS150〜ステップS180の処理では、ロボット制御装置30は、第2動作において、力検出部FSから出力される出力値が第1閾値よりも小さい所定の第2閾値よりも小さくなったとき、第1位置検出部EC1から出力される出力値に応じた値と、予め決められた第1値と、の差異が所定の範囲内である場合、物体Oが所定の状態で第1指部F1と第2指部F2とによって把持されていると判定する。
ステップS180の処理が行われた後、判定部363は、ロボット20に第3動作を行わせるか否かを判定する(ステップS190)。ここで、ステップS190の処理について説明する。
ステップS190において、判定部363は、ステップS180の判定結果に応じて、ロボット20に第3動作を行わせるか否かを判定する。判定部363は、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されているとステップS180において判定した場合、ロボット20に第3動作を行わせると判定する。一方、判定部363は、所定の状態と異なる状態で物体Oが第1指部F1と第2指部F2とによって把持されているとステップS180において判定した場合、ロボット20に第3動作を行わせないと判定する。
ここで、第3動作は、第1動作、第2動作のそれぞれと異なる動作であり、ロボット制御装置30がロボット20に行わせる動作のうちロボット20が把持した物体Oに対して何らかの作業を行わせる動作のことである。すなわち、前述の予め決められた作業は、第1動作〜第3動作を順に行うことによって行われる作業のことである。当該何らかの作業は、ロボット20が把持した物体Oに対してロボット20が行う作業であれば如何なる作業であってもよく、例えば、当該物体Oを予め決められた載置位置に載置する作業等である。
ロボット20に第3動作を行わせると判定部363が判定した場合(ステップS190−YES)、ロボット制御部365は、動作プログラムに基づく位置制御と動作プログラムに基づく力制御とのうちいずれか一方又は両方によってロボット20を制御し、ロボット20に第3動作を行わせ(ステップS200)、処理を終了する。一方、ロボット20に第3動作を行わせないと判定部363が判定した場合(ステップS190−NO)、ロボット制御部365は、動作プログラムに基づく位置制御と動作プログラムに基づく力制御とのうちいずれか一方又は両方によってロボット20を制御し、ロボット20に第4動作を行わせる(ステップS210)。
ここで、第4動作は、第1動作、第2動作、第3動作のそれぞれと異なる動作であり、ロボット制御装置30がロボット20に行わせる動作のうちロボット20に物体Oを把持し直させる動作のことである。
例えば、第4動作は、第1指部F1と第2指部F2とによる物体Oの把持を予め決められた位置において解除して物体Oを落とし、落ちた物体Oを再び把持する動作である。この場合、落ちた後の物体Oの位置及び姿勢が不定となってしまうため、ロボットシステム1は、撮像部等の物体Oの位置及び姿勢を検出するために用いる何らかの装置やセンサー等、又は、物体Oの位置及び姿勢を所望の位置及び姿勢に変化させる何らかの装置や他のロボット等を備える必要がある。当該予め決められた位置は、例えば、第4動作を開始した位置であってもよく、予め決められた除材領域に物体Oが落ちる位置であってもよく、他の位置であってもよい。なお、当該予め決められた位置が当該除材領域に物体Oが落ちる位置であった場合、落ちた後の物体Oは、他の物体と混ざらないようにすることができる。その結果、ロボット制御装置30は、ロボット20に物体Oを精度よく把持し直させることができる。
また、例えば、第4動作は、力制御によって物体Oを所定の位置に配置することによって物体Oの位置及び姿勢を所望の位置及び姿勢と一致させる冶具を用いて、物体Oの位置及び姿勢を所望の位置及び姿勢と一致させ、その後、物体Oを再び把持する動作である。この場合、ロボットシステム1は、当該冶具を備える。
なお、ロボット制御装置30は、第4動作において、ロボット20に物体Oを把持し直させる際、ステップS130〜ステップS160の処理を行う。
ステップS210の処理が行われた後、取得部361は、ステップS170に遷移し、第1位置検出部EC1から第1位置検出情報を再び取得するとともに、第2位置検出部EC2から第2位置検出情報を再び取得する。
以上のように、ロボット制御装置30は、第1指部F1を物体Oに接触させ、力検出部FSから出力される出力値が予め決められた第1閾値以上となるまで第1指部F1を物体Oに押し付ける第1動作をロボット20に行わせ、ロボット20に第1動作を行わせた後、力検出部FSから出力される出力値を保持しながら物体Oに対する第2指部F2の位置を変化させて物体Oを第1指部F1と第2指部F2とによって把持させる第2動作をロボット20に行わせ、第2動作において力検出部FSから出力される出力値が予め決められた第2閾値よりも小さくなった場合、第1位置検出部EC1から出力される出力値と第2位置検出部EC2から出力される出力値とに応じた値と、所定の値とが一致しているか否かによって、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されているか否かの判定を行う。これにより、ロボット制御装置30は、第1指部F1と第2指部F2とによって物体Oを所定の状態で精度よく把持することができる。
なお、上記において説明した第2動作において、ロボット制御装置30は、軸AXEが第1指部F1と第2指部F2との中間に位置するように基部EBを第1指部F1及び第2指部F2のそれぞれに対して移動させる動作をロボット20に行わせない構成であってもよい。
また、上記において説明したエンドエフェクターEは、第2指部F2に代えて、基台Bに対して移動不可能な突出部位が設けられる構成であってもよい。突出部位は、例えば、基部EBに対して移動不可能に設けられた冶具、基部EBの一部等である。エンドエフェクターEが第2指部F2に代えて突出部位を備える場合、ロボット制御装置30は、軸AXEが第1指部F1と第2指部F2との中間に位置するように基部EBを第1指部F1に対して移動させる動作をロボット20に行わせない。そして、ロボット制御装置30は、ステップS150において(すなわち、第2動作において)、力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値を保持するように基部EBに対して第1指部F1を第1方向に向かって移動させるとともに、当該Y軸の負方向に作用する並進力に応じた出力値が第1閾値以上となるまで基部EBとともに突出部位を、第1方向と逆の方向である第2方向に向かって移動させる動作を第2動作としてロボット20に行わせる。これにより、ロボット制御装置30は、物体Oを所定の状態で第1指部F1と突出部位とによって挟んで把持することができる。
<実施形態の変形例>
以下、本発明の実施形態の変形例について、図面を参照して説明する。なお、実施形態の変形例では、実施形態と同様な構成部に対して同じ符号を付して説明を省略する。
実施形態の変形例では、ロボット20は、第1駆動部MT1に加わる負荷を検出する図示しない第1負荷検出部LD1と、第2駆動部MT2に加わる負荷を検出する図示しない第2負荷検出部LD2を更に備える。
第1負荷検出部LD1は、例えば、第1駆動部MT1の回動軸に加わるトルクを、第1駆動部MT1に加わる負荷として検出するトルクセンサーである。第1負荷検出部LD1は、検出した負荷に応じた出力値を示す第1負荷検出情報をロボット制御装置30に出力する。なお、第1負荷検出部LD1は、トルクセンサーに代えて、第1駆動部MT1の電流値を検出する電流計等の第1駆動部MT1に加わる負荷に応じた何らかの値を検出する他のセンサーであってもよい。
第2負荷検出部LD2は、例えば、第2駆動部MT2の回動軸に加わるトルクを、第2駆動部MT2に加わる負荷として検出するトルクセンサーである。第2負荷検出部LD2は、検出した負荷に応じた出力値を示す第2負荷検出情報をロボット制御装置30に出力する。なお、第2負荷検出部LD2は、トルクセンサーに代えて、第2駆動部MT2の電流値を検出する電流計等の第2駆動部MT2に加わる負荷に応じた何らかの値を検出する他のセンサーであってもよい。
また、実施形態の変形例では、物体Oが、剛体として近似不可能な物体、すなわち弾性体である場合について説明する。物体Oが弾性体であることは、この一例において、エンドエフェクターEによって物体Oが把持された場合における物体Oの変形が、肉眼で検出可能な程度の変形であることを意味する。なお、物体Oが弾性体であることは、これに代えて、エンドエフェクターEによって物体Oが把持された場合における物体Oの変形が、定規、ノギス、マイクロメーターのうちのいずれかで検出可能な程度の変形であることを意味してもよい。このような意味で、以下では、一例として、物体Oが、エンドエフェクターEによって把持されると変形する場合について説明する。この場合、例えば、物体Oの材質は、ゴム等の樹脂である。なお、物体Oの材質は、樹脂に代えて、エンドエフェクターEによって把持されると変形する他の材質であってもよい。
ここで、物体Oが弾性体である場合、所定の状態に応じた長さは、物体Oが第1指部F1と第2指部F2とによって把持されていない場合における第1把持部位と第2把持部位との間の長さと一致せず、物体Oが第1指部F1と第2指部F2とによって把持された場合における第1把持部位と第2把持部位との間の長さと一致する。これは、当該場合、図13に示したように、弾性体である物体Oが変形するからである。図13は、図5に示した物体Oが弾性体である場合において所定の状態で第1指部F1と第2指部F2とによって把持された物体Oの一例を示す図である。図13に示したように、当該場合、物体Oは第1指部F1と第2指部F2とによって変形し、第1把持部位と第2把持部位との間の長さは、第1指部F1と第2指部F2とによって把持されていない場合における第1把持部位と第2把持部位との間の長さよりも短い長さD5になる。
このため、物体Oが弾性体である場合、ロボット制御装置30は、図4に示したフローチャートの処理によってロボット20に予め決められた作業を行わせると、精度よく当該作業をロボット20に行わせることができないことがある。そこで、実施形態の変形例に係るロボット制御装置30は、例えば、図14示したフローチャートの処理によってロボット20に予め決められた作業を行わせる。
図14は、実施形態の変形例に係るロボット制御装置30がロボット20に予め決められた作業を行わせる処理の流れの一例を示す図である。以下では、一例として、図14に示したステップS310の処理が行われるよりも前のタイミングにおいて、メモリー32に予め決められた動作プログラムをロボット制御部365がメモリー32から読み出している場合について説明する。また、以下では、一例として、当該タイミングにおいて、ロボット20の動作を開始させる操作をロボット制御装置30が受け付けている場合について説明する。また、以下では、図14に示したステップS120〜ステップS170の処理は、図4に示したステップS120〜ステップS170の処理と同様の処理であるため、説明を省略する。また、以下では、図14に示したステップS190〜ステップS210の処理は、図4に示したステップS190〜ステップS210の処理と同様の処理であるため、説明を省略する。
判定部363は、メモリー32に予め記憶された第2情報をメモリー32から読み出す(ステップS310)。第2情報は、この一例において、後述するステップS330において行われる第2判定処理において用いられる情報のことである。第2情報の詳細については、後述する。なお、ステップS310の処理は、ステップS330の処理が行われるよりも前のタイミングであれば、如何なるタイミングにおいて行われてもよい。
図14に示したステップS170の処理が行われた後、取得部361は、第1負荷検出部LD1から第1負荷検出情報を取得するとともに、第2負荷検出部LD2から第2負荷検出情報を取得する(ステップS320)。図14に示したフローチャートでは、このようなステップS320における取得部361の処理を、負荷検出情報取得と示している。なお、図14に示したフローチャートにおいて、ステップS170の処理とステップS320の処理とは、逆の順で行われる構成であってもよく、並列に行われる構成であってもよい。
次に、判定部363は、図14に示したステップS170において取得部361が取得した第1位置検出情報及び第2位置検出情報と、ステップS320において取得部361が取得した第1負荷検出情報及び第2負荷検出情報とに基づいて、第2判定処理を行う(ステップS330)。
ここで、ステップS330の処理について説明する。第2判定処理は、ロボット制御装置30が行う判定のうち、弾性体である物体Oが所定の状態で第1指部F1と第2指部F2とによって把持されているか否かの判定を行う処理である。
弾性体である物体Oが所定の状態で第1指部F1と第2指部F2とによって把持された場合、第1指部F1と第2指部F2との間の長さは、第1駆動部MT1に加わる負荷と、第2駆動部MT2に加わる負荷とのそれぞれに応じて変化する。そこで、第2判定処理では、ロボット制御装置30は、ステップS310においてメモリー32から読み出した第2情報を用いて第2判定処理を行う。第2情報は、第1負荷と、第2負荷と、圧縮長さとが対応付けられた情報であり、第1負荷、第2負荷、圧縮長さのそれぞれを示す情報のことである。第2情報は、例えば、第1負荷と、第2負荷と、圧縮長さとが対応付けられたテーブルであるが、これに代えて、第1負荷と、第2負荷と、圧縮長さとが対応付けられた他の情報であってもよい。第1負荷は、物体Oを所定の状態で第1指部F1と第2指部F2とによって把持させる場合において第1駆動部MT1に加わるようにしたい所望の負荷のことである。第2負荷は、当該場合において第2駆動部MT2に加わるようにしたい所望の負荷のことである。圧縮長さは、当該場合において、第1駆動部MT1に加わる負荷を第1負荷に一致させ、第2駆動部MT2に加わる負荷を第2負荷に一致させた際の第1指部F1と第2指部F2との間の長さのことである。ここで、第2情報が示す圧縮長さは、試験、実験等によって予め計測される長さであり、第1値の一例である。
第2判定処理において、判定部363は、図14に示したステップS170において取得部361が取得した第1位置検出情報及び第2位置検出情報に基づいて、第1指部F1に対する第2指部F2の位置を、第1指部F1と第2指部F2との間の長さとして検出(又は算出)する。また、判定部363は、ステップS320において取得部361が取得した第1負荷検出情報及び第2負荷検出情報に基づいて、第1駆動部MT1に加わる負荷と、第2駆動部MT2に加わる負荷とを検出する。そして、判定部363は、検出した第1駆動部MT1に加わる負荷が、第2情報が示す第1負荷と一致するか否かを判定する。判定部363は、当該負荷が第1負荷と一致しない場合、物体Oが所定の状態で第1指部F1と第2指部F2とによって把持されていないと判定する。また、判定部363は、検出した第2駆動部MT2に加わる負荷が、第2情報が示す第2負荷と一致するか否かを判定する。判定部363は、当該負荷が第2負荷と一致しない場合、物体Oが所定の状態で第1指部F1と第2指部F2とによって把持されていないと判定する。判定部363は、検出した第1駆動部MT1に加わる負荷が、第2情報が示す第1負荷と一致し、且つ、検出した第2駆動部MT2に加わる負荷が、第2情報が示す第2負荷と一致すると判定した場合、検出した長さと、第2情報が示す圧縮長さとが一致しているか否かを判定する。
判定部363は、検出した長さと圧縮長さとが一致していないと判定した場合、所定の状態と異なる状態で物体Oが第1指部F1と第2指部F2とによって把持されていると判定する。一方、判定部363は、検出した長さと圧縮長さとが一致していると判定した場合、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されていると判定する。
ここで、判定部363は、例えば、検出した長さを中心値とした誤差範囲に圧縮長さが含まれている場合、当該長さと圧縮長さとが一致していると判定する。一方、判定部363は、当該誤差範囲に圧縮長さが含まれている場合、当該長さと圧縮長さとが一致していると判定する。なお、判定部363は、当該長さに応じた値に基づいて、当該長さと圧縮長さとが一致しているか否かを判定する構成であってもよい。
以上のように、ロボット制御装置30は、物体Oが弾性体である場合、第2動作において力検出部FSから出力される出力値が予め決められた第2閾値よりも小さくなった場合、第1負荷検出部LD1から出力される出力値と、第1位置検出部EC1から出力される出力値に応じた値と、圧縮長さとに基づいて、所定の状態で物体Oが第1指部F1と第2指部F2とによって把持されているか否かの判定を行う。これにより、ロボット制御装置30は、物体Oが弾性体である場合であっても、第1指部F1と第2指部F2とによって物体Oを所定の状態で精度よく把持することができる。
なお、実施形態の変形例に係る第2動作においても、ロボット制御装置30は、軸AXEが第1指部F1と第2指部F2との中間に位置するように基部EBを第1指部F1及び第2指部F2のそれぞれに対して移動させる動作をロボット20に行わせない構成であってもよい。
また、実施形態の変形例に係るエンドエフェクターEも、第2指部F2に代えて、前述の突出部位が設けられる構成であってもよい。実施形態の変形例に係るエンドエフェクターEが第2指部F2に代えて突出部位を備える場合、第2情報は、第1負荷と、圧縮長さとが対応付けられた情報であり、第1負荷と、圧縮長さとのそれぞれを示す情報である。
すなわち、実施形態の変形例に係るエンドエフェクターEが第2指部F2に代えて突出部位を備える場合、第2判定処理において、判定部363は、ステップS320において取得部361が取得した第1負荷検出情報に基づいて、第1駆動部MT1に加わる負荷を検出し、検出した第1駆動部MT1に加わる負荷が、第2情報が示す第1負荷と一致するか否かを判定する。判定部363は、当該負荷が第1負荷と一致しないと判定した場合、物体Oが所定の状態で第1指部F1と第2指部F2とによって把持されていないと判定する。また、判定部363は、検出した第1駆動部MT1に加わる負荷が、第2情報が示す第1負荷と一致すると判定した場合、検出した長さと、第2情報が示す圧縮長さとが一致しているか否かを判定する。
また、実施形態の変形例に係るエンドエフェクターEが第2指部F2に代えて突出部位を備える場合、ロボット制御装置30は、軸AXEが第1指部F1と第2指部F2との中間に位置するように基部EBを第1指部F1に対して移動させる動作をロボット20に行わせない。そして、ロボット制御装置30は、図14に示したステップS150において(すなわち、第2動作において)、力検出座標系FCにおけるY軸の正方向に作用する並進力に応じた出力値を保持するように基部EBに対して第1指部F1を第1方向に向かって移動させるとともに、当該Y軸の負方向に作用する並進力に応じた出力値が第1閾値以上となるまで基部EBとともに突出部位を、第1方向と逆の方向である第2方向に向かって移動させる動作を第2動作としてロボット20に行わせる。これにより、ロボット制御装置30は、物体Oを所定の状態で第1指部F1と突出部位とによって挟んで把持することができる。
なお、上記において説明したロボットシステム1は、複数の物体Oがばら積み状態にされている状況において、第1動作を開始させる前のタイミングに物体Oのばら積み状態が崩れてしまった場合等に適用することで、ロボット20に行わせる作業の精度を向上させることができる。すなわち、ロボットシステム1は、当該場合において物体Oの把持に失敗したとしても、物体Oを把持し直すことができ、物体Oに対する作業の失敗を抑制することができる。
また、上記において説明したロボットシステム1は、第1指部F1と第2指部F2との間の長さに基づいて、エンドエフェクターEによる物体Oの把持の解除に成功したか否かを判定することができる。
また、上記において説明したロボットシステム1は、第1指部F1と第2指部F2との間の長さに基づいて、エンドエフェクターEによる物体Oの把持の解除に成功したか否かを判定することができる。すなわち、ロボットシステム1は、第1指部F1と第2指部F2との間の長さがゼロであるか否かによって、エンドエフェクターEによる物体Oの把持の解除に成功したか否かの判定を行うことができる。そして、ロボットシステム1は、エンドエフェクターEによる物体Oの把持の解除に失敗していると判定した場合、例えば、アームAを振動させる等の動作によって物体OをエンドエフェクターEから落とし、エンドエフェクターEによる物体Oの把持の解除をより確実に行うことができる。
また、上記において説明したロボット制御装置30は、第1動作及び第2動作のそれぞれにおいて、力検出部FSから出力される6つの出力値のうち3つの回転モーメントのそれぞれに応じた出力値を用いない処理を行っている。これにより、ロボット制御装置30は、第1動作及び第2動作のそれぞれに係る判定において、第1指部F1及び第2指部F2それぞれの剛性に基づく誤差によって精度が悪くなってしまうことを抑制することができる。
また、上記において説明したロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、2本以上の腕を備えるロボットである。当該2本以上の腕は、例えば、2本以上のアームAである。ここで、複腕ロボットのうち、2本の腕を備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本の腕を備える双腕ロボットであってもよく、3本以上の腕を備える複腕ロボットであってもよい。当該2本の腕は、例えば、2本のアームAである。当該3本以上の腕は、例えば、3本以上のアームAである。また、ロボット20は、スカラロボット(水平多関節ロボット)、直交座標ロボット、円筒型ロボット等の他のロボットであってもよい。直交座標ロボットは、例えば、ガントリロボットである。
以上のように、ロボット制御装置(この一例において、ロボット制御装置30)は、基部(この一例において、基部EB)と、基部に対して移動可能に設けられた第1指部(この一例において、第1指部F1)と、基部に設けられた第2指部(この一例において、第2指部F2)と、基部に対する第1指部の位置を検出する第1位置検出部(この一例において、第1位置検出部EC1)と、を有する把持部(この一例において、エンドエフェクターE)と、アーム(この一例において、アームA)と、把持部とアームとの間に設けられた力検出部(この一例において、力検出部FS)と、を備えたロボット(この一例において、ロボット20)を制御するロボット制御装置であって、第1指部を物体(この一例において、物体O)に接触させ、力検出部から出力される出力値が所定の第1閾値以上となるまで第1指部を物体に付勢させる第1動作を行わせ、第1動作の後、力検出部から出力される出力値が第1閾値以上である状態を維持し、第1指部とアームとを移動させ、物体に第1指部と第2指部とを接触させる第2動作を行わせ、第2動作において、力検出部から出力される出力値が第1閾値よりも小さい所定の第2閾値よりも小さくなったとき、第1位置検出部から出力される出力値に応じた値と、予め決められた第1値と、の差異が所定の範囲内である場合、物体が所定の状態で第1指部と第2指部とによって把持されていると判定する。これにより、ロボット制御装置は、第1指部と第2指部とによって物体を所定の状態で精度よくロボットに把持させることができる。
また、ロボット制御装置では、所定の状態は、把持部に対する物体の位置が所定の位置と一致している状態、又は、把持部に対する物体の姿勢が所定の姿勢と一致している状態である、構成が用いられてもよい。
また、ロボット制御装置では、第2指部は、基部に対して移動可能であって、把持部は、基部に対する第2指部の位置を検出する第2位置検出部(この一例において、第2位置検出部EC2)を更に有し、第1位置検出部から出力される出力値と、第2位置検出部から出力される出力値と、に応じた値と、第1値と、の差異が所定の範囲内である場合、物体が所定の状態で第1指部と第2指部とによって把持されていると判定する、構成が用いられてもよい。
また、ロボット制御装置では、第2動作をロボットに行わせる際、物体に対してアーム、又は、第2指部を移動させることで第2指部を第1指部に近づく方向に移動させ、物体に第1指部と第2指部とを接触させる、構成が用いられてもよい。
また、ロボット制御装置では、第2動作において、力検出部から出力される出力値がゼロになったとき、物体が前記所定の状態で前記第1指部と前記第2指部とによって把持されているか否かの判定を行う、構成が用いられてもよい。
また、ロボット制御装置では、第1位置検出部から出力される出力値に応じた値と、第1値と、は、距離を示す値である、構成が用いられてもよい。
また、ロボット制御装置では、把持部は、基部に対して第1指部を動かす駆動部と、駆動部に加わる負荷を検出する負荷検出部と、を更に有し、第2動作において、力検出部から出力される出力値が第2閾値よりも小さくなったとき、負荷検出部から出力される出力値に応じた値と、第1位置検出部から出力される出力値に応じた値と、第1値と、予め決められた第2値と、に基づいて、物体が前記所定の状態で前記第1指部と前記第2指部とによって把持されているか否かの判定を行う、構成が用いられてもよい。
また、ロボット制御装置は、把持部(この一例において、エンドエフェクターE)と、把持部が設けられた可動部(この一例において、マニピュレーターM)と、把持部と可動部との間に設けられた力検出部とを備えたロボットを制御するロボット制御装置であって、把持部は、基部と、基部に対して移動可能に設けられた第1指部と、第1指部が移動可能な方向に沿って第1指部と対向するように基部に設けられた突出部位と、基部に対する第1指部の位置を検出する第1位置検出部とを有し、ロボット制御装置は、第1指部を物体に接触させ、力検出部から出力される出力値が予め決められた第1閾値以上となるまで第1指部を物体に押し付ける第1動作をロボットに行わせ、ロボットに第1動作を行わせた後、力検出部から出力される出力値を保持しながら物体に対する突出部位の位置を変化させて物体を第1指部と突出部位とによって把持させる第2動作をロボットに行わせ、第2動作において力検出部から出力される出力値が予め決められた第2閾値よりも小さくなった場合、第1位置検出部から出力される出力値に応じた値と、所定の値とが一致しているか否かによって、予め決められた状態で物体が第1指部と突出部位とによって把持されているか否かの判定を行う。これにより、ロボット制御装置は、第1指部と突出部位とによって物体を予め決められた状態で精度よく把持することができる。
また、ロボット制御装置では、予め決められた状態は少なくとも、把持部に対する物体の位置が予め決められた位置と一致している状態である、構成が用いられてもよい。
また、ロボット制御装置では、予め決められた状態は少なくとも、把持部に対する物体の姿勢が予め決められた姿勢と一致している状態である、構成が用いられてもよい。
また、ロボット制御装置では、突出部位は、基部に対して移動不可能に設けられた冶具である、構成が用いられてもよい。
また、ロボット制御装置では、突出部位は、基部の一部である、構成が用いられてもよい。
また、ロボット制御装置では、突出部位は、第1指部と異なる指部であって基部に対して移動可能に設けられた第2指部であり、把持部は、第2指部の位置を検出する第2位置検出部を更に有する、構成が用いられてもよい。
また、ロボット制御装置は、第1位置検出部から出力される出力値と第2位置検出部から出力される出力値とに応じた値と、所定の値とが一致しているか否かによって、予め決められた状態で物体が第1指部と第2指部とによって把持されているか否かの判定を行う、構成が用いられてもよい。
また、ロボット制御装置は、第2動作を前記ロボットに行わせる際、物体に対して基部と第2指部とのうちいずれか一方又は両方を動かし、第2指部が第1指部に近づく方向に第2指部を移動させ、物体を第1指部と第2指部とによって把持させる、構成が用いられてもよい。
また、ロボット制御装置では、第1指部は、基部に対して第1方向に移動し、第2指部は、基部に対して第1方向と逆の方向である第2方向に移動する、構成が用いられてもよい。
また、ロボット制御装置は、第2動作において、物体に対して第2指部と基部とのそれぞれを動作させ、力検出部から出力される出力値を保持しながら物体に応じた軸と、把持部に応じた軸とを一致させるとともに物体を第1指部と第2指部とによって把持させる、構成が用いられてもよい。
また、ロボット制御装置は、予め決められた状態で物体が第1指部と突出部位とによって把持されていると判定した場合、第1動作、第2動作のそれぞれと異なる第3動作をロボットに行わせ、予め決められた状態と異なる状態で物体が第1指部と突出部位とによって把持されていないと判定した場合、第1動作、第2動作、第3動作のそれぞれと異なる第4動作をロボットに行わせる、構成が用いられてもよい。
また、ロボット制御装置では、第3動作は、物体に対して作業をロボットが行う動作であり、第4動作は、物体を第1指部と突出部位とによって把持し直す動作である、構成が用いられてもよい。
また、ロボット制御装置は、第2動作において力検出部から出力される出力値が第2閾値よりも小さい第3閾値以下となった場合、予め決められた状態で物体が第1指部と突出部位とによって把持されているか否かの判定を行う、構成が用いられてもよい。
また、ロボット制御装置では、第3閾値は、ゼロである、構成が用いられてもよい。
また、ロボット制御装置では、第1位置検出部から出力される出力値に応じた値と、所定の値とのそれぞれは、長さを示す値である、構成が用いられてもよい。
また、ロボット制御装置では、力検出部から出力された出力値は、並進力を示す値である、構成が用いられてもよい。
また、ロボット制御装置では、物体は、弾性体であり、物体の長さのうち第1指部と突出部位とが対向している方向に沿った長さは、第1指部と突出部位とによって把持された場合において変化する、構成が用いられてもよい。
また、ロボット制御装置では、把持部は、基部に対して第1指部を動かす駆動部と、駆動部に加わる負荷を検出する負荷検出部とを更に有し、ロボット制御装置は、第2動作において力検出部から出力される出力値が第2閾値よりも小さくなった場合、負荷検出部から出力される出力値と、第1位置検出部から出力される出力値に応じた値と、所定の値とに基づいて、予め決められた状態で物体が第1指部と突出部位とによって把持されているか否かの判定を行う、構成が用いられてもよい。
また、ロボット制御装置では、所定の値を示す情報(この一例において、第1情報、第2情報のそれぞれ)が記憶されたメモリーを備え、ロボット制御装置は、メモリー(この一例において、メモリー32)から当該情報を読み出す、構成が用いられてもよい。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。当該装置は、例えば、ロボット制御装置30等である。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル、差分プログラム等であってもよい。