(57)【要約】【課題】経路生成に要する計算量を低減すること。【解決手段】演算部は、始点及び終点を、ロボットの各関節Ｊ１〜Ｊ６のパラメータ値で求める（Ｓ１）。演算部は、ロボットの関節を２つのグループにグループ分けしたうちの一方のグループに属する関節Ｊ４，Ｊ５，Ｊ６について、始点と終点との間で動作する関節の経路を拘束する関節補間経路（複数の拘束点）を求める（Ｓ２）。演算部は、２つのグループのうち他方のグループに属する関節Ｊ１，Ｊ２，Ｊ３の位置を座標軸とするコンフィギュレーション空間を構築する（Ｓ３）。演算部は、コンフィギュレーション空間における注目点と複数の拘束点とを組み合わせた点について、ロボットが障害物に干渉するか否かの干渉判定を行い、ロボットが障害物に干渉するのを回避する経路を探索する（Ｓ４〜Ｓ８）。【選択図】図３
2016040066.tif 000002
【特許請求の範囲】
【請求項１】
多関節のロボットの第１教示点と第２教示点とをつなぐ経路を、演算部により生成する経路生成方法において、
前記演算部が、前記第１教示点及び前記第２教示点を、前記ロボットの各関節のパラメータ値で取得する教示点取得工程と、
前記演算部が、前記ロボットの関節を２つのグループにグループ分けしたうちの一方のグループに属する関節について、前記第１教示点と前記第２教示点との間で動作する関節の経路を拘束する複数の拘束点を求める拘束工程と、
前記演算部が、前記２つのグループのうち他方のグループに属する関節の位置を座標軸とするコンフィギュレーション空間を構築するコンフィギュレーション空間構築工程と、
前記演算部が、前記コンフィギュレーション空間における注目点と前記複数の拘束点とを組み合わせた点について、前記ロボットが障害物に干渉するか否かの干渉判定を行い、前記ロボットが障害物に干渉するのを回避する経路を探索する探索工程と、を備えたことを特徴とする経路生成方法。
【請求項２】
前記演算部が、前記探索工程の結果、前記第１教示点と前記第２教示点とをつなぐ経路が求まらなかった場合、前記一方のグループに属する関節が変更前に複数存在することを条件として、前記一方のグループに属する関節のうちの一部の関節を、前記他方のグループに属するように変更して、再度、前記拘束工程、前記コンフィギュレーション空間構築工程及び前記探索工程を実行することを特徴とする請求項１に記載の経路生成方法。
【請求項３】
前記一方のグループに属する関節が、前記ロボットの手先側に互いに隣接して配置された関節であり、
前記他方のグループに属する関節が、前記ロボットの手先とは反対の根元に近い側に互いに隣接して配置された関節であることを特徴とする請求項１又は２に記載の経路生成方法。
【請求項４】
前記他方のグループに属する関節の数が３つ以上であることを特徴とする請求項３に記載の経路生成方法。
【請求項５】
前記探索工程における探索手法がＲＲＴ法であることを特徴とする請求項１乃至４のいずれか１項に記載の経路生成方法。
【請求項６】
多関節のロボットの第１教示点と第２教示点とを記憶する教示点記憶部と、
前記第１教示点と前記第２教示点とをつなぐ経路を生成する演算部と、を備え、
前記演算部は、請求項１乃至５のいずれか１項に記載の経路生成方法の各工程を実行することを特徴とする経路生成装置。
【請求項７】
多関節のロボットと、
前記ロボットの経路を生成する請求項６に記載の経路生成装置と、を備え、
前記経路生成装置により生成された経路に従って、前記ロボットの動作を制御することを特徴とするロボット装置。
【請求項８】
コンピュータに、請求項１乃至５のいずれか１項に記載の経路生成方法の各工程を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路生成方法、経路生成装置、ロボット装置、プログラム及び記録媒体に関し、特に、障害物を回避するロボットの経路を生成するものに関する。
【背景技術】
【０００２】
予めロボット手先の始点（第１教示点）と終点（第２教示点）とを教示しておき、その教示点間の障害物を回避する経路を生成する技術が注目されている。
【０００３】
そのような技術の一般的な枠組みとして、ロボットの関節の位置を軸にとる、ロボットの関節数と同次元の空間（以下、「コンフィギュレーション空間」又は「Ｃ−Ｓｐａｃｅ」という）を構築し、その空間で経路を探索する探索手法が提案されている。この種の探索手法としては、近似セル分割法やＲＲＴ（Rapidly-exploring  Random  Trees）法などがある。
【０００４】
関節数と同次元のコンフィギュレーション空間を用いた探索手法には、コンフィギュレーション空間の次元に比例して計算量とメモリの使用量が増大するという特徴がある。そのため産業用によく用いられる６軸垂直多関節のロボットなどに適用しようとすると、コンフィギュレーション空間の次元は６次元となり、その空間での経路の探索においては計算量とメモリの使用量が大きい。
【０００５】
このような中、関節数と同次元のコンフィギュレーション空間における過剰な計算を削減する方法として、特許文献１に示す技術が提案されている。特許文献１においては、現在位置において距離候補判断手段により選定された距離候補コンフィギュレーション点が干渉点でない場合には、直進モード経路を生成し、干渉点である場合には、境界追従モード経路を生成する、という方法をとっている。
【０００６】
また、６自由度の組立作業を遂行するための接触状態遷移をＣ−Ｓｐａｃｅを用いて簡単かつ短時間に計画・実行する方法として、特許文献２に示す技術が提案されている。特許文献２においては、位置のＣ−Ｓｐａｃｅと姿勢のＣ−Ｓｐａｃｅを分離して交互に計画を行い、目標状態に収束するまで計画を行う、という方法をとっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−５６０６４号公報
【特許文献２】特開平１０−７８８１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記特許文献１に記載の経路生成方法を用いて例えば６軸垂直多関節のロボットの経路生成を試みた場合、関節数と同次元（６次元）のコンフィギュレーション空間で探索を行うこととなる。このため、依然として計算量と、計算結果を保存するメモリの使用量が大きいという問題があった。
【０００９】
具体的には、例えば近似セル分割法を用いて６次元のコンフィギュレーション空間における障害物マップを作成しようとする場合、各軸の分割数を例えば１００とすると、干渉判定すべき格子点の数は１００の６乗個となる。１００の６乗回の干渉判定に要する計算量と、１００の６乗ビット（より実際的には、１ビットの情報をメモリに保存する際には１バイトの記憶容量が必要となるため、１００の６乗バイト＝１Ｔバイト）のメモリの使用量とを要していた。
【００１０】
また、前記特許文献２に記載の動作計画方法を用いて６軸垂直多関節のロボットの経路生成を試みた場合、位置・姿勢の個々の計画においては探索空間の次元が削減されるものの、目標状態に収束するまで繰り返し計算が必要である。このため、依然として計算量とメモリの使用量が大きいという問題があった。
【００１１】
そこで、本発明は、ロボットの経路生成に要する計算量を低減することを目的とするものである。
【課題を解決するための手段】
【００１２】
本発明の経路生成方法は、多関節のロボットの第１教示点と第２教示点とをつなぐ経路を、演算部により生成する経路生成方法において、前記演算部が、前記第１教示点及び前記第２教示点を、前記ロボットの各関節のパラメータ値で取得する教示点取得工程と、前記演算部が、前記ロボットの関節を２つのグループにグループ分けしたうちの一方のグループに属する関節について、前記第１教示点と前記第２教示点との間で動作する関節の経路を拘束する複数の拘束点を求める拘束工程と、前記演算部が、前記２つのグループのうち他方のグループに属する関節の位置を座標軸とするコンフィギュレーション空間を構築するコンフィギュレーション空間構築工程と、前記演算部が、前記コンフィギュレーション空間における注目点と前記複数の拘束点とを組み合わせた点について、前記ロボットが障害物に干渉するか否かの干渉判定を行い、前記ロボットが障害物に干渉するのを回避する経路を探索する探索工程と、を備えたことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、経路を拘束した関節の数だけ、探索空間となるコンフィギュレーション空間の次元が減縮されるので、ロボットの経路の生成に要する計算量が削減される。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態に係るロボット装置を示す模式図である。
【図２】本発明の第１実施形態に係るロボット装置の経路生成装置の構成を示すブロック図である。
【図３】本発明の第１実施形態に係る経路生成装置による経路生成方法を示すフローチャートである。
【図４】本発明の第１実施形態に係る経路生成方法の拘束工程にて、第４関節、第５関節及び第６関節の経路を関節補間により求めた例を示す図である。
【図５】本発明の第１実施形態に係る経路生成方法の探索工程を説明するための図である。
【図６】本発明の第１実施形態に係る経路生成方法の探索工程を説明するための図である。
【図７】コンフィギュレーション空間の次元数と、計算量・メモリ使用量の関係を表す図である。
【図８】本発明の第２実施形態に係る経路生成方法を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１６】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボット装置を示す模式図である。ロボット装置５００は、ワークの組立作業等の作業を行うロボット１００と、ロボット１００に通信・電力線４０１で接続されたロボットコントローラ２００と、ロボットコントローラ２００に通信線４０２で接続された経路生成装置３００と、を備えている。
【００１７】
ロボット１００は、例えば６軸垂直多関節のロボットである。ロボット１００は、垂直多関節型のロボットアーム１０１と、ロボットアーム１０１の先端に接続されたエンドエフェクタであるロボットハンド１０２と、を備えている。
【００１８】
ロボットアーム１０１は、作業台に固定されるベース部（基端リンク）１２０と、変位や力を伝達する複数のリンク１２１〜１２６と、を有している。ロボットハンド１０２がロボット１００の手先を構成し、ロボットアーム１０１のベース部１２０がロボット１００の手先とは反対側の根元を構成している。ベース部１２０及び複数のリンク１２１〜１２６は、複数の関節Ｊ１〜Ｊ６で旋回又は回転可能に互いに連結されている。つまり、ロボット１００においては、関節Ｊ１〜Ｊ６が、根元側から手先側に向かって第１関節Ｊ１，第２関節Ｊ２，第３関節Ｊ３，第４関節Ｊ４，第５関節Ｊ５，第６関節Ｊ６の順に配置されている。第１実施形態では、ロボット１００の関節とロボットアーム１０１の関節とは同義である。
【００１９】
また、ロボットアーム１０１は、各関節Ｊ１〜Ｊ６に設けられた、関節を駆動する関節駆動装置（不図示）を備えている。各関節Ｊ１〜Ｊ６に配置された不図示の関節駆動装置は、必要なトルクの大きさに合わせて適切な出力のものが用いられる。
【００２０】
ロボットハンド１０２は、ワークを把持する複数の把持爪（フィンガ）１０４と、複数の把持爪１０４を駆動する不図示の駆動部と、駆動部の回転角度を検出する不図示のエンコーダと、回転を把持動作に変換する不図示の機構とを有している。この不図示の機構は、カム機構やリンク機構などで必要な把持動作に合わせて設計される。なお、ロボットハンド１０２に用いる駆動部に必要なトルクは、ロボットアーム１０１の関節用と異なるが、基本構成は同じである。また、ロボットハンド１０２は、把持爪１０４に作用する反力を検出可能な不図示の力覚センサを有している。
【００２１】
ロボット１００の手先には、ツールセンターポイント（ＴＣＰ）が設定されており、教示点がタスク空間で設定（教示）される場合、その教示点は、世界座標系ΣでＴＣＰの位置及び姿勢を示す６つのパラメータ値で表現される。つまり、教示点が設定されるタスク空間は、世界座標系Σを基準に構成される空間であり、位置を示す座標軸Ｘ，Ｙ，Ｚ及び姿勢を示す座標軸ＲＸ，ＲＹ，ＲＺで定義される。
【００２２】
教示点がコンフィギュレーション空間（関節空間）で設定（教示）される場合、その教示点は、ロボット１００（ロボットアーム１０１）の各関節Ｊ１〜Ｊ６の関節角度（関節位置）を示すパラメータ値で表現される。つまり、教示点が設定されるコンフィギュレーション空間は、関節Ｊ１〜Ｊ６の角度（位置）を示す座標軸で定義される。なお、タスク空間で設定された教示点は、逆運動学計算により、コンフィギュレーション空間の教示点に変換することができる。
【００２３】
経路生成装置３００は、ロボット１００の経路（各関節Ｊ１〜Ｊ６の位置の同期した変化）を生成し、経路のデータを通信線４０２を通じてロボットコントローラ２００に送信することができる。
【００２４】
ロボットコントローラ２００は、経路生成装置３００から取得した経路のデータに従って、ロボット１００の動作、即ちロボット１００の各関節Ｊ１〜Ｊ６の位置（角度）を制御する。
【００２５】
図２は、ロボット装置５００の経路生成装置３００の構成を示すブロック図である。経路生成装置３００は、コンピュータで構成されている。経路生成装置３００は、演算部としてのＣＰＵ（Central  Processing  Unit）３０１を備えている。また、経路生成装置３００は、記憶部として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、ＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、経路生成装置３００は、記録ディスクドライブ３０５及び各種のインタフェース３１１〜３１４を備えている。
【００２６】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及び各種のインタフェース３１１〜３１４が、バス３２０を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２７】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する各種演算処理を実行させるためのプログラム３４０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３４０に基づいて経路生成方法の各工程を実行する。記録ディスクドライブ３０５は、記録ディスク３４１に記録された各種データやプログラム等を読み出すことができる。
【００２８】
インタフェース３１１には、キーボードやマウス等の入力装置４１１が接続されている。インタフェース３１２には、各種画像が表示されるモニタ等の出力装置４１２が接続されている。インタフェース３１３には、書き換え可能な不揮発性メモリ（例えばＵＳＢメモリ）や外付けＨＤＤ等の外部記憶装置４１３が接続されている。
【００２９】
インタフェース３１４には、ロボットコントローラ２００が接続されている。ＣＰＵ２０１は、始点（第１教示点）と終点（第２教示点）との間を繋ぐ経路を生成して、経路のデータをインタフェース３１４を介してロボットコントローラ２００に出力する。
【００３０】
始点及び終点の情報（パラメータ値）は、教示点記憶部であるＨＤＤ３０４に予め保存（つまり教示）されている。第１実施形態では、始点及び終点は、タスク空間を構成する世界座標系Σを基準とする３つの位置パラメータ値及び３つの姿勢パラメータ値からなる６つのパラメータ値で設定（教示）されている。
【００３１】
また、世界座標系Σにおけるロボット１００の設置位置・形状は既知であり、また障害物（不図示）の設置位置・形状も既知であるとする。つまり、世界座標系Σにおけるロボット１００の設置位置・形状のデータが、予めＨＤＤ３０４等の記憶装置に記憶（保存）されている。また、障害物（不図示）の設置位置・形状のデータも、予めＨＤＤ３０４等の記憶装置に記憶（保存）されている。これにより、ＣＰＵ３０１は、ロボット１００の各関節Ｊ１〜Ｊ６の位置（関節）の値が定まれば、ロボット１００が障害物に干渉（衝突）するか否かを判別することができる。
【００３２】
なお、ロボット１００においては、おおまかにいって、ロボット１００の根元側において互いに隣接する関節Ｊ１〜Ｊ３が手先の位置を決め、ロボット１００の手先側において互いに隣接する関節Ｊ４〜Ｊ６が手先の姿勢を決める、という性質がある。このため、障害物の回避に大きく寄与するのは、ロボット１００の手先の位置が決まる関節Ｊ１〜Ｊ３となる。
【００３３】
第１実施形態では、複数の関節Ｊ１〜Ｊ６を、関節Ｊ４〜Ｊ６からなるグループＧ１と、関節Ｊ１〜Ｊ３からなるグループＧ２との２つのグループにグループ分している。ＣＰＵ３０１は、２つのグループＧ１，Ｇ２のうち一方のグループＧ１に属する関節Ｊ４，Ｊ５，Ｊ６の経路を拘束（決定）する。つまり、関節Ｊ４，Ｊ５，Ｊ６の角度（位置）は、任意の値とするものではなく、決められた経路に設定する。第１実施形態では、グループＧ１に属する関節Ｊ４，Ｊ５，Ｊ６について、関節補間により経路を生成する。
【００３４】
２つのグループＧ１，Ｇ２のうち他方のグループＧ２に属する関節Ｊ１，Ｊ２，Ｊ３については、関節Ｊ１，Ｊ２，Ｊ３の位置（角度）を座標軸とする３次元のコンフィギュレーション空間を構築し、所定の探索手法により経路を探索する。探索手法としては、特に限定するものではないが、ＲＲＴ法や近似セル分割法などの探索手法を用いることが効果的である。以下、第１実施形態では、各種の探索手法の中で比較的演算量が少なくて済むＲＲＴ法である場合について説明する。
【００３５】
以下、第１実施形態のロボット１００の経路生成方法について説明する。図３は、本発明の第１実施形態に係る経路生成装置３００による経路生成方法を示すフローチャートである。ＣＰＵ３０１は、図２に示すプログラム３４０をＨＤＤ３０４から読み出し、プログラム３４０に従って、以下の経路生成方法の各工程を実行する。
【００３６】
まず、ＣＰＵ３０１は、始点（第１教示点）及び終点（第２教示点）におけるロボットの各関節Ｊ１〜Ｊ６の角度（位置）を取得する（Ｓ１：教示点取得工程）。第１実施形態では、始点及び終点は、タスク空間で規定したパラメータ値で設定（教示）されているので、ステップＳ１では、予め教示されたロボット１００の手先の始点と終点におけるロボット１００の各関節Ｊ１〜Ｊ６の角度のパラメータ値を求める。
【００３７】
具体的には、ＣＰＵ３０１は、ロボット１００の手先の始点と終点が、世界座標系Σにおける位置及び姿勢のパラメータ値で教示されているので、逆運動学と呼ばれる計算の解を求めることで、各関節Ｊ１〜Ｊ６の角度（位置）のパラメータ値に変換する。これにより、ＣＰＵ３０１は、始点及び終点をロボット１００の各関節Ｊ１〜Ｊ６のパラメータ値で取得する。
【００３８】
なお、ロボット１００の各関節Ｊ１〜Ｊ６の角度（位置）のパラメータ値が直接教示されている場合は、その関節値がそのまま解となる。つまり、ＣＰＵ３０１は、ＨＤＤ３０４から始点及び終点を読み出すことで、始点及び終点のパラメータ値を取得する。
【００３９】
以下、始点における関節Ｊ１〜Ｊ６の角度θ１〜θ６を、それぞれ角度θ１ｓ〜θ６ｓと呼称する。また、終点における関節Ｊ１〜Ｊ６の角度θ１〜θ６を、それぞれ角度θ１ｇ〜θ６ｇと呼称する。
【００４０】
次にＣＰＵ３０１は、グループＧ１に属する関節Ｊ４〜Ｊ６について、始点と終点との間で動作する関節Ｊ４〜Ｊ６の経路を拘束する（決め打ちする）複数の拘束点（補間点）からなる関節補間経路を求める（Ｓ２：拘束工程）。つまり、ＣＰＵ３０１は、関節Ｊ４〜Ｊ６の経路を、関節補間で求めた経路（複数の補間点）に拘束（決定）する。換言すれば、ＣＰＵ３０１は、関節Ｊ４〜Ｊ６の変位を、関節補間経路として与える。更に詳細に説明すると、関節Ｊ４〜Ｊ６のそれぞれの関節が始点の値（θ４ｓ，θ５ｓ，θ６ｓ）から終点の値（θ４ｇ，θ５ｇ，θ６ｇ）に向かってコンスタントに（時刻に対して直線的に）変位するよう、関節補間により経路として与える。グループＧ１に属する関節Ｊ４〜Ｊ６について経路を拘束したので、各関節Ｊ４〜Ｊ６の位置は、同期して変化する。
【００４１】
図４は、関節Ｊ４〜Ｊ６の経路を、関節補間により求めた例を示す図である。第１実施形態においては、始点から終点までの分割数Ｎ１を８とし、拘束点（始点及び終点を含む）を９つ生成している。このように、関節Ｊ４〜Ｊ６の経路（角度θ４〜θ６）を一意に定めている（拘束している）ので、関節Ｊ４〜Ｊ６については探索する必要がない。また、始点と終点における関節Ｊ４〜Ｊ６の値は所望の値となることが保証される。
【００４２】
なお、分割数Ｎ１は８としたが、８に限定するものではなく、正の整数であればよい。また、グループＧ１に属する関節Ｊ４〜Ｊ６の経路を、関節補間により決定する場合について説明したが、これに限定するものではなく、経路は、コンスタントに変位するようなものでなくても良く、任意に設定してもよい。
【００４３】
次に、ＣＰＵ３０１は、グループＧ２に属する関節Ｊ１〜Ｊ３の角度（位置）θ１〜θ３を座標軸とする３次元のコンフィギュレーション空間を構築する（Ｓ３：コンフィギュレーション空間構築工程）。
【００４４】
次に、ＣＰＵ３０１は、コンフィギュレーション空間における３次元の注目点と複数の３次元の拘束点とを組み合わせて６次元の点とする。そして、ＣＰＵ３０１は、６次元の各点について、ロボット１００が障害物に干渉（衝突）するか否かの干渉判定を行い、ロボット１００が障害物に干渉するのを回避する経路を探索する（Ｓ４〜Ｓ８：探索工程）。
【００４５】
以下、探索工程について、図３のフローチャートに沿って、図５及び図６を用いながら詳細に説明する。図５及び図６は、探索工程を説明するための図である。
【００４６】
図５（ａ）は、ステップＳ３にて構築した、グループＧ２に属する関節Ｊ１〜Ｊ３の角度（位置）θ１〜θ３を座標軸とするコンフィギュレーション空間を示す図である。ステップＳ３で構築したコンフィギュレーション空間は、角度θ１〜θ３を座標軸とする３次元のコンフィギュレーション空間であり、全ての関節の角度θ１〜θ６を座標軸とする６次元のコンフィギュレーション空間よりも次元数が少ない。初期状態では、始点（θ１ｓ，θ２ｓ，θ３ｓ）及び終点（θ１ｇ，θ２ｇ，θ３ｇ）が既存の点であり、３次元のコンフィギュレーション空間における障害物Ｏｂの状態は未知である（未知であるため点線で形状を表現している）。
【００４７】
ＣＰＵ３０１は、ステップＳ３の処理後、構築した３次元のコンフィギュレーション空間において、ランダムに点を生成する（Ｓ４）。図５（ｂ）には、構築したコンフィギュレーション空間に、ランダムに点５０１を生成した様子を図示している。
【００４８】
次に、ＣＰＵ３０１は、最近傍の点（ステップＳ４で生成した点５０１に最も近い既存の点（終点を除く））から一定距離の箇所に点を生成する（Ｓ５）。図５（ｃ）には、最近傍の点から一定距離の箇所に点６０１を生成した様子を図示している。ステップＳ５では、ＣＰＵ３０１は、ステップＳ４で生成した点５０１に最も近い既存の点を探す。図５（ｃ）の例では、始点が最近傍の点（最も近い既存の点）である。ＣＰＵ３０１は、始点から点５０１の方向に向かって一定距離の箇所に新たに点６０１を生成する。
【００４９】
次に、ＣＰＵ３０１は、最近傍の点と点６０１との間に障害物Ｏｂに干渉する点はないか否かを判断する（Ｓ６）。
【００５０】
以下、ステップＳ６における干渉チェックの手順について詳細に説明する。図６（ａ）に示すように、ステップＳ４で生成した点５０１に最も近い既存の点（始点）から、ステップＳ５で生成した点６０１までの間の直線上に十分細かい間隔で複数の点７０１を生成する。
【００５１】
各点７０１における干渉チェックについては次のように行われる。１つ点７０１を選んで注目点とすると、角度θ１〜θ３の値の組が求まる。しかし、角度θ１〜θ３の値の組だけでは、ロボット１００の姿勢が一意に定まらず、ロボット１００と障害物Ｏｂとの干渉計算ができない。
【００５２】
そこで、ステップＳ２にて関節補間経路に定めた角度θ４〜θ６の値（複数の拘束点）を組み合わせて干渉計算を行う。即ち、ある角度θ１〜θ３の値の組（ある注目点）に対して、角度θ４〜θ６の値が関節補間経路のどこにあっても干渉しないことを保証するために、関節Ｊ４〜Ｊ６の値（拘束点）を振って干渉計算を行う。第１実施形態においては、関節Ｊ４〜Ｊ６の関節補間経路は、始点と終点を含めて角度θ４〜θ６の値の組の９つの拘束点からなる。このため、ある角度θ１〜θ３の値の組の注目点に対して、９通りの角度θ４〜θ６の値の拘束点を組み合わせて干渉計算を行うことになる。
【００５３】
ＣＰＵ３０１は、干渉する点があれば（Ｓ６：Ｎｏ）、ステップＳ５にて生成した点６０１を削除して、ステップＳ４の処理に遷移する。ＣＰＵ３０１は、干渉する点がなければ（Ｓ６：Ｙｅｓ）、ステップＳ５にて生成した点６０１を既存の点として追加する。
【００５４】
次に、ＣＰＵ３０１は、点６０１を既存の点に追加した後、点６０１が終点に十分近づいたか否かを判断する（Ｓ７）。つまり、ＣＰＵ３０１は、ステップＳ５で生成した既存の点６０１と終点との距離が、予め設定した閾値以内となったら（Ｓ７：Ｙｅｓ）、ステップＳ８に遷移し、そうでなければ（Ｓ７：Ｎｏ）、ステップＳ４に遷移する。以上のステップＳ４〜Ｓ７を繰り返すことにより、図６（ｂ）に示す経路候補が作成される。これらの演算結果（経路候補）は、メモリ（例えば、ＨＤＤ３０４）に保存される。
【００５５】
ＣＰＵ３０１は、ステップＳ８では、終点から始点まで逆向きに辿り、図６（ｃ）に示すように３次元のコンフィギュレーション空間上での経路（太線）を求め、終了状態に遷移する。
【００５６】
以上、第１実施形態によれば、３次元のコンフィギュレーション空間で経路探索するので、従来のように、６次元のコンフィギュレーション空間で経路探索するよりも、計算量と、メモリ（例えば、ＨＤＤ３０４）の記憶領域の使用量が削減される。
【００５７】
図７は、探索空間であるコンフィギュレーション空間の次元数と、計算量・メモリ使用量の関係を表す図である。図７に示すように、ＲＲＴ法による探索手法による計算量とメモリ使用量のオーダーは、実験的にはほぼ探索空間の次元数に正比例することをシミュレーションにより確認できた。したがって、第１実施形態の場合、従来（６次元）の探索空間における探索に対して、計算時間がほぼ半減することが見込まれることが確認できた。
【００５８】
ロボット１００を用いた組み立て装置では、６次元のコンフィギュレーション空間においてＲＲＴ法による経路探索を行った場合、１動作あたり１分程度の時間を要していた。また、装置全体としては数十乃至数百の動作からなるため、トータルでは数十乃至数百分の時間を要していた。
【００５９】
これに対し、第１実施形態によれば、ロボット１００の関節数よりも低い次元のコンフィギュレーション空間を構築し、その中で経路を探索する。干渉判定の際には、グループＧ１に属する関節のパラメータ値は、拘束された経路に従って振って行われる。これにより、探索に要する計算時間が低減されるため、工程全体の設計時間を大幅に短縮できる。
【００６０】
また、第１実施形態では、グループＧ１に属する関節が、ロボット１００の手先側に互いに隣接して配置された関節Ｊ４，Ｊ５，Ｊ６であり、グループＧ２に属する関節が、ロボット１００の根元側に互いに隣接して配置された関節Ｊ１，Ｊ２，Ｊ３である。つまり、第１実施形態では、ロボット１００の姿勢に寄与するグループＧ１に属する関節Ｊ４〜Ｊ６の経路を拘束し、ロボット１００の位置に寄与するグループＧ２に属する関節Ｊ１〜Ｊ３の経路を探索するものである。これにより、ロボット１００が障害物に干渉（衝突）するのを回避する経路を効率よく探索することができ、より計算量を削減することができ、よりメモリ（ＨＤＤ３０４等）の使用量を削減することが可能となる。
【００６１】
特に、第１実施形態では、グループＧ２に属する関節の数が、３つ以上（第１実施形態では３つ）ある。よって、ロボット１００が障害物に干渉（衝突）するのを回避する経路を更に効率よく探索することができ、より計算量を削減することができ、よりメモリ（ＨＤＤ３０４等）の使用量を削減することが可能となる。
【００６２】
また、第１実施形態では、ステップＳ４の探索工程における探索手法がＲＲＴ法であるため、近似セル分割法と比較して計算量が少なく、計算量の削減効果が大きい。
【００６３】
以上の説明では、探索手法がＲＲＴ法である場合について説明したが、近似セル分割法であっても本発明は適用可能である。具体的には、関節Ｊ４〜Ｊ６の経路を拘束して近似セル分割法を用いてコンフィギュレーション空間における障害物マップを作成しようとする場合、コンフィギュレーション空間の次元は３次元となる。近似セル分割法の場合、コンフィギュレーション空間の次元数が増加すると、計算量（メモリ使用量）は指数的に増加する。
【００６４】
各関節の経路の分割数を１００とし、拘束された経路のステップ数を１００とすると、干渉判定すべき格子点の数は１００の３乗個となる。干渉判定に要する計算量は、１００の３乗×１００回となり、メモリ使用量は、１００の３乗ビット（より実際的には、１００の３乗バイト＝１Ｍバイト）となるので、従来よりも、計算量とメモリ使用量が少なくて済む。
【００６５】
［第２実施形態］
次に、本発明の第２実施形態に係るロボット装置の経路生成装置による経路生成方法について説明する。図８は、本発明の第２実施形態に係る経路生成方法を示すフローチャートである。なお、第２実施形態におけるロボット装置の構成は、上記第１実施形態と同様であるため、説明を省略する。
【００６６】
上記第１実施形態においては、関節Ｊ４，Ｊ５，Ｊ６の経路を拘束して、ロボット１００が障害物を回避するロボット１００の関節Ｊ１〜Ｊ６の経路を求めた。これは関節Ｊ４，Ｊ５，Ｊ６の自由度を奪うことと等価であり、干渉検知の観点からすると障害物を大きめに見積もって検知していることに相当する。その結果、経路が見つからないことがある。すなわち、何れかの関節の拘束を緩めれば解（経路）が見つかる可能性があることを示唆している。以下、所定の関節の経路を拘束して経路が見つからなかった場合に、関節の拘束を緩めて（解いて）経路を求める経路生成方法について、図８のフローチャートに基づいて説明する。
【００６７】
ステップＳ２１，Ｓ２２，Ｓ２３では、ＣＰＵ３０１は、図３のステップＳ１，Ｓ２，Ｓ３と同様の処理を行う。
【００６８】
ステップＳ２４では、ＣＰＵ３０１は、探索回数が上限（予め設定した一定回数）に達したか否かを判断する。つまり、最初に定めた拘束（第２実施形態では関節Ｊ４，Ｊ５，Ｊ６）で解（経路）が求まらない場合に無限ループに陥るのを防ぐため、探索回数に上限を設ける。
【００６９】
ＣＰＵ３０１は、探索回数が上限に達していなければ（Ｓ２４：Ｎｏ）、次のステップＳ２５に遷移する。ステップＳ２５〜Ｓ２９では、ＣＰＵ３０１は、図３のステップＳ４〜Ｓ８と同様、探索工程の処理を行う。
【００７０】
ＣＰＵ３０１は、探索工程中のステップＳ２５〜Ｓ２８を繰り返した結果、始点と終点とをつなぐ経路が求まらなかった場合、即ち探索回数が上限に達していれば（Ｓ２４：Ｙｅｓ）、解なしとして、ステップＳ３０に遷移する。
【００７１】
ステップＳ３０では、ＣＰＵ３０１は、グループＧ１に属する関節のうちの一部の関節を、グループＧ２に属するように変更する。グループＧ１に属する関節が変更前に複数存在することを条件とする。即ち、グループＧ１に属する関節が変更前には、関節Ｊ４，Ｊ５，Ｊ６の３つの関節があるので、そのうちの一部の関節Ｊ４を、グループＧ２に属するように変更する。そして、ＣＰＵ３０１は、関節Ｊ５，Ｊ６について、始点と終点との間で動作する関節Ｊ５，Ｊ６の経路を拘束する（決め打ちする）複数の拘束点（補間点）からなる関節補間経路を求める（拘束工程）。このように、ステップＳ３０では、関節Ｊ５，Ｊ６の経路のみを拘束し、関節Ｊ４の拘束を緩める（解く）。拘束の仕方としては、ステップＳ２と同様、関節補間経路を与える。
【００７２】
次に、ステップＳ３１では、ＣＰＵ３０１は、関節Ｊ１〜Ｊ４のコンフィギュレーション空間（４次元の空間となるので不図示）を構築する（コンフィギュレーション空間構築工程）。
【００７３】
ステップ３２では、ＣＰＵ３０１は、探索回数が上限（予め設定した一定回数）に達したか否かを判断する。つまり、ステップＳ３０で定めた拘束（第２実施形態では関節Ｊ５，Ｊ６）で解（経路）が求まらない場合に無限ループに陥るのを防ぐため、探索回数に上限を設ける。
【００７４】
ＣＰＵ３０１は、探索回数が上限に達していなければ（Ｓ３２：Ｎｏ）、次のステップＳ３３に遷移する。ステップＳ３３〜Ｓ３７では、ＣＰＵ３０１は、図３のステップＳ４〜Ｓ８と同様の探索工程の処理を行う。
【００７５】
このようにＣＰＵ３０１は、再度、ステップＳ３０にて拘束工程、ステップＳ３１にてコンフィギュレーション空間構築工程及びステップＳ３３〜Ｓ３７にて探索工程を実行する。
【００７６】
ＣＰＵ３０１は、関節Ｊ４の拘束を解いても、一定回数の探索内で解（経路）が得られなかった場合（Ｓ３２：Ｙｅｓ）、グループＧ１の関節の数が２つあるので、関節Ｊ５の拘束を解いてもよいが、第２実施形態ではエラー処理を実行する（Ｓ３８）。具体的には、ＣＰＵ３０１は、解（経路）が得られなかったことをユーザに提示する処理（例えば、図２の出力装置４１２に出力する処理）を実施し、終了状態に遷移する。
【００７７】
第２実施形態によれば、関節Ｊ４〜Ｊ６の経路を拘束した状態で解（経路）が得られない場合でも、関節Ｊ４の拘束を解いた状態で再度、経路探索をするので、解（経路）を得ることができる。
【００７８】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【００７９】
上記実施形態では、一方のグループＧ１に属する関節が、手先側の関節Ｊ４，Ｊ５，Ｊ６からなり、他方のグループＧ２に属する関節が、根元側の関節Ｊ１，Ｊ２，Ｊ３からなる場合について説明したが、これに限定するものではない。グループＧ１に属する関節、グループＧ２に属する関節の数は、いずれも少なくとも１つあれば本発明は適用可能である。つまり、グループＧ２に属する関節の数が、ロボット１００の関節の総数よりも少なければよい。なお、各グループＧ１，Ｇ２に属する関節の数は複数あるのが好ましい。
【００８０】
また、上記実施形態では、グループＧ１に属する関節が手先側の関節で、グループＧ２に属する関節が根元側の関節である場合について説明したが、各グループＧ１，Ｇ２に属する関節は任意であってもよい。この場合も、各グループＧ１，Ｇ２に属する関節の数は、複数であるのが好ましい。
【００８１】
また、上記実施形態においては、経路生成装置３００が１つのコンピュータにより構成される場合について説明したが、複数のコンピュータにより構成される場合についても本発明は適用可能である。この場合、複数のＣＰＵで本発明の演算部が構成されていてもよい。また、経路生成装置３００とロボットコントローラ２００とが別のコンピュータで構成される場合について説明したが、１つのコンピュータで構成されていてもよい。この場合、該コンピュータのＣＰＵが、ロボットの経路を生成して、生成した経路に従ってロボットの動作を制御することとなる。
【００８２】
上記実施形態の各処理動作は具体的にはＣＰＵ３０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を経路生成装置３００に供給し、経路生成装置３００を構成するコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【００８３】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４にプログラム３４０が格納される場合について説明したが、これに限定するものではない。プログラム３４０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図２に示すＲＯＭ３０２や外部記憶装置４１３、記録ディスク３４１等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【００８４】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００８５】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【００８６】
また、上記実施形態では、コンピュータが記録媒体や記憶装置に記録されたプログラムを実行することにより、処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【００８７】
１００…ロボット、１０１…ロボットアーム、１０２…ロボットハンド、３００…経路生成装置、３０１…ＣＰＵ（演算部）、３０４…ＨＤＤ（教示点記憶部）、３４０…プログラム、５００…ロボット装置、Ｇ１…一方のグループ、Ｇ２…他方のグループ、Ｊ４〜Ｊ６…関節
【図１】
2016040066.tif 000003
【図２】
2016040066.tif 000004
【図３】
2016040066.tif 000005
【図４】
2016040066.tif 000006
【図５】
2016040066.tif 000007
【図６】
2016040066.tif 000008
【図７】
2016040066.tif 000009
【図８】
2016040066.tif 000010