(57)【要約】【課題】ロボットアームの移動時間を短くすることのできる最適な作業対象物の配置位置の決定を支援する技術を提供する。【解決手段】水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定方法であって、作業対象物の配置候補位置を複数指定する工程と、所定の位置と複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定する工程と、各ロボットアーム移動経路のそれぞれにおけるロボットアームの移動をシミュレーションし、その移動の際のロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求める工程と、ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定する工程とを含むものである。【選択図】図１
2008052749.tif 000002
【特許請求の範囲】
【請求項１】
水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定方法であって、
前記作業対象物の配置候補位置を複数指定する工程と、
所定の位置と前記複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定する工程と、
前記各ロボットアーム移動経路のそれぞれにおける前記ロボットアームの移動をシミュレーションし、その移動の際の前記ロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求める工程と、
前記ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定する工程と
を含むことを特徴とする作業対象物の配置決定方法。
【請求項２】
任意の第１候補位置の位置情報を基に、所定の範囲がシミュレート範囲として指定される工程と、
前記シミュレート範囲の範囲内において、所定のＸ座標間隔及び所定のＹ座標間隔で刻まれた複数の点を前記複数の配置候補位置とする工程と
を含むことを特徴とする請求項１記載の作業対象物の配置決定方法。
【請求項３】
水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定支援装置であって、
前記作業対象物の配置候補位置を複数指定する配置候補位置指定手段と、
所定の位置と前記複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定するロボットアーム移動経路指定手段と、
前記各ロボットアーム移動経路のそれぞれにおける前記ロボットアームの移動をシミュレーションし、その移動の際の前記ロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求めるシミュレーション手段と、
前記ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定する最適配置決定手段と
を含むことを特徴とする作業対象物の配置決定支援装置。
【請求項４】
任意の第１候補位置の位置情報を入力する位置入力手段と、
前記第１候補位置の位置情報を基に、所定の範囲がシミュレート範囲として指定されるシミュレート範囲指定手段と、
所定のＸ座標間隔及び所定のＹ座標間隔を入力する間隔入力手段と、を有し
前記配置候補位置指定手段によって指定される前記配置候補位置は、前記シミュレート範囲の範囲内において、前記Ｘ座標間隔及び前記Ｙ座標間隔で刻まれた複数の点であることを特徴とする請求項３記載の作業対象物の配置決定支援装置。
【請求項５】
前記最適な配置位置を出力する出力手段を更に含むことを特徴とする請求項３又は４に記載の作業対象物の配置決定支援装置。
【請求項６】
前記出力手段は、前記複数の配置候補位置のＸ座標及びＹ座標と、前記複数の配置候補位置に対応する前記ロボットアーム移動時間とを表示すること
を特徴とする請求項５記載の作業対象物の配置決定支援装置。
【請求項７】
通常モードとシミュレーションモードを切り替えるモード切替手段を有し、
前記通常モードの場合、動作位置定義命令で、前記水平多関節ロボットは実際の動作を行い、
前記シミュレーションモードの場合、前記動作位置定義命令があっても、前記シミュレーションによって、前記ロボットアームの移動時間を演算すること
を特徴とする請求項３乃至６の何れかに記載の作業対象物の配置決定支援装置。
【請求項８】
水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定支援を行う配置決定支援装置により実行されるプログラムであって、
前記配置決定支援装置に、
前記作業対象物の配置候補位置を複数指定するステップと、
所定の位置と前記複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定するステップと、
前記各ロボットアーム移動経路のそれぞれにおける前記ロボットアームの移動をシミュレーションし、その移動の際の前記ロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求めるステップと、
前記ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定するステップと
を実行させるための作業対象物の配置決定支援プログラム。
【請求項９】
前記作業対象物の配置候補位置を複数指定するステップは、
任意の第１候補位置の位置情報を入力するステップと、
前記第１候補位置の位置情報を基に、所定の範囲をシミュレート範囲として指定するステップと、
所定のＸ座標間隔及び所定のＹ座標間隔を入力するステップと、
前記シミュレート範囲の範囲内において、前記Ｘ座標間隔及び前記Ｙ座標間隔で刻まれた複数の点を前記配置候補位置として指定するステップ
とを含むことを特徴とする請求項８記載の作業対象物の配置決定支援プログラム。
【請求項１０】
前記最適な配置位置を出力するステップを更に含むことを特徴とする請求項８又は９に記載の作業対象物の配置決定支援プログラム。
【請求項１１】
前記複数の配置候補位置のＸ座標及びＹ座標と、前記複数の配置候補位置に対応する前記ロボットアーム移動時間とを表示するステップを更に含むことを特徴とする請求項８又は９に記載の作業対象物の配置決定支援プログラム。
【請求項１２】
通常モードとシミュレーションモードを切り替えるステップを有し、
前記通常モードの場合、動作位置定義命令で、前記水平多関節ロボットは実際の動作を行い、
前記シミュレーションモードの場合、前記動作位置定義命令があっても、前記シミュレーションによって、前記ロボットアームの移動時間を演算すること
を特徴とする請求項８乃至１１の何れかに記載の作業対象物の配置決定支援プログラム。
【請求項１３】
請求項１２記載の作業対象物の配置決定支援プログラムを搭載することを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多関節ロボットのロボットアームの移動時間を短くすることのできる、ロボットアームの最適な動作位置の決定を支援する技術に関する。
【背景技術】
【０００２】
従来、ロボットの動作位置を決定する方法としては、操作者がロボットを手動で動かして動作位置を教示していくというティーチングという方法がある。そして、ティーチングによって指定された動作位置から次の動作位置にロボットアームを順次、移動させることでロボット動作を実現している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ロボットアームの移動時間は、動作位置間の移動距離が短ければ短くなるという原則はあるものの、一慨には言えない部分もあることから、ロボット作業を効率化できる動作位置の決定は勘と経験によるものであった。
【０００４】
例えば、水平多関節ロボットにおいては、複数のアームを関節軸を中心に回転して水平方向の移動を実現しているという構造的な機構から、水平方向に同じ距離を移動するにしても、その移動位置により移動に必要な時間が大きく異なってくる。以下、この点について図を参照して説明する。
【０００５】
図１９は第１アームと第２アームを有する水平多関節ロボットのロボットアーム先端を点Ａから点Ｂに移動するときの各アームの回転角度の説明図、図２０は同様の水平多関節ロボットのロボットアーム先端を点Ｃから点Ｄに移動するときの各アームの回転角度の説明図である。なお、図１９及び図２０において点Ａと点Ｂ間の距離と、点Ｃと点Ｄ間の距離とは等しくなっている。
【０００６】
図１９において、ロボットアームが点Ａから点Ｂに移動する際に、第１アームは角度θ１、第２アームは角度（θ３−θ２）、反時計方向に回転する。図２０において、ロボットアームが点Ｃから点Ｄに移動する際に、第１アームは角度θ４、第２アームは角度（θ５−θ６）、時計方向に回転する。このように、ロボットアームが同じ距離を移動するのであっても、各アームの移動に必要な回転角度は異なってくることから、移動に必要な時間も当然のことながら異なってくる。
【０００７】
図２１は図１９及び図２０の第１アームが４１５ｍｍ、第２アームが２３５ｍｍであるときの水平多関節ロボットのロボットアーム先端を、Ｘ軸方向に３０ｃｍ、１往復した時の移動時間を示す棒グラフ図である。図２２はこの往復動作を行う水平多関節ロボットの模式図である。図２１のグラフは、１往復動作の中央点（図１９で説明すると、点Ａと点Ｂの中間点Ｍに相当）のＸＹ座標をＸＹ平面上で特定し、その座標（Ｘ，Ｙ）に、その位置を中央点とする１往復動作の所要時間を縦棒で示したものである。
【０００８】
このグラフからも判るように、水平多関節ロボットを背面からみた左エリア（図２２参照）のうちＸ座標−４００ｍｍ近辺でＸ軸方向に３０ｃｍ、１往復する時間は、同右エリア（図２２参照）のうちＸ座標＋２５０ｍｍ近辺で同動作をさせた場合よりも約２倍の時間を必要としている。従って、ユーザがロボットに課した作業が、作業対象物表面をＸ軸方向に３０ｃｍ、１往復するという作業であれば、その作業中心位置がたまたまロボット左エリア（Ｘ座標−４００ｍｍ近辺）となるように作業対象物を配置した場合、その作業時間が大幅に長くなってしまうことになる。
【０００９】
本発明は上記の課題を解決するためになされたもので、ロボットアームの移動時間を短くすることのできる最適な作業対象物の配置位置の決定を支援する作業対象物の配置決定方法、作業対象物の配置決定支援装置、作業対象物の配置決定支援プログラム及びロボットシステムを得ることを目的とする。
【課題を解決するための手段】
【００１０】
（１）本発明に係る作業対象物の配置決定方法は、水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定方法であって、作業対象物の配置候補位置を複数指定する工程と、所定の位置と複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定する工程と、各ロボットアーム移動経路のそれぞれにおけるロボットアームの移動をシミュレーションし、その移動の際のロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求める工程と、ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定する工程とを含むものである。
【００１１】
（２）本発明に係る作業対象物の配置決定方法は、任意の第１候補位置の位置情報を基に、所定の範囲がシミュレート範囲として指定される工程と、シミュレート範囲の範囲内において、所定のＸ座標間隔及び所定のＹ座標間隔で刻まれた複数の点を複数の配置候補位置とする工程とを含むものである。
【００１２】
（３）本発明に係る作業対象物の配置決定支援装置は、水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定支援装置装置であって、作業対象物の配置候補位置を複数指定する配置候補位置指定手段と、所定の位置と複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定するロボットアーム移動経路指定手段と、各ロボットアーム移動経路のそれぞれにおけるロボットアームの移動をシミュレーションし、その移動の際のロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求めるシミュレーション手段と、ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定する最適配置決定手段とを含むものである。
【００１３】
（４）本発明に係る作業対象物の配置決定支援装置は、任意の第１候補位置の位置情報を入力する位置入力手段と、第１候補位置の位置情報を基に、所定の範囲がシミュレート範囲として指定されるシミュレート範囲指定手段と、所定のＸ座標間隔及び所定のＹ座標間隔を入力する間隔入力手段と、を有し配置候補位置指定手段によって指定される配置候補位置は、シミュレート範囲の範囲内において、Ｘ座標間隔及びＹ座標間隔で刻まれた複数の点であるものである。
【００１４】
（５）本発明に係る作業対象物の配置決定支援装置は、最適な配置位置を出力する出力手段を更に含むものである。
【００１５】
（６）本発明に係る作業対象物の配置決定支援装置は、出力手段が、複数の配置候補位置のＸ座標及びＹ座標と、複数の配置候補位置に対応するロボットアーム移動時間とを表示するものである。
【００１６】
（７）本発明に係る作業対象物の配置決定支援装置は、通常モードとシミュレーションモードを切り替えるモード切替手段を有し、通常モードの場合、動作位置定義命令で、水平多関節ロボットは実際の動作を行い、シミュレーションモードの場合、動作位置定義命令があっても、シミュレーションによって、ロボットアームの移動時間を演算するものである。
【００１７】
（８）本発明に係る作業対象物の配置決定支援プログラムは、水平多関節ロボットのロボットアームにより搬送される作業対象物の配置決定支援を行う配置決定支援装置により実行されるプログラムであって、配置決定支援装置に、作業対象物の配置候補位置を複数指定するステップと、所定の位置と複数の配置候補位置のそれぞれとを通過するロボットアーム移動経路をそれぞれ指定するステップと、各ロボットアーム移動経路のそれぞれにおけるロボットアームの移動をシミュレーションし、その移動の際のロボットアームの回転角度が反映されたロボットアーム移動時間をそれぞれ求めるステップと、ロボットアーム移動時間が最も短くなるロボットアーム移動経路に対応する配置候補位置を最適な配置位置として決定するステップとを実行させるためのものである。
【００１８】
（９）本発明に係る作業対象物の配置決定支援プログラムは、作業対象物の配置候補位置を複数指定するステップが、任意の第１候補位置の位置情報を入力するステップと、第１候補位置の位置情報を基に、所定の範囲をシミュレート範囲として指定するステップと、所定のＸ座標間隔及び所定のＹ座標間隔を入力するステップと、シミュレート範囲の範囲内において、Ｘ座標間隔及びＹ座標間隔で刻まれた複数の点を配置候補位置として指定するステップとを含むものである。
【００１９】
（１０）本発明に係る作業対象物の配置決定支援プログラムは、最適な配置位置を出力するステップを更に含むものである。
【００２０】
（１１）本発明に係る作業対象物の配置決定支援プログラムは、複数の配置候補位置のＸ座標及びＹ座標と、複数の配置候補位置に対応するロボットアーム移動時間とを表示するステップを更に含むものである。
【００２１】
（１２）本発明に係る作業対象物の配置決定支援プログラムは、通常モードとシミュレーションモードを切り替えるステップを有し、通常モードの場合、動作位置定義命令で、水平多関節ロボットは実際の動作を行い、シミュレーションモードの場合、動作位置定義命令があっても、シミュレーションによって、ロボットアームの移動時間を演算するものである。
【００２２】
（１３）本発明に係るロボットシステムは、上記の作業対象物の配置決定支援プログラムを搭載するものである。
【００２３】
上記（１）、（３）及び（８）の発明によれば、ユーザは、ロボットアームの移動時間を最も短くできる最適な動作位置をシミュレーション結果に基づき簡単に決定することが可能となる。よって、このシミュレーション結果を活用して最適位置に作業対象物を配置することにより、作業効率の高いロボット作業を実現することが可能となる。
【００２４】
上記（２）、（４）及び（９）の発明によれば、ユーザは、作業対象物の最適な配置位置を簡単に決定することが可能となる。
【００２５】
上記（５）及び（１０）の発明によれば、ユーザは、シミュレーション結果を出力手段上で確認できる。
【００２６】
上記（６）及び（１１）の発明によれば、各配置候補位置それぞれの配置状態と、それぞれに対応する移動時間とを同時に確認できるため、シミュレーション結果をイメージ的に捉えることが可能となり、ユーザは、シミュレート範囲のうち、どの辺りの領域で移動時間が短くなるのかなど、素早く判断することが可能となる。
【発明を実施するための最良の形態】
【００２７】
実施の形態１．
図１は本発明の実施の形態１のロボットシステムの構成を示す模式図である。
図において１は水平多関節ロボット、２はコントロールユニット、３はコントロールユニット２からの制御信号に従って水平多関節ロボット１の各関節の各モータを駆動するドライブユニットである。４はコントロールユニット２から出力されるデータを表示するＣＲＴモニターである。５はキーボード、６はマウスで、ユーザがコントロールユニット２を操作したり、ユーザプログラムを作成する際の入力装置として使用される。
【００２８】
図２は水平多関節ロボットの概要図である。
図において、１１は、基台１２の上部に回動自在に設けられた軸で、該軸１１には第１アーム１３が取付られ、該第１アーム１３は軸１１によってＸＹ水平面を旋回するようになっている。この第１アーム１３の先端部には軸１４が回動自在に設けられ、該軸１４には第２アーム１５の基端部が取り付けられ、軸１４によって第２アーム１５がＸＹ水平面を旋回するようになっている。第２アーム１５の先端部には、回動及びＺ方向の直動自在な軸１６が設けられ、該軸１６には同軸にＺ軸１７が取りつけられ、該Ｚ軸１７は軸１６と一体となって動作するようになっている。
【００２９】
このような構成の水平多関節ロボット１は、軸１１及び軸１４を任意の位置まで回転することにより第１アーム１３及び第２アーム１５をＸＹ水平面の任意の位置に移動させることができるようになっている。なお、本来、水平多関節ロボット１の動作は前述の軸１１、１４、１６、１７の４つの軸を制御することにより完結するものである。本発明はＸＹ水平面の動作に関わるものであるので、Ｚ軸方向の動作については省略し、ＸＹ水平面の動作に大きく関連している軸１１、第１アーム１３、軸１４、第２アーム１５動作を中心に説明を進めることにする。
【００３０】
図３はコントロールユニットの概略構成を示す図である。
コントロールユニット２は、演算装置（ＣＰＵ）２１、ＲＯＭ２２、ＲＡＭ２３、ＨＤ２４、ＨＤＤ２５、ＦＤＤ２６、ドライブユニット３と通信するためのドライバーインターフェース２７等を備えている。
【００３１】
ＨＤ２４には、ティーチング時に指定された動作位置やユーザにより作成されたユーザプログラムなどの教示データが格納されている。ＲＯＭ２２には、ユーザプログラムを解釈実行するための後述の図８及び図９に示すフローチャートに対応した解釈実行プログラム、図１０〜図１２に示すフローチャートに対応したシミュレーションプログラム等、ＣＰＵ２１が動作するための各種プログラムが格納されている。
【００３２】
ＣＰＵ２１は、ユーザプログラムを構成している命令を、解釈実行プログラムに従って１命令ずつ解釈実行し、ユーザの意図する動作をユーザプログラムに記述された順番に実行する。解釈実行プログラムは、ユーザプログラムの最終命令までの解釈実行が終了すると、シミュレーションプログラムをコールして、シミュレーションプログラムに制御を受け渡すように構成されている。このＣＰＵ２１と解釈実行プログラムで解釈実行手段が構成され、ＣＰＵ２１とシミュレーションプログラムとで演算手段が構成されている。
【００３３】
ＲＡＭ２３は、ＣＰＵ２１が解釈実行プログラムやシミュレーションプログラム等の各種プログラムに従って動作する際に使用され、各種プログラムの実行に必要なフラグや各種パラメータの一時記憶に利用されるメモリである。
【００３４】
以上のように構成されたコントロールユニット２は、上記の説明でもわかるように、一般的なパーソナルコンピュータにドライバーインターフェース２７を追加した構成となっている。
【００３５】
図４は、本実施の形態１の最適位置決定支援方法の流れの概要を示す図である。
本実施の形態１の最適位置決定支援方法は、大まかに段階を分けると、水平多関節ロボット１のロボットアームの第１候補移動経路を特定する動作位置（第１候補位置及び固定位置）を指定する段階（Ｓ１）と、シミュレート範囲を指定する段階（Ｓ２）と、シミュレート範囲内の複数の第２候補位置とを指定する段階（Ｓ３）と、第１候補位置を、第２候補位置に変えて第１候補移動経路を変更した第２候補移動経路を順次求め、第１候補移動経路及び各第２候補移動経路それぞれに従って水平多関節ロボット１を擬似的に動作させてシミュレーションを行い各移動経路それぞれでのロボットアームの移動時間を求める段階（Ｓ４）と、シミュレーション結果を出力する段階（Ｓ５）とで構成される。
【００３６】
第１候補位置及び固定位置、シミュレート範囲、各第２候補位置は、これらの各データを指定する命令がユーザプログラム中に記述されており、これら各命令をＣＰＵ２１が解釈実行することにより指定されるものである。なお、以下では、第１候補位置及び各第２候補位置を、これらの各位置がステップＳ４におけるシミュレーションの基準位置となることからシミュレート位置と呼び、各シミュレート位置のうち、特に、第１候補位置をシミュレート対象位置と呼ぶことにする。
【００３７】
以下、本実施の形態１の最適位置決定支援方法について、具体的なロボット動作を２例挙げて説明する。
【００３８】
＜具体例１＞
図５は、ロボット動作の具体例１を示す図で、図１に示した水平多関節ロボットのロボットアーム先端の移動経路をロボットアーム概略図で示したものである。
具体例１では、水平多関節ロボット１がロボットアーム先端をＰ０→Ｐ１→Ｐ５の経路で移動させ、Ｐ０に置かれた部品を、Ｐ０で保持して作業対象物Ｗ上のＰ１に搬送し、その後、次の作業のためにロボットアーム先端をＰ５に移動させる動作を行う場合を想定する。本発明の最適位置決定支援は、この具体例１でまず簡単に概要を説明すると、作業対象物Ｗ上の作業点を、実線で示した作業対象物Ｗ上のＰ１から、その他、例えば破線で示した作業対象物Ｗ上のＰ１’等に順次変えてそれぞれの移動経路でのロボットアーム移動時間をシミュレーションによって求めることで、この作業対象物Ｗの最適な配置位置の決定支援を行うものである。以下、詳細に説明する。
【００３９】
図６は図５の具体例１の詳細説明図である。図６において、Ｐ１はシミュレート対象位置、「○」は各シミュレート位置、ＳＲはシミュレート範囲を示している。図７は図６のシミュレーションを実現するユーザプログラムの一例を示す図である。
【００４０】
ところで、プログラムを構成するためのロボットプログラミング言語は、表１に示すように、実際にロボットを動作させるための『動作命令』、動作の回数を指定したり、条件によるプログラムの実行先を分岐させたりする『制御命令』、その他入出力命令、動作位置定義命令等の命令によって構成されている。
【００４１】
【表１】
2008052749.tif 000003
【００４２】
通常、ロボット動作を実現するプログラムでは、まず最初にロボット動作位置を定義するための動作位置定義命令が記述され、そして、その定義された動作位置を目標位置として指定するＪＵＭＰ等の動作命令が記述される構成となっている。そして、このように構成されたプログラムを実行することで、ロボットアームを、動作命令で指定された目標位置へ移動させるロボット動作が実現される。
【００４３】
本実施の形態では、前述の動作命令等に加え、上述のようなシミュレーションを行うためのミュレーション命令を用意し、シミュレーション命令が適当箇所に記述されたユーザプログラムをＣＰＵ２１が解釈実行することで、水平多関節ロボット１を動作命令に従って実際に動作させる通常モードと、実際に水平多関節ロボット１を動作させることなく擬似的に動作させてシミュレーションを行うシミュレーションモードとを切り替えることができるようになっている。
【００４４】
表２はシミュレーション命令の詳細を示す表である。
【００４５】
【表２】
2008052749.tif 000004
【００４６】
表２に示すように、シミュレーション命令は、シミュレーションモードＯＮ命令、シミュレーションモードＯＦＦ命令、シミュレート位置設定命令、シミュレート範囲設定命令、時間推定開始命令、時間推定終了命令で構成されている。この各命令の詳細については、以下、該当箇所で適宜説明することにする。
【００４７】
図７のユーザプログラムにおいて、１〜４行目は「‘ 」で始まるコメント文、５〜７行目に記述された命令は、ロボットの移動経路を指定するための動作位置を定義するための動作位置定義命令で、例えば５行目の動作位置定義命令では、Ｐ０を、Ｘ座標、Ｙ座標、Ｚ座標、ＸＹ平面の回転角をそれぞれ２５０、０、０、０と定義している。なお、この例では、ユーザプログラムでロボット動作位置を指定しているが、ティーチングにより指定するようにしても良い。
【００４８】
そして、９行目に記述された命令「ＳＩＭ  ＭＯＤＥ  ＯＮ」は、表１及び表２に示すようにシミュレーションモードＯＮ命令で、この命令によってシミュレーションモードをＯＮにすることにより、この命令以降に動作命令があっても、実際のロボット動作を起動することなく、擬似的に動作させてシミュレーションを行うシミュレーションモードに設定される。
【００４９】
ついで、１０行目に記述された命令「ＳＩＭ  ＰＯＳ（Ｐ１）」により、シミュレート対象位置をＰ１と指定している。なお、シミュレート対象位置Ｐ１の座標は先に定義されているように（Ｘ＝５０，Ｙ＝１００）である。
【００５０】
１１行目に記述された命令「ＳＩＭ  ＲＡＮＧＥ（50,3,-2,25,2,0）」は、シミュレート範囲設定命令で、図６に示すシミュレート範囲ＳＲを指定している。シミュレート範囲設定命令の各パラメータ（表２参照）は、最初から順にＸステップ距離、Ｘステップ開始カウント、Ｘステップ終了カウント、Ｙステップ距離、Ｙステップ開始カウント、Ｙステップ終了カウントである。
【００５１】
Ｘステップ距離は、図６の距離ＳＸに相当するもので、シミュレート範囲ＳＲ内の各シミュレート位置間のＸ方向の間隔である。Ｙステップ距離は図６の距離ＳＹに相当するもので、シミュレート範囲ＳＲ内の各シミュレート位置間のＹ方向の間隔である。
【００５２】
このシミュレート範囲設定命令では、シミュレート対象位置Ｐ１を基準としてＸ軸の正方向にＸステップ距離をＸステップ開始カウント（すなわち３回）進めたＸ座標値と、Ｙ軸の正方向にＹステップ距離をＹステップ開始カウント（すなわち２回）進めたＹ座標値とで特定される点Ｐａと、Ｘ軸方向にＸステップ距離をＸステップ終了カウント（すなわちＸ軸の負方向に２回）進めたＸ座標値と、Ｙ軸方向にＹステップ距離をＹステップ終了カウント（すなわち０回）進めたＹ座標値とで特定される点Ｐｂを対角の端点とした四角形の領域において、Ｘ方向にＳＸ間隔、Ｙ方向にＳＹ間隔で刻まれた各点をシミュレート位置と指定している。
【００５３】
なお、以下では、シミュレート対象位置からの各シミュレート位置への距離をシミュレート量と呼ぶことにする。よって、ここでは、シミュレート量は、Ｘ方向について、＋１５０、＋１００、＋５０、０、−５０、−１００となり、Ｙ方向について、＋５０、＋２５、０となる。また、シミュレート範囲ＳＲ内の各シミュレート位置を、ステップカウントを用いて、ＰＳ（Ｘステップカウント，Ｙステップカウント）と表現することにする。よって、例えばＰａはＰＳ（３，２）、ＰｂはＰＳ（−２，０）と表現されることになる。なお、各シミュレート位置のうち、或る１点を特定しないときはシミュレート位置ＰＳと表現することにする。
【００５４】
図７の説明に戻る。１３行目に記述された命令「ＪＵＭＰ  Ｐ０」はロボットアームをＰ０へ移動させる動作を指示するものである。この例では、上述したようにＰ０からシミュレート位置ＰＳへ移動し、そしてさらにＰ５へ移動するまでの移動時間をシミュレーションにより求めるものであるため、シミュレーションによる移動時間推定開始を指示する時間推定開始命令「ＳＩＭ  ＳＴＡＲＴ」と、シミュレーションによる移動時間推定終了を指示する時間推定終了命令「ＳＩＭ  ＳＴＯＰ」との間に、「ＪＵＭＰ  Ｐ１」、「ＪＵＭＰ  Ｐ５」を記述することにより、これをプログラミングしている。
【００５５】
このように構成されたユーザプログラムを実行することにより、Ｐ１→ＰＳ→Ｐ５の移動経路がシミュレート位置ＰＳを順次変更したそれぞれについて特定され、各移動経路それぞれでのロボットアームの移動時間がシミュレーションによって求められる。以下、ユーザプログラムを解釈実行するプログラム解釈実行プログラムの処理の流れを説明する。
【００５６】
図８、プログラム解釈実行プログラムの処理の流れを示すフローチャートである。
なお、本実施の形態のプログラム解釈実行プログラムは、ユーザプログラムを１行目から最終行まで順に１命令ずつ読み込んで解釈し、それぞれ命令に応じた処理を行った後、この１回目のユーザプログラムの解釈実行によってシミュレーションフラグがＯＮに設定された場合に、シミュレーションプログラムをコールしてシミュレーション処理を行うように構成されている。これは、ユーザが、ユーザプログラム中でシミュレーションフラグをＯＮ／ＯＦＦに設定するだけで、実際にロボットを動作させる場合の通常モードと、動作させずにシミュレーションを行うシミュレーションモードとを切り替えることを可能とするための構成である。
【００５７】
ＣＰＵ２１は、まず最初にプログラムカウンタとロボット位置とを初期化すると共に、シミュレーションフラグをＯＦＦにする（Ｓ１１）。ついで、ユーザプログラムの１行目の命令を読み込み（Ｓ１２）、命令の内容に応じて次の動作に移行する（Ｓ１３）。
【００５８】
読み込んだ命令がロボット動作位置定義命令であれば、ロボット動作位置を定義する（Ｓ１４）。
【００５９】
読み込んだ命令がシミュレーション命令であれば、シミュレーション命令の内容に応じた処理に移行する（Ｓ１５）。このシミュレーション命令がシミュレーションフラグＯＮ命令であれば、シミュレーションフラグをＯＮにし（Ｓ１６）、シミュレーションフラグＯＦＦ命令であれば、シミュレーションフラグをＯＦＦにする（Ｓ１７）。また、シミュレート位置設定命令であれば、現在、シミュレーションフラグがＯＮかどうかをチェックし（Ｓ１８）、ＯＮに設定されていれば、シミュレート位置設定命令中のパラメータで指定されているロボット動作位置をシミュレート対象位置としてＲＡＭ２３に記憶する（Ｓ１９）。また、シミュレート範囲設定命令であれば、同様に、現在、シミュレーションフラグがＯＮかどうかをチェックし（Ｓ２０）、ＯＮに設定されていれば、シミュレート範囲設定命令中の各パラメータをシミュレート範囲指定パラメータ群としてＲＡＭ２３に記憶する（Ｓ２１）。なお、ステップＳ１８及びＳ２０において、シミュレーションフラグがＯＦＦと判断した場合、すなわち、シミュレーションモードではなく通常の動作モードであれば、これらのシミュレーション命令は無視される。また、時間推定開始命令および時間推定終了命令であるときも、この１回目のユーザープログラムの読み込みの際には無視される。
【００６０】
ステップＳ１２において読み込んだ命令が動作命令であれば、シミュレーションフラグがＯＦＦかどうかをチェックし（Ｓ２２）、ＯＦＦであれば、すなわち通常の動作モードであれば、実際にロボットを動作させる動作命令処理を行う（Ｓ２３）。例えば、ＪＵＭＰ命令であれば、表１に示すように、ロボットアームをＪＵＭＰ命令で指定される位置に門型軌道で移動させる動作を実行させる。
【００６１】
また、読み込んだ命令がその他の命令であれば、その命令に対応する処理を実行する（Ｓ２４）。
【００６２】
以上のように、読み込んだ命令に対応する処理が終了すると、ＣＰＵ２１はプログラム終了かどうかを判定する（Ｓ２５）。読み込んだ命令がプログラムの終了を明示する「ＥＮＤ」でない場合は、終了でないと判定し、プログラムカウンタをカウントアップし（Ｓ２６）、ステップＳ１２に戻り、次の行の命令を読み込んで、上記と同様の処理を行う。
【００６３】
上記の処理を繰り返し行い、そして、ユーザプログラムの読み込みが最終命令「ＥＮＤ」に達すると、シミュレーションフラグがＯＮに設定されているかどうかをチェックし（Ｓ２７）、ＯＮに設定されていれば、シミュレーションプログラムをコールしてシミュレーションプログラムに制御を移す（Ｓ２８）。ステップＳ２７においてシミュレーションフラグがＯＮに設定されていないと判断した場合、即ちシミュレーションフラグがＯＦＦで通常の動作モードであれば、ここで処理を終了する。
【００６４】
以上のように、ユーザプログラムにおいて動作命令が記述されている場合、ＣＰＵ２１は、シミュレーションモードがＯＦＦか否かを判断し、シミュレーションフラグがＯＦＦの場合に動作命令処理を行って実際のロボット動作を行わせるようにしているため、シミュレーションモードのＯＮ／ＯＦＦの設定によって通常モードとシミュレーションモードとを切り替えることが可能となる。
【００６５】
以下、本発明の主要部であるシミュレーション処理の流れについて図面を参照しながら説明する。
図１０〜図１２は、シミュレーションプログラムの処理の流れを示すフローチャートである。このシミュレーションプログラムに基づくロボットコントローラの動作を、図７のユーザプログラムを実行する場合を例に説明する。なお、このシミュレーション処理に入る前の１回目のユーザプログラムの解釈実行により、シミュレート対象位置Ｐ１（250,0,0,0）及びシミュレート範囲指定パラメータ群（50,3,-2,25,2,0）が既にＲＡＭ２３に記憶されているものとする。
【００６６】
ＣＰＵ２１は、Ｘ及びＹシミュレートステップカウンタをそれぞれ初期化すると共に、計測時間カウンタを０に初期化し、Ｘシミュレートステップカウンタ及びＹシミュレートステップカウンタの最終値を、ＲＡＭ２３に格納されたシミュレート範囲指定パラメータ群に基づいて設定する（Ｓ３１）。
【００６７】
ここで、Ｘシミュレートステップカウンタはシミュレート範囲指定パラメータ群のうち、Ｘステップ開始カウントの値に初期化される。よってここでは「３」に初期化され、同様にＹシミュレートステップカウンタは「２」に初期化される。また、Ｘシミュレートステップカウンタの最終値には、Ｘステップ終了カウントが設定され、Ｙシミュレートステップカウンタの最終値には、Ｙステップ終了カウントが設定される。
【００６８】
続いて、プログラムカウンタを初期化すると共に、ロボット位置を初期化する（Ｓ３２）。そして、ユーザプログラムを１行目の命令から読み込み（Ｓ３３）、命令の内容に応じて次の動作に移行する（Ｓ３４）。
【００６９】
１行目は「’」で始まるコメント文であることから、「その他の命令」として処理される（Ｓ３９）。その後、ＣＰＵ２１はプログラム終了か否かをチェックし（Ｓ４０）、ここではまだ終了でないと判断し、プログラムカウンタをカウントアップして（Ｓ４９）、ステップＳ３３に戻り、次の行の命令を読み込む。
【００７０】
同様の処理が４行目の命令まで行われる。そして、ＣＰＵ２１は５行目に記述された命令を読み込むと、ロボット動作位置定義命令であると解釈し、シミュレーション命令でも、動作命令でもないその他の命令であると判断して、対応する処理を行って（Ｓ３９）、ステップＳ４０に移行する。なお、動作位置定義命令による動作位置の定義は既に当該ユーザプログラムの１回目の解釈実行時に行われていることから、ここでは、実際には何ら処理は行われない。６行目、７行目の動作位置定義命令においても同様である。
【００７１】
続いてＣＰＵ２１は、９行目に記述された「ＳＩＭ  ＭＯＤＥ  ＯＮ」を読み込むと、シミュレーション命令のうち（Ｓ３５）、時間推定開始命令でも、時間推定終了命令でもない、その他のシミュレーションであることから、この命令を無視し、ステップＳ４０に移行する。そして、ステップＳ４０のプログラム終了判定を行い、プログラムカウンタをカウンタアップして（Ｓ４９）、ステップＳ３３に戻り、次の命令を読み込む。１０行目、１１行目も時間推定開始命令、時間推定終了命令のどちらでもないことから、同様にプログラムカウンタがカウンタアップされるのみの処理となる。
【００７２】
そして、ＣＰＵ２１は１３行目の「ＪＵＭＰ  Ｐ０」を読み込むと（Ｓ３３）、動作命令処理を実行する（Ｓ３８）。
【００７３】
図１２は図１０の動作命令処理の流れを示すフローチャートである。このシミュレーション処理における動作命令処理は、先の図９のステップＳ２３の動作命令処理と異なり、ロボットアームを実際に動作させるのではなく、擬似的に動作させる処理を行うものである。
ＣＰＵ２１は、動作命令（ここではＪＵＭＰ命令）で指定された動作位置Ｐ０がシミュレート対象位置か否かをＲＡＭ２３を参照して判断する（Ｓ３８ａ）。Ｐ０は、ＲＡＭ２３にシミュレート対象位置として記憶されたＰ１と異なるため、シミュレート対象位置ではないと判断し、ステップＳ３８ｃに移行してロボットをＪＵＭＰ命令に従って擬似的に動作させる。すなわち、コントロールユニット２内では、ロボットアームをＰ０に移動させたものとして処理される。ついで、計測内部フラグがＯＮか否かを判断し（Ｓ３８ｄ）、ここではＯＦＦであるため、動作命令処理を終了し、図１０のステップＳ４０に移行する。そして、ステップＳ４０のプログラム終了判定、ステップＳ４９のプログラムカウンタアップを行って、ステップＳ３３に戻る。
【００７４】
次に１４行目に記述された「ＳＩＭ  ＳＴＡＲＴ」を読み込むと、当該命令はシミュレーション命令のうち、時間推定開始命令であることから、ＣＰＵ２１は、計測内部フラグをＯＮにし（Ｓ３６）、ステップＳ４０、ステップＳ４９を行ってステップＳ３３に戻る。
【００７５】
次に１５行目に記述された「ＪＵＭＰ  Ｐ１」を読み込むと、動作命令処理（図１２参照）に移行する。ＣＰＵ２１は、指定された動作位置Ｐ１がＲＡＭ２３にシミュレート対象位置として記憶された位置と同じであるためシミュレート対象位置であると判断し（Ｓ３８ａ）、そのシミュレート対象位置Ｐ１をＸシミュレートステップカウンタ、Ｙシミュレートステップカウンタに基づいてオフセットしたシミュレート位置に設定する（Ｓ３８ｂ）。ここでは、Ｘシミュレートステップカウンタが「３」、Ｙシミュレートステップカウンタが「２」であることから、シミュレート位置は、図６においてＰＳ（３，２）で示されるシミュレート開始位置Ｐａに設定されることになる。
【００７６】
そして、ロボットをＪＵＭＰ命令に従ってシミュレート開始位置Ｐａに擬似的に動作させる（Ｓ３８ｃ）。ついで計測内部フラグがＯＮか否かをチェックし（Ｓ３８ｄ）、ここではＯＮに設定されているため、ステップＳ３８ｃの動作、すなわちロボットアームの、Ｐ０からシミュレート位置ＰＳ（３，２）への移動動作に必要な時間を計算する。そして、計算された移動時間を計測カウンタに追加して（Ｓ３８ｆ）、動作命令処理を終了する。そして、図１０のステップＳ４０に戻り、プログラム終了判定、ステップＳ４９のプログラムカウンタアップを行ってステップＳ３３に戻る。
【００７７】
次に１６行目に記述された「ＪＵＭＰ  Ｐ５」を読み込むと、再度動作命令処理（図１２参照）に移行する（Ｓ３８）。Ｐ５はシミュレート対象位置でないため（Ｓ３８ａ）、ステップＳ３８ｂの処理は省略してステップＳ３８ｃの処理に移行し、ロボットアームを現在位置ＰＳ（３，２）からＪＵＭＰ命令で指定されたＰ５へ擬似的に動作させる。そして、ここでは計測内部フラグはＯＮに設定されたままであるため（Ｓ３８ｄ）、ステップＳ３８ｃの動作、すなわちロボットアームのシミュレート位置ＰＳ（３，２）からＰ５への移動動作に必要な時間を計算し、算出された移動時間を計測カウンタに追加する。これにより、計測カウンタには、Ｐ０→ＰＳ（３，２）→Ｐ５への移動に要する時間が格納されていることになる。そして、図１０のステップＳ４０に戻り、プログラム終了判定、ステップＳ４９のプログラムカウンタアップを行ってステップＳ３３に戻る。
【００７８】
次に１７行目に記述された「ＳＩＭ  ＳＴＯＰ」を読み込むと（Ｓ３３）、ＣＰＵ２１は、計測内部フラグをＯＦＦにし（Ｓ３７）、ステップＳ４０のプログラム終了判定、ステップＳ４９のプログラムカウンタアップを行ってＳ３３に戻り、「ＥＮＤ」を読み込むと、プログラム終了と判定して図１１に示すステップＳ４１の処理に移行する。
【００７９】
ステップＳ４１では、これまでの処理でのシミュレーション結果、すなわちシミュレート位置ＰＳ（３，２）でのシミュレーション結果を、Ｘシミュレート量、Ｙシミュレート量、計測カウンタ値の３データを１組とするシミュレートデータとしてＲＡＭ２３に記憶する。Ｘシミュレート量、Ｙシミュレート量は、ここでは、「＋１５０、５０」となる。
【００８０】
ついで、Ｘシミュレートステップカウンタが最終値に達したかをチェックする（Ｓ４２）。Ｘシミュレートステップカウンタは、ここではまだ初期値の「３」であるため、Ｘシミュレートステップカウンタをカウントアップし（Ｓ４３）、計測カウンタを０に初期化して（Ｓ４７）、図１０のステップＳ３２に移行する。なお、Ｘシミュレートステップカウンタは、シミュレート範囲指定パラメータ群に含まれるＸステップ終了カウントからＸステップ開始カウントを減算した値が負の値を取るときは−１ずつカウントアップされ、正の値を取るときは１ずつカウントアップされる。よって、ここでは、−１カウントアップされて「２」となる。
【００８１】
ＣＰＵ２１は、ステップＳ３２において、プログラムカウンタを初期化すると共に、ロボット位置を初期化して、上記と同様の処理を行う。すなわち、再度、ユーザプログラムの１行目から解釈実行する。このシミュレーション処理における２回目（通算３回目）のユーザプログラムの解釈実行時には、図１１のステップＳ４３でＸシミュレートステップカウンタがカウントアップされ「２」となっていることから（なお、Ｙシミュレートステップカウンタは「２」のままである）、ステップＳ４０のプログラム終了判定がＹＥＳとなるまでの間の処理によって、ロボットアームをＰ０→ＰＳ（２，２）→Ｐ５へ移動させるのに要する時間が計測カウンタに保持されていることになる。
【００８２】
そして、この２回目のユーザプログラムの解釈実行によって「ＥＮＤ」が読み込まれると、図１１のステップＳ４１によって、シミュレート位置をＰＳ（２，２）としたときのシミュレーション結果を示すシミュレートデータがＲＡＭ２３に記憶されることになる。ここでのＸシミュレート量、Ｙシミュレート量は、それぞれ「＋１００」、「５０」となる。そして、ステップＳ４２でシミュレートステップカウンタが最終値に達したかを判断し、ここではまだ達していないため、Ｘシミュレートステップカウンタをカウントアップし（Ｓ４３）、すなわち、−１カウントアップして「１」とし、計測カウンタを初期化して（Ｓ４７）、図１０のステップＳ３２に戻る。
【００８３】
以上の処理を繰り返し行い、図１１のステップＳ４２においてＸシミュレートステップカウンタが最終値に達したと判断した場合（Ｓ４２）、すなわち、各シミュレート位置のうち、Ｙステップカウントが「２」である、図６において横一列のシミュレート位置ＰＳ（３，２）、ＰＳ（２，２）、ＰＳ（１，２）、ＰＳ（０，２）、ＰＳ（−１，２）、ＰＳ（−２，２）のシミュレーションが終了すると、Ｘシミュレートステップカウンタを初期化（「３」に初期化）し（Ｓ４４）、Ｙシミュレートステップカウンタの最終値到達判定を行った上で（Ｓ４５）、Ｙシミュレートステップカウンタをカウントアップする（Ｓ４６）。
【００８４】
このＹシミュレートステップカウンタのカウントアップもＸシミュレートステップカウンタのカウントアップと同様に、Ｙステップ終了カウントからＹステップ開始カウントを減算した値が負の値を取るときは、−１ずつカウントアップされ、正の値を取るときは１ずつカウントアップされる。よって、ここではＹステップカウントが「１」となり、以上の処理の繰り返しにより、Ｙステップカウントが「１」の各シミュレート位置のシミュレーションを行い、それぞれのシミュレート位置での移動時間の計算及びシミュレートデータの記憶を順次繰り返す。そして、Ｘステップカウントが「−２」の最終値に達し、且つ、Ｙステップカウントが「０」の最終値に達すると（Ｓ４５）、ＲＡＭ２３に記憶した全てのシミュレート位置でのシミュレートデータをＣＲＴモニター４に表示する（Ｓ４８）。
【００８５】
図１３は、ＣＲＴモニターに表示されたシミュレーション結果画面の出力例を示す図である。
このシミュレーション結果出力により、ユーザは、作業対象物Ｗをどの位置に配置すれば、最も短い時間で作業ができるかを判断することが可能となる。この例では、移動時間が０．８０となる、Ｘシミュレート量＋１５０、Ｙシミュレート量５０の位置を最適位置と判断することができ、この最適位置に作業対象物Ｗを配置することにより、作業効率の高いロボット作業を実現することが可能となる。ユーザはこの結果を基に、ユーザプログラムにおいて、Ｐ１の位置を最短移動時間が得られる最適位置に定義し直し、シミュレーションモードＯＮ命令をプログラムから削除するか、またはシミュレーションモードＯＦＦ命令に書き換えることにより、効率的なロボット作業を実現するプログラムに簡単に書き換えることが可能となる。
【００８６】
＜具体例２＞
図１４はロボット動作の具体例２を示す図で、図１に示した水平多関節ロボット１のロボットアーム先端の移動経路をロボットアーム概略図で示したものである。
この例では、水平多関節ロボット１は、ロボットアーム先端をＰ０から作業対象物Ｗ上のＰ１に移動させ、そして、作業対象物Ｗ上でその四隅のＰ２、Ｐ３、Ｐ４、Ｐ１にこの順に移動して各位置でそれぞれ作業を行い、この作業経路Ｐ２→Ｐ３→Ｐ４→Ｐ１での動作を再度繰り返した後、ロボットアーム先端をＰ５に移動させる動作を行う場合を想定する。ここでは、作業対象物Ｗの最適な配置位置の選出を目的として、この作業経路Ｐ２→Ｐ３→Ｐ４→Ｐ１を２回移動する動作をシミュレーションの対象とする。
【００８７】
図１５は図１４のシミュレーションを実現するユーザプログラムの一例を示す図である。
５行目から１０行目でＰ０〜Ｐ５の各ロボット動作位置を定義している。１２行目でこのユーザプログラムをシミュレーションモードで実行させることを指定している。１３行目でシミュレート対象位置をＰ１〜Ｐ４と指定し、１４行目でシミュレーションの範囲を指定している。この例では、Ｙステップ開始カウント及びＹステップ終了カウントが共に０であるため、シミュレート位置は、シミュレート対象位置Ｐ１〜Ｐ４をそれぞれＸ軸の正の方向に１５ｍｍ移動させた位置から、Ｘ軸の負の方向に１０ｍｍ移動させた位置までの直線上に、５ｍｍ間隔で刻まれた各点となる。すなわち、図１４において◆、●、○、◇で示した位置が、それぞれ各シミュレート対象位置Ｐ１、Ｐ２、Ｐ３、Ｐ４に対応する各シミュレート位置となる。また、Ｘステップ開始カウントが「３」であることから、最初のシミュレート位置は、ＰＳ１（３，０）、ＰＳ２（３，０）、ＰＳ３（３，０）、ＰＳ４（３，０）となる。
【００８８】
また、このシミュレーションは、上述したように、Ｐ０からＰ１へ移動した後の、Ｐ２→Ｐ３→Ｐ４→Ｐ１の２回の繰り返し移動動作を対象としているため、１６行目、１７行目でＰ０，Ｐ１への動作命令が記述された後、１８行目で移動時間推定の開始が指示され、そして、１９行目から２４行目までの「ＦＯＲ    …  ＮＥＸＴ」ルーチンによってＰ２→Ｐ３→Ｐ４→Ｐ１への動作命令を２回繰り返すように記述され、２５行目で移動時間推定の終了が指示され、そして、２６行目でＰ５への動作命令が記述されたユーザプログラムとなっている。
【００８９】
このように構成されたユーザプログラムを上述の図１０〜図１２のフローチャートに従って処理することで、まず、ロボットアームをＰＳ２（３，０）→ＰＳ３（３，０）→ＰＳ４（３，０）→ＰＳ１（３，０）の作業経路を２回移動させるのに要する移動時間が求められ、ついで作業経路をＰＳ２（２，０）→ＰＳ３（２，０）→Ｓ４（２，０）→ＰＳ１（２，０）とした場合での同様の移動時間が求められる。すなわち、作業対象物ＷをＸ軸に平行に５ｍｍずつ移動させてそれぞれの位置でのシミュレーションが行われることになる。そして、作業経路をＰＳ２（−２，０）→ＰＳ３（−２，０）→ＰＳ４（−２，０）→ＰＳ１（−２，０）としたときのシミュレーションが終了すると、シミュレーション結果画面がＣＲＴモニター４に表示される。
【００９０】
図１６は、ＣＲＴモニターに表示されたシミュレーション結果画面の出力例を示す図である。
シミュレーション結果出力により、ユーザは、作業対象物Ｗをどの位置に配置すれば、最も短い時間で作業ができるかを判断することが可能となる。この例では、移動時間が４．５３となる、Ｘシミュレート量が＋１５、Ｙシミュレート量が０の位置を最適位置と判断することができ、この最適位置に作業対象物Ｗを配置することにより、作業効率の高いロボット作業を実現することが可能となる。ユーザはこの結果を基に、ユーザプログラムにおいて、Ｐ１、Ｐ２、Ｐ３、Ｐ４の位置を最短移動時間が得られる最適位置に定義し直し、シミュレーションモードＯＮ命令をプログラムから削除するか、またはシミュレーションモードＯＦＦ命令に書き換えることにより、効率的なロボット作業を実現するプログラムに簡単に書き換えることが可能となる。
【００９１】
実施の形態２．
本実施の形態２は、シミュレーション結果の効果的な出力方法に関するものである。
図１７は、シミュレーション結果出力の他の構成例１を示す図である。なお、ここでは図７のユーザプログラムに対応したものを例示している。この構成例１は、シミュレート対象位置でのシミュレートデータと、移動時間が最短となる最適位置でのシミュレートデータを、太字で強調表示するようにしたものである。なお、ＣＲＴモニター４がカラー表示可能なものであれば、表示色を変えて強調表示するようにしても良い。また、この構成例１では、シミュレートデータのリスト表示の他に、シミュレート対象位置の絶対位置（座標値）と移動時間とを含むシミュレート対象位置情報を表示し、更に、最適位置の絶対位置（座標値）と移動時間と、シミュレート対象位置の場合と比較して短縮されるであろう時間（図１７において括弧内の数値）とを含む最適位置情報を表示するようにしている。
【００９２】
以上のように表示することで、ユーザは、リスト表示された複数のシミュレートデータの中から、シミュレート対象位置でのシミュレートデータと、最適位置でのシミュレートデータとを直ちに選出することが可能となる。また、このリスト表示と同時にシミュレート対象位置と最適位置のそれぞれの座標値が表示されるため、ユーザは、このシミュレーション結果に基づいてユーザプログラムを書き換える際に、これらの座標値を利用して簡単にユーザプログラムを変更することが可能となる。なお、強調表示の方法は、太字表示、異色表示に限られず、シミュレート対象位置及び最適位置でのシミュレートデータの選出が視覚的に容易な形式を各種採用できる。
【００９３】
図１８は、シミュレーション結果出力の他の構成例２を示す図である。
この構成例２は、図１７においてリスト表示された部分の表示形式を変えたもので、各シミュレート位置それぞれでの移動時間を、その移動時間に対応するシミュレート位置の位置関係を視覚的に確認できるように表示するものである。上記では、シミュレート範囲を四角形で構成し、各シミュレート位置をシミュレート範囲内でマトリックス状に配置した構成としているので、ここでは各移動時間がマトリックス状に表示されている。この表示により、各シミュレート位置の配置状態と、それぞれに対応する移動時間とを視覚的に同時に確認することが可能となるため、シミュレーション結果をイメージ的に捉えることが可能となり、ユーザは、シミュレーション範囲のうち、どの辺りの領域で移動時間が短くなるのかなどを素早く判断することが可能となる。なお、シミュレート範囲は、上記のような四角形に限られたものではなく、例えば円形や三角形など任意の形状とすることが可能である。
【図面の簡単な説明】
【００９４】
【図１】本発明の各実施の形態のロボットシステムの構成を示す模式図。
【図２】図１の水平多関節ロボットの概要図。
【図３】図１のコントロールユニットの概略構成を示す図。
【図４】本実施の形態１の最適位置決定支援処理の流れの概要を示す図。
【図５】ロボット動作の具体例１を示す図。
【図６】図５の具体例１の詳細説明図。
【図７】図６のシミュレーションを実現するユーザプログラムの一例を示す図。
【図８】プログラム解釈実行プログラムの処理の流れを示すフローチャート（１／２）。
【図９】プログラム解釈実行プログラムの処理の流れを示すフローチャート（２／２）。
【図１０】シミュレーションプログラムの処理の流れを示すフローチャート（１／３）。
【図１１】シミュレーションプログラムの処理の流れを示すフローチャート（２／３）。
【図１２】シミュレーションプログラムの処理の流れを示すフローチャート（３／３）。
【図１３】ＣＲＴモニターに表示されたシミュレーション結果画面の出力例を示す図（その１）。
【図１４】ロボット動作の具体例２を示す図。
【図１５】図１４のシミュレーションを実現するユーザプログラムの一例を示す図。
【図１６】ＣＲＴモニターに表示されたシミュレーション結果画面の出力例を示す図（その２）。
【図１７】シミュレーション結果出力の他の構成例１を示す図。
【図１８】シミュレーション結果出力の他の構成例２を示す図。
【図１９】第１アームと第２アームを有する水平多関節ロボットのロボットアーム先端を点Ａから点Ｂに移動するときの各アームの回転角度の説明図。
【図２０】第１アームと第２アームを有する水平多関節ロボットのロボットアーム先端を点Ｃから点Ｄに移動するときの各アームの回転角度の説明図。
【図２１】図１９及び図２０の第１アームが４１５ｍｍ、第２アームが２３５ｍｍときの水平多関節ロボットのロボットアーム先端を、Ｘ軸方向に３０ｃｍ、１往復した時の移動時間を示す棒グラフ図。
【図２２】図２１の往復動作を行う水平多関節ロボットの模式図。
【符号の説明】
【００９５】
１  水平多関節ロボット、２  コントロールユニット、５  キーボード、６  マウス、２１  ＣＰＵ、２２  ＲＯＭ、２４  ＨＤ。
【図１】
2008052749.tif 000005
【図２】
2008052749.tif 000006
【図３】
2008052749.tif 000007
【図４】
2008052749.tif 000008
【図５】
2008052749.tif 000009
【図６】
2008052749.tif 000010
【図７】
2008052749.tif 000011
【図８】
2008052749.tif 000012
【図９】
2008052749.tif 000013
【図１０】
2008052749.tif 000014
【図１１】
2008052749.tif 000015
【図１２】
2008052749.tif 000016
【図１３】
2008052749.tif 000017
【図１４】
2008052749.tif 000018
【図１５】
2008052749.tif 000019
【図１６】
2008052749.tif 000020
【図１７】
2008052749.tif 000021
【図１８】
2008052749.tif 000022
【図１９】
2008052749.tif 000023
【図２０】
2008052749.tif 000024
【図２１】
2008052749.tif 000025
【図２２】
2008052749.tif 000026