IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-18
(45)【発行日】2025-06-26
(54)【発明の名称】制御システム及び制御方法
(51)【国際特許分類】
   B25J 13/00 20060101AFI20250619BHJP
   B25J 9/16 20060101ALI20250619BHJP
   G05B 19/042 20060101ALI20250619BHJP
   G05B 19/418 20060101ALI20250619BHJP
   G06Q 10/06 20230101ALI20250619BHJP
【FI】
B25J13/00 Z
B25J9/16
G05B19/042
G05B19/418 Z
G06Q10/06
【請求項の数】 14
(21)【出願番号】P 2022038837
(22)【出願日】2022-03-14
(65)【公開番号】P2023133711
(43)【公開日】2023-09-27
【審査請求日】2024-06-20
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール弁理士法人
(72)【発明者】
【氏名】濱崎 寛太
(72)【発明者】
【氏名】奥野 東
(72)【発明者】
【氏名】清水 自由理
(72)【発明者】
【氏名】保富 裕二 アンドレ
(72)【発明者】
【氏名】中村 哲司
【審査官】杉山 悟史
(56)【参考文献】
【文献】特開2018-005799(JP,A)
【文献】特開2019-074782(JP,A)
【文献】特開2019-197367(JP,A)
【文献】特開2020-116669(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
G05B 19/18 ~ 19/46
G06Q 10/06
(57)【特許請求の範囲】
【請求項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】
【文献】特開2019-197367号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
整備された環境で実行する工程では、タスク間の制約条件として、作業の順番に関する制約、作業位置や工具の競合を避けるための制約が与えられる。一方で、非整備環境で実行する工程では、それらの制約条件のみでは不十分であり、タスクの実行に伴う振動や騒音などの物理現象による他タスクへの制約(動作制約)を考慮する必要がある。
【0006】
例えば、不安定な地盤上で作業する複数のロボットについて、高速な移動を伴うタスクを行うロボットによる地盤の振動が、位置決めの精度が要求されるボルト挿入などのタスクを行う他方のロボットへ悪影響を与え、後者のタスクが失敗する恐れがある。そのような場合、前者のタスクの制御パラメータを変更することで、後者のタスクの実行が可能になることがある。
【0007】
従って、非整備環境において安全且つ効率的な工程を遂行するためには、動作制約を考慮する事が必要であるが、特許文献1では動作制約について想定されていない。
【0008】
以上のことから本発明においては、複数のロボットのタスクで動作制約を要求するタスクと動作制約が要求されるタスクを実行するよう、動作制約による影響を考慮した上での効率的な工程を計画することができ、且つ計画された工程と矛盾のない制御を実行することができる制御システム及び制御方法を提供すいることを目的とする。
【課題を解決するための手段】
【0009】
以上のことから本発明においては、「同じ作業環境で動作する複数のロボットのタスクの夫々を制御する制御システムであって、前記複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、前記制御パラメータに基づいて、前記複数のロボットの工程を生成する最適化部と、前記工程に基づいて、前記複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、前記タスクモジュールに基づき前記複数のロボットを制御する制御部とを備え、前記最適化部は、影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約し、一方のロボットの動作制約を要求するタスクと他方のロボットの動作制約が要求されるタスクを実行するよう前記複数のロボットのタスクの工程を生成することを特徴とする制御システム」としたものである。
【0010】
また本発明においては、「同じ作業環境で動作する複数のロボットのタスクの夫々を制御する制御システムであって、前記複数のロボットに対する制御パラメータを算出する制御パラメータ算出部と、前記制御パラメータに基づいて、前記複数のロボットの工程を生成する最適化部と、前記工程に基づいて、前記複数のロボットのそれぞれに対するタスクモジュールを選択するタスクモジュール選択部と、前記タスクモジュールに基づき前記複数のロボットを制御する制御部を備え、前記制御パラメータ算出部は、影響関係にあるタスクの実行時刻が重複する時、一方のロボットのタスク実行への影響を軽減するために、他方のロボットの動作に対して動作制約を課して制御パラメータを算出し、前記最適化部は、前記影響関係にあるタスクの実行時刻が重複する時、一方のロボットの動作制約を要求するタスクと他方のロボットの動作制約が要求されるタスクを実行するよう、前記他方のロボットに対する制御パラメータに基づいて前記他方のロボットがタスク実行に要する時間を算出し、算出結果に基づいて前記複数のロボットの工程を生成することを特徴とする制御システム」としたものである。
【0011】
また本発明においては、「同じ作業環境で動作する複数のロボットのタスクの夫々を制御する制御方法であって、前記複数のロボットに対する制御パラメータを算出し、前記制御パラメータに基づいて、前記複数のロボットの工程を生成し、前記工程に基づいて、前記複数のロボットのそれぞれに対するタスクモジュールを選択し、前記タスクモジュールに基づき前記複数のロボットを制御するとともに、影響関係にあるタスクの実行時刻が重複する時、他方のロボットのタスクを制約し、一方のロボットの動作制約を要求するタスクと他方のロボットの動作制約が要求されるタスクを実行するよう、前記複数のロボットのタスクの工程を生成することを特徴とする制御方法」としたものである。
【発明の効果】
【0012】
本発明により、複数のロボットのタスクで動作制約を要求するタスクと動作制約が要求されるタスクを実行するよう、動作制約による影響を考慮した上での効率的な工程を計画することができ、且つ計画された工程と矛盾のない制御を実行することができる。
【図面の簡単な説明】
【0013】
図1】非整備環境で複数ロボットが複数タスクを実行する例を示す図。
図2】本発明の実施例1に係る制御システムの構成例を示す図。
図3】計画生成部12とロボットRの間での大まかな処理の流れを示すフロー図。
図4】ロボットの処理の流れを示すフローチャート。
図5】記憶部11に格納されるタスクの情報Dの一例を示す図。
図6】タスク情報のうち制御パラメータの算出方法の一例を示す図。
図7】最適化部15で工程を最適化する過程で得られる部分工程の一例を示す図。
図8】動作制約を要求されるタスクの実行時間の算出方法の一例を示す図。
図9】制御部19の構成例を示す図。
図10】計画生成部12において最終的に生成された工程を示す図。
図11】実施例2で追加される記憶部11のタスク情報Dを示す図。
図12】実施例2のロボットの作業環境を示す図。
図13】実施例2のタスク情報のうち制御パラメータの算出方法を示す図。
図14】実施例3のロボット及び無人航空機の作業環境を示す図。
図15】実施例3で追加される記憶部11のタスク情報を示す図。
図16】実施例3のタスク情報のうち制御パラメータの算出方法を示す図。
図17】実施例3の制御システムの構成例を示す図。
図18】実施例3の制御システム全体の処理の流れを示すフローチャート。
図19】遠隔操作を伴うタスクモジュール40がある場合の構成を示す図。
図20】実施例5の制御システムの構成を示す図。
図21】実施例5の制御システム全体の処理の流れを示すフローチャート。
図22】実施例6におけるタスクinsert(x、y)の構成を示す図。
図23】実施例6におけるタスクinsert(x、y)の動作制約を示す図。
【発明を実施するための形態】
【0014】
以下、本発明の実施例について図面を用いて詳細に説明する。
【実施例1】
【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が存在する位置を表している。
【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は、記憶部に格納される制御パラメータの算出方法を説明する図であり、横軸の各タスクの制御パラメータである最大移動速度vmaxと、縦軸の作業床の振動の加速度αfloorの関係を示している。横軸のvmax、0は通常時の最大移動速度であり、動作制約を考慮する必要がない場合にはvmax、0でタスクを実行する。
【0034】
図6の例では、いずれのタスクでも制御パラメータvmaxに伴って振動の加速度αfloorも増加しているため、αfloor(vmax)=αfloor、thとなるvmaxが最適値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(Ppoint1)、move(Ppoint2)について抜粋しているが、他のタスクについても同様に関係を示すことができる。
【0039】
また、作業環境やタスクの性質に応じて、制御パラメータとして移動速度以外に、移動加速度、移動角速度、移動角加速度や、ある特定方向に対する移動速度などを設定することも可能である。
【0040】
例えば、タスクinsert(bolt、point1)について、ボルトの軸方向に対する作業床4の振動に対して堅牢性がある場合、動作制約をαfloor、perp<αfloor、thのように、ボルト軸に対して垂直方向への作業床4の振動の加速度αfloor、perpに対する条件を与える。そして、図6におけるタスクの制御パラメータをvmaxの代わりに軸方向の最大移動速度vmax、perpとする。また、図6では、vmaxとαfloorの関係を線形関数で表しているが、非線形関数で表されることも考え得る。
【0041】
図6では、動作制約として物理量に対する条件を記述しているが、当該物理量と制御パラメータvmaxの関係を事前に計算しておく、あるいは、タスクが失敗しない制御パラメータvmaxを直接計測しておくことで、例えば、vmax、drill(point1)=0.3[m/s]、vmax、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は、通常時の実行時間tである。例えば、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(Ppoint2)の実行時間の算出方法を説明する図である。タスクmove(Ppoint2)の通常時の実行時間tのうち、タスクinsert(bolt、point1)と実行が重なっている時間をtolとすると、タスクmove(Ppoint2)の実際の実行時間tは、t=t+tol(vmax、0/v’max-1)で算出される。
【0052】
ここで、v’maxは、制御パラメータ算出部16において、図6に示すタスク情報を基に算出される。この時、タスクの開始から完了までの移動速度は常に最大移動速度であると仮定している。実行時間の算出方法はこの限りでなく、例えば、より詳細な速度分布を考慮する方法や、シミュレーションによる解析結果を利用する方法なども考え得る。
【0053】
また、動作制約による制御パラメータの制限が大きい場合などには、動作制約を要求するタスクと要求されるタスクの実行が重ならないようにした方が、効率的な工程になる可能性がある。
【0054】
図7の部分工程30bは、動作制約を要求するロボットR1のタスクinsert(bolt、point1)と、要求されるロボットR2のタスクmove(Ppoint2)の実行が重ならないように作成された部分工程である。部分工程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(Ppoint1)の実行制約を確認すると、その時点でロボット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(Ppoint2)が敢えて重複しないように計画された工程についても、タスクmove(Ppoint2)の実行中にタスク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(Ppoint2)は通常時の制御パラメータvmax、0で実行される。
【0070】
一方で、時刻t3から時刻t4の間では、ロボットR1が実行するタスクinsert(bolt、point1)が動作制約D35を要求するため、処理ステップS15でロボットR2に対する動作制約D35が満たされていないと判定され、タスクモジュールmove(Ppoint2)は制限された制御パラメータv’maxで実行される。
【0071】
上記では、タスクモジュール40の内部で制御パラメータを変更する方法を説明したが、制御パラメータが異なるだけのタスクモジュールを複数用意する方法でも問題ない。この場合、図4の処理ステップS16では、制御部19において、通常時の制御パラメータを持つタスクモジュールから制限された制御パラメータを持つタスクモジュールに切り替える処理を行う。
【0072】
以上のように、実行時刻が重複する他のタスクの性質を考慮して制御パラメータを変更することで、動作制約を考慮した上での効率的な工程を計画し、且つ計画された工程と矛盾のない制御を実行することができる。
【0073】
なお以上の説明では、制御パラメータを変更する事例について説明したが、これは動作制約D35の条件成立に応じて動作を制限(制約)するものであればよい。動作制限とは、動作停止や、動作遅延、あるいは動作の緩慢化を含むものであり、制御パラメータの変更は、動作制限を実現するための具体的な手段にすぎず、他の手段により動作制限を行うものであってもよい。
【実施例2】
【0074】
本実施例では、ロボットR1、R2が実行するタスクとして、図11に示すタスクが追加された場合について説明する。
【0075】
図11において、タスクpick(x)は対象xを持ち上げ、タスクcarry(x、P)はタスクpick(x)で持ち上げた対象xを位置Pまで運搬し、タスクplace(x、P)はタスクcarry(x、P)で運搬された対象xを位置Pへ下す、という作業を行う。
【0076】
ここでは、タスクcarry(x、P)に対して動作制約D35を定義している。これは、ハンドT3を使用して対象xを運搬する際に作業床4の振動αfloorが閾値αfloor、thより大きいと、対象xの慣性力により対象xがハンドT3から落下してしまうことを意味している。ここで、対象xは液体を収納する容器とし、作業床4の振動αfloor>αfloor、thにより内容物が零れてしまうという状況に置き換えてもよい。
【0077】
実施例1と実施例2の相違は、タスクモジュールcarry(x、P)自身の制御パラメータを変更可能な点である。タスクcarry(x、P)はロボットの移動加速度を小さくすることで、把持物が落下するリスクを低減することができる。
【0078】
図12に示す作業環境では、ロボットR1がタスクcarry(object、Pcontainer)、ロボットR2がタスクdrill(point1)を実行する状況を例として、処理の流れを説明する。
【0079】
図13は、図12の状況について、ロボットR2のタスクdrill(point1)におけるドリルビットの送り速度v(制御パラメータ)を縦軸に、ロボットR1のタスクcarry(object、Pcontainer)における最大移動加速度αmax(制御パラメータ)横軸にとって、最大移動加速度αmaxを変更するときの、αfloorについて示している。ロボットR1、R2の制御パラメータの組合せ(αmax、v)によりαfloorが決まり、図13のハッチング部分60の組合せの場合に動作制約が満たされる。したがって、曲線部分61の組合せを用いる場合が最適である。
【0080】
計画生成部12において、ロボットR2のタスクdrill(point1)とロボットR1のタスクcarry(object、Pcontainer)の実行が重なったときの各タスクの実行時間を実行時間算出部17で算出する場合、制御パラメータ算出部16で図13に基づいて取得された制御パラメータの最適な組合せ全てについて評価すると、膨大な計算時間が必要となることがある。
【0081】
そのため、例えば、最適な組合せのうち数点に対して評価する方法などが考えられる。この時、実行時間の算出には、例えば、シミュレーションによる解析結果を使用することが可能である。
【0082】
また、計画生成部12で計画された工程に基づいてロボットR1、R2を制御する際に、ロボットR2のタスクモジュールdrill(point1)の実行とロボットR1のタスクモジュールcarry(object、Pcontainer)の実行が重なったときには、図4の処理ステップS15、S16に従って両方のタスクモジュールの制御パラメータを制限する。このとき、制御パラメータは、処理ステップS2の工程の計画で決定された制御パラメータと同じ組合せを採用する必要がある。
【実施例3】
【0083】
本実施例では、図14に示す災害現場のような非整備環境において、ロボットR1、R2と無人航空機R3(これもロボットの一種)が同時に連係して、瓦礫70a、70bの撤去作業を実施する工程を例に説明する。実施例1、2と本実施例との相違は、制御するロボットが2台より多く、1つの動作制約を要求するタスクに対して、2つ以上のタスクに動作制約が要求される可能性がある点である。
【0084】
図15は、無人航空機R3が実行するタスク情報D3である。ロボットR1、R2は図5に示すタスクを実行する。無人航空機R3はタスクmove(P)で位置Pまで移動し、タスクsearch(x、P)によって位置Pにおいて被災者xの存在を調査する。
【0085】
このとき、タスクsearch(x、P)には、動作制約PUAV≦PUAV、thが与えられる。これは、視覚では捉えにくい被災者xの存在を調査するために聴覚センサを使用するが、無人航空機R3の位置における他のタスクからの音圧PUAVが閾値PUAV、thより大きいと、正常な調査を行うことができないことを意味する。ここで、音圧PUAVの代わりに、騒音の周波数fUAVに対して、例えば、「fUAV<fUAV、lower、fUAV>fUAV、upper」のように動作制約を与えることも考えられる。
【0086】
図14に示す、ロボットR1、R2が瓦礫70を解体するタスクdrill(rubble)、無人航空機R3が被災者を調査するタスクsearch(victims、P)を実行する状況を例として、処理の流れを説明する。
【0087】
図16は、図14の状況について、ロボットR1のタスクdrill(rubble)におけるドリルビットの送り速度vr1(制御パラータ)と、ロボットR2のタスクdrill(rubble)におけるドリルビットの送り速度vr2(制御パラータ)を変更するときの、PUAVについて示している。ロボットR1、R2の制御パラメータの組合せ(vr1、vr2)によりPUAVが決まり、図16のハッチング部分80の組合せの場合に動作制約が満たされる。したがって、曲線部分81の組合せを用いる場合が最適である。
【0088】
本実施例の場合、計画生成部12では、ロボットR1、R2と無人航空機R3の3台について工程を計画する。基本的な処理の流れは実施例1と同じであるが、動作制約D35を要求するタスクと実行が重なるタスクの実行時間を実行時間算出部17で算出する場合については、制御パラメータ算出部16で図16に基づいて取得された制御パラメータの最適な組合せを用いる必要がある。
【0089】
例えば、無人航空機R3のタスクsearch(victims、P)と、ロボットR1、R2のタスクdrill(rubble)の実行時刻が重なった場合、図16における曲線部分81の制御パラメータの組合せ(vr1、vr2)から数点を選択し、それぞれの組合せに対して実行時間を算出し、複数の部分工程を作成する。このとき、実行時間の算出には、例えば、シミュレーションによる解析結果を使用することが可能である。
【0090】
図17は、本実施例における制御システムの構成であり、図2の構成に無人航空機R3が追加された構成である。また、図18は、本実施例における制御システムの処理の流れであり、図3の構成に無人航空機R3の制御のためのフローが追加される。
【0091】
計画生成部12で計画された工程に基づいて制御する際に、ロボットR1、R2のタスクモジュールdrill(rubble)の実行と、無人航空機R3のタスクモジュールsearch(victims、P)の実行が重なった場合には、図4の処理ステップS15、S16に従ってロボットR1、2の両方のタスクモジュールの制御パラメータを制限する。このとき、制御パラメータは、処理ステップS2の工程の計画で決定された制御パラメータと同じ組合せを採用する必要がある。
【0092】
以上の説明では、被災者を調査するタスクに対する、瓦礫を解体するタスクの騒音による影響を動作制約として与えた。一方で、前者を機械の異常音を検知するタスク、後者を溶接あるいはロボット自体の駆動音が問題となるタスクなどに置き換えても、同様な処理を実施することが可能である。
【0093】
本実施例では制御対象を2台から3台へ増やすときの変更点について説明したが、制御対象がそれ以上になった場合についても同様な拡張を行うことができる。
【実施例4】
【0094】
図19は、図9に示すタスクモジュールのうち少なくとも1つが、オペレータによるロボットR1あるいはロボットR2の遠隔操作に置き換わった場合の構成である。遠隔操作部90は、作業環境表示部91、ロボット操作部92、実行タスク表示部93、状態表示部94で構成される。
【0095】
作業環境表示部91は、作業環境の映像がリアルタイムで表示され、作業環境やロボットの状態をオペレータが確認することができる。ロボット操作部92は、オペレータがロボットを制御するためのユーザーインターフェースであり、オペレータによるインターフェースへの入力情報に基づき、ロボットの動作が制御される。
【0096】
実行タスク表示部93は、起動されたタスクモジュールで実行すべきタスクの内容が表示される。例えば、タスクモジュールmove(Ppoint1)が起動された場合、制御するロボットを位置Ppoint1へ移動するという指示が表示される。この時、作業環境表示部91に位置Ppoint1を示すことで操作性を向上することなども可能である。状態表示部94は、タスクの実行状況を表示し、タスクの完了判定やタスクに課されている制約条件などをオペレータが確認する事ができる。
【0097】
ここで、図4の処理ステップS16で、動作制約に基づき、遠隔操作するタスクモジュールの制御パラメータが制限される場合、ロボット操作部92で制御パラメータが動作制約による閾値以上にならないように、操作が制限される。例えば、タスクモジュールmove(Ppoint1)に対して最大速度vmaxへの動作制約vmax<vmax、thが課された場合、ロボット制御部92ではオペレータからの進行方向に関する入力のみを受付けて、vmaxは内部的に決定する方法などが考えられる。
【実施例5】
【0098】
実施例1において、図2に示す制御システムの構成では、ロボットR1、R2のそれぞれについてタスク選択部18、制御部19が備えられている。
【0099】
これに対し実施例5では、図20のシステムの構成のように、タスク選択部18、制御部19をロボットR1とロボットR2で統合したものである。その場合、制御システムの処理の流れは図21のようになり、処理ステップS10~S18の各ステップではロボットR1、R2の両方について処理を行うこととなる。あるいは、処理ステップS10~S18の一連の処理をロボットR1、R2に対して交互に行うことも可能である。
【実施例6】
【0100】
本実施例では、タスクの途中で動作制約が変化する場合について説明する。
【0101】
図22は、図5のタスクinsert(x、y)を要素動作に分割したときの構成である。対象xを対象yへ挿入するタスクinsert(x、y)は、yを探索する動作100、xを挿入する動作101、xを解放した後に初期位置へ戻る動作103の3つに分割できる。
【0102】
図23は、図22のようにタスクinsert(x、y)を要素動作に分割できるとした場合の当該タスクの制約条件である。要素動作毎に作業床4の振動による影響の大きさが異なるため、それぞれの実行に対して異なる動作制約を与えている。動作100と動作101は作業床4の振動により失敗する可能性があるため、それらを実行する区間a、bには動作制約を与えている。
【0103】
一方で、動作102は作業床4の振動による影響を受けないため、動作102を実行する区間cには動作制約を与えていない。また、動作101より動作100の方がより高い位置合わせの精度が求められるため、区間bの動作制約の閾値αfloor、th2より区間aの動作制約の閾値αfloor、th1の方が小さくなっている。
【0104】
図4のフローチャートの処理ステップS14において、他のロボットがタスクinsert(x、y)を実行している場合、タスクinsert(x、y)のどの要素動作を実行しているかにより動作制約の条件が切換る。それにより、処理ステップS15の判定結果と、処理ステップS16で選択される制御パラメータの値が変化する。
【0105】
以上により、図5のようにタスク内で動作制約の条件が一定である場合よりも適切な制御パラメータを選択する事が可能となり、より効率的な工程の制御が実現される。
【符号の説明】
【0106】
R1:ロボット、R2:ロボット、10:制御システム、11:記憶部、12:計画生成部、15:最適化部、16:制御パラメータ算出部、17:実行時間算出部、18:タスク選択部、19:制御部、20:動作部、40:タスクモジュール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23