(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023133711
(43)【公開日】2023-09-27
(54)【発明の名称】制御システム及び制御方法
(51)【国際特許分類】
G06Q 10/06 20230101AFI20230920BHJP
B25J 9/16 20060101ALI20230920BHJP
G05B 19/418 20060101ALI20230920BHJP
【FI】
G06Q10/06
B25J9/16
G05B19/418 Z
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022038837
(22)【出願日】2022-03-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール弁理士法人
(72)【発明者】
【氏名】濱崎 寛太
(72)【発明者】
【氏名】奥野 東
(72)【発明者】
【氏名】清水 自由理
(72)【発明者】
【氏名】保富 裕二 アンドレ
(72)【発明者】
【氏名】中村 哲司
【テーマコード(参考)】
3C100
3C707
5L049
【Fターム(参考)】
3C100AA03
3C100AA22
3C100AA38
3C100AA43
3C100BB03
3C100BB13
3C100CC03
3C100EE18
3C707AS21
3C707KS02
3C707KS23
3C707KT01
3C707LV02
3C707LV14
3C707LW08
5L049AA07
(57)【要約】
【課題】動作制約による影響を考慮した上での効率的な工程を計画することができ、且つ計画された工程と矛盾のない制御を実行することができる制御システムを提供することを目的とする。
【解決手段】同じ作業環境で動作する複数のロボットの夫々を制御する制御システムであって、複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、制御パラメータに基づいて、複数のロボットの工程を生成する最適化部と、工程に基づいて、複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、タスクモジュールに基づき複数のロボットを制御する制御部とを備え、最適化部は、影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約することを特徴とする制御システム。
【選択図】
図2
【特許請求の範囲】
【請求項1】
同じ作業環境で動作する複数のロボットの夫々を制御する制御システムであって、
前記複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、前記制御パラメータに基づいて、前記複数のロボットの工程を生成する最適化部と、前記工程に基づいて、前記複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、前記タスクモジュールに基づき前記複数のロボットを制御する制御部とを備え、
前記最適化部は、影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約することを特徴とする制御システム。
【請求項2】
請求項1に記載の制御システムであって、
前記他方のロボットのタスクの制約は、タスク実行時刻の遅延処理であることを特徴とする制御システム。
【請求項3】
請求項1に記載の制御システムであって、
前記他方のロボットのタスクの制約は、前記ロボットの動作の緩慢化であることを特徴とする制御システム。
【請求項4】
請求項1に記載の制御システムであって、
前記他方のロボットのタスクの制約は、前記制御パラメータを変更することで行われることを特徴とする制御システム。
【請求項5】
同じ作業環境で動作する複数のロボットの夫々を制御する制御システムであって、
前記複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、前記制御パラメータに基づいて、前記複数のロボットの工程を生成する最適化部と、前記工程に基づいて、前記複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、前記タスクモジュールに基づき前記複数のロボットを制御する制御部を備え、
前記制御パラメータ算出部は、影響関係にあるタスクの実行時刻が重複する時、一方のロボットのタスク実行への影響を軽減するために、他方のロボットの動作に対して動作制約を課して制御パラメータを算出し、
前記最適化部は、前記影響関係にあるタスクの実行時刻が重複する時、前記他方のロボットに対する制御パラメータに基づいて前記他方のロボットがタスク実行に要する時間を算出し、算出結果に基づいて前記複数のロボットの工程を生成することを特徴とする制御システム。
【請求項6】
請求項5に記載の制御システムであって、
前記制御部は、前記一方のロボットのタスク実行状況に応じて、前記他方のロボットに対する制御パラメータを切り換えることを特徴とする制御システム。
【請求項7】
請求項5に記載の制御システムであって、
前記制御パラメータは、前記ロボットの動作に関する速度、加速度、角速度、角加速度のいずれかを含むことを特徴とする制御システム。
【請求項8】
請求項5に記載の制御システムであって、
前記制御パラメータ算出部は、前記タスクの実行の可否に影響する物理量に対する条件式を与え、前記条件式を満たすような制御パラメータを算出することを特徴とする制御システム。
【請求項9】
請求項8に記載の制御システムであって、
前記物理量は、前記複数のロボットが作業する環境にある物体の振動に関する物理量、あるいは、作業環境のある位置における騒音に関する物理量であることを特徴とする制御システム。
【請求項10】
請求項5に記載の制御システムであって、
前記他方のロボットがタスク実行に要する時間の算出に、前記他方のロボットが実行するタスクの通常時の実行時間と、前記一方のロボットが実行するタスクと前記他方のロボットが実行するタスクの実行が重複する時間と、前記他方のロボットの通常時の制御パラメータと、前記制御パラメータ算出部で算出された前記他方のロボットの動作制約で制限されたときの制御パラメータを用いることを特徴とする制御システム。
【請求項11】
請求項5に記載の制御システムであって、
前記制御パラメータ算出部は、前記他方のロボットと前記一方のロボットの制御パラメータを算出し、前記最適化部は、前記複数のロボットのタスク実行時刻が重複する場合に、前記他方のロボットと前記一方のロボットに対する制御パラメータに基づいて、前記他方のロボットと前記一方のロボットがタスク実行に要する時間を算出し、前記制御部は、前記一方のロボットのタスク実行状況に応じて、前記他方のロボットと前記一方のロボットに対する制御パラメータを切り換えることを特徴とする制御システム。
【請求項12】
請求項5に記載の制御システムであって、
前記タスクモジュールに基づき、前記複数のロボットのいずれかの制御を、オペレータによる遠隔操作で実施することを特徴とする制御システム。
【請求項13】
請求項5に記載の制御システムであって、
前記タスクモジュールが2つ以上の動作で構成され、各動作に異なる動作制約を設定することを特徴とする制御システム。
【請求項14】
同じ作業環境で動作する複数のロボットの夫々を制御する制御方法であって、
前記複数のロボットに対する制御パラメータを算出し、前記制御パラメータに基づいて、前記複数のロボットの工程を生成し、前記工程に基づいて、前記複数のロボットのそれぞれに対するタスクモジュールを選択し、前記タスクモジュールに基づき前記複数のロボットを制御するとともに、
影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非整備環境における多様なタスクを複数のロボットが遂行する制御システム及び制御方法に関する。
【背景技術】
【0002】
近年、少子高齢化に伴う労働力不足や、自然災害による危険区域での作業などが社会課題となっている。それらの解決へ向けて、ロボットを制御しやすく整備した工場のような空間以外の環境(非整備環境)において活用することが期待されている。非整備環境における多様なタスクを効率的に遂行するためには、性能が異なる複数のロボットを同時に制御する必要がある。
【0003】
特許文献1では、複数のタスクを分担して実行する複数のロボットに関して、タスクの実行時間の変動に伴う工程の非効率化を課題とし、ロボットが次に実行可能なタスクの候補から、実行までの待ち時間が最小となるタスクを実行する、計画作成装置を提案している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
整備された環境で実行する工程では、タスク間の制約条件として、作業の順番に関する制約、作業位置や工具の競合を避けるための制約が与えられる。一方で、非整備環境で実行する工程では、それらの制約条件のみでは不十分であり、タスクの実行に伴う振動や騒音などの物理現象による他タスクへの制約(動作制約)を考慮する必要がある。
【0006】
例えば、不安定な地盤上で作業する複数のロボットについて、高速な移動を伴うタスクを行うロボットによる地盤の振動が、位置決めの精度が要求されるボルト挿入などのタスクを行う他方のロボットへ悪影響を与え、後者のタスクが失敗する恐れがある。そのような場合、前者のタスクの制御パラメータを変更することで、後者のタスクの実行が可能になることがある。
【0007】
従って、非整備環境において安全且つ効率的な工程を遂行するためには、動作制約を考慮する事が必要であるが、特許文献1では動作制約について想定されていない。
【0008】
以上のことから本発明においては、動作制約による影響を考慮した上での効率的な工程を計画することができ、且つ計画された工程と矛盾のない制御を実行することができる制御システム及び制御方法を提供すいることを目的とする。
【課題を解決するための手段】
【0009】
以上のことから本発明においては、「同じ作業環境で動作する複数のロボットの夫々を制御する制御システムであって、複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、制御パラメータに基づいて、複数のロボットの工程を生成する最適化部と、工程に基づいて、複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、タスクモジュールに基づき複数のロボットを制御する制御部とを備え、最適化部は、影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約することを特徴とする制御システム」としたものである。
【0010】
また本発明においては、「同じ作業環境で動作する複数のロボットの夫々を制御する制御システムであって、複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、制御パラメータに基づいて、複数のロボットの工程を生成する最適化部と、工程に基づいて、複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、タスクモジュールに基づき複数のロボットを制御する制御部を備え、制御パラメータ算出部は、影響関係にあるタスクの実行時刻が重複する時、一方のロボットのタスク実行への影響を軽減するために、他方のロボットの動作に対して動作制約を課して制御パラメータを算出し、最適化部は、影響関係にあるタスクの実行時刻が重複する時、他方のロボットに対する制御パラメータに基づいて他方のロボットがタスク実行に要する時間を算出し、算出結果に基づいて前記複数のロボットの工程を生成することを特徴とする制御システム」としたものである。
【0011】
また本発明においては、「同じ作業環境で動作する複数のロボットの夫々を制御する制御方法であって、複数のロボットに対する制御パラメータを算出し、制御パラメータに基づいて、複数のロボットの工程を生成し、工程に基づいて、複数のロボットのそれぞれに対するタスクモジュールを選択し、タスクモジュールに基づき複数のロボットを制御するとともに、影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約することを特徴とする制御方法」としたものである。
【発明の効果】
【0012】
本発明により、動作制約による影響を考慮した上での効率的な工程を計画することができ、且つ計画された工程と矛盾のない制御を実行することができる。
【図面の簡単な説明】
【0013】
【
図1】非整備環境で複数ロボットが複数タスクを実行する例を示す図。
【
図2】本発明の実施例1に係る制御システムの構成例を示す図。
【
図3】計画生成部12とロボットRの間での大まかな処理の流れを示すフロー図。
【
図4】ロボットの処理の流れを示すフローチャート。
【
図5】記憶部11に格納されるタスクの情報Dの一例を示す図。
【
図6】タスク情報のうち制御パラメータの算出方法の一例を示す図。
【
図7】最適化部15で工程を最適化する過程で得られる部分工程の一例を示す図。
【
図8】動作制約を要求されるタスクの実行時間の算出方法の一例を示す図。
【
図10】計画生成部12において最終的に生成された工程を示す図。
【
図11】実施例2で追加される記憶部11のタスク情報Dを示す図。
【
図13】実施例2のタスク情報のうち制御パラメータの算出方法を示す図。
【
図14】実施例3のロボット及び無人航空機の作業環境を示す図。
【
図15】実施例3で追加される記憶部11のタスク情報を示す図。
【
図16】実施例3のタスク情報のうち制御パラメータの算出方法を示す図。
【
図17】実施例3の制御システムの構成例を示す図。
【
図18】実施例3の制御システム全体の処理の流れを示すフローチャート。
【
図19】遠隔操作を伴うタスクモジュール40がある場合の構成を示す図。
【
図21】実施例5の制御システム全体の処理の流れを示すフローチャート。
【
図22】実施例6におけるタスクinsert(x、y)の構成を示す図。
【
図23】実施例6におけるタスクinsert(x、y)の動作制約を示す図。
【発明を実施するための形態】
【0014】
以下、本発明の実施例について図面を用いて詳細に説明する。
【実施例0015】
本発明は、非整備環境で複数ロボットが複数タスクを実行する工程を計画及び制御する制御システムである。その説明にあたり、
図1に示す非整備環境で複数ロボットが複数タスクを実行することを想定する。
【0016】
図1に示す作業環境(非整備環境)では、ロボットR1、R2がロープ5で吊るされた不安定な作業床4の上で、壁6に対する作業を行う。ここで、作業床4はロープ5に吊られている状況を想定しているが、グレーチングのような弾性のある床など、不安定な地盤上で作業する別の状況へ置き換えて考えてもよい。
図1に示す状況は、例えば、施工現場、構造物の保守点検などが該当する。
【0017】
図2は本発明の実施例1に係る制御システムの構成例を示す図である。制御システム10は、記憶部11、計画生成部12、およびロボットR1、ロボットR2で構成される。この制御システム10は、上位と下位の2組の計算機装置を用いて構成されており、計画生成部12による上位計算機装置で求めた動作指令を、通信を介して下位計算機装置であるロボットR1、ロボットR2に与える。ロボットR1、ロボットR2は動作指令に応じた動作を実行するとともに、ロボット側で計測した各種の情報を適宜計画生成部12に送信して、以降の動作指令の作成に反映させる。
【0018】
このうち、計画生成部12はその詳細を後述するが、複数のロボットRのそれぞれに対する制御パラメータを算出する制御パラメータ算出部16と、複数のロボットRのそれぞれにおけるタスクの実行時間を求める実行時間算出部17と、制御パラメータとタスクの実行時間に基づいて、複数のロボットの工程を生成する最適化部12の各機能を備えている。
【0019】
また複数のロボットRは、工程に基づいて、複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部18と、タスクモジュールに基づき複数のロボットを制御する制御部19と、ロボットのアームや足などの操作端を機械的に駆動させる動作部20を備えている。なお、
図1の例では上位と下位の計算機装置が行う機能を上記のように配分したが、どちらにどこまでの機能を持たせるのがよいのかは、適宜に決定することができる。
【0020】
図3は、上位と下位の計算機装置である計画生成部12とロボットR1、ロボットR2の間での大まかな処理の流れを示す図である。この図によれば、計画生成部12の処理ステップS1では、ロボットR1、R2が実施可能なタスクの情報を記憶部11から読込む。次に計画生成部12の処理ステップS2では、各ロボットの工程を計画し、動作指令としてロボットR1、R2に与える。ロボットR1、R2は、詳細を
図4に示す処理ステップS100を実行する。
【0021】
以下、上位側から順次、詳細な処理の流れについて説明する。まず、
図5は、記憶部11に格納されるタスクの情報Dの一例である。タスク情報Dは、タスクの名称D1、タスクの実行時間D2、タスクを実行する上での制約条件D3を少なくとも含んで構成されている。
【0022】
このうちタスク名称D1は、ロボットが実行するタスクの種別を定義したものであり、その動作内容に応じて移動(move)、穴あけ(drill)、把持(grasp)、挿入(insert)、取り付け(attach)、取り外し(detach)などを準備している。ここで、タスクは「タスク名(対象1、対象2)」で記述しており、カッコ内にはそのタスクの実行対象を、1あるいは複数指定している。
【0023】
なおロボットのタスクは、制御パラメータにより定義することができる。制御パラメータは、そのタスクを実行中であるロボットの動作を制御するパラメータであり、ここでは、最大移動速度vmaxを制御パラメータとする事例で説明するものとする。なお、制御パラメータの情報も記憶部11に保有しているものとする。
【0024】
図5に例示したこれらのタスクは、同じタスク名でも対象により実行時間や制約条件が異なることから、タスク情報Dは、個別のタスク名称D1ごとに、タスクの実行時間D2と制約条件D3を個別に設定している。
【0025】
このうち実行時間D2は、時間を示す記号tのあとに各タスクの名称で使用した記号を付すことで、区別して表記している。実行時間tはそのタスクを開始してから完了するまでの推定所要時間である。制約条件D3は、当該タスクを開始する時点で完了している必要があるタスクを示している。この例では、順序制約D31、作業位置D32、使用工具D33、把持ワークD34、動作制約D35が与えられる。本発明は、動作制約D35の考え方を導入した点に特徴がある。
【0026】
制約条件D3が意味する事項について、以下詳細に説明する。まず
図5の順序制約D31について、ここに記述されるdrill(y)に関して、対象xを対象yへ挿入するタスクinsert(x、y)は、対象yを穴あけするタスクdrill(y)の後に実行する必要がある事を示している。
【0027】
図5の作業位置D32に記述される作業位置Pは、当該タスクを実行する際に占有する領域であり、当該タスクを実行している間は、当該タスクを実行するロボット以外のロボットが、作業位置Pへ侵入しない必要がある事を示している。なおP
xは、対象xが存在する位置を表している。
【0028】
図5の使用工具D33に記述される使用工具Tは、当該タスクを実行する際に使用する工具であり、当該タスクを実行している間は当該タスクを実行するロボット以外のロボットが、工具Tを使用していない必要がある事を示している。
【0029】
図5の把持ワークD34に記述される把持ワークは、当該タスクを実行する際に使用するワークであり、当該タスクを実行している間は当該タスクを実行するロボット以外のロボットが、当該ワークを使用していない必要がある事を示している。
【0030】
図5の動作制約D35に記述される動作制約は、当該タスクの実行の可否に係る物理量に対する制約条件である。
図5の例では、タスクinsert(x、y)を実行する間は、作業床4の振動の加速度α
floorが閾値α
floor、thより小さい必要があることを示している。これは、タスクinsert(x、y)が精密な作業であり、作業床4の振動が大きすぎると失敗することを意味している。
【0031】
このため本発明においては、当該タスクを実行している間は、他のタスクの例えば制御パラメータを変更し、動作制約を満たす状況を作ることで、当該タスクを実行することが可能となるようにするものである。ここで、タスク名insertの異なる対象x、yに対して異なる閾値αfloor、th、insert(x、y)を与えることも可能である。また、ここでは精密作業の例としてボルトの挿入を例に挙げているが、作業対象の切削や塗装、位置合わせが必要な組立て、対象物の認識などに置き換えることができる。
【0032】
記憶部11には、
図5のタスク情報Dの一部として、さらに複数の目標完了タスクが設定されている。この事例での目標完了タスクは、
図1の作業現場でロボットRがポイント1の点にボルトを挿入する処理(insert(bolt、point1))、ポイント2の点にボルトを挿入する処理(insert(bolt、point2))、ポイント3の点にボルトを挿入する処理(insert(bolt、point3))、ポイント4の点にボルトを挿入する処理(insert(bolt、point4))であり、これら全ての処理を完了する必要がある。
【0033】
図6は、記憶部に格納される制御パラメータの算出方法を説明する図であり、横軸の各タスクの制御パラメータである最大移動速度v
maxと、縦軸の作業床の振動の加速度α
floorの関係を示している。横軸のv
max、0は通常時の最大移動速度であり、動作制約を考慮する必要がない場合にはv
max、0でタスクを実行する。
【0034】
図6の例では、いずれのタスクでも制御パラメータv
maxに伴って振動の加速度α
floorも増加しているため、α
floor(v
max)=α
floor、thとなるv
maxが最適値v’
maxとなる。
【0035】
一方で、タスクdrill(point)は、いずれの制御パラメータvmax、drill(point1)でもαfloor(vmax、drill(point1))>αfloor、thであるため、タスクinsert(x、y)とタスクdrill(point1)は同時に実行することができないことを示している。
【0036】
閾値αfloor、thの取得には、例えば、作業床4に加速度センサを取り付けた状態で、動作制約を要求するタスクと動作制約が要求されるタスクを実行し、後者のタスクの制御パラメータを小さくしていったときに、前者のタスクが成功するαfloorをαfloor、thとする。その他にも、上記手続きをシミュレーション上で評価する方法や、作業床4の振動を再現可能な実験装置上で前者のタスクのみを評価する方法などが考え得る。
【0037】
ここで、閾値を設定する物理量は必ずしもαfloorである必要はなく、ロボット自身に搭載されたセンサから取得される加速度や、カメラから取得される映像のぶれ量など、タスク失敗の指標となり得る物理量であれば問題ない。
【0038】
また
図6では、一例としてタスクdrill(point1)、move(P
point1)、move(P
point2)について抜粋しているが、他のタスクについても同様に関係を示すことができる。
【0039】
また、作業環境やタスクの性質に応じて、制御パラメータとして移動速度以外に、移動加速度、移動角速度、移動角加速度や、ある特定方向に対する移動速度などを設定することも可能である。
【0040】
例えば、タスクinsert(bolt、point1)について、ボルトの軸方向に対する作業床4の振動に対して堅牢性がある場合、動作制約をα
floor、perp<α
floor、thのように、ボルト軸に対して垂直方向への作業床4の振動の加速度α
floor、perpに対する条件を与える。そして、
図6におけるタスクの制御パラメータをv
maxの代わりに軸方向の最大移動速度v
max、perpとする。また、
図6では、v
maxとα
floorの関係を線形関数で表しているが、非線形関数で表されることも考え得る。
【0041】
図6では、動作制約として物理量に対する条件を記述しているが、当該物理量と制御パラメータv
maxの関係を事前に計算しておく、あるいは、タスクが失敗しない制御パラメータv
maxを直接計測しておくことで、例えば、v
max、drill(point1)=0.3[m/s]、v
max、move(Ppoint1)=1.5[m/s]、…のように制御パラメータ自体を記述することも可能である。
【0042】
図5に示す制約条件D3は、作業環境やタスクの種類に応じて拡張または縮小することが可能である。本発明に係る制御システムを利用するにあたっては、少なくとも動作制約D3が含まれている必要がある。
【0043】
図2に戻り、処理ステップS2では、計画生成部12において、
図5に示すタスクから構成される各ロボットR1、R2の工程を計画する。計画生成部12内の最適化部15、制御パラメータ算出部16、実行時間算出部17が、処理ステップS2の実施のために利用される。
【0044】
最適化部15は、
図5に示すタスクの制約条件を満たし、且つ、
図5に示す目標完了タスクを全て完了できる工程を作成し、終了時間や消費電力といった評価値が最小となるような工程を探索する。
【0045】
最適な工程の探索手法としては、グラフ探索アルゴリズム(貪欲法、A*アルゴリズムなど)、メタヒューリスティクス(進化的アルゴリズム、焼きなまし法など)、強化学習などがある。例えば、A*アルゴリズムを用いる場合には、一部タスクを割当てた部分工程を1つのノードとし、評価関数が最小であるノードを発展させていくことで最適な工程を探索する。本実施例ではA*アルゴリズムを用いた場合について説明するが、他の手法を用いた場合も同様な処理を実施できる。
【0046】
図7は、最適化部15において工程を最適化する過程で得られる部分工程の一例である。部分工程30a、30bはいずれも、目標完了タスクのうちinsert(bolt、point1)のみを割当てた状態である。
【0047】
この部分工程30a、30bの事例では、ロボットR2が所定の穴掘り場所に移動して穴を掘る役を担当し、ロボットR1はボルトを持って、穴の位置に移動して、ボルトを挿入するという役割を適宜の時間遅れを伴いながら実行するというものである。
【0048】
なお、作業位置の制約条件D32により、ロボットR2がタスクdrill(point1)を実行している間は、ロボットR1はタスクmove(Ppoint1)を実行することができないため、ロボットR2のdrill(point1)が完了した後にロボットR1のmove(Ppoint1)を開始している。
【0049】
処理ステップS2の処理において、実行時間算出部17は、部分工程30a、30bの作成に必要となる各タスクの実行時間tを算出する。動作制約を伴うタスク以外のタスクの実行時間tは、通常時の実行時間t0である。例えば、t0、drill(point1)=20[s]、t0、move(Ppoint2)=15[s]、…のように一定値で与えられる。
【0050】
一方で、部分工程30aのロボットR2のタスクmove(Ppoint2)のように、動作制約を要求するロボットR1のタスクinsert(bolt、point1)と同時に実行するようなタスクについては、動作制約に起因する制御パラメータの変更に基づき、実行時間を算出する。
【0051】
図8は、
図7の部分工程30aにおける、ロボットR2のタスクmove(P
point2)の実行時間の算出方法を説明する図である。タスクmove(P
point2)の通常時の実行時間t
0のうち、タスクinsert(bolt、point1)と実行が重なっている時間をt
olとすると、タスクmove(P
point2)の実際の実行時間tは、t=t
0+t
ol(v
max、0/v’
max-1)で算出される。
【0052】
ここで、v’
maxは、制御パラメータ算出部16において、
図6に示すタスク情報を基に算出される。この時、タスクの開始から完了までの移動速度は常に最大移動速度であると仮定している。実行時間の算出方法はこの限りでなく、例えば、より詳細な速度分布を考慮する方法や、シミュレーションによる解析結果を利用する方法なども考え得る。
【0053】
また、動作制約による制御パラメータの制限が大きい場合などには、動作制約を要求するタスクと要求されるタスクの実行が重ならないようにした方が、効率的な工程になる可能性がある。
【0054】
図7の部分工程30bは、動作制約を要求するロボットR1のタスクinsert(bolt、point1)と、要求されるロボットR2のタスクmove(P
point2)の実行が重ならないように作成された部分工程である。部分工程30a、30bを比較すると、部分工程30aの方が終了時間は早いが、最適な工程は、全ての目標完了タスクが割当てられた最終的な工程の評価値に基づき決定される。
【0055】
かくして、計画生成部12において全ての目標完了タスクを実行する上での最適な工程として、
図10に示す最終工程50が決定され、最適工程は各ロボットR1、R2に動作指令として与えられる。この動作指令を受けた各ロボットR1、R2は、
図4に詳細を示す処理ステップS100を実行する。
【0056】
ロボットRにおける
図4の処理ステップS100の一連のフローのうち、処理ステップS10以降は、ロボットR1、R2の制御を並列して実施する。ここで、処理ステップS10~S13は
図2のタスク選択部18、処理ステップS14~S18は
図2の制御部19で実施される。
【0057】
図9は制御部19の構成例を示す図であり、ロボットR1、R2が
図5の各タスクを実行するためのタスクモジュール(制御プログラム)40を備える。制御部19でタスクモジュール40が起動されると、タスクモジュールに記述されたプログラムに基づき、動作部20がロボットR1またはロボットR2を制御する。
【0058】
タスクモジュール40の記述方法は任意であるが、例えば、タスクモジュールdrill(point1)であれば、ロボットが装着するドリルの先端をpoint1へアプローチさせ、ドリルビットを回転させながらpoint1を穴あけし、指定の深さまで穴あけが完了したらアプローチ位置まで戻る、という一連の動作を実行するための制御指令が記述されている。
【0059】
図4に戻り、最初の処理ステップS10では、処理ステップS2で生成された
図10に示す最終工程50の順番に従って、次に実行するタスクを選択する。次に実行するタスクがある場合には、処理ステップS11へ進む。次に実行するタスクがない場合には、当該ロボットが処理すべき一連のタスクが全て実行されたものとして処理を終了する。
【0060】
処理ステップS11では、ロボットR1であればロボットR2、ロボットR2であればロボットR1が実行するタスクを確認し、処理ステップS12で、次に実行するタスクが実行制約を満たしているかを判定する。
【0061】
実行制約は、次に実行するタスクの開始時刻が、他のロボットRが現在実行しているタスクの推定完了時刻より早い場合に満たされる制約である。例えば、
図10の工程50において、ロボットR1のタスクgrasp(bolt)が完了した時刻t1に、次のタスクmove(P
point1)の実行制約を確認すると、その時点でロボットR2が実行しているタスクdrill(point1)の推定完了時刻t2はgrasp(bolt)の開始時刻t2と同じであるため、実行制約は満たされない。
【0062】
その場合、実行制約が満たされるまで処理ステップS11と処理ステップS12を繰り返すこととなり、工程50では、時刻t2でロボットR1が処理ステップS13へ進むこととなる。
【0063】
ここで、処理ステップS12では、実行制約の代わりに、
図5に示す制約条件D3を全て判定してもよい。ただし、その場合、
図7の部分工程30bに示すような、動作制約D35を要求するタスクinsert(bolt、point1)と要求されるタスクmove(P
point2)が敢えて重複しないように計画された工程についても、タスクmove(P
point2)の実行中にタスクinsert(bolt、point1)を開始しないような判定をできる必要がある。
【0064】
処理ステップS13では、処理ステップS10で選択されたタスクに関する
図9のタスクモジュール40を起動し、タスクモジュール40に基づく当該ロボットRの制御を開始する。
【0065】
処理ステップS14では、他のロボットRが実行するタスクを確認し、処理ステップS15で、当該タスクの動作制約D35に関する判定を行う。当該タスクが動作制約D35を要求するタスクで、制御を行っているロボットRの実行するタスクが要求される動作制約D35を満たしていなければ、処理ステップS16で、制御しているロボットRが実行するタスクモジュール40の制御パラメータを制限する。
【0066】
一方で、処理ステップS15で他ロボットRのタスクが動作制約D35を要求しないタスクであるか、あるいは、動作制約D35を要求するタスクであるが、制御を行っているロボットRの実行するタスクが動作制約D35を既に満たしていれば、タスクモジュール40において通常時の制御パラメータを使用する。
【0067】
そして、処理ステップS18で、制御を行っているロボットRの実行するタスクモジュール40が完了しているかを確認し、完了していれば処理ステップS10へ戻って次のタスクの処理を行う。処理ステップS18で、タスクモジュール40が完了していなければ、処理ステップS14へ戻って、タスクモジュール40が完了するまで、動作制約D35に関する判定と処理を行う。
【0068】
最終的に、処理ステップS10において、工程50に次のタスクが存在しないと判定された場合、当該ロボットRの制御を終了する。
【0069】
例えば、
図10の工程50において、時刻t2から時刻t3の間では、処理ステップS15でロボットR2に対する動作制約D35が満たされていると判定されるため、タスクモジュールmove(P
point2)は通常時の制御パラメータv
max、0で実行される。
【0070】
一方で、時刻t3から時刻t4の間では、ロボットR1が実行するタスクinsert(bolt、point1)が動作制約D35を要求するため、処理ステップS15でロボットR2に対する動作制約D35が満たされていないと判定され、タスクモジュールmove(Ppoint2)は制限された制御パラメータv’maxで実行される。
【0071】
上記では、タスクモジュール40の内部で制御パラメータを変更する方法を説明したが、制御パラメータが異なるだけのタスクモジュールを複数用意する方法でも問題ない。この場合、
図4の処理ステップS16では、制御部19において、通常時の制御パラメータを持つタスクモジュールから制限された制御パラメータを持つタスクモジュールに切り替える処理を行う。
【0072】
以上のように、実行時刻が重複する他のタスクの性質を考慮して制御パラメータを変更することで、動作制約を考慮した上での効率的な工程を計画し、且つ計画された工程と矛盾のない制御を実行することができる。
【0073】
なお以上の説明では、制御パラメータを変更する事例について説明したが、これは動作制約D35の条件成立に応じて動作を制限(制約)するものであればよい。動作制限とは、動作停止や、動作遅延、あるいは動作の緩慢化を含むものであり、制御パラメータの変更は、動作制限を実現するための具体的な手段にすぎず、他の手段により動作制限を行うものであってもよい。
実施例1と実施例2の相違は、タスクモジュールcarry(x、P)自身の制御パラメータを変更可能な点である。タスクcarry(x、P)はロボットの移動加速度を小さくすることで、把持物が落下するリスクを低減することができる。
そのため、例えば、最適な組合せのうち数点に対して評価する方法などが考えられる。この時、実行時間の算出には、例えば、シミュレーションによる解析結果を使用することが可能である。