(57)【要約】【課題】各ロボットアームの開始点から目標点までの動作時間を短縮化する軌道を生成する。【解決手段】仮想空間内の各ロボットアームＡ，Ｂの開始点と目標点との間の経路を生成する。各ロボットアームＡ，Ｂの経路上に複数の中間点を設定する。複数の中間点のそれぞれに対し、開始点から中間点までの第１区間では、複数のロボットアームＡ，Ｂが互いに衝突を回避しながら各ロボットアームＡ，Ｂで同期して動作するよう、各ロボットアームＡ，Ｂの関節角度の推移を演算する。中間点から目標点までの第２区間では、各ロボットアームＡ，Ｂで独立して動作するよう、各ロボットアームＡ，Ｂの関節角度の推移を演算する。これら演算結果に基づき、各ロボットアームＡ，Ｂの複数の仮の軌道を生成する。複数の仮の軌道のうち、複数のロボットアームＡ，Ｂが互いに衝突しない仮の軌道を本軌道に設定する。【選択図】図１
2015160253.tif 000002
【特許請求の範囲】
【請求項１】
多関節である複数のロボットアームの軌道を求める軌道生成方法であって、
演算部が、前記各ロボットアームの開始点と目標点との間の経路を生成する経路生成工程と、
前記演算部が、前記各ロボットアームの経路上に複数の中間点を設定する中間点設定工程と、
前記演算部が、前記中間点設定工程で設定した前記複数の中間点のそれぞれに対し、前記開始点から前記中間点までの第１区間では、前記複数のロボットアームが互いに衝突を回避しながら前記各ロボットアームで同期して動作するよう、前記各ロボットアームの関節角度の推移を演算し、かつ前記中間点から前記目標点までの第２区間では、前記各ロボットアームで独立して動作するよう、前記各ロボットアームの関節角度の推移を演算して、前記各ロボットアームの複数の仮の軌道を生成する仮軌道生成工程と、
前記演算部が、前記仮軌道生成工程にて生成した複数の仮の軌道のうち、前記複数のロボットアームが互いに衝突しない仮の軌道を、前記各ロボットアームの軌道に設定する軌道設定工程と、を備えたことを特徴とする軌道生成方法。
【請求項２】
前記軌道設定工程では、前記演算部が、前記複数のロボットアームが互いに衝突しない仮の軌道が複数ある場合に、該複数の仮の軌道のうち、前記開始点に最も近い中間点に対応する仮の軌道を、前記各ロボットアームの軌道に設定することを特徴とする請求項１に記載の軌道生成方法。
【請求項３】
前記中間点設定工程では、前記演算部が、前記各ロボットアームの経路上で前記開始点に近づくように順次、前記中間点を設定し、
前記軌道設定工程では、前記演算部が、前記仮軌道生成工程にて順次設定される前記中間点に対応して順次生成される仮の軌道で前記複数のロボットアームが互いに衝突するか否かを判断し、衝突しないと判断した場合には、前記複数のロボットアームが互いに衝突しない仮の軌道を軌道候補とし、衝突すると判断した場合は、前記軌道候補のうち、前記開始点に最も近い中間点に対応する軌道候補を、前記各ロボットアームの軌道に設定することを特徴とする請求項２に記載の軌道生成方法。
【請求項４】
前記中間点設定工程では、前記演算部が、前記各ロボットアームの経路上の複数の補間点を予め求めておき、前記中間点を前記複数の補間点の中から設定することを特徴とする請求項１乃至３のいずれか１項に記載の軌道生成方法。
【請求項５】
前記仮軌道生成工程では、前記演算部が、前記第２区間では、前記各ロボットアームが前記目標点に最短時間で到達するように前記各ロボットアームの関節の角度変化を演算することを特徴とする請求項１乃至４のいずれか１項に記載の軌道生成方法。
【請求項６】
多関節である複数のロボットアームと、
請求項１乃至５のいずれか１項に記載の軌道生成方法により生成した軌道に基づき、前記複数のロボットアームの動作を制御する制御装置と、を備えたことを特徴とするロボット装置。
【請求項７】
コンピュータに請求項１乃至５のいずれか１項に記載の軌道生成方法の各工程を実行させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のロボットアームの軌道を求める軌道生成方法、ロボット装置、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
自動車や電機製品等の生産ラインでは、複数のロボットアームを用いて、溶接や組み立て等の作業を自動化している。複数のロボットアームは、互いの動作領域が重なり合うように互いに近接して配置されている。複数のロボットアームの教示作業は、従来、教示者が各ロボットアームを１ステップずつ実際に動作させながら行っていた。そして、教示者は、ロボットアーム間で衝突が生じないように各ロボットアームの動作軌道と、各動作軌道間の実行タイミングを試行錯誤的に教示していた。
【０００３】
しかし、教示者による試行錯誤的な教示では、複数のロボットアームを効率的に動作させるのが非常に難しいという問題があった。複数のロボットアームを効率的に動作させようとすると、その教示作業は非常に複雑になり、かつ教示および動作確認に非常に時間がかかっていた。特に、製品の種類が頻繁に変わる環境では、製品の種類が変更される度に教示者が教示作業を全てやり直すことになる。実際にロボットアームが稼動して生産を行う直接工程よりも、教示作業などの間接工程時間の比率が増大し、生産性が極端に低下してしまっていた。
【０００４】
そこで、近年では、教示者による直接教示に代わって、計算機を用いて複数のロボットアームの教示作業と動作制御を効率化する方法や装置が提案されている（非特許文献１参照）。非特許文献１には、ＰＲＭ（Probabilistic  RoadMap  Method）による経路生成アルゴリズムにしたがって経路生成を行い、ロボットアーム同士の衝突回避を行う手法が開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】G.  S´anchez  and  J.-C.  Latombe,  “On  delaying  collision  checking  in  PRM  planning:  Application  to  multi-robot  coordination”  International  Journal  of  Robotics  Research,  vol.  21,  no.  1,  pp.  5-26,  2002.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献１の方法は、双腕ロボットアームを１つのロボットアームとみなして、ＰＲＭによるアルゴリズムにしたがって各ロボットアームの経路の生成を行い、ロボットアームを同期させ、ロボットアーム同士の衝突（干渉）を回避する軌道を計算する手法である。この非特許文献１の方法では、双腕ロボットアームを１つのロボットアームとみなし、双腕ロボットアームのコンフィグレーション（各軸の関節角度）を関節空間、いわゆるＣスペース（Configuration  Space）で１つの点として扱う。例えば、各ロボットアームが２軸の場合には、１つのロボットアームとみなした開始点や目標点のコンフィグレーションは、４つのパラメータで表される。そして、２つのロボットアームをそれぞれ開始点から目標点まで終始、衝突を回避するよう同期させると、２つのロボットアームがそれぞれの目標点に到着するタイミングが同じになる。
【０００７】
しかしながら、ロボットアーム同士の衝突の回避動作の必要のない区間においても、ロボットアーム同士を同期させているため、各ロボットアームの動きに無駄な制約が生じ、ロボットアームが目標点に到達する時間が長くなっていた。つまり、従来の方法では、それぞれのロボットアームの移動時間の最適化が十分ではなかったため、動作時間に無駄が生じていた。そのため、ロボットアームの動作時間の短縮化が望まれていた。
【０００８】
そこで、本発明は、各ロボットアームの開始点から目標点までの動作時間を短縮化する軌道を生成する軌道生成方法、ロボット装置、プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の軌道生成方法は、多関節である複数のロボットアームの軌道を求める軌道生成方法であって、演算部が、前記各ロボットアームの開始点と目標点との間の経路を生成する経路生成工程と、前記演算部が、前記各ロボットアームの経路上に複数の中間点を設定する中間点設定工程と、前記演算部が、前記中間点設定工程で設定した前記複数の中間点のそれぞれに対し、前記開始点から前記中間点までの第１区間では、前記複数のロボットアームが互いに衝突を回避しながら前記各ロボットアームで同期して動作するよう、前記各ロボットアームの関節角度の推移を演算し、かつ前記中間点から前記目標点までの第２区間では、前記各ロボットアームで独立して動作するよう、前記各ロボットアームの関節角度の推移を演算して、前記各ロボットアームの複数の仮の軌道を生成する仮軌道生成工程と、前記演算部が、前記仮軌道生成工程にて生成した複数の仮の軌道のうち、前記複数のロボットアームが互いに衝突しない仮の軌道を、前記各ロボットアームの軌道に設定する軌道設定工程と、を備えたことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、各ロボットアームの開始点から目標点までの軌道の動作時間を短縮化することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係るロボット装置の概略構成を示す説明図である。
【図２】実施形態に係るロボット装置の構成を示すブロック図である。
【図３】実施形態に係るロボット装置の演算部が実行する軌道生成方法の各工程を示すフローチャートである。
【図４】実施形態に係る関節空間における各ロボットアームの経路を示す説明図である。
【図５】実施形態の軌道生成方法で生成した軌道と、比較例の軌道生成方法で生成した軌道とを、２次元関節空間上に射影して表現した概念図である。
【図６】実施形態に係る軌道生成方法で生成した軌道を辿って動作するロボットアームの説明図である。
【図７】比較例の軌道生成方法で生成した軌道を辿って動作するロボットアームの説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。図１は、本発明の実施形態に係るロボット装置の概略構成を示す説明図である。ロボット装置１００は、複数（本実施形態では２つ）のロボットアーム１０１，１０２と、各ロボットアーム１０１，１０２の動作を制御する制御装置２００とを備えている。また、ロボット装置１００は、制御装置２００に教示点のデータ等を送信する操作装置３００と、制御装置２００の演算結果等を表示する表示装置４００とを備えている。
【００１３】
ロボットアーム１０１，１０２は、多関節のロボットアームであり、関節とリンク機構で構成される。関節には回転関節や直動関節の他、球体関節などさまざまな種類の関節が適用可能である。関節の動作はモータ等で能動的に動作する場合と、動力源を持たずに受動的に動作する場合とがある。各関節間はリンク機構により結びつけられ、関節とリンク機構が交互に直列されたシリアルリンク型と関節とリンクの組合せが並列となったパラレルリンク型などがある。
【００１４】
本実施形態では、ロボットアーム１０１，１０２は、回転関節を有するシリアルリンク型のロボットアームであり、関節はモータ及び駆動回路等を有する駆動装置により駆動されるよう構成されている。また、ロボットアーム１０１は、複数（本実施形態では２つ）の関節（自由度）Ｊａ１，Ｊａ２を備えた２軸のロボットアームである。ロボットアーム１０２は、複数（本実施形態では２つ）の関節（自由度）Ｊｂ１，Ｊｂ２を備えた２軸のロボットアームである。
【００１５】
なお、ロボットアーム１０１及びロボットアーム１０２は、一般的にはロボットアーム自体が動作するような動作体として広く観念されるものであればよく、特に限定して解釈されるものではない。例えば、ロボットアーム１０１，１０２は、２軸のロボットアームとしたが、６軸多関節ロボットアームであってもよい。
【００１６】
操作装置３００は、作業者が操作するものであり、ロボットアーム１０１，１０２の動作を指定したり、制御装置２００に各ロボットアーム１０１，１０２に対する教示点を教示したりするのに用いる。
【００１７】
制御装置２００は、各ロボットアーム１０１，１０２の軌道のデータに基づき、各ロボットアーム１０１，１０２の動作を制御するものである。更に、本実施形態では、制御装置２００は、軌道生成装置でもあり、軌道生成方法により、ロボットアームＡ，Ｂ同士が衝突（干渉）しないように各ロボットアーム１０１，１０２の軌道を生成する。即ち、制御装置２００は、ロボットアーム１０１に対応する仮想的なロボットアームＡ、ロボットアーム１０２に対応する仮想的なロボットアームＢをそれぞれ定義し、各ロボットアームＡ，Ｂの軌道を演算により生成するシミュレータとしての機能を有する。各ロボットアームＡ，Ｂは、コンピュータで定義された仮想空間内に配置され、各ロボットアーム１０１，１０２の形状データ（ＣＡＤデータ）等に基づいて定義された仮想的なロボットアームである。
【００１８】
ここで、ロボットアームＡの自由度を表すパラメータを関節角度として、ロボットアームＡの各関節（軸）Ｊａ１，Ｊａ２の関節角度をそれぞれθａ１，θａ２とする。ロボットアームＡのコンフィグレーション（各軸の関節角度）は、（θａ１，θａ２）で表すことができる。同様に、ロボットアームＢの自由度を表すパラメータを関節角度として、ロボットアームＢの各関節（軸）Ｊｂ１，Ｊｂ２の関節角度をそれぞれθｂ１，θｂ２とする。ロボットアームＢのコンフィグレーションは、（θｂ１，θｂ２）で表すことができる。
【００１９】
本実施形態では、制御装置２００は、仮想の各ロボットアームＡ，Ｂについて、オフラインにより、教示点間を移動する軌道を生成し、生成した軌道に基づいて、実際の各ロボットアーム１０１，１０２の動作を制御する。動作開始点となる教示点が開始点、動作終了点となる教示点が目標点である。教示点は、関節空間（コンフィグレーション空間、いわゆるＣスペース）又はタスク空間で表される。
【００２０】
関節空間では、教示点は、ロボットアームの関節の角度で表されるパラメータで表され、関節の数だけパラメータを有している。関節空間とは、ロボットアームＡ，Ｂがとり得る全てのコンフィグレーションのパラメータの組が構成する空間である。また、タスク空間では、教示点は、ロボットアームの基端を原点とする座標系を基準とする、ロボットアームの先端の３次元的な位置及び姿勢の６つのパラメータで表される。
【００２１】
本実施形態では、教示点は、関節空間で表されているものとする。ロボットアームＡに対する開始点は、２軸の関節角度（θａｓ１，θａｓ２）で表され、ロボットアームＡに対する目標点は、２軸の関節角度（θａｇ１，θａｇ２）で表される。一方、ロボットアームＢに対する開始点は、２軸の関節角度（θｂｓ１，θｂｓ２）で表され、ロボットアームＢに対する目標点は、２軸の関節角度（θｂｇ１，θｂｇ２）で表される。
【００２２】
このように、ロボットアームＡ，Ｂの自由度を表すパラメータ（例えば、関節角度や伸縮長さ）を座標軸の値とした場合、ロボットアームＡ，Ｂのコンフィグレーションは関節空間上の点として表現することができる。
【００２３】
図２は、本発明の実施形態に係るロボット装置１００の構成を示すブロック図である。図２に示すように、制御装置２００は、コンピュータで構成され、演算部（制御部）としてのＣＰＵ（Central  Processing  Unit）２０１を備えている。また、制御装置２００は、記憶部として、ＲＯＭ（Read  Only  Memory）２０２、ＲＡＭ（Random  Access  Memory）２０３、ＨＤＤ（Hard  Disk  Drive）２０４を備えている。また、制御装置２００は、記録ディスクドライブ２０５及び各種のインタフェース２１１〜２１５を備えている。
【００２４】
ＣＰＵ２０１には、ＲＯＭ２０２、ＲＯＭ２０３、ＨＤＤ２０４、記録ディスクドライブ２０５及び各種のインタフェース２１１〜２１５が、バス２１６を介して接続されている。ＲＯＭ２０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ２０３は、ＣＰＵ２０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２５】
ＨＤＤ２０４は、ＣＰＵ２０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ２０１に、後述する演算処理の各工程を実行させるためのプログラムを記録（格納）するものである。ＣＰＵ２０１は、ＨＤＤ２０４に記録（格納）されたプログラム２３０に基づいて軌道生成方法の各工程を実行する。
【００２６】
記録ディスクドライブ２０５は、記録ディスク２４０に記録された各種データやプログラム等を読み出すことができる。ロボットアーム１０１，ロボットアーム１０２，操作装置３００，表示装置４００，外部記憶装置５００はインタフェース２１１〜２１５にそれぞれ接続されている。
【００２７】
操作装置３００は、作業者の入力操作により、ロボットアーム１０１，１０２を教示する教示点を指定する。教示点のデータは、インタフェース２１２及びバス２１６を通じてＣＰＵ２０１又はＲＡＭ２０３、ＨＤＤ２０４に出力される。ＣＰＵ２０１は、操作装置３００から、又はＲＡＭ２０３若しくはＨＤＤ２０４から教示点のデータの入力を受ける。
【００２８】
表示装置４００は、ＣＰＵ２０１の制御の下、画像を表示するディスプレイである。表示装置４００は、ＣＰＵ２０１の制御の下、例えばロボットアームＡ，Ｂやその作業空間（仮想空間）を３Ｄ（３次元）グラフィックスで表示する。これにより、作業者は、生成された動作経路を目視により確認することができる。外部記憶装置５００は、書き換え可能な不揮発性メモリや外付けＨＤＤ等である。
【００２９】
ＣＰＵ２０１は、各ロボットアーム１０１，１０２に対する教示点のデータに基づき、各ロボットアーム１０１，１０２の軌道を生成する。そして、ＣＰＵ２０１は、各ロボットアーム１０１，１０２の各関節のモータに対する駆動指令を所定時間間隔（例えば１［ｍｓ］）でバス２１６及びインタフェース２１１，２１２を介して不図示のモータ駆動回路に出力する。各関節のモータ駆動回路がモータを駆動することにより、各ロボットアーム１０１，１０２が動作する。
【００３０】
プログラム２３０は、衝突チェックプログラム２３１と、キネマティクス計算プログラム２３２と、経路生成プログラム２３３と、経路短縮プログラム２３４と、軌道生成プログラム２３５と、衝突回避終了点探索プログラム２３６と、を有している。
【００３１】
衝突チェックプログラム２３１は、物体同士が衝突するかどうかをＣＰＵ２０１に判断させるプログラムである。例えば、ロボットアームＡ，Ｂと障害物ＯｂのＣＡＤデータをポリゴン（例えば三角形等の多角形）の集合とする。衝突チェックプログラム２３１に基づき動作するＣＰＵ２０１は、対象となるロボットアームＡ，Ｂのポリゴンの集合と障害物Ｏｂのポリゴンの集合とが幾何学的に接触するか否かを判断する。
【００３２】
なお、衝突チェックは、ポリゴンではなく、ロボットアームＡ，Ｂと障害物Ｏｂを点や線ないし面の集合として表して、このような点と面との衝突チェック、又は線と面との衝突チェックを行ってもよい。さらに、関節空間上における衝突チェックに限定されるものではなく、実空間内で点や線ないしポリゴンを利用した衝突チェックを採用することもできる。
【００３３】
キネマティクス計算プログラム２３２は、ロボットアームＡ，Ｂのコンフィグレーションから、ロボットアームＡ，Ｂのタスク空間での位置及び姿勢を求める順キネマティクスをＣＰＵ２０１に計算させるプログラムである。更に、キネマティクス計算プログラム２３２は、ロボットアームＡ，Ｂの手先位置（先端）から、ロボットアームＡ，Ｂのコンフィグレーションを計算する逆キネマティクスをＣＰＵ２０１に計算させるプログラムである。
【００３４】
順キネマティクス計算は、例えば、図１におけるロボットアームＡが、あるコンフィグレーション（θａ１，θａ２）で、ロボットアームＢ及び障害物Ｏｂに衝突するか否かを判断する際に行う。つまり、衝突するか否かの判断は、タスク空間上のロボットアームＡの位置及び姿勢で行う。したがって、ＣＰＵ２０１は、衝突チェックプログラム２３１を実行することにより、ロボットアームＡが、あるコンフィグレーション（θａ１，θａ２）でロボットアームＢ及び障害物Ｏｂに衝突するか否かを判断できる。
【００３５】
経路生成プログラム２３３は、関節空間上において、障害物Ｏｂを避けて開始点と目標点とを接続する各ロボットアームＡ，Ｂの経路をＣＰＵ２０１に生成させるプログラムである。経路とは、ロボットアームＡ，Ｂのコンフィグレーションが時間の経過とともに変化するときの、関節空間におけるロボットアームのコンフィグレーションの軌跡である。なお、この経路には、単にどのルートで通過するか（どの関節角度となるか）が規定されており、通過時刻は規定されていない。
【００３６】
経路生成プログラム２３３は、あるコンフィグレーションでロボットアームＡ，Ｂが衝突しているか否かをチェックするため、衝突チェックプログラム２３１と、キネマティクス計算プログラム２３２とを併せて用いる。経路生成方法には、ＰＲＭ（Probabilistic  RoadMap  Method）、ＲＲＴ（Rapidly-exploring  Random  Tree）といった方法が、計算時間と探索能力の観点から好ましい。なお、経路生成方法は、ＰＲＭやＲＭＴに限定するものではなく、ポテンシャル法、可視グラフ法、セル分割法、ボロノイ図法などの他の方法も適用できる。
【００３７】
いずれの経路生成方法であっても、ＣＰＵ２０１は、ロボットアームＡ，Ｂ同士の衝突及びロボットアームＡ，Ｂと障害物Ｏｂとの衝突の回避を考慮に入れた経路を生成するために、まず、ロボットアームＡ，Ｂを１つのロボットアームＣとみなす。そして、ＣＰＵ２０１は、４次元関節空間で、開始点（θａｓ１，θａｓ２，θｂｓ１，θｂｓ２）から目標点（θａｇ１，θａｇ２，θｂｇ１，θｂｇ２）へと障害物を回避する経路探索を行い、経路を算出する。
【００３８】
経路生成プログラム２３３により生成した経路は、回り道をしていたり尖っていたりするため無駄が多く、経路修正を行う必要がある。経路短縮プログラム２３４は、経路生成プログラム２３３で生成した経路の短縮化をＣＰＵ２０１に行わせるプログラムである。ＣＰＵ２０１がプログラム２３４を実行する際、あるコンフィグレーション（θａ１，θａ２，θｂ１，θｂ２）でロボットアームが衝突しているかをチェックするため、衝突チェックプログラム２３１と、キネマティクス計算プログラム２３２を併せて用いる。
【００３９】
経路短縮化手法としては、例えば、経路生成プログラム２３３で生成した、関節空間上の経路に対し補間点を新たに追加する。そして、任意の２点をつなぐ直線に障害物Ｏｂとの衝突がない場合は、２点の間にある経路の代わりに新たにその直線を経路として置き換えるという作業を、繰り返し行い短縮化をする手法がある。
【００４０】
なお、経路短縮方法はこれに限定されるものではなく、経路の先端から衝突せずに接続可能な点を探索していき経路を短縮化する、貪欲アルゴリズムを用いてもよい。また、関節空間上の経路をゴムモデルと仮定し、経路が縮む力を発生させると同時に、障害物Ｏｂからの効力も定義することにより、衝突回避をしつつ経路を短縮化する手法を用いてもよい。また、Ｂ−Ｓｐｌｉｎｅ曲線により経路を平滑化する手法を用いてもよい。
【００４１】
軌道生成プログラム２３５は、経路生成プログラム２３３により算出された経路に対し、ロボットアームＡ，Ｂのコンフィグレーションの最適な変化速度を計算し、軌道をＣＰＵ２０１に生成させるプログラムである。ここで、軌道とは、ロボットアームＡ，Ｂのコンフィグレーション（θａ１，θａ２），（θｂ１，θｂ２）の時間変化として変化速度を時間の関数として扱い表したものである。つまり、軌道は、経路を辿る各ロボットアームＡ，Ｂの各関節の関節角度の時間変化を表したものである。
【００４２】
この軌道生成プログラム２３５は、双腕（２つ）のロボットアームＡ，Ｂを同期させた軌道を生成することができるプログラムである。ここでいう双腕ロボットアームＡ，Ｂの同期とは、ロボットアームＡのコンフィグレーションがＰａｊ（θａｊ１，θａｊ２）の時、ロボットアームＢをそれに対応するコンフィグレーションＰｂｊ（θｂｊ１，θｂｊ２）を指定して連動させることである。
【００４３】
また、軌道生成プログラム２３５は、双腕ロボットアームＡ，Ｂを同期させている途中で、ロボットアームＡ，Ｂ同士の同期をやめ、ロボットアームＡ，Ｂ単独で最適な動作をさせる軌道を生成することもできる。
【００４４】
衝突回避終了点探索プログラム２３６は、ロボットアームＡ，Ｂを併せて１つのロボットアームＣとみなし算出した経路に対し、衝突回避終了点（以下、単に「終了点」という）をＣＰＵ２０１に探索させるプログラムである。
【００４５】
図３は、制御装置２００のＣＰＵ２０１が実行する軌道生成方法の各工程を示すフローチャートである。ＣＰＵ２０１は、プログラム２３０（プログラム２３１〜２３６）を実行することで、以下に説明する各工程を実行する。
【００４６】
まず、ＣＰＵ２０１は、ロボットアームＡ，Ｂが作業を行う作業空間（仮想空間）でのロボットアームＡ，Ｂ及び障害物Ｏｂの位置及び形状情報を読み込む（Ｓ１０１）。ロボットアームＡ，Ｂ及び障害物Ｏｂは、設計情報などであり、例えば３次元ＣＡＤのデータ、若しくはカメラの映像や各種センサによる計測等で収集したデータを用いて、又は手動で設定する。
【００４７】
図４は、関節空間における各ロボットアームＡ，Ｂの経路を示す説明図であり、図４（ａ）はロボットアームＡの経路、図４（ｂ）はロボットアームＢの経路を示している。
【００４８】
ＣＰＵ２０１は、ロボットアームＡの開始点Ｐａｓ（θａｓ１，θａｓ２）、及びロボットアームＢの開始点Ｐｂｓ（θｂｓ１，θｂｓ２）を決定する（Ｓ１０２）。例えば、ＣＰＵ２０１は、ロボットアームＡ，Ｂの開始点を、手先の位置及び姿勢を入力として、キネマティクス計算プログラム２３２により逆キネマティクスを解くことによって決定する。つまり、取得した開始点Ｐａｓ，Ｐｂｓのパラメータがタスク空間で定義されている場合には、関節空間に変換する必要があり、ＣＰＵ２０１は、開始点Ｐａｓ，Ｐｂｓのパラメータをタスク空間から関節空間に変換する演算を行う。なお、ＣＰＵ２０１が取得した開始点Ｐａｓ，Ｐｂｓのパラメータが関節空間である場合には、変換作業は省略可能である。
【００４９】
また、ＣＰＵ２０１は、ロボットアームＡの目標点Ｐａｇ（θａｇ１，θａｇ２）、及びロボットアームＢの目標点Ｐｂｇ（θｂｇ１，θｂｇ２）を決定する（Ｓ１０３）。例えば、ＣＰＵ２０１は、ロボットアームＡ，Ｂの目標点を、手先の位置及び姿勢を入力として、キネマティクス計算プログラム２３２により逆キネマティクスを解くことによって決定する。つまり、取得した目標点Ｐａｇ，Ｐｂｇのパラメータがタスク空間で定義されている場合には、関節空間に変換する必要があり、ＣＰＵ２０１は、目標点Ｐａｇ，Ｐｂｇのパラメータをタスク空間から関節空間に変換する演算を行う。なお、ＣＰＵ２０１が取得した目標点Ｐａｇ，Ｐｂｇのパラメータが関節空間である場合には、変換作業は省略可能である。
【００５０】
次に、ＣＰＵ２０１は、開始点Ｐａｓ，Ｐｂｓ及び目標点Ｐａｇ，Ｐｂｇで、ロボットアームＡ及びロボットアームＢがそれぞれ障害物Ｏｂに衝突していないか否か、ロボットアームＡ，Ｂ同士が衝突していないか否かを判断する（Ｓ１０４）。
【００５１】
ＣＰＵ２０１は、開始点Ｐａｓ，Ｐｂｓ又は目標点Ｐａｇ，ＰｂｇでいずれかのロボットアームＡ，Ｂが障害物Ｏｂに衝突する場合、又はロボットアーム同士が衝突する場合（Ｓ１０４：Ｎｏ）は、エラーコードを表示装置４００に出力し、処理を終了する。表示装置４００は、エラーコードに従った表示画像を表示する。これにより、作業者は、入力操作した開始点Ｐａｓ，Ｐｂｓ又は目標点Ｐａｇ，Ｐｂｇの変更が必要なことを知ることができ、教示点の変更操作をすることができる。
【００５２】
次に、ＣＰＵ２０１は、衝突していないと判断した場合（Ｓ１０４：Ｙｅｓ）、ロボットアームＡ及びロボットアームＢを、計４個の関節を持つ１つのロボットアームＣとみなす。そして、ＣＰＵ２０１は、ロボットアームＣについて、新たに開始点Ｐｃｓ（θａｓ１，θａｓ２，θｂｓ１，θｂｓ２）及び目標点Ｐｃｇ（θａｇ１，θａｇ２，θｂｇ１，θｂｇ２）を定義する。ＣＰＵ２０１は、経路生成プログラム２３３を用い、４次元の関節空間で、開始点Ｐｃｓと目標点Ｐｃｇを結ぶように、作業空間（仮想空間）における障害物Ｏｂ及びロボットアームＡ，Ｂ同士の衝突回避を考慮した経路を生成する（Ｓ１０５：経路生成工程）。
【００５３】
次に、ＣＰＵ２０１は、経路生成プログラム２３３により、ロボットアームＣが目標点Ｐｃｇに到達する経路を生成したか否かを判断する（Ｓ１０６）。ＣＰＵ２０１は、ロボットアームＣが経路生成プログラム２３３により目標点Ｐｃｇに到達できないと判断した場合（Ｓ１０６：Ｎｏ）は、エラーコードを表示装置４００に出力し、処理を終了する。表示装置４００は、エラーコードに従った表示画像を表示する。これにより、作業者は、ロボットアームＣ（即ちロボットアームＡ，Ｂ）が目標点Ｐｃｇ（Ｐａｇ，Ｐｂｇ）に到達できないことを目視により確認することができる。よって、開始点Ｐａｓ，Ｐｂｓ又は目標点Ｐａｇ，Ｐｂｇの変更が必要なことを知ることができ、教示点の変更操作をすることができる。
【００５４】
次に、ＣＰＵ２０１は、作成した経路Ｈｃで目標点Ｐｃｇに到達できたと判断した場合（Ｓ１０６：Ｙｅｓ）、作成した経路Ｈｃに対し、経路短縮プログラム２３４を用いて短縮処理を行う（Ｓ１０７）。
【００５５】
次に、ＣＰＵ２０１は、経路Ｈｃを関節空間上でいくつかに分割（例えば等分割）することで複数の補間点Ｐｃ０，Ｐｃ１，Ｐｃ２，Ｐｃ３，…，ＰｃＮを追加する。その際、開始点Ｐｃｓから目標点Ｐｃｇに向かって補間点Ｐｃ０，Ｐｃ１，Ｐｃ２，Ｐｃ３，…，ＰｃＮの順に設定する（Ｓ１０８）。即ち、ＣＰＵ２０１は、ロボットアームＡの経路Ｈａ上の複数の補間点Ｐａ０，Ｐａ１，…ＰａＮを求めると共に、ロボットアームＢの経路Ｈｂ上の複数の補間点Ｐｂ０，Ｐｂ１，…ＰｂＮを求めたのと同じである。なお、補間点Ｐｃｊは、補間点Ｐａｊ及び補間点Ｐｂｊ（ｊ＝０，…，Ｎ）からなる。
【００５６】
次に、ＣＰＵ２０１は、ロボットアームＡ及びロボットアームＢがそれぞれの終了点の候補となる関節空間上のコンフィグレーションを、終了点候補（中間点）Ｐｃｉとし、ｉ＝Ｎ−１と設定し、初期化を行う（Ｓ１０９）。ただし、ｉは正の整数である変数とする。即ち、ＣＰＵ２０１は、ロボットアームＡ，Ｂを１つのロボットアームＣとみなして、ロボットアームＣの経路Ｈｃ上に終了点候補（中間点）Ｐｃｉを設定する（中間点設定工程）。これは、ロボットアームＡの経路Ｈａ上に終了点候補（中間点）Ｐａｉを、ロボットアームＢの経路Ｈｂ上に終了点候補（中間点）Ｐｂｉを、それぞれ設定したのと同じである。
【００５７】
次に、ＣＰＵ２０１は、経路Ｈｃ上の任意の点Ｐｃｊ（θａｊ１，θａｊ２，θｊｂ１，θｊｂ２）（ｊは０からＮまでの整数）を、Ｐａｊ（θａｊ１，θａｊ２）で構成される経路Ｈａと、Ｐｂｊ（θｂｊ１，θｂｊ２）で構成される経路Ｈｂに分割する。図４に、それぞれ経路Ｈａ，Ｈｂを示す。ＣＰＵ２０１は、軌道生成プログラム２３５を用い、開始点Ｐｃｓから終了点候補ＰｃｉまでロボットアームＡ，Ｂで経路Ｈｃに沿って同期をし、終了点候補ＰｃｉからはロボットアームＡ，Ｂで同期をせずに仮の軌道を生成する（Ｓ１１０：仮軌道生成工程）。同期をしない区間では、ロボットアームＡは経路Ｈａに沿って終了点候補Ｐａｉから目標点Ｐａｇまで、ロボットアームＢは経路Ｈｂに沿って終了点候補Ｐｂｉから目標点Ｐｂｇまでの仮の軌道を生成する。終了点候補Ｐａｉは（θａｉ１，θａｉ２）、終了点候補Ｐａｉは（θａｉ１，θａｉ２）からなる。ここで、「仮の軌道」と称したのは、この段階では設定する軌道が決定していないためであり、設定する軌道は、後の工程で複数の仮の軌道の中から決定される。
【００５８】
仮の軌道は、開始点Ｐｃｓと終了点候補Ｐｃｉとの間の同期をする区間（第１区間）と、終了点候補Ｐｃｉと目標点Ｐｃｇとの間の同期をしない区間（第２区間）との境界において、各ロボットアームＡ，Ｂが停止をせずに滑らかに動作するよう生成する。生成したロボットアームＡの仮の軌道をＴａｉ、ロボットアームＢの仮の軌道をＴｂｉとする。
【００５９】
即ち、ＣＰＵ２０１は、開始点Ｐｃｓから終了点候補Ｐｃｉまでの第１区間では、ロボットアームＡ，Ｂが互いに衝突を回避しながらロボットアームＡ，Ｂで同期して動作するよう、ロボットアームＡ，Ｂの各関節の関節角度の時間変化を演算する。また、ＣＰＵ２０１は、終了点候補Ｐａｉ，Ｐｂｉから目標点Ｐａｇ，Ｐｂｇまでの第２区間では、ロボットアームＡ，Ｂで独立して動作するよう、ロボットアームＡ，Ｂの各関節の関節角度θａ（ｔ）＝（θａｊ１（ｔ），θａｊ２（ｔ））、θｂ（ｔ）＝（θｂｊ１（ｔ），θｂｊ２（ｔ））を演算する。ｔは時刻である。以下では、この量を関節角度の時間変化、又は、関節角度の推移と呼ぶこともある。ＣＰＵ２０１は、これら演算結果に基づき、ロボットアームＡ，Ｂの仮の軌道Ｔａｉ，Ｔｂｉを生成する。このように生成された仮の軌道Ｔａｉ，Ｔｂｉは、開始点Ｐｃｓから目標点Ｐｃｇまで同期させて生成した軌道よりも速く目標点Ｐａｇ，Ｐｂｇに到達する。
【００６０】
本実施形態では、ＣＰＵ２０１は、第２区間では、各ロボットアームＡ，Ｂが目標点Ｐａｇ，Ｐｂｇに最短時間で到達するように各ロボットアームＡ，Ｂの関節の角度変化を演算することで、軌道Ｔａｉ，Ｔｂｉを生成している。これにより、各ロボットアームＡ，Ｂは、より速く目標点Ｐａｇ，Ｐｂｇに到達する。
【００６１】
次に、ＣＰＵ２０１は、ステップＳ１１０で生成した軌道Ｔａｉ，Ｔｂｉを記憶装置であるＨＤＤ２０４に保存する（Ｓ１１１）。
【００６２】
次に、ＣＰＵ２０１は、ステップＳ１１０で算出したロボットアームＡの仮の軌道Ｔａｉ及びロボットアームＢの仮の軌道Ｔｂｉにおいて、ロボットアームＡとロボットアームＢとが衝突（干渉）するか否かを判断する（Ｓ１１２）。ＣＰＵ２０１は、衝突すると判断した場合（Ｓ１１２：Ｙｅｓ）は、ステップＳ１１３の処理に移行し、衝突しないと判断した場合（Ｓ１１２：Ｎｏ）は、ステップＳ１１４の処理に移行する。
【００６３】
ＣＰＵ２０１は、ステップＳ１１４では、ループ変数ｉが０であるか否かを判断する。ＣＰＵ２０１は、ループ変数ｉが０ではないと判断した場合（Ｓ１１４：Ｎｏ）、ループ変数ｉを１減らし（Ｓ１１５）、ステップＳ１１０の処理に戻る。
【００６４】
即ち、ＣＰＵ２０１は、ステップＳ１０９，Ｓ１１５の処理で、ロボットアームＣの経路上に複数（少なくとも２つ）の終了点候補Ｐｃ（Ｎ−１），Ｐｃ（Ｎ−２），…を設定することとなる。
【００６５】
そして、ＣＰＵ２０１は、ステップＳ１１５を経てステップＳ１１０の処理へ帰還させている。これにより、ＣＰＵ２０１は、複数の終了点候補Ｐｃ（Ｎ−１），Ｐｃ（Ｎ−２），…のそれぞれに対し、ロボットアームＡの仮の軌道Ｔａ（Ｎ−１），Ｔａ（Ｎ−２），…及びロボットアームＢの仮の軌道Ｔｂ（Ｎ−１），Ｔｂ（Ｎ−２）…を生成する。
【００６６】
ＣＰＵ２０１は、ステップＳ１１３では、仮の軌道Ｔａ（ｉ＋１），Ｔｂ（ｉ＋１）を各ロボットアームＡ，Ｂ（１０１，１０２）の軌道に設定する（軌道設定工程）。また、ＣＰＵ２０１は、ステップＳ１１６では、仮の軌道Ｔａ０，Ｔｂ０を各ロボットアームＡ，Ｂ（１０１，１０２）の軌道に設定する（軌道設定工程）。即ちＣＰＵ２０１は、ロボットアームＡの仮の軌道Ｔａ（Ｎ−１），Ｔａ（Ｎ−２），…、ロボットアームＢの仮の軌道Ｔｂ（Ｎ−１），Ｔｂ（Ｎ−２），…のうち、ロボットアームＡ，Ｂが互いに衝突しない仮の軌道をロボットアームＡ，Ｂの軌道に設定する。
【００６７】
詳述すると、ロボットアームＡ，Ｂが互いに衝突しない仮の軌道が複数組ある場合には、これら仮の軌道のうち１組の仮の軌道を本軌道に設定し、ロボットアームＡ，Ｂが互いに衝突しない仮の軌道が１組の場合には、当該仮の軌道を本軌道に設定する。これにより、各ロボットアームＡ，Ｂの開始点Ｐａｓ，Ｐｂｓから目標点Ｐａｇ，Ｐｂｇまでの軌道の動作時間を短縮化することができる。
【００６８】
特に、本実施形態では、ロボットアームＡ，Ｂが互いに衝突しない仮の軌道が複数組ある場合には、複数組の仮の軌道のうち、開始点Ｐａｓ，Ｐｂｓに最も近い終了点候補に対応する仮の軌道を、ロボットアームＡ，Ｂの軌道に設定している。これにより、各ロボットアームＡ，Ｂの開始点Ｐａｓ，Ｐｂｓから目標点Ｐａｇ，Ｐｂｇまでの軌道の動作時間を更に短縮化することができる。
【００６９】
ここで、ＣＰＵ２０１は、ステップＳ１１５にてループ変数ｉを１減じることにより、ロボットアームＣの経路Ｈｃ上で開始点Ｐｃｓに近づくように順次、終了点候補Ｐｃｉを設定している。具体的には、ＣＰＵ２０１は、開始点Ｐｃｓに近づくように、複数の補間点Ｐｃ０，Ｐｃ１，Ｐｃ２，Ｐｃ３，…の中から終了点候補Ｐｃｉを設定している。
【００７０】
そして、ＣＰＵ２０１は、ステップＳ１１２では、ステップＳ１１０にて順次設定される終了点候補Ｐｃｉに対応して順次生成される仮の軌道Ｔａｉ，ＴｂｉでロボットアームＡ，Ｂが互いに衝突するか否かを判断している。ステップＳ１１１にて記録され、衝突しないと判断された仮の軌道Ｔａｉ，Ｔｂｉは、後の本軌道となり得る候補である。
【００７１】
ＣＰＵ２０１は、ステップＳ１１２で衝突すると判断した場合は、軌道候補のうち開始点Ｐｃｓに最も近い終了点候補Ｐｃ（ｉ＋１）に対応する軌道候補Ｔａ（ｉ＋１），Ｔｂ（ｉ＋１）を、各ロボットアームＡ，Ｂの本軌道に設定する。このときの終了点候補Ｐａ（ｉ＋１），Ｐｂ（ｉ＋１）を終了点Ｐａｅ，Ｐｂｅとする。
【００７２】
このように、経路Ｈａ，Ｈｂ上を開始点Ｐａｓ，Ｐｂｓに向かって終了点Ｐａｅ，Ｐｂｅを探索することで、簡単に終了点Ｐａｅ，Ｐｂｅを探索することができ、ＣＰＵ２０１における演算負荷が減少する。
【００７３】
なお、本実施形態では、軌道計算において、同期させる第１区間における計算を簡略化するため、ロボットアームＡ，Ｂを１つのロボットアームＣとみなしていたが、これに限定するものではない。ロボットアームＡとロボットアームＢとの同期をとることができれば、１つのロボットアームＣとみなさなくてもよい。
【００７４】
以下、上記ステップＳ１０１〜Ｓ１１６により生成された各ロボットアームＡ，Ｂの軌道について説明する。
【００７５】
図４（ａ）に示すように、ロボットアームＡは、開始点Ｐａｓから終了点Ｐａｅまで、ロボットアームＢと同期し、終了点Ｐａｅから同期をやめ、目標点ＰａｇまではロボットアームＡ単独で、移動時間を短縮した最適な動作をする。図４（ｂ）に示すように、ロボットアームＢは、開始点Ｐｂｓから終了点Ｐｂｅまで、ロボットアームＡと同期し、終了点Ｐｂｅから同期をやめ、目標点ＰｂｇまではロボットアームＢ単独で、移動時間を短縮した最適な動作をする。
【００７６】
図５は、本実施形態の軌道生成方法で生成した軌道Ｌと、比較例として開始点から目標点まで各ロボットアームを同期させた方法で生成した軌道Ｌｘとを、２次元関節空間上に射影して表現した概念図である。図５では、ロボットアームＡのコンフィグレーションθａ（θａ１，θａ２）をひとつのベクトルとして横軸に、ロボットアームＢのコンフィグレーションθｂ（θｂ１，θｂ２）をひとつのベクトルとして縦軸にとっている。
【００７７】
図５に示すように、ロボットアームＡ，Ｂを開始点から目標点まで同期させた比較例の軌道Ｌｘの場合は、障害物Ｏｂをよけて、開始点から目標点まで到達するのに、関節空間での距離は最短にはなる。なお、ロボットアームの到達範囲内に配置された障害物以外にも、ロボットアーム同士も特定のコンフィグレーションを取る場合、障害物Ｏｂになり得る。つまり図５中の障害物Ｏｂは、配置された障害物およびロボットアームの衝突（干渉）を共に含んだ“障害物”として描かれている。しかし、ロボットアームＢが、ロボットアームＡの動きに合わせて遅くなるため、ロボットアームＢ単体で考えた場合、動作時間が最短にはならない。
【００７８】
一方、本実施形態の軌道生成方法で生成した軌道Ｌは、関節空間での距離は軌道Ｌｘより長くなるが、ロボットアームＢはロボットアームＡより先に目標点に到達するため、ロボットアームＢの動作時間は速くなる。これは、比較例の軌道生成方法が、時間軸を考慮に入れていないのに対し、本実施形態の軌道生成方法では時間軸を考慮に入れて軌道を生成しているためである。
【００７９】
このときの各ロボットアームＡ，Ｂの動作について説明する。図６は、本発明の実施形態に係る軌道生成方法で生成した軌道を辿って動作するロボットアームの説明図である。図７は、比較例の軌道生成方法で生成した軌道を辿って動作するロボットアームの説明図である。図６（ａ）〜図６（ｇ）は、各動作タイミングでの各ロボットアームＡ，Ｂの姿勢を示し、図７（ａ）〜図７（ｇ）は、各図６（ａ）〜図６（ｇ）の動作タイミングと同じ動作タイミングでの各ロボットアームＡ，Ｂの姿勢を示している。
【００８０】
図７（ａ）〜図７（ｇ）に示すように、比較例の軌道では、開始点から目標点まで終始ロボットアームＡ，Ｂを同期させているため、各ロボットアームＡ，Ｂは各目標点Ｐａｇ，Ｐｂｇに同時に到着する。一方、図６（ａ）〜図６（ｇ）に示すように、本実施形態の軌道では、終了点Ｐａｅ，Ｐｂｅ以降は、ロボットアームＡとロボットアームＢとがそれぞれ単独で目標点Ｐａｇ，Ｐｂｇにたどり着くように最適化されている。そのため、図６（ｅ）では、移動距離の短いロボットアームＡがロボットアームＢよりも先に目標点Ｐａｇに到着する。
【００８１】
ここで、終了点Ｐｃｅ（Ｐａｅ，Ｐｂｅ）について説明する。図６では、ロボットアームＡとロボットアームＢとを併せて１つのロボットアームＣとみなし、経路生成プログラム２３３により経路を生成した場合のロボットアームＡ，Ｂの動作の移り変わりを示す。また、ロボットアームＣの関節空間（４次元）における経路をＨｃとする。また、ロボットアームＣの関節空間（４次元）における経路Ｈｃの任意の中間点（途中点）を終了点候補Ｐｃｉとする。
【００８２】
まず、図６（ａ）における開始点Ｐｃｓから、終了点候補ＰｃｉまでロボットアームＡとロボットアームＢを同期させて軌道を生成する。次に、終了点候補Ｐｃｉからは、ロボットアームＡは、ロボットアームＡの関節空間（２次元）の目標点ＰａｇまでロボットアームＢと同期をせずに軌道を生成する。同様に、ロボットアームＢは終了点候補Ｐｃｉからは、ロボットアームＢの関節空間（２次元）の目標点ＰｂｇまでロボットアームＡと同期をせずに軌道を生成する。このとき、ロボットアームＡとロボットアームＢとが衝突しないで動作ができる、最も開始点Ｐａｓ，Ｐｂｓに近い終了点候補Ｐｃｉを終了点Ｐｃｅとする。このときのロボットアームＡのコンフィグレーションを終了点Ｐａｅ、ロボットアームＢのコンフィグレーションを終了点Ｐｂｅとする。
【００８３】
図６（ｃ）に終了点Ｐｃｅ（Ｐａｅ，Ｐｂｅ）におけるロボットアームＡ及びロボットアームＢの姿勢を示す。例えば、仮に図６（ｂ）の姿勢から、同期をせずに、単腕ロボットアームＡ，Ｂでそれぞれ軌道を生成すると、ロボットアームＡとロボットアームＢとの衝突回避の姿勢の組み合わせがずれるため、衝突が発生すると考えられる。
【００８４】
これに対し本実施形態では、終了点Ｐｃｅである図６（ｃ）では、ロボットアームＡとロボットアームＢが衝突回避を終えていると考えられ、その後、同期をせずにロボットアームＡ，Ｂで単独で軌道を生成し、最短で目標点に到達することができる。
【００８５】
制御装置２００は、このようにして生成した仮の軌道のうち、複数の仮の軌道のうち、複数のロボットアームＡ，Ｂが互いに衝突しない仮の軌道を、実際の各ロボットアーム１０１，１０２の軌道に設定する。そして、制御装置２００は、設定した軌道に従って、実際のロボットアーム１０１，１０２を動作させる。従って、終了点Ｐａｅ，Ｐｂｅ以降は各ロボットアーム１０１，１０２が非同期で動作するため、各ロボットアーム１０１，１０２の開始点Ｐａｓ，Ｐｂｓから目標点Ｐａｇ，Ｐｂｇまでの軌道の動作時間を短縮化することができる。
【００８６】
また、本実施形態では、双腕ロボットアームＡ，Ｂにおいて障害物Ｏｂの回避とロボットアームＡ，Ｂ同士の衝突回避を考慮に入れた軌道を生成するため、障害物がある場合でも双腕ロボットアーム１０１，１０２全体の動作時間を短縮化できる。
【００８７】
また、本実施形態によれば、ロボットアーム１０１，１０２が互いのロボットアームを避ける際にのみ動作同期をし、ロボットアーム１０１，１０２同士の衝突回避の必要がない第２区間では、単腕ロボットアームとして動作速度が最大化する。このため、衝突回避の必要がない第２区間では、ロボットアーム１０１，１０２単独で動作が可能であり、動作の自由度が高くなる。
【００８８】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【００８９】
上記実施形態では、双腕ロボットアーム、すなわち２つのロボットアームの場合について説明したが、２つに限定するものではなく、２つ以上のロボットアームについて本発明は適用可能である。
【００９０】
また、上記実施形態では、終了点Ｐａｅ，Ｐｂｅを探索する際、経路の後方から順に探索を行う場合について説明したが、これに限定されるものではなく、２分法などの探索方法を用いてもよい。
【００９１】
また、上記実施形態では、終了点Ｐａｅ，Ｐｂｅは、ロボットアームＡ，Ｂ同士が干渉しない軌道候補の中の終了点候補のうち、開始点Ｐａｓ，Ｐｂｓに最も近い終了点候補とし、この場合が動作時間の短縮上最も好ましいが、これに限定するものではない。つまり、複数のロボットアームの軌道候補が複数組ある場合は、複数組の軌道候補の中から１組の軌道候補を複数のロボットアームの軌道に設定すればよい。
【００９２】
また、上記実施形態では、ロボットアームを制御する制御装置が、軌道生成方法の各工程にしたがって各ロボットアームの軌道を生成する場合について説明したが、これに限定するものではない。制御装置とは別に軌道生成装置（コンピュータ）に軌道生成方法の各工程にしたがって各ロボットアームの軌道を生成させてもよい。この場合、制御装置は、軌道生成装置から軌道のデータを取得して、各ロボットアームの動作を制御すればよい。
【００９３】
また、上記実施形態の各処理動作は具体的にはＣＰＵ２０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を制御装置２００に供給し、制御装置２００のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【００９４】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ２０４であり、ＨＤＤ２０４にプログラム２３０が格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図２に示すＲＯＭ２０２、記録ディスク２４０、外部記憶装置５００等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。
【００９５】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【００９６】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９７】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【００９８】
また、上記実施形態では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【００９９】
１００…ロボット装置、１０１，１０２…ロボットアーム、２００…制御装置、２０１…ＣＰＵ（演算部）、２３０…プログラム
【図１】
2015160253.tif 000003
【図２】
2015160253.tif 000004
【図３】
2015160253.tif 000005
【図４】
2015160253.tif 000006
【図５】
2015160253.tif 000007
【図６】
2015160253.tif 000008
【図７】
2015160253.tif 000009