(57)【特許請求の範囲】
【請求項１】
（ａ）複数の関節を有する多関節ロボットの予め定める移動対象部位を、複数の移動点を順次通過するように移動させるにあたって、移動点を移動対象部位がそれぞれ通過するときに各関節の角度位置で表される関節形態の、移動点毎の組合せを求めてロボット教示作業を支援する教示支援装置であって、
（ｂ）各移動点を特定するための移動点情報を入力する入力手段と、
（ｃ）ロボットの移動対象部位を移動点に配置可能な関節形態を解候補とし、移動点毎に、全ての解候補をそれぞれ演算する解候補演算手段と、
（ｄ）移動点毎にそれぞれ選択される解候補の組合せを評価する評価演算手段であって、
（ｄ１）通過順が最初の移動点から通過順が最後の移動点に向かう移動方向、および通過順が最後の移動点から通過順が最初の移動点に向かう移動方向のいずれか一方を評価方向とし、
（ｄ２）最上流の移動点における各解候補のうちの１つと、評価方向最上流の移動点の評価方向下流側に隣接する２つめの移動点における各解候補のうちの１つとのそれぞれの組合せについて、予め定める評価基準に従って評価値を求め、２つめの移動点における解候補毎に、評価値が最も高い組合せをそれぞれ抽出して、２つめの移動点における各解候補毎に、２つめの移動点における各解候補のうちの１つと、それに関連して抽出した最上流の移動点における１つの解候補との組合せをそれぞれ決定し、
（ｄ３）２つめの移動点の評価方向下流側に隣接する３つめの移動点から評価方向最下流の移動点まで、評価方向に順次、各移動点における各解候補毎に、注目する移動点における各解候補のうちの１つと、注目する移動点に対して評価方向上流側に隣接する移動点における各解候補のうちの１つとのそれぞれの組合せについて、前記評価基準に従って評価値を求め、それら２つの解候補の組合せの評価値と、評価値を求めた２つの解候補のうちで評価方向上流側の移動点における解候補について既に決定しているさらに評価方向上流側のそれぞれの移動点毎の各解候補に関する評価値の合計値とを合わせた累積評価値を求め、注目する移動点における解候補毎に、累積評価値が最も高い組合せを抽出して、注目する移動点における解候補毎に、注目する移動点における各解候補のうちの１つと、それに関連して抽出した評価方向上流側に隣接する移動点における１つの解候補との組合せを決定し、
（ｄ４）評価方向の最下流の移動点における各解候補のうち、累積評価値が最も高い解候補を抽出し、この解候補に関連して既に決定される移動点毎の各解候補の組合せを、移動点毎の関節形態の組合せとして求める評価演算手段と、
（ｅ）評価演算手段による演算結果を出力する出力手段とを含み、
前記入力手段は、多関節ロボットの進入が禁止される進入禁止領域に関する禁止領域情報を入力し、
前記評価基準は、評価方向に隣接する２つの移動点における各解候補の表わす関節形態を変数とする評価関数に基づいて決定される第１評価基準と、評価方向に隣接する２つの移動点間について移動対象部位を移動させる間にロボットの少なくとも一部が進入禁止領域に進入しないことを基準とする第２評価基準とを含み、
前記評価演算手段は、評価方向に隣接する２つの移動点のうちの評価方向下流側の移動点における解候補に対して、評価方向に隣接する２つの移動点のうちの評価方向上流側の移動点における各解候補毎に第１評価基準に従う第１評価値をそれぞれ求め、それらのうちで、第１評価値が最も高い組合せ順に、第２評価基準を満足するか否かを演算し、第２評価基準を満足し、かつ第１評価値が最も高い組合せを、評価値が最も高い組合せとして抽出することを特徴とするロボットの教示支援装置。
【請求項２】
（ａ）複数の関節を有する多関節ロボットの予め定める移動対象部位を、複数の移動点を順次通過させて環状の循環移動経路を循環移動させるにあたって、移動点を移動対象部位がそれぞれ通過するときに各関節の角度位置で表される関節形態の、移動点毎の組合せを求めてロボット教示作業を支援する教示支援装置であって、
（ｂ）各移動点を特定するための移動点情報を入力する入力手段と、
（ｃ）移動点のうちで、仮想的に循環移動を開始する最初の移動点と、最初の移動点の移動方向上流側となる最後の移動点とを選択する選択手段と、
（ｄ）ロボットの移動対象部位を移動点に配置可能な関節形態を解候補とし、移動点毎に、全ての解候補をそれぞれ演算する解候補演算手段と、
（ｅ）移動点毎にそれぞれ選択される解候補の組合せを評価する評価演算手段であって、
（ｅ１）通過順が最初の移動点から通過順が最後の移動点に向かう移動方向、および通過順が最後の移動点から通過順が最初の移動点に向かう移動方向のいずれか一方を評価方向とし、
（ｅ２）最上流の移動点における各解候補のうちの１つと、評価方向最上流の移動点の評価方向下流側に隣接する２つめの移動点における各解候補のうちの１つとのそれぞれの組合せについて、予め定める評価基準に従って評価値を求め、２つめの移動点における解候補毎に、評価値が最も高い組合せをそれぞれ抽出して、２つめの移動点における各解候補毎に、２つめの移動点における各解候補のうちの１つと、それに関連して抽出した最上流の移動点における１つの解候補との組合せをそれぞれ決定し、
（ｅ３）２つめの移動点の評価方向下流側に隣接する３つめの移動点から評価方向最下流の移動点まで、評価方向に順次、各移動点における各解候補毎に、注目する移動点における各解候補のうちの１つと、注目する移動点に対して評価方向上流側に隣接する移動点における各解候補のうちの１つとのそれぞれの組合せについて、前記評価基準に従って評価値を求め、それら２つの解候補の組合せの評価値と、評価値を求めた２つの解候補のうちで評価方向上流側の移動点における解候補について既に決定しているさらに評価方向上流側のそれぞれの移動点毎の各解候補に関する評価値の合計値とを合わせた累積評価値を求め、注目する移動点における解候補毎に、累積評価値が最も高い組合せを抽出して、注目する移動点における解候補毎に、注目する移動点における各解候補のうちの１つと、それに関連して抽出した評価方向上流側に隣接する移動点における１つの解候補との組合せを決定し、
（ｅ４）評価方向最下流の移動点における解候補ごとに、評価方向最下流の移動点における解候補のうちの１つと、その解候補に関連して決定される評価方向最上流の移動点における１つの解候補との組合せについて、予め定める評価基準に従って評価値を求め、それら２つの解候補の組合せの評価値と、評価値を求めた評価方向最下流の移動点の解候補の累積評価値とを合わせた循環累積評価値を求め、循環累積評価値が最も高い解候補の組合せを抽出し、この組合せの解候補に関連して決定される移動点毎の各解候補の組合せを、移動点毎の関節形態の組合せとして求める評価演算手段と、
（ｆ）評価演算手段による演算結果を出力する出力手段とを含むことを特徴とするロボットの教示支援装置。
【請求項３】
前記入力手段は、多関節ロボットの進入が禁止される進入禁止領域に関する禁止領域情報を入力し、
前記解候補演算手段は、ロボットの移動対象部位を移動点に配置可能な関節形態のうちで、ロボットの少なくとも一部が進入禁止領域に進入するような関節形態について、解候補から除外することを特徴とする請求項１または２記載のロボットの教示支援装置。
【請求項４】
前記入力手段は、多関節ロボットの進入が禁止される進入禁止領域に関する禁止領域情報を入力し、
前記評価基準は、評価方向に隣接する２つの移動点における各解候補の表わす関節形態を変数とする評価関数に基づいて決定される第１評価基準と、評価方向に隣接する２つの移動点間について移動対象部位を移動させる間にロボットの少なくとも一部が進入禁止領域に進入しないことを基準とする第２評価基準とを含み、
前記評価演算手段は、評価方向に隣接する２つの移動点のうちの評価方向下流側の移動点における解候補に対して、評価方向に隣接する２つの移動点のうちの評価方向上流側の移動点における各解候補毎に第１評価基準に従う第１評価値をそれぞれ求め、それらのうちで、第１評価値が最も高い組合せ順に、第２評価基準を満足するか否かを演算し、第２評価基準を満足し、かつ第１評価値が最も高い組合せを、評価値が最も高い組合せとして抽出することを特徴とする請求項２に記載のロボットの教示支援装置。
【請求項５】
前記評価値は、評価方向に隣接する２つの移動点における各関節の角度位置の偏差を変数とする評価関数に基づいて決定されることを特徴とする請求項２に記載のロボットの教示支援装置。
【請求項６】
前記解候補演算手段によって演算される、ロボットの移動対象部位を移動点に配置可能な全ての関節形態を記憶する記憶手段をさらに含み、
前記評価演算手段は、記憶手段に記憶される関節形態を解候補としてそれぞれ読出して、移動点毎の関節形態の組合せを求めることを特徴とする請求項１、３または４のいずれか１つに記載のロボットの教示支援装置。
【請求項７】
請求項１〜６のいずれか１つに記載のロボットの教示支援装置の動作をコンピュータに行わせるためのコンピュータ読取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを移動させるに必要な情報をロボットに教示する教示作業を支援する教示支援装置に関する。
【背景技術】
【０００２】
特許文献１に開示される技術では、冗長自由度ロボットの手先を現在位置および現在姿勢に維持したうえで、冗長自由度ロボットの冗長関節が取り得る可動領域を表示する。作業者は、ロボット装置の表示結果に基づいて、ロボットの教示作業を行うことができる。この場合、冗長関節の可動領域が取り得る可動領域が表示されるだけでは、どの冗長関節の角度位置が最適かどうかについて、作業者が判断しなければならず十分な教示支援を行うことができない。
【０００３】
特許文献２に開示される技術では、作業者が教示した各関節の角度位置を初期値として、冗長関節の角度位置に関する微調整を繰返す勾配法を用いて、ロボットの移動タイムを短縮化する各関節の角度位置を探索する。具体的には、ユーザが教示した各関節の角度位置を所期値として、冗長関節の角度位置を＋δ微調整した条件と、−δ微調整した条件と、微調整しない条件とで、ロボットの移動タイムを計算および比較し、より短時間の条件に対応した冗長関節の角度位置を随時採用する。
【０００４】
特許文献３に開示される技術では、特許文献２と同様に勾配法を用いて、ロボットの各関節の角度位置のリミット位置と、ロボットから障害物までの距離とをパラメータとする余裕度が最大となるときの冗長関節の角度位置を最終的な教示データとする。
【０００５】
また勾配法以外に全域探索法を用いて、ロボットに設定される評価値が最も高くなるようにすることも考えられる。全域探索法を用いた場合、ロボットの各関節の角度位置が取り得る組合せを全て求め、次に全組合せについてそれぞれ評価値を求めて、評価値が最も高くなる各関節の角度位置の組合せを採用する。
【０００６】
【特許文献１】特開平５−３３７８６１号公報
【特許文献２】特開平９−１２８０２４号公報
【特許文献３】特開平９−２０１７８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図２８は、１つの冗長関節を有するロボットにおいて、ロボットの手先位置を２つの移動点間を移動させるにあたって、開始点でのロボットの各関節の角度位置を初期値に固定し、終了点でのロボットの各関節の角度位置を変化させた場合のロボット移動時間の変化を示すグラフである。図２８には、各関節の角度位置の取り得る離散形態符号の正負の組合せによっては、冗長関節の角度位置が１つの値であっても、ロボットは複数の離散形態を取り得え、離散形態を異ならせた２つのグラフを図２８（１）、図２８（２）にそれぞれ示す。また縦軸にロボットの移動時間を示し、横軸に冗長関節の角度位置を示す。図２８に示すように、冗長値の変化に対するロボット移動時間の変化特性は、非線形性となりやすい。特に、各関節の角度位置の可動範囲が制限されている場合には、さらに非線形性が強くなる。
【０００８】
特許文献２および特許文献３に示すように、勾配法を用いてロボットの各関節の角度位置を評価する場合、局所解に陥るおそれがある。勾配法では、初期値ｒ１から冗長関節の角度位置を変化させて、ロボット移動時間が極小値となる局所解ｒ２に到達した時点で探索を終了する。ロボット移動時間の変化特性が非線形となる場合には、初期値ｒ１におけるロボット移動時間に対して、探索後の局所解ｒ２におけるロボット移動時間は、あまり短縮されない。また局所解ｒ２は、ロボット移動時間が最短となる最適解ｒ３とは異なることが多く、最適解ｒ３を探索できない可能性が高い。
【０００９】
たとえば初期値ｒ１の各関節の角度位置におけるロボット移動時間を図２８（１）の丸点で示す。また初期値ｒ１の各関節の角度位置から勾配法を用いた場合における局所解ｒ２の各関節の角度位置におけるロボット移動時間を図２８（１）の三角点で示す。また離散形態の異なる場合も含めて、最も移動時間が短くなる最適解ｒ３の各関節の角度位置におけるロボット移動時間を図２８（２）の四角点で示す。この場合、初期値ｒ１では、ロボット移動時間は、約１．５である。また局所解ｒ２に到達した状態では、ロボット移動時間は、約１．２秒である。これに対して最適解ｒ３に到達した時点では、ロボット移動時間は、約０．８秒である。上述したように勾配法では、最適解ｒ３を探索できない可能性が高く、ロボット移動時間を充分に短縮することができないことがあり、十分な教示支援を行うことができないという問題がある。
【００１０】
また全ての種類の離散形態における各関節における移動時間を全て求めるように総当り的に、冗長関節の角度位置と離散形態とを変化させる場合には、最適解ｒ３を求めることができるが、最適解ｒ３を求めるのに費やす演算時間が膨大となる。特に、手先を複数個の移動点について順に移動させる場合、移動点ごとに複数の冗長関節の角度位置が存在するので、指数関数的に演算量が増大ししまう。
【００１１】
たとえばＮ個の移動点を順に手先が移動し、移動点ごとにｍ個の各関節の角度位置の組合せが存在する場合、第１移動点から第Ｎ移動点まで移動するのに取り得ることが可能な移動点毎の各関節の角度位置の組合せは、ｍＮ通りの組合せが存在する。したがって、最も評価の高い移動点毎の各関節の角度位置の組合せを求めることが困難となる。特に、移動点の数を増やしたり、冗長関節の角度位置の刻み幅を細かくしたりすると、計算機の演算量が膨大化してしまい、結果として最適解ｒ３を得ることができないという問題がある。また図２８には、ロボット移動時間をロボットの形態を評価する評価値としたが、ロボット移動時間以外の他の評価基準でロボットの形態を評価する場合も同様の問題が発生する。
【００１２】
したがって本発明の目的は、最適な移動点毎の各関節の角度位置の組合せを短時間で演算可能であって、作業者によるロボットの教示作業を支援する教示支援装置を提供することである。
【課題を解決するための手段】
【００１３】
本発明は、（ａ）複数の関節を有する多関節ロボットの予め定める移動対象部位を、複数の移動点を順次通過するように移動させるにあたって、移動点を移動対象部位がそれぞれ通過するときに各関節の角度位置で表される関節形態の、移動点毎の組合せを求めてロボット教示作業を支援する教示支援装置であって、
（ｂ）各移動点を特定するための移動点情報を入力する入力手段と、
（ｃ）ロボットの移動対象部位を移動点に配置可能な関節形態を解候補とし、移動点毎に、全ての解候補をそれぞれ演算する解候補演算手段と、
（ｄ）移動点毎にそれぞれ選択される解候補の組合せを評価する評価演算手段であって、
（ｄ１）通過順が最初の移動点から通過順が最後の移動点に向かう移動方向、および通過順が最後の移動点から通過順が最初の移動点に向かう移動方向のいずれか一方を評価方向とし、
（ｄ２）最上流の移動点における各解候補のうちの１つと、評価方向最上流の移動点の評価方向下流側に隣接する２つめの移動点における各解候補のうちの１つとのそれぞれの組合せについて、予め定める評価基準に従って評価値を求め、２つめの移動点における解候補毎に、評価値が最も高い組合せをそれぞれ抽出して、２つめの移動点における各解候補毎に、２つめの移動点における各解候補のうちの１つと、それに関連して抽出した最上流の移動点における１つの解候補との組合せをそれぞれ決定し、
（ｄ３）２つめの移動点の評価方向下流側に隣接する３つめの移動点から評価方向最下流の移動点まで、評価方向に順次、各移動点における各解候補毎に、注目する移動点における各解候補のうちの１つと、注目する移動点に対して評価方向上流側に隣接する移動点における各解候補のうちの１つとのそれぞれの組合せについて、前記評価基準に従って評価値を求め、それら２つの解候補の組合せの評価値と、評価値を求めた２つの解候補のうちで評価方向上流側の移動点における解候補について既に決定しているさらに評価方向上流側のそれぞれの移動点毎の各解候補に関する評価値の合計値とを合わせた累積評価値を求め、注目する移動点における解候補毎に、累積評価値が最も高い組合せを抽出して、注目する移動点における解候補毎に、注目する移動点における各解候補のうちの１つと、それに関連して抽出した評価方向上流側に隣接する移動点における１つの解候補との組合せを決定し、
（ｄ４）評価方向の最下流の移動点における各解候補のうち、累積評価値が最も高い解候補を抽出し、この解候補に関連して既に決定される移動点毎の各解候補の組合せを、移動点毎の関節形態の組合せとして求める評価演算手段と、
（ｅ）評価演算手段による演算結果を出力する出力手段とを含み、
前記入力手段は、多関節ロボットの進入が禁止される進入禁止領域に関する禁止領域情報を入力し、
前記評価基準は、評価方向に隣接する２つの移動点における各解候補の表わす関節形態を変数とする評価関数に基づいて決定される第１評価基準と、評価方向に隣接する２つの移動点間について移動対象部位を移動させる間にロボットの少なくとも一部が進入禁止領域に進入しないことを基準とする第２評価基準とを含み、
前記評価演算手段は、評価方向に隣接する２つの移動点のうちの評価方向下流側の移動点における解候補に対して、評価方向に隣接する２つの移動点のうちの評価方向上流側の移動点における各解候補毎に第１評価基準に従う第１評価値をそれぞれ求め、それらのうちで、第１評価値が最も高い組合せ順に、第２評価基準を満足するか否かを演算し、第２評価基準を満足し、かつ第１評価値が最も高い組合せを、評価値が最も高い組合せとして抽出することを特徴とするロボットの教示支援装置である。
【００１４】
本発明に従えば、解候補演算手段は、入力手段から入力される移動点情報に基づいて、移動点毎に、移動対象部位を移動点に配置可能な全ての解候補を演算する。評価演算手段は、隣接する２つの移動点において、一方の移動点における各解候補のうちの１つと、他方の移動点における各解候補のうちの１つとで取り得る全ての組合せについて、評価値をそれぞれ求める。
【００１５】
評価演算手段は、評価値を求めた全ての組合せのうちで、評価方向に２つめの移動点における解候補毎に、評価値の最も高い、最上流の移動点における解候補との組合せを抽出する。また評価演算手段は、評価方向に３つめ以降の注目する移動点における解候補毎に、累積評価値の最も高い、注目する移動点よりも上流に隣接する移動点における解候補との組合せを抽出する。このようにして評価方向下流に向かって各評価値を順次求める。この場合、最下流の移動点における各解候補と、最下流の移動点よりも評価方向上流に隣接する移動点における解候補との組合せのうちで、累積評価値が最も高い組合せの２つの解候補と、それら２つの解候補に関連して抽出される移動点毎の解候補の組合せが、手先を始点から終点まで移動させるにあたって全体的な評価が最も高い組合せとなる。
【００１６】
このように本発明では、２つの解候補ごとに評価値が高い解候補の組合せをそれぞれ抽出し、抽出した組合せを用いて、全体的な評価が最も高い移動点毎の解候補の組合せを求める。これによって評価値が低い解候補の組合せを除いたうえで、全体的な評価の高い解候補の組合せを探索することができ、全体的な評価が最も高い組合せを短時間でかつ効率よく求めることができる。
【００１７】
また本発明は、（ａ）複数の関節を有する多関節ロボットの予め定める移動対象部位を、複数の移動点を順次通過させて環状の循環移動経路を循環移動させるにあたって、移動点を移動対象部位がそれぞれ通過するときに各関節の角度位置で表される関節形態の、移動点毎の組合せを求めてロボット教示作業を支援する教示支援装置であって、
（ｂ）各移動点を特定するための移動点情報を入力する入力手段と、
（ｃ）移動点のうちで、仮想的に循環移動を開始する最初の移動点と、最初の移動点の移動方向上流側となる最後の移動点とを選択する選択手段と、
（ｄ）ロボットの移動対象部位を移動点に配置可能な関節形態を解候補とし、移動点毎に、全ての解候補をそれぞれ演算する解候補演算手段と、
（ｅ）移動点毎にそれぞれ選択される解候補の組合せを評価する評価演算手段であって、
（ｅ１）通過順が最初の移動点から通過順が最後の移動点に向かう移動方向、および通過順が最後の移動点から通過順が最初の移動点に向かう移動方向のいずれか一方を評価方向とし、
（ｅ２）最上流の移動点における各解候補のうちの１つと、評価方向最上流の移動点の評価方向下流側に隣接する２つめの移動点における各解候補のうちの１つとのそれぞれの組合せについて、予め定める評価基準に従って評価値を求め、２つめの移動点における解候補毎に、評価値が最も高い組合せをそれぞれ抽出して、２つめの移動点における各解候補毎に、２つめの移動点における各解候補のうちの１つと、それに関連して抽出した最上流の移動点における１つの解候補との組合せをそれぞれ決定し、
（ｅ３）２つめの移動点の評価方向下流側に隣接する３つめの移動点から評価方向最下流の移動点まで、評価方向に順次、各移動点における各解候補毎に、注目する移動点における各解候補のうちの１つと、注目する移動点に対して評価方向上流側に隣接する移動点における各解候補のうちの１つとのそれぞれの組合せについて、前記評価基準に従って評価値を求め、それら２つの解候補の組合せの評価値と、評価値を求めた２つの解候補のうちで評価方向上流側の移動点における解候補について既に決定しているさらに評価方向上流側のそれぞれの移動点毎の各解候補に関する評価値の合計値とを合わせた累積評価値を求め、注目する移動点における解候補毎に、累積評価値が最も高い組合せを抽出して、注目する移動点における解候補毎に、注目する移動点における各解候補のうちの１つと、それに関連して抽出した評価方向上流側に隣接する移動点における１つの解候補との組合せを決定し、
（ｅ４）評価方向最下流の移動点における解候補ごとに、評価方向最下流の移動点における解候補のうちの１つと、その解候補に関連して決定される評価方向最上流の移動点における１つの解候補との組合せについて、予め定める評価基準に従って評価値を求め、それら２つの解候補の組合せの評価値と、評価値を求めた評価方向最下流の移動点の解候補の累積評価値とを合わせた循環累積評価値を求め、循環累積評価値が最も高い解候補の組合せを抽出し、この組合せの解候補に関連して決定される移動点毎の各解候補の組合せを、移動点毎の関節形態の組合せとして求める評価演算手段と、
（ｆ）評価演算手段による演算結果を出力する出力手段とを含むことを特徴とするロボットの教示支援装置である。
【００１８】
本発明によれば、循環移動経路において、評価値が低い解候補の組合せを除いたうえで、全体的な評価の高い解候補の組合せを探索することができ、全体的な評価が最も高い組合せを短時間でかつ効率よく求めることができる。また移動を開始するときの移動点の関節形態と、循環移動経路を一周したときの移動点の関節形態とを同じとすることによって、循環移動経路を円滑に移動させることができる。
【００１９】
また本発明は、前記入力手段は、多関節ロボットの進入が禁止される進入禁止領域に関する禁止領域情報を入力し、
前記解候補演算手段は、ロボットの移動対象部位を移動点に配置可能な関節形態のうちで、ロボットの少なくとも一部が進入禁止領域に進入するような関節形態について、解候補から除外することを特徴とする。
【００２０】
本発明に従えば、全体的な評価が最も高い解候補の組合せでは、移動点を移動対象部位が通過するときに、ロボットが進入禁止領域に進入することが防がれ、実用的な解候補の組合せを求めることができる。またロボットが進入禁止領域に進入するであろう関節形態を解候補から除外することで、評価演算手段で用いられる解候補の数を低減することができ、全ての組合せの評価値を演算するに要する時間と、最も高い解候補の探索に要する時間とを短縮することができる。
【００２１】
また本発明は、前記入力手段は、多関節ロボットの進入が禁止される進入禁止領域に関する禁止領域情報を入力し、
前記評価基準は、評価方向に隣接する２つの移動点における各解候補の表わす関節形態を変数とする評価関数に基づいて決定される第１評価基準と、評価方向に隣接する２つの移動点間について移動対象部位を移動させる間にロボットの少なくとも一部が進入禁止領域に進入しないことを基準とする第２評価基準とを含み、
前記評価演算手段は、評価方向に隣接する２つの移動点のうちの評価方向下流側の移動点における解候補に対して、評価方向に隣接する２つの移動点のうちの評価方向上流側の移動点における各解候補毎に第１評価基準に従う第１評価値をそれぞれ求め、それらのうちで、第１評価値が最も高い組合せ順に、第２評価基準を満足するか否かを演算し、第２評価基準を満足し、かつ第１評価値が最も高い組合せを、評価値が最も高い組合せとして抽出することを特徴とする。
【００２２】
本発明に従えば、全体的な評価が最も高い解候補の組合せでは、２つの移動点の間を移動対象部位が通過する間にわたって、ロボットが進入禁止領域に進入することが防がれ、より実用的な解候補の組合せを求めることができる。
【００２３】
また注目する移動点の１つの解候補に対して、注目する移動点の上流側の移動点における解候補毎に第１評価値をそれぞれ求めたあとで、第１評価値が最も高い組合せ順に、第２評価基準を満たすかどうかを演算する。第１評価値が最も高い組合せが第２評価基準を満たす場合には、その時点で、評価値が最も高い組合せが決定されるので、第１評価値が最も高い組合せ以外の組合せについて、第２評価基準を満たすかどうかを演算する必要がない。
【００２４】
このように第２評価基準を満たすかどうかについては、第１評価値が最も高い組合せを暫定的に決定した状態で行うので、１つの解候補に対して上流側の移動点における解候補毎に第１評価基準を満たすかどうかをそれぞれ演算する場合に比べて、第２評価基準を満足するか否かを演算する回数を少なくすることができる。第２評価基準を判断するためには、注目する２つの移動点の間について、移動対象部位を移動させる間にわたって、ロボットの一部が進入禁止領域に進入したかどうかを判断しなければならない。したがって第２評価基準を求めるための演算量は、第１評価値を演算する場合に比べて大きくなる。上述したように本発明では、演算量の大きい第２評価基準を判断する回数を少なくすることができるので、全体として演算時間を短縮することができる。
【００２５】
また本発明は、前記評価値は、評価方向に隣接する２つの移動点における各関節の角度位置の偏差を変数とする評価関数に基づいて決定されることを特徴とする。
【００２６】
本発明では、評価値が、隣接する２つの移動点における各関節の角度位置の偏差となるので、評価値が最も高い組合せを採用することで、関節を移動させる角度位置が小さくなりやすく、移動対象部位を移動させるに要するロボットの移動時間を短くすることができる。したがって上述した最適な解候補の組合せを用いることで、移動点の始点から終点まで短時間で移動対象部位を移動させることができる。またたとえば評価関数を適切に設定することで、ロボットの変位量が小さくなり、移動対象部位を移動させるに要するロボットの消費エネルギーを小さくすることができる。
【００２７】
また本発明は、前記解候補演算手段によって演算される、ロボットの移動対象部位を移動点に配置可能な全ての関節形態を記憶する記憶手段をさらに含み、
前記評価演算手段は、記憶手段に記憶される関節形態を解候補としてそれぞれ読出して、移動点毎の関節形態の組合せを求めることを特徴とする。
【００２８】
本発明に従えば、記憶手段に関節形態を記憶した状態で、入力手段によって進入禁止領域が入力された場合または進入禁止領域が更新された場合など、記憶手段に記憶される関節形態を用いて、解候補を再抽出することができ、進入禁止領域が入力される毎に解候補を演算する場合に比べて、短時間で解候補を求めることができる。
【００２９】
また本発明は、前記ロボットの教示支援装置の動作をコンピュータに行わせるためのコンピュータ読取り可能なプログラムである。
【００３０】
本発明に従えば、プログラムをコンピュータに読取らせることによって、コンピュータを上述したロボットの教示支援装置として動作させることができる。
【発明の効果】
【００３１】
請求項１記載の本発明によれば、演算可能な全ての解候補を対象としたうえで、最適な解候補の組合せを求めることで、局所解に陥る可能性のある勾配法に比べて、最適な解候補の組合せを確実に得ることができる。また２つの解候補の組合せにおける評価値の低い組合せを除いて、最適な解候補の組合せを探索することで、全ての解候補を用いて探索する全域探索法に比べて短時間に最適な解候補の組合せを得ることができる。
【００３２】
たとえば移動点がＮ個存在し、移動点毎に解候補がｍ個存在する場合、最適な解候補の組合せを求めるには、全ての解候補を用いた全域探索法では、ｍＮ通りの組合せでの全体的な評価値を全て計算し、それらのうちから全体的な評価の高い解候補の組合せを探索する必要がある。これに対して、本発明では、全体的な評価の高い解候補の組合せを求めるには、ｍ２・（Ｎ−１）通りの組合せを計算するだけでよく、演算量を極めて少なくすることができる。また移動点の数Ｎ、１つの移動点毎の解候補の数ｍがそれぞれ多い場合でも、全ての解候補を用いた全域探索法に比べて演算量の増加率が小さいので、移動点および解候補の数を増やしやすく、より最適な解を得ることができる。
また、最適な解候補の組合せでは、２つの移動点の間を移動対象部位が通過する間にわたって、ロボットが進入禁止領域に進入することが防がれる。したがってより実用的となる最適な解候補の組合せを求めることができる。また第１評価値が最も高い組合せが求まった後で、絞り込まれた組合せについて第２評価基準を満たすかどうかを演算することで、計算負荷の大きい第２評価基準を用いて演算する回数を少なくすることができ、演算時間を短縮することができる。
【００３３】
請求項２記載の本発明によれば、移動対象部位を循環移動経路に沿って循環移動させる場合に、局所解に陥る可能性のある勾配法に比べて、最適な解候補の組合せを確実に得ることができる。また２つの解候補の組合せにおける評価値の低い組合せを除いて、最適な解候補の組合せを探索することで、全ての解候補を用いて探索する全域探索法に比べて短時間に最適な解候補の組合せを得ることができる。さらに移動を開始するときの移動点の関節形態と、循環移動経路を一周したときの移動点の関節形態とを同じとすることによって、循環移動経路を円滑に移動させることができる。
【００３４】
請求項３記載の本発明によれば、最適な解候補の組合せでは、移動点を移動対象部位が通過するときに、ロボットが進入禁止領域に進入することが防がれる。したがって実際に適用可能な解候補の組合せのうちで、最適な解候補の組合せを求めることができる。たとえば最適な解候補の組合せに基づいてロボットを動作させた場合に、作業者が最初に想定したロボットの形態と大きく異なっていても、ロボットが進入禁止領域に進入することを防ぐことができ、ロボットと障害物とが衝突することを防ぐことができる。また本発明では、ロボットが進入禁止領域に進入する各関節の角度位置を解候補から除外することで、解候補の数を減らすことができ、さらに演算量を少なくすることができる。
【００３５】
請求項４記載の本発明によれば、最適な解候補の組合せでは、２つの移動点の間を移動対象部位が通過する間にわたって、ロボットが進入禁止領域に進入することが防がれる。したがってより実用的となる最適な解候補の組合せを求めることができる。また第１評価値が最も高い組合せが求まった後で、絞り込まれた組合せについて第２評価基準を満たすかどうかを演算することで、計算負荷の大きい第２評価基準を用いて演算する回数を少なくすることができ、演算時間を短縮することができる。
【００３６】
請求項５記載の本発明によれば、評価値が最も小さい組合せを採用することで、ロボットの関節を移動させる角度位置が小さくなりやすく、移動対象部位を移動させるに要するロボットの移動時間を短くすることができる。これによって最適な解候補の組合せを用いて、移動対象部位を移動させることで、ロボットを短時間で移動させることができ、ロボットによる作業効率を向上することができる。
【００３７】
請求項６記載の本発明によれば、入力手段によって進入禁止領域が入力された場合または進入禁止領域が更新された場合などに、記憶手段に記憶される関節形態を用いて、解候補を再抽出することができ、進入禁止領域が入力される毎に解候補を演算する場合に比べて、短時間で解候補を求めることができる。
【００３８】
請求項７記載の本発明によれば、プログラムをコンピュータに読取らせることによって、コンピュータを上述したロボットの教示支援装置として動作させることができ、短時間で最適な解候補をコンピュータに求めさせることができる。
【発明を実施するための最良の形態】
【００３９】
図１は、本発明の第１実施形態であるロボットの教示支援装置２０を示すブロック図である。本発明の第１実施形態の教示支援装置２０は、作業者によるロボット教示作業を支援するための装置である。ロボット教示作業は、多関節ロボットに予め定める動作を行わせるために、作業者がロボットを教示する作業である。
【００４０】
本実施の形態では、多関節ロボットは、複数の関節を有する７自由度ロボットである。多関節ロボットは、移動対象部位として手先が設定され、各関節のそれぞれの角度位置を変化させることによって、手先を任意の位置および姿勢に移動可能に構成される。以下、各関節のそれぞれの角度位置が決定された場合のロボットの外形的形態を関節形態と称する。また多関節ロボットは、冗長性を有し、手先を予め定める位置および姿勢に移動させた状態で、複数の関節形態を取り得る。言い換えると、多関節ロボットは、手先を予め定める位置および姿勢に移動させることが可能な関節形態が複数通り存在する。
【００４１】
多関節ロボットは、始点から終点まで、予め定める移動経路に沿って手先を移動させる。このとき手先は、始点から終点まで移動する間に複数の経由点を通過する。教示支援装置２０は、ロボットが手先を複数の移動点を順次通過させて移動させるにあたって、各移動点を手先がそれぞれ通過するときの、移動点毎に設定される関節形態の最適な組合せを出力、具体的には表示する。ここで最適な組合せとは、予め定める評価基準に従う評価値が最も高い関節形態の組合せを意味する。
【００４２】
作業者は、支援教示装置２０によって表示される関節形態の組合せを把握することで、移動点毎の最適な関節形態の組合せを手動で探索する手間を省くことができ、ロボット教示作業を容易に行うことができる。このように教示支援装置２０は、移動点毎の最適な関節形態の組合せを求めることで、作業者によるロボット教示作業を支援する。
【００４３】
図１に示すように、教示支援装置２０は、演算部２１と、記憶部２２と、入力部２３と、出力部２４とを含んで構成されるコンピュータである。演算部２１は、データ作成部３０と、データ探索部３１とを含んで構成される。データ作成部３０は、移動点毎に、ロボットの手先を移動点に配置可能な全ての関節形態を、解候補としてそれぞれ求める解候補演算手段となる。１つの解候補は、各関節のそれぞれの角度位置の組合せで表わされる。さらにデータ作成部３０は、手先の移動方向に隣接する２つの移動点における一方の移動点の各解候補のうちの１つと、他方の移動点の解候補のうちの１つとに基づいて評価した評価値を演算する。
【００４４】
またデータ探索部３１は、データ作成部３０によって作成された各評価値のうちから、移動点毎の最適な解候補の組合せを探索する。データ作成部３０とデータ探索部３１とによって、請求の範囲に記載される評価演算手段を構成する。データ探索部３１は、最適な解候補の組合せを求め、求めた最適な解候補の組合せを出力部２４に与える。このような演算部２１は、ＣＰＵなどの中央演算回路によって実現される。演算部２１は、ＲＡＭまたはＲＯＭなどの記憶回路に記憶されるプログラムを実行することによって、データ作成部３０およびデータ探索部３１の動作を行うことができる。このように教示支援プログラムを、コンピュータが読込んで実行することによって、コンピュータは、後述する教示支援動作を行うことができる。
【００４５】
記憶部２２は、移動点情報記憶部３２と、解候補記憶部３３と、評価値記憶部３４と、ロボット型式記憶部３５とを含んで構成される。移動点情報記憶部３２は、移動点情報を記憶する。移動点情報は、移動点毎で、手先が移動すべき位置および姿勢を表わす情報である。ここで、移動点は、手先が移動する点であって、始点と、終点と、始点および終点を結ぶ手先の移動経路上に配置される複数の経由点とを含む。本実施の形態では、移動点情報記憶部３２は、予め定める位置姿勢で手先が移動点に位置するときの各関節のそれぞれの角度位置を、移動点情報として記憶する。移動点情報として記憶される各関節のそれぞれの角度位置は、暫定的な各関節の角度位置である。
【００４６】
解候補記憶部３３は、解候補を記憶する。解候補は、上述したようにロボットの手先を移動点に配置可能な、各関節のそれぞれの角度位置の組合せで表わされる。したがって１つの解候補には、手先を対応する移動点に配置可能となるような、それぞれの関節毎の角度位置の情報が含まれる。７つの関節Ｊｔ１〜Ｊｔ７を有する７軸ロボットでは、１つの解候補は、各関節Ｊｔ１〜Ｊｔ７にそれぞれ対応する７つの角度位置ｑ１〜ｑ７が組合わされた情報が含まれる。
【００４７】
また７軸ロボットは、冗長性を有するので、手先が予め定められる位置と姿勢で１つの移動点に位置する解候補は、１つではなく無数に存在する。解候補記憶部３３は、移動点ごとに、移動点に設定される位置姿勢で手先を配置可能な無数の解候補のうちで、演算可能な全ての解候補が記憶される。たとえば移動点がＮ個存在し、１つの移動点毎にｍ個の解候補が演算可能な場合には、解候補記憶手段には、Ｎ×ｍ個の解候補が記憶される。
【００４８】
解候補記憶部３３は、演算部２１のデータ作成部３０によって解候補を示す情報が入力され、入力された解候補と、その解候補と対応する移動点とを関連させて記憶する。また解候補記憶部３３は、１つの移動点における各解候補について、それぞれを区別するための番号を付して記憶する。
【００４９】
評価値記憶部３４は、評価値を記憶する。評価値は、手先の移動方向に隣接する２つの移動点における一方の移動点の各解候補のうちの１つと、他方の移動点の各解候補のうちの１つとに基づいて、予め定める評価基準に従って評価される値である。本実施の形態では、隣接する２つの移動点における２つの解候補のうちで、関節毎の角度位置を変数とする評価関数に基づいて評価値が決定される。
【００５０】
本実施の形態では、２つの解候補において、関節Ｊｔ１〜Ｊｔ７毎にそれぞれ対応する角度位置の偏差δ１〜δ７を求める。それら各偏差δ１〜δ７の最大の値となるものに基づいて評価値として決定する。具体的には、評価値は、２つの移動点の間について手先を移動させる間に、各関節Ｊｔ１〜Ｊｔ７のうちで、角度位置の移動量が最大となる最大移動関節の移動量を表わす。最大移動関節の移動量を小さくすると、手先を一方の移動点から他方の移動点まで、移動するのに必要な移動時間を短くすることができる。したがって評価値は、小さければ小さいほど評価が高い。
【００５１】
図１に戻って、ロボット型式記憶部３５は、ロボットの型式を記憶する。ロボットの型式は、各関節の角度位置が既知な場合に、ロボットに設定される原点に対する手先の位置および姿勢を求めることが可能な情報が記憶される。またロボット型式情報には、各関節の角度位置の取り得ることが可能な可動範囲がそれぞれ含まれる。
【００５２】
具体的には、ロボットの各関節がそれぞれ同軸関節、傾斜関節および垂直関節のいずれであるかを示す関節構造を示す情報、関節間を連結するリンク体の長さを示すリンク情報がロボット型式記憶部３５に記憶される。教示支援装置２０が、種類の異なるロボットにおいても対応可能とする場合には、種類の異なるロボット毎に上述したロボットの型式情報が記憶される。たとえば記憶部２２は、ハードディスクドライブなどの大容量記憶装置によって実現される。
【００５３】
また入力部２３および出力部２４は、教示支援装置２０と外部と接続するためのインターフェース部となる。本実施の形態では、入力部２３は、作業者によって操作されることによって、作業者から情報が与えられ、与えられた情報を演算部２１に入力する入力手段となる。出力部２４は、演算部２１によって演算された演算結果を出力する出力手段となる。本実施の形態では、入力部２３は、キーボードおよびポインティングデバイスなどの入力手段によって実現される。また教示支援装置２０がロボットコントローラと接続される場合、入力部２３は、作業者からロボットの動作指令が入力されるティーチングペンダントによって実現されてもよい。また出力部２４は、演算部２１の演算結果を画像情報に変換し、変換した画像情報を表示するディスプレイによって実現される。
【００５４】
図２は、教示支援装置２０の動作の全体的な流れを示すフローチャートである。ステップａ０では、演算部２１にデータ作成プログラムおよびデータ探索プログラムが記憶されるなどして、教示支援可能な状態に移行すると、教示支援動作を開始し、ステップａ１に進む。
【００５５】
ステップａ１では、作業者から、入力部２３に評価値が最も高い関節形態の組合せを求めるために必要な情報が入力される。入力部２３は、作業者から入力された情報を演算部２１に入力する。入力部２３が、必要な情報を全て演算部２１に入力するとステップａ２に進む。
【００５６】
ステップａ２では、演算部２１のデータ作成部３０が、入力部２３から与えられた各情報に基づいて、移動点毎に、手先を移動点に配置可能な解候補を全て演算する。データ作成部３０は、各解候補を移動点と関連付けて、解候補記憶部３３にデータベース化して記憶する。次に、データ作成部３０は、隣接する２つの移動点における解候補について、取り得る全ての組合せで評価値をそれぞれ求める。データ作成部３０は、２つの解候補の全ての組合せの評価値をそれぞれ求めると、評価値と、評価値を求めた２つの解候補と、２つの解候補における各移動点とを関連付けて、評価値記憶部３４にデータベース化して記憶し、ステップａ３に進む。
【００５７】
ステップａ３では、演算部２１のデータ探索部３１が、ステップａ２で求めた全ての組合せの評価値のうちから、移動点毎の最適な解候補の組合せを探索する。探索が完了すると、探索結果を示す信号を出力部２４に入力し、ステップａ４に進む。ステップａ４では、出力部２４が、演算部２１のデータ探索部３１から与えられた最適な解候補の組合せに基づいて、移動点毎に、ロボットの関節形態を示す画像を表示させ、ステップａ５に進み、教示支援動作を終了する。
【００５８】
図３は、図２に示すステップａ１における入力部２３の動作手順を示すフローチャートである。入力部２３は、ステップｂ０で作業者によって操作されると、ステップｂ１に進み、入力受付け動作を開始する。
【００５９】
ステップｂ１では、入力部２３は、ロボットの型式の指示指令の入力を受付ける。作業者によってロボットの型式が選択入力されると、作業者が選択したロボットの型式を演算部２１に入力し、ステップｂ２に進む。
【００６０】
ステップｂ２では、入力部２３は、移動点情報の入力を受付ける。本実施の形態では、移動点情報は、手先を移動点に配置させた場合のロボットの各関節の角度位置となる。作業者によって、移動点毎の、ロボットの各関節の角度位置の情報がそれぞれ入力されると、作業者が入力した情報を演算部２１に入力し、ステップｂ３に進む。
【００６１】
ステップｂ３では、入力部２３は、ロボットのうちの１つの関節である冗長関節の角度位置の刻み幅の入力を受付ける。入力部２３は、作業者によって入力された刻み幅の情報を演算部２１に入力し、ステップｂ４に進む。ステップｂ４では、入力部２３は、入力受付け動作を終了する。ここで、ステップｂ１〜ｂ３の受付け順は、これに限定されず、他の順番で作業者から入力される情報を、演算部２１に入力してもよい。
【００６２】
また移動点情報は、移動点毎の手先の位置および姿勢が直接入力されてもよい。また移動点情報は、複数の移動点のうちの一部の移動点に関する情報が入力されてもよい。この場合、残余の移動点に関する情報は、入力された一部の移動点の情報に基づいて、演算部２１が残余の移動点に関する情報を補間演算することによって求めることができる。また教示支援するロボットが一種類であるならば、ロボットの型式を入力する必要がない。
【００６３】
図４は、図２に示すステップａ２におけるデータ作成部３０の動作手順を示すフローチャートである。データ作成部３０は、ステップｃ０で入力部２３から評価値を求めるための各情報が入力されると、ステップｃ１に進み、データ作成動作を開始する。
【００６４】
ステップｃ１では、データ作成部３０は、入力されたロボットの型式に対応するロボットの各関節および各リンクの情報を、ロボット型式記憶部３２から取得する。またデータ作成部３０は、入力されたロボットの各関節の角度位置の情報と、ロボットの各関節および各リンクの情報とに基づいて、ロボットの順運動学問題を解くことによって、移動点における手先の位置および姿勢を求める。このようにしてデータ作成部３０は、移動点毎に入力されるロボットの各関節の角度位置から、手先の位置姿勢を求める順変換演算を行うことによって、移動点毎の手先の位置姿勢を全て求めることができる。データ作成部３０は、求めた各移動点における手先の位置姿勢を記憶部２２にそれぞれ記憶し、ステップｃ２に進む。
【００６５】
ステップｃ２では、データ作成部３０は、移動点毎に、ステップｃ２で求めた手先の位置および姿勢となるような解候補を全て求める。解候補は、冗長関節の角度位置を予め定める範囲で微小移動させて、微小移動ごとに、手先が移動点に設定される位置姿勢となるように、残余の各関節の角度位置について、ロボットの逆運動学問題を解く。これによって、手先が移動点に設定される位置姿勢となるような、冗長関節の角度位置と、残余の各関節のそれぞれの角度位置との組合せで構成される１つの解候補を求めることができる。
【００６６】
このように手先の位置姿勢と冗長関節の角度位置とから、ロボットの各関節の角度位置を求める逆変換演算を行うことによって、冗長関節の角度位置を微小移動する毎に１つの解候補を求めることができる。ここで、データ作成部３０は、上述したステップｂ２で与えられる情報に基づいて、冗長関節の角度位置を微小移動する刻み幅を決定する。刻み幅が小さくなればなるほど、１つの移動点が取り得ることが可能な解候補の数が増加する。
【００６７】
このようにして移動点毎に、予め定める範囲のなかで、冗長関節の角度位置を刻み幅ごとに移動させて、複数の解候補を求めることによって、移動点毎の解候補を求めることができる。データ作成部３０は、移動点毎にそれぞれ、全ての解候補を求めると、移動点に対応させて各解候補を区別する番号を関連付けて、各解候補を記憶部２２にそれぞれ記憶し、ステップｃ３に進む。
【００６８】
ステップｃ３では、データ作成部３０は、手先を移動する移動方向に関して、移動方向に隣接する２つの移動点における一方の移動点の各解候補のうちの１つと、他方の移動点の解候補のうちの１つとに基づいて評価した評価値を演算する。データ作成部３０は、２つの移動点間における解候補の全ての組合せについて評価値を求める。データ作成部３０は、求めた評価値と、評価値を求めた移動点間と、解候補の組合せとを関連させて、各評価値を区別する番号を関連付けて、各評価値を記憶部２２にそれぞれ記憶し、ステップｃ４に進む。ステップｃ４では、データ作成部３０は、データ作成動作を終了する。
【００６９】
図５は、ステップｃ２において、データ作成部３０が全ての解候補を求める手順を示すフローチャートである。ステップｄ０で、全ての移動点における手先の位置姿勢を求めると、ステップｄ１に進み、解候補作成動作を行う。
【００７０】
ステップｄ１では、データ作成部３０は、ステップｃ１で求めた各移動点のうちから１つの移動点を選択し、ステップｄ２に進む。ステップｄ２では、１つの冗長関節の角度位置に対応して、１つの解候補を求めるために、離散形態を選択する。解候補は、冗長関節の角度位置が１つの値であっても、各関節の角度位置の正負を示す離散形態符号の組合せを異ならせることで、複数の解候補が求まる場合がある。データ作成部３０は、１つの解候補を求めることを目的として、離散形態符号の組合せのうちから１つを選択して、ステップｄ３に進む。
【００７１】
ステップｄ３では、冗長関節の関節位置の角度範囲における開始位置から終了位置までで、作業者から入力される刻み幅ごとに抽出した複数の関節位置のうちの１つを選択し、ステップｄ４に進む。ステップｄ４では、上述するステップｄ１〜ｄ３で得られた、移動点における手先の位置姿勢と、離散形態と、冗長関節の関節位置と、ロボットの関節およびリンク体の情報とに基づいて、逆変換を行って演算解を求め、ステップｄ５に進む。本実施の形態では、逆変換を行って解が求まらない場合も、ステップｄ５に進む。
【００７２】
ステップｄ５では、逆変換を行って求めた演算解が、ロボットによって実現可能な機構的解として存在するか否かを判断する。具体的には、ステップｄ４で求めた演算解が、ロボットにおける特異点を超えていると判断すると、演算解が機構的解でないと判断し、ステップｄ１１に進む。ステップｄ１１では、現時点で選択される離散形態において、以前に選択された冗長関節の角度位置と異なる角度位置を選択し、ステップｄ４に戻る。
【００７３】
ステップｄ５において、逆変換を行って求めた演算解が、機構的解であると判断すると、ステップｄ６に進む。ステップｄ６では、機構的解として判断された演算解を解候補とし、他の解候補と区別するための番号を付して、対応する移動点の情報とともに解候補を記憶部２２に記憶し、ステップｄ７に進む。
【００７４】
ステップｄ７では、現時点で選択される離散形態において、冗長関節の関節位置の角度範囲における開始位置から終了位置までで、刻み幅毎に抽出した複数の関節位置の全てを、それぞれ選択し終えたかどうかを判断し、まだ選択していない関節位置が存在する場合には、ステップｄ１１に進む。ステップｄ１１では、現時点で選択される離散形態において、以前に選択された冗長関節の角度位置とは異なる角度位置を選択し、ステップｄ４に戻る。
【００７５】
ステップｄ７において、現時点で選択される離散形態において、刻み幅毎に抽出した複数の関節位置の全てを選択し終えたと判断すると、ステップｄ８に進む。ステップｄ８では、現時点で選択される移動点において、手先の位置姿勢を固定した場合に、取り得る全ての離散形態符号の組合せの全てを、選択し終えたかどうかを判断し、まだ選択していない離散形態符号の組合せが存在すると判断した場合には、ステップｄ１２に進む。ステップｄ１２では、現時点で選択される移動点において、既に選択された離散形態とは異なる離散形態を選択して、ステップｄ３に戻る。
【００７６】
ステップｄ８において、現時点で選択される移動点において、ロボットが取り得ることが可能な離散形態符号の組合せの全てをそれぞれ選択し終えたと判断すると、ステップｄ９に進む。ステップｄ９では、移動点の全てを、それぞれ選択し終えたかどうかを判断し、まだ選択していない移動点が存在すると判断した場合には、ステップｄ１３に進む。ステップｄ１３では、既に選択された移動点とは異なる移動点を選択し、ステップｄ２に戻る。ステップｄ９において、全ての移動点について、選択し終えたと判断すると、ステップｄ１０に進み、解候補作成動作を終了する。このようにして移動点毎、離散形態毎、冗長関節の角度毎に、解候補を求める。
【００７７】
図６は、ステップｃ３において、データ作成部３０が評価値を演算する手順を示すフローチャートである。また図７は、データ作成部３０によって求められるそれぞれの評価値を説明するための図である。図７には、４つの移動点ｐ１〜ｐ４と、移動点毎にそれぞれ４つの解候補ｃ（ｉ）_１〜ｃ（ｉ）_４とがそれぞれ存在している場合を示す。また矢印付き線の先端部に図示される数値は、矢印付き線で結ばれる２つの解候補の組合せにおける評価値をそれぞれ示す。
【００７８】
図６に示すように、ステップｅ０で、全ての解候補を求めると、ステップｅ１に進み、評価演算動作を行う。ステップｅ１では、手先を移動させる移動方向最上流の移動点ｐ１と、最上流の移動点の移動方向下流側に隣接する２つめの移動点ｐ２とを選択し、ステップｅ２に進む。ステップｅ２では、直前に選択した２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうち下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちで、１番目の番号が関連付けられる解候補ｃ（ｉ＋１）_１を選択し、ステップｅ３に進む。ステップｅ３では、直前に選択した２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうち上流側の移動点ｐ（ｉ）における各解候補ｃ（ｉ）のうちで、１番目の番号が関連付けられる解候補ｃ（ｉ）_１を選択し、ステップｅ４に進む。
【００７９】
ステップｅ４では、予め定める評価基準に従って、直前に選択した、２つの解候補ｃ（ｉ）_ｊ，ｃ（ｉ＋１）_ｋを評価する。本実施の形態では、移動方向上流側の解候補ｃ（ｉ）_ｊが示す関節形態から、移動方向下流側の解候補ｃ（ｉ＋１）_ｋが示す関節形態まで手先を移動するまでの移動時間ｔ（ｉ＋１）_ｋ_ｊを評価値として演算する。評価基準に従った移動時間ｔ（ｉ＋１）_ｋ_ｊは、２つの解候補ｃ（ｉ）_ｊ，ｃ（ｉ＋１）_ｋの関節形態のうちで、それぞれ対応する関節の角度位置の偏差が最も大きい値（δｍａｘ＝ｍａｘ｜δ１，δ２，…δ６，δ７|）を予め定める各関節の移動速度ｖで除算した値（＝δｍａｘ／ｖ）で表わされる。この移動速度ｖは、各関節の移動速度が一定であり、加減速時間がゼロであって、サーボ遅れがないと仮定した移動速度である。たとえば移動速度ｖは、１００［ｄｅｇ／秒］に設定される。このように移動時間に関する値を評価値として採用した場合、評価値の値が小さければ小さいほど評価が高い。
【００８０】
たとえば図７では、第１移動点ｐ１と第２移動点ｐ２との組合せ（ｐ１→ｐ２）のうちで、第２移動点ｐ２における第１解候補ｃ２_１に対して、第１移動点ｐ１における第１解候補ｃ１_１との移動時間ｔ２_１_１は３秒であり、第２解候補ｃ１_２との移動時間ｔ２_１_２は７秒である。このようにしてデータ作成部３０は、２つの移動点ｐ（ｉ），ｐ（ｉ＋１）の間を移動するのに必要な移動時間ｔ（ｉ＋１）_ｋ_ｊを求め、ステップｅ５に進む。
【００８１】
ステップｅ５では、ステップｅ４で求めた評価値ｔ（ｉ＋１）_ｋ_ｊと、２つの移動点ｐ（ｉ），ｐ（ｉ＋１）と、２つの解候補ｃ（ｉ）_ｊ，ｃ（ｉ＋１）_ｋとを関連付けて記憶し、ステップｅ６に進む。ステップｅ６では、現時点で選択される２つの移動点において、上流側の移動点ｐ（ｉ）における各解候補ｃ（ｉ）のうちから、まだ選択していない解候補が存在するか否かを判断する。まだ選択していない解候補が存在すると判断すると、ステップｅ１０に進む。
【００８２】
ステップｅ１０では、現時点で選択される２つの移動点において、上流側の移動点ｐ（ｉ）における各解候補ｃ（ｉ）のうちから、まだ選択していない解候補を選択し、ステップｅ４に戻る。具体的には、直前に選択された、上流側の移動点ｐ（ｉ）における解候補ｃ（ｉ）_ｊの、次の番号が関連付けられる解候補ｃ（ｉ）_ｊ＋１を選択する。
【００８３】
ステップｅ６において、現時点で選択される２つの移動点において、上流側の移動点ｐ（ｉ）における各解候補ｃ（ｉ）_ｊのうちで、全ての解候補をすでに選択したとすると、ステップｅ７に進む。ステップｅ７では、現時点で選択される２つの移動点において、下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちから、まだ選択していない解候補が存在するか否かを判断する。まだ選択していない解候補が存在すると判断すると、ステップｅ１１に進む。
【００８４】
ステップｅ１１では、現時点で選択される２つの移動点において、下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちから、まだ選択していない解候補を選択し、ステップｅ３に進む。具体的には、直前に選択された、下流側の移動点ｐ（ｉ＋１）における解候補ｃ（ｉ＋１）_ｋの、次の番号が関連付けられる解候補ｃ（ｉ＋１）_ｋ＋１を選択する。
【００８５】
ステップｅ７において、現時点で選択される２つの移動点において、下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちで、全ての解候補をすでに選択したとすると、ステップｅ８に進む。ステップｅ８では、移動方向に隣接する２つの移動点ｐ（ｉ），ｐ（ｉ＋１）の組合せを全て選択したか否かを判断し、まだ選択していない２つの移動点の組合せが存在すると判断すると、ステップｅ１２に進む。ステップｅ１２では、直前に選択した２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうちの移動方向下流側の移動点ｐ（ｉ＋１）と、その移動点よりもさらに移動方向下流側の移動点ｐ（ｉ＋２）との２つの移動点の組合せを選択し、ステップｅ２に戻る。
【００８６】
ステップｅ８において、移動方向に隣接する２つの移動点ｐ（ｉ），ｐ（ｉ＋１）の組合せを全て選択したとすると、ステップｅ９に進み、評価値演算動作を終了する。このようにして移動方向に隣接する２つの移動点の組合せ毎、上流側の解候補毎、下流側の解候補毎に、評価値を求める。またデータ作成部３０は、上述した図６に示す手順と異なる手順で、全ての評価値をそれぞれ求めてもよい。
【００８７】
図８は、データ作成部３０によって記憶部２２に作成された移動時間ｔ（ｉ＋１）_ｋ_ｊのデータ構造を説明するための図である。図８には、移動点毎にｍ個の解候補がそれぞれ存在している場合を示す。またｔ（ｉ＋１）_ｋ_ｊは、評価値をそれぞれ示す。ここでｉは、移動方向に隣接する２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうちの上流側の移動点ｐ（ｉ）の番号を示す。またｊは、上流側の移動点ｐ（ｉ）における解候補の番号を示し、ｋは、下流側の移動点ｐ（ｉ＋１）における解候補の番号を示す。
【００８８】
上述したように本実施の形態では、２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうちの下流側の移動点ｐ（ｉ＋１）における１つの解候補ｃ（ｉ＋１）_ｋに対して、上流側の移動点ｐ（ｉ）における各解候補ｃ（ｉ）_ｊがそれぞれ対応する組合せが存在する。たとえば図８では、移動方向１つめの移動点ｐ１と移動方向２つめの移動点ｐ２との組合せ（ｐ１→ｐ２）のうちで、２つめの移動点ｐ２における第１解候補ｃ２_１と、１つめの移動点ｐ１における各解候補ｃ１_ｊとでそれぞれ求められる移動時間ｔ２_１_１〜ｔ２_１_ｍは、ｍ個存在する。また２つめの移動点ｐ２における第２解候補ｃ２_２と、１つめの移動点ｐ１における各解候補ｃ１_ｊとでそれぞれ求められる移動時間ｔ２_２_１〜ｔ２_２_ｍもまた、ｍ個存在する。このことは、２つの移動点ｐ（ｉ），ｐ（ｉ＋１）の組合せが異なる場合も同様である。したがって本実施の形態では、ｍ×ｍ×（Ｎ−１）個の評価値が記憶部２２に記憶される。言い換えるとデータ作成部３０は、ｍ×ｍ×（Ｎ−１）回、評価値を演算する。
【００８９】
図９は、ステップａ３において、データ探索部３１が最適な解候補の組合せを演算する手順を示すフローチャートである。また図１０は、データ探索部３１によって求められる全体最適な解候補の組合せを説明するための図である。図１０は、上述した図７に対応し、矢印付き線で結ばれる２つの解候補は、下流側の移動点ｐ（ｉ＋１）の１つの解候補ｃ（ｉ＋１）_ｋと、その解候補に対して、上流側の移動点ｐ（ｉ）の各解候補のうちで評価値の最も高いの解候補ｃ（ｉ）_Ｊとをそれぞれ示す。また各解候補の下方に図示される数値は、２つの解候補の組合せにおける累積評価値を示す。
【００９０】
図９に示すように、ステップｆ０で、全ての評価値を求めると、ステップｆ１に進み、最適な解候補の組合せの演算動作を開始する。ステップｆ１では、手先を移動させる移動方向最上流の移動点ｐ１と、最上流の移動点の移動方向下流側に隣接する２つめの移動点ｐ２とを選択し、ステップｆ２に進む。ステップｆ２では、選択した２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうち下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちで、１番目の番号が関連付けられる解候補ｃ（ｉ＋１）_１を選択し、ステップｆ３に進む。
【００９１】
ステップｆ３では、直前に選択された２つの移動点のうちの下流側の移動点ｐ（ｉ＋１）おける１つの解候補ｃ（ｉ＋１）_ｋに対して、上流側の移動点ｐ（ｉ）の各解候補ｃ（ｉ）_１〜ｃ（ｉ）_ｍで、それぞれ累積評価値Ｔ（ｉ＋１）_ｋ_１〜Ｔ（ｉ＋１）_ｋ_ｍを求める。そして累積評価値が最も高くなる、上流側の移動点ｐ（ｉ）の解候補ｃ（ｉ）_Ｊを抽出する。累積評価値Ｔ（ｉ＋１）_ｋ_ｊは、２つの解候補ｃ（ｉ）_ｊ，ｃ（ｉ＋１）_ｋの組合せによって求められる評価値ｔ（ｉ＋１）_ｋ_ｊと、上流側の移動点ｐ（ｉ）の解候補ｃ（ｉ）_ｊに既に関連付けられる累積評価値Ｔ（ｉ）_ｋ_Ｊとを加算した値である。ここで最上流の移動点ｐ１の各解候補ｃ１_ｊについては、関連付けられる累積評価値Ｔ（１）_ｋ_Ｊが存在せず、演算時には便宜上ゼロとして関連付けられる。
【００９２】
たとえば図７に示す第３移動点ｐ３の第１解候補ｃ３_１に対して、第２移動点ｐ２の各解候補ｃ２_１〜ｃ２_４のうちでは、第３解候補ｃ２_３が抽出される。この場合、累積評価値Ｔ３_１_Ｊは、第２移動点ｐ２と第３移動点ｐ３との２つの解候補ｃ（２），ｃ（３）の組合せによって求められる評価値ｔ３_１_ｊである６と、上流側となる第２移動点ｐ２の第３解候補ｃ２_３に既に関連付けられる累積評価値Ｔ２_ｋ_Ｊであるゼロとを加算した値である。このようにしてデータ探索部３１は、ステップｆ２で選択した解候補ｃ（ｉ＋１）_ｋに対して、累積評価値Ｔ（ｉ＋１）_ｋ_Ｊが最も高くなる上流側の移動点ｐ（ｉ）における解候補ｃ（ｉ）_ｊを１つ抽出すると、ステップｆ４に進む。
【００９３】
ステップｆ４では、ステップｆ３で抽出した下流側の移動点ｐ（ｉ＋１）の解候補ｃ（ｉ＋１）_ｋに、ステップｆ３で求めた最も評価の高い累積評価値Ｔ（ｉ＋１）_ｋ_Ｊを関連付ける。そして累積評価値Ｔ（ｉ＋１）_ｋ_Ｊと、直前に選択した下流側の移動点ｐ（ｉ＋１）の解候補ｃ（ｉ＋１）_ｋと、抽出した上流側の移動点ｐ（ｉ）の解候補ｃ（ｉ＋１）_Ｊと、２つの移動点の組合せとを関連させて、記憶部２２に記憶する。記憶が完了すると、ステップｆ５に進む。
【００９４】
ステップｆ５では、現時点で選択される２つの移動点において、下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちから、まだ選択していない解候補が存在するか否かを判断する。まだ選択していない解候補が存在すると判断すると、ステップｆ１０に進む。
【００９５】
ステップｆ１０では、現時点で選択される２つの移動点において、下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちから、まだ選択していない解候補を選択し、ステップｆ３に戻る。具体的には、直前に選択された、下流側の移動点ｐ（ｉ＋１）における１つの解候補ｃ（ｉ＋１）_ｋの、次の番号が関連付けられる解候補ｃ（ｉ＋１）_ｋ＋１を選択する。
【００９６】
ステップｆ５において、現時点で選択される２つの移動点において、下流側の移動点ｐ（ｉ＋１）における各解候補ｃ（ｉ＋１）のうちで、全ての解候補をすでに選択したとすると、ステップｆ６に進む。ステップｆ６では、移動方向に隣接する２つの移動点ｐ（ｉ），ｐ（ｉ＋１）の組合せを全て選択したか否かを判断し、まだ選択していない２つの移動点の組合せが存在すると判断すると、ステップｆ１１に進む。ステップｆ１１では、直前に選択した２つの移動点ｐ（ｉ），ｐ（ｉ＋１）のうちの移動方向下流側の移動点ｐ（ｉ＋１）と、その移動点よりもさらに移動方向下流側の移動点ｐ（ｉ＋２）との２つの移動点の組合せを選択し、ステップｆ２に戻る。
【００９７】
ステップｆ６において、移動方向に隣接する２つの移動点ｐ（ｉ），ｐ（ｉ＋１）の組合せを全て選択したとすると、ステップｆ７に進む。図１１は、データ探索部３１によって記憶部２２に作成された累積評価値Ｔ（ｉ＋１）_ｋ_Ｊのデータ構造を説明するための図である。図１１は、図８に対応し、Ｔ（ｉ＋１）_ｋ_Ｊは、各解候補に関連付けられた累積評価値をそれぞれ示す。累積評価値は、第２の移動点ｐ２〜最下流の移動点ｐＮのそれぞれの移動点の数と同じだけ存在する。たとえば第２の移動点ｐ２にｍ個の解候補が存在すると、第２の移動点ｐ２における累積評価値もｍ個存在する。第３の移動点ｐ３〜最下流の移動点ｐＮも同様である。したがって本実施の形態では、ｍ×（Ｎ−１）個の累積評価値が記憶部２２に記憶される。
【００９８】
図９に戻って、ステップｆ７では、最下流の移動点ｐＮの解候補ｃＮ_１〜ｃＮ_ｍのうちで、関連付けられる累積評価値ＴＮ_１_Ｊ〜ＴＮ_ｍ_Ｊが最も高い解候補を抽出する。言い換えると、最下流の移動点ｐＮと、その１つ手前の移動点ｐ（Ｎ−１）との組合せにおいて、累積評価値が最も高い解候補の組合せを抽出する。抽出すると、ステップｆ８に進む。
【００９９】
ステップｆ８では、ステップｆ８で抽出した解候補の組合せに関連する解候補を移動点毎に順次抽出し、抽出した移動点毎の解候補の組合せを、最適な解候補の組合せとして記憶する。具体的には、記憶部２２に記憶される累積評価値に関する情報に基づいて、ステップｆ８で抽出した最下流の移動点の解候補と組合わされた場合に、累積評価値の最も高くなる移動方向上流側の移動点の解候補を抽出し、その抽出した解候補と組合わされた場合に、累積評価値の最も高くなる移動方向さらに上流側の移動点の解候補を抽出する。
【０１００】
言い換えると、累積評価値が記憶されたデータベースを用いて、抽出した最下流の移動点の解候補から移動方向上流側に遡って、移動点間毎に評価の最も高い累積評価値の組合せの解候補を順次辿り、辿った解候補を移動点毎に順次抽出する。このようにして移動点毎に抽出された解候補の組合せが、全体的な評価値の最も高い解候補の組合せ、すなわち最適な解候補の組合せとなる。最適な解候補の組合せを抽出すると、ステップｆ９に進み、最適な解候補の組合せの演算動作を終了する。本実施の形態では、手先が移動点を移動する方向を評価方向として演算したが、手先が移動点を移動する方向と反対方向を評価方向として、演算を順次行っても、最も評価の高い移動点毎の解候補の組合せを求めることができる。
【０１０１】
本実施の形態では、図８に示すような２つの解候補の組合せ毎に求められる全ての評価値を演算してから、最適な解候補の組合せを探索するまでに、繰返す計算回数は、ｍ×ｍ×（Ｎ−１）回となる。これに対して、累積評価値を用いずに全域探索法を用いた場合には、最適な解候補の組合せを探索するまでに、繰返す計算回数は、ｍＮ回となる。ここでｍは、上述したように、１つの移動点に取得る解候補の数であって、Ｎは移動点の数となる。したがって冗長関節の角度位置を変更する刻み幅を細かくすると探索に必要な繰返し回数は、累積評価を用いない場合には指数的に増大する。これに対して、本実施形態では刻み幅を細かくしても比例的にしか増大せず、繰返し計算回数の増加を極めて効果的に抑えることができる。
【０１０２】
たとえばＮ＝３０、ｍ＝８００とすると、累積評価を用いない場合には、約１．２×１０８７回繰返し演算しなければならないのに対して、本実施形態では、約１．９×１０７回繰返し演算を行うだけでよい。したがって高い演算能力を有する処理回路を必要とすることなく、短時間で最適な解候補の組合せを探索することができる。
【０１０３】
図１２は、演算結果と演算前との移動時間の変化のシミュレーション結果をそれぞれ示すグラフである。図１２には、作業者によって入力された初期状態の移動点毎の関節形態の組合せで、手先を順次移動させた場合の移動点間の移動時間を破線で示す。また教示支援装置２０によって演算された最適な移動点毎の関節形態の組合せにおける移動点間の移動時間を実線で示す。
【０１０４】
上述したように教示支援装置２０は、移動点間ごとに最大移動関節の移動量が最も小さくなるような、関節形態の組合せを出力する。したがって演算結果の関節形態の組合せを適用することによって、初期状態に比べて全体的な移動時間を短縮することができる。本実施形態では、演算結果を採用することで、初期状態に比べて、第１移動点から第２８移動点に達するまでの総合移動時間を４７．４％短縮することができた。このように演算結果を用いることで、ロボットの移動時間を大幅に短縮することができ、ロボット動作時の作業効率を向上することができる。
【０１０５】
また本実施の形態の計算条件および計算時間を表１に示す。表１に示すように、本実施の形態では、計算時間に約１２分を費やしたが、累積評価を用いない場合には、２時間費やしても最適な解候補の組合せを探索することができなかった。
【０１０６】
【表１】
0004693643.tif 000002
【０１０７】
図１３は、図１２に関連した演算結果によるロボットの関節形態の変化を示す図であって、ロボットの関節形態は、図１３（１）〜図１３（１２）の順に進む。図１４は、図１２に関連した初期状態でのロボットの関節形態変化を示す図であって、ロボットの関節形態は、図１４（１）〜図１４（１２）の順に進む。図１３に示す演算結果によるロボットの関節形態変化は、図１４に示す初期状態での関節形態変化に比べて、移動点間ごとに最大移動関節の移動量が小さく、不所望な関節の角変位を省くことができる。
【０１０８】
以上のように本実施の形態では、冗長関節の角度位置ごとでかつ、離散形態ごとに、解候補の全域探索を行う。そして解候補の組合せごとに移動点間の移動時間を全て求め、下流側の解候補ごとに、移動時間が最も短い上流側の解候補の組合せをそれぞれ抽出する。その抽出結果に基づいて、始点から終点まで手先を移動させる全体的な移動時間が最も短くなる解候補の組合せを探索する。
【０１０９】
このようにして、全ての解候補の組合せを対象として、最適な解候補の組合せを求めることで、局所解に陥る可能性のある勾配法に比べて、最適な解候補の組合せを確実に得ることができる。また評価の低い組合せを除いて、最適な解候補の組合せを探索することで、評価の低い組合せを除かずに行う全域探索法に比べて短時間に最適な解候補の組合せを得ることができる。具体的には、上述したように冗長関節の角度位置を変更する刻み幅を細かくすると探索に必要な繰返し回数は、累積評価を用いない場合には指数的に増大するのに対して、本実施形態では比例的にしか増大せず、繰返し計算回数の増加を極めて効果的に抑えることができる。これによって移動点を増やすことができ、一度に移動可能な領域を増やすことができる。また刻み幅を小さくすることができ、より最適な解候補の組合せを求めることができる。
【０１１０】
また本実施の形態では、傾斜関節を有するロボットの解候補の最適な組合せを教示支援装置２０が求める。傾斜関節を有するロボットは、特異点が多く、移動時間の非線形性が高くなる。また手先を移動させるのに関節の角度位置変化が変則的である。このようなロボットでは、作業者は、全体的な移動時間が最短となる解候補を、手動で推定しずらい。本実施の形態の教示支援装置を用いることによって、作業者は、手動で推定しずらい最適な解候補の組合せを把握することができる。したがって教示支援装置は、教示作業の支援を効果的に達成することができる。
【０１１１】
また本発明の第２実施形態として、教示支援装置２０は、ロボットに対する障害物に関する情報が入力部２３から入力されてもよい。以下、障害物を回避したうえで最適な関節形態の組合せを求める教示支援装置２０について説明する。障害物を考慮した関節形態を求める場合であっても、教示支援装置２０は、図１と同様となる演算部２１、記憶部２２、入力部２３および出力部２４を有する。また教示支援装置２０は、図２と同様な動作手順によって演算結果を出力する。
【０１１２】
図１５は、本発明の第２実施形態であるロボットの教示支援装置２０での入力部２３の動作手順を示すフローチャートである。入力部２３は、ステップｇ０で作業者によって操作されると、ステップｇ１に進み、入力受付け動作を開始する。
【０１１３】
入力部２３は、図３に示すステップｂ１，ｂ２と同様の動作をステップｇ１，ｇ２で順に行った後、ステップｇ３に進む。ステップｇ３では、入力部２３は、障害物の入力を受付ける。作業者によって、ロボットに対する障害物の情報、すなわちロボットの進入が禁止される進入禁止領域の情報が入力されると、その情報を演算部２１に入力し、ステップｇ４に進む。入力部２３は、図３に示すステップｂ３，ｂ４と同様の動作をステップｇ４，ｇ５で順に行い、入力受付け動作を終了する。
【０１１４】
図１６は、第２実施形態でのステップｃ２において、データ作成部３０が全ての解候補を求める手順を示すフローチャートである。第２実施形態では、図５に示す動作と類似しており、演算解が障害物と干渉しているか否かを判断するステップｄ１４が余分に含まれる。したがって同様のステップについては、説明を省略し、同様の参照符号を付する。
【０１１５】
第２実施形態では、ステップｄ５において、逆変換を行って求めた演算解が、機構的解であると判断すると、ステップｄ１４に進む。ステップｄ１４では、データ作成部３０は、演算解に従った関節形態で手先を移動点に定められる位置姿勢に位置決めした状態で、進入禁止領域にロボットの一部が進入するか否か、いわゆる干渉チェックを行う。進入禁止領域にロボットの一部が進入することを判断すると、ステップｄ１１に進む。またロボットの一部が進入しないことを判断すると、ステップｄ６に進む。その他の構成については、図５に示す動作と同一である。第２実施形態によれば、干渉の可能性がある解候補を記憶部２２に採用せずに、障害物と衝突しない実用可能な解候補について記憶部２２に記憶することになる。第２実施形態では、その他の手順については、第１実施形態と同様である。
【０１１６】
図１７は、干渉チェックの方法を説明するための図である。本実施の形態では、データ作成部３０は、ＯＢＢ（Oriented Bounding Box）を用いた干渉判定計算を行う。図１７に示すように、進入禁止領域を直方体とし、リンク体を線分としたときに、線分が直方体に進入するか否かで判断する。データ作成部３０は、ステップｄ４で求めた解候補に基づいて、順変換演算を行って、各リンク体を線分としたときの３次元位置、線分の方向ベクトルを求め、それぞれの線分ごとに上述した干渉チェックを行う。
【０１１７】
ＯＢＢを用いた干渉判定計算では、表２に示す係数の組合せのうち、少なくとも１つが、Ｒ＞Ｒ０＋Ｒ１＋εで表される関係を満たしていれば、非干渉であると判断される。ここでεは、干渉余裕であり、リンク体の半径以上に設定される。リンク体の半径よりも予め定める量大きくすることで、障害物に近接した状態であっても干渉したと判断させることができる。εは、ステップｇ３で、障害物情報とともに作業者から入力される。
【０１１８】
【表２】
0004693643.tif 000003
【０１１９】
表２において、ａ０は、障害物を直方体としたときの重心から端面までの縦方向の寸法である。ａ１は、障害物を直方体としたときの重心から端面までの横方向の寸法である。ａ２は、障害物を直方体としたときの重心から端面までの幅方向の寸法である。またωは、リンク体を線分としたときにその線分が延びる方向を示すベクトルである。またＡ０は、障害物を直方体としたときの縦方向を示す単位ベクトルであり、Ａ１は、障害物を直方体としたときの横方向を示す単位ベクトルである。Ａ２は、障害物を直方体としたときの幅方向を示す単位ベクトルである。またＤは、リンク体を線分としたときの中点と、障害物を直方体としたときの重心とを結ぶ方向を示すベクトルである。また「×」は、ベクトルの外積を示し、「・」は、ベクトルの内積を表わす。
【０１２０】
ここで、図１７に示す干渉チェックは、一例であってその他の干渉チェック手法を用いて、手先を移動点に定められる位置姿勢に位置決めさせた場合における干渉チェックを行ってもよい。
【０１２１】
図１８は、障害物を回避する場合における、演算結果と演算前との移動時間の変化のシミュレーション結果をそれぞれ示すグラフである。図１８には、作業者によって入力された初期状態の移動点毎の関節形態の組合せで、手先を順次移動させた場合の移動点間の移動時間を破線で示す。また教示支援装置２０によって演算された最適な移動点毎の関節形態の組合せにおける移動点間の移動時間を実線で示す。
【０１２２】
第２実施形態による教示支援装置２０は、障害物を回避したうえで、移動点間ごとに最大移動関節の移動量が最も小さくなるような、関節形態の組合せを出力する。この場合も、初期状態の関節形態の組合せに比べて、演算結果の関節形態の組合せを適用することによって、全体的な移動時間を短縮することができる。本実施形態では、演算結果を採用することで、初期状態に比べて、総合移動時間を１７．２％短縮することができた。このように演算結果を用いることで、障害物を回避したうえで、ロボットの移動時間を短縮することができ、ロボット動作時の作業効率を向上することができる。また本実施の形態の計算条件および計算時間を表３に示す。障害物情報が入力されると、ロボットの移動時間の短縮効果は小さくなるが、実用可能な解を出力することができる。また干渉チェック自体は、計算負荷が比較的大きいが、干渉チェックによって解候補が絞り込まれることによって、後段の演算処理における繰返し計算を減らすことができ、障害物を考慮しない場合に比べて、全体的な演算時間を短縮することができる場合がある。
【０１２３】
【表３】
0004693643.tif 000004
【０１２４】
図１９は、図１８に関連した障害物を回避する演算結果によるロボットの関節形態の変化を示す図であって、ロボットの関節形態は、図１９（１）〜図１９（１２）の順に進む。図２０は、図１８に関連した障害物を回避する初期状態でのロボットの関節形態変化を示す図であって、ロボットの関節形態は、図２０（１）〜図２０（１２）の順に進む。図１９に示す演算結果によるロボットの関節形態変化は、障害物を回避したうえで、図２０に示す初期状態での関節形態変化に比べて、移動点間ごとに最大移動関節の移動量が小さく、不所望な関節の角変位を省くことができる。
【０１２５】
以上のように本実施形態では、第１実施形態と同様の効果を得ることができる。評価値に基づいて決定される第１評価基準と、ロボットと障害物との干渉の有無によって決定される第２評価基準とによって、総合的な評価基準となる。障害物との干渉チェックを行い、障害物との接触することが防がれた解候補のうちで、最適な解候補の組合せを演算する。これによって実際に適用可能な解候補の組合せを求めることができ、教示支援装置２０を、オフラインティーチングに好適に用いることができる。また図１６のステップｄ１４に示すように、障害物とロボットとが接触するであろう解候補を除いた状態で、評価工程、探索工程を行う。これによって１つの移動点に対応する解候補の数ｍを少なくすることができ、障害物を考慮に入れずに計算する場合に比べて、評価工程および探索工程に費やす計算時間を短縮することができる。これによって全体的な演算時間を短縮できる場合がある。また障害物に関する情報を入力することによって、作業者が最初に想定したロボットの形態と大きく異なっていても、ロボットが進入禁止領域に進入することを防ぐことができ、ロボットと障害物とが衝突することを防ぐことができる。さらに評価値および解候補を記憶部２２に記憶することで、障害物の情報が更新、変更されたとしても、以前に演算した評価値および解候補の値を用いることで、短時間に最適な解候補の組合せを求めることができる。
【０１２６】
また第３実施形態として、教示支援装置２０は、第２実施形態に加えて、手先を一方の移動点から他方の移動点へ移動させる間に、ロボットの一部が障害物に衝突するか否かを判断し、ロボットの一部が衝突しない関節形態変化を求めてもよい
図２１は、第３実施形態での、ステップａ３において、データ探索部３１が最適な解候補の組合せを演算する手順を示すフローチャートである。第３実施形態では、図９に示す動作と類似しており、手先を一方の移動点から他方の移動点へ移動させる間に、ロボットの一部が障害物に衝突するか否かを判断するステップｆ１２と、それに関連するステップｆ１３が余分に含まれる。したがって同様のステップについては、説明を省略し、同様の参照符号を付する。
【０１２７】
第３実施形態では、ステップｆ３において、累積評価値が最も高い組合せの２つの解候補について、対応する２つの移動点間を移動する間に、ロボットの一部が進入禁止領域に進入するか否かを判断する。具体的には、抽出した２つの解候補に従って、一方の移動点から他方の移動点まで移動した場合に、一方の移動点から予め定める時間間隔毎に変化するであろうロボットの関節形態ごとに、ステップｄ１４で示す静的干渉チェックを繰返す。静的干渉チェックを繰返すうちで一度でもロボットが進入禁止領域に進入する判断すると、ステップｆ１３に進む。
【０１２８】
ステップｆ１３では、以前にステップｆ３で求められた上流側の移動点の解候補を除外し、ステップｆ３に戻る。ステップｆ３では、ステップｆ１３によって、除外された解候補を除いて、上流側の移動点の残余の解候補のうちから、最も累積評価値の高い解候補を抽出し、ステップｆ１２に進む。
【０１２９】
またステップｆ１２において、静的干渉チェックを繰返すうちで一度もロボットが進入禁止領域に進入しないと判断すると、ステップｆ４に進む。そしてステップｆ４で、干渉することなく、最も累積評価値の高い解候補の組合せを記憶する。その他の構成については、図９に示す動作と同一である。第３実施形態によれば、動的干渉の可能性がある解候補の組合せを採用せずに、障害物と衝突しない実用可能な解候補の組合せについて記憶部２２に記憶することになる。第３実施形態では、その他の手順については、第２実施形態と同様である。
【０１３０】
大略的に、ステップｄ４において解候補を求める計算量（Ｄ４α）、ステップｄ１４において静的干渉チェックする計算量（Ｄ１４α）、ステップｆ３において評価の最も高い累積評価値を抽出する計算量（Ｆ３α）、ステップｆ１２において動的干渉チェックする計算量（Ｆ１２α）、の順番で計算負荷が大きくなる（Ｆ１２α＞Ｆ３α＞Ｄ１４α＞Ｄ４α）。
【０１３１】
またステップｄ１４において静的干渉チェックを行う計算対象の数（Ｄ１４β）は、ステップｄ５によって絞り込まれた解候補について行われるので、ステップｄ４において解候補を求める計算対象の数（Ｄ４β）よりも少ない。またステップｄ４において評価の最も高い累積評価値を抽出する計算対象の数（Ｄ４β）は、静的干渉チェックによってさらに絞り込まれた計算対象について行われる。またステップｆ１２において動的干渉チェックを行う計算対象の数（Ｆ１２β）は、ステップｄ４においてさらに絞り込まれた計算対象について行われる。したがって計算対象の数は、演算工程が進むにつれて絞り込まれる（Ｄ４β＞Ｄ１４β＞Ｆ３β＞Ｆ１２β）。
【０１３２】
以上のように本実施形態では、第１実施形態および第２実施形態と同様の効果を得ることができる。また本実施形態では、移動点間を手先が移動する間についても、障害物を衝突することを防ぐことができる、最適な移動点毎の解候補の組合せを求めることができ、さらに実用的な解候補を求めることができる。また本実施の形態では、計算負担の小さい演算は大量に実施してデータベース化し、計算負担の大きい演算は前の工程で絞り込まれた計算対象についてのみ実行する。これによって計算負担の大きい演算を繰返す回数を抑えて、効率よく演算を行うことができ、計算時間の増加を抑えることができる。
【０１３３】
またデータベースに以前に演算した全ての解候補および全ての評価値を記憶しておくことで、最適な移動点毎の解候補を演算した後に、作業者によって障害物情報が再入力された場合または進入禁止領域が更新された場合など、記憶手段に記憶される関節形態を用いて、解候補を再抽出することができ、障害物情報が入力される毎に解候補および全ての評価値を演算する場合に比べて、短時間で解候補を求めることができる。また第３実施形態の変形例として、第２実施形態によって求められた移動点毎の最適な解候補の組合せについて、動的干渉チェックを行ってもよい。もし動作干渉チェックでロボットと障害物とが干渉することがわかったら、その解候補の組合せを除いて再び最適な解候補の組合せを求める。このようにすることで、移動点毎の最適な解候補の組合せを短時間で求めることができる場合がある。
【０１３４】
上述した実施の形態におけるロボットは、手先を始点から終点に移動させるとした。これに対して、本発明の教示支援装置は、各移動点を結ぶ環状の循環移動経路に沿うように、ロボットが手先を循環移動させる場合にも適用することができる。たとえばロボットは、第１移動点ｐ１、第２移動点ｐ２、第３移動点ｐ３、第４移動点ｐ４、第１移動点ｐ１と順に進んで、循環移動経路を一周する。また本実施の形態では、理解を容易にするために、ロボットの周囲に障害物が存在しない場合について説明する。
【０１３５】
図２２は、ロボットが手先を循環移動経路に沿って循環移動させる場合における、演算部２１の動作を示すフローチャートである。また図２３は、移動点毎の解候補の最適な組合せの演算手順を説明するための図である。
【０１３６】
ステップｈ０では、評価値を求めるために必要な情報が作業者から入力部２３に入力され、入力部２３が必要な情報を演算部２１に与えると、ステップｈ１に進み、動作を開始する。手先が循環移動経路を移動する場合、作業者は、上述した図３に示すステップｂ１〜ｂ３で与える情報の他に、さらに複数の循環移動点ｐ１〜ｐ４のうち、１つを始点ｐ１として入力し、始点ｐ１に対して移動方向上流側の循環移動点を終点ｐ４として入力する。
【０１３７】
ステップｈ１では、演算部２１は、作業者から入力された情報に基づいて、複数の移動点のうちから、始点と終点とを選択し、ステップｈ２に進む。本実施の形態では、第１移動点ｐ１を始点として選択し、第４移動点ｐ４を終点として選択する。したがって演算部２２は、始点および終点を選択する選択手段となる。ステップｈ２では、ステップｈ１で選択した始点ｐ１を移動方向最上流の移動点とし、終点ｐ４を移動方向最下流の移動点として、上述した図５に示すステップｄ１〜ｄ１０、図６に示すステップｅ１〜ｅ９、図９に示すステップｆ１〜ｆ７に示す動作を順に行い、図２３に示すように、終点ｐ４における各解候補ｃ４について累積評価値Ｔ４_ｋ_Ｊをそれぞれ関連付けると、ステップｈ３に進む。
【０１３８】
ステップｈ３では、終点ｐ４における解候補ｃ４のうちで、１番目の番号が関連付けられる解候補ｃ４_１を選択し、ステップｈ４に進む。ステップｈ４では、直前に選択した終点ｐ４における解候補ｃ４_ｋから移動方向上流側に累積評価値の最も高い組合せとなる解候補を順に辿って求められる、始点ｐ１における解候補ｃ１を選択し、ステップｈ５に進む。この場合、ステップｈ３で選択される始点ｐ１の解候補ｃ１は、終点ｐ４の１つの解候補ｃ４に対して、１つだけの関係となる。
【０１３９】
ステップｈ５では、直前に選択した終点ｐ４における解候補ｃ４と、直前に選択した始点ｐ１における解候補ｃ１との評価値を求め、ステップｈ６に進む。たとえば図２３では、終点ｐ４の第１解候補ｃ４_１が示す関節形態から、始点ｐ１の第４解候補ｃ１_４が示す関節形態まで手先を移動するための移動時間を評価値として演算する。次に、その評価値を、終点ｐ４の解候補ｃ４に関連づけられる累積評価値に加算した値を、直前に選択した終点Ｐ４と始点ｐ１との２つの解候補に関連付けられる循環累積評価値として求める。次に、求めた循環累積評価値を２つの解候補と関連させて、記憶部２２に記憶し、ステップｈ６に進む。
【０１４０】
ステップｈ６では、終点ｐ４における各解候補のうちから、まだ選択していない解候補が存在するか否かを判断する。まだ選択していない解候補が存在すると判断すると、ステップｈ９に進む。ステップｈ９では、まだ終点における解候補のうちから、まだ選択していない解候補を選択し、ステップｈ４に戻る。
【０１４１】
ステップｈ６において、終点ｐ４における全ての解候補をすでに選択したとすると、ステップｈ７に進む。ステップｈ７では、図２２に示すように、終点Ｐ４と始点ｐ１との２つの解候補の組合せごとに、循環累積評価値がそれぞれ関連付けられている。演算部２２は、終点Ｐ４と始点ｐ１との解候補の組合せのうちで、循環累積評価値が最も高い解候補を抽出し、ステップｈ８に進む。
【０１４２】
ステップｈ８では、ステップｈ７で抽出した始点ｐ１の解候補から、ステップｈ７で抽出した終点ｐ４の解候補に移動方向に進むまでに、経由点の解候補に関連する移動点毎の解候補を順次抽出し、抽出した移動点毎の解候補の組合せを、最適な解候補の組合せとして記憶する。具体的には、記憶部２２に記憶される循環累積評価値に関する情報に基づいて、ステップｈ７で抽出した始点ｐ１の解候補と組合わされた場合に、累積評価値の最も高くなる移動点毎の解候補を順次抽出する。
【０１４３】
言い換えると、ステップｈ７で抽出した終点ｐ４の解候補を抽出し、そして抽出した終点ｐ４の解候補から移動方向上流側に遡って、移動点間毎に評価の最も高い累積評価値の組合せの解候補を順次辿り、辿った解候補を移動点毎に順次抽出する。このようにして移動点毎に抽出された解候補の組合せが、全体的な評価値の最も高い解候補の組合せ、すなわち最適な解候補の組合せとなる。このようにして循環移動経路における最適な解候補の組合せを抽出すると、ステップｈ８に進み、最適な解候補の組合せの演算動作を終了する。そして教示支援装置２０は、循環移動経路における移動点毎の最適な解候補の組合せを出力表示させる。
【０１４４】
本実施の形態では、ステップｈ６で、終点ｐ４から始点ｐ１に移動した場合の評価値を求めることで、手先を始点に位置合せした関節形態と、その状態から循環移動経路を一周して再び手先を始点に位置合せした関節形態とを同じにしたうえで、移動点毎の解候補の最適な組合せを演算することができる。これによって始点を基準として一周した後で、速やかに再び始点から移動を開始することができ、手先を循環移動経路に沿って円滑に周回させることができる。
【０１４５】
また上述したステップｈ１では、作業者が複数の移動点ｐ１〜ｐ４のうちから始点ｐ１と終点ｐ４を入力するとしたが、演算部２２が始点ｐ１と終点ｐ４とを決定してもよい。この場合、演算部２２は、移動点のうちの１つを始点として選択し、その始点の移動方向上流側の移動点を終点とする。また循環移動経路の場合についても、障害物を考慮して移動点毎の解候補の組合せを演算することが可能である。
【０１４６】
図２４は、循環移動経路を考慮した演算結果と、演算前との移動時間の変化のシミュレーション結果をそれぞれ示すグラフである。図２４には、作業者によって入力された初期状態の移動点毎の関節形態の組合せで、手先を順次移動させた場合の移動点間の移動時間を破線で示す。また教示支援装置２０によって演算された最適な移動点毎の関節形態の組合せにおける移動点間の移動時間を実線で示す。
【０１４７】
上述したように本実施の形態では、教示支援装置２０は、循環移動経路を手先を移動させるにあたって、一周前と一周後の関節形態を同じにしたうえで、移動点間ごとに最大移動関節の移動量が最も小さくなるような、関節形態の組合せを出力する。出力した演算結果の関節形態の組合せを適用することによって、初期状態に比べて全体的な移動時間を短縮することができる。本実施形態では、演算結果を採用することで、初期状態に比べて、第１移動点から第２８移動点に達して、再び第２８移動点から第１移動点に達するまでの総合移動時間を３８．６％短縮することができた。このように演算結果を用いることで、ロボットの移動時間を大幅に短縮することができ、ロボット動作時の作業効率を向上することができる。また周囲に障害物がある場合も同様にして求めることができる。
【０１４８】
図２５は、循環移動経路において解候補の組合せを求める他の手順を説明するための図である。演算部２１は、各移動点のうちで任意の１つを始点として選択した場合において、終点から始点に移動した場合の累積評価値を求める。次に各移動点のうちで既に選択した移動点以外の移動点を始点として選択した場合において、終点から始点に移動した場合の累積評価値を求める。このような動作を移動点の数だけ繰返して、各移動点がそれぞれ始点として採用された場合における、終点から始点に移動した場合の循環累積評価値をそれぞれ求める。それらのなかで、最も循環累積評価値の高いものを抽出して、循環移動経路における移動点毎の解候補の組合せとする。これによってさらに最適な移動点毎の解候補の組合せを求めることができる。
【０１４９】
たとえば４つの移動点が存在する場合、第１〜第４移動点ｐ１〜ｐ４をそれぞれ始点とした場合について、図２２に示す手順をそれぞれ行い、それらのなかで終点から始点まで移動するのに、最も循環累積評価値が高いものを出力する。これによってさらに最適な移動点毎の解候補の組合せを求めることができる。ここで、始点として選択される移動点と、終点として選択される移動点は、実際に手先を移動開始させる始点と、手先を移動終了する終点とにそれぞれ一致しなくてもよい。
【０１５０】
また本実施の形態では、手先を循環移動経路に沿って移動させるとしたが、往路と復路との各移動点で関節形態を等しくする必要がない場合には、予め定められる移動経路を往復移動する場合も同様にして、移動点毎の解候補の最適な組合せを求めることができる。また往路と復路との各移動点で関節形態を等しくする必要がある場合には、往路または復路のいずれかの経路のうちの始点から終点までで最適な解候補の組合せを求めることによって、対応することができる。
【０１５１】
図２６は、本実施の形態の教示支援装置によって関節形態が演算される多関節ロボットを示す正面図である。多関節ロボットは、７自由度を有するロボットであり、６つのリンク体３〜８と、隣接する２つのリンク体を回転自在に連結する７つの関節９〜１５とを有する。各リンク体３〜８は、それぞれ連結されて直列状に延びるアーム構成体１６を構成する。また多関節ロボット１は、アーム構成体１６の基端部に連結される基端部に連結される基台１７と、アーム構成体１６の先端部に連結されるエンドエフェクタ１８である手先とを有する。基台１７は、壁部または床部などの固定部に予め固定される。ロボットは、基台１７に設定される基準座標を有し、基準座標に従って手先を任意の位置姿勢に移動させる。
【０１５２】
各関節９〜１５は、同軸関節および傾斜関節のうちのいずれか一方である。同軸関節は、隣接するリンク体を、その各リンク体の軸線と同軸の回転軸線まわりに回転自在に連結する。また傾斜関節は、隣接する２つのリンク体のうちの一方を、各リンク体の軸線に対して所定の角度傾斜する回転軸線まわりに円錐回転自在に連結する。傾斜関節軸の回転軸線は、連結する各リンク体の軸線に対して４５度で傾斜する。
【０１５３】
各関節９〜１５は、基台１７から第１〜第７関節９〜１５の順で並ぶ。具体的には、第１関節９、第５関節１３および第７関節１５は、同軸関節である。また第２関節１０、第３関節１１、第４関節１２および第６関節１４は、傾斜関節である。各関節９〜１２の角度位置が移動することで、アーム構成体１６は、各リンク体３〜６のそれぞれの軸線が同軸に配置されて、一直線状に延びる状態に変形可能に構成される。各リンク体一直線状に延びた状態では、第２関節１０と第３関節１１との回転軸線が平行となり、第３関節１１と第４関節１２との回転軸線が垂直となる。また本実施形態のロボット１は、第５関節１３と、第６関節１４と、第７関節１５との回転軸線が一点となる３軸交点Ｐで交わる。このように直列方向一端部から直接方向他端部側に向かって連続して並ぶ３つの関節のそれぞれの回転軸線が３軸交点Ｐで交わる。また本実施の形態では、第１関節９が冗長関節として設定される。
【０１５４】
多関節ロボット１は、各関節９〜１２の角度位置を移動させることで、アーム構成体１６を蛇のように変形させ、可動範囲内で、手先１８を任意の位置および任意の姿勢に位置決め可能である。また多関節ロボット１は、７自由度を有するので、手先の位置および姿勢を位置決めした状態で、各関節の角度位置の取り得る組合せが無数に存在する。各リンク体３〜８は、個別に回転駆動するモータをそれぞれ内蔵する。各モータは、関節が連結する２つの部材をその回転軸線まわりに予め定める任意の角度に変位可能に構成される。これによってモータによって、関節によって連結される２つのリンク体のうち、一方のリンク体は、他方のリンク体に対して関節の回転軸線まわり回転駆動される。アーム構成体１６が一直線状に延びる状態を基準状態として、各関節に連結されるリンク体の角変位量を、関節の角度位置とする。
【０１５５】
またロボット１は、制御装置２によって制御される。制御装置２は、入力部と、中央演算処理部と、出力部とを有する。制御装置２によって関節ごとに設けられるモータが制御されることによって、各リンク体を互いに関節の角変位軸線まわりに角変位させて、ロボットの形態を変化させて、手先を目的とする位置姿勢に位置決めすることができる。ここでロボットの形態とは、ロボットの形状および姿勢などの外形的形態を意味する。
【０１５６】
本実施の形態のロボット１に対して、データ作成部３０が行うステップｄ４の逆変換実行工程について説明する。本実施の形態のロボット１は、各関節９〜１５の構造および各リンク体３〜８の長さが既知である。これによって、手先１８が予め定める位置および姿勢に位置決めされるときには、３軸交点Ｐの３次元位置を一意的に決定することができる。この場合、第１〜第４関節９〜１２の角度位置を変数として、３軸交点ＰのＸ座標位置、Ｙ座標位置およびＺ座標位置をそれぞれ求めるための３つの順変換関係式と、冗長関節である第１関節９の角度位置と、３軸交点Ｐの３次元位置とに基づくことによって、３軸交点Ｐを３次元位置に位置決め配置可能な、第１〜第４関節９〜１２を解析的に決定することができる。
【０１５７】
具体的には、第１〜第４関節９〜１２の角度位置を変数とする、３軸交点Ｐの３次元位置を求めるための３つの連立方程式に、冗長関節である第１関節９の角度位置と、３軸交点Ｐの３次元位置とを代入することで、３つの未知数を有する３元連立方程式を導くことができ、３元連立方程式を解くことで、３軸交点Ｐを３次元位置に位置決め配置可能な、第１〜第４関節９〜１２を解析的に決定することができる。また上述した３元連立方程式を変形させることで、第１関節９の角度位置と、３軸交点Ｐの３次元位置とを変数として、第２〜第４関節１０〜１２の角度位置を求める関係式を導くことができる。
【０１５８】
また第２〜第４関節１０〜１２の角度位置のいずれかの解を求めることができない場合、ロボットの可動限界を超えており、機構的解が存在しないことを意味する。またロボットの可動余裕を考慮して、可動限界に対して予め定める所定角度、手前に設定される制限角度位置から可動限界側に角度位置が位置する場合にも機構的解が存在しないと判断してもよい。
【０１５９】
第２〜第４関節１０〜１２の角度位置が、可動限界に達していないと判断されると、既に決定した第１〜第４関節９〜１２の角度位置と、手先の位置および姿勢とに基づくことによって、逆変換を行うことによって、第５〜第７関節１３〜１５の角度位置を解析的に決定することができる。具体的には、第１〜第４関節９〜１２の角度位置から、第４リンク体６の姿勢を決定し、決定した姿勢に基づいて、手先が予め定める位置および姿勢となる場合の第５〜第７関節１３〜１５の角度位置を一意に決定することができる。
【０１６０】
したがって上述したデータ作成部３０は、（１）手先の位置姿勢から３軸交点Ｐの３次元位置を求めることが可能な方程式を表わす計算プログラムと、（２）冗長関節の角度位置と、３軸交点Ｐの３次元座標とに基づいて、第１〜第４関節９〜１２の角度位置を求めることが可能な方程式を表わす計算プログラムと、（３）第１〜第４関節９〜１２の角度位置の解が存在するか否かを判断する計算プログラムと、（４）第１〜第４関節９〜１２の角度位置と手先の位置姿勢とから、第５〜第７関節１３〜１５の角度位置を求めることが可能な方程式を表わす計算プログラムとを、それぞれ記憶する。データ作成部３０は、上述した各計算プログラム（１）〜（４）を順に実行することによって、移動点における手先の位置姿勢と、第１関節９の角度位置とを選択した状態で、第１〜第７関節９〜１５のそれぞれの角度位置を演算することができる。
【０１６１】
このように、本実施の形態では、第１関節〜第４関節のうちのいずれかを冗長関節として選択することで、解候補を解析的に求めることができる。これに対して、第５〜第７関節のうちの１つを冗長関節として選択すると、解候補の解析解を求めることができない。また第１〜第３関節部で３軸交点Ｐを構成した場合には、第４〜第７関節のうちのいずれかを冗長関節として選択することで、解候補を解析的に求めることができる。
【０１６２】
すなわち、リンク体を介して互いに角変位可能に連結されて直列に並ぶ７つの関節を含み、７つの関節９〜１５のうちで直列方向一端部から直列方向他端部に向かって並ぶ３つの関節の回転軸線が一点で交差する３軸交点を形成する３つの交点形成関節を有する７自由度の多関節ロボットにおいて、アーム構成体の一端部に対する他端部の位置および姿勢が固定条件として入力される場合に、３つの交点形成関節以外となる４つの注目する関節のうち１つが、冗長関節として入力されることで、形態変更動作において各関節９〜１５の角度を解析的に求めることができる。
【０１６３】
たとえば本実施の形態では、（１）式に、第１関節９の角度位置ｑ１を代入することで、第４関節１２の角度位置ｑ４を求めることができる。
【０１６４】
【数１】
0004693643.tif 000005
【０１６５】
（１）式において第１〜第４関節９〜１２の角度位置をそれぞれｑ１〜ｑ４とする。また第１〜第３リンク体３〜５の長さをそれぞれＬ１〜Ｌ３とし、第４関節１２から３軸交点Ｐまでの距離をＬ４とする。またａｒｃｃｏｓは、逆余弦関数（アークコサイン関数）を意味する。またａｒｃｃｏｓに付されるプラスマイナスの符号を離散形態符号と称する。
【０１６６】
第４関節１２の角度位置ｑ４が１つしかない場合、第４関節の角度位置は、可動限界である特異点に位置する。またアークコサインの変数の絶対値が１を超える場合、解が存在せず、可動限界を超えて、機構解が存在しないことを判断することができる。第４関節１２の角度位置が求まると、第３関節１１の角度位置と、第２関節１０の角度位置とを順次求めることができ、さらに第５〜第７関節１２〜１５の角度位置を求めることができる。また第３関節の角度位置、第６関節の角度位置を求める方程式にも、離散形態符号がそれぞれ付与されるので、多関節ロボットは、第１関節の角度位置が１つに決定された場合に、８通りの第２〜第７関節の角度位置の組合せが存在する。データ作成部３０は、図５における離散形態を選択するときに、この離散形態符号の正負のいずれかが選択されることによって、１つの冗長関節の角度位置ごとに、８通りの組合せのうちから１つを求めることができる。
【０１６７】
また第１関節９と第２関節１０との間の距離をＬ１とし、第２関節１０と第３関節１１との間の距離をＬ２とし、第３関節１２と第４関節１３との間の距離をＬ３とし、第１関節９から第４関節１３との間の距離をＬｗとすると、Ｌｗ＋Ｌ２＞Ｌ１＋Ｌ３、Ｌｗ＞Ｌ２、Ｌ１＞Ｌ３、Ｌｗ−Ｌ２＜Ｌ３−Ｌ１である場合には、ロボットは、回転揺動状態となる。回転揺動状態では、第１関節を冗長関節として、その角度範囲を変化させたとても、第１関節の角度位置が可動限界に達してしまい、ロボットが取り得る角度位置の全てを計算できない場合がある。たとえば第１関節９と第２関節１０とのうちのいずれか一方と、第３関節１１と第４関節１２とのうちのいずれか一方との２つを冗長関節として選択することで、ロボットが回転揺動状態となったとしても、ロボットが取り得る全ての範囲を計算することができる。ロボットは、その変形形態毎によってＬｗが変化するので、変形形態によっては、回転揺動状態に陥る可能性がある。
【０１６８】
たとえばデータ作成部３０は、第１関節９と第２関節１０とのうちのいずれか一方を選択する場合と、第３関節１１と第４関節１２とのうちのいずれか一方とを選択する場合の２通りで、図５に示す動作を行うことによって、変形形態が回転揺動状態に陥ったとしても、求められる解候補の数を増やすことができ、より最適な解候補の組合せを求めることができる。
【０１６９】
このように注目する複数（Ｓ１）の関節のうちで、冗長関節の数（Ｓ２）を除く残余の関節の数（Ｓ１−Ｓ２）が、ロボットに設定される移動対象部位を、予め定める位置および姿勢の少なくともいずれかを含む拘束条件に従って拘束される数（Ｔ）と一致するように、注目する複数の関節の少なくとも１つが冗長関節として選択することで、冗長関節の角度と、拘束条件とに基づいて、複数の関節の角角度を変数として設定部分の位置または姿勢を求めるための関係式を解くことで、拘束条件で移動対象部位を拘束した場合の各関節の角度位置を解析的に求めることができる。解析的に解候補を求めることで、入力された移動点に対して手先がずれることが防がれ、正確に手先を移動経路にそって移動させることができる。
【０１７０】
また上述した実施形態では、解析的に逆変換を行う場合について説明したが、ステップｄ４の逆変換実行動作を行うにあたって、近似解を用いてもよい。この場合、データ作成部３０は、手先の移動量と、各関節の角度との関係を示すヤコビ行列に基づいて、冗長関節である第１関節の角度位置を変化させた場合に、手先がほぼ固定位置となるような残余の関節の角度位置を求めて、解候補を求めてもよい。
【０１７１】
図２７は、他の形態のロボットを示す図である。上述した各実施形態の教示支援装置２０は、傾斜関節を有するロボット以外における移動点毎の関節形態の最適な組合せを求めることも可能である。たとえば図２７に示すように、垂直関節と同軸関節とで構成され、傾斜関節を有しない６軸多関節ロボット１００とを予め定める走行軸に沿って動作させる走行装置１０１とを含む７軸ロボットシステムであっても同様に、移動点毎の最適な関節形態の組合せを求めることができる。また本実施形態では、一軸冗長ロボットについて説明したが、２軸以上の冗長性を有するロボットであっても、適用可能である。この場合、複数の冗長関節の角度位置が選択されることによって、解候補を求めることができる。
【０１７２】
そのほか垂直多関節型の６軸ロボットにも適用可能である。たとえば手先の３次元位置が拘束条件として設定され、手先の姿勢に制限がない場合などで、手先を予め定める数の自由度で拘束した場合に、ロボットの取り得る関節形態が複数ある場合などに適用可能である。
【０１７３】
このように手先の３次元位置と３次元姿勢のうちのいずれか１つが拘束されないような場合のほか、ロボットに複数の離散形態が存在する場合には、手先の３次元位置および３次元姿勢が全て拘束されても、解候補が複数存在することになるので、広い意味で本発明を適用することができる。たとえば垂直多関節６軸ロボットには、８種類の離散形態があるので、そのロボットの位置および姿勢が拘束されても、本発明を適用することで、１つの移動点あたり８とおりの解候補のなかから最適な解候補の組合せを演算することができる。したがって７つ以上の関節を有するロボットについて特に効果が大きいが、６つ以下の関節を有するロボットであっても、同様の効果を得ることができる。
【０１７４】
以上のような各本実施の形態は、発明の例示に過ぎず、発明の範囲内において構成を変更することができる。たとえば教示支援装置２０は、オフラインティーチング、すなわちロボット１を可動させずに、移動点毎の解候補の組合せに従って動作した場合の関節形態の変化を表示装置に表示するとしたが、オンラインティーチングに用いられてもよい。すなわち教示支援装置２０の出力結果を、ロボット１の制御装置に入力してもよい。またロボット制御装置に、教示支援装置２０の機能が盛り込まれていてもよい。これによってロボットを、教示支援装置によって決定された解候補の組合せに従って動作させることができる。実際に教示支援装置によって演算された演算結果でロボットを動作させることによって、作業者は、移動点毎の解候補の組合せの合否を判断することができる。また演算手順は一例であって、演算可能であれば適宜手順を変更してもよい。
【０１７５】
また本実施の形態では、解候補の組合せを評価するにあたって、最大移動関節の移動量δｍａｘから求められる移動時間（δｍａｘ／ｖ）を評価基準としたが、２つの解候補に基づいた他の計算式を評価基準としてもよい。たとえば２つの解候補における各関節の角度位置の偏差（δ１〜δ７）にそれぞれ速度に関する定数Ｋｉを乗算した値のうちで最大となる値（δｍａｘ＝ｍａｘ｜Ｋ１・δ１，Ｋ２・δ２，…Ｋ６・δ６，Ｋ７・δ７｜）を評価基準としてもよい。ここで速度に関する定数Ｋｉは、各関節に設定される最大速度および加減速度を考慮した値である。これによってより正確な移動時間を評価基準とすることができる。また各関節部のうちで注目する関節の角度位置の偏差を評価基準としてもよい。
【０１７６】
また評価基準は、ヤコビ行列Ｊを評価基準として用いてもよい。本実施の形態では、ヤコビ行列Ｊは、移動方向上流側の移動点の１つの解候補から移動方向下流側の１つの解候補へ関節形態を変化する場合に、各関節の角度偏差を手先の３次元位置変化に変換する行列である。この場合、評価基準として、２つの解候補の組合せからそれぞれ求められる各ヤコビ行列が最大となるような形態を選ぶ。このように評価基準を決定することによって、手先をどの方向に対しても滑らかな動きが実現できるようにすることができる。
【０１７７】
本実施の形態では、ヤコビ行列Ｊは、第１〜第７関節Ｊｔ１〜Ｊｔ７の角度位置変化δｑ１〜δｑ７を代入することで、手先の３次元位置変化（δＰｘ，δＰｙ，δＰｚ）を演算する変換行列であって、次式によって表わされる。
δＰ＝Ｊ・δＱ
δＰ＝（δｐｘ，δｐｙ，δｐｚ）Ｔ
δＱ＝（δｑ１，δｑ２，δｑ３，δｑ４，δｑ５，δｑ６，δｑ７）Ｔ
ここで、δｐｘは手先のＸ座標位置変化、δｐｙは手先のＹ座標位置変化、δｐｚは手先のＺ座標位置変化を示す。この場合、ヤコビ行列Ｊは、７行×３列の行列であって、上述した（１）式などの順変換式に基づいて求めることができる。ヤコビ行列の大きさは、ヤコビ行列Ｊと、ヤコビ行列Ｊを転置した行列ＪＴとを掛算した値の絶対値を求めることによって求められる。このようにしてヤコビ行列の大きさを求め、その大きさが最大となる２つの解候補の組合せを評価が最も高いものとする。
【０１７８】
またヤコビ行列Ｊは、第１〜第７関節Ｊｔ１〜Ｊｔ７の角度位置変化δｑ１〜δｑ７を代入することで、手先の３次元位置変化（δＰｘ，δＰｙ，δＰｚ）および３次元姿勢（δＰｒｘ，δＰｒｙ，δＰｒｚ）を演算する変換行列であってもよい。このようにヤコビ行列もまた、上述した演算式に限定されず適宜選択可能である。
【０１７９】
また評価基準は、２つの解候補に基づいて決定されるならば、移動時間に関する値以外であってもよい。たとえば２つの解候補における各関節の角度位置の偏差（δ１〜δ７）を合計した合計偏差Σδｉを評価基準とし、最も小さくなる組合せを探索してもよい。この合計偏差Σδｉが小さいと、ロボットを動作させる動作量が全体的に小さくなるので、手先を移動させるのに、電力消費量の最も少ない移動点毎の解候補の組合せを求めることができる。また各動作偏差のうちで、手先に比べて基台側の関節については、大きい重みをつけたものΣＸｉ・δｉを合計することによって、より現実的に電力消費量の最も少ない組合せを求めることができる。
【０１８０】
また移動時間、ヤコビ行列および電力消費量のほか、ロボットの精度、ロボットと障害物との余裕度などを評価基準としてもよい。このように本発明の評価基準は、２つの移動点の解候補を互いに用いて求められるものであれば、移動時間に限定されない。たとえば基台側の関節をあまり動かしたくないという評価基準、基台側の関節をなるべく動かしたいという評価基準などであってもよい。
【図面の簡単な説明】
【０１８１】
【図１】本発明の第１実施形態であるロボットの教示支援装置２０を示すブロック図である。
【図２】教示支援装置２０の動作の全体的な流れを示すフローチャートである。
【図３】図２に示すステップａ１における入力部２３の動作手順を示すフローチャートである。
【図４】図２に示すステップａ２におけるデータ作成部３０の動作手順を示すフローチャートである。
【図５】ステップｃ２において、データ作成部３０が全ての解候補を求める手順を示すフローチャートである。
【図６】ステップｃ３において、データ作成部３０が評価値を演算する手順を示すフローチャートである。
【図７】データ作成部３０によって求められるそれぞれの評価値を説明するための図である。
【図８】データ作成部３０によって記憶部２２に作成された移動時間ｔ（ｉ＋１）_ｋ_ｊのデータ構造を説明するための図である。
【図９】ステップａ３において、データ探索部３１が最適な解候補の組合せを演算する手順を示すフローチャートである。
【図１０】データ探索部３１によって求められる全体最適な解候補の組合せを説明するための図である。
【図１１】データ探索部３１によって記憶部２２に作成された累積評価値Ｔ（ｉ＋１）_ｋ_Ｊのデータ構造を説明するための図である。
【図１２】演算結果と演算前との移動時間の変化のシミュレーション結果をそれぞれ示すグラフである。
【図１３】図１２に関連した演算結果によるロボットの関節形態の変化を示す図である。
【図１４】図１２に関連した初期状態でのロボットの関節形態変化を示す図である。
【図１５】本発明の第２実施形態であるロボットの教示支援装置２０での入力部２３の動作手順を示すフローチャートである。
【図１６】第２実施形態でのステップｃ２において、データ作成部３０が全ての解候補を求める手順を示すフローチャートである。
【図１７】干渉チェックの方法を説明するための図である。
【図１８】障害物を回避する場合における、演算結果と演算前との移動時間の変化のシミュレーション結果をそれぞれ示すグラフである。
【図１９】図１８に関連した障害物を回避する演算結果によるロボットの関節形態の変化を示す図である。
【図２０】図１８に関連した障害物を回避する初期状態でのロボットの関節形態変化を示す図である。
【０１８２】
【図２１】第３実施形態での、ステップａ３において、データ探索部３１が最適な解候補の組合せを演算する手順を示すフローチャートである。
【図２２】ロボットが手先を循環移動経路に沿って循環移動させる場合における、演算部２１の動作を示すフローチャートである。
【図２３】移動点毎の解候補の最適な組合せの演算手順を説明するための図である。
【図２４】循環移動経路を考慮した演算結果と、演算前との移動時間の変化のシミュレーション結果をそれぞれ示すグラフである。
【図２５】循環移動経路において解候補の組合せを求める他の手順を説明するための図である。
【図２６】本実施の形態の教示支援装置によって関節形態が演算される多関節ロボットを示す正面図である。
【図２７】他の形態のロボットを示す図である。
【図２８】１つの冗長関節を有するロボットにおいて、ロボットの手先位置を２つの移動点間を移動させるにあたって、ロボットの各関節の角度位置を変化させた場合のロボット移動時間の変化を示すグラフである。
【符号の説明】
【０１８３】
１  多関節ロボット
２０  教示支援装置
２１  演算部
２２  記憶部
２３  入力部
２４  出力部
３０  データ作成部
３１  データ探索部
３２  移動点情報記憶部
３３  解候補記憶部
３４  評価値記憶部
３５  ロボット型式記憶部
【図１】
0004693643.tif 000006
【図２】
0004693643.tif 000007
【図３】
0004693643.tif 000008
【図４】
0004693643.tif 000009
【図５】
0004693643.tif 000010
【図６】
0004693643.tif 000011
【図７】
0004693643.tif 000012
【図８】
0004693643.tif 000013
【図９】
0004693643.tif 000014
【図１０】
0004693643.tif 000015
【図１１】
0004693643.tif 000016
【図１２】
0004693643.tif 000017
【図１３】
0004693643.tif 000018
【図１４】
0004693643.tif 000019
【図１５】
0004693643.tif 000020
【図１６】
0004693643.tif 000021
【図１７】
0004693643.tif 000022
【図１８】
0004693643.tif 000023
【図１９】
0004693643.tif 000024
【図２０】
0004693643.tif 000025
【図２１】
0004693643.tif 000026
【図２２】
0004693643.tif 000027
【図２３】
0004693643.tif 000028
【図２４】
0004693643.tif 000029
【図２５】
0004693643.tif 000030
【図２６】
0004693643.tif 000031
【図２７】
0004693643.tif 000032
【図２８】
0004693643.tif 000033