(57)【要約】【課題】ロボットの衝突等を回避し、安全性を確保する。【解決手段】駆動プログラムに従ってロボットを駆動させるロボット制御装置であって、前記駆動プログラムのロボットの駆動時点よりも先行させた時点における前記駆動プログラムのシミュレーションを行わせ、前記シミュレーションの結果および前記駆動プログラムに基づいて、前記ロボットを制御する制御部を備えた。【選択図】図２
2010172990.tif 000002
【特許請求の範囲】
【請求項１】
駆動プログラムに従ってロボットを駆動させるロボット制御装置であって、
前記駆動プログラムのロボットの駆動時点よりも先行させた時点における前記駆動プログラムのシミュレーションを行わせ、前記シミュレーションの結果および前記駆動プログラムに基づいて、前記ロボットを制御する制御部を備えたことを特徴とするロボット制御装置。
【請求項２】
請求項１に記載のロボット制御装置において、
前記制御部は、
前記駆動プログラムを記憶するプログラム記憶部と、
前記プログラム記憶部から前記駆動プログラムを読み出す第１プログラム読出し部と、
前記プログラム記憶部から前記第１プログラム読出し部から読み出された前記駆動プログラムに基づく、前記ロボットの駆動時点よりも先行させた時点の前記駆動プログラムを読み出す第２プログラム読出し部と、
前記第２プログラム読出し部から読み出された前記駆動プログラムに基づいてシミュレーションを行うシミュレーション実行部と、
前記駆動プログラムおよび前記シミュレーション結果に基づいて、前記ロボットに制御信号を出力する制御処理部と、を備えたことを特徴とするロボット制御装置。
【請求項３】
請求項２に記載のロボット制御装置において、
前記シミュレーション実行部では、
前記ロボットが停止可能な時間を先行させて前記駆動プログラムのシミュレーションを行うことを特徴とするロボット制御装置。
【請求項４】
請求項１〜３のいずれか一項に記載のロボット制御装置において、
前記ロボットの動作環境を検出する検出装置を備えたことを特徴とするロボット制御装置。
【請求項５】
請求項１〜４のいずれか一項に記載のロボット制御装置において、
複数の前記ロボット制御装置間において、前記シミュレーションの結果を共有することを特徴とするロボット制御装置。
【請求項６】
駆動プログラムに従ってロボットを駆動させるロボットの制御方法であって、
前記駆動プログラムのロボットの駆動時点よりも先行させた時点における前記駆動プログラムのシミュレーションを行わせ、前記シミュレーションの結果および前記駆動プログラムに基づいて、前記ロボットを制御することを特徴とするロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、ロボットの制御方法に関する。
【背景技術】
【０００２】
ロボット等の運動体を駆動させるにあたっては、運動体の駆動に関する安全性を十分に考慮する必要がある。運動体が他の運動体等の障害物と干渉や衝突した場合には、運動体の故障等を招き、たいへんな被害が発生するからである。そこで、運動体の未来位置を算出するとともに、障害物等の未来位置情報に基づいて、運動体と障害物等との距離を算出し、算出した距離の値が所定の基準値よりも小さい場合には、衝突回避プログラムにしたがって運動体を駆動させる運動体制御方法が知られている（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開平９−４４２４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の運動体制御方法では、近年の高速かつ複雑に駆動されるロボット等に対しては対応することができない、という問題がある。例えば、複数のロボットを配置したような場合にあっては、それらの未来位置を予測することが困難となり、これに追従できずにロボット同士が衝突してしまう、という課題があった。
【課題を解決するための手段】
【０００５】
本発明は、上記課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００６】
［適用例１］本適用例にかかるロボット制御装置は、駆動プログラムに従ってロボットを駆動させるロボット制御装置であって、前記駆動プログラムのロボットの駆動時点よりも先行させた時点における前記駆動プログラムのシミュレーションを行わせ、前記シミュレーションの結果および前記駆動プログラムに基づいて、前記ロボットを制御する制御部を備えたことを特徴とする。
【０００７】
この構成によれば、制御部によって、ロボットが、駆動プログラムに従って駆動している最中に、ロボットの駆動時点に対して時間的に先行して駆動プログラムのシミュレーションが行われる。すなわち、ロボットを駆動させながら、未来のロボットの駆動に関するシミュレーションが行われる。このように、近未来におけるロボットの駆動状況をシミュレートすることにより、例えば、シミュレーション中に不都合が発見された場合であっても、その情報をロボットの制御部へ伝えることにより、実ロボットの駆動においては当該不都合を回避でき、ロボットの安全性を確保することができる。
【０００８】
［適用例２］上記適用例にかかるロボット制御装置の前記制御部は、前記駆動プログラムを記憶するプログラム記憶部と、前記プログラム記憶部から前記駆動プログラムを読み出す第１プログラム読出し部と、前記プログラム記憶部から前記第１プログラム読出し部から読み出された前記駆動プログラムに基づく、前記ロボットの駆動時点よりも先行させた期間の前記駆動プログラムを読み出す第２プログラム読出し部と、前記第２プログラム読出し部から読み出された前記駆動プログラムに基づいてシミュレーションを行うシミュレーション実行部と、前記駆動プログラムおよび前記シミュレーション結果に基づいて、前記ロボットに制御信号を出力する制御処理部と、を備えたことを特徴とする。
【０００９】
この構成によれば、プログラム記憶部から駆動プログラムを読み出す第１プログラム読出し部と第２プログラム読出し部が備えられている。第１プログラム読出し部は、ある時点でのロボット駆動のための駆動プログラムを読出す。一方、第２プログラム読出し部では、第１プログラム読出し部の駆動時点よりも時間的に先行した駆動プログラムを読出す。シミュレーション実行部は、第２プログラム読出し部により読み出された駆動プログラムに基づいてシミュレーションを行う。制御処理部は、前記シミュレーション結果および前記第１プログラム読出し部により読み出された駆動プログラムに基づいてロボットを制御する。従って、第２プログラム読出し部において、先行して読み出された駆動プログラムをシミュレーションするので、例えば、近未来に衝突等の不都合が発見された場合に、当該不都合を回避でき、ロボットの安全性を確保することができる。
【００１０】
［適用例３］上記適用例にかかるロボット制御装置の前記シミュレーション実行部では、前記ロボットが停止可能な時間を先行させて前記駆動プログラムのシミュレーションを行うことを特徴とする。
【００１１】
この構成によれば、不具合、例えば、ロボットの衝突等を考慮して、緊急停止できる範囲において駆動プログラムを先行させてシミュレーションさせることにより、さらに、安全性を確保することができる。
【００１２】
［適用例４］上記適用例にかかるロボット制御装置は、前記ロボットの動作環境を検出する検出装置を備えたことを特徴とする。
【００１３】
この構成によれば、例えば、ロボットの動作環境に変化が生じたような場合には、検出されたデータを加味してシミュレーションを行うことにより、より安全な回避駆動を行うことができる。
【００１４】
［適用例５］上記適用例にかかるロボット制御装置は、複数の前記ロボット制御装置間において、前記シミュレーションの結果を共有することを特徴とする。
【００１５】
この構成によれば、例えば、複数のロボットが駆動する場合において、他のロボットの駆動領域を把握することができるので、未来の駆動時におけるロボット同士の接触や衝突等の不具合の発生を防止することができる。
【００１６】
［適用例６］本適用例にかかるロボットの制御方法は、駆動プログラムに従ってロボットを駆動させるロボットの制御方法であって、前記駆動プログラムのロボットの駆動時点よりも先行させた時点における前記駆動プログラムのシミュレーションを行わせ、前記シミュレーションの結果および前記駆動プログラムに基づいて、前記ロボットを制御することを特徴とする。
【００１７】
この構成によれば、制御部によって、ロボットが、駆動プログラムに従って駆動している最中に、ロボットの駆動時点に対して時間的に先行して駆動プログラムのシミュレーションが行われる。すなわち、ロボットを駆動させながら、未来のロボットの駆動に関するシミュレーションが行われる。このように、近未来におけるロボットの駆動状況をシミュレートすることにより、例えば、駆動中に不都合が発見された場合であっても、当該不都合を回避でき、ロボットの安全性を確保することができる。
【発明を実施するための最良の形態】
【００１８】
［第１実施形態］
以下、本発明を具体化した第１実施形態について図面に従って説明する。
【００１９】
（ロボット制御装置の構成）
まず、ロボット制御装置の構成について説明する。図１は、ロボット制御装置の一例を示す外観図である。本実施形態では、ロボット２０ａ，２０ｂを示している。こられのロボット２０ａ，２０ｂは、多関節駆動部を備え、駆動プログラムに従って各駆動部が駆動するように構成されている。このようなロボット２０ａ，２０ｂを、例えば、産業用に利用するにあたっては、ロボット２０ａ，２０ｂ間における干渉や衝突等を防止し、十分な安全性を確保する必要がある。本発明は、衝突等を回避し、安全性を確保することを目的としており、以下、具体的に説明する。
【００２０】
図２は、本実施形態にかかるロボット制御装置の構成を示すブロック図である。ロボット制御装置１は、制御部１０からロボット２０の駆動部に駆動信号を送信することにより、ロボット２０の駆動を制御している。
【００２１】
制御部１０は、ロボット２０の駆動を制御するためのものであり、プログラム記憶部１１と、第１プログラム読出し部１２と、第２プログラム読出し部１３と、シミュレーション実行部１４と、制御処理部１５とを備えている。
【００２２】
プログラム記憶部１１は、ロボット２０を駆動させるための駆動プログラムが記憶されている。第１プログラム読出し部１２は、プログラム記憶部に記憶された駆動プログラムを読み出す機能を有するものである。制御処理部１５は、前記駆動プログラムに基づいて駆動信号を生成し、当該駆動信号をロボット２０に送信する機能を有する。そして、ロボット２０は、当該駆動信号に従って駆動制御される。
【００２３】
さらに、制御部１０は、第２プログラム読出し部１３とシミュレーション実行部１４を備えている。第２プログラム読出し部１３も、プログラム記憶部に記憶された駆動プログラムを読み出す機能を有するものであるが、第２プログラム読出し部１３によって読み出された駆動プログラムは、第１プログラム読出し部１２から読み出された駆動プログラムに基づくロボット２０の駆動時点に対して時間的に先行するように駆動プログラムを読み出す機能を有する。すなわち、ロボット２０の駆動に関する近未来の部分を先行して読み出す。シミュレーション実行部１４は、前記第２プログラム読出し部により読み出された駆動プログラムに基づいてロボット２０の駆動に関するシミュレーションを行う。制御処理部１５は、シミュレーションの結果および前記第１のプログラム読出し部により読み出された駆動プログラムに基づいて駆動信号を生成し、当該駆動信号をロボット２０に送信するように構成されている。
【００２４】
従って、本実施形態のロボット制御装置では、駆動プログラムに従ってロボット２０を駆動させながら、ロボット２０の駆動時点よりも時間的に先行させた駆動プログラムのシミュレーションを行わせ、シミュレーションの結果および駆動プログラムに基づいて、ロボット２０を制御するように構成されている。
【００２５】
検出装置３０は、ロボット２０の動作環境を検出する装置である。検出装置３０は、ロボット２０の動作環境を検出して、ロボット２０の動作環境の変化、例えば、障害物の進入等の外的状況変化を検出するために設けられている。検出装置３０としては、例えば、カメラやセンサー等である。そして、ロボット２０を含むロボット２０の駆動領域の全体を検出するように配置されている。本実施形態では、図１に示すように、ロボット２０ａ，２０ｂに対して側方（正面側）及び上方のそれぞれに検出装置３０ａ，３０ｂが配置されている。なお、検出装置３０は、１台或いは３台以上を配置してもよい。また、配置場所においても、ロボット２０に対して背面側や下方に配置してもよい。検出装置３０によって検出されたロボットの動作環境情報は、シミュレーション実行部１４に入力される。シミュレーション実行部１４では、第２プログラム読出し部１３から読み出された駆動プログラムと検出装置３０によって検出された動作環境情報を基にしてシミュレーションが行われる。
【００２６】
ここで、ロボット制御装置１の動作について具体例を挙げて説明する。図３は、ロボット制御装置１の動作例を示す説明図である。なお、説明を容易とするため、ロボット２０ａ，２０ｂの駆動にかかるある期間Ｔ１，Ｔ２に限定して説明を行う。またロボットの動作を模式的に１次元的な点の動きとして説明を行う。
【００２７】
図３では、時間ｔにおけるロボット２０ａ，２０ｂのそれぞれの駆動軌跡（曲線部分）を示している。ここで、時間ｔ０〜ｔ１の期間Ｔ１は、ロボット２０ａ，２０ｂが駆動プログラムに従って駆動された期間であり、ロボットの現駆動時点はｔ１であるとする。
【００２８】
そして、シミュレーション実行部１４では、時間ｔ１〜ｔ３までの所定期間Ｔ２を先行したシミュレーションを行う。Ｔ２はシミュレーションされた期間であり、現シミュレーション時点はｔ３であるとする。当該シミュレーションは、第２プログラム読出し部１３から読み出された駆動プログラムと、検出装置３０からのロボット２０の動作環境情報に基づいて行われる。先行させる所定期間Ｔ２は、ロボット２０や駆動状況に応じて適宜設定することができる。例えば、ロボット２０が緊急時に停止できる範囲において設定することができる。例えばロボット２０が低速で駆動されている場合には、１００〜２００ｍｓｅｃ．を先行してシミュレーションを行わせても良い。また、ロボット２０が高速で駆動されている場合、或いは比較的に重い物を移動させたり、或いは、柔らかい物を移動させたりするような場合には、１〜２ｓｅｃ．を先行してシミュレーションを行わせても良い。
【００２９】
図３に示すように、シミュレーションにおいて、所定期間Ｔ２におけるロボット２０ａとロボット２０ｂの仮想軌跡（点線部分）が作成される。そして、この例ではロボット２０ａとロボット２０ｂとが所定期間Ｔ２内であって、時間ｔ２時点（ポイントＰ１）で衝突することが推定される。制御処理部は、このシミュレーションの結果および駆動プログラムに基づいて駆動信号を生成する。従って、図３に示したように、シミュレーションによってロボット２０ａ，２０ｂが衝突すると推定できた場合には、実際に衝突する前に、衝突を回避する手段を講ずることができる。衝突回避手段としては、例えば、ロボット２０ａ，２０ｂを停止させる、或いは、ロボット２０ａ，２０ｂの軌道を変更する等の処置を施すことができる。
【００３０】
（ロボットの制御方法）
次に、第１実施形態にかかるロボットの制御方法について説明する。図４は、ロボットの制御方法を示すフローチャートである。
【００３１】
図４において、ステップＳ１０ａでは、駆動プログラムを読み出す。また、同時期にステップＳ１０ｂでは、先行して駆動プログラムを読み出す。具体的には、ステップＳ１０ａでは、第１プログラム読出し部１２によって、駆動プログラムが記憶されたプログラム記憶部１１から駆動プログラムが読み出される。また、ステップＳ１０ｂでは、第２プログラム読出し部１３によって、駆動プログラムが記憶されたプログラム記憶部１１から駆動プログラムが読み出される。なお、第２プログラム読出し部１３によって読み出された駆動プログラムは、ロボット２０の駆動時点よりも所定時間を先行させた駆動プログラムが読み出される。そして、ステップＳ１０ａにおいて駆動プログラムが読み出されると、ステップＳ３０に移行する。一方、ステップＳ１０ｂにおいて駆動プラグラムが読み出されると、ステップＳ１１ｂに移行し、以降、シミュレーションが実行される。
【００３２】
ここで、まず、ステップＳ１１ｂ〜ステップＳ１６ｂのシミュレーションの処理方法について説明する。
【００３３】
ステップＳ１１ｂでは、動作環境情報を取得する。具体的には、検出装置３０によって検出されたロボット２０の動作環境情報を取得する。
【００３４】
ステップＳ１２ｂでは、取得した動作環境情報に基づいて、動作環境に変化が生じたか否かを判断する。例えば、障害物の進入等があったか否かを判断する。そして、環境変化があった場合には、ステップＳ１３ｂに移行し、環境変化がなかった場合には、ステップＳ１４ｂに移行する。
【００３５】
ステップＳ１３ｂでは、動作環境情報を入力する。例えば、障害物の進入等の情報を入力する。
【００３６】
ステップＳ１４ｂでは、シミュレーションを実行する。当該ステップでは、実駆動しているロボット２０の駆動時点よりも時間的に所定時間先のロボット２０の駆動に関するシミュレーションが行われる。なお、ステップＳ１２ｂにおいて、環境変化が生じた場合には、入力された環境変化情報（ステップＳ１３ｂ）を加味してシミュレーションが行われる。
【００３７】
ステップＳ１５ｂでは、シミュレーションが行われた結果、ロボット２０の駆動に関して異常が発生するか否かを判断する。すなわち、近い将来におけるロボット２０の駆動において不具合が生じると推測されるか否かが判断される。異常が発生すると判断された場合には、ステップＳ１６ｂに移行し、異常が発生しないと判断された場合には、ステップＳ３２に移行する。
【００３８】
ステップＳ１６ｂでは、異常情報が設定され、ステップＳ３０の制御信号生成ステップに割り込み処理がなされる。
【００３９】
ステップＳ３０では、制御信号を生成する。具体的には、制御処理部１５において、ステップＳ１０ａで読み出された駆動プログラムおよびシミュレーション結果で得られた異常情報に基づいて、駆動信号が生成される。シミュレーション結果において異常情報が設定されていない場合は、ステップＳ１０ａで読み出された駆動プログラムに基づいて駆動信号が生成される。一方、異常情報が設定されている場合には、ステップＳ１０ａにより読み出された駆動プログラムを変更し、異常処理用の駆動信号、例えば、ロボット２０の駆動を停止する等の駆動信号が生成される。
【００４０】
ステップＳ３１では、生成された駆動信号に基づいてロボット２０が駆動実行される。すなわち、シミュレーションにおいて異常が検出されていない場合は、ステップＳ１０ａで読み出された駆動プログラムに基づいた駆動が実行される。すなわち、正常な駆動が実行される。一方、異常情報に基づく駆動信号の場合には、異常発生を回避する駆動が実行される。例えば、ロボット２０の駆動を停止する等の実行が行われる。
【００４１】
ステップＳ３２では、駆動プログラムが終了か否かを判断する。駆動プログラムが終了する場合には、一連の制御動作が終了する。駆動プログラムが終了しない（継続する）場合には、ステップＳ１０ａ，Ｓ１０ｂに移行する。
【００４２】
従って、上記の第１実施形態によれば、以下に示す効果がある。
【００４３】
（１）ロボット２０の駆動を実行させながら、ロボット２０の駆動する時点よりも先行した所定期間のシミュレーションを行うことにより、未来のロボット２０の駆動状況を推定することができる。そして、当該シミュレーションの結果をロボット２０の駆動に反映させることにより、ロボット２０の安全性を図り、衝突等の不具合を回避することができる。
【００４４】
（２）検出装置３０によって検出したロボット２０の動作環境情報をシミュレーションに反映することにより、さらに、安全性が確保され、ロボット２０の衝突を防止することができる。
【００４５】
［第２実施形態］
次に、第２実施形態について説明する。
【００４６】
（ロボット制御装置の構成）
まず、ロボット制御装置の構成について説明する。図５は、本実施形態にかかるロボット制御装置の構成を示すブロック図である。
【００４７】
各ロボット制御装置１ａ，１ｂは、各制御部１０ａ，１０ｂから各ロボット２０ａ，２０ｂの駆動部に駆動信号を送信することにより、ロボット２０ａ，２０ｂの駆動を制御している。
【００４８】
ロボット制御装置１ａの制御部１０ａは、プログラム記憶部１１ａと、第１プログラム読出し部１２ａと、第２プログラム読出し部１３ａと、シミュレーション実行部１４ａと、制御処理部１５ａと、シミュレーション結果出力部１６ａと、シミュレーション結果入力部１７ａとを備えている。
【００４９】
ロボット制御装置１ｂの制御部１０ｂは、プログラム記憶部１１ｂと、第１プログラム読出し部１２ｂと、第２プログラム読出し部１３ｂと、シミュレーション実行部１４ｂと、制御処理部１５ｂと、シミュレーション結果出力部１６ｂと、シミュレーション結果入力部１７ｂとを備えている。
【００５０】
プログラム記憶部１１ａ，１１ｂと、第１プログラム読出し部１２ａ，１２ｂと、第２プログラム読出し部１３ａ，１３ｂと、シミュレーション実行部１４ａ，１４ｂと、制御処理部１５ａ，１５ｂ及び検出装置３０ａ，３０ｂの機能等については、第１実施形態と同様なので、説明を省略する。
【００５１】
ここで、ロボット制御装置１ａ，１ｂの各制御部１０ａ，１０ｂには、シミュレーション結果出力部１６ａ，１６ｂと、シミュレーション結果入力部１７ａ，１７ｂを備えている。シミュレーション結果出力部１６ａ，１６ｂは、シミュレーション実行部１４ａ，１４ｂにおいてシミュレーションを行った情報を出力する機能を有している。シミュレーション結果入力部１７ａ，１７ｂは、他のロボット２０ａ，２０ｂから出力されたシミュレーション結果を入力する機能を有している。
【００５２】
本実施形態では、ロボット制御装置１ａにおけるシミュレーションの結果をシミュレーション結果出力部１６ａからロボット制御装置１ｂに出力し、当該出力されたシミュレーションの結果は、ロボット制御装置１ｂのシミュレーション結果入力部１７ｂに入力される。同様にして、ロボット制御装置１ｂにおけるシミュレーションの結果をシミュレーション結果出力部１６ｂからロボット制御装置１ａに出力し、当該出力されたシミュレーションの結果は、ロボット制御装置１ａのシミュレーション結果入力部１７ａに入力される。従って、ロボット制御装置１ａ，１ｂ間において、それぞれに行われたシミュレーション結果を共有することになる。
【００５３】
各シミュレーション結果入力部１７ａ，１７ｂにおいて入力された他のロボットのシミュレーション結果は、シミュレーション実行部１４ａ，１４ｂに送信される。従って、シミュレーション実行部１４ａ，１４ｂでは、第２プログラム読出し部１３ａ，１３ｂから送信された駆動プログラムと、検出装置３０ａ，３０ｂから検出されたロボット２０ａ，２０ｂの動作環境情報と、他のロボットのシミュレーション結果に基づいてシミュレーションが行われる。
【００５４】
ここで、ロボット制御装置１の動作について具体例を挙げて説明する。図６は、ロボット制御装置１ａ，１ｂの動作を示す説明図である。なお、説明を容易とするため、ロボット２０ａ，２０ｂの駆動にかかるある期間Ｔ１，Ｔ２に限定して説明を行う。またロボットの動作を模式的に１次元的な点の動きとして説明を行う。
【００５５】
図６では、時間ｔにおけるロボット２０ａ，２０ｂのそれぞれの駆動軌跡（曲線部分）を示している。ここで、時間ｔ０〜ｔ１の期間Ｔ１は、ロボット２０ａ，２０ｂが駆動プログラムに従って駆動された期間であり、ロボットの現駆動時点はｔ１であるとする。
【００５６】
そして、シミュレーション実行部１４では、時間ｔ１〜ｔ３までの所定期間Ｔ２を先行したシミュレーションを行う。Ｔ２はシミュレーションされた期間であり、現シミュレーション時点はｔ３であるとする。当該シミュレーションは、第２プログラム読出し部１３から読み出された駆動プログラムと、検出装置３０からのロボット２０の動作環境情報に基づいて行われる。先行させる所定期間Ｔ２は、ロボット２０や駆動状況に応じて適宜設定することができる。例えば、ロボット２０が緊急時に停止できる範囲において設定することができる。例えばロボット２０が低速で駆動されている場合には、１００〜２００ｍｓｅｃ．を先行してシミュレーションを行わせても良い。また、ロボット２０が高速で駆動されている場合、或いは比較的に重い物を移動させたり、或いは、柔らかい物を移動させたりするような場合には、１〜２ｓｅｃ．を先行してシミュレーションを行わせても良い。
【００５７】
図６（ａ）に示すように、シミュレーションにおいて、所定期間Ｔ２におけるロボット２０ａとロボット２０ｂの仮想軌跡（点線部分）が作成される。そして、この例ではロボット２０ａとロボット２０ｂとが所定期間Ｔ２内であって、時間ｔ２時点（ポイントＰ２）で衝突することが推定される。こうした各ロボット制御装置１ａ，１ｂのシミュレーション結果は、ロボット制御装置１ａとロボット制御装置１ｂとの間で共有される。従って、相手方となるロボット制御装置１のシミュレーション結果を加味した駆動制御が可能となる。例えば、図６（ａ）の例では、シミュレーションによってロボット２０ａ，２０ｂが衝突すると推定できた場合には、実際に衝突する前に、ロボット２０ａ，２０ｂを停止させる、或いは、一方のロボット２０を停止させる、或いは、ロボット２０ａ，２０ｂの軌道を変更する等の処置を施すことができる。
【００５８】
図６（ｂ）は、他の動作例を示す説明図である。シミュレーション実行部１４の動作及びシミュレーション結果の共有機能については上記内容と同様である。図６（ｂ）に示すように、シミュレーションにおいて、所定期間Ｔ２におけるロボット２０ａとロボット２０ｂの仮想軌跡（点線部分）が作成される。そして、ロボット２０ａとロボット２０ｂとが所定期間Ｔ２内であって、時間ｔ２時点において最接近するが、その後、ロボット２０ａ，２０ｂの互いの距離は離れて行くことが推定される。こうした場合には、衝突回避策を講じる必要が無く、ロボット２０ａ，２０ｂを停止させることなく、通常駆動を行うことができる。すなわち、無駄な衝突回避処理を省くことができる。一方、特許文献１に示したような手法においては、ロボットそれぞれが他のロボットの将来の動きを知ることが出来ないために、接近軌道に入った時点で安全のための衝突回避処理を行わなければならいことになる。
【００５９】
なお、本実施形態では、２台のロボット制御装置１ａ，１ｂを例に挙げて説明したが、もちろん、３台以上のロボット制御装置１であっても適用することができる。
【００６０】
（ロボットの制御方法）
次に、第２実施形態にかかるロボットの制御方法について説明する。図７は、ロボットの制御方法を示すフローチャートである。
【００６１】
図７において、ステップＳ１００ａでは、駆動プログラムを読み出す。また、同時期にステップＳ１００ｂでは、先行して駆動プログラムを読み出す。具体的には、ステップＳ１００ａでは、第１プログラム読出し部１２によって、駆動プログラムが記憶されたプログラム記憶部１１から駆動プログラムが読み出される。また、ステップＳ１００ｂでは、第２プログラム読出し部１３によって、駆動プログラムが記憶されたプログラム記憶部１１から駆動プログラムが読み出される。なお、第２プログラム読出し部１３によって読み出された駆動プログラムは、ロボット２０の駆動時点よりも所定時間を先行させた駆動プログラムが読み出される。そして、ステップＳ１００ａにおいて駆動プログラムが読み出されると、ステップＳ３００に移行する。一方、ステップＳ１００ｂにおいて駆動プログラムが読み出されると、ステップＳ１１０ｂに移行し、以降、シミュレーションが実行される。
【００６２】
ここで、まず、ステップＳ１１０ｂ〜ステップＳ１７０ｂのシミュレーションの処理方法について説明する。
【００６３】
ステップＳ１１０ｂでは、動作環境情報を取得する。具体的には、検出装置３０によって検出されたロボット２０の動作環境情報を取得する。
【００６４】
ステップＳ１２０ｂでは、取得した動作環境情報に基づいて、動作環境に変化が生じたか否かを判断する。例えば、障害物の進入等があったか否かを判断する。そして、環境変化があった場合には、ステップＳ１３０ｂに移行し、環境変化がなかった場合には、ステップＳ１４０ｂに移行する。
【００６５】
ステップＳ１３０ｂでは、環境変化情報を入力する。例えば、障害物の進入等の情報を入力する。
【００６６】
ステップＳ１４０ｂでは、シミュレーションを実行する。当該ステップでは、実機で駆動しているロボット２０の駆動時点よりも時間的に所定時間先のロボット２０の駆動に関するシミュレーションが行われる。なお、ステップＳ１２０ｂにおいて、環境変化が生じた場合には、入力された環境変化情報（ステップＳ１３０ｂ）を加味してシミュレーションが行われる。
【００６７】
ステップＳ１５０ｂでは、シミュレーション結果を他のロボット制御装置１と共有する。本実施形態では、ロボット制御装置１ａは、ロボット制御装置１ａにおけるシミュレーション結果を他のロボット制御装置１ｂに出力するとともに、ロボット制御装置１ｂから出力されたシミュレーション結果を入力する。同様にして、ロボット制御装置１ｂは、ロボット制御装置１ｂにおけるシミュレーション結果を他のロボット制御装置１ａに出力するとともに、ロボット制御装置１ａから出力されたシミュレーション結果を入力する。
【００６８】
ステップＳ１６０ｂでは、ステップＳ１４０ｂで実行されたシミュレーション結果と、ステップＳ１５０ｂで他のロボット制御装置１から取得したシミュレーション結果に基づいて、ロボット２０の駆動に関して異常が発生するか否かを判断する。すなわち、近い将来におけるロボット２０の駆動において不具合が生じると推測されるか否かが判断される。異常が発生すると判断された場合には、ステップＳ１７０ｂに移行し、異常が発生しないと判断された場合には、ステップＳ３２０に移行する。
【００６９】
ステップＳ１７０ｂでは、異常情報が設定され、ステップＳ３００の制御信号生成ステップに割り込み処理がなされる。
【００７０】
ステップＳ３００では、制御信号を生成する。具体的には、制御処理部１５において、ステップＳ１００ａで読み出された駆動プログラムおよびシミュレーション結果で得られた異常情報に基づいて、駆動信号が生成される。シミュレーション結果において異常情報が設定されていない場合は、ステップＳ１００ａで読み出された駆動プログラムに基づいて駆動信号が生成されることになる。一方、異常情報が設定されて場合には、ステップＳ１００ａで読み出された駆動プログラムを変更し、異常処理用の駆動信号、例えば、ロボット２０の駆動を停止する等の駆動信号が生成されることになる。
【００７１】
ステップＳ３１０では、生成された駆動信号に基づいてロボット２０が駆動実行される。すなわち、シミュレーションにおいて異常が検出されていない場合は、ステップＳ１００ａで読み出された駆動プログラムに基づいた駆動が実行される。すなわち、正常な駆動が実行される。一方、異常情報に基づく駆動信号の場合には、異常発生を回避する駆動が実行される。例えば、ロボット２０の駆動を停止する等の実行が行われる。
【００７２】
ステップＳ３２０では、駆動プログラムが終了か否かを判断する。駆動プログラムが終了する場合には、一連の制御動作が終了する。駆動プログラムが終了しない（継続する）場合には、ステップＳ１００ａ，Ｓ１００ｂに移行する。
【００７３】
従って、上記の第２実施形態によれば、第１実施形態における効果に加え、以下に示す効果がある。
【００７４】
（１）各ロボット制御装置１ａ，１ｂは、シミュレーション実行部１４ａ，１４ｂで行われたシミュレーション結果を他のロボット制御装置１ａ，１ｂとの間で共有するためのシミュレーション結果出力部１６ａ，１６ｂとシミュレーション結果入力部１７ａ，１７ｂを備えた。これにより、他のロボット２０ａ，２０ｂの駆動軌跡を推定することができるとともに、共有したシミュレーション結果に基づいて、制御信号を生成することにより、より安全性を確保し、衝突を回避することができる。
【００７５】
なお、上記の実施形態に限定されるものではなく、以下のような変形例が挙げられる。
【００７６】
（変形例１）上記第１及び第２実施形態では、シミュレーションの結果に基づいて、異常情報を設定し、制御信号を生成したが、異常情報を設定した後に、ロボット２０の駆動を異常停止するようにしてもよい。このようにすれば、処理時間が短縮され、より早く衝突等を回避することがきる。
【００７７】
（変形例２）上記第２実施形態では、自己のシミュレーション結果（ステップＳ１４０ｂ）と他のシミュレーション結果（Ｓ１５０ｂ）とを比較して異常があるか否か（ステップＳ１６０ｂ）を判断したが、シミュレーション結果を共有した後に、自己のシミュレーション結果と他のシミュレーション結果に基づいて、さらに、シミュレーションを実行してもよい。このようにすれば、双方のロボット２０ａ，２０ｂ動作を考慮した最適なシミュレーションを行うことができる。
【００７８】
（変形例３）上記第１及び第２実施形態では、主に、産業用ロボットを例に説明したが、これに限定されない。例えば、他の運動体や玩具等にも適用することができる。このようにしても、上記同様の効果を得ることができる。
【図面の簡単な説明】
【００７９】
【図１】ロボット制御装置の一例を示す外観図。
【図２】第１実施形態にかかるロボット制御装置の構成を示すブロック図。
【図３】第１実施形態にかかるロボット制御装置の動作例を示す説明図。
【図４】第１実施形態にかかるロボットの制御方法を示すフローチャート。
【図５】第２実施形態にかかるロボット制御装置の構成を示すブロック図。
【図６】第２実施形態にかかるロボット制御装置の動作例を示す説明図。
【図７】第２実施形態にかかるロボットの制御方法を示すフローチャート。
【符号の説明】
【００８０】
１，１ａ，１ｂ…ロボット制御装置、１０，１０ａ，１０ｂ…制御部、１１，１１ａ，１１ｂ…プログラム記憶部、１２，１２ａ，１２ｂ…第１プログラム読出し部、１３，１３ａ，１３ｂ…第２プログラム読出し部、１４，１４ａ，１４ｂ…シミュレーション実行部、１５，１５ａ，１５ｂ…制御処理部、１６ａ，１６ｂ…シミュレーション結果出力部、１７ａ，１７ｂ…シミュレーション結果入力部、２０，２０ａ，２０ｂ…ロボット、３０，３０ａ，３０ｂ…検出装置、Ｔ１…期間、Ｔ２…所定期間。
【図２】
2010172990.tif 000003
【図３】
2010172990.tif 000004
【図４】
2010172990.tif 000005
【図５】
2010172990.tif 000006
【図６】
2010172990.tif 000007
【図７】
2010172990.tif 000008
【図１】
2010172990.tif 000009