以下、本発明によるマニピュレータの制御装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。
(実施の形態1)
本発明の実施の形態1によるマニピュレータの制御装置について、図面を参照しながら説明する。本実施の形態によるマニピュレータの制御装置は、干渉の発生を防止するために教示情報を修正するものである。
図1は、本実施の形態による産業用ロボットの構成を示すブロック図である。本実施の形態による産業用ロボットは、制御装置1と、サーボコントローラ2と、マニピュレータ3とを備える。マニピュレータ3は、直列に接続された複数のアーム31,32と、その複数のアーム31,32の先端に設けられた第1及び第2のハンド部33,34とを備えるダブルハンドの水平多関節マニピュレータである。なお、複数のアーム31,32と、第1及び第2のハンド部33,34とは、モータによって駆動される関節によって連結されている。そのマニピュレータ3において、各モータとアームやハンド部とは減速器を介して接続されている。また、第1及び第2のハンド部33,34は、アーム32の一端に、それぞれ独立して回動可能なように設けられているものとする。サーボコントローラ2は、制御装置1による制御に応じて、マニピュレータ3の各軸のモータを制御する。制御装置1は、ティーチングプレイバック方式により、後述する教示情報に応じてマニピュレータ3が動作するようにサーボコントローラ2を制御する。本実施の形態による産業用ロボットは、例えば、搬送ロボットであり、第1及び第2のハンド部33,34が保持するウェハやガラス基板等の搬送対象を収容装置等に搬入したり、収容装置等から搬出したりしてもよい。その収容装置は、搬送対象が少なくとも搬入されたり、搬出されたりする装置であり、例えば、搬送対象が収容されるストッカやカセット等であってもよく、または、搬送対象に対して何らかの処理やプロセスを実行する処理装置であってもよい。また、ハンド部による搬送対象の保持は、ハンド部に搬送対象が載置されることであってもよく、ハンド部が搬送対象を挟持することであってもよく、ハンド部が搬送対象を吸着することであってもよく、または、ハンド部による搬送対象のその他の保持であってもよい。なお、本実施の形態では、マニピュレータ3が2個のハンド部33,34を有する場合について説明するが、そうでなくてもよい。マニピュレータ3は、3個以上のハンド部を有してもよい。また、本実施の形態では、マニピュレータ3が2個のアーム31,32を有する場合について説明するが、そうでなくてもよい。マニピュレータ3の有するアームの個数や軸数は問わない。
図1で示されるように、本実施の形態による制御装置1は、教示情報を修正する教示情報修正装置11と、修正された教示情報を用いて、マニピュレータ3が教示位置を通過するように制御する軌道制御部12とを備える。また、教示情報修正装置11は、教示情報記憶部21と、記憶部22と、判断部23と、修正部24とを備える。
教示情報記憶部21では、教示情報が記憶される。教示情報は、マニピュレータ3の教示位置を示す情報である。その教示情報には、マニピュレータ3の有する第1及び第2のハンド部33,34の各教示位置が少なくとも含まれているものとする。すなわち、その教示情報によって、第1及び第2のハンド部33,34の移動経路が時系列に沿って示されることになる。なお、教示情報には、マニピュレータ3のアーム31,32の各関節のモータの位置も示されてもよく、または、そうでなくてもよい。後者の場合には、教示情報を用いたマニピュレータ3の制御が行われるよりも前に、またはその制御中に、第1及び第2のハンド部33,34の教示位置を用いて、各モータの位置が算出されることになる。
教示情報記憶部21に教示情報が記憶される過程は問わない。例えば、記録媒体を介して教示情報が教示情報記憶部21で記憶されるようになってもよく、通信回線等を介して送信された教示情報が教示情報記憶部21で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された教示情報が教示情報記憶部21で記憶されるようになってもよい。また、教示情報記憶部21では、例えば、マニピュレータ3の一連の動作に関するすべての教示位置を示す教示情報が記憶されてもよく、あるいは、その一連の動作に関する一部の教示位置を示す教示情報が記憶されてもよい。後者の場合としては、例えば、後述する判断と修正との処理がリアルタイム処理として実行される際に、一連の動作に関するすべての教示位置を示す教示情報のうち、一部の教示情報のみが順次、読み出されて教示情報記憶部21に記憶される場合がある。また、教示情報記憶部21での記憶は、RAM等における一時的な記憶でもよく、あるいは、長期的な記憶でもよい。教示情報記憶部21は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
記憶部22では、判断部23や修正部24が用いる退避線を示す情報が記憶される。その退避線は、干渉を防止するために設けられるものである。すなわち、退避線から安全側にハンド部の教示位置がある場合には、そのハンド部と収容装置等との干渉の可能性が低く、退避線よりも非安全側にハンド部の教示位置がある場合には、そのハンド部と収容装置等との干渉の可能性が高くなるように退避線が設定されることが好適である。なお、ハンド部と収容装置等との干渉には、そのハンド部が保持している搬送対象と収容装置等との干渉が含まれてもよい。他の説明においても同様であるとする。退避線の安全側とは、通常、退避線よりもマニピュレータ3の基端に近い側であり、退避線の非安全側とは、通常、退避線よりも収容装置等に近い側であり、安全側の反対側である。ここで、マニピュレータ3の基端とは、連結された複数のアーム31,32において、第1及び第2のハンド部33,34と反対側の端のことである。また、ハンド部の教示位置が退避線上に存在する場合にも、そのハンド部と収容装置等との干渉の可能性が低くなるように退避線の位置が設定されていることが好適である。その退避線は、通常、直線であるが、そうでなくてもよい。なお、その退避線は、ある水平面において設定される線であるため、マニピュレータ3が鉛直方向に昇降可能である場合には、各高さの水平面において退避線が設定されることが好適である。その退避線は、各水平面において同じであってもよく、または、そうでなくてもよい。そのように、複数の水平面において退避線が設定される場合には、退避面が設定されてもよい。その退避面は、例えば、平面であってもよく、または、曲面であってもよい。そして、ある水平面においてマニピュレータ3が動作する場合には、その水平面と退避面との交線を、その水平面における退避線として用いてもよい。また、その退避線は、例えば、マニピュレータ3が搬送対象を搬出入する収容装置等の搬出入口に対してそれぞれ設定されることが好適である。また、退避線は、収容装置等の搬出入口以外の位置であっても、一方のハンド部が退避位置から伸長位置まで移動する位置に設定されてもよい。なお、退避位置や伸長位置については後述する。また、退避線を示す情報は、例えば、退避線の位置を示す関数であってもよく、または、退避線の位置を示す点の集合等であってもよい。後者の場合には、その点を接続した直線や曲線が退避線となる。また、退避線が退避面と水平面との交線によって示される場合には、記憶部22において、退避面を示す関数や点の集合等が記憶されていてもよい。
また、記憶部22において、退避線を示す情報以外の情報が記憶されてもよい。また、記憶部22に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部22で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部22で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が記憶部22で記憶されるようになってもよい。また、記憶部22での記憶は、RAM等における一時的な記憶でもよく、あるいは、長期的な記憶でもよい。また、記憶部22は、所定の記録媒体(例えば、半導体メモリや磁気ディスクなど)によって実現されうる。
判断部23は、第1のハンド部33が退避位置から伸長位置まで移動した場合に、第2のハンド部34の教示位置が退避線から安全側の位置であるかどうかを判断する。判断部23は、教示情報記憶部21で記憶されている教示情報を用いて、その判断を行う。すなわち、判断部23は、実際に動作した第1及び第2のハンド部33,34を用いて判断するのではなく、教示情報を用いて、その判断を行う。なお、第1のハンド部33の退避位置から伸長位置までの移動は、例えば、搬送対象を搬入または搬出するために第1のハンド部33が収容装置等に近づく方向の移動である。したがって、伸長位置は、通常、第1のハンド部33が搬送対象を収容装置等の内部に設置する位置、または、第1のハンド部33が搬送対象を収容装置等の内部から取得する位置である。また、退避位置は、その伸長位置に移動する手前の位置、すなわち、通常、収容装置等の搬出入口の外側の位置である。本実施の形態では、その第1のハンド部33が直線移動する場合において、第1のハンド部33が前進する前の位置が退避位置であり、前進した後の位置が伸長位置であるとする。図2は、第1のハンド部33が退避位置から伸長位置まで移動する場合のマニピュレータ3の動作の一例を示す図である。図2において、第1のハンド部33が退避位置であるマニピュレータ3を破線で示しており、第1のハンド部33が伸長位置であるマニピュレータ3を実線で示している。なお、図2では、第1のハンド部33が退避位置から伸長位置に移動する際に、第1及び第2のハンド部33,34が搬送対象を保持していない場合について示しているが、第1及び第2のハンド部33,34は、搬送対象を保持していてもよい。図3Aは、図2に対応する第1及び第2のハンド部33,34の教示位置33a,34aと、ハンドホルダ36の位置とを示す図である。なお、図3Aでは、ハンドホルダ36と、教示位置33a,34aとを結ぶ線によって、第1及び第2のハンド部33,34を代表させている。他の図においても同様である。また、ハンドホルダ36は、第1及び第2のハンド部33,34を支持するものであり、そのハンドホルダ36の中心が第1及び第2のハンド部33,34の回動中心となる。図3Aでも、第1のハンド部33が退避位置である場合が破線で示されており、第1のハンド部33が伸長位置である場合が実線で示されている。なお、教示位置33a,34aは、例えば、図3Cで示されるように、第1及び第2のハンド部33,34が適切に保持している搬送対象7の中心点に対応する位置であってもよいが、それに限定されるものではない。また、図2、図3Aでは、図中の退避線よりも下側、すなわち、マニピュレータ3の基端側が退避線に対する安全側となる。
判断部23は、通常、上述した判断を2つの判断処理によって行う。まず、判断部23は、教示情報記憶部21で記憶されている教示情報を用いて、第1のハンド部33が、退避位置から伸長位置まで移動したかどうかを判断する。例えば、判断部23は、ある時点における第1のハンド部33の教示位置が収容装置等の内部に存在する場合に、第1のハンド部33が退避位置から伸長位置まで移動したと判断してもよい。なお、その場合には、例えば、図2で示されるように、収容装置6等の内部に存在する教示位置が伸長位置となり、その教示位置よりも1個前の教示位置が退避位置となる。次に、判断部23は、第1のハンド部33の伸長位置である教示位置と同じ時点の第2のハンド部34の教示位置が、退避線から安全側の位置であるかどうか判断する。その退避線は、記憶部22で記憶されている情報で示される退避線である。なお、本実施の形態では、「退避線から安全側の位置」は、退避線上を含むものとする。したがって、その第2のハンド部34の教示位置が退避線上に位置する場合にも、判断部23は、退避線から安全側の位置であると判断するものとする。例えば、図3Aで示されるように、第2のハンド部34の教示位置34aが退避線よりも非安全側に存在する場合には、判断部23は、第2のハンド部34の教示位置が退避線から安全側の位置でないと判断する。
修正部24は、第2のハンド部34の教示位置が退避線から安全側の位置でないと判断部23が判断した場合に、その第2のハンド部34の教示位置が、退避線から安全側の位置となるように教示情報を修正する。なお、修正部24は、その修正時に、伸長位置である第1のハンド部33の教示位置が変更されないように、第2のハンド部34の教示位置を修正するものとする。その第2のハンド部34は、前述のように、第1のハンド部33と同軸の回動中心を有している。したがって、第1のハンド部33の教示位置を変更しないで第2のハンド部34の教示位置を修正するためには、第2のハンド部34を回動させることしかできない。そのため、修正部24は、回動軸を中心に第2のハンド部34を回動させることによって、第2のハンド部34の教示位置が退避線から安全側の位置となるように教示情報を修正するものとする。なお、「退避線から安全側の位置」は、前述のように、退避線上を含んでいる。したがって、教示位置の修正を行う場合に、修正部24は、第2のハンド部34の修正後の教示位置が、退避線上となるように教示情報を修正してもよく、または、退避線よりも安全側の位置となるように教示情報を修正してもよい。なお、第2のハンド部34の教示位置が退避線よりも安全側の位置となるように教示情報が修正される場合には、修正後の教示位置が、あらかじめ設定されていた教示位置から遠くなり、想定外の干渉が発生する可能性もある。そのため、修正後の教示位置は、退避線上であることが好適である。本実施の形態では、修正部24が、修正後の第2のハンド部34の教示位置が退避線上となるように教示情報を修正する場合について説明する。また、第2のハンド部34の修正後の教示位置が退避線上である場合でも、修正先の教示位置が退避線上に2点存在することが一般的である。回動軸を中心に第2のハンド部34を回動させた場合に、退避線と、第2のハンド部34の教示位置34aとの交点は、通常、2点あるからである。そのため、修正部24は、第2のハンド部34の教示位置が退避線から安全側の位置でないと判断部23が判断した場合であり、第2のハンド部34の退避線上の修正先の教示位置が2個ある場合には、第2のハンド部34の修正後の教示位置が、2個の修正先の教示位置のうち、修正前の教示位置から近い方となるように教示情報を修正してもよい。そのようにすることで、修正後の教示位置が修正前の教示位置に近くなるように教示情報を修正することができ、その結果として、想定外の干渉の発生を低減させることができ、また、その修正後の教示位置からの第2のハンド部34の移動に関する問題の発生も低減させることができる。例えば、修正前の第2のハンド部34の位置が図3Bの破線で示される場合には、修正部24は、図中の矢印Bで示されるように、第2のハンド部34の教示位置34aが退避線上となるように教示情報を修正してもよい。
なお、ここでは第1のハンド部33が伸長位置に移動した際の、第2のハンド部34の教示位置について判断を行い、必要であれば第2のハンド部34の教示位置の修正を行う場合について説明したが、第2のハンド部34が伸長位置に移動した際の、第1のハンド部33の教示位置についても同様の判断を行い、必要であれば第1のハンド部33の教示位置の修正を行ってもよい。また、この判断と修正の処理は、教示情報記憶部21で記憶されている教示情報についてバッチ処理として行ってもよく、または、軌道制御部12が教示情報を順次、読み出してサーボコントローラ2の制御を行っている際に、リアルタイム処理として行ってもよい。本実施の形態では、前者の場合、すなわち、バッチ処理として判断と修正との処理を行う場合について主に説明する。なお、判断部23による判断と、修正部24による修正との具体的な処理については、後述する。
軌道制御部12は、教示情報修正装置11が修正した教示情報を用いて、サーボコントローラ2を制御する。すなわち、軌道制御部12は、第1及び第2のハンド部33,34の位置が、修正後の教示情報の示す教示位置となるようにサーボコントローラ2を制御する。なお、軌道制御部12は、教示情報によって示される教示位置の間を補間した軌道をマニピュレータ3の各軸が通過するように、サーボコントローラ2を制御してもよい。また、教示情報にマニピュレータ3の第1及び第2のハンド部33,34のみの教示位置が含まれている場合には、軌道制御部12は、その教示位置を用いて各軸の位置を算出してもよい。軌道制御部12による処理は、従来のロボットにおけるサーボコントローラの制御と同じであり、その詳細な説明を省略する。
なお、教示情報記憶部21と、記憶部22とは、同一の記録媒体によって実現されてもよく、あるいは、別々の記録媒体によって実現されてもよい。前者の場合には、教示情報を記憶している領域が教示情報記憶部21となり、退避線を示す情報を記憶している領域が記憶部22となる。
ここで、サーボコントローラ2について簡単に説明する。サーボコントローラ2は、制御装置1から、マニピュレータ3の各軸の位置の指令を受け取る。サーボコントローラ2は、その各軸の位置の指令に応じて、フィードバック制御により各軸のモータに対応するトルク指令値を生成する。マニピュレータ3の各モータは、このトルク指令値によって動作する。なお、このサーボコントローラ2によるフィードバック制御はすでに公知であり、その詳細な説明を省略する。
次に、判断部23による判断と、修正部24による修正との具体的な処理について、図4を用いて説明する。図4において、図中の下側の第1及び第2のハンド部33,34は、第1のハンド部33が退避位置である場合の位置である。また、図中の上側の第1及び第2のハンド部33,34は、第1のハンド部33が伸長位置である場合の位置である。また、修正後の第2のハンド部34の位置が破線で示されている。また、図4において、X軸は、第1のハンド部33が退避位置から伸長位置まで移動する際の移動方向と一致するように設定されている。すなわち、X軸は図中の矢印Aと同じ方向に設定されている。また、Y軸は、X軸に直交するように設定されている。また、記憶部22では、退避線を示す関数
X=a+bY
が記憶されているものとする。なお、a,bは、それぞれ実数である。また、第1のハンド部33が伸長位置である際の第2のハンド部34の教示位置をEaとし、その教示位置Eaの座標を(Xa,Ya)とする。この教示位置は、教示情報に含まれている。また、修正後の第2のハンド部34の教示位置をEa'とし、その教示位置Ea'の座標を(Xa',Ya')とする。また、第2のハンド部34の回動中心から教示位置までの長さをLaとする。また、第1のハンド部33が伸長位置である際の第1及び第2のハンド部33,34の回動中心の位置をEhとし、その教示位置Ehの座標を(Xh,Yh)とする。なお、(Xh,Yh)は、教示情報に含まれていてもよく、または、教示情報に含まれている第1及び第2のハンド部33,34の教示位置から算出されてもよい。また、Ehと退避線との距離をLhとする。また、退避位置における第1のハンド部33から第2のハンド部34までの角度をθraとし、伸長位置における第1のハンド部33から第2のハンド部34までの角度をθeaとする。なお、各角度は、反時計回りが正であり、時計回りが負であるとする。すなわち、図4の場合には、θra、θeaはともに正の値である。ここで、θraは、
−180°<θra≦180°
であるとする。
判断部23は、記憶部22から退避線の式を読み出し、それに第2のハンド部34の教示位置をEaの座標(Xa,Ya)を代入し、
Xa>a+bYa (1)
がみたされるかどうか判断する。そして、その(1)式がみたされる場合には、判断部23は、第2のハンド部34の教示位置が退避線より非安全側であると判断する。一方、
Xa≦a+bYa (2)
がみたされる場合には、判断部23は、第2のハンド部34の教示位置が退避線から安全側の位置に存在すると判断する。なお、判断部23は、上記(1)式がみたされない場合に、第2のハンド部34の教示位置が退避線から安全側の位置に存在すると判断してもよく、上記(2)式がみたされない場合に、第2のハンド部34の教示位置が退避線より非安全側であると判断してもよい。
修正部24は、第2のハンド部34の教示位置が退避線から安全側の位置に存在する場合には、教示情報の修正の処理を行わない。一方、第2のハンド部34の教示位置が退避線より非安全側であると判断された場合には、修正部24は、修正先の教示位置を決定する。まず、修正部24は、Ehの座標(Xh,Yh)と退避線の式X=a+bYとを用いてLhを計算し、そのLhとLaとの大小関係に応じて、次のように修正先の教示位置を決定する。
1.Lh>Laの場合
この場合には、第2のハンド部34の教示位置を退避線から安全側の位置に修正することはできない。したがって、エラーとする。
2.Lh=Laの場合
この場合には、Ehを中心とする半径Laの円は、退避線と1点で交わる。したがって、その交点が第2のハンド部34の修正後の教示位置Ea'となる。
3.Lh<Laの場合
この場合には、Ehを中心とする半径Laの円は、退避線と2点で交わる。その2点のうち、修正前の教示位置Eaを、θraの符号と同じ方向にEhを中心として回転させた場合に、修正前の教示位置Eaに近い方の点が第2のハンド部34の修正後の教示位置Ea'となる。なお、0°は、+0°である、すなわち正の符号であるとしてもよく、または、そうでなくてもよい。
ここで、退避線の式がX=a(すなわち、b=0)であり、Xa>a(すなわち、上記(1)式がみたされる)であり、Lh<Laである場合に、修正部24が教示位置Ea'の座標(Xa',Ya')を算出する方法について説明する。また、説明の便宜上、0°<θra≦180°であり、0°<θea≦90°であるとする。
上述した前提から、上記「3.L
h<L
aの場合」となり、E
hを中心とする半径L
aの円は、退避線と2点で交わる。その2点を、A
1(X
a1,Y
a1)、A
2(X
a2,Y
a2)とする。また、線分E
aE
hと線分A
1E
hとのなす角度をθ
1とし、線分E
aE
hと線分A
2E
hとのなす角度をθ
2とする。また、−180°<θ
1≦180°、−180°<θ
2≦180°とすると、θ
1,θ
2は次のようになる。
なお、A1、A2は、Ehを中心とする半径Laの円と退避線との交点であるため、X=a、及び(X−Xh)2+(Y−Yh)2=La 2を解くことによって求められる。また、0°<θea≦90°であるため、Ya1≦2Yh−Yaの場合には、θ1>0となり、そうでない場合には、θ1<0となる。また、同様にして、Ya2≦2Yh−Yaの場合には、θ2>0となり、そうでない場合には、θ2<0となる。なお、θ1,θ2が負である場合には、360°を加算して正の値にする。そして、修正部24は、θ1<θ2であれば、A1を修正後の教示位置Ea'とし、教示情報における修正前の教示位置Eaを、その修正後の教示位置Ea'に修正する。また、修正部24は、θ1>θ2であれば、A2を修正後の教示位置Ea'とし、教示情報における修正前の教示位置Eaを、その修正後の教示位置Ea'に修正する。なお、上記θ1,θ2の式が記憶部22で記憶されており、修正部24は、それを読み出して用いることによって、上述の計算等を行ってもよい。また、ここでは説明の便宜上、b=0、0°<θra≦180°、0°<θea≦90°の場合について説明したが、それ以外の場合についても、同様にして修正前の教示位置Eaに近い修正後の教示位置Ea'を算出することができる。
次に、制御装置1の動作について図5のフローチャートを用いて説明する。
(ステップS101)判断部23は、カウンタiを1に設定する。
(ステップS102)判断部23は、教示情報記憶部21で記憶されている教示情報を参照し、第1のハンド部33または第2のハンド部34のi番目の教示位置が伸長位置であるかどうか判断する。そして、伸長位置である場合には、ステップS103に進み、そうでない場合には、ステップS105に進む。なお、第1のハンド部33のi番目の教示位置と、第2のハンド部34のi番目の教示位置とは、同時点における教示位置であるとする。
(ステップS103)判断部23は、教示情報記憶部21で記憶されている教示情報を参照し、伸長位置でない第1のハンド部33または第2のハンド部34のi番目の教示位置が退避線から安全側の位置であるかどうか判断する。そして、安全側である場合には、ステップS105に進み、そうでない場合には、ステップS104に進む。
(ステップS104)修正部24は、伸長位置でない第1のハンド部33または第2のハンド部34のi番目の教示位置が、退避線から安全側の位置となるように教示情報を修正する。
(ステップS105)判断部23は、カウンタiを1だけインクリメントする。
(ステップS106)判断部23は、教示情報にi番目の教示位置が存在するかどうか判断する。そして、i番目の教示位置が存在する場合には、ステップS102に戻り、そうでない場合には、ステップS107に進む。
(ステップS107)軌道制御部12は、修正後の教示情報を用いて、マニピュレータ3の各モータの制御を行うサーボコントローラ2を制御する。具体的には、軌道制御部12は、補間周期ごとに第1及び第2のハンド部33,34を回動させる各軸の位置や、複数のアーム31,32の先端の位置(例えば、ハンドホルダ36の位置等)を算出する。また、軌道制御部12は、その算出した位置に対して逆キネマティクス処理を行うことによって、複数のアーム31,32の各軸の位置を算出する。そして、軌道制御部12は、その補間周期ごとに各軸の位置を示す位置指令値をサーボコントローラ2に出力する。その結果、マニピュレータ3は、サーボコントローラ2による制御によって、教示情報が示す教示位置を通過するように順次、動作する。その動作において、修正後の教示情報に応じた動作が行われるため、第1のハンド部33や第2のハンド部34と収容装置等との干渉の発生を防止することができる。
なお、図5のフローチャートでは、バッチ処理として教示情報の修正を行った上で、軌道の制御を行う場合について説明したが、前述のように、軌道の制御時に、リアルタイム処理として教示情報の修正を行ってもよいことは言うまでもない。その場合には、軌道の制御に教示位置を用いる直前に、ステップS102〜S104の処理を行ってもよい。
次に、本実施の形態による制御装置1の動作について、具体例を用いて説明する。この具体例において、教示情報記憶部21に、次の教示情報が記憶されているものとする。
Position(1−1)、Position(2−1)
Position(1−2)、Position(2−2)
:
:
Position(1−7)、Position(2−7)
Position(1−8)、Position(2−8)
Position(1−9)、Position(2−9)
:
:
この教示情報において、Position(1−K)は、第1のハンド部33のK番目の教示位置を示す情報であり、Position(2−K)は、第2のハンド部34のK番目の教示位置を示す情報である。なお、Kは、1以上の整数であり、教示情報における各ステップに対応している。なお、教示情報には、ハンドホルダ36の教示位置Position(3−K)や、第1及び第2のハンド部33,34の姿勢を示す情報Pose(1−K)、Pose(2−K)等が含まれていてもよいが、ここでは説明の便宜のため省略している。また、Position(1−7)、Position(2−7)は、図3Aの破線で示される第1及び第2のハンド部33,34の教示位置に対応し、Position(1−8)、Position(2−8)は、図3Aの実線で示される第1及び第2のハンド部33,34の教示位置に対応するものとする。
判断部23は、Position(1−1)、Position(2−1)から順次、教示位置を読み出して、どちらかのPositionが伸長位置かどうか判断する(ステップS101,S102)。なお、伸長位置かどうかの判断に1個前のPositionを用いてもよく、あるいは、用いなくてもよい。前者の場合には、判断部23は、そのPositionをも読み出して用いてもよい。なお、K=1〜7のPosition(1−K)、Position(2−K)に伸長位置は含まれていなかったとする。そのため、K=7までは、教示位置が伸長位置かどうかの判断のみが繰り返し実行される(ステップS102,S105,S106)。
その後、判断部23は、Position(1−8)、Position(2−8)を読み出し、どちらかが伸長位置であるかどうか判断する(ステップS102)。この場合には、前述のように、Position(1−8)が伸長位置であるため、判断部23は、伸長位置でない方の教示位置Position(2−8)が安全側であるかどうか判断する(ステップS103)。この場合には、前述のように、Position(2−8)は非安全側に存在するため、判断部23は、Position(2−8)を修正する旨の指示を修正部24に渡す。修正部24は、その指示を受け取ると、前述のようにして、修正後の教示位置Position(2−8')を生成し、教示情報記憶部21で記憶されているPosition(2−8)に上書きで蓄積する(ステップS104)。その結果、教示情報記憶部21で記憶されている教示情報は,次のようになり、図3Bで示されるように、第2のハンド部34の教示位置が退避線上に移動される。
:
:
Position(1−7)、Position(2−7)
Position(1−8)、Position(2−8')
:
:
なお、このような処理が順次、繰り返されることによって、教示情報の修正が行われる(ステップS102〜S106)。そして、教示情報の修正が終了すると、軌道制御部12は、教示情報記憶部21から教示位置を順次、読み出し、補間周期ごとの各軸の位置を計算してサーボコントローラ2に出力する(ステップS107)。その結果、マニピュレータ3が修正後の教示情報に応じて動作することになる。
なお、この具体例では、修正部24が修正後の教示位置を上書きで蓄積する場合について説明したが、そうでなくてもよい。修正部24は、修正後の教示位置を上書きでなく蓄積してもよい。その場合には、教示情報記憶部21において、修正後の教示位置と、修正前の教示位置とが区別可能なようになっていることが好適である。軌道制御部12が、修正後の教示位置を読み出すことができるようにするためである。
以上のように、本実施の形態による制御装置1によれば、第1及び第2のハンド部33,34のうち、搬送を行うハンド部が伸長位置である際に、退避を行うハンド部が非安全側に存在する場合には、その非安全側に存在するハンド部の教示位置が安全側となるように修正することができる。そのため、その退避を行うハンド部の干渉の発生を防止することができる。また、その教示位置の修正を行う場合に、修正前の教示位置から近い退避線上の位置を修正後の教示位置とすることによって、教示位置の移動を最小限に抑えることができ、別の干渉が発生する可能性を低減させることができる。また、教示位置の移動を最小限に抑えることは、種々の要因を考慮して作成された教示情報をできる限り変更しないようにするという観点からも好適である。
なお、本実施の形態において、マニピュレータ3が3個以上のハンド部を有する場合には、判断部23は、搬送を行うハンド部が退避位置から伸長位置まで移動した際に、他の2以上の退避を行うハンド部の教示位置が退避線から安全側の位置であるかどうかを、教示情報を用いてそれぞれ判断する。そして、非安全側に存在する教示位置がある場合には、修正部24は、その教示位置が、退避線から安全側の位置となるように修正する。
また、本実施の形態では、「退避線から安全側の位置」が、退避線上を含む場合について説明したが、そうでなくてもよい。すなわち、退避線上は安全側でなくてもよい。例えば、教示位置を修正する際に、修正部24が、退避線よりも安全側の位置であって、退避線上ではない位置に教示位置を修正する場合には、「退避線から安全側の位置」が、退避線上を含んでいなくてもよい。
また、本実施の形態では、第1及び第2のハンド部33,34のうち、一方が伸長位置である際に、他方の教示位置が退避線より非安全側に位置する場合には、その教示位置の修正を行う場合について説明したが、そうでなくてもよい。退避線よりも非安全側に境界線をさらに設け、教示位置が境界線と退避線との間に位置する場合には、教示位置の修正を行わないようにしてもよい。そのような教示情報修正装置11について簡単に説明する。記憶部22において、境界線を示す情報も記憶されているものとする。境界線は、図6A,図6Bで示されるように、退避線よりも非安全側に設定される。境界線は、ハンド部の干渉が発生するかどうかの境界となる線である。したがって、通常、境界線よりも非安全側にハンド部が位置する場合には、干渉が発生することになる。すなわち、干渉が発生するかどうかの観点からは、教示位置が退避線から安全側の位置であると非常に安全であり、教示位置が境界線と退避線との間の位置であるとやや安全であり、教示位置が境界線の非安全側の位置であると危険であるということになる。なお、境界線は、退避線と独立して設定されてもよく、または、そうでなくてもよい。後者の場合には、例えば、退避線と境界線とは平行であり、退避線よりもあらかじめ決められた距離だけ非安全側の位置に境界線が設定されてもよい。また、境界線の安全側とは、境界線の退避線側であり、境界線の非安全側とは、その安全側の反対側である。境界線は、設定される位置が異なる以外は、退避線と同様のものであるとする。次に、判断部23と修正部24との処理について説明する。判断部23は、第1のハンド部33が退避位置から伸長位置まで移動した場合に、第2のハンド部34の教示位置が、境界線の安全側であるかどうかをも教示情報を用いて判断する。そして、修正部24は、第2のハンド部34の教示位置が境界線と退避線との間の位置であると判断部23が判断した場合には、修正を行わない。なお、ここでは第1のハンド部33が伸長位置に移動した場合に、第2のハンド部34の教示位置について判断を行い、必要であれば第2のハンド部34の教示位置の修正を行う場合について説明したが、第1及び第2のハンド部33,34が逆の場合にも同様である。また、ここで説明した以外の処理は、前述の通りである。すなわち、第1及び第2のハンド部33,34のうち、一方が伸長位置である際に、他方の教示位置が境界線より非安全側に位置すると判断部23が判断した場合には、修正部24は、その教示位置が退避線から安全側の位置となるように教示情報の修正を行うことになる。なお、教示位置が境界線より非安全側である場合には、その教示位置は、当然、退避線より非安全側に存在していることになる。ここで、境界線も用いて判断や修正を行う場合の具体的な処理について説明する。図6A,図6Bにおいて、図中の下方の第1及び第2のハンド部33,34が、図中の上方の第1及び第2のハンド部33,34まで、矢印Aで示されるように移動したとする。その移動によって第1のハンド部33が退避位置から伸長位置まで移動したとすると、判断部23は、第2のハンド部34の教示位置34aと、退避線及び境界線との位置関係を判断する。図6Aの場合には、教示位置34aは、退避線より非安全側であるが、境界線より安全側であるため、教示位置34aの修正は行われない。一方、図6Bの場合には、教示位置34aは、退避線より非安全側であり、境界線より非安全側であるため、教示位置34aは、破線の第2のハンド部34で示される退避線上の位置に修正される。このように境界線と、退避線とを用いた教示位置の修正を行う理由について簡単に説明する。前述のように、教示情報は種々の要因を考慮して作成されたものであるため、できるだけ変更しない方がよい。そのため、干渉がぎりぎり発生しない場合には、教示位置を修正しないことが好適である。一方、教示位置を修正する場合には、干渉がぎりぎり発生しない位置に修正するのではなく、少しの余裕を考慮した位置に修正することが好適である。したがって、上述の説明のように、教示位置が境界線の安全側である場合には、修正部24は、その教示位置を修正せず、教示位置が境界線の非安全側である場合には、修正部24は、その教示位置を退避線から安全側の位置に修正する。なお、伸長位置でないハンド部の教示位置が境界線上に存在する場合には、その教示位置が退避線から安全側の位置に修正されてもよく、あるいは、修正されなくてもよい。後者の場合には、ハンド部の教示位置が境界線上に存在する場合には、干渉が起きないように境界線が設定されていることが好適である。ここで、教示位置が境界線と退避線との間の位置であり、教示情報の修正を行わなかった場合には、その教示位置は、退避線よりも非安全側に存在することになる。したがって、例えば、教示位置が退避線の非安全側であると停止するロボットの場合には、境界線と退避線との間に位置する教示位置についてのみ、教示位置が退避線上となるように退避線を移動させてもよく、あるいは、その教示位置についてのみ、教示位置が退避線の非安全側であってもロボットを停止させないように制御してもよい。なお、退避線を移動させる場合には、例えば、移動前の退避線と移動後の退避線とが平行になるように移動させてもよい。
また、本実施の形態では、マニピュレータ3が有する第1及び第2のハンド部33,34の回動中心が同軸上にある場合について説明したが、そうでなくてもよい。図7で示されるように、第1及び第2のハンド部33,34の回動中心は、それぞれ異なる軸上にあってもよい。マニピュレータ3が3個以上のハンド部を有する場合にも同様である。なお、2以上のハンド部の回動中心が異なる軸上にあったとしても、それらの軸は通常、直列に接続された複数のアーム31,32の先端に存在する。また、2以上のハンド部の回動中心が異なる軸上にあり、いずれかのハンド部が退避位置から伸長位置まで移動した場合に、他のハンド部の教示位置が退避線の非安全側や境界線の非安全側であるときには、その教示位置が修正される。その教示位置の修正は、前述のように、伸長位置にあるハンド部が移動しないように行われることが好適である。なお、2以上のハンド部の回動中心が異なる軸上にある場合には、伸長位置にあるハンド部が移動しないように他のハンド部の教示位置を修正する際に、連結されたアーム31,32を移動させてもよく、あるいは、移動させなくてもよいが、教示情報をできるだけ変更したくないという考えからは、後者の方が好適である。
また、本実施の形態では、制御装置1が教示情報修正装置11を含んでいる場合について説明したが、そうでなくてもよい。教示情報修正装置11と、マニピュレータ3を制御する制御装置とは、異なる装置であってもよい。その場合には、例えば、教示情報修正装置11は、修正後の教示情報を教示情報記憶部21に蓄積してもよく、または、修正後の教示情報を、マニピュレータ3を制御する制御装置に渡してもよい。前者の場合には、教示情報記憶部21で記憶されている修正後の教示情報が、マニピュレータ3を制御する制御装置に渡されてもよい。このように、教示情報修正装置11と、マニピュレータ3を制御する制御装置とが異なる装置である場合には、教示情報修正装置11は、修正後の教示情報を、直接的にまたは間接的に制御装置に渡す図示しない出力部を備えていてもよい。また、教示情報修正装置11と、マニピュレータ3を制御する制御装置とが異なる装置である場合には、教示情報修正装置11の有する教示情報記憶部21は、制御装置で記憶されている教示情報が一時的に記憶される記憶部であってもよく、あるいは、そうでなくてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、あるいは、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いるしきい値や数式、アドレス、線、面等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いるしきい値やアドレス、各種の設定値、線、面等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、あるいは、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、そのプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。