<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、図1〜図4を参照し、ロボットシステム1の構成について説明する。図1は、実施形態に係るロボットシステム1の構成の一例を示す図である。図2は、ロボット20の構成の一例を示す図である。
ロボットシステム1は、例えば、架台BSと、ロボット20を備える。なお、ロボットシステム1は、これらに加えて、物体を搬送する搬送装置(例えば、搬送用の他のロボット、ベルトコンベア等)、撮像部(すなわち、ロボット20と別体のカメラ)等の他の装置を備える構成であってもよい。
以下では、説明の便宜上、重力方向(鉛直下方向)を下方向又は下と称し、下方向と反対の方向を上方向又は上と称して説明する。以下では、一例として、下方向が、ロボット20のロボット座標系RCにおけるZ軸の負方向と一致する場合について説明する。なお、下方向は、当該負方向と一致しない構成であってもよい。
架台BSは、例えば、直方体形状の金属製の枠である。なお、架台BSの形状は、直方体形状に代えて、円柱形状等の他の形状であってもよい。また、架台BSの材質は、金属に代えて、樹脂等の他の材質であってもよい。架台BSが有する端部のうち最も上側の端部である最上部には、天井板として平板が設けられている。架台BSが有する端部のうち最も下側の端部である最下部には、床板として平板が設けられている。また、架台BSは、設置面に設置される。設置面は、例えば、床面である。なお、設置面は、床面に代えて、壁面、地面、天井面等の他の面であってもよい。ロボットシステム1では、ロボット20は、架台BSの内側において所定の作業を行うことが可能なように架台BSの天井板に設置される。なお、ロボットシステム1は、架台BSを備えない構成であってもよい。この場合、ロボット20は、架台BSに代えて、床面、壁面等に設置される。
ロボット20は、基台Bと、基台Bにより支持された可動部Aと、ロボット制御装置30を備える単腕ロボットである。単腕ロボットは、この一例における可動部Aのような1本の腕を備えるロボットである。なお、ロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、2本以上の腕(例えば、2本以上の可動部A)を備えるロボットである。なお、複腕ロボットのうち、2本の腕を備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本の腕を備える双腕ロボットであってもよく、3本以上の腕(例えば、3本以上の可動部A)を備える複腕ロボットであってもよい。また、ロボット20は、スカラロボット(水平多関節ロボット)、直交座標ロボット、円筒型ロボット等の他のロボットであってもよい。直交座標ロボットは、例えば、ガントリロボットである。
基台Bの形状は、例えば、長手方向が上下方向に沿ったほぼ直方体形状である。基台Bは、中空となっている。基台Bが有する面のうちの1つには、フランジBFが設けられている。また、フランジBFには、可動部Aが設けられている。すなわち、基台Bは、フランジBFによって可動部Aを支持している。なお、基台Bの形状は、このような形状に代えて、可動部Aを支持可能な形状であれば、立方体形状、円柱形状、多面体形状等の他の形状であってもよい。
以下では、説明の便宜上、基台Bが有する面のうちフランジBFが設けられている面を上面と称し、基台Bが有する面のうちフランジBFが設けられている面と反対側の面を下面と称して説明する。基台Bは、例えば、基台Bの下面から基台Bの上面に向かう方向が下方向と一致するように、すなわち、ロボット20の作業領域の全体が当該天井板よりも下側に位置するように当該天井板に設置される。具体的には、例えば、当該天井板には、上下方向に貫通し、基台Bを挿入可能な図示しない開口部が形成されている。当該開口部は、フランジBFよりも小さい。ユーザーは、フランジBFと当該天井板とを複数本のボルトによって固定することにより、基台Bを当該天井板に設置する(取り付ける)ことができる。すなわち、フランジBFと当該天井板のそれぞれには、複数のボルトのそれぞれが挿入される複数の貫通孔が形成されている。なお、基台Bは、架台BSの他の位置に設置される構成であってもよい。また、フランジBFと当該天井板との固定方法は、他の方法であってもよい。
可動部Aは、マニピュレーターMと、エンドエフェクターEと、力検出部21と、撮像部10と、吐出部Dを備える。
マニピュレーターMは、6個のアームである第1アームL1〜第6アームL6と、6つの関節である関節J1〜関節J6を備える。基台Bと第1アームL1は、関節J1によって連結される。第1アームL1と第2アームL2は、関節J2によって連結される。第2アームL2と第3アームL3は、関節J3によって連結される。第3アームL3と第4アームL4は、関節J4によって連結される。第4アームL4と第5アームL5は、関節J5によって連結される。第5アームL5と第6アームL6は、関節J6によって連結される。すなわち、マニピュレーターMを備える可動部Aは、6軸垂直多関節型のアームである。なお、可動部Aは、5軸以下の自由度で動作する構成であってもよく、7軸以上の自由度で動作する構成であってもよい。
第1アームL1は、関節J1の回動軸である第1回動軸AX1(例えば、図3参照)周りに回動可能である。第2アームL2は、関節J2の回動軸である第2回動軸AX2(例えば、図3参照)周りに回動可能である。第3アームL3は、関節J3の回動軸である第3回動軸AX3(例えば、図3参照)周りに回動可能である。第4アームL4は、関節J4の回動軸である第4回動軸AX4(例えば、図3参照)周りに回動可能である。第5アームL5は、関節J5の回動軸である第5回動軸AX5(例えば、図3参照)周りに回動可能である。第6アームL6は、関節J6の回動軸である第6回動軸AX6(例えば、図3参照)周りに回動可能である。
ここで、図3〜図5を参照し、マニピュレーターMについてより詳しく説明する。図3は、図1及び図2に示したロボット20の側面図の一例を示す図である。
図3に示したように、基台Bの下面から基台Bの上面に向かう方向が下方向と一致しているため、関節J2は、関節J1よりも下側に位置している。関節J2は、第1回動軸AX1の延長上に位置していない。これは、第1アームL1の形状が、屈曲した形状であるためである。この一例において、第1アームL1の形状は、ロボット座標系RCにおけるX軸の正方向から負方向に向かってロボット20を見た場合において、丸みを帯びてほぼL字型に湾曲した形状である。具体的には、第1アームL1は、4つの部位である部位L11〜部位L14によって構成されている。部位L11は、図3において、第1アームL1を構成する4つの部位のうち、基台Bから第1回動軸AX1に沿って下方向に延伸している部位のことである。部位L12は、当該4つの部位のうち、部位11の下端から第2回動軸AX2に沿ってロボット座標系RCにおけるY軸の負方向に延伸する部位のことである。部位L13は、当該4つの部位のうち、部位L12の端部のうち部位L11と反対側の端部から、第1回動軸AX1に沿って下方向に延伸している部位のことである。部位L14は、当該4つの部位のうち、部位L13の端部のうち部位L12と反対側の端部から、第2回動軸AX2に沿って当該Y軸の正方向に延伸する部位のことである。ここで、部位L11〜部位L14は、一体として第1アームL1を構成してもよく、別体として第1アームL1を構成してもよい。また、図3において、部位L12と部位L13は、ロボット座標系RCにおけるX軸に沿ってロボット20を見た場合、ほぼ直交している。
第2アームL2の形状は、長手形状である。第2アームL2は、第1アームL1の先端部、すなわち、部位L14の端部のうち部位L13と反対側の端部に接続されている。
第3アームL3の形状は、長手形状である。第3アームL3は、第2アームL2の端部のうち第1アームL1と接続されている端部と反対側の端部に接続されている。
第4アームL4は、第3アームL3の先端部、すなわち、第3アームL3の端部のうち第2アームL2が接続されている端部と反対側の端部に接続されている。第4アームL4には、互いに対向する一対の支持部である支持部L41及び支持部L42が形成されている。支持部L41及び支持部L42は、第4アームL4の第5アームL5との接続に用いられる。すなわち、第4アームL4は、第5アームL5を支持部L41及び支持部L42の間に位置させ、支持部L41及び支持部L42によって第5アームL5に接続されている。なお、第4アームL4は、これに限られず、1つの支持部によって第5アームL5を支持する構成(片持ち)であってもよく、3つ以上の支持部によって第5アームL5を支持する構成であってもよい。
第5アームL5は、前述したように、支持部L41及び支持部L42の間に位置し、支持部L41及び支持部L42に接続される。
第6アームL6の形状は、平板形状である。すなわち、第6アームL6は、フランジである。第6アームL6は、第5アームL5の端部のうち第4アームL4と反対側の端部に接続されている。また、第6アームL6には、当該端部に力検出部21を介してエンドエフェクターEが接続される。具体的には、第6アームL6とエンドエフェクターEの間には、力検出部21が設けられる。
また、この一例において、マニピュレーターMが備える6つの関節それぞれの回動軸のうち第2回動軸AX2と第3回動軸AX3とは、互いに平行である。なお、第2回動軸AX2と第3回動軸AX3とは、互いに非平行であってもよい。
また、この一例において、マニピュレーターMが備える6つの関節それぞれの回動軸の軸方向は、互いに異なる軸方向である。なお、本実施形態において、2つの関節それぞれの軸方向が異なるとは、一方の軸方向と他方の軸方向とが一致していない(重なっていない)ことを示す。すなわち、本実施形態では、当該2つの関節の回動軸が平行であっても、これらの回動軸が重なっていない場合、当該2つの関節の軸方向が異なると称する。
なお、図1〜図3のそれぞれでは、図を簡略化するため、関節J1〜関節J6のそれぞれが備えているアクチュエーター、エンコーダー、減速機、ブレーキ等の構成を省略している。当該ブレーキは、電磁ブレーキであってもよく、メカニカルブレーキであってもよい。また、関節J1〜関節J6のうちの一部又は全部は、減速機を備えない構成であってもよい。また、関節J1〜関節J6のうちの一部又は全部は、ブレーキを備えない構成であってもよい。
ここで、マニピュレーターMでは、第1回動軸AX1の軸方向から見て、第1アームL1と第2アームL2とが重なることが可能である。また、マニピュレーターMでは、第2回動軸AX2の軸方向から見て、第1アームL1と第2アームL2とが重なることが可能である。また、マニピュレーターMでは、第2回動軸AX2の軸方向から見て、第2アームL2と第3アームL3とが重なることが可能である。また、マニピュレーターMでは、第4回動軸AX4の軸方向から見て、第4アームL4と第5アームL5とが重なることが可能である。なお、本実施形態において、ある2つのアームをある方向から見た場合に当該2つのアームが重なるとは、当該2つのアームのうちの一方のアームが他方のアームに重なっている面積の割合が所定割合以上であることを示す。所定割合は、例えば、9割であるが、これに限られず、他の割合であってもよい。また、マニピュレーターMは、第3回動軸AX3の軸方向から見て、第3アームL3と第4アームL4とが重なることが可能であるように構成されてもよい。また、マニピュレーターMは、第5回動軸AX5の軸方向から見て、第5アームL5と第6アームL6とが重なることが可能であるように構成されてもよい。
ここで、マニピュレーターMは、マニピュレーターMの状態を、関節J2と関節J3のそれぞれを回動させることにより、コンパクト状態にすることができる。コンパクト状態は、この一例において、第1回動軸AX1に沿った方向において第2回動軸AX2と第5回動軸AX5との間の距離が最も短い状態、且つ第1回動軸AX1と第4回動軸AX4とが一致した状態のことである。すなわち、図3に示したマニピュレーターMの状態は、コンパクト状態である。図3に示したロボット20をロボット座標系RCにおけるY軸の正方向から当該Y軸の負方向に向かって見た場合、コンパクト状態におけるマニピュレーターMでは、図4に示したように第1アームL1と第2アームL2と第3アームL3との3つのアームが重なる。図4は、図3に示したロボット20をロボット座標系RCにおけるY軸の正方向から当該Y軸の負方向に向かって見た場合のロボット20の正面図の一例である。
マニピュレーターMの状態をコンパクト状態にすることができる理由は、第2アームL2が、関節J2の回動によって架台BSの天井板、第1アームL1のそれぞれと干渉しない形状及び大きさに形成されているためである。
ここで、この一例において、マニピュレーターMの状態がコンパクト状態である場合、第1回動軸AX1に沿った方向において、第1アームL1の長さは、第2アームL2の長さよりも長い。また、当該場合、当該方向において、第2アームL2の長さは、第3アームL3の長さよりも長い。また、当該場合、当該方向において、第4アームL4の長さは、第5アームL5の長さよりも長い。また、当該場合、当該方向において、第5アームL5の長さは、第6アームL6の長さよりも長い。なお、第1アームL1〜第6アームL6それぞれの長さは、これらに代えて、他の長さであってもよい。
また、マニピュレーターMの状態をコンパクト状態にすることができるため、マニピュレーターMは、図5に示したように、関節J1を回動させずに関節J2を回動させることにより、コンパクト状態を経て、関節J6の位置を、第1回動軸AX1周りに180°異なる位置に移動させることが可能である。図5は、マニピュレーターMの動作のうちコンパクト状態を経る動作を説明するための図である。関節J6の位置は、この一例において、関節J6の重心の位置によって表される。なお、関節J6の位置は、関節J6の重心の位置に代えて、関節J6に対応付けられた他の位置によって表される構成であってもよい。より具体的には、マニピュレーターMは、関節J1を回動させずに関節J2を回動させることにより、マニピュレーターMの先端である第6アームL6を図5の左側に示す左側位置から、コンパクト状態を経て、第1回動軸AX1周りに180°異なる図5の右側に示す右側位置に移動させることが可能である。なお、図5に示した動作では、第6アームL6は、第1回動軸AX1に沿った方向からロボット20を見た場合、直線上を移動する。
また、第3アームL3〜第6アームL6の長さの合計は、第2アームL2の長さよりも長い。これにより、第2回動軸AX2に沿った方向からロボット20を見た場合にマニピュレーターMの状態をコンパクト状態と一致させると、第2アームL2から第6アームL6の先端を突出させることができる。その結果、第6アームL6にエンドエフェクターEを取り付けた場合において、エンドエフェクターEが第1アームL1及び第2アームL2と干渉してしまうことを抑制することができる。
このようにマニピュレーターMは、第1回動軸AX1を回動させずに第2回動軸AX2を回動させることにより、コンパクト状態を経て、エンドエフェクターEを第1回動軸AX1周りに180°異なる位置に移動させることができる。その結果、ロボット20は、エンドエフェクターEを効率よく移動させることができるとともに、ロボット20の一部が他の物体と干渉しないようにするために設ける空間を小さくすることができる。
図2に戻る。マニピュレーターMが備える関節J1〜関節J6のそれぞれに備えられたアクチュエーターは、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、マニピュレーターMを動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、当該アクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
エンドエフェクターEは、物体を空気によって吸着(保持)可能な吸着部を備えるエンドエフェクターである。エンドエフェクターEは、保持部の一例である。なお、エンドエフェクターEは、当該吸着部を備えるエンドエフェクターに代えて、物体を把持可能な爪部(指部)を備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
エンドエフェクターEは、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、エンドエフェクターEは、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、エンドエフェクターEは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
力検出部21は、エンドエフェクターEとマニピュレーターMの間に備えられる。力検出部21は、例えば、力センサーである。力検出部21は、エンドエフェクターE又はエンドエフェクターEにより吸着された物体に作用した外力を検出する。当該外力には、エンドエフェクターE又はエンドエフェクターEにより吸着された物体を並進させる並進力と、エンドエフェクターE又はエンドエフェクターEにより把持された物体を回転させる回転モーメント(トルク)とが含まれる。力検出部21は、検出した外力の大きさを示す値を出力値として含む力検出情報を通信によりロボット制御装置30へ出力する。
力検出情報は、ロボット制御装置30によるロボット20の制御のうちの力検出情報に基づく制御である力制御に用いられる。力制御は、力検出情報が示す外力が所定の終了条件を満たす状態を実現するようにエンドエフェクターEとマニピュレーターMの少なくとも一方を動作させる制御である。終了条件は、力制御によるロボット20の動作をロボット制御装置30が終了させるための条件である。すなわち、力制御は、例えば、インピーダンス制御等のコンプライアントモーション制御のことである。なお、力検出部21は、トルクセンサー等のエンドエフェクターE又はエンドエフェクターEにより吸着された物体に加わる力やモーメントの大きさを示す値を検出する他のセンサーであってもよい。また、力検出部21は、エンドエフェクターEとマニピュレーターMの間に備えられる構成に代えて、マニピュレーターMの他の部位に備えられる構成であってもよい。
力検出部21は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、力検出部21とロボット制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続される構成であってもよい。
力検出部21をロボット20が備えていることにより、ユーザーは、ロボット制御装置30にロボット20の動作を教示(記憶)させる際、ダイレクトティーチングによってロボット制御装置30に当該動作を教示させることができる。また、力検出部21をロボット20が備えていることにより、ロボット制御装置30は、例えば、力制御によって物体を変形させてしまうことなくロボット20に保持させることができる。
撮像部10は、例えば、集光された光を電気信号に変換する撮像素子であるCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等を備えたカメラである。この一例において、撮像部10は、エンドエフェクターEの一部に備えられる。そのため、撮像部10は、可動部Aの動きに応じて移動する。また、撮像部10が撮像可能な範囲は、可動部Aの動きに応じて変化する。撮像部10は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
撮像部10は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、撮像部10は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
吐出部Dは、吐出物を吐出可能なディスペンサーである。吐出物は、液体、気体、粉粒体等の吐出可能な物質のことである。以下では、一例として、吐出物がグリース(潤滑材)である場合について説明する。吐出部Dは、図示しないシリンジ部と、図示しないニードル部と、シリンジ部の内部に空気を注入する図示しない空気注入部とを備える。シリンジ部は、内部にグリースを入れる空間を有する容器である。ニードル部は、シリンジ部に入っているグリースを吐出する針を有する。ニードル部は、当該針の先端からグリースを吐出する。すなわち、吐出部Dは、空気注入部がシリンジ部の内部に空気を注入することにより、シリンジ部の内部に入っているグリースをニードル部の先端から吐出する。この一例において、吐出部Dは、エンドエフェクターEの一部に備えられる。そのため、吐出部Dが吐出物を吐出可能な位置は、可動部Aの動きに応じて変化する。
ロボット制御装置30は、ロボット20を制御するコントローラーである。ロボット制御装置30は、ユーザーにより予め記憶された動作プログラムに基づいてロボット20を動作させる。これにより、ロボット制御装置30は、ロボット20に所定の作業を行わせることができる。
ロボット制御装置30は、この一例において、基台Bの内側に設けられている(内蔵されている)。なお、ロボット制御装置30は、これに代えて、ロボット20と別体であってもよい。この場合、ロボットシステム1は、ロボット20と、ロボット20と別体のロボット制御装置30とを少なくとも備える。
<ロボットを動作させる際にロボット制御装置が行う処理の概要>
以下、ロボット20を動作させる際にロボット制御装置30が行う処理の概要について説明する。
ロボット制御装置30は、吐出部Dの予め決められた位置に、吐出部Dとともに動くTCP(Tool Center Point)である制御点Tを設定する。吐出部Dの予め決められた位置は、吐出部Dが備えるニードル部の先端の位置である。なお、吐出部Dの予め決められた位置は、これに代えて、吐出部Dの重心の位置等の吐出部Dに対応付けられた他の位置であってもよい。また、ロボット制御装置30は、吐出部Dの予め決められた位置に制御点Tを設定する構成に代えて、可動部Aに対応付けられた他の位置に制御点Tを設定する構成であってもよい。
ロボット制御装置30は、ユーザーから予め入力された制御点設定情報に基づいて制御点Tを設定する。制御点設定情報は、例えば、P点(ロボット20の出力点)の位置及び姿勢から、吐出部Dが備えるニードル部の先端の位置及び姿勢までの相対的な位置及び姿勢を示す情報である。P点は、可動部A(すなわち、ロボット20)の位置及び姿勢を表す仮想的な点のことであり、関節J1〜関節J6それぞれの回動角に基づいて位置及び姿勢を算出可能な点のことである。以下では、P点が、関節J6の重心とともに動く仮想的な点である場合について説明する。すなわち、この一例において、P点の位置は、当該重心に対応付けられた三次元局所座標系であるP点座標系PCの原点のロボット座標系RCにおける位置によって表される。また、P点の姿勢は、P点座標系PCにおける各座標軸のロボット座標系RCにおける方向によって表される。この場合、P点と制御点Tとの間の相対的な位置及び姿勢は、振動等による誤差を除いて、ロボット20が如何様に動作しても変化しない。ロボット制御装置30は、現在の関節J1〜関節J6それぞれの回動角に基づく順運動学によって、P点の位置及び姿勢を算出することができる。その結果、ロボット制御装置30は、算出したP点の位置及び姿勢と、制御点設定情報とに基づいて、制御点Tの位置及び姿勢を算出することができる。なお、P点は、関節J6の重心とともに動く仮想的な点に代えて、可動部Aに対応付けられた他の部位とともに動く仮想的な点であってもよい。
制御点Tには、制御点Tの位置を示す情報である制御点位置情報と、制御点Tの姿勢を示す情報である制御点姿勢情報とが対応付けられている。なお、制御点Tには、これらに加えて、他の情報が対応付けられる構成であってもよい。ロボット制御装置30は、制御点位置情報及び制御点姿勢情報のそれぞれを指定(決定)する。ロボット制御装置30は、関節J1〜関節J6のうちの少なくとも1つを動作させることによってP点を動かし、指定した制御点位置情報が示す位置に制御点Tの位置を一致させるとともに、指定した制御点姿勢情報が示す姿勢に制御点Tの姿勢を一致させる。すなわち、ロボット制御装置30は、制御点位置情報及び制御点姿勢情報を指定することにより、ロボット20を動作させる。
この一例ではロボット20が6軸垂直多関節型の可動部Aを備えるため、制御点Tの位置は、関節J1〜関節J3のそれぞれを回動させることによっておおよそ決定される。なお、制御点Tの位置は、関節J4〜関節J6のそれぞれを回動させることによって微調整することもできる。また、当該一例では、制御点Tの姿勢は、関節J4〜関節J6のそれぞれを回動させることによって決定される。
この一例において、制御点Tの位置は、制御点座標系TCの原点のロボット座標系RCにおける位置によって表される。また、制御点Tの姿勢は、制御点座標系TCの各座標軸のロボット座標系RCにおける方向によって表される。制御点座標系TCは、制御点Tとともに動くように制御点Tに対応付けられた三次元局所座標系である。なお、この一例において、吐出部Dが備えるニードル部の先端の位置及び姿勢は、制御点Tの位置及び姿勢によって表される。
また、ロボット制御装置30は、ロボット制御装置30に予め記憶された教示点情報に基づいて制御点Tを移動させる。
教示点情報は、教示点を示す情報である。教示点は、ロボット制御装置30がマニピュレーターMを動作させる際に制御点Tを移動させる目標となる仮想的な点のことである。教示点には、教示点位置情報と、教示点姿勢情報と、教示点速度情報と、教示点識別情報とが対応付けられている。教示点位置情報は、教示点の位置を示す情報である。また、教示点姿勢情報は、教示点の姿勢を示す情報である。教示点速度情報は、教示点の速度を示す情報である。教示点識別情報は、教示点を識別する情報である。また、教示点識別情報は、教示点の順番を示す情報でもある。この一例において、教示点の位置は、教示点に対応付けられた三次元局所座標系である教示点座標系の原点のロボット座標系RCにおける位置によって表される。また、教示点の姿勢は、教示点座標系の各座標軸のロボット座標系RCにおける方向によって表される。
ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、教示点情報が示す1以上の教示点を順に指定する。そして、ロボット制御装置30は、当該動作プログラムに基づいて、現在の制御点Tが一致している教示点である第1教示点から、指定した教示点である第2教示点までの軌道を生成(算出)する。当該軌道は、直線であってもよく、曲線であってもよい。以下では、一例として、当該軌道が直線である場合について説明する。なお、第1教示点には、ロボット20が最初に制御点Tを一致させている始点が含まれる。
また、ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、連続経路制御(CP(Continuous Path)制御)を行う。連続経路制御では、ロボット制御装置30は、第1教示点から第2教示点までの軌道であって制御点Tの位置及び姿勢の変化を表す軌道を、第1教示点から第2教示点まで制御点Tが移動する際の経過時間の関数として生成(算出)する。すなわち、ロボット制御装置30は、経過時間を指定することによって、当該軌道に基づいて当該軌道上における制御点Tの位置及び姿勢を特定することができる。以下では、説明の便宜上、当該軌道を連続経路軌道(CP軌道)と称して説明する。ここで、ロボット制御装置30は、連続経路軌道を生成する際、連続経路軌道に沿って移動する制御点Tの速度が、第2教示点の速度である場合における連続経路軌道を生成する。そして、ロボット制御装置30は、生成した連続経路軌道に沿って制御点Tを第1教示点から第2教示点まで移動させる。この際、ロボット制御装置30は、第1教示点から制御点Tを移動させ始めるタイミングからの経過時間を計時し、計時した当該経過時間に応じた位置及び姿勢であって連続経路軌道上における制御点Tの位置及び姿勢を目標位置及び目標姿勢として特定する。ロボット制御装置30は、特定した目標位置を示す情報を制御点位置情報として指定し、特定した目標姿勢を示す情報を制御点姿勢情報として指定する。目標位置及び目標姿勢は、ロボット制御装置30が制御点Tの位置及び姿勢を一致させる目標となる位置及び姿勢のことである。これにより、ロボット制御装置30は、制御点Tの位置及び姿勢を目標位置及び目標姿勢に一致させる。このようにして、ロボット制御装置30は、制御点Tが第2教示点と一致するまで前述の経過時間に応じて制御点Tを移動させることができる。なお、連続経路制御によって連続経路軌道を生成する方法については、既知の方法を用いてもよく、これから新たに開発される方法を用いてもよいため説明を省略する。
連続経路制御においてロボット制御装置30が制御点Tを連続経路軌道に沿って移動させる際、ロボット制御装置30は、制御点Tの位置及び姿勢が目標位置及び目標姿勢に一致した場合における関節J1〜関節J6それぞれの回動角を第1回動角として逆運動学に基づいて算出する。例えば、現在の制御点Tの位置及び姿勢が位置及び姿勢X1と一致しており、目標位置及び目標姿勢が位置及び姿勢X2である場合、ロボット制御装置30は、位置及び姿勢X2に制御点Tの位置及び姿勢が一致した場合における関節J1〜関節J6それぞれの回動角を第1回動角として逆運動学に基づいて算出する。ロボット制御装置30は、算出した第1回動角に基づいて、関節J1〜関節J6それぞれに連続経路動作を行わせることにより、制御点Tの位置及び姿勢を目標位置及び目標姿勢に一致させる。ある関節に行わせる連続経路動作は、当該関節の回動角を第1回動角に含まれる当該関節の回動角に一致させる動作のことである。例えば、関節JNに行わせる連続経路動作は、関節JNの回動角を、第1回動角に含まれる関節JNの回動角に一致させる動作のことである。ここで、Nは、1〜6のいずれかの整数である。このような連続経路動作を関節J1〜関節J6のそれぞれに繰り返させることにより、ロボット制御装置30は、制御点Tを第1教示点から第2教示点に移動させる。
ここで、連続経路動作時にロボット20の姿勢が特異姿勢に近づいた場合、ロボット20が備える複数の関節のうちの少なくとも1つの関節は、当該関節の速度(すなわち、回動速度又は角速度)が限界速度を超えて回動することがある。限界速度を超えて回動し続けた関節には、不具合が生じる可能性がある。このため、当該場合、ロボット20は、エラーが発生したと判定し、動作の停止等のエラーの発生に応じた各種の動作を行う。しかし、このような動作をロボット20が行った場合、ロボット制御装置30がロボット20に行わせていた所定の作業が中断されてしまい、当該作業の効率を低下させてしまうことがある。
特異姿勢は、ロボットのP点が特異点と一致した場合におけるロボットの姿勢のことである。特異点は、P点が一致することにより、ロボット20の自由度が減少又は増加することによって逆運動学における解が不定となる仮想的な点のことである。ロボット20にP点が定義(設定)される位置は、ロボット20の構造毎に異なる。このため、特異姿勢は、ロボット20の構造に応じて異なる姿勢である。ロボット20の姿勢は、この一例において、ロボット20の関節J1〜関節J6それぞれの回動角の組み合わせによって表される。
このような問題を抑制するため、この一例におけるロボット制御装置30は、ロボット20のP点が特異点を通過しないように制御点Tが移動可能な領域を表示する。これにより、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定を補助することができる。すなわち、ユーザーは、ロボット制御装置30により表示された当該領域を参照し、ロボット20のP点が特異点を通過しないように制御点Tが移動可能な領域内に、ロボット20の作業領域を決定することができる。なお、ロボットシステム1において、P点と制御点Tとは、同じ位置に設定される構成であってもよい。
以下では、ロボット制御装置30がロボット20のP点が特異点を通過しないように制御点Tが移動可能な領域を表示する領域表示処理と、ロボット制御装置30がロボット20に所定の作業を行わせる処理とについて詳しく説明する。
<ロボット制御装置がロボットに行わせる所定の作業の概要>
以下、ロボット制御装置30がロボット20に行わせる所定の作業について説明する。
所定の作業には、この一例において、第1作業と、第2作業との2つの作業が含まれる。第1作業は、架台BSの内側に設けられた平板形状の作業台TBの上面に配置された対象物Oの上面にグリースを吐出(すなわち、塗布)する作業である。第2作業は、作業台TBの上面に配置された対象物Gの側面にグリースを吐出(すなわち、塗布)する作業である。なお、所定の作業は、これに代えて、他の作業であってもよい。また、所定の作業は、第1作業と第2作業とのいずれか一方であってもよい。
対象物Oは、製品に組み付ける産業用の部品や部材である。以下では、一例として、対象物Oが製品に組み付ける平板形状のプレートである場合について説明する。なお、対象物Oは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、対象物Oの形状は、平板形状に代えて、円盤形状、直方体形状、円柱形状等の他の形状であってもよい。
対象物Gは、製品に組み付ける産業用の部品や部材であり、対象物Oと異なる部品や部材である。以下では、一例として、対象物Gが製品に組み付ける歯車である場合について説明する。なお、対象物Gは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。図1では、図を簡略化するため、歯車である対象物Gを円柱形状の物体として表している。ここで、以下では、一例として、作業台TBの上面に配置された対象物Gの側面が、歯車の歯が並んだ面である場合について説明する。
<ロボット制御装置のハードウェア構成>
以下、図6を参照し、ロボット制御装置30のハードウェア構成について説明する。図6は、ロボット制御装置30のハードウェア構成の一例を示す図である。
ロボット制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34と、表示部35を備える。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。また、ロボット制御装置30は、通信部34を介して撮像部10、ロボット20、吐出部Dのそれぞれと通信を行う。
CPU31は、記憶部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等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部32は、ロボット制御装置30が処理する各種情報(教示点情報を含む)、各種プログラム(動作プログラムを含む)、各種画像等を格納する。
入力受付部33は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部33は、これらに代えて、表示部35と一体に構成されたタッチパネルであってもよい。また、入力受付部33は、ロボット制御装置30と別体であってもよい。この場合、入力受付部33は、有線又は無線によってロボット制御装置30と通信可能に接続される。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部35は、例えば、液晶ディスプレイパネル、あるいは、有機EL(ElectroLuminescence)ディスプレイパネルである。なお、表示部35は、ロボット制御装置30と別体であってもよい。この場合、表示部35は、有線又は無線によってロボット制御装置30と通信可能に接続される。
<ロボット制御装置の機能構成>
以下、図7を参照し、ロボット制御装置30の機能構成について説明する。図7は、ロボット制御装置30の機能構成の一例を示す図である。
ロボット制御装置30は、記憶部32と、表示部35と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、表示制御部361と、撮像制御部363と、吐出制御部365と、画像取得部367と、力検出情報取得部369と、位置姿勢算出部371と、ロボット制御部375を備える。制御部36が備えるこれらの機能部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
表示制御部361は、ロボット制御装置30が表示部35に表示させる各種の画像を生成する。表示制御部361は、生成した画像を表示部35に表示させる。
撮像制御部363は、撮像部10が撮像可能な範囲を撮像部10に撮像させる。
吐出制御部365は、ロボット制御部375からの要求に応じて、吐出部Dが吐出可能な位置に対して吐出部Dに吐出物を吐出させる。
画像取得部367は、撮像部10が撮像した撮像画像を撮像部10から取得する。
力検出情報取得部369は、力検出部21が検出した外力の大きさを示す値を出力値として含む力検出情報を力検出部21から取得する。
位置姿勢算出部371は、画像取得部367が取得した撮像画像に基づいて、撮像画像に含まれる物体の位置及び姿勢を算出する。
ロボット制御部375は、記憶部32に予め記憶された教示点情報のうち第1作業に用いられる教示点情報である教示点第1情報を記憶部32から読み出す。また、ロボット制御部375は、関節J1〜関節J6それぞれの回動角を示す情報をロボット20から取得し、取得した当該情報に基づく順運動学によって、現在の制御点Tの位置及び姿勢を第1教示点の位置及び姿勢として算出する。ロボット制御部375は、算出した第1教示点と、記憶部32から読み出した教示点第1情報が示す1以上の第2教示点のそれぞれとに基づいて、連続経路軌道を生成する。ロボット制御部375は、生成した連続経路軌道に基づいて、ロボット20に第1作業を行わせる。
また、ロボット制御部375は、記憶部32に予め記憶された教示点情報のうち第2作業に用いられる教示点情報である教示点第2情報を記憶部32から読み出す。ロボット制御部375は、読み出した教示点第2情報に基づいて、ロボット20に第2作業を行わせる。
なお、ロボット制御部375は、ロボット20を動作させる際、力検出情報取得部369が取得した力検出情報に基づく制御を行ってもよく、力検出情報取得部369が取得した力検出情報に基づく制御を行わなくてもよい。
<ロボット制御装置が行う領域表示処理>
以下、図8を参照し、ロボット制御装置30が行う領域表示処理について説明する。図8は、ロボット制御装置30が行う領域表示処理の流れの一例を示すフローチャートである。なお、図8に示したフローチャートでは、ステップS110の処理が行われる前に、ロボット制御装置30が領域表示処理を開始する操作をユーザーから予め受け付けた場合について説明する。
表示制御部361は、領域表示画面を生成する(ステップS110)。領域表示画面は、領域表示処理においてロボット制御装置30がユーザーから各種の操作を受け付ける画面である。次に、表示制御部361は、ステップS110において生成した領域表示画面を表示部35に表示させる(ステップS120)。
次に、ロボット制御部375は、ステップS120において表示部35に表示された領域表示画面からフラグ情報を受け付けるまで待機する(ステップS130)。ここで、ステップS130の処理について説明する。
フラグ情報は、3つのフラグである第1フラグ、第2フラグ、第3フラグのそれぞれを示す情報である。
第1フラグは、ロボット制御部375がロボット20を動作させる際、第11動作と第12動作とのいずれの動作をロボット20に行わせるかをロボット制御部375に指示するフラグである。第1フラグが0を示す場合、ロボット制御部375は、ロボット20に第11動作を行わせる。一方、第1フラグが1を示す場合、ロボット制御部375は、ロボット20に第12動作を行わせる。第11動作は、ロボット20の動作のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、第5回動軸AX5が第1回動軸AX1よりも常に右側又は第1回動軸AX1上に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。第12動作は、ロボット20の動作のうち、当該場合において、第5回動軸AX5が第1回動軸AX1よりも常に左側に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。なお、第11動作は、ロボット20の動作のうち、当該場合において、第5回動軸AX5が第1回動軸AX1よりも常に右側に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことであってもよい。この場合、第12動作は、ロボット20の動作のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、第5回動軸AX5が第1回動軸AX1よりも常に左側又は第1回動軸AX1上に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。
第2フラグは、ロボット制御部375がロボット20を動作させる際、第21動作と第22動作とのいずれの動作をロボット20に行わせるかをロボット制御部375に指示するフラグである。第2フラグが0を示す場合、ロボット制御部375は、ロボット20に第21動作を行わせる。一方、第2フラグが1を示す場合、ロボット制御部375は、ロボット20に第22動作を行わせる。第21動作は、ロボット20の動作のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、第3回動軸AX3が第2回動軸AX2よりも常に上側又は上下方向における第3回動軸AX3と第2回動軸AX2とのそれぞれの位置が互いに同じ位置に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。第22動作は、ロボット20の動作のうち、当該場合において、第3回動軸AX3が第2回動軸AX2よりも常に下側に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。なお、第21動作は、ロボット20の動作のうち、当該場合において、第3回動軸AX3が第2回動軸AX2よりも常に上側に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことであってもよい。この場合、第22動作は、ロボット20の動作のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、第3回動軸AX3が第2回動軸AX2よりも常に下側又は上下方向における第3回動軸AX3と第2回動軸AX2とのそれぞれの位置が互いに同じ位置に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。
第3フラグは、ロボット制御部375がロボット20を動作させる際、第31動作と第32動作とのいずれの動作をロボット20に行わせるかをロボット制御部375に指示するフラグである。第3フラグが0を示す場合、ロボット制御部375は、ロボット20に第31動作を行わせる。一方、第3フラグが1を示す場合、ロボット制御部375は、ロボット20に第32動作を行わせる。第31動作は、ロボット20の動作のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、関節J6の重心が、第4回動軸AX4よりも第5回動軸AX5を中心として時計回りに回動した位置、又は第4回動軸AX4上に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。第32動作は、ロボット20の動作のうち、当該場合において、当該重心が第4回動軸AX4よりも第5回動軸AX5を中心として反時計回りに回動した位置に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。なお、第31動作は、ロボット20の動作のうち、当該場合において、当該重心が第4回動軸AX4よりも第5回動軸AX5を中心として時計回りに回動した位置に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことであってもよい。この場合、第32動作は、ロボット20の動作のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、当該重心が第4回動軸AX4よりも第5回動軸AX5を中心として反時計回りに回動した位置又は第4回動軸AX4上に位置するように関節J1〜関節J6の少なくとも1つを回動させる動作のことである。
ここで、ロボット20のP点は、ロボット20の動作が第11動作から第12動作に遷移する境界、又はロボット20の動作が第12動作から第11動作に遷移する境界において、特異点を通過する。このため、ロボット制御部375に第1フラグを設定しない場合、ロボット制御部375は、P点が特異点を通過するように制御点Tを移動させてしまう場合がある。また、ロボット20のP点は、ロボット20の動作が第21動作から第22動作に遷移する境界、又はロボット20の動作が第22動作から第21動作に遷移する境界において、特異点を通過する。このため、ロボット制御部375に第2フラグを設定しない場合、ロボット制御部375は、P点が特異点を通過するように制御点Tを移動させてしまう場合がある。また、ロボット20のP点は、ロボット20の動作が第31動作から第32動作に遷移する境界、又はロボット20の動作が第32動作から第31動作に遷移する境界において、特異点を通過する。このため、ロボット制御部375に第3フラグを設定しない場合、ロボット制御部375は、P点が特異点を通過するように制御点Tを移動させてしまう場合がある。
P点が特異点を通過してしまうことを抑制するため、ロボット制御部375は、ステップS130においてフラグ情報をユーザーから受け付ける。そして、ロボット制御部375は、受け付けたフラグ情報が示す第1フラグ〜第3フラグのそれぞれをロボット制御部375に設定する。これにより、ロボット制御部375は、P点が特異点を通過しないように制御点Tを移動させることができる。換言すると、第1フラグ〜第3フラグのそれぞれが予め決められたフラグ(すなわち、0又は1のいずれか)から変化しない場合(第1フラグ〜第3フラグのそれぞれがロボット制御部375に設定された場合)において、ロボット制御部375は、P点が特異点を通過しないように制御点Tを移動させることができる。すなわち、ロボット制御部375に第1フラグ〜第3フラグのそれぞれを設定されている状態においてP点(又は制御点T)が移動可能な領域は、P点が特異点を通過しないように制御点Tを移動させることが可能な領域である。
ステップS130の処理が行われた後、表示制御部361は、ステップS130においてロボット制御部375が受け付けたフラグ情報が示す第1フラグ〜第3フラグのそれぞれがロボット制御部375に設定されている状態を保ったままロボット制御部375がP点を移動させることが可能な領域を示す領域情報を生成する(ステップS140)。すなわち、当該領域は、当該フラグ情報が示す第1フラグ〜第3フラグに対応する領域である。ここで、当該領域は、ロボット座標系RCにおける領域として表される。
次に、表示制御部361は、ステップS140において生成された領域情報が示す領域を表示部35に表示させる(ステップS150)。具体的には、表示制御部361は、記憶部32の記憶領域に、ロボット20が設置された実空間を仮想的に表す仮想空間VSを生成する。仮想空間VSの各位置は、ロボット座標系RCにおける座標によって表される。表示制御部361は、仮想空間VS内に仮想的なロボット20であるロボットVR1を配置する。そして、表示制御部361は、仮想空間VS内に配置された仮想的なロボット20に重ねて当該領域を表す領域画像VR2を配置する。この際、表示制御部361は、領域画像VR2の透明度を所定の透明度とすることにより、領域画像VR2の上からロボットVR1が透けて見えるように領域画像VR2を仮想空間VS内に配置する。そして、表示制御部361は、ロボットVR1及び領域画像VR2を含む仮想空間VS内の領域を所定の方向から見た場合における画像である領域表示画像を生成する。所定の方向は、如何なる方向であってもよい。表示制御部361は、生成した領域表示画像を、領域表示画面の少なくとも一部に表示させることにより、ステップS140において生成された領域情報が示す領域を表示部35に表示させる。
ここで、図9を参照し、領域表示画面について説明する。図9は、領域表示画面の一例を示す図である。図9に示した画面DR1は、領域表示画面の一例である。画面DR1には、領域表示画像RR1が配置されている。なお、図9に示した画面DR1では、図を簡略化するため、ユーザーから操作を受け付けるためのGUI(Graphical User Interface)等の領域表示画像RR1以外のGUIが省略されている。
領域表示画像RR1は、仮想空間VS内の様子を表す三次元画像である。しかし、図9では、図を簡略化するため、領域表示画像RR1を、ロボットVR1の第2回動軸AX2に沿ってロボットVR1の第2アーム、ロボットVR1の第1アームの順に並んで見える方向に向かってロボットVR1を見た場合における仮想空間VS内の様子を表す二次元画像として表している。なお、領域表示画像RR1は、当該三次元画像に代えて、図9に示したような二次元画像であってもよい。なお、領域表示画像RR1には、ロボットVR1と、領域画像VR2とのそれぞれに加えて、例えば、架台BS等の他の物体を表す画像が表示される構成であってもよい。この場合、表示制御部361は、ユーザーから予め当該物体が配置された位置を示す情報、当該物体の形状を示す情報等を受け付ける。
図9に示した領域画像VR2は、前述した通り、ステップS130において受け付けられたフラグ情報が示す第1フラグ〜第3フラグに対応する領域を表す画像である。図9に示した領域画像VR2が表す領域は、第1フラグが0であり、第2フラグが0であり、第3フラグが1である場合の第1フラグ〜第3フラグに対応する領域である。すなわち、第1フラグ〜第3フラグのうちの少なくとも1つが当該場合のフラグと異なる場合、表示制御部361は、図9に示した領域画像VR2が表す領域と異なる領域を表す領域画像VR2を領域表示画像RR1に表示させる。
ユーザーは、図9に示した領域表示画像RR1に含まれるロボットVR1と領域画像VR2との相対的な位置関係に基づいて、領域画像VR2に対応する実空間上の領域を作業領域として決定することができる。すなわち、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定を補助することができる。そして、ユーザーは、決定した作業領域内に、ロボット20が作業を行う対象(この一例では、対象物O、対象物G)を配置することができる。その結果、ロボット制御部375は、ロボット20のP点が特異点を通過しないように制御点Tを移動させることができる。すなわち、ロボット制御部375は、ロボット20のP点が特異点を通過しないように制御点Tが移動可能な領域において所定の作業のうち連続経路制御によって行われる第1作業をロボット20に行わせることができる。
なお、図9に示した領域VR3は、領域画像VR2が表す領域のうち、第2回動軸AX2に沿って第2アームL2、第1アームL1の順に並んで見える方向に向かってロボット20を見た場合において、関節J6の重心が第4回動軸AX4よりも第5回動軸AX5を中心として時計回りに90°より大きな回動角回動する領域、又は当該重心が第4回動軸AX4よりも第5回動軸AX5を中心として反時計回りに90°より大きな回動角回動する領域である。表示制御部361は、領域画像VR2を表示する際、領域画像VR2内において領域VR3を区別可能なように領域画像VR2を表示する構成であってもよく、領域画像VR2内において領域VR3を区別不可能なように領域画像VR2を表示する構成であってもよい。
また、表示制御部361は、第1フラグ〜第3フラグの組み合わせ毎に、第1フラグ〜第3フラグの組み合わせに応じた領域を表す領域画像を生成し、生成した当該組み合わせ毎の領域画像それぞれの一部又は全部を重ねて領域表示画像RR1に表示させる構成であってもよい。この場合、表示制御部361は、当該組み合わせ毎の領域画像それぞれの一部又は全部を互いに区別可能なように領域表示画像RR1に表示させる。例えば、表示制御部361は、当該領域画像それぞれを異なる色、ハッチング等によって表して領域表示画像RR1に表示させる。
また、表示制御部361は、ユーザーから受け付けた操作、又は記憶部32に予め記憶された動作プログラムに基づいて、仮想空間VS内に配置されたロボットVR1を領域表示画像RR1内において動かすことが可能な構成であってもよい。この場合、表示制御部361は、例えば、ステップS130において受け付けたフラグ情報が示す第1フラグ〜第3フラグを参照せず、仮想空間VS内におけるロボットVR1の動作に応じたフラグ情報に基づいて、領域表示画像RR1に当該フラグ情報に応じた領域画像を表示する。例えば、当該操作又は当該動作プログラムによるロボットVR1の動作が第11動作、第21動作、第32動作のそれぞれを伴う動作であった場合、表示制御部361は、第1フラグが0、第2フラグが0、第3フラグが1であると判定し、これらのフラグに対応する領域画像を領域表示画像RR1に表示させる。また、表示制御部361は、当該操作又は当該動作プログラムによるロボットVR1の動作においてロボットVR1のP点が特異点を通過する場合、領域表示画像RR1に表示された領域画像をロボットVR1の動作に応じて切り替えてもよい。例えば、表示制御部361は、当該操作又は当該動作プログラムによるロボットVR1の動作が、第11動作、第21動作、第32動作のそれぞれを伴う動作を行っている間、当該動作に応じた領域画像を領域表示画像RR1に表示し、ロボットVR1の動作が第11動作、第21動作、第32動作のそれぞれを伴う動作から第11動作、第22動作、第32動作のそれぞれを伴う動作に変化した際、領域表示画像RR1に表示されている領域画像を当該動作に応じた領域画像に切り替える(表示し直す)。なお、表示制御部361は、当該操作又は当該動作プログラムによるロボットVR1の動作においてロボットVR1のP点が特異点を通過する場合、領域表示画像RR1に表示された領域画像をロボットVR1の動作に応じて切り替えなくてもよい。
ステップS150の処理が行われた後、表示制御部361は、画面DR1の表示を終了させる操作が行われたか否かを判定する(ステップS160)。画面DR1の表示を終了させる操作が行われていないと表示制御部361が判定した場合(ステップS160−NO)、ロボット制御部375は、ステップS130に遷移し、再び画面DR1からフラグ情報を受け付けるまで待機する。そして、ロボット制御部375が再びフラグ情報を受け付けた場合、新たに受け付けたフラグ情報に基づいてステップS130〜ステップS160の処理を実行する。この際、表示制御部361は、図9に示した領域表示画像RR1を新たに生成された領域表示画像に切り替える(表示し直す)。一方、画面DR1の表示を終了させる操作が行われたと表示制御部361が判定した場合(ステップS160−YES)、制御部36は、処理を終了する。
<ロボット制御装置がロボットに所定の作業を行わせる処理>
以下、図10を参照し、ロボット制御装置30がロボット20に所定の作業を行わせる処理について説明する。図10は、ロボット制御装置30がロボット20に所定の作業を行わせる処理の流れの一例を示すフローチャートである。なお、以下では、図10に示したフローチャートが実行される前の時間帯において、ユーザーが、図8に示したフローチャートの処理によって表示部35に表示された領域表示画像RR1に基づいて、ロボット制御部375に設定した第1フラグ〜第3フラグに応じた領域であってロボット20のP点が特異点を通過しないように制御点Tが移動可能な領域内(当該領域の内側)に対象物O及び対象物Gのそれぞれを配置している場合について説明する。また、以下では、ユーザーが、対象物Gの位置及び姿勢を、当該領域内において予め決められた位置及び姿勢と一致させている場合について説明する。
ロボット制御部375は、制御点Tを移動させ、制御点Tの位置及び姿勢を予め決められた撮像位置及び撮像姿勢と一致させる(ステップS210)。撮像位置及び撮像姿勢は、制御点Tの位置及び姿勢が撮像位置及び撮像姿勢と一致している場合において、撮像部10が撮像可能な範囲に対象物Oの上面が少なくとも含まれる位置及び姿勢であれば如何なる位置及び姿勢であってもよい。
次に、撮像制御部363は、撮像部10が撮像可能な範囲を撮像部10に撮像させる(ステップS220)。次に、画像取得部367は、ステップS220において撮像部10が撮像した撮像画像を撮像部10から取得する(ステップS230)。次に、位置姿勢算出部371は、ステップS230において画像取得部367が取得した撮像画像に基づいて、撮像画像に含まれる対象物Oの位置及び姿勢を算出する(ステップS240)。例えば、位置姿勢算出部371は、パターンマッチング等によって当該撮像画像から当該位置及び当該姿勢を算出する。対象物Oの位置は、例えば、対象物Oの重心に対応付けられた図示しない三次元局所座標系の原点のロボット座標系RCにおける位置によって表される。なお、対象物Oの位置は、これに代えて、対象物Oに対応付けられた他の位置によって表される構成であってもよい。対象物Oの姿勢は、例えば、当該三次元局所座標系における各座標軸のロボット座標系RCにおける方向によって表される。なお、対象物Oの姿勢は、これに代えて、対象物Oに対応付けられた他の方向によって表される構成であってもよい。
次に、ロボット制御部375は、記憶部32に予め記憶された作業開始位置姿勢情報を記憶部32から読み出す。作業開始位置姿勢情報は、ステップS240において検出された対象物Oの位置及び姿勢から作業開始位置及び作業開始姿勢までの相対的な位置及び姿勢を示す情報である。作業開始位置は、所定の作業のうちの第1作業の開始時においてユーザーが制御点Tの位置を一致させたい所望の位置のことである。作業開始姿勢は、第1作業の開始時においてユーザーが制御点Tの姿勢を一致させたい所望の姿勢のことである。ロボット20は、第1作業の開始時において、制御点Tの位置及び姿勢が作業開始位置及び作業開始姿勢と一致している状態で吐出部Dから吐出物を吐出し始める。ここで、作業開始位置及び作業開始姿勢は、制御点Tの位置及び姿勢が作業開始位置及び作業開始姿勢と一致している場合において、作業開始位置及び作業開始姿勢に応じた位置であって対象物Oの上面の位置に吐出部Dがグリースを吐出可能な位置及び姿勢である。また、当該上面の位置は、ユーザーがグリースを吐出(すなわち、塗布)したい所望の位置である。ロボット制御部375は、記憶部32から読み出した作業開始位置姿勢情報に基づいて制御点Tを移動させ、制御点Tの位置及び姿勢を作業開始位置姿勢情報が示す作業開始位置及び作業開始姿勢と一致させる(ステップS260)。
次に、ロボット制御部375は、記憶部32に予め記憶された教示点情報のうち第1作業において用いられる教示点情報である教示点第1情報を記憶部32から読み出す(ステップS280)。ここで、教示点第1情報が示すある第2教示点は、制御点Tが当該第2教示点と一致している場合において、当該第2教示点に応じた位置であって対象物Oの上面の位置に吐出部Dがグリースを吐出可能な教示点である。また、当該上面の位置は、ユーザーがグリースを吐出(すなわち、塗布)したい所望の位置である。次に、ロボット制御部375は、ステップS280において読み出した教示点第1情報が示す1以上の第2教示点を、第2教示点の順番が小さい順に1つずつ対象第2教示点として選択し、選択した対象第2教示点毎にステップS300〜ステップS310の処理を繰り返し実行する(ステップS290)。
ステップS290において対象第2教示点が選択された後、ロボット制御部375は、関節J1〜関節J6それぞれの回動角を示す情報をロボット20から取得し、取得した当該情報に基づく順運動学によって、現在の制御点Tの位置及び姿勢を第1教示点の位置及び姿勢として算出する。そして、ロボット制御部375は、算出した第1教示点と、ステップS290において選択された対象第2教示点とに基づいて連続経路軌道を生成する(ステップS300)。次に、ロボット制御部375は、ステップS300において生成した連続経路軌道に基づいて、関節J1〜関節J6のそれぞれに連続経路動作を行わせ始め、制御点Tを第1教示点から対象第2教示点に移動させる。この際、ロボット制御部375は、吐出制御部365を制御し、制御点Tが移動している間において吐出部Dにグリースを吐出させる(ステップS310)。
このように、ステップS290〜ステップS310の処理を繰り返すことにより、ロボット制御装置30は、教示点第1情報が示す1以上の第2教示点のそれぞれに、第2教示点の順番が小さい順に連続経路制御によって制御点Tを一致させ、連続経路軌道に沿って対象物Oの上面にグリースを吐出部Dに吐出させる作業を第1作業としてロボット20に行わせることができる。ここで、図11を参照し、ステップS290〜ステップS310の繰り返し処理について説明する。
図11は、制御点Tの位置及び姿勢が作業開始位置及び作業開始姿勢と一致している様子の一例を示す図である。図11に示した制御点Tの位置及び姿勢は、作業開始位置及び作業開始姿勢を示す第1教示点P1と一致している。ステップS310におけるロボット制御部375は、ステップS300において生成した連続経路軌道に沿って制御点Tを移動させながら、吐出部Dにグリースを吐出させる。その結果、ロボット20は、図11に示した対象物Oの上面に描かれた点線PTに沿って、吐出部Dからグリースを吐出させる。対象物Oの上面のうちの点線PTが描かれた部分は、ユーザーがグリースを吐出(塗布)したい所望の位置の集まりである。図11に示した例では、点線PTの形状は、S字形状である。すなわち、この一例におけるロボット制御部375は、ステップS290〜ステップS310の繰り返し処理によって制御点TをS字形状に移動させ、対象物Oの上面にグリースがS字形状となるようにグリースを吐出する。
なお、ステップS290〜ステップS310の繰り返し処理において、ロボット制御部375は、ステップS240において算出された対象物Oの位置及び姿勢に基づいて連続経路制御における経路を生成している。すなわち、ロボット制御部375によるステップS240〜ステップS310の処理は、対象物Oが撮像された撮像画像に基づいて対象物Oの位置及び姿勢を算出し、算出した当該位置及び当該姿勢に基づいて連続経路制御における経路である連続経路軌道を補正し、補正した連続経路軌道に沿って連続経路制御により制御点Tを動かし、所定の作業をロボット20に行わせる処理であると換言することができる。これにより、ロボット制御装置30は、対象物Oの位置及び姿勢が所望の位置及び姿勢からずれた場合であっても、ロボット20に所定の作業を精度よく行わせることができる。ここで、ロボット制御装置30は、ステップS240において対象物Oの姿勢のみを算出する構成であってもよい。この場合、ユーザーは、対象物Oを作業台TBの上面に配置する際、対象物Oの位置を当該上面の予め決められた位置と一致させる。そして、ロボット制御装置30には、予め当該位置を示す情報がユーザーから記憶されている。また、ロボット制御装置30は、対象物Oが撮像された撮像画像に基づいて対象物Oの姿勢を算出し、算出した当該姿勢に基づいて連続経路制御における経路である連続経路軌道を補正し、補正した連続経路軌道に沿って連続経路制御により制御点Tを動かし、所定の作業をロボット20に行わせる。
ステップS290〜ステップS310の繰り返し処理が行われた後、ロボット制御部375は、記憶部32に予め記憶された教示点情報のうち第2作業において用いられる教示点第2情報を記憶部32から読み出す(ステップS320)。ここで、教示点第2情報が示すある第2教示点は、制御点Tが当該第2教示点と一致している場合において、当該第2教示点に応じた位置であって対象物Gの側面の位置に吐出部Dがグリースを吐出可能な教示点である。また、当該側面の位置は、ユーザーがグリースを吐出(すなわち、塗布)したい所望の位置である。教示点第2情報が示す1以上の第2教示点のそれぞれは、第2作業においてユーザーが制御点Tの位置を一致させたい1以上の所望の第2教示点である。すなわち、教示点第2情報が示す1以上の第2教示点毎に、第2教示点に制御点Tが一致している状態において、ロボット20は、対象物Gの側面に対して吐出部Dからグリースを吐出する。
次に、ロボット制御部375は、ステップS320において読み出した教示点第2情報が示す1以上の第2教示点を、第2教示点の順番が小さい順に1つずつ対象第2教示点として選択し、選択した対象第2教示点毎にステップS340〜ステップS350の処理を繰り返し実行する(ステップS330)。
ステップS330において対象第2教示点が選択された後、ロボット制御部375は、制御点Tを移動させ、制御点Tの位置及び姿勢を対象第2教示点の位置及び姿勢と一致させる(ステップS340)。なお、ロボット制御部375は、ステップS340において制御点Tを移動させる際、第1教示点及び対象第2教示点に基づいて前述の連続経路制御による連続経路軌道を生成する構成であってもよく、第1教示点及び対象第2教示点に基づいて連続位置決め制御(PTP(Point To Point)制御)により連続位置決め軌道を生成する構成であってもよい。ロボット制御部375が連続経路軌道を生成する場合、ロボット制御部375は、生成した連続経路軌道に沿って制御点Tを移動させる。また、ロボット制御部375が連続位置決め軌道を生成する場合、ロボット制御部375は、生成した連続位置決め軌道に沿って制御点Tを移動させる。
連続位置決め制御では、ロボット制御部375は、制御点Tが第1教示点と一致している場合における関節J1〜関節J6それぞれの回動角、すなわち現在の関節J1〜関節J6それぞれの回動角を始点回動角として算出する。また、ロボット制御部375は、制御点Tが対象第2教示点と一致している場合における関節J1〜関節J6それぞれの回動角を終点回動角として算出する。ロボット制御部375は、算出した始点回動角及び終点回動角に基づく関節空間補間軌道生成問題を解き、連続位置決め軌道を生成(算出)する。連続位置決め軌道は、制御点Tが第1教示点から対象第2教示点に移動するまでの経過時間とともに変化する回動角であって関節J1〜関節J6それぞれの回動角の変化を、当該経過時間の関数として表したものである。ロボット制御部375は、生成した連続位置決め軌道に基づいて関節J1〜関節J6のそれぞれを回動させ、制御点Tを第1教示点から対象第2教示点まで移動させる。
ステップS340の処理が行われた後、ロボット制御部375は、吐出制御部365を制御し、吐出部Dにグリースを吐出させる(ステップS350)。
このように、ステップS330〜ステップS350の処理を繰り返すことにより、ロボット制御装置30は、教示点第2情報が示す1以上の第2教示点のそれぞれに、第2教示点の順番が小さい順に制御点Tを一致させる。そして、ロボット制御装置30は、制御点Tが当該第2教示点のそれぞれと一致する毎に、吐出部Dによりグリースを対象物Gの側面に吐出することができる。ここで、図12を参照し、ステップS330〜ステップS350の繰り返し処理について説明する。
図12は、教示点第2情報が示す1以上の第2教示点のうちのある第2教示点に制御点Tが一致している様子の一例を示す図である。図12に示した点P2は、当該第2教示点の一例である。図12に示した制御点Tの位置及び姿勢は、点P2と一致している。ステップS340におけるロボット制御部375は、制御点Tを移動させ、ステップS330において対象第2教示点として選択した点P2の位置及び姿勢に制御点Tの位置及び姿勢を一致させる。ここで、点P2と制御点Tが一致している場合、吐出部Dからグリースが吐出される方向PA、すなわち、吐出部Dのニードル部が延伸している方向PAは、歯車である対象物Gの中心軸GA1に対して角度θだけ傾いている。ここで、図12に示した補助線GA2は、中心軸GA1と平行な線である。角度θは、この一例において、補助線GA2から方向PAに沿って補助線GA2と交わる図示しない直線までの間の角度であって時計回りに決められる角度である。なお、角度θは、如何なる角度であってもよい。これにより、ロボット制御装置30は、ユーザーが所望する角度から対象物Gの側面に対してグリースをロボット20に吐出させることができる。その結果、ロボット制御装置30は、ユーザーが所望する位置にグリースをロボット20によって吐出する作業を精度よく行うことができる。
ステップS330〜ステップS350の繰り返し処理が行われた後、ロボット制御部375は、記憶部32に予め記憶された作業終了位置姿勢情報を記憶部32から読み出す。作業終了位置姿勢情報は、作業終了位置及び作業終了姿勢を示す情報である。作業終了位置は、所定の作業の終了時においてユーザーが制御点Tの位置を一致させたい所望の位置のことである。作業終了姿勢は、所定の作業の終了時においてユーザーが制御点Tの姿勢を一致させたい所望の姿勢のことである。ロボット制御部375は、制御点Tを移動させ、制御点Tの位置及び姿勢を、読み出した作業終了位置姿勢情報が示す作業終了位置及び作業終了姿勢と一致させる(ステップS360)。そして、制御部36は、処理を終了する。
なお、ステップS360において、ロボット制御部375は、対象物OをエンドエフェクターEによって吸着し、所定の除材領域(又は給材領域)に除材(又は給材)する構成であってもよい。この場合、ロボット制御部375は、例えば、撮像部10により対象物Oを撮像し、対象物Oが撮像された撮像画像に基づいて対象物Oの吸着を行う構成であってもよく、他の方法によって対象物Oの吸着を行う構成であってもよい。また、ステップS360において、ロボット制御部375は、対象物GをエンドエフェクターEによって吸着し、所定の除材領域(又は給材領域)に除材(又は給材)する構成であってもよい。この場合、ロボット制御部375は、撮像部10により対象物Gを撮像し、対象物Gが撮像された撮像画像に基づいて対象物Gの吸着を行う構成であってもよく、他の方法によって対象物Oの吸着を行う構成であってもよい。
以上のように、ロボット制御装置30は、ロボット20の第1所定位置(この一例において、P点)が特異点を通過しないようにロボット20の第2所定位置(この一例において、制御点T)が移動可能な領域を表示する。これにより、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定を補助することができる。
また、ロボット制御装置30では、第1所定位置は、第2所定位置と同じ位置である。これにより、ロボット制御装置30は、第1所定位置が移動可能な領域を、ロボット20の作業領域の候補としてユーザーに提供することができる。
また、ロボット制御装置30は、ロボット20の第1所定位置が特異点を通過しないように第2所定位置が移動可能な領域において、連続経路制御によって第2所定位置を動かす。これにより、ロボット制御装置30は、第1所定位置が特異点を通過しないように第2所定位置が移動可能な領域をロボット20の作業領域とし、連続経路制御による所定の作業をロボット20に行わせることができる。
また、ロボット制御装置30は、対象物(この一例において、対象物O)が撮像された撮像画像に基づいて算出された対象物の姿勢に基づいて連続経路制御における経路(この一例において、連続経路軌道)を補正し、補正した当該経路に沿って連続経路制御により第2所定位置を動かす。これにより、ロボット制御装置30は、対象物の姿勢が所望の姿勢からずれた場合であっても、ロボット20に所定の作業を精度よく行わせることができる。
また、ロボット制御装置30では、ロボット20の作業領域は、ロボット20の第1所定位置が特異点を通過しないようにロボット20の第2所定位置が移動可能な領域の内側である。これにより、ロボット制御装置30は、第1所定位置が特異点を通過しないように第2所定位置が移動可能な領域の内側において所定の作業をロボット20に行わせることができる。
また、ロボット制御装置30は、吐出部(この一例において、吐出部D)が設けられているロボット20の第1所定位置が特異点を通過しないようにロボット20の第2所定位置が移動可能な領域を表示する。吐出部Dが設けられているロボット20の作業領域のユーザーによる決定を補助することができる。
また、ロボット制御装置30は、保持部(この一例において、エンドエフェクターE)が設けられているロボット20の第1所定位置が特異点を通過しないようにロボット20の第2所定位置が移動可能な領域を表示する。これにより、ロボット制御装置30は、保持部が設けられているロボット20の作業領域のユーザーによる決定を補助することができる。
また、ロボット制御装置30は、力検出部(この一例において、力検出部21)が設けられているロボット20の第1所定位置が特異点を通過しないようにロボット20の第2所定位置が移動可能な領域を表示する。これにより、ロボット制御装置30は、力検出部が設けられているロボット20の作業領域のユーザーによる決定を補助することができる。
また、ロボット制御装置30は、第(n+1)回動軸の軸方向から見て、第nアームと第(n+1)アームとが重なることが可能であるロボット20の第1所定位置が特異点を通過しないようにロボット20の第2所定位置が移動可能な領域を表示する。ここで、nは、1以上の整数である。この一例において、マニピュレーターMが6軸の自由度を有するため、nは、1〜5の整数である。これにより、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定であって、第(n+1)回動軸の軸方向から見て、第nアームと第(n+1)アームとが重なることが可能であるロボット20の作業領域の決定を補助することができる。
また、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定であって、第nアームの長さが第(n+1)アームの長さよりも長いロボット20の作業領域の決定を補助することができる。
また、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定であって第nアーム(nは1である)が基台(この一例において、基台B)に設けられているロボット20の作業領域の決定を補助することができる。
また、ロボット制御装置30は、架台(架台BS)に設けられているロボット20の第1所定位置が特異点を通過しないようにロボット20の第2所定位置が移動可能な領域を表示する。これにより、ロボット制御装置30は、ユーザーによるロボット20の作業領域の決定であって架台に設けられているロボット20の作業領域の決定を補助することができる。
また、ロボット20は、ロボット制御装置30による補助によってユーザーにより決定された作業領域において所定の作業を行う。これにより、ロボット20は、エラーの発生を抑制しつつ、所定の作業を行うことができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット制御装置30)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。