(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-10
(54)【発明の名称】制御システム、制御装置、制御方法、及び、プログラム
(51)【国際特許分類】
G05D 1/69 20240101AFI20240903BHJP
B25J 13/00 20060101ALI20240903BHJP
【FI】
G05D1/69
B25J13/00 Z
(21)【出願番号】P 2022502697
(86)(22)【出願日】2020-02-27
(86)【国際出願番号】 JP2020007942
(87)【国際公開番号】W WO2021171461
(87)【国際公開日】2021-09-02
【審査請求日】2022-08-03
【前置審査】
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100107331
【氏名又は名称】中村 聡延
(72)【発明者】
【氏名】町田 真直
【審査官】松浦 陽
(56)【参考文献】
【文献】桜間 一徳 KAZUNORI SAKURAMA,ネットワーク上の分散制御器の設計理論,計測と制御 第55巻 第11号 JOURNAL OF THE SOCIETY OF INSTRUMENT AND CONTROL ENGINEERS,日本,公益社団法人計測自動制御学会,2016年11月,第55巻 第11号,pp.972-977
【文献】石井 秀明 HIDEAKI ISHII,マルチエージェントシステムの制御 -I 総論,システム/制御/情報 第57巻 第5号 SYSTEMS,CONTROL AND INFORMATION,日本,システム制御情報学会,2013年05月15日,第57巻 第5号,pp.29-36
【文献】Demetri P. Spanos, et al.,Dynamic consensus for mobile networks,The 16th IFAC World Congress,2005年
【文献】桜間 一徳 KAZUNORI SAKURAMA,マルチエージェントシステムの制御 -III 合意制御(1),システム/制御/情報 第57巻 第9号 SYSTEMS,CONTROL AND INFORMATION,日本,システム制御情報学会,2013年09月15日,第57巻 第9号,pp.30-40
【文献】瀬川 昂平 K. Segawa,平均合意ダイナミクスを用いた分散変化点検出法 Distributed Change-Point Detection by Average Consensu,第58回 システム制御情報学会 研究発表講演会講演論文集 [CD-ROM] 第58回システム制御情報,2014年05月21日
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00- 1/87
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
制御装置、及び、複数のロボットを備える制御システムであって、
前記制御装置は、
関数を取得する関数取得手段と、
前記関数を、複数のノードが数値
に対応し、エッジが根元のノード値を入力とする関数
に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造
に変換し、前記グラフ構造において、前記複数のノード
からのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象
ノードとし、前記対象ノードとその対象ノード
に入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットの
うちのいずれか一つに所属するようにし
て、前記関数を
前記複数のロボットにより分散計算可能な形式に変換する関数形式変換手段と、
前記
分散計算可能な形式
に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換手段と、
を備え、
前記関数形式変換手段は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを
、前記
対象ノードが依存するノードの数
になるまで複製し、
複製した対象ノードをそれぞれのロボットの
所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換手段は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させ、
前記複数のロボットの各々は、
設定された前記変数に基づき、通信可能な他のロボットと前記変数の値を送受信しながら自身の格納する変数を更新する合意制御手段と、
設定された前記処理に基づき、前記変数から関数値を推測する関数値推測手段と、
を備える制御システム。
【請求項2】
前記関数取得手段は、ユーザーからロボットの行動基準となる関数を
取得する請求項1に記載の制御システム。
【請求項3】
前記関数取得手段は、
ユーザーからタスクに関わるタスク情報の入力を受け付けるタスク情報入力手段と、
入力されたタスク情報を関数に変換する関数変換手段と、
を備える請求項1又は2に記載の制御システム。
【請求項4】
複数のロボットを制御するための制御装置であって、
関数を取得する関数取得手段と、
前記関数を、複数のノードが数値
に対応し、エッジが根元のノード値を入力とする関数
に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造
に変換し、前記グラフ構造において、前記複数のノード
からのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象
ノードとし、前記対象ノードとその対象ノード
に入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットの
うちのいずれか一つに所属するようにし
て、前記関数を
前記複数のロボットにより分散計算可能な形式に変換する関数形式変換手段と、
前記
分散計算可能な形式
に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換手段と、
を備え、
前記関数形式変換手段は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを
、前記
対象ノードが依存するノードの数
になるまで複製し、
複製した対象ノードをそれぞれのロボットの
所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換手段は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させる制御装置。
【請求項5】
複数のロボットを制御するための制御方法であって、
関数を取得し、
前記関数を、複数のノードが数値
に対応し、エッジが根元のノード値を入力とする関数
に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造
に変換し、前記グラフ構造において、前記複数のノード
からのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象
ノードとし、前記対象ノードとその対象ノード
に入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットの
うちのいずれか一つに所属するようにし
て、前記関数を
前記複数のロボットにより分散計算可能な形式に変換する関数形式変換
と、
前記
分散計算可能な形式
に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換
と、
を行い、
前記関数形式変換は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを
、前記
対象ノードが依存するノードの数
になるまで複製し、
複製した対象ノードをそれぞれのロボットの
所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させる制御方法。
【請求項6】
複数のロボットを制御するためのプログラムであって、
関数を取得し、
前記関数を、複数のノードが数値
に対応し、エッジが根元のノード値を入力とする関数
に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造
に変換し、前記グラフ構造において、前記複数のノード
からのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象
ノードとし、前記対象ノードとその対象ノード
に入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットの
うちのいずれか一つに所属するようにし
て、前記関数を
前記複数のロボットにより分散計算可能な形式に変換する関数形式変換
と、
前記
分散計算可能な形式
に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換
と、
をコンピュータに実行させ、
前記関数形式変換は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを
、前記
対象ノードが依存するノードの数
になるまで複製し、
複製した対象ノードをそれぞれのロボットの
所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットが観測した情報の処理を行なう制御システムの技術分野に関する。
【背景技術】
【0002】
複数台のロボットが協調して動くシステムを、マルチエージェントシステムという。マルチエージェントシステムでは、各ロボットは、自身のセンサが観測した情報と、近くに存在するロボットとのローカルな通信に基づいて、自身の行動を決定する。各ロボットの行動決定が、全ロボットの観測情報に基づいて行なわれる場合では、例えば、ロボット間のローカルな通信で観測情報をバケツリレーのように伝播させていき、全ロボットの観測情報を収集する必要がある。この観測情報の収集方法は、特許文献1に記されているように、モバイルセンサネットワーク等にみられるものである。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
マルチエージェントシステムにおいて各ロボットの行動決定が全ロボットの観測情報に依存する場合、ロボット間のローカルな通信でバケツリレーのように全ロボットの観測情報を伝播させていく必要があり、ロボットの台数が増えるほど通信帯域を圧迫する、観測情報を記憶するメモリが増加するという問題があった
【0005】
本発明の1つの目的は、全ロボットの観測情報に基づく各ロボットの行動決定に必要な情報を、効率的に、即ち、必要な通信帯域及びメモリを少なくして収集することが可能な仕組みを提供することにある。
【課題を解決するための手段】
【0006】
本発明の一つの観点は、制御装置、及び、複数のロボットを備える制御システムであって、
前記制御装置は、
関数を取得する関数取得手段と、
前記関数を、複数のノードが数値に対応し、エッジが根元のノード値を入力とする関数に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造に変換し、前記グラフ構造において、前記複数のノードからのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象ノードとし、前記対象ノードとその対象ノードに入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットのうちのいずれか一つに所属するようにして、前記関数を前記複数のロボットにより分散計算可能な形式に変換する関数形式変換手段と、
前記分散計算可能な形式に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換手段と、
を備え、
前記関数形式変換手段は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを、前記対象ノードが依存するノードの数になるまで複製し、複製した対象ノードをそれぞれのロボットの所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換手段は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させ、
前記複数のロボットの各々は、
設定された前記変数に基づき、通信可能な他のロボットと前記変数の値を送受信しながら自身の格納する変数を更新する合意制御手段と、
設定された前記処理に基づき、前記変数から関数値を推測する関数値推測手段と、を備える。
【0007】
本発明の他の観点は、複数のロボットを制御するための制御装置であって、
関数を取得する関数取得手段と、
前記関数を、複数のノードが数値に対応し、エッジが根元のノード値を入力とする関数に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造に変換し、前記グラフ構造において、前記複数のノードからのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象ノードとし、前記対象ノードとその対象ノードに入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットのうちのいずれか一つに所属するようにして、前記関数を前記複数のロボットにより分散計算可能な形式に変換する関数形式変換手段と、
前記分散計算可能な形式に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換手段と、
を備え、
前記関数形式変換手段は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを、前記対象ノードが依存するノードの数になるまで複製し、複製した対象ノードをそれぞれのロボットの所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換手段は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させる。
【0008】
本発明の他の観点は、複数のロボットを制御するための制御方法であって、
関数を取得し、
前記関数を、複数のノードが数値に対応し、エッジが根元のノード値を入力とする関数に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造に変換し、前記グラフ構造において、前記複数のノードからのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象ノードとし、前記対象ノードとその対象ノードに入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットのうちのいずれか一つに所属するようにして、前記関数を前記複数のロボットにより分散計算可能な形式に変換する関数形式変換と、
前記分散計算可能な形式に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換と、
を行い、
前記関数形式変換は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを、前記対象ノードが依存するノードの数になるまで複製し、複製した対象ノードをそれぞれのロボットの所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させる。
【0009】
本発明の他の観点は、複数のロボットを制御するためのプログラムであって、
関数を取得し、
前記関数を、複数のノードが数値に対応し、エッジが根元のノード値を入力とする関数に対応し、前記複数のノードのエッジの合流が前記エッジが出力する関数値の和算に対応するグラフに変換したグラフ構造に変換し、前記グラフ構造において、前記複数のノードからのエッジが合流するノードのうち前記複数のロボットに所属するそれぞれのノード全てに依存するノードを対象ノードとし、前記対象ノードとその対象ノードに入るエッジの根元のノードとの依存関係に基づき、各ノードと各エッジが前記複数のロボットのうちのいずれか一つに所属するようにして、前記関数を前記複数のロボットにより分散計算可能な形式に変換する関数形式変換と、
前記分散計算可能な形式に変換された関数に基づいて、各ロボットが格納する変数と、前記変数に対する処理とを、前記複数のロボットの各々に設定する変数変換と、
をコンピュータに実行させ、
前記関数形式変換は、
各ロボットの情報と、そのロボットに所属するノードのみに依存するノードと、をそのロボットの所属に振り分ける第1の処理と、
複数のロボットに所属するノードに依存する前記対象ノードを、前記対象ノードが依存するノードの数になるまで複製し、複製した対象ノードをそれぞれのロボットの所属に振り分け、前記複製した対象ノードが同じロボットに所属するノードのみに依存するようにエッジを削除する第2の処理と、
を行って全てのノードを前記複数のロボットのいずれかに振り分け、
前記変数変換は、前記複製した対象ノードのそれぞれを、当該対象ノードが所属するロボットにおいて合意制御の対象となる変数に設定し、前記複製した対象ノードから出るエッジを、当該複製した対象ノードの値に対する計算において前記複数のロボットの数で除算する関数に対応させる。
【発明の効果】
【0010】
本発明によれば、本発明によれば、通信帯域やメモリを少なく抑えつつ、全ロボットの観測情報に基づく各ロボットの行動決定に必要な情報を収集することができる。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係るロボット制御システムの全体構成を示す。
【
図2】制御装置及びロボットのハードウェア構成を示す。
【
図3】第1実施形態に係る制御システムの機能構成を示す。
【
図9】ロボットの設定処理のフローチャートである。
【
図10】ロボットの動作処理のフローチャートである。
【
図11】第2実施形態に係る制御システムの機能構成を示す。
【
図13】ロボットの設定処理のフローチャートである。
【
図14】第3実施形態に係る制御システムの機能構成を示す。
【
図15】第4実施形態に係る制御システムの機能構成を示す。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明の好適な実施形態について説明する。
<全体構成>
図1は、本発明の実施形態に係るロボット制御システム(以下、単に「制御システム」とも呼ぶ。)の全体構成を示す。制御システム1は、制御装置100と、複数のロボットRとを備える。制御装置100と各ロボットRは有線又は無線により相互に通信可能であり、ロボットR同士も有線又は無線により通信可能である。
【0013】
<ハードウェア構成>
[制御装置]
図2(A)は、制御装置100のハードウェア構成を示す。制御装置100は、通信部101と、プロセッサ102と、メモリ103と、記録媒体104と、データベース(DB)105と、入力装置106と、表示装置107と、を備える。
【0014】
通信部101は、有線又は無線によりロボットRと通信を行なう。プロセッサ102は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)などのコンピュータであり、予め用意されたプログラムを実行することにより、制御装置100の全体を制御する。特に、プロセッサ102は、後述するロボットの設定処理を行なう。
【0015】
メモリ103は、ROM(Read Only Memory)、RAM(Random Access Memory)などにより構成される。メモリ103は、プロセッサ102により実行される各種のプログラムを記憶する。また、メモリ103は、プロセッサ102による各種の処理の実行中に作業メモリとしても使用される。
【0016】
記録媒体104は、ディスク状記録媒体、半導体メモリなどの不揮発性で非一時的な記録媒体であり、制御装置100に対して着脱可能に構成される。記録媒体104は、プロセッサ102が実行する各種のプログラムを記録している。
【0017】
DB105は、ユーザにより入力される関数やタスク情報を記憶する。また、DB105は、後述する関数形式の変換、変数の変換などに必要な情報を記憶する。
【0018】
入力装置106は、例えばキーボード、マウス、タッチパネルなどであり、制御装置100による処理に関連してユーザが必要な指示、入力を行なう際に使用される。表示装置107は例えば液晶ディスプレイなどであり、各ロボットRの状態など、ロボットRの制御に関する情報を表示する。
【0019】
[ロボット]
図2(B)は、ロボットRのハードウェア構成を示す。ロボットRは、通信部201と、プロセッサ202と、メモリ203と、記憶部204と、を備える。通信部201は、有線又は無線により、制御装置100及び他のロボットRと通信する。プロセッサ202は、CPUなどのコンピュータであり、予め用意されたプログラムを実行することにより、ロボットRを制御する。特に、プロセッサ102は、後述するロボットの動作処理を行なう。
【0020】
メモリ203は、ROM、RAMなどにより構成され、プロセッサ202により実行されるのプログラムを記憶する。また、メモリ203は、プロセッサ202による各種の処理の実行中に作業メモリとしても使用される。記憶部204は、自身が行なう行動に関連する各種のデータを必要に応じて記憶部204に記憶する。
【0021】
<第1実施形態>
次に、本発明の第1実施形態について説明する。
(機能構成)
図3は、第1実施形態に係る制御システム1の機能構成を示す。制御システム1は、制御装置100と、複数のロボットRとを備える。制御装置100は、主に、関数入力部111と、関数形式変換部112と、変数変換部113とを備える。また、各ロボットRは、合意制御部211と、関数値推測部212と、を備える。
【0022】
関数入力部111は、ユーザーから関数の入力を受け付ける装置である。この関数は、各ロボットRがセンサ等で観測する情報を入力値とする。また、関数値は各ロボットの行動決定の基準となる。
【0023】
いま、ロボットR1,R2,R3,…,Rnが観測する情報である観測値を、x1,x2,x3,…xnとする。また、このときユーザーが入力する関数を、F(x1,x2,x3,…xn)とする。観測値はベクトル情報であっても構わない。例えばGPSの位置情報であれば、観測値は2次元のベクトルとして与えられる。
【0024】
具体的な例を用いて入力される関数とロボットの行動決定の関係を説明する。例として、辺り一帯の平均気温が40度を超えたときにアラートを鳴らすマルチエージェントシステムを考える。このマルチエージェントシステムでは、ロボット群は辺り一帯に散らばり、各ロボットに備え付けられたセンサがその地点での温度を観測する。すなわち、ロボットR1が観測する温度が41度であれば、x1=41ということになる。ロボットの行動決定であるアラートを鳴らすかどうかは平均気温に基づいて行なわれるため、入力される関数は、
【0025】
【0026】
関数形式変換部112は、関数入力部111が受け付けた関数を、関数値を分散計算可能な形に変換する。変換の一例としては、関数を点と矢印からなるグラフ構造に変換するものがある。この例では、関数形式変換部112は、関数入力部111が受け付けた関数を、ノードが数値(ベクトル値)、エッジが根元のノード値を入力とする関数、エッジの合流(複数の矢印の先が一つのノードに集まる)がエッジが出力する関数値の和算に対応するグラフに変換する。このグラフでは、エッジ(矢印)の方向へと計算が進んでいく。計算の最初に並んでいるノード(点)は、各ロボットRの観測値に対応するものである。ノードから出るエッジ(矢印)は、そのノードの値を入力とする関数と対応付いている。また、ここでいう関数はベクトル値関数であってもよい。さらに、複数の矢印が一つのノードで合流する場合には、そのノードに対応する値は、入ってくるエッジの値の合計となる。
【0027】
基本的な処理としては、関数形式変換部112は、変換により得られたグラフを、あるノードとそのノードを指しているエッジの根元のノードとの依存関係に基づき、
(i)各ロボットの情報と、そのロボットに所属するノードのみに依存するノードをそのロボットの所属に振り分ける第1の処理と、
(ii)複数のロボットに所属するノードに依存するノードを、その依存するノードの数だけ複製し、それぞれのロボットに所属させた上で、その依存するノードの中から同じ所属のもののみにエッジを削除する第2の処理と、
を繰り返してすべてのノードの所属を振り分け、ロボットごとに所属するノードを、そのロボットの合意制御部211に変数として設定した上で変数間の依存関係の情報を記憶させる。
【0028】
以下、具体的な例を用いて、関数形式の変換について説明する。入力された関数が、
【0029】
【数2】
であるときを考える。これは、各ロボットRの観測値の分散を計算する関数である。この関数は例えば、温泉内の温度のむらを減らしたいというとき等、温度のむらに対応する分散の値を計算するために用いることができる。
【0030】
この関数について、いまロボットRが5台(ロボットR
i=R
1~R
5とする。)であるとき、関数形式変換部112は、入力された関数を例えば
図4の形式に変換する。
図4で、実線で示されるエッジはf(c)=cに対応し、そのエッジの根元にあるノードの値をそのまま矢印の先に伝える。点線で示されるエッジはf(c)=-c/nに対応し、そのエッジの根元になるノードの値をnで割って負の値にして矢印の先に伝える。二重線で示されるエッジは、f(c)=c
2/nに対応する。すなわち、ノードsは、各ロボットの観測値の合計
【0031】
【0032】
【数4】
に対応する。最後に、vに対応する値が関数値となる。
【0033】
このようなグラフへの変換手法の一例としては、Kolmogorov-Arnoldの表現定理に基づく生成的手法がある。この手法の一例は、以下の文献1に詳しい。ただし、本発明においてはこの変換については主眼ではなく、既存の手法によって達成されうるものであるため、変換手法の説明については割愛する。以下の文献1を本明細書の一部としてここに取り込む。
(文献1)山村 清隆, 村山 泰子, 「多変数関数を一変数関数の和で表現するアルゴリズム」, 電子情報通信学会技術研究報告. CAS, 回路とシステム 93(102), 67-74, 1993-06-19
【0034】
変数変換部113は、形式を変換された関数から、分散計算のための変数を設定する装置である。具体的には、この装置は、各ロボットRに備え付けられた合意制御部211に対して、合意制御を行なう必要のある変数群の情報を送る。
【0035】
変数変換の一例を、
図4のグラフ形式から変数への変換を用いて説明する。変数変換の目的は、どのロボットがどの変数を格納するか決定することと、変数間の依存関係を決定することである。
図4のグラフの、観測値に対応するノード以外のすべてのノードが変数に変換される。変数変換は、観測値に対応するノードから始めて、矢印を辿りながら順番に進めていく。
【0036】
まず、変数変換部113は、観測値に対応するノードのロボットへの所属を明示する。この結果を
図5に示す。次に、変数変換部113は、所属が明示されたノードからのみ矢印が向けられるノードについて、矢印の根元のノードの所属分ノードを複製し、それぞれのノードを各ロボットの所属に振り分ける。この結果を
図6に示す。ノードの複製時、複製されたノードは、元ノードが矢印を指していたノードには矢印を指し、矢印を向けられる側は、自身に矢印を向けるノードの中で自身と同じ所属のノードのみと繋がる。変数変換部113は、この作業をすべてのノードの所属が明示されるまで繰り返す。ただし、複製されたノード群から矢印が指されているノードは、その中から一つエッジを選択し、それ以外のエッジを消去して構わない。これをエッジ選択と呼ぶ。また、このエッジ選択は、指されるノードの所属ができるだけ被るように選択することで、複製するノード数を抑えることができる。
図7にyのノード群がエッジ選択を行なった場合を示す。
図8はこの作業を繰り返し終えた最終形である。
【0037】
図8では、すべてのノードがいずれかのロボットに所属している。変数変換部113は、これらノードを、所属ごとに変数として設定する。ロボットR
2では、変数s,y
2,vがロボットR
2に備えられた合意制御部211上で設定される。また、各変数は、自身が依存するノードとエッジ、自身が全ロボットで唯一の変数か否かを記憶しておく。この情報は、合意制御の際に用いられる。
【0038】
ロボットR側では、合意制御部211は、合意制御に基づいて変数の計算を行なう。合意制御の一例として、以下の文献2で提案されている手法がある。この手法は、観測値の平均を求める手法である。本発明では、そこに前処理として関数形式の変換と変数変換を加えることで、関数値の推測に用いる。以下の文献2を本明細書の一部としてここに取り込む。
(文献2)Demetri P. Spanos, Reza Olfati-Saber, Richard M. Murray. Dynamic Consensus for Mobile Networks. 2005 IFAC World Congress.
【0039】
本実施形態で考えるマルチエージェントシステムでは、すべてのロボットがすべてのロボットと通信できる訳ではない。例えば、ロボットR1とロボットR3は通信できるがロボットR1とロボットR2は通信できない、というような状況を考える。ただし、通信ネットワークは連結であることを仮定する。ここで連結とは、あるロボットから通信ネットワークを辿っていくと、すべてのロボットへ到達できることをいう。
【0040】
ロボットRiが(直接)通信できるロボットの集合を、Niで表す。合意制御の一例は、上記の文献2で示される以下の式で表される。
【0041】
【数5】
ここで、上付き数字は所属を表し、wは変数が依存するノードとエッジから算出される値である。この例では、
【0042】
【数6】
であり、fはエッジの関数、cはノードの値に対応する。nをかけるのは、元のグラフではエッジの合流が和であったの対し、合意制御では平均値が求まることに対応するものである。もしロボットR
iに変数zが所属しない場合、w
i=0とする。
図8を用いて、具体的に説明する。まず、変数sの合意制御は、以下の式で表される。
【0043】
【0044】
ここで、
図8の実線で示されるエッジに対応するf
1はf
1(c)=cである。変数sは、最初は自身の観測値の5倍から始まり、観測値の変化を反映しながら、通信できるロボットとの間で変数の差が減るように増減させることで、観測値の平均値の5倍、すなわち合計へと近づいていく。続いて、変数yは、
【0045】
【数8】
で与える。これは合意制御ではなく、変数が全ロボットで唯一のものに対する特殊な処理である。変数が全ロボットで唯一であるときは、依存するものから値を直接導出する。f
1(c)=c,f
2(c)=-c/5であり、f
2は点線に対応する。最後に変数vの合意制御は、
【0046】
【数9】
である。ここで、二重線に対応するのはf
3(c)=c
2/5である。本例では合意制御として連続時間のものを用いたが、これは離散時間の合意制御であっても構わない。
【0047】
関数値推測部212は、変数群を入力として関数値を推測する。上記の合意制御の例であれば、各ロボットRiの関数値推測部212は、そのままviを関数値の推測値とすればよい。関数値の推測は、ロボットRiに所属するその他の変数や観測値を用いてもよい。例えば、確率の積を計算するような場合、すなわち
【0048】
【数10】
であるとき、関数値は必ず観測値より小さい。つまり、観測の推測に、観測値の情報を用いて、観測値以下であるといった条件を付与して、推測の精度を上げることができる。
【0049】
図8を例にあげて、関数値推測のために必要な帯域とメモリ数が削減されたことを説明する。観測値の分散を計算する場合、本実施形態では必要な変数の数は3つ、通信帯域は変数2つ分を用意すればよい。そして、この数はロボットの台数に依存せず、ロボットが増えても必要なメモリや通信帯域を小さく抑えることができる。一方、バケツリレー形式で全ロボットに情報を伝播させて関数値を計算する場合、各ロボットは全ロボットの情報を通信する必要があり、ロボット数が増えるほど必要なメモリや通信帯域が増えていく。
【0050】
(処理フロー)
次に、本実施形態における処理フローについて説明する。
図9は、関数値推測を行なうための、ロボットの設定処理のフローチャートである。設定処理は、主として制御装置100により行なわれる。まず、関数入力部111が、ユーザーからロボットの行動基準となる関数を受け付ける(ステップS11)。これはユーザーによるロボットの設定に当たる部分である。次に、関数形式変換部112が、ユーザーに入力された関数の形式を変換する(ステップS12)。そして変数変換部113が、関数が変換されたものを、マルチエージェントシステムのロボット群で計算可能な形に変換し、ロボットに対して合意制御と関数値推測を行なうための設定を行なう(ステップS13)。この関数形式変換部112と変数変換部113での2つの処理が、機械的に行なわれるロボットの設定に当たる部分である。
【0051】
図10は、ロボットの実際の制御中の動作処理のフローチャートである。上記したロボットの設定処理が済み、実際にロボットRを稼動させると、ロボットRの合意制御部211、関数値推測部212で計算が行なわれる。まず、合意制御部211が変数群の更新を行ない(ステップS21)、次に関数値推測部212が変数値を元に関数値を推測する(ステップS22)。この2つの処理が終了したとき、もしロボットRが終了条件を満たさないならば、またステップS21~S22を繰り返す。すなわち、合意制御部211、関数値推測部212は、ロボットRの稼働中は常に計算を続け、変数値と推測される関数値の更新を繰り返す。そのため、ロボットRの観測値が変化し続けるような状況でも、実際の関数値の変化に追従して推測し続けることが可能である。制御は、ユーザーの入力で制御を終了する命令が与えられたとき、あるいは事前に定められた終了条件を満たしたとき(ステップS23:YES)に終了する。
【0052】
<第2実施形態>
図11は、第2実施形態に係る制御システム1xの構成を示す。本システムは、第1実施形態とはユーザーからの入力の受け付け方が異なり、ユーザーから入力される情報は関数ではなくタスクに関する情報である。具体的に、制御装置100は、第1実施形態における関数入力部111の代わりに、タスク情報入力部114と関数変換部115を備える。このような構成をとることにより、専門的な知識を必要とする関数を設計し直接入力するのに比べ、容易にユーザーが本発明を利用できるようになる。
【0053】
タスク情報入力部114は、ユーザーからタスクに関わる情報(以下、「タスク情報」と呼ぶ。)を受け付ける。タスク情報とは、例えば、タスクの最終目的や、ロボット群に守らせたい制約条件、各ロボットのタスクへの適正、等である。ロボット群に守らせたい制約条件とは、例えば、ロボット群の通信ネットワークが途切れないようにする、というようなものであり、各ロボットのタスクへの適正とは、例えば、ロボットを移動させたい目的地と各ロボットとの距離、というようなものである。
【0054】
関数変換部115は、ユーザーにより入力されたタスク情報を関数に変換する。
図11では省略したが、各ロボットの関数値に基づく行動決定を設定する行動設定部等も、ユーザーに入力されたタスク情報から行動設定を行なってよい。
【0055】
関数変換後の処理は第1実施形態と同じである。関数変換までの処理について、具体的な例を挙げて説明する。ユーザーは、ロボット群を複数の仕事に振り分けることが最終目的であるとする。例えば、ロボットの数が10台、仕事は3つで、仕事Aに3台、仕事Bに5台、仕事Cに2台、を振り分けたいとする。
【0056】
タスク情報として、まずユーザーはこの3種類の仕事とそれぞれに振り分けたいロボットの台数を入力する。次に、各ロボットの各仕事に対する適正の高さを入力する。例えば、仕事が荷物を運ぶような仕事であれば、ロボットがどれぐらいの重さまで運べるか、またロボットの速さはどうか、という情報から仕事の適正が決まる。ここで、対応重量の問題で、ロボットR
i=R
1,R
2,R
3,R
4,R
5は仕事Cを実行不可能であるが、移動速度は速く仕事Bに向いているとする。逆にロボットR
i=R
6,R
7,R
8,R
9,R
10は仕事Cを実行可能であるものの、移動速度は遅く仕事Bには向かないとする。また、仕事Aは急ぐ必要はないため、どちらのロボットが行なっても構わないとする。このときの各ロボットと仕事の適正は、例えば、
図12のようになる。
図12は、ユーザのタスク情報の入力例である。
【0057】
関数変換部115では、例えば、まず入力されたタスク情報を最適化問題に変換する。多くの研究で様々な現実の問題と最適化問題の関係性が示されているため、最適化問題への変換手法の1つとしては、これら対応付けのデータベースを関数変換部115が有しておくというものがある。先ほどの問題は、タスク割当に関わる最適化問題であり、具体的には以下の式で表される。
【0058】
【0059】
ここで、α
ijはロボットiがタスクjを行なうかどうかを示す変数であり、α
ij=1のときタスクjを行い、α
ij=0のときタスクjを行なわない。b
ijはロボットiのタスクjjへの適正の高さを表すものであり、ユーザーにより入力された
図12のタスク情報に対応する。c
jはタスクjに割り振るロボットの数である。この最適化問題は、各ロボットにできるだけ適正の高い仕事を行なわせるタスク割当を見つけるものであり、s.t.部分に書かれた制約は、1台のロボットはタスクごとにそのタスクを行なうか/行なわないかのみ選択でき、実行できるタスクの数は最大でも1つということと、タスクに対してc
j台のロボットを割り当てるということを示している。
【0060】
次に、この最適化問題を関数へと変換する。制約付き最適化問題の簡単な制約なし最適化問題への変換手法の一例として、罰則法という手法がある。これは制約を破ると、目的関数が悪化するようなペナルティを課す手法であり、具体的には以下のような式で表される。
【0061】
【数12】
M>0はペナルティの重さを表す定数であり、この値が大きいほど制約を破りにくくなる。この式では、制約部分が変形してM以下の括弧の中に入っている。
【0062】
最後に、最大化問題を勾配法に基づいて解くと考え、勾配に対応する関数を導出し、この関数を変換された関数とする。変数αijに基づく偏微分は、以下の式で表される。
【0063】
【0064】
本タスクにおいては、この関数が変換された関数に相当する。各ロボットはこの関数の情報をもとに変数αijを更新することで、どのタスクを自身が行なうかを決定できる。また、例えば、各ロボットは自身の位置を、タスクA,B,Cが行なわれる地点xA,xB,xCの重み付き平均αi1xA+αi2xB+αi3xCを目的地として移動を続けることで、タスク割当が決定されたときに自然とタスク開始場所に到達することができる。
【0065】
(処理フロー)
次に、第2実施形態の処理フローを説明する。
図13は、第2実施形態におけるロボットの設定処理のフローチャートである。この処理は、主として制御装置100により行なわれる。まず、ユーザーからのタスク情報をタスク情報入力部114が受け付ける(ステップS31)。次に、関数変換部115が、入力されたタスクに関する情報を関数に変換する(ステップS32)。これ以後の手順は第1実施形態と同様である。すなわち、関数形式変換部112が、ステップS32で得られた関数の形式を変換する(ステップS33)。そして変数変換部113が、関数が変換されたものを変数に変換し、ロボットに対して合意制御と関数値推測を行なうための設定を行なう(ステップS34)。
【0066】
<第3実施形態>
第3実施形態は、第2実施形態の具体的なアプリケーションである、関数推測値を用いた人口力場制御と制御バリア関数の構成について説明する。第3実施形態の制御システム1yの機能構成を
図14に示す。第3実施形態では、各ロボットRは、合意制御部211と関数値推測部212に加えて、制御入力決定部213を備える。
【0067】
人工力場制御と制御バリア関数はともに、まずタスクに対応する関数を設計し、その関数の勾配と関数値を用いて制御入力を決定する。例えば、人工力場制御では、タスクに応じた、各ロボットRの状態を引数とする関数Pを設計する。そして、各ロボットRについての偏微分に基づいて、そのロボットRの制御入力を決定する。典型的な制御入力の例は、
【0068】
【数14】
である。ここで、u
iは制御入力、x
iはロボットR
iの状態、xは全ロボットの状態である。一方、制御バリア関数の1つの例は、関数Bを設計し、制御入力が以下の式を満たすように決定することである。
【0069】
【0070】
これらの関数P,Bと、P,Bの勾配を、第1実施形態に示した関数推測に基づいて計算することにより、各ロボットRを分散的に制御することができる。例えば、関数P,Bを以下の形式の関数に書き直すことができるとする。
【0071】
【0072】
これは、第1実施形態における関数変換の具体例とは異なる、関数形式変換の例である。この関数から変数変換と合意制御は、以下のようになる。
【0073】
【0074】
関数P,Bとその勾配は、ロボットRiにおいて、それぞれ
【0075】
【0076】
【数19】
により推測される。ここで、ΔΦ
kはΦ
kの勾配を表す。人工力場制御の場合では、制御入力決定部213では、例えば、
【0077】
【数20】
のように推測された関数値に基づいて制御入力を決定する。そして制御バリア関数では、例えば、
【0078】
【数21】
のように、関数の推測値と勾配の推測値に基づいて制御入力に制約を与える。
【0079】
<第4実施形態>
図15は、第4実施形態に係る制御システムの構成を示す。制御システムは、制御装置50と、複数のロボット60とを備える。制御装置50は、関数取得部51と、関数形式変換部52と、変数変換部53とを備える。関数取得部51は、関数を取得する。関数形式変換部52は、関数を分散計算可能な形式に変換する。変数変換部53は、形式が変換された関数に基づいて、各ロボットが格納する変数と、変数に対する処理とを、複数のロボットの各々に設定する。
【0080】
各ロボット60は、合意制御部61と、関数値推測部62とを備える。合意制御部61は、設定された変数に基づき、通信可能な他のロボットと変数値を送受信しながら自身の格納する変数値を更新する。関数値推測部62は、設定された処理に基づき、変数から関数値を推測する。
【0081】
以上、実施形態及び実施例を参照して本発明を説明したが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0082】
1 制御システム
100 制御装置
111 関数入力部
112 関数形式変換部
113 変数変換部
114 タスク情報入力部
115 関数変換部
211 合意制御部
212 関数値推測部
213 制御入力決定部
R ロボット