以下、本発明による制御装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。
(実施の形態1)
本発明の実施の形態1によるマニピュレータの制御装置について、図面を参照しながら説明する。本実施の形態によるマニピュレータの制御装置は、3次元形状を用いて内回り開始位置を算出するものである。
図1は、本実施の形態による産業用ロボットの構成を示すブロック図である。本実施の形態による産業用ロボットは、制御装置1と、サーボコントローラ2と、マニピュレータ3とを備える。マニピュレータ3は、モータによって駆動される関節によって連結された複数のアームを有する。そのマニピュレータ3において、各モータとアームとは減速器を介して接続されている。また、直列に接続されたアームの先端には手先効果器(エンドエフェクタ)が設けられていてもよい。マニピュレータ3は、例えば、水平多関節ロボットのマニピュレータであってもよく、または、垂直多関節ロボットのマニピュレータであってもよい。サーボコントローラ2は、制御装置1による制御に応じて、マニピュレータ3の各軸のモータを制御する。制御装置1は、ティーチングプレイバック方式により、後述する教示情報に応じてマニピュレータ3が動作するようにサーボコントローラ2を制御する。本実施の形態による産業用ロボットは、例えば、搬送ロボットであってもよく、溶接ロボットであってもよく、組立ロボットであってもよく、塗装ロボットであってもよく、あるいは、その他の用途のロボットであってもよい。本実施の形態では、水平多関節ロボットであり、搬送ロボットである産業用ロボットについて主に説明する。すなわち、図2で示されるように、手先効果器が、搬送対象を搬送するハンド3aであり、カセット41〜43の各スロットに、ウェハやガラス基板等の搬送対象を設置したり、各スロットから搬送対象を取得したりする場合について主に説明する。
図1で示されるように、本実施の形態による制御装置1は、内回り開始位置を算出する算出装置11と、その算出された内回り開始位置を用いてサーボコントローラ2を制御する軌道制御部12とを備える。また、算出装置11は、教示情報記憶部21と、形状情報記憶部22と、算出部23とを備える。
教示情報記憶部21では、教示情報が記憶される。教示情報は、モータによって駆動される関節によって連結された複数のアームを有するマニピュレータ3の2以上の教示点を示す情報である。その教示点は、例えば、マニピュレータ3の各軸の教示点であってもよく、または、マニピュレータ3の先端の教示点であってもよい。また、教示情報は、教示点におけるマニピュレータ3の先端の姿勢をも示す情報であってもよい。すなわち、教示情報にマニピュレータ3の手先効果器の姿勢を示す情報が含まれていてもよい。その姿勢を示す情報は、例えば、水平方向における手先効果器の向きを示す角度(例えば、方位角)であってもよく、球面座標系における手先効果器の向きを示す角度(例えば、方位角と仰俯角)であってもよく、球面座標系における手先効果器の向きを示す角度と、手先効果器の方向を中心とする回転の角度であるねじり角度(例えば、手首のねじりに対応する角度)とであってもよい。例えば、産業用ロボットが搬送ロボットであり、手先効果器であるハンドのチルト等を考慮しない場合には、その姿勢を示す情報は、ハンドの向きを示す方位角のみであってもよい。また、各教示点には、その教示点において内回りをするかどうかを示すフラグ等の情報が設定されていてもよい。また、時間的に隣接する2個の教示点を結ぶ軌道に対応する速さを示す情報が教示情報に含まれていてもよい。その速さを示す情報は、例えば、50%や100%等のように、最大の速さに対する割合で示されてもよい。
教示情報記憶部21に教示情報が記憶される過程は問わない。例えば、記録媒体を介して教示情報が教示情報記憶部21で記憶されるようになってもよく、通信回線等を介して送信された教示情報が教示情報記憶部21で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された教示情報が教示情報記憶部21で記憶されるようになってもよい。教示情報記憶部21での記憶は、RAM等における一時的な記憶でもよく、あるいは、長期的な記憶でもよい。教示情報記憶部21は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
形状情報記憶部22では、位置算出用形状を示す情報である形状情報が記憶される。その位置算出用形状は、第1の方向の長さ、及びその第1の方向と異なる方向である第2の方向の長さを独立して設定可能な3次元形状である。すなわち、位置算出用形状は、少なくとも2方向について独立して長さを設定可能であるものであればよい。したがって、一方向の長さを決めれば他の方向の長さも決まる球や立方体は位置算出用形状に含まれない。また、その位置算出用形状は、基準点の設定された3次元形状である。その基準点は、内回りを行う教示点に対する位置算出用形状の位置決めのために用いられる。また、位置算出用形状には、基準となる方向である基準方向も設定されていてもよい。その基準方向は、内回りを行う教示点におけるマニピュレータ3の先端の姿勢に対する位置算出用形状の向きを決めるために用いられる。その基準方向は、位置算出用形状に設定されたローカル座標系(例えば、3次元の直交座標系等)であってもよく、あるいは、その他のものであってもよい。本実施の形態では、位置算出用形状に、基準点と、ローカル座標系である基準方向との両方が設定されている場合について主に説明する。この形状情報を用いて、内回り開始位置が算出されることになる。また、形状情報のデータ形式は問わない。形状情報において、位置算出用形状を示す情報は、位置算出用形状の頂点を示す情報であってもよく、位置算出用形状の面を示す情報であってもよく、または、その他の方法によって位置算出用形状を示す情報であってもよい。また、形状情報において、基準点は座標で示されてもよく、または、基準点の位置はあらかじめ決められていてもよい。また、形状情報において、基準方向はあらかじめ決められていてもよく、または、基準方向はベクトル等で示されてもよい。
ここで、その形状情報の設定方法について説明する。まず、搬送ロボットがカセットの各スロットに搬送対象を設置したり、各スロットから搬送対象を取得したりする動作について説明する。図3は、搬送ロボットのハンド3aの動きを示す図である。搬送対象をスロット52に設置する場合には、ハンド3aは、他のスロットの位置RA1から設置スタート位置RTに移動し、その後、トップ位置ET、ミドル位置EM、ボトム位置EB、取得スタート位置RBの順に移動して、他のスロットの位置RA2に移動する。搬送対象をスロット52から取得する場合には、ハンド3aは、逆の順に移動する。その軌道において、設置スタート位置RTから取得スタート位置RBまでは固定であるが、設置スタート位置RTまたは取得スタート位置RBまでは多様な軌跡が存在する。例えば、図4で示されるように、目標スロット52の上下のスロットからアプローチする場合や、別のカセットから横方向に、または、斜め方向にアプローチする場合などがある。そして、そのような各方向からのアプローチに対して適切な内回り開始位置となるための形状情報を設定する必要がある。図4で示されるように、搬送対象が設置されたり、取得されたりするスロット51〜53は、入口の縦幅が、横幅と比較して小さいという特徴がある。したがって、搬送対象やハンド3aがスロット51〜53と干渉しないように、鉛直方向の内回り開始距離は短くなるようにする必要がある。一方、水平方向についてはそのような制限がないため、タクトタイムを短縮するために、水平方向の内回り開始距離は長くなることが好適である。したがって、鉛直方向は長さが短く、水平方向は鉛直方向と比較して長い直方体である位置算出用形状を設定する。具体的には、図5A,図5Bで示されるように、鉛直方向については、設置スタート位置RTの高さと、上側のスロット53の底面の高さとの距離z11と、設置スタート位置RTの高さと、目標のスロット52の上面の高さとの距離z12とを用いて設定する。また、水平方向のうち、スロット52の奥行き方向については、設置スタート位置RTと、カセット41の入口との距離x11と、マニピュレータ3の旋回中心から奥行き方向に直角に延ばした直線と、設置スタート位置RTとの距離x12とを用いて設定する。また、水平方向のうち、奥行き方向に直角な横方向については、設置スタート位置と、カセット41の内壁面までの距離y11,y12を用いて設定する。なお、x11,x12,y11,y12,z11,z12は、すべて正の実数であるとする。図6は、x11等を用いて設定された、位置算出用形状55の一例を示す図である。図6において、位置算出用形状55は、ローカル座標系のxy平面を水平方向とした場合における、鉛直方向及び水平方向の長さが異なる直方体である。図6で示される位置算出用形状55は、ローカル座標系である3次元直交座標系におけるx=x1の面と、x=−x2の面と、y=y1の面と、y=−y2の面と、z=z1の面と、z=−z2の面とで囲われる直方体である。また、図6では、基準点が、そのローカル座標系における原点、すなわち(x、y、z)=(0,0,0)にあらかじめ設定されており、基準方向がそのローカル座標系そのものであるとする。したがって、この場合には、形状情報は、例えば、各面を示す情報、すなわち、x1,−x2,y1,−y2,z1,−z2であってもよい。なお、x1,x2,y1,y2,z1,z2は、それぞれx11,x12,y11,y12,z11,z12に、1より小さく、1に近い数(例えば、0.9等)を掛けた数であるとする。また、形状情報は、各頂点を示す情報、すなわち、(x1,y1,z1)、(x1,y1,−z2)、(x1,−y2,z1)、(x1,−y2,−z2)、(−x2,y1,z1)、(−x2,y1,−z2)、(−x2,−y2,z1)、(−x2,−y2,−z2)であってもよい。また、形状情報における基準位置は、x11等を測定したときの教示点の位置、すなわち設置スタート位置RTである。また、基準方向は、その教示点におけるマニピュレータ3の先端の姿勢に応じて設定される。なお、本実施の形態では、マニピュレータ3の先端(例えば、ハンド3a)についても、ローカル座標系が設定されているものとする。そして、そのローカル座標系は、図5Bで示されるように、xy平面がハンド3aの載置面方向となる3次元直交座標系であるとする。そのローカル座標系は、ハンド3aの姿勢を基準とする相対座標系であるため、ハンド3aの姿勢に応じてx軸等の方向が変わることになる。また、図5A,図5Bを用いて説明した形状情報の設定方法は一例であり、これに限定されないことは言うまでもない。例えば、x12は、上述した以外の方法によって決められてもよい。
形状情報記憶部22に形状情報が記憶される過程は問わない。例えば、記録媒体を介して形状情報が形状情報記憶部22で記憶されるようになってもよく、通信回線等を介して送信された形状情報が形状情報記憶部22で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された形状情報が形状情報記憶部22で記憶されるようになってもよい。形状情報記憶部22での記憶は、RAM等における一時的な記憶でもよく、あるいは、長期的な記憶でもよい。形状情報記憶部22は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
算出部23は、教示情報によって示される時間的に隣接する2個の教示点の終点側の教示点において内回りを行う場合には、その2個の教示点に関して、その2個の教示点間の線分と、終点側の教示点を基準点とする位置算出用形状との交点である内回り開始位置を算出する。その位置算出用形状は、形状情報記憶部22で記憶されている形状情報によって示されるものである。形状情報に基準方向も含まれており、マニピュレータ3の先端の姿勢も用いて内回り開始位置を算出する場合には、算出部23は、終点側の教示点を基準点とし、その終点側の教示点におけるマニピュレータ3の先端の姿勢と基準方向とを合わせた位置算出用形状と、その2個の教示点を結ぶ線分との交点である内回り開始位置を算出してもよい。前述のように、位置算出用形状に基準方向であるローカル座標系が設定されており、マニピュレータ3の先端にもローカル座標系が設定されている場合には、算出部23は、位置算出用形状の基準点が終点側の教示点に位置し、位置算出用形状に設定されているローカル座標系の各軸の向きが、その終点側の教示点におけるマニピュレータ3の先端の姿勢に応じたローカル座標系の各軸の向きと合うように位置算出用形状を配置してもよい。そして、算出部23は、その配置した位置算出用形状と、2個の教示点を結ぶ線分との交点である内回り開始位置を算出してもよい。なお、2個の教示点のうち、終点側の教示点とは、教示点で示される軌道において時間的に後側の教示点である。また、教示情報にマニピュレータ3の先端以外の教示点が含まれる場合であっても、この内回り開始位置の算出において用いる教示点は、通常、マニピュレータ3の先端の教示点である。また、算出される内回り開始位置の座標は、通常、グローバル座標系(絶対座標系)の座標である。その算出された内回り開始位置は、図示しない記録媒体で記憶されてもよい。
ここで、図7A,図7Bを用いて、算出部23が内回り開始位置を算出する方法について説明する。図7A,図7Bにおいて、教示された設置スタート位置RTにおけるハンド3aの向きは、設置スタート位置RTを始点としてトップ位置ETを終点とするベクトルの向きであるとする。すると、算出部23は、形状情報記憶部22から、x1,x2等の形状情報を読み出し、設置スタート位置RTが基準点となり、ハンド3aの向きが基準方向となるように位置算出用形状55を配置する。具体的には、算出部23は、位置算出用形状55を示すグローバル座標系における座標値等を算出する。そして、算出部23は、他のスロットの位置RA1と、設置スタート位置RTとを結ぶ線分と、設置された位置算出用形状55との交点を算出する。その算出された交点が、内回り開始位置SPとなる。このように、位置算出用形状55を用いて内回り開始位置SPを算出するため、鉛直方向の移動については、小さい内回りとすることによって干渉を回避することができ(図7A)、水平方向の移動については、大きい内回りとすることによってタクトタイムを短縮することができるようになる(図7B)。なお、算出部23が、位置算出用形状55のグローバル座標系における座標値等を算出する際に、他のスロットの位置RA1、及び設置スタート位置RTを結ぶ線分と交わる面についてのみ、グローバル座標系への変換を行ってもよい。
軌道制御部12は、教示情報記憶部21で記憶されている教示情報と、算出部23が算出した内回り開始位置とを用いて、内回り開始位置から内回り軌道が開始されるようにサーボコントローラ2を制御する。内回りを行う場合には、軌道制御部12は、内回り開始位置から速度の重ね合わせを行うことによって内回り軌道が開始されるようにしてもよく、または、内回り開始位置から内回り軌道を生成し、その内回り軌道をマニピュレータ3の各軸が通過するようにしてもよい。本実施の形態では、前者の場合について主に説明する。具体的には、軌道制御部12は、図7A,図7Bにおいて、内回り開始位置SPから設置スタート位置RTまでの距離を計算する。そして、ハンド3aが内回り開始位置SPの位置となる時刻を算出する。例えば、他のスロットの位置RA1から、設置スタート位置RTまでの軌道において、図8で示される速度の時間変化で移動することになっていたとする。速度の立ち上がり位置が他のスロットの位置RA1に対応し、時間「T2」の位置が設置スタート位置RTに対応する。このような場合には、軌道制御部12は、図8の斜線の面積が内回り開始位置SPから設置スタート位置RTまでの距離と等しくなる時間「T1」を求める。そして、その時間「T1」が内回りを開始する時点となるため、その時点から、設置スタート位置RTからトップ位置ETまでの速度との重ね合わせを開始し、内回り軌道が始まることになる。その速度の重ね合わせで用いられる速度の時間変化(例えば、図8で示されるもの)は、あらかじめ教示情報に含まれていてもよく、または、軌道制御部12が教示情報を用いて生成してもよい。なお、軌道制御部12は、教示情報によって示される教示点間を補間した軌道をマニピュレータ3の各軸が通過するように、サーボコントローラ2を制御してもよい。また、教示情報にマニピュレータ3の先端のみの教示点が含まれている場合には、軌道制御部12は、その教示点を用いて各軸の位置を算出してもよい。軌道制御部12による処理は、従来の内回りを行うロボットにおけるサーボコントローラの制御と同じであり、その詳細な説明を省略する。
なお、教示情報記憶部21と、形状情報記憶部22とは、同一の記録媒体によって実現されてもよく、あるいは、別々の記録媒体によって実現されてもよい。前者の場合には、教示情報を記憶している領域が教示情報記憶部21となり、形状情報を記憶している領域が形状情報記憶部22となる。
ここで、サーボコントローラ2について簡単に説明する。サーボコントローラ2は、制御装置1から、マニピュレータ3の各軸の位置の指令を受け取る。サーボコントローラ2は、その各軸の位置の指令に応じて、フィードバック制御により各軸のモータに対応するトルク指令値を生成する。マニピュレータ3の各モータは、このトルク指令値によって動作する。なお、このサーボコントローラ2によるフィードバック制御はすでに公知であり、その詳細な説明を省略する。
次に、制御装置1の動作について図9のフローチャートを用いて説明する。
(ステップS101)軌道制御部12は、教示情報記憶部21から次の移動先の教示点の情報を読み出す。なお、移動の開始時においては、軌道制御部12は、移動元の教示点の情報と移動先の教示点の情報との両方を読み出してもよい。
(ステップS102)軌道制御部12は、ステップS101で読み出した教示点、すなわち、軌道における終点側の教示点において内回りを行うかどうか判断する。そして、内回りを行う場合には、ステップS103に進み、そうでない場合には、ステップS105に進む。
(ステップS103)算出部23は、ステップS101で読み出された教示点について、内回り開始位置を算出する。具体的には、算出部23は、形状情報記憶部22から形状情報を読み出し、形状情報の示す位置算出用形状の基準点及び基準方向が、ステップS101で読み出された教示点の位置及びその教示点におけるマニピュレータ3の先端の姿勢となるように位置算出用形状を設置する。そして、算出部23は、ステップS101で読み出された教示点、及びそれよりも1個前の教示点を結ぶ線分と、その位置算出用形状との交点である内回り開始位置を算出する。
(ステップS104)軌道制御部12は、ステップS103で算出された内回り開始位置を用いて、内回りを開始する時刻を算出する。
(ステップS105)軌道制御部12は、ステップS101で読み出した教示点と、その教示点よりも1個前の教示点との間の各位置を、補間によって生成する。なお、その位置が内回り開始位置を超えた場合には、速度の重ね合わせを行うことによって、内回り軌道を通るように各位置を生成する。この位置の生成は、例えば、あらかじめ決められた時間間隔(例えば、5ms等)ごとに行われてもよい。
(ステップS106)軌道制御部12は、次の教示点の情報を読み出すかどうか判断する。そして、読み出す場合には、ステップS101に戻り、そうでない場合には、ステップS105に戻る。なお、軌道制御部12は、例えば、内回りを行う場合であって、算出する位置が内回り開始位置を超えた場合には、次の軌道の情報が必要になるため、次の教示点の情報を読み出すと判断してもよい。また、軌道制御部12は、例えば、内回りを行わない場合に、位置の算出が終点側の教示点まで終了した場合に、次の教示点の情報を読み出すと判断してもよい。なお、ステップS101に戻ると判断するまでは、軌道制御部12は、ステップS105の処理を繰り返すことによって、教示点間の補間や、内回り軌道に応じた位置の算出を繰り返すことになる。
なお、図9のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。また、図9のフローチャートにおいて、ステップS103の内回り開始位置の算出を少なくとも行うのであれば、マニピュレータ3の先端が内回り軌道を通るように制御する方法は問わない。例えば、教示情報で示される内回りを行う各教示点について、あらかじめ内回り開始位置をバッチ処理で算出し、マニピュレータ3を制御する際に、その内回り開始位置を用いて制御を行ってもよい。
次に、本実施の形態による制御装置1の動作について、具体例を用いて説明する。この具体例において、教示情報記憶部21に、次の教示情報が記憶されているものとする。
Position(1)、Pose(1)、Flag(1)
Position(2)、Pose(2)、Flag(2)
Position(3)、Pose(3)、Flag(3)
:
:
Position(10)、Pose(10)、Flag(10)
Position(11)、Pose(11)、Flag(11)
Position(12)、Pose(12)、Flag(12)
:
:
この教示情報において、Position(N)は、マニピュレータ3の各軸の位置を示す情報である。ここで、Nは1以上の整数とする。なお、そのPosition(N)に、マニピュレータ3の先端であるハンド3aの位置も含まれているものとする。また、Pose(N)は、マニピュレータ3の先端であるハンド3aの角度を示す情報である。また、Flag(N)は、N番目の教示点において内回りを行うかどうかを示すフラグである。Flag(N)が「1」である場合には内回りを行い、Flag(N)が「0」である場合には内回りを行わないことになる。すなわち、Flag(N)が「0」である場合には、それに対応するPosition(N)の示す位置をマニピュレータ3が通過することになる。また、Position(10)は、図7Bにおける他のスロットの位置RA1に対応し、Position(11)は、図7Bにおける設置スタート位置RTに対応し、Position(12)は、図7Bにおけるトップ位置ETに対応するものとする。また、Flag(10)=Flag(12)=0であり、Flag(11)=1であるとする。
また、この具体例において、形状情報記憶部22に、図6の位置算出用形状55を示す形状情報「x1,x2,y1,y2,z1,z2」が記憶されているものとする。なお、その位置算出用形状55においては、基準方向は、ローカル座標系の各軸の方向、すなわち、(x、y、z)=(1,0,0)、(0,1,0)、(0,0,1)に設定されているものとする。
軌道制御部12は、Position(1)、Pose(1)、Flag(1)から順次、教示点の情報を読み出して、適宜、内回り開始位置等を算出し、軌道を算出する(ステップS101〜S106)。そのようにして、Position(11)、Pose(11)、Flag(11)が読み出されたとする(ステップS101)。軌道制御部12は、新たな読み出しに応じて、Position(10)からPosition(11)までの速度を算出する。その速度は、例えば、図8で示されるものである。また、軌道制御部12は、Flag(11)が「1」であるかどうか判断する(ステップS102)。この場合には、Flag(11)=1であるため、軌道制御部12は、内回りを行うと判断し、算出装置11に、内回りを行う教示点を識別する情報であるN=11と、内回り開始位置の算出を行う指示とを渡す。すると、算出部23は、教示情報記憶部21で記憶されている教示情報から、N=11であるPosition(11)とPose(11)とを読み出し、また、形状情報記憶部22から形状情報「x1,x2,y1,y2,z1,z2」を読み出す。そして、算出部23は、読み出したPosition(11)で示される位置が、位置算出用形状55のローカル座標系の原点(基準点)となり、Pose(11)で示されるハンド3aの姿勢に応じたローカル座標系の各軸の方向が、位置算出用形状55のローカル座標系の方向と一致するように位置算出用形状55をグローバル座標系に配置する。また、算出部23は、Position(10)を読み出し、図7Bで示されるように、Position(10)で示されるハンド3aの位置(RA1)と、Position(11)で示されるハンド3aの位置(RT)とを結ぶ線分と、上述のようにして配置した位置算出用形状55との交点である内回り開始位置SPの座標を算出し、軌道制御部12に渡す(ステップS103)。なお、その算出された内回り開始位置SPの座標は、グローバル座標系における座標である。
軌道制御部12は、算出装置11から内回り開始位置SPを受け取ると、Position(11)で示されるハンド3aの位置から、内回り開始位置SPまでの距離である内回り開始距離を算出する。そして、軌道制御部12は、あらかじめ算出していたPosition(10)からPosition(11)までの速度変化を用いて、Position(11)までの距離が、その算出した内回り開始距離と等しくなる時刻である内回り開始時刻を算出する(ステップS104)。その後、軌道制御部12は、あらかじめ決められた補間間隔に応じて、Position(10)からPosition(11)に向かう各位置を算出し、その各位置にマニピュレータ3が移動するように、サーボコントローラ2に指示を行う(ステップS105,S106)。なお、ステップS104で算出した内回り開始時刻に対応する位置まで算出すると、軌道制御部12は、次の教示点を読み出すと判断し、トップ位置ETに対応するPosition(12)、Pose(12)、Flag(12)を読み出す(ステップS101)。そして、軌道制御部12は、Position(11)からPosition(12)までの速度を算出する。なお、この場合には、Flag(12)=0であり、内回りを行わないため、軌道制御部12は、内回り開始時刻から速度の重ね合わせを行い、Position(12)までの軌道の各位置の算出を行う(ステップS105,S106)。このようにして、教示情報に応じて順次、マニピュレータ3の位置が算出され、マニピュレータ3の制御が行われることになる。また、内回りを行う場合には、図7A,図7Bで示されるように、位置算出用形状55を用いた内回り開始位置SPの算出と、その算出された内回り開始位置SPからの速度の重ね合わせとが行われ、マニピュレータ3の先端であるハンド3aが、内回り軌道を移動するように制御される。
以上のように、本実施の形態による制御装置1によれば、形状情報を適切に設定することにより、例えば、スロットに搬送対象を設置したり、スロットから搬送対象を取得したりする際に、搬送対象やハンドとスロットとが干渉することを防止することができると共に、内回りを不要に制限することも回避でき、移動時間の長期化を防止することができる。すなわち、制御装置1は、多様な方向からのアプローチに対応する適切な内回り開始位置の算出を行うことができる。また、マニピュレータ3の先端の姿勢と基準方向とを合わせた位置算出用形状を用いて内回り開始位置を算出することによって、そのマニピュレータ3の先端の姿勢も考慮した適切な内回り開始位置の算出が可能となる。すなわち、マニピュレータ3の先端の姿勢を考慮しない位置算出用形状を用いる場合には、その向きに関係なく適切な干渉回避を実現できるようにするため、位置算出用形状を、例えば、水平方向の底辺が正方形である角柱や、水平方向の底辺が円である円柱等としなければならないこともあり、その結果として、ある方向の内回りが小さくなることもありうる。一方、マニピュレータ3の先端の姿勢に応じて配置された位置算出用形状を用いることによって、内回りを不要に制限する必要がなくなり、適切な内回りの制御を行うことができるようになりうる。
なお、本実施の形態では、位置算出用形状が、鉛直方向及び水平方向の長さが異なる直方体である場合について主に説明したが、そうでなくてもよい。位置算出用形状は、例えば、鉛直方向である第1の方向の長さと、水平方向である第2の方向の長さとを独立して設定可能な3次元形状であってもよい。なお、その位置算出用形状は、第1及び第2の方向の長さを独立して設定可能なものであれば、3以上の方向の長さを独立して設定可能なものであってもよい。2以上の方向の長さを独立して設定可能な位置算出用形状としては、具体的には、円柱や多角柱、楕円柱、円錐、角錐、楕円体等がある。位置算出用形状が円柱や円錐である場合には、高さと、底面の直径とを独立して設定可能である。また、位置算出用形状が多角柱や角錐である場合には、高さと、底面の形状とを独立して設定可能である。例えば、位置算出用形状の円柱や多角柱、楕円中、円錐、角錐の底面が水平方向であるとすると、その位置算出用形状は、鉛直方向と水平方向との2方向の長さを独立して設定可能であることになる。また、位置算出用形状が楕円体である場合には、x2/a2+y2/b2+z2/c2=1の方程式で示される形状であってもよい。その方程式において、a,b,cは、それぞれが独立に設定可能な係数であってもよく、または、a=bであり、a,cが独立して設定可能な係数であってもよい。a=bである場合には、鉛直方向と、水平方向との2方向の長さを独立して設定可能なことになる。ただし、xy平面が水平方向であり、z軸が鉛直方向であるとしている。
また、形状情報記憶部22で記憶される形状情報が、位置算出用形状の形状を示す方法は問わない。例えば、前述のように、頂点の位置や面の位置によって位置算出用形状を示してもよく、または、方程式によって位置算出用形状を示してもよい。
また、本実施の形態では、1個の位置算出用形状のみを用いる場合について説明したが、そうでなくてもよい。算出部23は、複数の位置算出用形状を用いて内回り開始位置を算出してもよい。その場合には、教示情報において、内回りを行う教示点に、内回り開始位置の算出で用いる形状情報を識別する形状情報識別子が対応付けられていてもよい。そして、算出部23は、ある教示点について内回り開始位置を算出する場合に、その教示点に対応する形状情報識別子で識別される形状情報を読み出し、その読み出した形状情報の示す位置算出用形状を用いて内回り開始位置の算出を行ってもよい。具体的には、教示点である設置スタート位置RTを基準点とする位置算出用形状を示す形状情報と、教示点である取得スタート位置RBを基準点とする位置算出用形状を示す形状情報とが異なる場合には、それらの教示点に応じた形状情報を用いて内回り開始位置の算出が行われてもよい。また、カセットごとにスロット間の高さが異なる場合には、カセットごとに、そのスロット間の高さに応じた形状情報を用いて内回り開始位置の算出が行われてもよい。
また、本実施の形態では、位置算出用形状に基準方向も設定されており、その基準方向を用いて内回り開始位置を算出する場合について主に説明したが、そうでなくてもよい。位置算出用形状に基準方向が設定されておらず、その基準方向を用いないで内回り開始位置が算出されてもよい。その場合には、例えば、マニピュレータ3の先端の姿勢に関わらず、同じ形状となる位置算出用形状、例えば、水平方向が底面である円柱等であってもよく、または、そうでなくてもよい。
また、本実施の形態では、制御装置1が算出装置11を含んでいる場合について説明したが、そうでなくてもよい。算出装置11と、マニピュレータ3を制御する制御装置とは、異なる装置であってもよい。その場合には、例えば、算出装置11は、教示情報の示す教示点のうち、内回りを行う各教示点に対応する内回り開始位置を算出し、その内回り開始位置を教示情報に追加したり、マニピュレータ3を制御する制御装置に渡したりしてもよい。したがって、算出装置11と、マニピュレータ3を制御する制御装置とが異なる装置である場合には、算出装置11は、算出した内回り開始位置を蓄積したり、制御装置に渡したりする図示しない出力部を備えていてもよい。また、算出装置11と、マニピュレータ3を制御する制御装置とが異なる装置である場合に、算出装置11の有する教示情報記憶部21は、制御装置で記憶されている教示情報が一時的に記憶される記憶部であってもよく、あるいは、そうでなくてもよい。
また、本実施の形態では、マニピュレータ3の先端の姿勢を基準方向とする位置算出用形状を配置するため、マニピュレータ3の先端の姿勢に応じたローカル座標系の各軸と、位置算出用形状のローカル座標系の各軸とを一致させる場合について主に説明したが、そうでなくてもよい。例えば、教示情報において示されるマニピュレータ3の先端の姿勢が方位角のみである場合には、マニピュレータ3の先端の姿勢に応じた向きと、位置算出用形状に設定されている基準方向である一の向き(例えば、x軸)とが一致するように位置算出用形状を配置してもよい。その場合には、位置算出用形状を配置する際に、基準方向を中心とする回転に関する自由度が存在するため、位置算出用形状において、あらかじめ水平方向に設定する面(例えば、xy平面等)が決められていてもよい。
また、本実施の形態では、産業用ロボットが搬送ロボットであり、マニピュレータ3の先端がハンド3aである場合について主に説明したが、そうでなくてもよいことは言うまでもない。マニピュレータ3は、搬送ロボット以外の塗装ロボットや溶接ロボット等のマニピュレータであってもよい。その場合であっても、例えば、スロットと同様の形状をした凹部に手先効果器を挿入する動作を行う場合などにおいて、本実施の形態と同様に内回り開始位置を算出することによって、干渉を防止しながら、移動時間を短縮することができる効果が得られる。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、あるいは、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いるしきい値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していない場合であっても、ユーザが適宜、それらの情報を変更できるようにしてもよく、あるいは、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、そのプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。