(57)【特許請求の範囲】
【請求項１】
ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、
前記シミュレーション部による実行結果に基づいて、前記ロボットが前記他の物体に干渉するか否かをチェックする干渉チェック部と、
前記干渉が発生する場合に、前記干渉を解消するように、前記パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部と
を備え、
前記動作プログラムは、ユーザ入力に基づいて設定される作業パスである第１パスと、自動的に設定されるエアカットパスである第２パスとを含み、
前記調整部は、前記第１パスを変更することなく前記第２パスについて前記パラメータを調整し、
前記シミュレーション部は、
前記第２パスに関する単体動作プログラムを仮想的に実行し、
前記第２パスにおいて干渉が発生しない場合に、連続する前記第１パスおよび前記第２パスに関する連続動作プログラムをさらに仮想的に実行する、
シミュレーションシステム。
【請求項２】
前記調整部は、
前記単体動作プログラムの仮想的な実行において、前記第２パスに対応する教示点の内回り量であって且つ前記干渉が発生しない最大内回り量と、該最大内回り量よりも小さく且つ別の干渉が発生しない予備内回り量とを特定し、
前記連続動作プログラムの仮想的な実行において、前記最大内回り量が設定された前記第２パスにて前記ロボットが前記他の物体に干渉する場合に、前記第２パスに対応する前記内回り量を前記予備内回り量に変更する、
請求項１に記載のシミュレーションシステム。
【請求項３】
前記調整部は、前記ロボットが前記他の物体と複数の干渉位置で干渉する場合に、該複数の干渉位置のそれぞれに対応する前記少なくとも一つの教示点について前記パラメータを調整する、
請求項１または２に記載のシミュレーションシステム。
【請求項４】
前記調整部は、前記干渉が発生する場合に、前記パラメータの調整として、前記少なくとも一つの教示点の位置を、現在位置よりも前記他の物体からさらに離れた位置にずらす、
請求項１〜３のいずれか一項に記載のシミュレーションシステム。
【請求項５】
前記調整部は、前記少なくとも一つの教示点について、干渉位置と前記現在位置とを結ぶ仮想線の方向に沿って該教示点の位置をずらす、
請求項４に記載のシミュレーションシステム。
【請求項６】
前記調整部は、前記干渉位置と前記現在位置との距離が小さいほど、前記教示点の位置のずらし量を大きくする、
請求項５に記載のシミュレーションシステム。
【請求項７】
前記調整部は、前記少なくとも一つの教示点の位置のずらしとして、干渉位置に対応する第１教示点を含む連続した複数の教示点の位置をずらす、
請求項４〜６のいずれか一項に記載のシミュレーションシステム。
【請求項８】
前記調整部は、前記複数の教示点の位置のずらしとして、前記パスにおいて、前記第１教示点を基準として上流に位置する教示点の位置をずらす、
請求項７に記載のシミュレーションシステム。
【請求項９】
前記調整部は、前記干渉が発生する場合に、前記パラメータの調整として、前記少なくとも一つの教示点の内回り量を減少させる、
請求項１〜８のいずれか一項に記載のシミュレーションシステム。
【請求項１０】
前記調整部は、前記内回り量が減少するように、前記内回り量の候補である複数の内回りレベルの中から一つの内回りレベルを二分探索法によって設定する、
請求項９に記載のシミュレーションシステム。
【請求項１１】
前記調整部は、一の前記パスに対応するすべての教示点に対して同じ前記内回りレベルを設定する、
請求項１０に記載のシミュレーションシステム。
【請求項１２】
前記調整部は、
前記干渉が発生する場合に、前記パラメータの調整として、前記少なくとも一つの教示点の位置を、現在位置よりも前記他の物体からさらに離れた位置にずらす処理を、前記設定された内回りレベルを維持したまま１回以上実行し、
前記設定された内回りレベルについて、前記干渉が発生しない前記動作プログラムを取得できない場合に、より小さい前記内回り量に対応する別の内回りレベルを設定する、
請求項１０または１１に記載のシミュレーションシステム。
【請求項１３】
少なくとも一つのプロセッサを備えるシミュレーションシステムによって実行されるシミュレーション方法であって、
ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、
前記シミュレーションステップにおける実行結果に基づいて、前記ロボットが前記他の物体に干渉するか否かをチェックする干渉チェックステップと、
前記干渉が発生する場合に、前記干渉を解消するように、前記パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップと
を含み、
前記動作プログラムは、ユーザ入力に基づいて設定される作業パスである第１パスと、自動的に設定されるエアカットパスである第２パスとを含み、
前記調整ステップでは、前記第１パスを変更することなく前記第２パスについて前記パラメータを調整し、
前記シミュレーションステップでは、
前記第２パスに関する単体動作プログラムを仮想的に実行し、
前記第２パスにおいて干渉が発生しない場合に、連続する前記第１パスおよび前記第２パスに関する連続動作プログラムをさらに仮想的に実行する、
シミュレーション方法。
【請求項１４】
ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、
前記シミュレーションステップにおける実行結果に基づいて、前記ロボットが前記他の物体に干渉するか否かをチェックする干渉チェックステップと、
前記干渉が発生する場合に、前記干渉を解消するように、前記パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップと
をコンピュータに実行させ、
前記動作プログラムは、ユーザ入力に基づいて設定される作業パスである第１パスと、自動的に設定されるエアカットパスである第２パスとを含み、
前記調整ステップでは、前記第１パスを変更することなく前記第２パスについて前記パラメータを調整し、
前記シミュレーションステップでは、
前記第２パスに関する単体動作プログラムを仮想的に実行し、
前記第２パスにおいて干渉が発生しない場合に、連続する前記第１パスおよび前記第２パスに関する連続動作プログラムをさらに仮想的に実行する、
シミュレーションプログラム。
【請求項１５】
ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、
前記シミュレーションステップにおける実行結果に基づいて、前記ロボットが前記他の物体に干渉するか否かをチェックする干渉チェックステップと、
前記干渉が発生する場合に、前記干渉を解消するように、前記パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップと、
前記調整されたパラメータに基づく前記パスにおいて前記干渉が発生しない場合に、該パスを含む前記動作プログラムに基づいて前記ロボットを制御する制御ステップと
を含み、
前記動作プログラムは、ユーザ入力に基づいて設定される作業パスである第１パスと、自動的に設定されるエアカットパスである第２パスとを含み、
前記調整ステップでは、前記第１パスを変更することなく前記第２パスについて前記パラメータを調整し、
前記シミュレーションステップでは、
前記第２パスに関する単体動作プログラムを仮想的に実行し、
前記第２パスにおいて干渉が発生しない場合に、連続する前記第１パスおよび前記第２パスに関する連続動作プログラムをさらに仮想的に実行する、
ロボットの製造方法。
【請求項１６】
ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、
前記シミュレーション部による実行結果に基づいて、前記ロボットが前記他の物体に干渉するか否かをチェックする干渉チェック部と、
前記干渉が発生する場合に、前記干渉を解消するように、前記パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部と、
前記調整されたパラメータに基づく前記パスにおいて前記干渉が発生しない場合に、該パスを含む前記動作プログラムに基づいて前記ロボットを制御する制御部と
を備え、
前記動作プログラムは、ユーザ入力に基づいて設定される作業パスである第１パスと、自動的に設定されるエアカットパスである第２パスとを含み、
前記調整部は、前記第１パスを変更することなく前記第２パスについて前記パラメータを調整し、
前記シミュレーション部は、
前記第２パスに関する単体動作プログラムを仮想的に実行し、
前記第２パスにおいて干渉が発生しない場合に、連続する前記第１パスおよび前記第２パスに関する連続動作プログラムをさらに仮想的に実行する、
ロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の一側面は、シミュレーションシステム、シミュレーション方法、シミュレーションプログラム、ロボットの製造方法、およびロボットシステムに関する。
【背景技術】
【０００２】
特許文献１には、データセットに基づく機械学習プロセスの結果に基づいて、任意に設定された始点と終点との間のロボッ卜のパスを生成するロボッ卜パス生成装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１８／１４３００３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ロボット制御のプランニングにおいてさらなる自動化が望まれている。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るシミュレーションシステムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、シミュレーション部による実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェック部と、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部とを備える。
【０００６】
本開示の一側面に係るシミュレーション方法は、少なくとも一つのプロセッサを備えるシミュレーションシステムによって実行されるシミュレーション方法であって、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、シミュレーションステップにおける実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェックステップと、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップとを含む。
【０００７】
本開示の一側面に係るシミュレーションプログラムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、シミュレーションステップにおける実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェックステップと、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップとをコンピュータに実行させる。
【０００８】
本開示の一側面に係るロボットの製造方法は、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、シミュレーションステップにおける実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェックステップと、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップと、調整されたパラメータに基づくパスにおいて干渉が発生しない場合に、該パスを含む動作プログラムに基づいてロボットを制御する制御ステップとを含む。
【０００９】
本開示の一側面に係るロボットシステムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、シミュレーション部による実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェック部と、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部と、調整されたパラメータに基づくパスにおいて干渉が発生しない場合に、該パスを含む動作プログラムに基づいてロボットを制御する制御部とを備える。
【発明の効果】
【００１０】
本開示の一側面によれば、ロボット制御のプランニングにおいてさらなる自動化が可能になる。
【図面の簡単な説明】
【００１１】
【図１】ロボットシステムの構成の一例を示す図である。
【図２】プログラミング支援装置のハードウェア構成の一例を示す図である。
【図３】プログラミング支援装置の機能構成の一例を示す図である。
【図４】プログラミング支援装置の動作の一例を示すフローチャートである。
【図５】教示点の位置を調整する一例を示す図である。
【図６】教示点とロボットの軌道との関係の一例を示す図である。
【図７】プログラミング支援装置の動作の一例を示すフローチャートである。
【図８】動作プログラムで表される一連の処理の一例を示す図である。
【図９】プログラミング支援装置の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【００１３】
［ロボットシステム］
本実施形態では、本開示に係るシミュレーションシステムをロボットシステム１のプログラミング支援装置４に適用する。ロボットシステム１は、オペレータにより教示された動作をロボットに実行させることにより、加工、組立等の様々な作業を自動化するシステムである。図１は、実施形態に係るロボットシステムの構成の一例を示す図である。一例では、ロボットシステム１は、１以上のロボット２と、１以上のロボット２に対応する１以上のロボットコントローラ３と、プログラミング支援装置４とを備える。図１は３台のロボット２および３台のロボットコントローラ３を示し、一つのロボットコントローラ３に一つのロボット２が接続される構成を示す。しかし、各装置の台数も接続方法も限定されない。例えば、一つのロボットコントローラ３に複数台のロボット２が接続されてもよい。
【００１４】
一例では、ロボット２は多軸のシリアルリンク型の垂直多関節ロボットであり、その先端部５にツールを保持した状態で様々な処理を実行できるように構成される。ロボット２は、所定の範囲内において先端部５の位置および姿勢を自在に変更し得る。ロボット２は、６軸の垂直多関節ロボットでもよいし、６軸に１軸の冗長軸を追加した７軸の垂直多関節ロボットでもよい。一例では、複数台のロボット２は、同一の位置に配置された同一のワークに対し、いずれのロボット２によっても同一の処理を実行し得るように配置される。
【００１５】
ロボットコントローラ３は、予め生成された動作プログラムに従ってロボット２を制御する装置である。一例では、動作プログラムはロボット２を制御するためのデータを含み、例えば、ロボット２の軌道を示すパスを含む。ロボット２の軌道とは、ロボット２またはその構成要素の動きの経路のことをいう。例えば、ロボット２の軌道は先端部５の軌道であり得る。一例では、ロボットコントローラ３は、動作プログラムで示される目標値に先端部５の位置および姿勢を一致させるための関節角度目標値（ロボット２の各関節の角度目標値）を算出し、その角度目標値に従ってロボット２を制御する。
【００１６】
ロボットコントローラ３の制御によってロボット２は一連の処理を実行する。その一連の処理を構成する最小単位の処理をタスクという。タスクの例として「部品を取る」、「部品を置く」、「部品を（ワークに）嵌合する」、「待機姿勢を取る」等が挙げられるが、当然ながら、タスクは任意の方針で設定されてよい。一つのタスクは、該タスク中におけるロボット２の軌道である作業パスを含み得る。一例では、この作業パスはタスクを生成する際にユーザ入力に基づいて設定される。すなわち、作業パスは人手により設定される。作業パスは第１パスの一例である。
【００１７】
動作プログラムは、タスク間をつなぐロボット２の軌道を示すパスも含む。より具体的には、このパスは、先行するタスクにおける作業パスの終点と、後続のタスクにおける作業パスの始点とを結ぶ。本開示では、作業パスと区別するために、タスク間のパスのことを「エアカットパス」ともいう。タスク間のパスは自動的に設定され、例えば、始点および終点以外の教示点が設定されることでそのパスが自動設定される。ここで、教示点とは、パスを規定するために設定される基準点のことをいう。エアカットパスは第２パスの一例である。
【００１８】
プログラミング支援装置４は、動作プログラムの生成を支援する装置である。プログラミング支援装置４は、１以上のロボット２のそれぞれについて動作プログラムを生成し、この動作プログラムに基づく制御において問題があるか否かをシミュレーションする。シミュレーションとは動作プログラムを仮想的に実行する処理のことをいい、具体的には、ロボット２を実際に作動させることなく動作プログラムをコンピュータ上で模擬的に実行することをいう。より具体的には、シミュレーションは、ロボット２および他の物体が配置された仮想空間上で動作プログラムを仮想的に実行する処理である。他の物体とは、ロボット２の周辺に配置された物体であり、例えば、他のロボット２、ワーク、他の製造装置等であり得る。
【００１９】
［プログラミング支援装置］
図２はプログラミング支援装置４のハードウェア構成の一例を示す図である。プログラミング支援装置４は本体１０、モニタ２０、および入力デバイス３０を備える。
【００２０】
本体１０は少なくとも一つのコンピュータにより構成される。本体１０は回路１６０を有し、回路１６０は、少なくとも一つのプロセッサ１６１と、メモリ１６２と、ストレージ１６３と、入出力ポート１６４とを有する。ストレージ１６３は、本体１０の上記各機能モジュールを構成するためのプログラムを記録する。ストレージ１６３は、ハードディスク、不揮発性の半導体メモリ、磁気ディスク、光ディスク等の、コンピュータ読み取り可能な記録媒体である。メモリ１６２は、ストレージ１６３からロードされたプログラム、プロセッサ１６１の演算結果等を一時的に記憶する。プロセッサ１６１は、メモリ１６２と協働してプログラムを実行することで、各機能モジュールを構成する。入出力ポート１６４は、プロセッサ１６１からの指令に応じ、モニタ２０、入力デバイス３０、およびロボットコントローラ３の間で電気信号の入出力を行う。
【００２１】
モニタ２０は、本体１０から出力された情報を表示するための装置である。モニタ２０は、グラフィック表示が可能であればいかなるものであってもよく、その具体例としては液晶パネル等が挙げられる。入力デバイス３０は、本体１０に情報を入力するための装置である。入力デバイス３０は、所望の情報を入力可能であればいかなるものであってもよく、その具体例としてはキーパッド、マウス等が挙げられる。
【００２２】
モニタ２０および入力デバイス３０はタッチパネルとして一体化されていてもよい。例えばタブレットコンピュータのように、本体１０、モニタ２０、および入力デバイス３０が一体化されていてもよい。
【００２３】
図３はプログラミング支援装置４の機能構成の一例を示す図である。一例では、プログラミング支援装置４は機能モジュールとして受付部１０１、シミュレーション部１０２、調整部１０３、および出力部１０４を備える。受付部１０１は、検証しようとする動作プログラムを取得する機能モジュールである。シミュレーション部１０２は、その動作プログラムを仮想的に実行して、該動作プログラムに問題があるか否かをチェックする機能モジュールである。より具体的には、シミュレーション部１０２は、シミュレーションにおいてロボット２が他の物体に干渉するか否かを判定する。本開示において、干渉とは物体同士が接触または衝突することをいい、より具体的には、ロボット２が他の物体に接触または衝突することをいう。調整部１０３は、シミュレーションにおいて干渉が発生した場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する機能モジュールである。出力部１０４はシミュレーションの結果を出力する機能モジュールである。
【００２４】
［シミュレーション方法］
本開示に係るシミュレーション方法の一例として、図４を参照しながら、プログラミング支援装置４により実行される一連の処理手順の一例を説明する。図４はプログラミング支援装置４の動作の一例を処理フローＳ１として示すフローチャートである。すなわち、プログラミング支援装置４は処理フローＳ１を実行する。
【００２５】
ステップＳ１０１では、受付部１０１が、検証しようとする動作プログラムを取得する。動作プログラムの取得方法は限定されない。例えば、受付部１０１はユーザ入力された動作プログラムを受け付けてもよいし、ユーザ入力に基づいて所与の記憶装置から動作プログラムを読み出してもよいし、他のコンピュータから送られてきた動作プログラムを受信してもよい。
【００２６】
ステップＳ１０２では、シミュレーション部１０２が、検証しようとする一つのパスを選択する。一例では、シミュレーション部１０２は、作業パス（第１パス）を選択することなくエアカットパス（第２パス）を選択する。動作プログラムが複数のエアカットパスを含む場合にはシミュレーション部１０２は任意の方針によって一つのエアカットパスを選択してよく、例えば、一連の処理の上流から下流の方向に沿って順番にエアカットパスを選択してもよい。
【００２７】
ステップＳ１０３では、シミュレーション部１０２が、選択されたパス（例えばエアカットパス）に関する動作プログラムを仮想的に実行する。「選択されたパスに関する動作プログラム」とは、動作プログラムのうち、選択されたパスにおけるロボット２の制御を規定する部分のことをいう。本開示ではその部分を「単体動作プログラム」ともいう。シミュレーション部１０２は単体動作プログラムを仮想的に実行するので、或る一つのパスについて複数の干渉を特定することが可能である。ロボット２と干渉する他の物体の個数は１かもしれないし複数もしれない。
【００２８】
ステップＳ１０４では、シミュレーション部１０２が、選択されたパスにおいて干渉が発生するか否かをシミュレーションの実行結果に基づいて判定する。したがって、シミュレーション部１０２は干渉チェック部としても機能する。干渉が発生しない場合には（ステップＳ１０４においてＮＯ）、処理はステップＳ１０７に進む。ステップＳ１０７については後述する。
【００２９】
一方、少なくとも一つの干渉が発生する場合には（ステップＳ１０４においてＹＥＳ）、プログラミング支援装置４は干渉が発生しないパスを探索するために、そのパスに対応する少なくとも一つの教示点に関するパラメータを調整する。そして、プログラミング支援装置４は調整されたパラメータに基づくパスに対応する動作プログラムを仮想的に実行し、そのパスにおいて干渉が発生するか否かを判定する。ステップＳ１０５，Ｓ１０６はこのような再実行に関連する。
【００３０】
ステップＳ１０５ではシミュレーション部１０２がパス決定を打ち切るか否かを判定する。この打ち切り条件は任意の方針で設定されてよく、例えば、試行回数により規定されてもよいし、タイムアウト時間により規定されてもよい。
【００３１】
パス決定を打ち切らない場合には（ステップＳ１０５においてＮＯ）、処理はステップＳ１０６に進む。ステップＳ１０６では、調整部１０３が、選択されたパスに対応する少なくとも一つの教示点に関するパラメータを調整する。このパラメータの調整によってパスの少なくとも一部が変更される。ロボット２が他の物体と複数の位置（干渉位置）で干渉する場合には、調整部１０３は、複数の干渉位置のそれぞれに対応する少なくとも一つの教示点についてパラメータを調整する。すなわち、調整部１０３はすべての干渉を解消するように少なくとも一つの教示点のパラメータを調整する。教示点のパラメータは限定されず、これに関連して、パラメータの調整方法も限定されない。以下では、その調整の例として、教示点の位置の変更と、内回り量の変更とを説明する。
【００３２】
（教示点の位置の変更）
一例では、調整部１０３は少なくとも一つの教示点の位置を、現在位置よりも他の物体（干渉が発生する他の物体）からさらに離れた位置にずらしてもよい。このように教示点の位置を変更することで、パスを規定する教示点と他の物体との距離が現在の値よりも大きくなるので、その教示点に基づくパスも他の物体から離れる。その結果として、干渉が回避され得る。
【００３３】
図５は教示点の位置を調整する一例を示す図である。この例では、調整部１０３は位置をずらす教示点を選択する。例えば、調整部１０３はロボット２が他の物体９に干渉する位置を干渉位置として特定し、この干渉位置に対応する一つの教示点を第１教示点として選択する。第１教示点の選択方法は限定されない。一例では、調整部１０３は、隣接する二つの教示点のペアのそれぞれについて、該ペアに対応するパスの一部分（これを「区間」という）を求め、干渉位置を含む区間を特定する。そして、調整部１０３はその区間において下流に位置する教示点を第１教示点として選択する。この処理は、干渉が発生した際におけるロボット２の直近の移動目標に対応する教示点を第１教示点として選択することを意図するものであるといえる。別の例では、調整部１０３は干渉位置に最も近い教示点を第１教示点として選択してもよい。
【００３４】
調整部１０３は第１教示点を含む連続した複数の教示点を選択してもよい。一例では、調整部１０３は、選択されたパスにおいて、第１教示点を基準として上流に位置する複数の教示点を選択してもよい。ここで、「上流に位置する教示点」とは、パスの始点に近い側に位置する教示点のことをいう。別の例では、調整部１０３は、選択されたパスにおいて、第１教示点を基準として下流に位置する複数の教示点（すなわち、パスの終点に近い側に位置する教示点）を選択してもよい。あるいは、調整部１０３は、選択されたパスにおいて、第１教示点より上流に位置する或る教示点から、第１教示点より下流に位置する或る教示点までの連続した複数の教示点を選択してもよい。連続する複数の教示点として選択される教示点の個数は任意に設定されてよい。
【００３５】
一例では、調整部１０３は、選択されたパスの始点および終点に対応する二つの教示点を、位置をずらす教示点として選択しない。すなわち、調整部１０３は、パスにおける最初の教示点および最後の教示点を除いた他の教示点のうちの少なくとも一つを、位置をずらす教示点として選択する。これは、パスの始点および終点がいずれも、隣接するパスとの接続に関係し、最初の教示点および最後の教示点の位置を変更するとその接続が不適切になり得る。
【００３６】
図５は、ロボット２の先端部５のパス２０１と、このパス２０１に対応する５個の教示点２１１〜２１５とを示す。先端部５は教示点２１１から教示点２１５に向かって進むものとし、したがって、教示点２１１がパス２０１の始点であり、教示点２１５がパス２０１の終点である。シミュレーションにおいてロボット２（より具体的には先端部５）が干渉位置２２１で他の物体９に干渉したとする。一例では、調整部１０３はその干渉位置２２１に対応する第１教示点として教示点２１４を選択する。例えば、教示点２１４は、干渉が発生した際におけるロボット２の直近の移動目標に対応する。続いて、調整部１０３はその教示点２１４を含む連続した複数の教示点を選択する。一例では、調整部１０３は教示点２１４を基準として上流に位置する教示点２１２、２１３をさらに選択することで、結果的に教示点２１２〜２１４を選択する。調整部１０３は、パス２０１の始点である教示点２１１を選択しない。
【００３７】
位置をずらす少なくとも一つの教示点を選択した後に、調整部１０３はそれぞれの教示点の位置を、現在位置よりも他の物体９からさらに離れた位置にずらす。一例では、調整部１０３は、選択された教示点のそれぞれについて、干渉位置と現在位置とを結ぶ仮想線の方向に沿って該教示点の位置をずらす。図５はこの手法による位置の変更を示す。図５の例では、調整部１０３は干渉位置２２１と教示点２１２の現在位置とを結ぶ仮想線２３２の方向に沿って教示点２１２をずらし、この結果、教示点２１２は位置２１２Ａに移る。また、調整部１０３は干渉位置２２１と教示点２１３の現在位置とを結ぶ仮想線２３３の方向に沿って教示点２１３をずらし、この結果、教示点２１３は位置２１３Ａに移る。さらに、調整部１０３は干渉位置２２１と教示点２１４の現在位置とを結ぶ仮想線２３４の方向に沿って教示点２１４をずらし、この結果、教示点２１４は位置２１４Ａに移る。
【００３８】
教示点をずらす量は任意の方針で設定されてよい。例えば、調整部１０３は干渉位置と教示点の現在位置との距離が小さいほど、教示点の位置のずらし量を大きくしてもよい。このようなずらし方の具体的な手法は限定されない。一例では、調整部１０３は下記の式（１），（２）を用いてずらし量Δｒｍを求めてもよい。
【００３９】
【数１】
0006792184.tif 000002
【数２】
0006792184.tif 000003
【００４０】
上記の式において、ｒｍは現在の教示点の位置を示すベクトルであり、ｒｃｎは干渉位置を示すベクトルである。ＭＰＬは教示点の所与の最大ずらし量である。関数ｗ（ｘ）は、干渉位置と教示点の現在位置との距離が小さいほど、教示点の位置のずらし量を大きくするために用いるシグモイド関数である。そのようなずらし量の程度は、係数α，βを調整することで決めることができる。
【００４１】
あるいは、調整部１０３は干渉時のロボット２の稼働速度（例えば先端部５の動きの速度）を考慮して教示点の位置のずらし量を設定してもよい。例えば、調整部１０３はその速度が大きいほどずらし量を大きくしてもよい。
【００４２】
図５の例では、教示点２１２，２１３，２１４がそれぞれ位置２１２Ａ，２１３Ａ，２１４Ａに移る。すなわち、教示点２１２，２１３，２１４の現在位置はそれぞれ、位置２１２Ａ，２１３Ａ，２１４Ａに変わる。このように少なくとも一つの教示点が干渉位置２２１を中心として放射方向に沿って移動するので、パス２０１よりも他の物体９から離れたパス２０１Ａが得られる。パスを規定する教示点と他の物体との距離が現在の値よりも大きくなるので、その教示点に基づくパスも他の物体から離れ、その結果、干渉が回避され得る。
【００４３】
（内回り量の変更）
一例では、調整部１０３は少なくとも一つの教示点の内回り量を減少させてもよい。内回りとは、連続する３個の教示点によって規定されるロボット２の軌道（例えば先端部５の軌道）が、該３点を直線で結ぶ経路よりも短くなる現象のことをいう。内回り量とは、その内回りの程度を示す数値のことをいう。本開示では、内回り量が大きいほど、軌道の長さが短くなるものとする。したがって、内回り量が大きいほどロボット２の動作時間が短縮される。
【００４４】
図６は教示点とロボット２の軌道との関係の一例を示す図である。この例は、連続する３個の教示点２４１〜２４３と、３個の教示点を直線で結ぶ軌道２５０と、内回りの軌道２５１〜２５８とを示す。これらの軌道２５０〜２５８は教示点２４２に対応する。この例では、教示点２４１が始点であり、教示点２４３が終点であるとする。一般に、ロボットコントローラ３は、ロボットの動作を滑らかにするために、教示点２４１から教示点２４２への移動に関する速度指令と、教示点２４２から教示点２４３への移動に関する速度指令とを重ね合わせる。この重ね合わせによってロボット２の移動距離が短縮され、その結果、教示点２４２を通らない軌道が生成される。図６の例では、教示点２４２を通る軌道２５０の内回り量が０で最も小さく、軌道２５８の内回り量が最も大きい。
【００４５】
一例では、調整部１０３は、内回り量を決定するために、複数の内回りレベルの中から一つの内回りレベルを設定する。内回りレベルとは、内回り量の候補を段階的に示す指数のことをいう。図６の例では、軌道２５０の内回りレベルを０とし、軌道２５１の内回りレベルを１とし、軌道２５２の内回りレベルを２とし、同様に軌道２５３〜２５８の内回りレベルをそれぞれ３〜８とする。図６は教示点２４２に対応する内回りレベルのみを示すが、この内回りレベルは、パスを構成するすべての教示点について設定され、したがって、パスの始点および終点においても設定される。一例では、調整部１０３は、選択されたパスに対応するすべての教示点に対して同じ内回りレベルを設定する。しかし、実際の内回り量は個々の教示点によって異なり得る。
【００４６】
内回りレベルを用いた内回り量の調整方法は限定されない。例えば、調整部１０３は、内回り量が減少するように、複数の内回りレベルの中から一つの内回りレベルを二分探索法によって設定してもよい。例えば、現在の内回りレベルが「８」であれば、調整部１０３はその内回りレベルを「４」（すなわち、「０」と「８」との中間の内回りレベル）に変更する。内回りレベル「４」に基づくシミュレーションで干渉が発生する場合には、調整部１０３はその内回りレベルを「２」（すなわち、「０」と「４」との中間の内回りレベル）に変更する。内回りレベル「４」に基づくシミュレーションで干渉が発生しない場合には、調整部１０３はその内回りレベルを「６」（すなわち、「４」と「８」との中間の内回りレベル）に変更する。調整部１０３はこのように処理を進めることで、干渉が発生しない内回り量のうちの最大値（最大内回り量）を特定してもよい。あるいは、調整部１０３は、内回り量が減少するように、現在の内回りレベルの１段階下の内回りレベルを設定してもよい。
【００４７】
このように、教示点に関するパラメータの調整方法は限定されない。いずれにしても、調整部１０３は１以上の干渉位置のそれぞれについて、少なくとも一つの教示点のパラメータを調整する。例えば、教示点の位置を調整する場合には、一部の教示点が、複数の干渉の影響を受けて他の教示点よりも大きく現在位置からずれる可能性がある。
【００４８】
ステップＳ１０６の後に処理はステップＳ１０３に戻る。このステップＳ１０３では、シミュレーション部１０２が、調整されたパラメータに基づくパスに対応する動作プログラムを仮想的に実行する。その後、その実行結果に基づいてステップＳ１０４以降の処理が実行される。なお、内回りレベルを二分探索法によって設定する場合には、上述したように、干渉が発生しない場合（ステップＳ１０４）にも、ステップＳ１０６およびステップＳ１０３が実行され得る。
【００４９】
パス決定を打ち切る場合には（ステップＳ１０５においてＹＥＳ）、処理はステップＳ１０７に移る。ステップＳ１０７では、シミュレーション部１０２がすべてのパスを検証したか否かを確認する。未だ検証していないパスが存在する場合には（ステップＳ１０７においてＮＯ）、処理はステップＳ１０２に戻り、シミュレーション部１０２が、検証しようとする次のパスを選択する。その後、そのパスについてステップＳ１０３以降の処理が実行される。
【００５０】
すべてのパスを検証した場合には（ステップＳ１０７においてＹＥＳ）、処理はステップＳ１０８に移る。ステップＳ１０８では、出力部１０４がシミュレーションの結果を示す結果データを出力する。
【００５１】
結果データのデータ構造は限定されない。例えば、結果データは動作プログラムを含んでもよい。出力部１０４は、干渉が発生しないことをシミュレーション上で確認できた動作プログラムを出力し得る。受付部１０１によって取得された動作プログラムそのものにおいて干渉が発生しなかったならば、出力部１０４は結果的に、入力された動作プログラムをそのまま出力し得る。パス決定を打ち切った場合には、出力部１０４は干渉の可能性を有する動作プログラムを出力する。結果データは、動作プログラムに加えてまたは代えて他の情報を含んでもよい。例えば、結果データは、教示点に関するパラメータがどのように調整されたかを示す調整情報を含んでもよいし、解消できなかった干渉に関する干渉情報を含んでもよい。
【００５２】
結果データの出力先も限定されない。例えば、出力部１０４は結果データを、モニタ２０上に表示してもよいし、ストレージ１６３等の記録媒体に格納してもよいし、ロボットコントローラ３等の他のコンピュータに送信してもよい。結果データをモニタ２０上に表示する場合には、出力部１０４はユーザ操作に応答してまたは自動的に、動作プログラムに基づくロボット２の動作をコンピュータグラフィック（ＣＧ）による動画または静止画によって表現してもよい。
【００５３】
一例では、出力部１０４は、干渉が発生しないことをシミュレーション上で確認できた動作プログラムをロボットコントローラ３に出力し、ロボットコントローラ３はその動作プログラムに基づいてロボット２を制御する。したがって、出力部１０４およびロボットコントローラ３のうちの少なくとも一つは制御部として機能する。動作プログラムに基づいて動作するロボット２が処理フローＳ１によって得られるので、処理フローＳ１は、本開示に係るシミュレーション方法の一例であるとともに、本開示に係るロボットの製造方法の一例でもある。
【００５４】
上述したように、一例では、調整部１０３は一つのパス内のすべての教示点について同じ内回りレベルを設定する。その一方で、複数のエアカットパスの間で内回りレベルが異なることがあり得る。
【００５５】
プログラミング支援装置４は内回りレベルと教示点の位置との双方を変更することで、パスに対応する教示点に関するパラメータを調整してもよい。図７を参照しながらこの調整方法の一例を説明する。図７はプログラミング支援装置４の動作の一例を処理フローＳ２として示すフローチャートである。すなわち、プログラミング支援装置４は処理フローＳ２を実行する。
【００５６】
この処理フローＳ２では、調整部１０３は、干渉が発生する場合に、少なくとも一つの教示点の位置を、現在位置よりも他の物体からさらに離れた位置にずらす処理を、設定された内回りレベルを維持したまま１回以上実行する。設定された内回りレベルについて、干渉が発生しない動作プログラムを取得できない場合には、調整部１０３は、より小さい内回り量に対応する別の内回りレベルを設定する。そして、調整部１０３は、その新たな内回りレベルを維持したまま、少なくとも一つの教示点の位置を他の物体からさらに離れた位置にずらす処理を１回以上実行する。要するに、調整部１０３は、或る内回りレベル（内回り量）を維持したまま、教示点の位置をずらしながら、干渉が発生しないパスを探索する。その内回りレベルではそのようなパスを見つけられない場合には、調整部１０３は新たな内回りレベルを設定した上で（すなわち、内回り量を小さくした上で）、教示点の位置をずらしながら、干渉が発生しないパスを探索する。調整部１０３はこのように内回りレベルおよび教示点の位置の変更を繰り返しながら、干渉が発生しないパスを探索する。
【００５７】
処理フローＳ２は或る一つのパスについての処理である。プログラミング支援装置４は、検証しようとするパスのすべてについてこの処理フローＳ２を実行する。
【００５８】
ステップＳ２０１では、シミュレーション部１０２が内回りレベルの初期値を設定する。一例では、シミュレーション部１０２はパスに対応するすべての教示点について同じ内回りレベルを設定する。例えば、内回りレベルの初期値は、内回り量が最大である内回りレベルである（図６の例では内回りレベル「８」）。
【００５９】
ステップＳ２０２では、シミュレーション部１０２が、教示点が初期位置である場合の動作プログラム（単体動作プログラム）を仮想的に実行する。
【００６０】
ステップＳ２０３では、シミュレーション部１０２が、選択されたパスにおいて干渉が発生するか否かを判定する。干渉が発生する場合には（ステップＳ２０３においてＹＥＳ）、処理はステップＳ２０４に移る。
【００６１】
ステップＳ２０４では、調整部１０３が少なくとも一つの教示点の位置をずらす。この位置のずらし方が特定の手法に限定されないことは、処理フローＳ１を示しながら説明した通りである。ロボット２が他の物体と複数の干渉位置で干渉する場合には、調整部１０３はすべての干渉を解消するように少なくとも一つの教示点の位置をずらす。これは、複数の干渉位置のそれぞれに対応する少なくとも一つの教示点についてパラメータを調整する処理の一例である。
【００６２】
ステップＳ２０５では、シミュレーション部１０２が、教示点の調整された位置に基づくパスに対応する動作プログラム（単体動作プログラム）を仮想的に実行する。
【００６３】
ステップＳ２０６ではシミュレーション部１０２が、選択されたパスにおいて干渉が発生するか否かを判定する。ステップＳ２０７，Ｓ２０８で示すように、教示点の位置をずらしながら干渉の有無をチェックする処理は、シミュレーション部１０２が位置の調整を打ち切ると判定するまで繰り返される。
【００６４】
ステップＳ２０９では、シミュレーション部１０２は、内回りレベルの調整を打ち切るか否かを判定する。この調整を打ち切らない場合には（ステップＳ２０９においてＮＯ）、処理はステップＳ２１０に進む。
【００６５】
ステップＳ２１０では、調整部１０３が内回りレベルを所与の手法により変更する。この変更方法が特定の手法に限定されないことは、処理フローＳ１を示しながら説明した通りである。ロボット２が他の物体と複数の干渉位置で干渉する場合には、調整部１０３はすべての干渉を解消するように内回り量を変更する。これは、複数の干渉位置のそれぞれに対応する少なくとも一つの教示点についてパラメータを調整する処理の一例である。続いて、変更された内回りレベルについてステップＳ２０２以降の処理が再び実行される。
【００６６】
或る内回りレベルにおいて、干渉が発生しないパスを特定できた場合には（ステップＳ２０３においてＮＯ、またはステップＳ２０６においてＮＯ）、処理はステップＳ２１１に進む。一例では、シミュレーション部１０２または調整部１０３はこの段階で、単体動作プログラムの仮想的な実行において干渉が発生しない最大内回り量を特定したことになる。
【００６７】
ステップＳ２１１では、調整部１０３はその最大内回り量よりも小さく且つ別の干渉が発生しない内回り量を予備内回り量として特定する。一例では調整部１０３は内回りレベルを０から順に１段階ずつ上げながら１以上の予備内回り量を特定する。この処理において予備内回り量が得られない場合もあり得る。
【００６８】
ステップＳ２１２では、シミュレーション部１０２が、パスに対応する少なくとも一つの教示点に関するパラメータを確定する。この段階で、干渉が発生しないパス（パラメータ群）が得られるかもしれないし、得られないかもしれない。
【００６９】
次に、図８および図９を参照しながら、連続する複数のパスに関する動作プログラムを仮想的に実行する処理を説明する。「連続する複数のパスに関する動作プログラム」とは、動作プログラムのうち、連続する複数のパスにおけるロボット２の制御を規定する部分のことをいう。本開示ではその部分を「連続動作プログラム」ともいう。
【００７０】
図８は動作プログラムで表される一連の処理の一例を示す図である。この例では、動作プログラムＪ１は４個のタスクＡ，Ｂ，Ｃ，Ｄと、４個のエアカットパスＷ，Ｘ，Ｙ，Ｚとを含む。タスクＡはロボット２を待機させるためのタスクであるとし、タスクＢ，Ｃ，Ｄはその後の一連のタスクであるとする。エアカットパスＷはタスクＡ，Ｂ間に設けられ、エアカットパスＸはタスクＢ，Ｃ間に設けられ、エアカットパスＹはタスクＣ，Ｄ間に設けられ、エアカットパスＺはタスクＤ，Ａ間に設けられる。連続動作プログラムに対応するパスの個数および組合せは限定されない。例えば、連続動作プログラムは、タスクＡの作業パスとエアカットパスＷとに対応してもよいし、エアカットパスＷとタスクＢの作業パスとに対応してもよい。あるいは、連続動作プログラムは、タスクＤの作業パスと、エアカットパスＺと、タスクＡの作業パスとに対応してもよい。あるいは、連続動作プログラムは動作プログラムＪ１の全体でもよい。
【００７１】
一つのパスにおいて（すなわち、単体動作プログラムにおいて）干渉が発生しなくても、ロボット２が複数のパスを跨いで動作すると、パスの接続部分でも内回りの軌道ができるために新たな干渉が発生し得る。単独動作プログラムのシミュレーションだけでもロボット制御のプランニングにおけるさらなる自動化を実現できるが、プログラミング支援装置４は連続動作プログラムについてもシミュレーションを実行してもよい。
【００７２】
図９はプログラミング支援装置４の動作の一例を処理フローＳ３として示すフローチャートである。すなわち、プログラミング支援装置４は処理フローＳ３を実行する。
【００７３】
ステップＳ３０１では、受付部１０１が連続動作プログラムを取得する。連続動作プログラムの取得方法は限定されない。例えば、受付部１０１はユーザ入力された連続動作プログラムを受け付けてもよいし、ユーザ入力に基づいて所与の記憶装置から連続動作プログラムを読み出してもよいし、他のコンピュータから送られてきた連続動作プログラムを受信してもよい。いずれにしても、取得される連続動作プログラムに含まれるすべてのエアカットパス（第２パス）は、干渉が発生しないことが上記の処理フローＳ１またはＳ２などによって既に確認されたパスである。
【００７４】
ステップＳ３０２では、シミュレーション部１０２がその連続動作プログラムを仮想的に実行する。これは、シミュレーション部１０２が、エアカットパスに関する単体動作プログラムを仮想的に実行し、そのエアカットパスにおいて干渉が発生しない場合に、連続する作業パスおよびエアカットパスに関する連続動作プログラムをさらに仮想的に実行する処理に対応する。
【００７５】
ステップＳ３０３では、シミュレーション部１０２がその連続動作プログラムにおいて干渉が発生するか否かをシミュレーションの実行結果に基づいて判定する。干渉が発生しない場合には（ステップＳ３０３においてＮＯ）、処理はステップＳ３０６に進む。ステップＳ３０６については後述する。
【００７６】
一方、少なくとも一つの干渉が発生する場合には（ステップＳ３０４においてＹＥＳ）、プログラミング支援装置４は、内回りレベルの調整を打ち切ると判定するまで、その干渉が発生したパスの内回りレベルを変更する。ステップＳ３０４、Ｓ３０５はその後続処理を示す。
【００７７】
ステップＳ３０４ではシミュレーション部１０２が内回りレベルの調整を打ち切るか否かを判定する。この打ち切り条件は任意の方針で設定されてよく、例えば、試行回数により規定されてもよいし、タイムアウト時間により規定されてもよい。
【００７８】
内回りレベルの調整を打ち切らない場合には（ステップＳ３０４においてＮＯ）、処理はステップＳ３０５に進む。ステップＳ３０５では、調整部１０３が、選択されたパスの内回りレベルを変更する。一例では、調整部１０３は、最大内回り量が設定されたエアカットパスにてロボット２が他の物体に干渉する場合に、そのエアカットパスに対応する内回り量を予備内回り量に変更する。ロボット２が他の物体と複数の干渉位置で干渉する場合には、調整部１０３はすべての干渉を解消するように内回り量を変更する。これは、複数の干渉位置のそれぞれに対応する少なくとも一つの教示点についてパラメータを調整する処理の一例である。その後、その変更された内回り量についてステップＳ３０２以降の処理が実行される。内回りレベルの調整を打ち切る場合には（ステップＳ３０４においてＹＥＳ）、処理はステップＳ３０６に進む。
【００７９】
ステップＳ３０６では、出力部１０４がシミュレーションの結果を示す結果データを出力する。処理フローＳ１でのステップＳ１０８と同様に、結果データのデータ構造および出力先は限定されない。動作プログラムに基づいて動作するロボット２が処理フローＳ３によって得られるので、処理フローＳ３も、本開示に係るシミュレーション方法の一例であるとともに、本開示に係るロボットの製造方法の一例でもある。
【００８０】
一例では、処理フローＳ１，Ｓ２，Ｓ３のいずれにおいても、調整部１０３は、作業パス（第１パス）を変更することなくエアカットパス（第２パス）について教示点に関するパラメータを調整する。典型的には、作業パスはユーザ入力に基づいて設定され、エアカットパスは自動的に設定される。したがって、パラメータの自動調整はエアカットパスのみについて実行されてもよい。
【００８１】
［プログラム］
プログラミング支援装置４の各機能モジュールは、プロセッサ１６１またはメモリ１６２の上にシミュレーションプログラムを読み込ませてプロセッサ１６１にそのプログラムを実行させることで実現される。シミュレーションプログラムは、プログラミング支援装置４の各機能モジュールを実現するためのコードを含む。プロセッサ１６１はシミュレーションプログラムに従って入出力ポート１６４を動作させ、メモリ１６２またはストレージ１６３におけるデータの読み出しおよび書き込みを実行する。このような処理によりプログラミング支援装置４の各機能モジュールが実現される。
【００８２】
シミュレーションプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、シミュレーションプログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【００８３】
［効果］
以上説明したように、本開示の一側面に係るシミュレーションシステムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、シミュレーション部による実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェック部と、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部とを備える。
【００８４】
本開示の一側面に係るシミュレーション方法は、少なくとも一つのプロセッサを備えるシミュレーションシステムによって実行されるシミュレーション方法であって、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、シミュレーションステップにおける実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェックステップと、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップとを含む。
【００８５】
本開示の一側面に係るシミュレーションプログラムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、シミュレーションステップにおける実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェックステップと、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップとをコンピュータに実行させる。
【００８６】
本開示の一側面に係るロボットの製造方法は、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーションステップと、シミュレーションステップにおける実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェックステップと、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整ステップと、調整されたパラメータに基づくパスにおいて干渉が発生しない場合に、該パスを含む動作プログラムに基づいてロボットを制御する制御ステップとを含む。
【００８７】
本開示の一側面に係るロボットシステムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、シミュレーション部による実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェック部と、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部と、調整されたパラメータに基づくパスにおいて干渉が発生しない場合に、該パスを含む動作プログラムに基づいてロボットを制御する制御部とを備える。
【００８８】
このような側面においては、干渉が発生するパスに対応する教示点のパラメータが自動的に変更されるので、ロボット制御のプランニングのさらなる自動化が可能になる。干渉を回避するための手法として、パスを自動生成する際にそのパスを再設定することが考えられる。しかし、その自動生成は軌道の距離を短くしようとする特性を持つので、該自動生成だけでは干渉を回避できないことが多い。一方で、従来は教示点の変更は試行錯誤しながら手動で為されるため、手間と時間が掛かる。上記の側面においてはその手動による調整が自動化され、その結果、適切な動作プログラムを効率的に得ることが可能になる。
【００８９】
他の側面に係るシミュレーションシステムでは、動作プログラムは、ユーザ入力に基づいて設定される第１パスと、自動的に設定される第２パスとを含み、調整部は、第１パスを変更することなく第２パスについてパラメータを調整してもよい。この場合には、ユーザにより定義される第１パスに影響を与えることなく、自動設定される第２パスに限って教示点のパラメータを調整することができる。
【００９０】
他の側面に係るシミュレーションシステムでは、シミュレーション部は、第２パスに関する単体動作プログラムを仮想的に実行し、第２パスにおいて干渉が発生しない場合に、連続する第１パスおよび第２パスに関する連続動作プログラムをさらに仮想的に実行してもよい。この場合には、ユーザにより定義される第１パスに影響を与えることなく、該ユーザが求める一連のパス（言い換えると、ユーザの目的を達成できる一連のパス）を自動的に設定することができる。
【００９１】
他の側面に係るシミュレーションシステムでは、調整部は、単体動作プログラムの仮想的な実行において、第２パスに対応する教示点の内回り量であって且つ干渉が発生しない最大内回り量と、該最大内回り量よりも小さく且つ別の干渉が発生しない予備内回り量とを特定し、連続動作プログラムの仮想的な実行において、最大内回り量が設定された第２パスにてロボットが他の物体に干渉する場合に、第２パスに対応する内回り量を予備内回り量に変更してもよい。連続動作プログラムでは、単体動作プログラムの実行からは検知できない干渉が発生し得る。最大内回り量を得るだけでなく、干渉が発生しない他の内回り量を予備内回り量として得ておくことで、目的を達成できる一連のパスを効率的に設定することができる。
【００９２】
他の側面に係るシミュレーションシステムでは、調整部は、ロボットが他の物体と複数の干渉位置で干渉する場合に、該複数の干渉位置のそれぞれに対応する少なくとも一つの教示点についてパラメータを調整してもよい。複数箇所の干渉のそれぞれについて教示点のパラメータが調整されるので、干渉が発生しないパスを効率的に設定することができる。
【００９３】
他の側面に係るシミュレーションシステムでは、調整部は、干渉が発生する場合に、パラメータの調整として、少なくとも一つの教示点の位置を、現在位置よりも他の物体からさらに離れた位置にずらしてもよい。教示点を他の物体からさらに離すことでパスも他の物体から離れるので、干渉しないパスを容易に設定することができる。
【００９４】
他の側面に係るシミュレーションシステムでは、調整部は、少なくとも一つの教示点について、干渉位置と現在位置とを結ぶ仮想線の方向に沿って該教示点の位置をずらしてもよい。隣接する教示点間の距離を離しつつ教示点を他の物体からさらに離すので、干渉しないパスをより確実に設定することができる。
【００９５】
他の側面に係るシミュレーションシステムでは、調整部は、干渉位置と現在位置との距離が小さいほど、教示点の位置のずらし量を大きくしてもよい。このようにずらし量を調整することで、干渉せず且つできるだけ短いパスを設定することができる。
【００９６】
他の側面に係るシミュレーションシステムでは、調整部は、少なくとも一つの教示点の位置のずらしとして、干渉位置に対応する第１教示点を含む連続した複数の教示点の位置をずらしてもよい。干渉位置の付近の複数の教示点が調整されるので、干渉しないパスを効率的に設定することができる。
【００９７】
他の側面に係るシミュレーションシステムでは、調整部は、複数の教示点の位置のずらしとして、パスにおいて、第１教示点を基準として上流に位置する教示点の位置をずらしてもよい。パスのうち干渉に至った区間が調整されるので、干渉しないパスを効率的に設定することができる。
【００９８】
他の側面に係るシミュレーションシステムでは、調整部は、干渉が発生する場合に、パラメータの調整として、少なくとも一つの教示点の内回り量を減少させてもよい。内回り量を小さくすることで、干渉しないパスを容易に設定することができる。
【００９９】
他の側面に係るシミュレーションシステムでは、調整部は、内回り量が減少するように、内回り量の候補である複数の内回りレベルの中から一つの内回りレベルを二分探索法によって設定してもよい。内回り量の候補を内回りレベルにより表現した上で二分探索法を用いることで、干渉しないパスをより効率的に設定することができる。
【０１００】
他の側面に係るシミュレーションシステムでは、調整部は、一のパスに対応するすべての教示点に対して同じ内回りレベルを設定してもよい。パス内の内回りレベルを統一することで、内回り量を容易に設定することができる。また、より滑らかなパスを得ることができる。
【０１０１】
他の側面に係るシミュレーションシステムでは、調整部は、干渉が発生する場合に、パラメータの調整として、少なくとも一つの教示点の位置を、現在位置よりも他の物体からさらに離れた位置にずらす処理を、設定された内回りレベルを維持したまま１回以上実行し、設定された内回りレベルについて、干渉が発生しない動作プログラムを取得できない場合に、より小さい内回り量に対応する別の内回りレベルを設定してもよい。教示点の移動と内回りレベルの設定とをこのような手順で実行することで、干渉が発生せず且つできるだけ短いパスを効率的に設定することができる。
【０１０２】
［変形例］
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【０１０３】
上記実施形態ではプログラミング支援装置４が作業パス（第１パス）を変更することなくエアカットパス（第２パス）について教示点のパラメータを調整するが、シミュレーションシステムは、第１パスについても教示点のパラメータを調整してもよい。
【０１０４】
上記実施形態ではプログラミング支援装置４が受付部１０１、シミュレーション部１０２、調整部１０３、および出力部１０４を備えるが、シミュレーションシステムの機能構成はこれに限定されない。本開示に係るシミュレーション方法およびロボットの製造方法を実行できる限り、その機能構成は任意の方針で設計されてよい。
【０１０５】
シミュレーションシステムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、受付部１０１、シミュレーション部１０２、調整部１０３、および出力部１０４の少なくとも一部は、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したＡＳＩＣ（ＡｐｐｌｉｃａｔｉｏｎＳｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ）により構成されてもよい。
【０１０６】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ（処理）の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の２以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【０１０７】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
【符号の説明】
【０１０８】
１…ロボットシステム、２…ロボット、３…ロボットコントローラ、４…プログラミング支援装置、５…先端部、９…他の物体、１０…本体、２０…モニタ、３０…入力デバイス、１０１…受付部、１０２…シミュレーション部、１０３…調整部、１０４…出力部、２０１，２０１Ａ…パス、２１１〜２１５…教示点、２２１…干渉位置、２３２〜２３４…仮想線、２１２Ａ、２１３Ａ，２１４Ａ…教示点の位置、２４１〜２４３…教示点、２５０〜２５８…軌道（内回りレベル）、Ｊ１…動作プログラム。
【要約】
【課題】ロボット制御のプランニングにおけるさらなる自動化。
【解決手段】一実施形態に係るシミュレーションシステムは、ロボットの軌道を表すパスを含む動作プログラムを、該ロボットおよび他の物体が配置された仮想空間上で仮想的に実行するシミュレーション部と、シミュレーション部による実行結果に基づいて、ロボットが他の物体に干渉するか否かをチェックする干渉チェック部と、干渉が発生する場合に、パスに対応する少なくとも一つの教示点に関するパラメータを調整する調整部とを備える。
【選択図】図３【図１】
0006792184.tif 000004
【図２】
0006792184.tif 000005
【図３】
0006792184.tif 000006
【図４】
0006792184.tif 000007
【図５】
0006792184.tif 000008
【図６】
0006792184.tif 000009
【図７】
0006792184.tif 000010
【図８】
0006792184.tif 000011
【図９】
0006792184.tif 000012