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