(57)【要約】【課題】ロボットの動作の経路を適した経路にする。【解決手段】ロボットを構成する複数のジョイントの角度を成分とする空間において、前記空間における第１の点と前記空間における第２の点が教示され、任意の第３の点を設定し、前記第１の点と前記第３の点との間に第４の点を設定し、前記第４の点と前記第１の点との間に障害物が存在しない場合、前記第４の点を中継点に設定し、前記中継点に基づいて動作する、ロボットである。【選択図】図６
2016198842.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを構成する複数のジョイントの角度を成分とする空間において、
前記空間における第１の点と前記空間における第２の点が教示され、
任意の第３の点を設定し、
前記第１の点と前記第３の点との間に第４の点を設定し、
前記第４の点と前記第１の点との間に障害物が存在しない場合、前記第４の点を中継点に設定し、
前記中継点に基づいて動作する、
ロボット。
【請求項２】
前記第１の点および前記第２の点は、一方が動作の開始点を表し、他方が当該動作の終了点を表す、
請求項１に記載のロボット。
【請求項３】
前記第３の点をランダムに設定する、
請求項１または請求項２のいずれか１項に記載のロボット。
【請求項４】
前記中継点として、複数の候補の点のうちで前記第１の点から前記第２の点までの経路の距離が最小となる点を選択して設定する、
請求項１から請求項３のいずれか１項に記載のロボット。
【請求項５】
前記第１の点、前記第２の点および前記中継点を結ぶ経路の履歴情報に基づいて、同一の状況に対応付けられた経路が前記履歴情報に含まれる場合には、当該経路を使用する、
請求項１から請求項４のいずれか１項に記載のロボット。
【請求項６】
ロボットの動作領域、前記障害物、前記第１の点、前記第２の点、前記中継点のうちの１以上に関する設定をユーザーが行う設定画面を備える、
請求項１から請求項５のいずれか１項に記載のロボット。
【請求項７】
前記第２の点と前記第３の点との間に第５の点を設定し、
前記第５の点と前記第２の点との間に障害物が存在しない場合、前記第５の点を中継点に設定し、
前記中継点に基づいて動作する、
請求項１から請求項６のいずれか１項に記載のロボット。
【請求項８】
開始点から終了点までのロボットの動作を複数回行う場合に、各回ごとに前記動作の経路が異なり得る、ロボット。
【請求項９】
前記動作の経路は、乱数に基づく、
請求項８に記載のロボット。
【請求項１０】
ロボットを構成する複数のジョイントの角度を成分とする空間において、
第１の点と第２の点が与えられ、
任意の第３の点を設定し、
前記第１の点と前記第３の点との間に中継点を設定し、
前記第１の点と前記中継点との間には障害物が存在せず、
前記中継点に基づいて前記ロボットを動作させる、
制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットおよび制御装置に関する。
【背景技術】
【０００２】
特許文献１に係る経路情報修正装置、軌道計画装置、及びロボットの技術では、環境情報に基づいて既存の経路情報に含まれる既存ノードの干渉性を判定し、干渉有りと判定された既存ノードの周囲に追加ノードを生成する。そして、この技術では、当該追加ノードの干渉性の判定結果に応じて、干渉有りと判定された既存ノードを追加ノードに置き換える（特許文献１参照。）。
【０００３】
しかしながら、この技術では、環境情報によって干渉有りと判定される既存ノードが多くなる場合に、それに基づく追加ノードの生成および追加ノードの干渉性の判定に要する計算量が、追加ノードの個数に応じて増大し経路修正処理時間が大きくなることがあった。さらに、この技術では、追加ノードは既存ノードの周辺に生成されるという制約があるため、環境情報によって既存の経路情報の多くが干渉有りとなった場合に、干渉の無い経路情報への修正が困難になることがあった。
【０００４】
また、この技術では、ロボットの動作の経路を修正することに適用すると、ロボットの動作の経路が一意に決まり、ロボットの動作が毎回同じになる。このため、ロボットの特定の部位が他の部位と比べて、より摩耗してしまうことがあった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１９０４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術では、ロボットの動作の経路を適した経路にできない場合があった。
【課題を解決するための手段】
【０００７】
上記課題の少なくとも一つを解決するために本発明の一態様は、ロボットを構成する複数のジョイントの角度を成分とする空間において、前記空間における第１の点と前記空間における第２の点が教示され、任意の第３の点を設定し、前記第１の点と前記第３の点との間に第４の点を設定し、前記第４の点と前記第１の点との間に障害物が存在しない場合、前記第４の点を中継点に設定し、前記中継点に基づいて動作する、ロボットである。
この構成により、ロボットでは、ロボットを構成する複数のジョイントの角度を成分とする空間において、任意の第３の点を設定し、第１の点と第３の点との間に第４の点を設定し、第４の点と第１の点との間に障害物が存在しない場合、第４の点を中継点に設定し、中継点に基づいて動作する。これにより、ロボットでは、ロボットの動作の経路を適した経路にすることができる。
【０００８】
また、本発明の一態様は、ロボットにおいて、前記第１の点および前記第２の点は、一方が動作の開始点を表し、他方が当該動作の終了点を表す、構成が用いられてもよい。
この構成により、ロボットでは、第１の点および第２の点は、一方が動作の開始点を表し、他方が当該動作の終了点を表す。これにより、ロボットでは、開始点と終了点との間のロボットの動作の経路を適した経路にすることができる。
【０００９】
また、本発明の一態様は、ロボットにおいて、前記第３の点をランダムに設定する、構成が用いられてもよい。
この構成により、ロボットでは、第３の点をランダムに設定する。これにより、ロボットでは、ロボットの動作の経路をランダムに決められた経路にすることができ、ロボットの特定の部位が他の部位と比べてより摩耗してしまうことを防止することができる。
【００１０】
また、本発明の一態様は、ロボットにおいて、前記中継点として、複数の候補の点のうちで前記第１の点から前記第２の点までの経路の距離が最小となる点を選択して設定する、構成が用いられてもよい。
この構成により、ロボットでは、中継点として、複数の候補の点のうちで第１の点から第２の点までの経路の距離が最小となる点を選択して設定する。これにより、ロボットでは、ロボットの動作の経路を距離が小さい経路にすることができる。
【００１１】
また、本発明の一態様は、ロボットにおいて、前記第１の点、前記第２の点および前記中継点を結ぶ経路の履歴情報に基づいて、同一の状況に対応付けられた経路が前記履歴情報に含まれる場合には、当該経路を使用する、構成が用いられてもよい。これにより、ロボットでは、履歴情報を利用して、ロボットの動作の経路を決定することができる。
【００１２】
また、本発明の一態様は、ロボットにおいて、ロボットの動作領域、前記障害物、前記第１の点、前記第２の点、前記中継点のうちの１以上に関する設定をユーザーが行う設定画面を備える、構成が用いられてもよい。
この構成により、ロボットでは、設定画面において、ロボットの動作領域、障害物、第１の点、第２の点、中継点のうちの１以上に関する設定をユーザーが行う。これにより、ロボットでは、ユーザーの設定内容を用いて、ロボットの動作の経路を生成することができる。
【００１３】
また、本発明の一態様は、ロボットにおいて、前記第２の点と前記第３の点との間に第５の点を設定し、前記第５の点と前記第２の点との間に障害物が存在しない場合、前記第５の点を中継点に設定し、前記中継点に基づいて動作する、構成が用いられてもよい。
この構成により、ロボットでは、ロボットを構成する複数のジョイントの角度を成分とする空間において、任意の第３の点を設定し、第２の点と第３の点との間に第５の点を設定し、第５の点と第２の点との間に障害物が存在しない場合、第５の点を中継点に設定し、中継点に基づいて動作する。これにより、ロボットでは、第１の点の方から中継点を求めるとともに第２の点の方から中継点を求めて、ロボットの動作の経路を適した経路にすることができる。
【００１４】
上記課題の少なくとも一つを解決するために本発明の一態様は、開始点から終了点までのロボットの動作を複数回行う場合に、各回ごとに前記動作の経路が異なり得る、ロボットである。
この構成により、ロボットでは、開始点から終了点までのロボットの動作を複数回行う場合に、各回ごとに動作の経路が異なり得る。これにより、ロボットの特定の部位が他の部位と比べてより摩耗してしまうことを防止することができる。
【００１５】
また、本発明の一態様は、ロボットにおいて、前記動作の経路は、乱数に基づく、構成が用いられてもよい。
この構成により、ロボットでは、動作の経路は、乱数に基づく。これにより、ロボットでは、乱数を用いて、ロボットの動作の経路を適した経路にすることができる。
【００１６】
上記課題の少なくとも一つを解決するために本発明の一態様は、ロボットを構成する複数のジョイントの角度を成分とする空間において、第１の点と第２の点が与えられ、任意の第３の点を設定し、前記第１の点と前記第３の点との間に中継点を設定し、前記第１の点と前記中継点との間には障害物が存在せず、前記中継点に基づいて前記ロボットを動作させる、制御装置である。
この構成により、制御装置では、ロボットを構成する複数のジョイントの角度を成分とする空間において、任意の第３の点を設定し、第１の点と第３の点との間に中継点を設定し、第１の点と中継点との間には障害物が存在せず、中継点に基づいてロボットを動作させる。これにより、ロボットでは、ロボットの動作の経路を適した経路にすることができる。
【００１７】
以上のように、本発明に係るロボットおよび制御装置によれば、ロボットの動作の経路を適した経路にすることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るロボットの概略的な構成例を示す図である。
【図２】本発明の一実施形態に係る制御装置の概略的な構成例を示すブロック図である。
【図３】本発明の一実施形態に係るアームの経路の概要を示す図である。
【図４】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図５】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図６】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図７】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図８】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図９】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１０】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１１】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１２】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１３】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１４】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１５】本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
【図１６】本発明の一実施形態に係る経路の履歴情報の一例を示す図である。
【図１７】本発明の一実施形態に係る設定画面の一例を示す図である。
【図１８】本発明の一実施形態に係るロボットシステムの概略的な構成例を示す図である。
【発明を実施するための形態】
【００１９】
本発明の実施形態について図面を参照して詳細に説明する。
［ロボットの一例］
図１は、本発明の一実施形態に係るロボット１の概略的な構成例を示す図である。
ロボット１は、上部にある頭部と、中央部にある胴体部と、下部にある台部（台の部分）と、胴体部に設けられた腕部を備える。
ロボット１は、腕部として２本の腕（アーム）を有する双碗のロボットである。
【００２０】
ロボット１は、一方の腕側の構成として、第１のマニピュレーターＭＮＰ１と、第１の力センサー３１−１と、第１のエンドエフェクターＥＮＤ１を備える。これらは一体化され、本実施形態では、第１のマニピュレーターＭＮＰ１と第１のエンドエフェクターＥＮＤ１との間に第１の力センサー３１−１を備える。
ロボット１は、他方の腕側の構成として、第２のマニピュレーターＭＮＰ２と、第２の力センサー３１−２と、第２のエンドエフェクターＥＮＤ２を備える。これらは一体化され、本実施形態では、第２のマニピュレーターＭＮＰ２と第２のエンドエフェクターＥＮＤ２との間に第２の力センサー３１−２を備える。
【００２１】
本実施形態では、一方の腕側の構成（エンドエフェクターＥＮＤ１が取り付けられたマニピュレーターＭＮＰ１）により７軸の自由度の動作を行うことが可能であり、他方の腕側の構成（エンドエフェクターＥＮＤ２が取り付けられたマニピュレーターＭＮＰ２）により７軸の自由度の動作を行うことが可能であるが、他の構成例として、６軸以下または８軸以上の自由度の動作を行う構成が用いられてもよい。
ここで、アームは、７軸の自由度で動作する場合、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増えることによって、例えば、動作が滑らかになり、当該アームの周辺に存在する物体との干渉を容易に回避することができる。また、アームが７軸の自由度で動作する場合、当該アームの制御は、アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。このような理由から、本実施形態では、好ましい一例として、７軸の自由度で動作するアームが用いられている。
また、本実施形態では、胴体部は、腰の部分で、１軸の自由度で回転することが可能な構成である。
【００２２】
また、ロボット１は、頭部の左右のそれぞれに設けられた２個の撮像部（第１の撮像部１１−１、第２の撮像部１１−２）と、第１のマニピュレーターＭＮＰ１の所定部位に設けられた撮像部（第３の撮像部２１−１）と、第２のマニピュレーターＭＮＰ２の所定部位に設けられた撮像部（第４の撮像部２１−２）を備える。
それぞれの撮像部（第１の撮像部１１−１、第２の撮像部１１−２、第３の撮像部２１−１、第４の撮像部２１−２）は、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）あるいはＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）等を用いたカメラである。
第１の撮像部１１−１および第２の撮像部１１−２は、それぞれ、頭部の動きに応じて動かされる。
第３の撮像部２１−１および第４の撮像部２１−２は、それぞれ、第１のマニピュレーターＭＮＰ１および第２のマニピュレーターＭＮＰ２のそれぞれの動きに応じて動かされる。
【００２３】
また、ロボット１は、制御装置５１を備える。本実施形態では、ロボット１は、台部の内部に制御装置５１を備える。
制御装置５１は、ロボット１の動作を制御する。制御装置５１は、例えば、第１のマニピュレーターＭＮＰ１および第２のマニピュレーターＭＮＰ２の動作を制御する。さらに、ロボット１の腰などの部分の動作が可能な構成では、制御装置５１は当該腰などの部分の動作を制御する。
本実施形態では、第１の撮像部１１−１、第２の撮像部１１−２、第３の撮像部２１−１および第４の撮像部２１−２のそれぞれは、画像を撮像して、撮像された画像の情報を制御装置５１に送信（出力）する。また、第１の力センサー３１−１および第２の力センサー３１−２のそれぞれは、第１のエンドエフェクターＥＮＤ１および第２のエンドエフェクターＥＮＤ２のそれぞれに作用する力およびモーメントを検出して、検出結果の情報を制御装置５１に送信（出力）する。制御装置５１は、これらの情報を受信（入力）し、受信された情報を、ロボット１の動作を制御する際に、使用することが可能である。
ここで、第１の撮像部１１−１、第２の撮像部１１−２、第３の撮像部２１−１、第４の撮像部２１−２、第１の力センサー３１−１および第２の力センサー３１−２のそれぞれと制御装置５１とは回線を介して接続されており、当該回線を介して情報を通信することが可能である。
【００２４】
本実施形態では、第１のマニピュレーターＭＮＰ１の位置および姿勢、第２のマニピュレーターＭＮＰ２の位置および姿勢、および各撮像部（第１の撮像部１１−１、第２の撮像部１１−２、第３の撮像部２１−１、第４の撮像部２１−２）により撮像される画像について、座標系のキャリブレーションが行われている。
【００２５】
本実施形態では、制御装置５１は、あらかじめ設定された動作制御プログラムにしたがって、ロボット１の動作を制御する。制御装置５１は、ロボット１の動作を実現するために必要な各種の情報を、ロボット１（本体）に対して教示する。
具体例として、制御装置５１は、各マニピュレーター（第１のマニピュレーターＭＮＰ１および第２のマニピュレーターＭＮＰ２）の動作を制御することで、各エンドエフェクター（第１のエンドエフェクターＥＮＤ１および第２のエンドエフェクターＥＮＤ２）により物体を把持すること、各エンドエフェクターにより把持された物体を移動させること、各エンドエフェクターにより把持された物体を所定位置に載置して離す（把持を解除する）こと、各エンドエフェクターにより把持された物体を加工（例えば、穴開けなど）すること、などが可能である。
【００２６】
［制御装置の一例］
図２は、本発明の一実施形態に係る制御装置５１の概略的な構成例を示すブロック図である。
制御装置５１は、入力部１０１と、出力部１０２と、記憶部１０３と、制御部１０４を備える。制御部１０４は、状態設定部１２１と、状態探索部１２２と、障害判定部１２３と、距離判定部１２４と、状態決定部１２５と、履歴管理部１２６を備える。
【００２７】
入力部１０１は、外部から情報を入力する。例えば、入力部１０１は、ユーザーにより操作される操作部を有し、操作部の操作に応じた情報を入力してもよく、また、外部の装置から出力された情報を入力してもよい。
出力部１０２は、外部へ情報を出力する。例えば、出力部１０２は、表示画面を有し、当該表示画面に情報を出力してもよく、また、外部の装置へ情報を出力してもよい。
記憶部１０３は、情報を記憶する。例えば、記憶部１０３は、動作制御プログラム、および各種のパラメーターなどを記憶する。
制御部１０４は、ロボット１に関する各種の制御を行う。例えば、制御部１０４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサーを備え、記憶部１０３に記憶された動作制御プログラムを実行することにより、各種の制御を行う。
【００２８】
［アームの経路の概要］
図３は、本発明の一実施形態に係るアームの経路の概要を示す図である。
本実施形態では、ｎ（ｎは２以上の整数）個のジョイントの角度（本実施形態では、ジョイント角度と呼ぶ。）θ１〜θｎをｎ個の成分（ｎ個の軸の座標値）とするｎ次元空間（本実施形態で、ジョイント角度空間と呼ぶ。）を想定する。ここで、ｎは、アームを動作させるときに変化させることが可能なジョイントの数（アクチュエーターの数）となる。例えば、アームとして７軸の第１のマニピュレーターＭＮＰ１を動作させる場合には、ｎ＝７となる。同様に、アームとして７軸の第２のマニピュレーターＭＮＰ２を動作させる場合には、ｎ＝７となる。また、２本のアームとして７軸の第１のマニピュレーターＭＮＰ１および７軸の第２のマニピュレーターＭＮＰ２を動作させる場合には、ｎ＝１４となる。また、アームの動作として、７軸の第１のマニピュレーターＭＮＰ１および７軸の第２のマニピュレーターＭＮＰ２を動作させるとともに、１軸の胴体部の回転を動作させる場合には、ｎ＝１５となる。
このように、ｎ個のアクチュエーターを制御してアームを動作させる場合、ｎ個のアクチュエーターのジョイントの角度（ジョイント角度）θ１〜θｎが決まると、当該アームの位置および姿勢が一意に決まる。
また、本実施形態では、ｎ次元空間（ジョイント角度空間）は、ｎ個のジョイント角度θ１〜θｎの軸のすべてが互いに直交する空間である。また、ｎ次元空間（ジョイント角度空間）において、２個の点（ノード）を結ぶ直線とは、これら２個の点を最短距離（最小の距離）で結ぶ線である。
【００２９】
図３は、ｎ次元空間（ジョイント角度空間）を２次元の平面に写像したイメージを示す。
図３には、動作前アーム状態Ａ１、目標アーム状態Ａ２、中継点アーム状態Ｃ１、障害物状態Ｂ１、Ｂ２、経路Ｄ１を示してある。なお、図３において、中継点アーム状態Ｃ１は複数のうちの１個のみに符号を付してあり、経路Ｄ１は複数のうちの１個のみに符号を付してある。
【００３０】
動作前アーム状態Ａ１は、動作前のアームの位置および姿勢を表す。一例として、動作前アーム状態Ａ１は、アームの現状の位置および姿勢であってもよい。制御装置５１は、アームの現状の位置および姿勢を特定することが可能である。
目標アーム状態Ａ２は、目標となるアームの位置および姿勢を表す。一例として、目標アーム状態Ａ２は、ユーザーにより設定されてもよい。
【００３１】
障害物状態Ｂ１、Ｂ２は、障害物の位置および姿勢を表す。障害物は、例えば、ロボット１自体（自己衝突の場合）、およびそれ以外の障害となる物体（把持等する対象の物体を除く。）を含む。すなわち、アームはロボット１自体およびそれ以外の障害となる物体にぶつからないように動作させられることが必要である。ロボット１自体以外の障害となる物体は、例えば、作業空間にある周辺機器を含んでもよく、具体例として、給材装置、加工装置、除材装置、製造装置、容器、テーブルなどを含んでもよい。
【００３２】
制御装置５１は、ロボット１自体の位置および姿勢を特定することが可能である。
また、制御装置５１は、撮像部（第１の撮像部１１−１、第２の撮像部１１−２、第３の撮像部２１−１および第４の撮像部２１−２のうちの１以上）により撮像された画像に基づいて、ロボット１自体以外の障害となる物体の位置および姿勢を特定することが可能である。他の構成例として、ロボット１自体以外の障害となる物体の位置および姿勢の情報が、あらかじめ制御装置５１の記憶部１０３に記憶されて、参照されてもよい。
【００３３】
本実施形態では、ジョイント角度空間において、動作前アーム状態Ａ１および目標アーム状態Ａ２が設定される。そして、制御装置５１は、ジョイント角度空間において、動作前アーム状態Ａ１と目標アーム状態Ａ２との間を接続し、かつ障害物状態Ｂ１、Ｂ２と接触（衝突）しない１個以上の中継点アーム状態Ｃ１を決定する。また、制御装置５１は、動作前アーム状態Ａ１から中継点アーム状態Ｃ１を通過して目標アーム状態Ａ２に到達するまでの経路Ｄ１の全体の距離が小さくなるように、中継点アーム状態Ｃ１を決定する。そして、状態設定部１２１は、このような中継点アーム状態Ｃ１を設定する。ここで、ジョイント角度空間における距離が小さい方が、ジョイント角度の変化量が小さいため、動作の制御が効率的である。
図３は、このようにして設定された動作前アーム状態Ａ１から中継点アーム状態Ｃ１を通過して目標アーム状態Ａ２に到達するまでの経路Ｄ１の一例を示してある。
【００３４】
ここで、制御装置５１は、ジョイント角度空間において、動作前アーム状態Ａ１に相当するｎ個のジョイント角度から目標アーム状態Ａ２に相当するｎ個のジョイント角度へと結ぶ１個以上の中継点アーム状態Ｃ１に相当するｎ個のジョイント角度に順に制御することで、アームを動作前アーム状態Ａ１から目標アーム状態Ａ２へ変化させることができる。全体の経路Ｄ１において、アームの自己衝突あるいは作業空間にある周辺機器など（作業の環境）との衝突が発生しないことが確認されることが必要である。
【００３５】
［アームの経路の生成の概要］
本実施形態では、制御装置５１の制御部１０４が制御して、ジョイント角度空間において、アームの経路Ｄ１を生成する。
状態設定部１２１は、ジョイント角度空間において、中継点アーム状態候補などを設定する。中継点アーム状態候補は、中継点アーム状態Ｃ１の候補である。
状態探索部１２２は、ジョイント角度空間において、中継点アーム状態Ｃ１などを探索する。
障害判定部１２３は、ジョイント角度空間において、経路Ｄ１が障害物状態Ｂ１、Ｂ２に接触するか否かを判定する。
距離判定部１２４は、ジョイント角度空間において、距離を判定する。
状態決定部１２５は、ジョイント角度空間において、中継点アーム状態Ｃ１を決定する。
【００３６】
［アームの経路の生成の具体例］
図４〜図１５を参照して、アームの経路の生成の具体例を示す。なお、図４〜図１５の例では、図３の例とは異なる経路が得られる場合を示す。
図４〜図１５は、本発明の一実施形態に係るアームの経路の生成の具体例を説明するための図である。
図４〜図１５では、図３と同様に、ｎ次元空間（ジョイント角度空間）を２次元の平面に写像したイメージを示す。
本実施形態では、制御装置５１の制御部１０４が制御して、アームの経路を生成する処理を実行する。
【００３７】
（手順の例１）
図４を参照して説明する。
まず、状態設定部１２１は、ジョイント角度空間において、動作前アーム状態Ａ１、目標アーム状態Ａ２、および障害物状態Ｂ１、Ｂ２を設定する。
そして、状態設定部１２１は、新たに追加的に、１個の中継点アーム状態候補Ｅ１を設定する。ここで、状態設定部１２１は、障害物状態Ｂ１、Ｂ２との衝突が発生しないように、中継点アーム状態候補Ｅ１を設定する。一例として、状態設定部１２１は、ユーザーにより行われる操作によって指示された中継点アーム状態候補Ｅ１を設定してもよい。他の例として、状態設定部１２１は、あらかじめ設定された手順にしたがって（自動的に）中継点アーム状態候補Ｅ１を設定してもよく、例えば、ランダムな位置（例えば、ランダムな値に基づく位置）に中継点アーム状態候補Ｅ１を設定してもよい。また、状態設定部１２１は、ジョイント角度空間における所定の領域（動作領域）の内側に中継点アーム状態候補Ｅ１を設定してもよい。当該所定の領域は、例えば、動作前アーム状態Ａ１および目標アーム状態Ａ２を含む領域であってもよく、動作前アーム状態Ａ１および目標アーム状態Ａ２に基づいて、あらかじめ定められた手順によって決められる領域であってもよい。また、当該所定の領域は、例えば、各ジョイント角度θｉ（ｉ＝１、２、・・・、ｎ）の取り得る値に基づいて決められてもよく、各ジョイント角度θｉが取り得ることが可能な領域の中で決められてもよい。なお、ランダムな値は、例えば、乱数を用いて求められてもよい。
【００３８】
（手順の例２）
図５を参照して説明する。
本実施形態では、動作前アーム状態Ａ１および当該動作前アーム状態Ａ１の方から結ばれていく中継点アーム状態により構成されるツリーを動作前アーム状態側ツリーと呼ぶ。また、目標アーム状態Ａ２および当該目標アーム状態Ａ２の方から結ばれていく中継点アーム状態により構成されるツリーを目標アーム状態側ツリーと呼ぶ。なお、動作前アーム状態Ａ１と目標アーム状態Ａ２とが中継点アーム状態を介して接続されたときには、動作前アーム状態側ツリーに含まれる中継点アーム状態と目標アーム状態側ツリーに含まれる中継点アーム状態とが一致する。
【００３９】
状態探索部１２２は、新たに追加された中継点アーム状態候補Ｅ１に対して、動作前アーム状態側ツリーに所属するノード（動作前アーム状態Ａ１および中継点アーム状態）のうちで、最も距離が小さい（近い）ノードを探索する。ここで、中継点アーム状態候補Ｅ１が最初に追加されたときは、動作前アーム状態Ａ１から伸びる中継点アーム状態は存在せず、動作前アーム状態側ツリーに所属するノードは動作前アーム状態Ａ１のみである。このため、状態探索部１２２は、動作前アーム状態Ａ１を探索結果として取得する。
【００４０】
同様に、状態探索部１２２は、新たに追加された中継点アーム状態候補Ｅ１に対して、目標アーム状態側ツリーに所属するノード（目標アーム状態Ａ２および中継点アーム状態）のうちで、最も距離が小さい（近い）ノードを探索する。ここで、中継点アーム状態候補Ｅ１が最初に追加されたときは、目標アーム状態Ａ２から伸びる中継点アーム状態は存在せず、目標アーム状態側ツリーに所属するノードは目標アーム状態Ａ２のみである。このため、状態探索部１２２は、目標アーム状態Ａ２を探索結果として取得する。
【００４１】
図５では、中継点アーム状態候補Ｅ１と探索結果である動作前アーム状態Ａ１とを結ぶ線（仮の経路）を示してある。また、中継点アーム状態候補Ｅ１と探索結果である目標アーム状態Ａ２とを結ぶ線（仮の経路）を示してある。
【００４２】
（手順の例３）
図６を参照して説明する。
図５の例では、新たに追加された中継点アーム状態候補Ｅ１と、動作前アーム状態側ツリーに所属するノードのうちで当該中継点アーム状態候補Ｅ１に最も距離が小さいノードとを結ぶ直線は、中継点アーム状態候補Ｅ１と動作前アーム状態Ａ１とを結ぶ直線となる。
障害判定部１２３は、当該直線上のジョイント角度（位置および姿勢）について、動作前アーム状態Ａ１の側から新たに追加された中継点アーム状態候補Ｅ１の側へ向かって、障害物状態Ｂ１、Ｂ２との接触の有無を判定して確認する。
本実施形態では、障害判定部１２３は、前記直線上に動作前アーム状態Ａ１の側から新たに追加された中継点アーム状態候補Ｅ１の側へ向かって１個以上の中間アーム状態Ｆ１、Ｆ２、Ｆ３（位置および姿勢）を仮のノードとして設定して、各中間アーム状態Ｆ１、Ｆ２、Ｆ３が障害物状態Ｂ１、Ｂ２に接触するか否かを判定する。図６の例では、中間アーム状態Ｆ１、Ｆ２は障害物状態Ｂ１、Ｂ２に接触せず（衝突無し）、中間アーム状態Ｆ３は障害物状態Ｂ１、Ｂ２に接触する（衝突有り）。つまり、動作前アーム状態Ａ１から中間アーム状態Ｆ２までの直線上には障害物状態Ｂ１、Ｂ２は存在しないが、中間アーム状態Ｆ２から中間アーム状態Ｆ３までの直線上には障害物状態Ｂ１、Ｂ２が存在して衝突する。ここで、これらの中間アーム状態Ｆ１、Ｆ２、Ｆ３は、任意に設定されてもよく、例えば、所定の距離ごとに離隔させて設定されてもよい。
【００４３】
（手順の例４）
図７を参照して説明する。
状態決定部１２５は、図６を参照して説明した障害判定部１２３による判定結果に基づいて、いずれかの中間アーム状態Ｆ１、Ｆ２、Ｆ３が障害物状態Ｂ１、Ｂ２と接触すると判定された場合、次の処理を行う。すなわち、状態決定部１２５は、前記直線上に動作前アーム状態Ａ１の側から新たに追加された中継点アーム状態候補Ｅ１の側へ向かって設定された中間アーム状態Ｆ１、Ｆ２、Ｆ３のうちで、障害物状態Ｂ１、Ｂ２と接触した中間アーム状態Ｆ３に対して、直前の中間アーム状態Ｆ２を中継点アーム状態Ｃ１１として決定する。そして、状態設定部１２１は、当該中継点アーム状態Ｃ１１を設定して、当該中継点アーム状態Ｃ１１を動作前アーム状態側ツリーに追加する。これにより、動作前アーム状態側ツリーにおいて、当該中継点アーム状態Ｃ１１とそれに隣接するノード（ここでは、動作前アーム状態Ａ１）とを結ぶ（接続する）経路Ｄ１１が形成される。
なお、他の例として、状態決定部１２５は、いずれのノードも障害物状態Ｂ１、Ｂ２と接触しないと判定された場合、新たに追加された中継点アーム状態候補Ｅ１を中継点アーム状態として決定する。そして、状態設定部１２１は、当該中継点アーム状態を設定して、当該中継点アーム状態を動作前アーム状態側ツリーに追加する。この場合、動作前アーム状態側ツリーにおいて、当該中継点アーム状態とそれに隣接するノード（ここでは、動作前アーム状態Ａ１）とを結ぶ経路が形成される。
【００４４】
（手順の例５）
図８を参照して説明する。ここでは、図６を参照して示された動作前アーム状態Ａ１の側の処理と同様な処理を目標アーム状態Ａ２の側について行う。
図５の例では、新たに追加された中継点アーム状態候補Ｅ１と、目標アーム状態側ツリーに所属するノードのうちで当該中継点アーム状態候補Ｅ１に最も距離が小さいノードとを結ぶ直線は、中継点アーム状態候補Ｅ１と目標アーム状態Ａ２とを結ぶ直線となる。
障害判定部１２３は、当該直線上のジョイント角度（位置および姿勢）について、目標アーム状態Ａ２の側から新たに追加された中継点アーム状態候補Ｅ１の側へ向かって、障害物状態Ｂ１、Ｂ２との接触の有無を判定して確認する。
本実施形態では、障害判定部１２３は、前記直線上に目標アーム状態Ａ２の側から新たに追加された中継点アーム状態候補Ｅ１の側へ向かって１個以上の中間アーム状態Ｇ１（位置および姿勢）を仮のノードとして設定して、各中間アーム状態Ｇ１が障害物状態Ｂ１、Ｂ２に接触するか否かを判定する。なお、図８では、設定された複数の中間アーム状態のうちで１個の中間アーム状態Ｇ１のみに符号を付してある。図８の例では、これらのすべての中間アーム状態Ｇ１は障害物状態Ｂ１、Ｂ２に接触しない。ここで、これらの中間アーム状態Ｇ１は、任意に設定されてもよく、例えば、所定の距離ごとに離隔させて設定されてもよい。
【００４５】
（手順の例６）
図９を参照して説明する。ここでは、図７を参照して示された動作前アーム状態Ａ１の側の処理と同様な処理を目標アーム状態Ａ２の側について行う。
状態決定部１２５は、図８を参照して説明した障害判定部１２３による判定結果に基づいて、いずれの中間アーム状態Ｇ１も障害物状態Ｂ１、Ｂ２と接触しないと判定された場合、次の処理を行う。すなわち、状態決定部１２５は、新たに追加された中継点アーム状態候補Ｅ１を中継点アーム状態Ｃ２１として決定する。そして、状態設定部１２１は、当該中継点アーム状態Ｃ２１を設定して、当該中継点アーム状態Ｃ２１を目標アーム状態側ツリーに追加する。これにより、目標アーム状態側ツリーにおいて、当該中継点アーム状態Ｃ２１とそれに隣接するノード（ここでは、目標アーム状態Ａ２）とを結ぶ経路Ｄ２１が形成される。
なお、他の例として、状態決定部１２５は、いずれかの中間アーム状態Ｇ１が障害物状態Ｂ１、Ｂ２と接触すると判定された場合、次の処理を行う。すなわち、状態決定部１２５は、前記直線上に目標アーム状態Ａ２の側から新たに追加された中継点アーム状態候補Ｅ１の側へ向かって設定された中間アーム状態Ｇ１のうちで、障害物状態Ｂ１、Ｂ２と接触した中間アーム状態Ｇ１に対して、直前の中間アーム状態Ｇ１を中継点アーム状態として決定する。そして、状態設定部１２１は、当該中継点アーム状態を設定して、当該中継点アーム状態を目標アーム状態側ツリーに追加する。この場合、目標アーム状態側ツリーにおいて、当該中継点アーム状態とそれに隣接するノード（ここでは、目標アーム状態Ａ２）とを結ぶ（接続する）経路が形成される。
【００４６】
（手順の例７）
図１０を参照して説明する。
状態設定部１２１は、新たに追加的に、１個の中継点アーム状態候補Ｅ１１を設定する。ここで、状態設定部１２１は、障害物状態Ｂ１、Ｂ２との衝突が発生しないように、中継点アーム状態候補Ｅ１１を設定する。
なお、この設定は、図４の例において中継点アーム状態候補Ｅ１を設定した手法と同様な手法で行われる。
【００４７】
状態探索部１２２は、新たに追加された中継点アーム状態候補Ｅ１１に対して、動作前アーム状態側ツリーに所属するノード（動作前アーム状態Ａ１および中継点アーム状態Ｃ１１）のうちで、最も距離が小さい（近い）ノードを探索する。図１０の例では、状態探索部１２２は、中継点アーム状態Ｃ１１を探索結果として取得する。
同様に、状態探索部１２２は、新たに追加された中継点アーム状態候補Ｅ１１に対して、目標アーム状態側ツリーに所属するノード（目標アーム状態Ａ２および中継点アーム状態Ｃ２１）のうちで、最も距離が小さい（近い）ノードを探索する。図１０の例では、状態探索部１２２は、中継点アーム状態Ｃ２１を探索結果として取得する。
【００４８】
図１０では、中継点アーム状態候補Ｅ１１と探索結果である中継点アーム状態Ｃ１１とを結ぶ線（仮の経路）を示してある。また、中継点アーム状態候補Ｅ１１と探索結果である中継点アーム状態Ｃ２１とを結ぶ線（仮の経路）を示してある。
【００４９】
（手順の例８）
図１１を参照して説明する。
図１０の例では、新たに追加された中継点アーム状態候補Ｅ１１と、動作前アーム状態側ツリーに所属するノードのうちで当該中継点アーム状態候補Ｅ１１に最も距離が小さいノードとを結ぶ直線は、中継点アーム状態候補Ｅ１１と中継点アーム状態Ｃ１１とを結ぶ直線となる。
障害判定部１２３は、当該直線上のジョイント角度（位置および姿勢）について、中継点アーム状態Ｃ１１の側から新たに追加された中継点アーム状態候補Ｅ１１の側へ向かって、障害物状態Ｂ１、Ｂ２との接触の有無を判定して確認する。
本実施形態では、障害判定部１２３は、前記直線上に中継点アーム状態Ｃ１１の側から新たに追加された中継点アーム状態候補Ｅ１１の側へ向かって１個以上の中間アーム状態Ｆ１１（位置および姿勢）を仮のノードとして設定して、各中間アーム状態Ｆ１１が障害物状態Ｂ１、Ｂ２に接触するか否かを判定する。なお、図１１では、設定された複数の中間アーム状態のうちで１個の中間アーム状態Ｆ１１のみに符号を付してある。図１１の例では、これらのすべての中間アーム状態Ｆ１１は障害物状態Ｂ１、Ｂ２に接触しない。ここで、これらの中間アーム状態Ｆ１１は、任意に設定されてもよく、例えば、所定の距離ごとに離隔させて設定されてもよい。
【００５０】
同様に、図１０の例では、新たに追加された中継点アーム状態候補Ｅ１１と、目標アーム状態側ツリーに所属するノードのうちで当該中継点アーム状態候補Ｅ１１に最も距離が小さいノードとを結ぶ直線は、中継点アーム状態候補Ｅ１１と中継点アーム状態Ｃ２１とを結ぶ直線となる。
障害判定部１２３は、当該直線上のジョイント角度（位置および姿勢）について、中継点アーム状態Ｃ２１の側から新たに追加された中継点アーム状態候補Ｅ１１の側へ向かって、障害物状態Ｂ１、Ｂ２との接触の有無を判定して確認する。
本実施形態では、障害判定部１２３は、前記直線上に中継点アーム状態Ｃ２１の側から新たに追加された中継点アーム状態候補Ｅ１１の側へ向かって１個以上の中間アーム状態Ｇ１１（位置および姿勢）を仮のノードとして設定して、各中間アーム状態Ｇ１１が障害物状態Ｂ１、Ｂ２に接触するか否かを判定する。なお、図１１では、設定された複数の中間アーム状態のうちで１個の中間アーム状態Ｇ１１のみに符号を付してある。図１１の例では、これらのすべての中間アーム状態Ｇ１１は障害物状態Ｂ１、Ｂ２に接触しない。ここで、これらの中間アーム状態Ｇ１１は、任意に設定されてもよく、例えば、所定の距離ごとに離隔させて設定されてもよい。
【００５１】
（手順の例９）
図１２を参照して説明する。図１２には、図１１を参照して説明した場合の次に行われる処理の一例を示してある。
図１１の例において、動作前アーム状態Ａ１の側の前記直線上の中間アーム状態Ｆ１１および目標アーム状態Ａ２の側の前記直線上の中間アーム状態Ｇ１１の両方について、障害物状態Ｂ１、Ｂ２に接触しないことが判定された場合には、状態決定部１２５は、新たに追加された中継点アーム状態候補Ｅ１１を中継点アーム状態Ｃ３１として決定する。そして、状態設定部１２１は、当該中継点アーム状態Ｃ３１を設定して、これまでに得られているツリー（動作前アーム状態側ツリーおよび目標アーム状態側ツリー）をたどって、動作前アーム状態Ａ１から目標アーム状態Ａ２に至る中継点アーム状態Ｃ１１、Ｃ３１、Ｃ２１および経路Ｄ１１、Ｄ３１、Ｄ４１、Ｄ２１を確定させることができる。
【００５２】
具体的に説明する。
状態決定部１２５は、動作前アーム状態Ａ１の側の処理として、図１１を参照して説明した障害判定部１２３による判定結果に基づいて、いずれの中間アーム状態Ｆ１１も障害物状態Ｂ１、Ｂ２と接触しないと判定された場合、次の処理を行う。すなわち、状態決定部１２５は、新たに追加された中継点アーム状態候補Ｅ１１を中継点アーム状態Ｃ３１として決定する。そして、状態設定部１２１は、当該中継点アーム状態Ｃ３１を設定して、当該中継点アーム状態Ｃ３１を動作前アーム状態側ツリーに追加する。これにより、動作前アーム状態側ツリーにおいて、当該中継点アーム状態Ｃ３１とそれに隣接するノード（ここでは、中継点アーム状態Ｃ１１）とを結ぶ経路Ｄ３１が形成される。
同様に、状態決定部１２５は、目標アーム状態Ａ２の側の処理として、図１１を参照して説明した障害判定部１２３による判定結果に基づいて、いずれの中間アーム状態Ｇ１１も障害物状態Ｂ１、Ｂ２と接触しないと判定された場合、次の処理を行う。すなわち、状態決定部１２５は、新たに追加された中継点アーム状態候補Ｅ１１を中継点アーム状態Ｃ３１として決定する。そして、状態設定部１２１は、当該中継点アーム状態Ｃ３１を設定して、当該中継点アーム状態Ｃ３１を目標アーム状態側ツリーに追加する。これにより、目標アーム状態側ツリーにおいて、当該中継点アーム状態Ｃ３１とそれに隣接するノード（ここでは、中継点アーム状態Ｃ２１）とを結ぶ経路Ｄ４１が形成される。
ここで、状態決定部１２５により行われる動作前アーム状態Ａ１の側の処理と目標アーム状態Ａ２の側の処理の順序としては、任意であってもよく、または、これらの処理が同時に並列して行われてもよい。
【００５３】
（手順の例１０）
図１３〜図１５では、図１１を参照して説明した場合の次に行われる処理の他の一例として、図１２を参照して説明した処理とは異なる処理を示す。
ここで、新たに追加された中継点アーム状態候補Ｅ１１と、目標アーム状態側ツリーに所属するノードのうちで当該中継点アーム状態候補Ｅ１１に最も距離が小さいノードとを結ぶ直線は、中継点アーム状態候補Ｅ１１と中継点アーム状態Ｃ２１とを結ぶ直線となる。
同様に、新たに追加された中継点アーム状態候補Ｅ１１と、目標アーム状態側ツリーに所属するノードのうちで当該中継点アーム状態候補Ｅ１１に最も距離が小さいノードとを結ぶ直線は、中継点アーム状態候補Ｅ１１と中継点アーム状態Ｃ２１とを結ぶ直線となる。
【００５４】
図１３〜図１５に示される処理では、図１２を参照して説明した処理で得られる経路（経路Ｄ３１および経路Ｄ４１）よりも距離が小さい経路を決定することを試みる。すなわち、図１１の例において、動作前アーム状態Ａ１の側の前記直線上の中間アーム状態Ｆ１１および目標アーム状態Ａ２の側の前記直線上の中間アーム状態Ｇ１１の両方について、障害物状態Ｂ１、Ｂ２に接触しないことが判定された場合には、動作前アーム状態Ａ１の側の前記直線上のノード（位置および姿勢）と、目標アーム状態Ａ２の側の前記直線上のノード（位置および姿勢）と、を結び、これら２個のノードを中継点アーム状態として確定させることができる可能性がある。本処理では、距離を小さくできる２個のノード（捷路ノード）の組み合わせを決定する。
【００５５】
具体的に説明する。
図１３を参照して説明する。
距離判定部１２４は、図１１の例において、動作前アーム状態Ａ１の側の前記直線上の中間アーム状態Ｆ１１および目標アーム状態Ａ２の側の前記直線上の中間アーム状態Ｇ１１の両方について、障害物状態Ｂ１、Ｂ２に接触しないことが判定された場合には、動作前アーム状態Ａ１の側の前記直線上のジョイント角度（位置および姿勢）と、目標アーム状態Ａ２の側の前記直線上のジョイント角度（位置および姿勢）と、について、距離を小さくできる組み合わせを決定する。ここで、距離を小さくできる組み合わせとしては、例えば、選択可能な範囲で距離が最小となる組み合わせが用いられる。
【００５６】
本実施形態では、距離判定部１２４は、動作前アーム状態Ａ１の側の前記直線上に、動作前アーム状態Ａ１の側（図１３の例では、中継点アーム状態Ｃ１１の側）から新たに追加された中継点アーム状態候補Ｅ１１の側へ向かって１個以上の追加状態候補Ｈ１、Ｈ２、Ｈ３、Ｈ４（仮のノード）を設定する。また、距離判定部１２４は、目標アーム状態Ａ２の側の前記直線上に、目標アーム状態Ａ２の側（図１３の例では、中継点アーム状態Ｃ２１の側）から新たに追加された中継点アーム状態候補Ｅ１１の側へ向かって１個以上の追加状態候補Ｉ１、Ｉ２、Ｉ３、Ｉ４、Ｉ５、Ｉ６（仮のノード）を設定する。ここで、これらの追加状態候補Ｈ１〜Ｈ４、Ｉ１〜Ｉ６は、任意に設定されてもよく、例えば、所定の距離ごとに離隔させて設定されてもよい。また、これらの追加状態候補Ｈ１〜Ｈ４、Ｉ１〜Ｉ６は、例えば、障害物状態Ｂ１、Ｂ２との接触の有無を確認するために設定されたノード（図１１に示される中間アーム状態Ｆ１１、Ｇ１１）と同じであってもよく、または、異なってもよい。
【００５７】
（手順の例１１）
図１４を参照して説明する。
障害判定部１２３は、動作前アーム状態Ａ１の側の追加状態候補Ｈ１〜Ｈ４のそれぞれと目標アーム状態Ａ２の側の追加状態候補Ｉ１〜Ｉ６のそれぞれとの組み合わせに関して、互いを結ぶ直線上のジョイント角度（位置および姿勢）について、障害物状態Ｂ１、Ｂ２との接触の有無を判定して確認する。図１４の例では、追加状態候補Ｈ１〜Ｈ４、Ｉ１〜Ｉ６の符号のみを用いて示すと、障害判定部１２３は、（Ｈ１→Ｉ５）、（Ｈ１→Ｉ６）、（Ｈ２→Ｉ４）、（Ｈ２→Ｉ５）、（Ｈ２→Ｉ６）、（Ｈ３→Ｉ１）、（Ｈ３→Ｉ２）、（Ｈ３→Ｉ３）、（Ｈ３→Ｉ４）、（Ｈ３→Ｉ５）、（Ｈ３→Ｉ６）、（Ｈ４→Ｉ１）、（Ｈ４→Ｉ２）、（Ｈ４→Ｉ３）、（Ｈ４→Ｉ４）、（Ｈ４→Ｉ５）、（Ｈ４→Ｉ６）の組み合わせについて、障害物状態Ｂ１、Ｂ２との接触が無いと判定し、他の組み合わせについては障害物状態Ｂ１、Ｂ２との接触が有ると判定する。
【００５８】
距離判定部１２４は、障害物状態Ｂ１、Ｂ２との接触が無いと判定された追加状態候補の組み合わせ（追加状態候補Ｈ１〜Ｈ４のそれぞれと追加状態候補Ｉ１〜Ｉ６のそれぞれとの組み合わせ）のそれぞれについて、動作前アーム状態Ａ１の側の直前の中継点アーム状態Ｃ１１と目標アーム状態Ａ２の側の直前の中継点アーム状態Ｃ２１とを結ぶ経路部分の距離を検出する。具体的には、当該経路部分は、中継点アーム状態Ｃ１１から、追加状態候補Ｈ１〜Ｈ４のうちのいずれか１個および追加状態候補Ｉ１〜Ｉ６のうちのいずれか１個を通過して、中継点アーム状態Ｃ２１に至る経路部分である。そして、距離判定部１２４は、これらの組み合わせのうちで、当該距離が最小となる組み合わせを判定する。図１４の例では、距離判定部１２４は、追加状態候補Ｈ２と追加状態候補Ｉ４との組み合わせが、当該距離が最小となる組み合わせであると判定する。
【００５９】
（手順の例１２）
図１５を参照して説明する。
状態決定部１２５は、距離判定部１２４により判定された距離が最小となる組み合わせについて、当該組み合わせに係る動作前アーム状態Ａ１の側の追加状態候補Ｈ２を選択して中継点アーム状態Ｃ４１として決定するとともに、当該組み合わせに係る目標アーム状態Ａ２の側の追加状態候補Ｉ４を選択して中継点アーム状態Ｃ５１として決定する。そして、状態設定部１２１は、中継点アーム状態Ｃ４１および中継点アーム状態Ｃ５１を設定して、これらをツリー（動作前アーム状態側ツリーおよび目標アーム状態側ツリー）に追加する。これにより、ツリー（動作前アーム状態側ツリーおよび目標アーム状態側ツリー）において、当該中継点アーム状態Ｃ４１とそれに隣接するノード（ここでは、中継点アーム状態Ｃ１１）とを結ぶ経路Ｄ５１、当該中継点アーム状態Ｃ５１とそれに隣接するノード（ここでは、中継点アーム状態Ｃ２１）とを結ぶ経路Ｄ６１、および当該中継点アーム状態Ｃ４１と当該中継点アーム状態Ｃ５１とを結ぶ経路Ｄ７１が形成される。
【００６０】
このように、図１３〜図１５の例では、動作前アーム状態Ａ１の側の前記直線上のジョイント角度（位置および姿勢）と目標アーム状態Ａ２の側の前記直線上のジョイント角度（位置および姿勢）について、互いを結ぶ経路が複数存在する場合には、状態決定部１２５は、距離（ジョイント角度の変化量）が最小となる組み合わせを選択して決定する。
【００６１】
ここで、図１５の例では、状態設定部１２１は、これまでに得られているツリー（動作前アーム状態側ツリーおよび目標アーム状態側ツリー）をたどって、動作前アーム状態Ａ１から目標アーム状態Ａ２に至る中継点アーム状態Ｃ１１、Ｃ４１、Ｃ５１、Ｃ２１および経路Ｄ１１、Ｄ５１、Ｄ７１、Ｄ６１、Ｄ２１を確定させることができる。
【００６２】
なお、図１３〜図１５の例に示される処理において、動作前アーム状態Ａ１の側の前記直線上のジョイント角度（位置および姿勢）と目標アーム状態Ａ２の側の前記直線上のジョイント角度（位置および姿勢）について、互いを結ぶ追加状態候補間の経路（追加状態候補Ｈ１〜Ｈ４のそれぞれと追加状態候補Ｉ１〜Ｉ６のそれぞれとの間の経路）のうちで、障害物状態Ｂ１、Ｂ２と接触しない経路が無いと判定された場合には、状態決定部１２５は、例えば、図１０の例に示される処理により、中継点アーム状態Ｃ３１および経路Ｄ３１、Ｄ４１を決定して確定させてもよい。
【００６３】
また、図１３〜図１５の例に示される処理では、新たに追加された中継点アーム状態候補Ｅ１１を候補のままとして処理を行った。他の構成例として、図１３〜図１５の例に示される処理において、まず、状態決定部１２５は、新たに追加された中継点アーム状態候補Ｅ１１を中継点アーム状態Ｃ３１として決定してもよい。この場合、状態設定部１２１は、当該中継点アーム状態Ｃ３１を設定して、当該中継点アーム状態Ｃ３１をツリー（動作前アーム状態側ツリーおよび目標アーム状態側ツリー）に追加してもよい。なお、当該構成は、新たに追加された中継点アーム状態候補Ｅ１１を、候補のままとして処理を行うのではなく、中継点アーム状態Ｃ３１として処理を行う点で、本実施形態とは異なるが、図１５の例において生成される経路は同じになる。
【００６４】
（手順の例の補足１）
ここで、図４〜図１５を参照して説明した一連の処理に関し、図４〜図９の例では、設定された中継点アーム状態候補Ｅ１について、動作前アーム状態Ａ１の側では障害物状態Ｂ１、Ｂ２との接触が有り、目標アーム状態Ａ２の側では障害物状態Ｂ１、Ｂ２との接触が無い場合を示した。他の例として、動作前アーム状態Ａ１の側では障害物状態Ｂ１、Ｂ２との接触が無く、目標アーム状態Ａ２の側では障害物状態Ｂ１、Ｂ２との接触が有る場合には、制御部１０４では、図４〜図９の例における動作前アーム状態Ａ１の側の処理と目標アーム状態Ａ２の側の処理とを逆にした処理を行う。他の例として、動作前アーム状態Ａ１の側および目標アーム状態Ａ２の側の両方で障害物状態Ｂ１、Ｂ２との接触が有る場合には、制御部１０４では、これら両方について、図４〜図９の例における動作前アーム状態Ａ１の側の処理と同様な処理を行う。他の例として、動作前アーム状態Ａ１の側および目標アーム状態Ａ２の側の両方で障害物状態Ｂ１、Ｂ２との接触が無い場合には、制御部１０４では、図４〜図９の例の処理をせずに、図１０〜図１５の例の処理を行う。
【００６５】
（手順の例の補足２）
また、図４〜図１５の例では、制御部１０４では、図４〜図９の例において動作前アーム状態Ａ１の側または目標アーム状態Ａ２の側の少なくとも一方で障害物状態Ｂ１、Ｂ２との接触が有るとき（ここで、接触有り時と呼ぶ。）の処理を行い、当該処理を１回行った後に、図１０〜図１５の例において動作前アーム状態Ａ１の側および目標アーム状態Ａ２の側の両方で障害物状態Ｂ１、Ｂ２との接触が無くなったとき（ここで、接触無し時と呼ぶ。）の処理を行う場合を示した。他の例として、制御部１０４では、接触有り時の処理を１回行っても、まだ接触有り時の状況が継続する場合には、接触無し時となるまで２回目以降も繰り返して接触有り時の処理（中継点アーム状態候補Ｅ１、Ｅ１１を設定していく処理）を行い、そして、接触無し時となったときに、接触無し時の処理を行って、動作前アーム状態Ａ１から目標アーム状態Ａ２までの経路を決定する。これにより、動作前アーム状態Ａ１から目標アーム状態Ａ２までのアームの経路が生成される。
【００６６】
なお、本実施形態では、動作前アーム状態側ツリーと目標アーム状態側ツリーを用いてアームの経路を生成する処理を示したが、このようなツリーは他のツリーが用いられてもよい。一例として、本実施形態に係る動作前アーム状態側ツリーに含まれる中継点アーム状態と本実施形態に係る目標アーム状態側ツリーに含まれる中継点アーム状態との両方をまとめたツリー（中継点アーム状態ツリー）が用いられてもよい。他の例として、このようなツリーが用いられずに、アームの経路を生成する処理が実施されてもよい。
【００６７】
［アームの経路の履歴情報の利用］
制御装置５１の制御部１０４では、過去に生成されたアームの経路の履歴情報を記憶して利用することが可能である。
具体的に説明する。
図１６は、本発明の一実施形態に係る経路の履歴情報３０１の一例を示す図である。
履歴情報３０１は、環境と、動作前アーム状態と、目標アーム状態と、経路と、を対応付けた情報である。
本実施形態では、各項目（環境、動作前アーム状態、目標アーム状態、経路）の情報をそれぞれの識別番号（所定の桁数の数字）で特定している。各項目における識別番号と、当該各項目の内容とは、別のテーブル情報で対応付けられている。当該別のテーブル情報および履歴情報３０１は、記憶部１０３に記憶される。なお、他の構成例として、当該別のテーブル情報の内容が履歴情報３０１に含められて、当該履歴情報３０１のみにまとめられていてもよい。
【００６８】
履歴情報３０１における環境の情報は、例えば、ロボット１により行われる作業の環境に関する情報である。具体例として、環境の情報は、ロボット１自体の位置および姿勢の情報、およびロボット１自体以外の障害となる物体の位置および姿勢の情報を含む。
履歴情報３０１における動作前アーム状態の情報は、動作前アーム状態の位置および姿勢の情報である。
履歴情報３０１における目標アーム状態の情報は、目標アーム状態の位置および姿勢の情報である。
履歴情報３０１における経路の情報は、アームの経路に関する情報である。経路の情報は、例えば、動作前アーム状態と目標アーム状態とを結ぶ１個以上の中継点アーム状態の位置および姿勢の情報を含む。
【００６９】
制御装置５１の制御部１０４では、履歴管理部１２６は、アームの経路が生成されるたびに、当該経路の情報を履歴情報３０１に記憶させる。これにより、過去に生成されたアームの経路の情報が履歴情報３０１に蓄積されていく。
また、履歴管理部１２６は、環境において、動作前アーム状態および目標アーム状態が設定されてアームの経路の生成処理が行われるときには、その前に、環境、動作前アーム状態および目標アーム状態の同一の組み合わせが履歴情報３０１の中に含まれるか否かを判定する。そして、履歴管理部１２６は、環境、動作前アーム状態および目標アーム状態の同一の組み合わせが履歴情報３０１の中に含まれると判定した場合には、当該履歴情報３０１に基づいて、当該組み合わせに対応付けられた経路を特定し、特定された経路を採用するように決定する。
【００７０】
ここで、本実施形態では、履歴管理部１２６は、履歴情報３０１に基づいて、環境、動作前アーム状態および目標アーム状態の組み合わせが同一である過去の経路を使用する構成を示した。他の構成例として、当該組み合わせが同一である場合ばかりでなく、当該組み合わせの内容が所定のズレの範囲内に収まる場合にも、同様に過去の経路を使用する構成が用いられてもよい。
また、本実施形態では、環境、動作前アーム状態および目標アーム状態の組み合わせが同一である過去の経路を使用する構成を示したが、他の構成例として、環境が不変である場合、あるいは、環境のズレが小さいような場合に、環境の同一性を考慮しない構成が用いられてもよい。この構成では、履歴管理部１２６は、履歴情報３０１に基づいて、動作前アーム状態および目標アーム状態の組み合わせが同一である過去の経路を使用する。
【００７１】
なお、履歴管理部１２６によりアームの経路の履歴情報３０１を記憶させること、あるいは、履歴管理部１２６によりアームの経路の履歴情報３０１を利用することは、必ずしも行われなくてもよい。すなわち、環境、動作前アーム状態および目標アーム状態の組み合わせが過去のものと同一であっても、制御部１０４では、再び、アームの経路の生成処理を行ってもよい。
【００７２】
［ＵＩの画面の一例］
図４〜図１５を参照して説明したアームの経路の生成処理において、ユーザーが各種の条件を設定することが可能な構成が用いられてもよい。
図１７は、本発明の一実施形態に係る設定画面４０１の一例を示す図である。
設定画面４０１は、ユーザーインターフェイス（ＵＩ：Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の画面の一例である。設定画面４０１は、出力部１０２により表示される。
設定画面４０１は、図４〜図１５と同様に、ｎ次元空間（ジョイント角度空間）を２次元の平面に写像したイメージを表示する。
ユーザーは、設定画面４０１を見ながら、各種の条件として、動作領域４１１、障害物状態４２１、動作前アーム状態４２２、目標アーム状態４２３、あるいは、中継点アーム状態候補などのノード４３１、のうちの１以上を設定することが可能である。
ここで、動作領域４１１は、例えば、ロボット１の動作が可能な領域のすべてが用いられてもよく、または、ロボット１の動作が可能な領域のすべてのうちで、当該ロボット１により作業を行うことが設定された一部の領域（作業領域）が用いられてもよい。そして、動作前アーム状態４２２、目標アーム状態４２３、あるいは、中継点アーム状態候補などのノード４３１は、当該動作領域４１１の内部のみに設定され得る。
【００７３】
なお、ユーザーは、入力部１０１が備える操作部を操作することにより、設定画面４０１を見ながら、各種の条件を設定する。ここで、当該操作部は、例えば、キーボードおよびマウスなどであってもよく、あるいは、専用の操作部であってもよく、あるいは、設定画面４０１に表示されるボタンまたはアイコンなど（例えば、タッチパネル）であってもよい。
【００７４】
［実施形態のまとめ］
以上のように、本実施形態に係るロボット１では、ジョイント角度空間において、動作前アーム状態Ａ１から目標アーム状態Ａ２までアームの状態（位置および姿勢）が変化するときの中継点アーム状態を設定することができ、設定された中継点アーム状態を通過する経路を生成して、アームが動作する経路とすることができる。本実施形態に係るロボット１では、当該ロボット１自体または当該ロボット１の動作領域に存在する他の障害物となる物体との接触（衝突）を回避した経路を生成することができる。本実施形態に係るロボット１では、ジョイント角度の変化量が小さい経路を生成することができ、アームの動作量を小さくして、アームの動作をコンパクトにすることが可能である。本実施形態に係るロボット１では、ユーザーによる設定、または、当該ロボット１による自動的な設定を用いて、簡易に経路を生成することができる。本実施形態に係るロボット１では、生成された経路に基づいて、アームが当該経路を辿って動作するように制御する。
【００７５】
また、本実施形態に係るロボット１では、アームの経路を生成する処理において、中継点アーム状態候補Ｅ１、Ｅ１１などのノードをランダムに設定することができる。これにより、本実施形態に係るロボット１では、例えば、障害物状態Ｂ１、Ｂ２などの環境、動作前アーム状態Ａ１および目標アーム状態Ａ２の組み合わせが同一であっても、異なる経路を生成する場合がある。また、本実施形態に係るロボット１では、例えば、障害物状態Ｂ１、Ｂ２が存在しなくても、動作前アーム状態Ａ１と目標アーム状態Ａ２とが直線で結ばれる経路が生成されない場合がある。
このように、本実施形態に係るロボット１では、ランダムな設定により、生成される経路が変化し得るため、アームの動作が毎回同じになることを防止して、ロボットの特定の部位が他の部位と比べてより摩耗してしまうことを防止することができる。
【００７６】
なお、他の構成例として、本実施形態に係るロボット１では、アームの経路の履歴情報３０１を記憶しておき、同一の状況（例えば、環境、動作前アーム状態Ａ１および目標アーム状態Ａ２）において、過去に生成された経路と同じ経路を使用することで、アームの経路の生成処理に要する負荷を低減させることが可能である。
【００７７】
また、本実施形態では、ロボット１の動作の経路として、アームの動作の経路を例として示したが、同様な構成がアーム以外の動作の経路に適用されてもよい。
以上のように、本実施形態に係るロボット１では、ロボット１の動作の経路を適した経路にすることができる。さらに、目標姿勢まで干渉無く動作する経路を短時間で計算できる。
【００７８】
なお、ロボット１の構成としては、本実施形態のロボット１の構成に限定されない。例えば、１本の腕（アーム）を有する単腕のロボットが用いられてもよい。また、ロボット１に備えられる撮像部１１−１、１１−２、２１−１、２１−２の数は任意であってもよい。また、ロボット１に力センサー３１−１、３１−２が備えられない構成が用いられてもよい。また、撮像部１１−１、１１−２、２１−１、２１−２、力センサー３１−１、３１−２および制御装置５１がロボット１に備えらえる部位は、それぞれ、任意の部位であってもよい。また、制御装置５１の機能がロボット１の複数の部位に分散されて備えられてもよい。
【００７９】
ここで、本実施形態では、制御装置５１がロボット１の内部に備えられた構成を示したが、他の構成例として、制御装置とロボット（制御装置以外の本体）とが別体で備えられてもよい。
図１８は、本発明の一実施形態に係るロボットシステム５０１の概略的な構成例を示す図である。
ロボットシステム５０１は、ロボット１Ａと、制御装置５１Ａと、回線５１１を備える。回線５１１は、有線の回線であってもよく、または、無線の回線であってもよい。
ロボット１Ａと制御装置５１Ａとは、回線５１１を介して通信可能に接続し、各種の情報を通信する。ロボット１Ａは、制御装置５１Ａが別体である点を除いて、図１に示されるロボット１と同じ構成であり、同じ構成部には同じ符号を付してある。また、制御装置５１Ａは、ロボット１Ａとは別体である点を除いて、図２に示される制御装置５１と同じ機能を有する。これにより、ロボットシステム５０１では、図１に示されるロボット１と同様に、ロボット１Ａの動作の経路を適した経路にすることができる。
【００８０】
一構成例として、ロボット１、１Ａは、ロボット１、１Ａを構成する複数のジョイントの角度θ１〜θｎを成分とする空間において、前記空間における第１の点と前記空間における第２の点（本実施形態では、第１の点と第２の点のうちの一方が動作前アーム状態Ａ１の点であり、他方が目標アーム状態Ａ２の点である。）が教示され、任意の第３の点（本実施形態では、図４〜図７の例では、中継点アーム状態候補Ｅ１）を設定し、第１の点と第３の点との間に第４の点（本実施形態では、図４〜図７の例では、中間アーム状態Ｆ１〜Ｆ３）を設定し、第４の点と第１の点との間に障害物が存在しない場合、第４の点（本実施形態では、図４〜図７の例では、中間アーム状態Ｆ２）を中継点（本実施形態では、図４〜図７の例では、中継点アーム状態Ｃ１１）に設定し、中継点に基づいて動作する。
【００８１】
一構成例として、ロボット１、１Ａにおいて、第１の点および第２の点は、一方が動作の開始点（本実施形態では、動作前アーム状態Ａ１）を表し、他方が当該動作の終了点（本実施形態では、目標アーム状態Ａ２）を表す。
一構成例として、ロボット１、１Ａにおいて、第３の点（本実施形態では、図４および図１０の例では、中継点アーム状態候補Ｅ１、Ｅ１１）をランダムに設定する。
一構成例として、ロボット１、１Ａにおいて、中継点（本実施形態では、図１０〜図１５の例では、中継点アーム状態Ｃ４１、Ｃ５１）として、複数の候補の点（本実施形態では、図１０〜図１５の例では、追加状態候補Ｈ１〜Ｈ４および追加状態候補Ｉ１〜Ｉ６）のうちで第１の点から第２の点までの経路の距離が最小となる点を選択して設定する。
一構成例として、ロボット１、１Ａにおいて、第１の点、第２の点および中継点を結ぶ経路の履歴情報３０１に基づいて、同一の状況（本実施形態では、環境、動作前アーム状態Ａ１および目標アーム状態Ａ２の組み合わせ）に対応付けられた経路が履歴情報３０１に含まれる場合には、当該経路を使用する。
一構成例として、ロボット１、１Ａにおいて、ロボット１、１Ａの動作領域４１１、障害物（本実施形態では、図１７の例では、障害物状態４２１）、第１の点、第２の点（本実施形態では、図１７の例では、第１の点および第２の点は、一方が動作前アーム状態４２２であり、他方が目標アーム状態４２３である。）、中継点（本実施形態では、図１７の例では、ノード４３１）のうちの１以上に関する設定をユーザーが行う設定画面４０１を備える。
一構成例として、ロボット１、１Ａにおいて、第２の点と第３の点（本実施形態では、図４〜図７の例では、中継点アーム状態候補Ｅ１）との間に第５の点を設定し、第５の点と第２の点との間に障害物が存在しない場合、第５の点を中継点に設定し、中継点に基づいて動作する、構成が用いられてもよい。例えば、動作の開始点から中継点を求めることと、動作の終了点から中継点を求めることと、が同時に行われてもよく、これにより、異なる中継点が同時に求められてもよい。
【００８２】
一構成例として、ロボット１、１Ａは、開始点（本実施形態では、動作前アーム状態Ａ１）から終了点（本実施形態では、目標アーム状態Ａ２）までのロボット１、１Ａの動作を複数回行う場合に、各回ごとに動作の経路が異なり得る。
一構成例として、ロボット１、１Ａにおいて、動作の経路は、乱数に基づく。
一構成例として、制御装置５１、５１Ａは、ロボット１、１Ａを構成する複数のジョイントの角度を成分とする空間において、第１の点と第２の点が与えられ、任意の第３の点を設定し、第１の点と第３の点との間に中継点を設定し、第１の点と中継点との間には障害物が存在せず、中継点に基づいてロボット１、１Ａを動作させる。
【００８３】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【００８４】
なお、以上に説明した装置（例えば、制御装置５１、５１Ａなど）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体（記憶媒体）に記録（記憶）し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）あるいは周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のように、一定時間プログラムを保持しているものも含むものとする。
【００８５】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【００８６】
１、１Ａ…ロボット、１１−１、１１−２、２１−１、２１−２…撮像部、３１−１、３１−２…力センサー、５１、５１Ａ…制御装置、１０１…入力部、１０２…出力部、１０３…記憶部、１０４…制御部、１２１…状態設定部、１２２…状態探索部、１２３…障害判定部、１２４…距離判定部、１２５…状態決定部、１２６…履歴管理部、３０１…履歴情報、４０１…設定画面、４１１…動作領域、４２１…障害物状態、４２２、Ａ１…動作前アーム状態、４２３、Ａ２…目標アーム状態、４３１…ノード、５０１…ロボットシステム、５１１…回線、Ｂ１、Ｂ２…障害物状態、Ｃ１、Ｃ１１、Ｃ２１、Ｃ３１、Ｃ４１、Ｃ５１…中継点アーム状態、Ｄ１、Ｄ１１、Ｄ２１、Ｄ３１、Ｄ４１、Ｄ５１、Ｄ６１、Ｄ７１…経路、Ｅ１、Ｅ１１…中継点アーム状態候補、Ｆ１〜Ｆ３、Ｆ１１、Ｇ１、Ｇ１１…中間アーム状態、Ｈ１〜Ｈ４、Ｉ１〜Ｉ６…追加状態候補、ＭＮＰ１、ＭＮＰ２…マニピュレーター、ＥＮＤ１、ＥＮＤ２…エンドエフェクター
【図１】
2016198842.tif 000003
【図２】
2016198842.tif 000004
【図３】
2016198842.tif 000005
【図４】
2016198842.tif 000006
【図５】
2016198842.tif 000007
【図６】
2016198842.tif 000008
【図７】
2016198842.tif 000009
【図８】
2016198842.tif 000010
【図９】
2016198842.tif 000011
【図１０】
2016198842.tif 000012
【図１１】
2016198842.tif 000013
【図１２】
2016198842.tif 000014
【図１３】
2016198842.tif 000015
【図１４】
2016198842.tif 000016
【図１５】
2016198842.tif 000017
【図１６】
2016198842.tif 000018
【図１７】
2016198842.tif 000019
【図１８】
2016198842.tif 000020