<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、図1〜図6を参照し、ロボットシステム1の構成について説明する。図1は、実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、例えば、ロボット20を備える。なお、ロボットシステム1は、これらに加えて、撮像部(例えば、ロボット20と別体のカメラ、ロボット20に行わせたい所望の動作をロボット20に教示する教示装置)等の他の装置を備える構成であってもよい。また、図2は、ロボット20の構成の一例を示す図である。
以下では、説明の便宜上、重力方向(鉛直下方向)を下方向又は下と称し、下方向と反対の方向を上方向又は上と称して説明する。以下では、一例として、下方向が、ロボット20のロボット座標系RCにおけるZ軸の負方向と一致する場合について説明する。なお、下方向は、当該負方向と一致しない構成であってもよい。
図1に示した例では、ロボットシステム1は、部屋R内に設置されている。部屋Rは、例えば、4つの壁面と、天井面と、床面とを有する直方体形状の部屋である。当該4つの壁面のうちの3つの壁面である壁面M1〜壁面M3のそれぞれには、棚LCが設置されている。以下では、壁面M1に設置された棚LCを棚LC1と称し、壁面M2に設置された棚LCを棚LC2と称し、壁面M3に設置された棚LCを棚LC3と称して説明する。ここで、当該天井面から当該床面に向かって部屋R内を見た場合、壁面M1〜壁面M3のそれぞれは、時計回りに壁面M1、壁面M2、壁面M3の順に並んでいる。また、当該床面の中央には、ロボット20を設置する設置台BSが当該床面に対して動かないように設置されている。設置台BSは、内部が空洞であり、直方体形状である。なお、部屋Rは、直方体形状の部屋に代えて、他の形状の部屋であってもよい。
ロボット20は、基台Bと、基台Bにより支持された可動部Aと、ロボット制御装置30を備える単腕ロボットである。単腕ロボットは、この一例における可動部Aのような1本の腕を備えるロボットである。なお、ロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、2本以上の腕(例えば、2本以上の可動部A)を備えるロボットである。なお、複腕ロボットのうち、2本の腕を備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本の腕を備える双腕ロボットであってもよく、3本以上の腕(例えば、3本以上の可動部A)を備える複腕ロボットであってもよい。
基台Bの形状は、例えば、長手方向が上下方向に沿ったほぼ直方体形状である。基台Bは、中空となっている。基台Bが有する面のうちの1つには、フランジBFが設けられている。また、フランジBFには、可動部Aが設けられている。すなわち、基台Bは、フランジBFによって可動部Aを支持している。なお、基台Bの形状は、このような形状に代えて、可動部Aを支持可能な形状であれば、立方体形状、円柱形状、多面体形状等の他の形状であってもよい。また、基台Bは、フランジBFが設けられていない構成であってもよい。
以下では、説明の便宜上、基台Bが有する面のうちフランジBFが設けられている面を上面と称し、基台Bが有する面のうちフランジBFが設けられている面と反対側の面を下面と称して説明する。基台Bは、例えば、前述の設置台BSの上面に設置される。以下では、一例として、部屋Rの床面及び当該上面が、ロボット座標系RCにおけるX軸及びY軸によって張られる平面であるXY平面と平行である場合について説明する。また、以下では、設置台BSの上面が、当該床面よりも上側に位置している場合について説明する。なお、部屋Rの床面と当該上面とのうちいずれか一方又は両方は、当該XY平面と非平行であってもよい。設置台BSの上面は、設置面の一例である。
ここで、設置台BSの上面には、上下方向に貫通し、基台Bを設置台BSの内部の空間に挿入可能な図示しない開口部が形成されている。当該開口部は、フランジBFよりも小さい。ユーザーは、フランジBFと設置台BSとを複数本のボルトによって固定することにより、基台Bを設置台BSに設置する(取り付ける)ことができる。すなわち、フランジBFと設置台BSのそれぞれには、複数のボルトのそれぞれが挿入される複数の貫通孔が形成されている。なお、フランジBFと設置台BSとの固定方法は、他の方法であってもよい。この場合、設置台BSには、当該開口部が形成されていない構成であってもよい。また、ロボット20が設置される面は、設置台BSの上面に代えて、部屋Rの床面、部屋Rの壁面、部屋Rの天井面、屋外の床面、屋外の壁面等の他の面であってもよい。以下では、一例として、ロボット座標系RCにおけるX軸が壁面M1と平行になり、ロボット座標系RCにおけるY軸が壁面M2と平行になるようにロボット20が当該上面に接地されている場合について説明する。なお、当該X軸は、壁面M1と非平行であってもよい(この場合、当該Y軸は、壁面M2と非平行である)。
可動部Aは、マニピュレーターMと、エンドエフェクターEを備える。
マニピュレーター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軸以上の自由度で動作する構成であってもよい。なお、第2アームL2は、Aアームの一例である。この場合、第3アームL3は、Bアームの一例である。
関節J1は、下に向かって関節J1を見た場合の反時計回りを正、当該場合の時計回りを負とし、関節J1の回動における基準となる位置から正負それぞれの方向に360°以上回動可能な関節である。以下では、一例として、関節J1が、当該正負それぞれの方向に360°回動可能な関節である場合について説明する。なお、関節J1は、これに代えて、360°未満回動可能な関節であってもよい。
関節J2は、第2回動軸AX2に沿った2つの方向のうち第3アームL3から第2アームL2に向かう方向に向かって関節J2を見た場合の反時計回りを正、当該場合の時計回りを負とし、関節J2の回動における基準となる位置から正負それぞれの方向に360°以上回動可能な関節である。以下では、一例として、関節J2が、当該正負それぞれの方向に360°回動可能な関節である場合について説明する。なお、関節J2は、これに代えて、360°未満回動可能な関節であってもよい。
関節J3は、第3回動軸AX3に沿った2つの方向のうち第3アームL3から第2アームL2に向かう方向に向かって関節J3を見た場合の反時計回りを正、当該場合の時計回りを負とし、関節J3の回動における基準となる位置から正負それぞれの方向に360°以上回動可能な関節である。以下では、一例として、関節J3が、当該正負それぞれの方向に360°回動可能な関節である場合について説明する。なお、関節J3は、これに代えて、360°未満回動可能な関節であってもよい。
関節J4は、第4回動軸AX4に沿った2つの方向のうち第4アームL4から第3アームL3に向かう方向に向かって関節J4を見た場合の反時計回りを正、当該場合の時計回りを負とし、関節J4の回動における基準となる位置から正負それぞれの方向に360°以上回動可能な関節である。以下では、一例として、関節J4が、当該正負それぞれの方向に360°回動可能な関節である場合について説明する。なお、関節J4は、これに代えて、360°未満回動可能な関節であってもよい。
関節J5は、第3回動軸AX3に沿った2つの方向のうち第3アームL3から第2アームL2に向かう方向に向かって関節J5を見た場合の反時計回りを正、当該場合の時計回りを負とし、関節J5の回動における基準となる位置から正負それぞれの方向に125°回動可能な関節である。なお、関節J5は、当該正負それぞれの方向に125°より小さい角度回動可能な関節であってもよく、当該正負それぞれの方向に125°より大きい角度回動可能な関節であってもよい。
関節J6は、第6回動軸AX6に沿った2つの方向のうちエンドエフェクターEから第6アームL6に向かう方向に向かって関節J6を見た場合の反時計回りを正、当該場合の時計回りを負とし、関節J6の回動における基準となる位置から正負それぞれの方向に360°以上回動可能な関節である。以下では、一例として、関節J6が、当該正負それぞれの方向に360°回動可能な関節である場合について説明する。なお、関節J6は、これに代えて、360°未満回動可能な関節であってもよい。
なお、図1及び図2のそれぞれでは、図を簡略化するため、関節J1〜関節J6のそれぞれが備えているアクチュエーター、エンコーダー、減速機、ブレーキ等の構成を省略している。当該ブレーキは、電磁ブレーキであってもよく、メカニカルブレーキであってもよい。また、関節J1〜関節J6のうちの一部又は全部は、減速機を備えない構成であってもよい。また、関節J1〜関節J6のうちの一部又は全部は、ブレーキを備えない構成であってもよい。
第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〜図6を参照し、マニピュレーターMについてより詳しく説明する。図3は、第2回動軸AX2がロボット座標系RCにおけるX軸と平行な場合であり、且つ、関節J2が関節J1よりも当該X軸の負方向側に位置している場合において、ロボット座標系RCにおけるY軸の負方向に向かって見たロボット20の一例を示す図である。図4は、図3に示したロボット20をロボット座標系RCにおけるX軸の負方向に向かって見た場合のロボット20の一例を示す図である。
図3に示したように、基台Bの上面から基台Bの下面に向かう方向が下方向と一致しているため、関節J2は、関節J1よりも上側に位置している。
また、関節J2は、第1回動軸AX1の延長上に位置していない。これは、図3に示したように、第1アームL1の形状が、ロボット座標系RCにおけるY軸の負方向に向かってロボット20を見た場合において、屈曲した形状であるためである。この一例において、第1アームL1の形状は、ロボット座標系RCにおけるY軸の負方向に向かってロボット20を見た場合において、丸みを帯びてほぼL字型に湾曲した形状である。具体的には、第1アームL1は、4つの部位である部位L11〜部位L14によって構成されている。部位L11は、図3において、第1アームL1を構成する4つの部位のうち、基台Bから第1回動軸AX1に沿って上方向に延伸している部位のことである。部位L12は、当該4つの部位のうち、部位L11の上端からロボット座標系RCにおけるX軸の負方向に延伸する部位のことである。部位L13は、当該4つの部位のうち、部位L12の端部のうち部位L11と反対側の端部から上方向に延伸している部位のことである。部位L14は、当該4つの部位のうち、部位L13の端部のうち部位L12と反対側の端部から当該X軸の正方向に延伸する部位のことである。ここで、部位L11〜部位L14は、一体として第1アームL1を構成してもよく、別体として第1アームL1を構成してもよい。また、図3において、部位L12と部位L13は、ロボット座標系RCにおけるY軸の負方向に向かってロボット20を見た場合、ほぼ直交している。
また、第2回動軸AX2は、第1回動軸AX1と交差しない。これは、図4に示したように、第1アームL1の形状が、ロボット座標系RCにおけるX軸の負方向に向かってロボット20を見た場合において、当該Y軸の負方向に向かって延伸している部分を有しているからである。図4に示した例では、第1アームL1の形状は、当該場合において、丸みを帯びたほぼ直角三角形の形状であるためである。そして、関節J2は、当該部分に設けられている。このため、図4に示した例では、当該場合において、第2回動軸AX2は、ロボット座標系RCにおけるX軸の正方向に向かって第1回動軸AX1から距離OF離れている。これにより、ロボット20は、前述した関節J3の正の方向に関節J3を回動させて第3回動軸AX3周りにおいて第3アームL3を回動させた場合において、マニピュレーターMと基台Bとが干渉してしまうことを抑制することができる。その結果、ロボット20は、前述した関節J3の負の方向に関節J3を回動させて第3回動軸AX3周りにおいて第3アームL3を回動させた場合、マニピュレーターMと基台Bとが干渉しやすくなっている。図5は、ロボット20が関節J3を正又は負それぞれの方向に回動させた場合におけるマニピュレーターMと基台Bとの干渉の起こり易さの違いを示す図である。図5における左図に示したように、ロボット20は、関節J3の負の方向に関節J3を回動させて第3回動軸AX3周りにおいて第3アームL3を回動させた場合、関節J6の重心の位置を基台Bよりも下側に位置させることができている。すなわち、当該場合、当該左図では、ロボット20が、マニピュレーターMと基台Bとが干渉してしまうことを抑制することができていることが分かる。一方、図5における右図に示したように、ロボット20は、関節J3の正の方向に関節J3を回動させて第3回動軸AX3周りにおいて第3アームL3を回動させた場合、関節J6の重心の位置を基台Bよりも下側に位置させることができていない。すなわち、当該場合、当該右図では、ロボット20が、マニピュレーターMと基台Bとが干渉し易くなっていることが分かる。
図3及び図4に戻る。第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には、当該端部にエンドエフェクターEが接続される。
また、この一例において、マニピュレーターMが備える6つの関節それぞれの回動軸のうち第2回動軸AX2と第3回動軸AX3とは、互いに平行である。なお、第2回動軸AX2と第3回動軸AX3とは、互いに非平行であってもよい。
ここで、マニピュレーターMでは、第2回動軸AX2の軸方向から見て、第1アームL1と第2アームL2とが重なることが可能である。また、マニピュレーターMでは、第2回動軸AX2の軸方向から見て、第2アームL2と第3アームL3とが重なることが可能である。なお、本実施形態において、ある2つのアームをある方向から見た場合に当該2つのアームが重なるとは、当該2つのアームのうちの一方のアームが他方のアームに重なっている面積の割合が所定割合以上であることを示す。所定割合は、例えば、9割であるが、これに限られず、他の割合であってもよい。
また、マニピュレーターMは、マニピュレーターMの状態を、関節J2を回動させることにより、第2アームL2と第3アームL3とが重なる状態である第1状態にすることができる。すなわち、図3及び図4に示したマニピュレーターMの状態は、第1状態の一例である。
マニピュレーターMの状態を第1状態にすることができる理由は、第3アームL3が、関節J2の回動によって第2アームL2と干渉しない形状及び大きさに形成されているためである。例えば、マニピュレーターMの状態が第1状態である場合、第1回動軸AX1に沿った方向において第2アームL2の長さは、第3アームL3の長さよりも長い。
マニピュレーターMの状態を第1状態にすることができるため、ロボット20は、第1状態を経る動作を行うことが可能である。図6は、ロボット20が行うことが可能な動作のうちの第1状態を経る動作の一例を示す図である。図6に示した点P1は、第1位置を示す。第1位置は、第1回動軸AX1に直交する方向から見て、基台Bの設置された設置面である設置台BSの上面よりも下の位置であってエンドエフェクターEが届く位置であれば、如何なる位置であってもよい。また、図6に示した点P2は、第2位置を示す。第2位置は、第1回動軸AX1に直交する方向から見て、第2回動軸AX2よりも上の位置であってエンドエフェクターEが届く位置であれば如何なる位置であってもよい。図6に示した例では、第1位置のロボット座標系RCにおけるX軸座標及びY軸座標は、第2位置のロボット座標系RCにおけるX軸座標及びY軸座標と一致している。すなわち、図6に示した動作では、ロボット20は、第1状態を経ることにより、エンドエフェクターEの位置(例えば、エンドエフェクターEの重心の位置によって表される)を、第1位置から第2位置(この一例において、下から上)へほぼ直線に沿って移動させることができる。その結果、ロボット20は、ロボット20の一部が他の物体と干渉しないようにするために設ける空間を小さくすることができる。すなわち、ロボット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と接続される構成であってもよい。
ロボット制御装置30は、少なくとも1つのプロセッサーと、少なくとも1つのメモリーとによって構成される。ロボット制御装置30において、当該少なくとも1つのプロセッサーは、1つの情報処理装置に備えられる構成であってもよく、複数の情報処理装置に分散されて備えられている構成であってもよい。また、ロボット制御装置30において、当該少なくとも1つのメモリーは、1つの情報処理装置に備えられる構成であってもよく、複数の情報処理装置に分散されて備えられている構成であってもよい。
図1に示した例では、ロボット制御装置30は、情報処理装置PC1に備えられた1つのプロセッサーであるプロセッサー31と、情報処理装置PC1に備えられた1つのメモリーであるメモリー32とによって構成されている。なお、情報処理装置PC1は、プロセッサー31に加えて、他のプロセッサーを備える構成であってもよく、メモリー32に加えて、他のメモリーを備える構成であってもよい。
情報処理装置PC1は、例えば、ワークステーション、デスクトップPC(Personal Computer)、ノートPC、タブレットPC、多機能携帯電話端末(スマートフォン)、通信機能付きの電子書籍リーダー、PDA(Personal Digital Assistant)等である。
プロセッサー31は、例えば、CPU(Central Processing Unit)である。なお、プロセッサー31は、FPGA(Field-Programmable Gate Array)等の他のプロセッサーであってもよい。プロセッサー31は、ロボット制御装置30が備えるメモリーに格納された各種の指令を実行する。また、プロセッサー31は、他の装置のメモリーに格納された各種の指令を実行する。
メモリー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は、一時的な記憶装置と、非一時的な記憶装置とを含む。なお、メモリー32は、情報処理装置PC1に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。メモリー32は、プロセッサー31又は他の装置のプロセッサーが処理する各種の情報、指令321、322等のコンピューターにより実行可能な各種の指令(例えば、プログラム、コード等)、各種の画像等を格納する。
指令321及び指令322はそれぞれ、プロセッサー31がロボット制御装置30を構成するためにプロセッサー31が実行する複数の指令(すなわち、コンピューターにより実行可能な複数の指令)のうちの一部である。
また、ロボット制御装置30は、他の装置と通信を行うため、ハードウェア機能部として通信部34を備える。
通信部34は、USB等のデジタル入出力ポート、イーサネット(登録商標)ポート等を含んで構成される。
ロボット制御装置30は、この一例において、基台Bの内側に設けられている(内蔵されている)。なお、ロボット制御装置30は、これに代えて、ロボット20と別体であってもよい。この場合、ロボットシステム1は、ロボット20と、ロボット20と別体のロボット制御装置30とを少なくとも備える。
ここで、ロボット制御装置30は、ロボット20を制御する。より具体的には、ロボット制御装置30は、例えば、ユーザーによりメモリー32に予め記憶された動作プログラムに基づいて、動作プログラムによって指定された動作をロボット20に行わせる。以下では、一例として、当該動作として図6に示した動作をロボット20が行う場合におけるロボット制御装置30の処理について詳しく説明する。
<ロボットを動作させる際にロボット制御装置が行う処理の概要>
以下、ロボット20を動作させる際にロボット制御装置30が行う処理の概要について説明する。
前述したように、ロボット制御装置30は、メモリー32に予め記憶された動作プログラムに基づいて、動作プログラムによって指定された動作をロボット20に行わせる。この際、ロボット制御装置30は、動作プログラムによって指定された複数の教示点を予め決められた順に特定し、特定した教示点にロボット20の制御点が一致した場合における関節J1〜関節J6それぞれの回動角を逆運動学に基づいて算出する。ここで、ロボット20の制御点は、ロボット20の可動部Aとともに動く仮想的な点であり、例えば、TCP(Tool Center Point)である。以下では、一例として、当該制御点が、関節J6の重心の位置に設定されている場合について説明する。なお、当該制御点は、可動部Aの他の位置に設定される構成であってもよい。当該制御点の位置は、当該重心の位置に対応付けられた三次元局所座標系である制御点座標系の原点の位置によって表される。すなわち、当該原点の位置は、当該重心の位置と一致している。また、当該原点は、当該重心とともに動く。また、当該制御点の姿勢は、制御点座標系における各座標軸のロボット座標系RCにおける方向によって表される。なお、当該制御点の位置及び姿勢は、可動部Aに対応付けられた他の位置及び姿勢によって表される構成であってもよい。動作プログラムによって指定される複数の教示点のそれぞれは、ロボット20が当該制御点を一致させる目標となる仮想的な点のことである。各教示点には、位置及び姿勢が対応付けられている。ある教示点に当該制御点を一致させた場合、当該制御点の位置及び姿勢は、当該教示点の位置及び姿勢と一致する。
ここで、ある教示点にロボット20の制御点が一致した場合における関節J1〜関節J6それぞれの回動角を逆運動学に基づいて算出する際、ロボット制御装置30は、ロボット20の動作を所望の動作と一致させるため、動作プログラムによって動作モードを指定することによって可動部Aの動き(すなわち、関節J1〜関節J6それぞれの回動)を制限することができる。この一例において、ロボット制御装置30は、6つの動作モードを有する。なお、ロボット制御装置30は、5つ以下の動作モードを有する構成であってもよく、7つ以上の動作モードを有する構成であってもよい。
図7は、ロボット制御装置30が有する6つの動作モードのそれぞれを例示する図である。ロボット制御装置30が有する6つの動作モードは、例えば、図7に示したように、動作モードIDによって識別される。このため、ユーザーは、動作モードIDを用いて、動作プログラムによってロボット制御装置30の動作モードを指定することができる。なお、当該6つの動作モードは、動作モードIDに代えて、他の情報によって識別される構成であってもよい。図7に示した例では、動作モードIDによって識別される各動作モードには、関節J1〜関節J6それぞれの回動角を逆運動学に基づいて算出する際における10の制限(すなわち、条件、情報)が対応付けられている。ロボット制御装置30は、動作プログラムによって動作モードが指定された場合、動作プログラムによって指定された教示点の位置及び姿勢と、逆運動学とに基づいて、指定された動作モードに対応付けられている10の制限を満たすように、当該教示点にロボット20の制御点が一致した場合における関節J1〜関節J6それぞれの回動角を算出する。すなわち、動作プログラムによって指定された教示点にロボット20の制御点を一致させる動作をロボット20が行う際、ロボット20は、動作プログラムによって指定された動作モードに対応付けられた10の制限を満たすように動作する。なお、各動作モードに対応付けられている制限の数は、9以下であってもよく、11以上であってもよい。
図7に示した例では、各動作モードに対応付けられた10の制限は、腕姿勢、肘姿勢、手首姿勢、関節J1、関節J2、関節J3、関節J4、関節J5、関節J6、回動量の優先度順のそれぞれに対する制限である。ここで、これらの制限について詳しく説明する。なお、各動作モードに対応付けられた制限には、腕姿勢、肘姿勢、手首姿勢、関節J1、関節J2、関節J3、関節J4、関節J5、関節J6、回動量の優先度順のそれぞれに対する制限のうちの一部が含まれる構成であってもよく、腕姿勢、肘姿勢、手首姿勢、関節J1、関節J2、関節J3、関節J4、関節J5、関節J6、回動量の優先度順のそれぞれに対する制限のうちの一部又は全部とともに他の制限が含まれる構成であってもよい。
腕姿勢は、可動部Aの姿勢を、第1回動軸AX1と第5回動軸AX5との相対的な位置関係によって分類した姿勢のことである。腕姿勢には、右腕姿勢と左腕姿勢の2つの姿勢が含まれている。右腕姿勢は、可動部Aの姿勢のうち、前述の第1方向に向かってロボット20を見た場合において第1回動軸AX1に対して第5回動軸AX5が左側に位置する姿勢のことである。一方、左腕姿勢は、可動部Aの姿勢のうち、第1方向に向かってロボット20を見た場合において第1回動軸AX1に対して第5回動軸AX5が右側に位置する姿勢のことである。
動作プログラムによって指定された教示点にロボット20の制御点を一致させる動作をロボット20が行う際、ロボット20は、動作プログラムによって指定された動作モードに応じた制限であって腕姿勢に対する制限として、第11制限、第12制限、第13制限のいずれかの制限を満たすようにロボット20を動作させる。第11制限は、ロボット20の現在の腕姿勢を保つことである。すなわち、ロボット制御装置30は、当該動作モードが第11制限を満たすようにロボット20を動かす場合、現在のロボット20の腕姿勢が右腕姿勢ならば、ロボット20を動作させた後のロボット20の腕姿勢を右腕姿勢のまま変化させず、現在のロボット20の腕姿勢が左腕姿勢ならば、ロボット20を動作させた後のロボット20の腕姿勢を左腕姿勢のまま変化させない。第12制限は、ロボット20の現在の腕姿勢を変化させることである。すなわち、ロボット制御装置30は、当該動作モードが第12制限を満たすようにロボット20を動かす場合、現在のロボット20の腕姿勢が右腕姿勢ならば、ロボット20を動作させた後のロボット20の腕姿勢を左腕姿勢に変化させ、現在のロボット20の腕姿勢が左腕姿勢ならば、ロボット20を動作させた後のロボット20の腕姿勢を右腕姿勢に変化させる。第13制限は、ロボット20の動作において腕姿勢を制限しないことである。すなわち、ロボット制御装置30は、当該動作モードが第13制限を満たすようにロボット20を動かす場合、動作プログラムによって指定された動作モードに対応付けられた制限のうち腕姿勢に対する制限以外の制限を満たすようにロボット20を動作させる。この際、ロボット20は、ロボット20の腕姿勢を当該制限に応じて決まる腕姿勢と一致させる。
図7に示した例では、各動作モードにおいて腕姿勢に対する制限(図7では、単に「腕姿勢」と表されている)には、「×」が記載されている。当該「×」は、腕姿勢に対する制限として第11制限が適用されることを意味している。すなわち、ロボット制御装置30は、図7に示した6つの動作モードのいずれが動作プログラムによって指定されたとしても、腕姿勢に対する制限として第11制限を満たすようにロボット20を動作させる。なお、図示されていないが、例えば、ある動作モードにおいて腕姿勢に対する制限に「※」が記載されている場合、当該制限には、第12制限が適用されることを意味する。また、図示されていないが、例えば、ある動作モードにおいて腕姿勢に対する制限に「○」が記載されている場合、当該制限には、第13制限が適用されることを意味する。
ここで、ロボット制御装置30は、各動作モードにおいて腕姿勢に対する制限を、フラグによって設定する構成であってもよく、他の情報、他の方法等によって設定する構成であってもよい。
なお、ロボット制御装置30は、腕姿勢に対する制限に対して、第11制限、第12制限、第13制限の一部のいずれかを適用する構成であってもよく、第11制限、第12制限、第13制限の一部又は全部に代えて、腕姿勢に対する他の制限を適用する構成であってもよい。
肘姿勢は、可動部Aの姿勢を、第2回動軸AX2と第3回動軸AX3との相対的な位置関係によって分類した姿勢のことである。肘姿勢には、上肘姿勢と下肘姿勢の2つの姿勢が含まれている。上肘姿勢は、可動部Aの姿勢のうち、第2回動軸AX2に対して第3回動軸AX3が上側に位置する姿勢のことである。一方、下肘姿勢は、可動部Aの姿勢のうち、第2回動軸AX2に対して第3回動軸AX3が下側に位置する姿勢のことである。
動作プログラムによって指定された教示点にロボット20の制御点を一致させる動作をロボット20が行う際、ロボット20は、動作プログラムによって指定された動作モードに応じた制限であって肘姿勢に対する制限として、第21制限、第22制限、第23制限のいずれかの制限を満たすようにロボット20を動作させる。第21制限は、ロボット20の現在の肘姿勢を保つことである。すなわち、ロボット制御装置30は、当該動作モードが第21制限を満たすようにロボット20を動かす場合、現在のロボット20の肘姿勢が上肘姿勢ならば、ロボット20を動作させた後のロボット20の肘姿勢を上肘姿勢のまま変化させず、現在のロボット20の肘姿勢が下肘姿勢ならば、ロボット20を動作させた後のロボット20の肘姿勢を下肘姿勢のまま変化させない。第22制限は、ロボット20の現在の肘姿勢を変化させることである。すなわち、ロボット制御装置30は、当該動作モードが第22制限を満たすようにロボット20を動かす場合、現在のロボット20の肘姿勢が上肘姿勢ならば、ロボット20を動作させた後のロボット20の肘姿勢を下肘姿勢に変化させ、現在のロボット20の肘姿勢が下肘姿勢ならば、ロボット20を動作させた後のロボット20の肘姿勢を上肘姿勢に変化させる。第23制限は、ロボット20の動作において肘姿勢を制限しないことである。すなわち、ロボット制御装置30は、当該動作モードが第23制限を満たすようにロボット20を動かす場合、動作プログラムによって指定された動作モードに対応付けられた制限のうち肘姿勢に対する制限以外の制限を満たすようにロボット20を動作させる。この際、ロボット20は、ロボット20の肘姿勢を当該制限に応じて決まる肘姿勢と一致させる。
図7に示した例では、動作モードIDが1〜3の3つの動作モードのそれぞれにおいて肘姿勢に対する制限(図7では、単に「肘姿勢」と表されている)には、「×」が記載されている。当該「×」は、肘姿勢に対する制限として第21制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該3つの動作モードのいずれが動作プログラムによって指定されたとしても、肘姿勢に対する制限として第21制限を満たすようにロボット20を動作させる。また、動作モードIDが4〜6の3つの動作モードのそれぞれにおいて肘姿勢に対する制限には、「※」が記載されている。当該「※」は、肘姿勢に対する制限として第22制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該3つの動作モードのいずれが動作プログラムによって指定されたとしても、肘姿勢に対する制限として第22制限を満たすようにロボット20を動作させる。なお、図示されていないが、例えば、ある動作モードにおいて肘姿勢に対する制限に「○」が記載されている場合、当該制限には、第23制限が適用されることを意味する。
ここで、ロボット制御装置30は、各動作モードにおいて肘姿勢に対する制限を、フラグによって設定する構成であってもよく、他の情報、他の方法等によって設定する構成であってもよい。
なお、ロボット制御装置30は、肘姿勢に対する制限に対して、第21制限、第22制限、第23制限の一部のいずれかを適用する構成であってもよく、第21制限、第22制限、第23制限の一部又は全部に代えて、肘姿勢に対する他の制限を適用する構成であってもよい。
手首姿勢は、可動部Aの姿勢を、第4回動軸AX4と第6回動軸AX6との相対的な位置関係によって分類した姿勢のことである。手首姿勢には、上手首姿勢と下手首姿勢の2つの姿勢が含まれている。上手首姿勢は、可動部Aの姿勢のうち、第4回動軸AX4に沿った2つ方向のうち関節J4から関節J5に向かう方向に向かって第4回動軸AX4を延伸させた場合において第6回動軸AX6が第4回動軸AX4よりも上側に位置している姿勢のことである。一方、下手首姿勢は、可動部Aの姿勢のうち、当該場合において第6回動軸AX6が第4回動軸AX4よりも下側に位置している姿勢のことである。
動作プログラムによって指定された教示点にロボット20の制御点を一致させる動作をロボット20が行う際、ロボット20は、動作プログラムによって指定された動作モードに応じた制限であって手首姿勢に対する制限として、第31制限、第32制限、第33制限のいずれかの制限を満たすようにロボット20を動作させる。第31制限は、ロボット20の現在の手首姿勢を保つことである。すなわち、ロボット制御装置30は、当該動作モードが第31制限を満たすようにロボット20を動かす場合、現在のロボット20の手首姿勢が上手首姿勢ならば、ロボット20を動作させた後のロボット20の手首姿勢を上手首姿勢のまま変化させず、現在のロボット20の手首姿勢が下手首姿勢ならば、ロボット20を動作させた後のロボット20の手首姿勢を下手首姿勢のまま変化させない。第32制限は、ロボット20の現在の手首姿勢を変化させることである。すなわち、ロボット制御装置30は、当該動作モードが第32制限を満たすようにロボット20を動かす場合、現在のロボット20の手首姿勢が上手首姿勢ならば、ロボット20を動作させた後のロボット20の手首姿勢を下手首姿勢に変化させ、現在のロボット20の手首姿勢が下手首姿勢ならば、ロボット20を動作させた後のロボット20の手首姿勢を上手首姿勢に変化させる。第33制限は、ロボット20の動作において手首姿勢を制限しないことである。すなわち、ロボット制御装置30は、当該動作モードが第33制限を満たすようにロボット20を動かす場合、動作プログラムによって指定された動作モードに対応付けられた制限のうち手首姿勢に対する制限以外の制限を満たすようにロボット20を動作させる。この際、ロボット20は、ロボット20の手首姿勢を当該制限に応じて決まる手首姿勢と一致させる。
図7に示した例では、動作モードIDが2の動作モードにおいて手首姿勢に対する制限(図7では、単に「手首姿勢」と表されている)には、「×」が記載されている。当該「×」は、手首姿勢に対する制限として第31制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該動作モードが動作プログラムによって指定された場合、手首姿勢に対する制限として第31制限を満たすようにロボット20を動作させる。また、動作モードIDが1、3〜6の5つの動作モードのそれぞれにおいて手首姿勢に対する制限には、「○」が記載されている。当該「○」は、手首姿勢に対する制限として第33制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該5つの動作モードのいずれが動作プログラムによって指定されたとしても、手首姿勢に対する制限として第33制限を満たすようにロボット20を動作させる。なお、図示されていないが、例えば、ある動作モードにおいて手首姿勢に対する制限に「※」が記載されている場合、当該制限には、第32制限が適用されることを意味する。
ここで、ロボット制御装置30は、各動作モードにおいて手首姿勢に対する制限を、フラグによって設定する構成であってもよく、他の情報、他の方法等によって設定する構成であってもよい。
なお、ロボット制御装置30は、手首姿勢に対する制限に対して、第31制限、第32制限、第33制限の一部のいずれかを適用する構成であってもよく、第31制限、第32制限、第33制限の一部又は全部に代えて、手首姿勢に対する他の制限を適用する構成であってもよい。
関節J1に対する制限は、関節J1の回動方向に関する制限のことである。動作プログラムによって指定された教示点にロボット20の制御点を一致させる動作をロボット20が行う際、ロボット20は、動作プログラムによって指定された動作モードに応じた制限であって関節J1に対する制限として、第41制限、第42制限、第43制限、第44制限のいずれかの制限を満たすようにロボット20を動作させる。第41制限は、正の方向に関節J1を回動させることである。すなわち、ロボット制御装置30は、当該動作モードが第41制限を満たすように関節J1を動かす場合、関節J1を正の方向に回動させる。第42制限は、当該動作モードが第42制限を満たすように関節J1を動かす場合、関節J1を負の方向に回動させる。第43制限は、ロボット20の動作において正の方向と負の方向とのうち関節J1の回動量が小さくなる方向に関節J1を回動させることである。すなわち、ロボット制御装置30は、当該動作モードが第43制限を満たすように関節J1を動かす場合、動作プログラムによって指定された動作モードに対応付けられた制限のうち関節J1に対する制限以外の制限を満たすように関節J1を動作させる。この際、ロボット20は、正の方向と負の方向とのうち関節J1の回動量が小さくなる方向に関節J1を回動させる。第44制限は、関節J1の回動を制限しないことである。すなわち、ロボット制御装置30は、当該動作モードが第44制限を満たすように関節J1を動かす場合、動作プログラムによって指定された動作モードに対応付けられた制限のうち関節J1に対する制限以外の制限を満たすように関節J1を動作させる。
図7に示した例では、動作モードIDが1〜6の6つの動作モードのそれぞれにおいて関節J1に対する制限(図7では、単に「関節J1」と表されている)には、「○」が記載されている。当該「○」は、関節J1に対する制限として第43制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該6つの動作モードのいずれが動作プログラムによって指定されたとしても、関節J1に対する制限として第43制限を満たすように関節J1を動作させる。なお、図示されていないが、例えば、ある動作モードにおいて関節J1に対する制限に「×」が記載されている場合、当該制限には、第41制限が適用されることを意味する。また、図示されていないが、例えば、ある動作モードにおいて関節J1に対する制限に「※」が記載されている場合、当該制限には、第42制限が適用されることを意味する。また、図示されていないが、例えば、ある動作モードにおいて関節J1に対する制限に「−」が記載されている場合、当該制限には、第44制限が適用されることを意味する。
ここで、ロボット制御装置30は、各動作モードにおいて関節J1に対する制限を、フラグによって設定する構成であってもよく、他の情報、他の方法等によって設定する構成であってもよい。
なお、ロボット制御装置30は、関節J1に対する制限に対して、第41制限、第42制限、第43制限、第44制限の一部のいずれかを適用する構成であってもよく、第41制限、第42制限、第43制限、第44制限の一部又は全部に代えて、関節J1に対する他の制限を適用する構成であってもよい。
関節J2〜関節J6それぞれに対する制限は、関節J1に対する制限と同様の制限であるため、説明を省略する。図7に示した例では、各動作モードにおいて、関節J2〜関節J4、関節J6のそれぞれには、「○」によって表される制限が適用されている。当該制限は、関節J1に対する制限のうちの第43制限と同様の制限である。また、当該例では、関節J5には、「−」によって表される制限が適用されている。当該制限は、関節J1に対する制限のうちの第44制限と同様の制限である。
回動量の優先度順に対する制限は、関節J4〜関節J6の3つの関節それぞれの回動量(すなわち、回動した量、回動した角度)の相対的な大小関係に関する制限のことである。動作プログラムによって指定された教示点にロボット20の制御点を一致させる動作をロボット20が行う際、ロボット20は、動作プログラムによって指定された動作モードに応じた制限であって回動量の優先度順に対する制限として、第51制限、第52制限、第53制限、第54制限のいずれかの制限を満たすようにロボット20を動作させる。第51制限は、関節J6の回動量よりも関節J4の回動量を小さくすることである。すなわち、ロボット制御装置30は、当該動作モードが第51制限を満たすようにロボット20を動かす場合、関節J6の回動量よりも関節J4の回動量が小さくなるようにロボット20を動作させる。第52制限は、関節J4の回動量よりも関節J6の回動量を小さくすることである。すなわち、ロボット制御装置30は、当該動作モードが第52制限を満たすようにロボット20を動かす場合、関節J4の回動量よりも関節J6の回動量が小さくなるようにロボット20を動作させる。第53制限は、関節J6の回動量よりも関節J5の回動量を小さくすることである。すなわち、ロボット制御装置30は、当該動作モードが第53制限を満たすようにロボット20を動かす場合、関節J6の回動量よりも関節J5の回動量が小さくなるようにロボット20を動作させる。第54制限は、関節J4〜関節J6の3つの関節それぞれの回動量の相対的な大小関係を制限しないことである。すなわち、ロボット制御装置30は、当該動作モードが第54制限を満たすようにロボット20を動かす場合、動作プログラムによって指定された動作モードに対応付けられた制限のうち回動量の優先度順に対する制限以外の制限を満たすようにロボット20を動作させる。
図7に示した例では、動作モードIDが1、4の2つの動作モードのそれぞれにおいて回動量の優先度順に対する制限(図7では、単に「回動量の優先度順」と表されている)には、「J4>J6」が記載されている。当該「J4>J6」は、回動量の優先度順に対する制限として第51制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該2つの動作モードのいずれが動作プログラムによって指定されたとしても、回動量の優先度順に対する制限として第51制限を満たすようにロボット20を動作させる。また、動作モードIDが3、6の2つの動作モードのそれぞれにおいて回動量の優先度順に対する制限には、「J6>J4」が記載されている。当該「J6>J4」は、回動量の優先度順に対する制限として第52制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該2つの動作モードのいずれが動作プログラムによって指定されたとしても、回動量の優先度順に対する制限として第52制限を満たすようにロボット20を動作させる。また、動作モードIDが5の動作モードにおいて回動量の優先度順に対する制限には、「J5>J6」が記載されている。当該「J5>J6」は、回動量の優先度順に対する制限として第53制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該動作モードのいずれが動作プログラムによって指定された場合、回動量の優先度順に対する制限として第53制限を満たすようにロボット20を動作させる。また、動作モードIDが2の動作モードにおいて回動量の優先度順に対する制限には、何も記載されていない。この場合、回動量の優先度順に対する制限として第54制限が適用されることを意味している。すなわち、ロボット制御装置30は、当該動作モードのいずれが動作プログラムによって指定された場合、回動量の優先度順に対する制限として第54制限を満たすようにロボット20を動作させる。
ここで、ロボット制御装置30は、各動作モードにおいて回動量の優先度順に対する制限を、フラグによって設定する構成であってもよく、他の情報、他の方法等によって設定する構成であってもよい。
なお、ロボット制御装置30は、回動量の優先度順に対する制限に対して、第51制限、第52制限、第53制限、第54制限の一部のいずれかを適用する構成であってもよく、第51制限、第52制限、第53制限、第54制限の一部又は全部に代えて、回動量の優先度順に対する他の制限を適用する構成であってもよい。
また、図6に示した動作をロボット制御装置30がロボット20に行わせる場合、動作プログラムには、第1位置に位置する教示点である第1教示点と、第2位置に位置する第2教示点と、4〜6のいずれかの動作モードIDが示す動作モードとを指定する情報が記載される。すなわち、ロボット制御装置30は、動作プログラムに基づいて、動作モードを4〜6のいずれかの動作モードIDが示す動作モードのいずれかに設定し、ロボット20の制御点を一致させる教示点として第1教示点と第2教示点とを特定する。これにより、ロボット制御装置30は、図6に示した動作をロボット20に行わせることができる。これにより、ロボット20は、周囲の物体との空間を狭くすることができる。
ここで、図6に示した動作をロボット20が行う場合、前述の第1方向に向かってロボット20を見た場合、ロボット20は、第2回動軸AX2と第3回動軸AX3との相対的な位置関係を変更する。当該場合における第2回動軸AX2と第3回動軸AX3との相対的な位置関係は、例えば、当該場合において第2回動軸AX2に対して第3回動軸AX3が左側に位置している左位置関係、又は、当該場合において第2回動軸AX2に対して第3回動軸AX3が右側に位置している右位置関係のことである。なお、当該場合における第2回動軸AX2と第3回動軸AX3との相対的な位置関係は、これらに代えて、当該場合における第2回動軸AX2と第3回動軸AX3との相対的な他の位置関係であってもよい。
すなわち、図7に示した6つの動作モードのそれぞれに対応付けられた10の制限は、第1方向に向かってロボット20を見た場合において、第2回動軸AX2と第3回動軸AX3との相対的な位置関係を変更させるか否かを示す情報の一例であると換言することができる。つまり、1〜3のいずれかの動作モードIDが示す動作モードに対応付けられた10の制限は、第1方向に向かってロボット20を見た場合における位置関係であって第2回動軸AX2と第3回動軸AX3との相対的な位置関係を変更させないことを示す情報の一例である。また、4〜6のいずれかの動作モードIDが示す動作モードに対応付けられた10の制限は、第1方向に向かってロボット20を見た場合における位置関係であって第2回動軸AX2と第3回動軸AX3との相対的な位置関係を変更させることを示す情報の一例である。
まとめると、ロボット制御装置30は、第1方向に向かってロボット20を見た場合における位置関係であって第2回動軸AX2と第3回動軸AX3との相対的な位置関係を変更させるか否かを示す情報に基づいて、前述の第1状態を経る動作であって図6に示した動作をロボット20に行わせる。この具体例の1つとして、本実施形態に係るロボット制御装置30は、動作プログラムによって指定された動作モードに基づいて、当該動作をロボット20に行わせる。これにより、ロボット20は、所望の領域に対して作業を行わせるためにロボットを設置する位置が制限されてしまうことを抑制することができる。なお、ロボット制御装置30は、動作モードに対応付けられた10の制限と異なる他の情報であって当該場合における位置関係であって第2回動軸AX2と第3回動軸AX3との相対的な位置関係を変更させるか否かを示す情報に基づいて、当該動作をロボット20に行わせる構成であってもよい。
<ロボット制御装置の機能構成>
以下、図8を参照し、ロボット制御装置30の機能構成について説明する。図8は、ロボット制御装置30の機能構成の一例を示す図である。
ロボット制御装置30は、メモリー32と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、算出部361と、ロボット制御部363を備える。制御部36が備えるこれらの機能部は、例えば、プロセッサー31が、メモリー32に記憶された指令321、322等の各種の指令を実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
算出部361は、メモリー32に予め記憶された動作プログラムをメモリー32から読み出す。算出部361は、読み出した動作プログラムに基づいて、ロボット制御装置30の動作モードを特定する。また、算出部361は、当該動作プログラムによって指定された教示点の位置及び姿勢を特定する。算出部361は、特定した動作モードに対応付けられた10の制限と、当該教示点の位置及び姿勢と、逆運動学とに基づいて、関節J1〜関節J6それぞれの回動角を算出する。
ロボット制御部363は、算出部361が算出した回動角と、算出部361が特定した動作モードに対応付けられた10の制限とに基づいて、ロボット20を動作させる。
<ロボット制御装置が行う処理>
以下、図9を参照し、ロボット制御装置30が行う処理の流れについて説明する。図9は、ロボット制御装置30が行う処理の流れの一例を示すフローチャートである。
算出部361は、メモリー32に予め記憶された動作プログラムをメモリー32から読み出す(ステップS110)。
次に、算出部361は、ステップS110においてメモリー32から読み出した動作プログラムに基づいて、当該動作プログラムによって指定された動作モードを特定する(ステップS120)。
次に、算出部361は、ステップS110においてメモリー32から読み出した動作プログラムに基づいて、当該動作プログラムによって指定された教示点を1つずつ上から順に対象教示点として選択し、選択した対象教示点に対してステップS140〜ステップS150の処理を繰り返し行う(ステップS130)。以下では、一例として、前述の第1教示点と第2教示点が、第1教示点、第2教示点の順に対象教示点としてステップS130において選択される場合について説明する。
ステップS130において対象教示点が選択された後、算出部361は、対象教示点の位置及び姿勢を目標位置及び目標姿勢として特定する(ステップS140)。
次に、算出部361は、ステップS140において特定した目標位置及び目標姿勢と、ステップS120において特定した動作モードと、逆運動学とに基づいて、対象教示点にロボット20の教示点が一致した場合における関節J1〜関節J6それぞれの回動角を算出する(ステップS150)。
次に、ロボット制御部363は、ステップS150において算出部361が算出した回動角に基づいて関節J1〜関節J6のそれぞれを動作させ、ロボット20の制御点を対象教示点と一致させる(ステップS160)。
ステップS160の処理が行われた後、算出部361は、ステップS130に遷移し、次の教示点を対象教示点として選択する。このように、ステップS130〜ステップS160の繰り返し処理によって、ロボット制御装置30は、図6に示した動作をロボット20に行わせることができる。その結果、ロボット20は、周囲の物体との空間を狭くすることができる。例えば、図1に示した例では、ロボット20は、棚LC1に対して作業を行う場合において、棚LC1との間の空間を狭くすることができる。そして、ロボット20は、棚LC2に対して作業を行う場合において、関節J1を回動させて、ロボット20の状態を、ロボット座標系RCにおけるY軸と第2回動軸AX2とが平行になる2つの状態のうち関節J2が棚LC2に近くなる状態にすることにより、棚LC2との間の空間を狭くすることができる。また、ロボット20は、棚LC3に対して作業を行う場合において、関節J1を回動させて、ロボット20の状態を、ロボット座標系RCにおけるX軸と第2回動軸AX2とが平行になる2つの状態のうち関節J2が棚LC3に近くなる状態にすることにより、棚LC3との間の空間を狭くすることができる。なお、算出部361及びロボット制御部363は、ステップS130において算出部361が未選択の教示点が存在しない場合、処理を終了する。
なお、上記において説明したロボット制御装置30は、1つのプロセッサー31と、1つのメモリー32とを備える情報処理装置PC1に代えて、図10に示したように、複数の情報処理装置のうちの一部又は全部によって構成されてもよい。図10は、複数の情報処理装置によってロボット制御装置30が構成される場合におけるロボット制御装置30のハードウェア構成の一例である。
図10に示した情報処理装置PC2及び情報処理装置PC3は、情報処理装置PC1と同様の構成であるため、説明を省略する。
図10に示した例では、情報処理装置PC1と、情報処理装置PC2とが無線又は有線によって互いに通信可能に接続されている。また、当該例では、情報処理装置PC1と、情報処理装置PC3とがLAN(Local Area Network)を介して無線又は有線によって互いに通信可能に接続されている。また、当該例では、情報処理装置PC2と、情報処理装置PC3とがLANを介して無線又は有線によって互いに通信可能に接続されている。
また、図10に示した例では、ロボット制御装置30は、プロセッサー31と、プロセッサー41と、プロセッサー51のうちの少なくとも1つと、メモリー32と、メモリー42と、メモリー52のうちの少なくとも1つとによって構成される。プロセッサー31と、プロセッサー41と、プロセッサー51のうちの2つ以上によってロボット制御装置30が構成される場合、ロボット制御装置30を構成する当該2つ以上のプロセッサーは、通信部による通信を行うことにより、連携してロボット制御装置30の機能を実現する。また、当該場合、当該2つ以上のプロセッサーは、メモリー32と、メモリー42と、メモリー52のうちの少なくとも1つに格納された指令に基づいて、ロボット制御装置30の機能による処理を実行する。
図10に示した例のように、ロボット制御装置30が複数の情報処理装置によって構成される場合、教示装置40は、当該複数の情報処理装置の少なくとも1つと通信可能に接続される。
また、上記において説明したロボット制御装置30は、動作プログラムに基づいて、ロボット20に行わせる動作毎に動作モードを切り替え可能な構成であってもよく、ロボット20に行わせる作業毎に動作モードを切り替え可能な構成であってもよい。
また、マニピュレーターMは、第3回動軸AX3の軸方向から見て、第3アームL3と第4アームL4とが重なることが可能であるように構成されてもよい。また、マニピュレーターMは、第5回動軸AX5の軸方向から見て、第5アームL5と第6アームL6とが重なることが可能であるように構成されてもよい。
また、Aアームの一例は、第1アームL1であってもよい。この場合、Bアームの一例は、第2アームL2である。また、Aアームの一例は、第3アームL3であってもよい。この場合、Bアームの一例は、第4アームL4である。
また、Aアームの一例は、第4アームL4であってもよい。この場合、Bアームの一例は、第5アームL5である。また、Aアームの一例は、第5アームL5であってもよい。この場合、Bアームの一例は、第6アームL6である。
以上のように、ロボット20は、Aアーム(この一例において、第2アームL2)とBアーム(この一例において、第3アームL3)とは、B回動軸(この一例において、第3回動軸AX3)の軸方向から見て、重なる第1状態となることが可能であり、マニピュレーター(この一例において、マニピュレーターM)の先端(この一例において、関節J6の重心)は、第1回動軸(この一例において、第1回動軸AX1)に直交する方向から見て、基台(この一例において、基台B)の設置面(この一例において、設置台BSの上面)よりも下の第1位置から、第1状態を経て、A回動軸(この一例において、第2回動軸AX2)よりも上の第2位置へ移動することが可能である。これにより、ロボット20は、周囲の物体との空間を狭くすることができる。
また、ロボット20では、第2位置は、第1回動軸に直交する方向から見た場合、B回動軸よりも上にある。これにより、ロボット20は、周囲の物体との空間を狭くすることができるとともに、より広い領域に対して作業を行うことができる。
また、ロボット20では、A回動軸は、第1回動軸と交差しない。これにより、ロボット20は、マニピュレーターと基台とが干渉してしまうことを抑制しながら、周囲の物体との空間を狭くすることができる。
また、ロボット20では、Aアームは、第2アーム(この一例において、第2アームL2)である。これにより、ロボット20は、第2アームとBアームが第1状態となることができることにより、周囲の物体との空間を狭くすることができる。
また、ロボット20では、Aアームの回動範囲は、360°以上である。これにより、ロボット20は、Aアームを回動させることによりAアームとBアームとを第1状態にすることができることにより、周囲の物体との空間を狭くすることができる。
また、ロボット20は、ロボット20の動作においてA回動軸とB回動軸との相対的な位置関係を変更させるか否かを示す情報(この一例において、各動作モードに対応付けられた10の制限)に基づいて動作する。これにより、ロボット20は、ロボット20の動作においてA回動軸とB回動軸との相対的な位置関係を変更させるか否かを示す情報に基づいて、周囲の物体との空間を狭くすることができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット制御装置30)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。