(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-06
(45)【発行日】2024-09-17
(54)【発明の名称】分散セマンティック知識ベースを用いたロボット群による協調的タスク実行方法
(51)【国際特許分類】
G06N 5/00 20230101AFI20240909BHJP
G06N 3/008 20230101ALI20240909BHJP
G06N 5/043 20230101ALI20240909BHJP
G06F 16/90 20190101ALI20240909BHJP
【FI】
G06N5/00
G06N3/008
G06N5/043
G06F16/90 100
【外国語出願】
(21)【出願番号】P 2020040165
(22)【出願日】2020-03-09
【審査請求日】2023-02-16
(31)【優先権主張番号】201921009192
(32)【優先日】2019-03-08
(33)【優先権主張国・地域又は機関】IN
(73)【特許権者】
【識別番号】510337621
【氏名又は名称】タタ コンサルタンシー サービシズ リミテッド
【氏名又は名称原語表記】TATA Consultancy Services Limited
【住所又は居所原語表記】Nirmal Building,9th Floor,Nariman Point,Mumbai 400021,Maharashtra,India.
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100196612
【氏名又は名称】鎌田 慎也
(72)【発明者】
【氏名】ソウナック デイ
(72)【発明者】
【氏名】ソウミャディープ チョードゥリー
(72)【発明者】
【氏名】アリジット ムケルジー
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2018-190392(JP,A)
【文献】DEY, Sounak et al.,Semantic Data Exchange between Collaborative Robots in Fog Environment: Can CoAP be a Choice?,2017 Global Internet of Things Summit (GIoTS),米国,IEEE Xplore,2017年,pp.1-6,https://ieeexplore.ieee.org/abstract/document/8016232
【文献】SARKAR, Chayan et al.,Semantic knowledge driven utility calculation towards efficient multi-robot task allocation,2018 IEEE 14th International Conference on Automation Science and Engineering (CASE),米国,IEEE Xplore,2018年,pp.1-4,https://ieeexplore.ieee.org/abstract/document/8560555
(58)【調査した分野】(Int.Cl.,DB名)
G06N 5/00
G06N 3/008
G06N 5/043
G06F 16/90
(57)【特許請求の範囲】
【請求項1】
ロボットタスク実行のためのプロセッサによって実施される方法(300)であって、該方法(300)は、
ロボット群を形成する少なくとも2つのロボットによって該ロボット群に割り当てられる少なくとも1つのタスクをフェッチするステップであって、該ロボット群は、該ロボット群に割り当てられた該少なくとも1つのタスクを実行するために協調する該少なくとも2つのロボットを含む、フェッチするステップ(302)と、
前記少なくとも2つのロボットの各々によって前記フェッチされた少なくとも1つのタスクを処理するステップと、
を含み、該処理するステップは、
前記少なくとも1つのタスクを実行するのに必要な複数のタスク固有パラメータに関するセマンティック情報を集めるために、独自のセマンティック知識データベースにクエリを行うステップ(304)と、
前記複数のタスク固有パラメータに関するセマンティック情報が前記独自のセマンティック知識データベースにおいて利用可能でない場合、前記少なくとも2つのロボットのうちの少なくとも1つの他のロボットのセマンティック知識データベースにクエリを行うステップ(306)と、
前記複数のタスク固有パラメータに関するセマンティック情報を処理するステップであって、該処理するステップは、前記ロボット群に割り当てられた前記少なくとも1つのタスクを実行するために前記少なくとも2つのロボットのうちの少なくとも1つをターゲットロボットとして識別するステップを含み、該ターゲットロボットは、a)前記少なくとも1つのタスクを処理する能力及びb)コスト係数に関する基準を満足
し、
前記少なくとも1つのターゲットロボットを識別するステップは、
前記集めたセマンティック情報に基づいて、前記少なくとも1つのタスクを実行するロボットに必要な能力を決定するステップ(402)と、
前記決定した能力を前記少なくとも2つのロボットの能力と比較することにより、マッチング能力を有する前記少なくとも2つのロボットのうちのすべてのロボットを識別するステップ(404)と、
前記マッチング能力を有するものとして識別された各ロボットについて前記コスト係数を決定するステップであって、ロボットの前記コスト係数は、前記タスクを実行するために前記ロボットを用いる際に関わるコストを表す、決定するステップ(406)と、
マッチング能力を有する前記少なくとも2つのロボットから最小のコスト係数を有するロボットを前記ターゲットロボットとして選択するステップ(408)と、
を含む、処理するステップ(308)と、
前記少なくとも1つのターゲットロボットを用いて前記少なくとも1つのタスクを実行するステップ(310)と、
を含む、方法(300)。
【請求項2】
前記少なくとも1つのタスクを実行するための前記ロボットの前記コスト係数は、タスクのタイプ、前記タスクに関わる対象物のタイプ、前記対象物に対して実施される動作のタイプ、前記対象物が作られる材料のタイプ、前記ロボットのロケーションと前記対象物のロケーションとの間の距離、及びバッテリ消費量を含む、複数のパラメータに基づいて決定される、請求項
1に記載の方法(300)。
【請求項3】
少なくとも前記複数のタスク固有パラメータに関する情報を含む前記セマンティック知識
データベースは、前記ロボット群を形成する前記少なくとも2つのロボット間で分散される、請求項1に記載の方法(300)。
【請求項4】
前記セマンティック知識
データベースは、前記少なくとも2つのロボットのうちの少なくとも1つによって集められた1又は2以上のリアルタイムデータに基づいて動的に更新される、請求項
3に記載の方法(300)。
【請求項5】
タスク実行のためのロボット群(100)であって、該ロボット群(100)は、
少なくとも2つのロボット(101)を含み、該少なくとも2つのロボット(101)は、
前記ロボット群に割り当てられたタスクを集めること(302)と、
前記少なくとも2つのロボットの各々によって前記集めたタスクを処理することと、
によって前記ロボット群に割り当てられた前記タスクを実行するように協調し、
前記集めたタスクを処理することは、
前記タスクを実行するのに必要な複数のタスク固有パラメータを集めるために、独自のセマンティック知識データベースにクエリを行うこと(304)と、
前記タスク固有パラメータが前記独自のセマンティック知識データベースにおいて利用可能でない場合、前記少なくとも2つのロボットのうちの少なくとも1つの他のロボットのセマンティック知識データベースにクエリを行うこと(306)と、
前記複数のタスク固有パラメータに関するセマンティック情報を処理することであって、該処理
することは、前記ロボット群に割り当てられた前記タスクを実行するために前記少なくとも2つのロボットのうちの少なくとも1つをターゲットロボットとして識別することを含み、該ターゲットロボットは、a)前記少なくとも1つのタスクを処理する能力及びb)コスト係数に関する基準を満足
し、
前記ロボット群は、
前記集めたセマンティック情報に基づいて、前記少なくとも1つのタスクを実行するロボットに必要な能力を決定すること(402)と、
前記決定した能力を前記少なくとも2つのロボットの能力と比較することにより、マッチング能力を有する前記少なくとも2つのロボットのうちのすべてのロボットを識別すること(404)と、
前記マッチング能力を有するものとして識別された各ロボットについて前記コスト係数を決定することであって、ロボットの前記コスト係数は、前記タスクを実行するために前記ロボットを用いる際に関わるコストを表す、決定すること(406)と、
マッチング能力を有する前記少なくとも2つのロボットから最小のコスト係数を有するロボットを前記ターゲットロボットとして選択すること(408)と、
によって前記少なくとも1つのターゲットロボットを識別する、処理すること(308)と、
前記少なくとも1つのターゲットロボットを用いて前記タスクを実行すること(310)と、
を含む、ロボット群(100)。
【請求項6】
前記ロボット群は、タスクのタイプ、前記タスクに関わる対象物のタイプ、前記対象物に対して実施される動作のタイプ、前記対象物が作られる材料のタイプ、前記ロボットのロケーションと前記対象物のロケーションとの間の距離、及びバッテリ消費量を含む、複数のパラメータに基づいて、前記タスクに対する前記ロボットの各々の前記コスト係数を決定する、請求項
5に記載のロボット群(100)。
【請求項7】
少なくとも前記複数のタスク固有パラメータに関する情報を含む前記セマンティック知識
データベースは、前記ロボット群を形成する前記少なくとも2つのロボット間で分散される、請求項
5に記載のロボット群(100)。
【請求項8】
前記ロボット群は、前記ロボット群を形成する前記少なくとも2つのロボットのうちの少なくとも1つによって集められた1又は2以上のリアルタイムデータに基づいて、前記セマンティック知識
データベースを動的に更新する、請求項
7に記載のロボット群(100)。
【請求項9】
少なくとも1つの他のロボットと協調して少なくとも1つのタスクを実行するための第1のロボット(101)であって、該第1のロボット(101)は、
複数の命令を記憶するメモリモジュール(201)と、
1又は2以上の通信インタフェース(202)と、
構成モジュール(204)と、
コントローラモジュール(205)と、
クエリハンドラモジュール(206)と、
タスク割り当てモジュール(207)と、
タスク実行モジュール(208)と、
前記1又は2以上の通信インタフェース(202)を介して前記メモリモジュール(201)に結合された1又は2以上のハードウェアプロセッサ(203)と、
を含み、前記複数の命令によって、前記1又は2以上のハードウェアプロセッサ(203)に、
前記構成モジュールを用いて前記ロボットを始動
することと、
前記コントローラモジュールを用いて、前記少なくとも1つのタスクを処理する少なくとも1つの命令を集め
ることと、
前記コントローラモジュールを用いて、前記少なくとも1つのタスクを処理するのに必要な複数のタスク固有パラメータを決定
することと、
前記コントローラモジュールを用いて、前記複数のタスク固有パラメータの各々に関するセマンティック情報を前記第1のロボット及び前記少なくとも1つの他のロボットのうちのどのロボットが記憶するかを識別
することと、
前記メモリモジュールに記憶された独自のセマンティック知識ベースにクエリを行って前記複数のタスク固有パラメータの少なくとも一部に関するセマンティック情報を集めるために、前記クエリハンドラモジュールを用いて自己クエリをトリガ
することと、
前記少なくとも1つの他のロボットのセマンティック知識ベースにクエリを行って前記独自のセマンティック知識ベースに存在しない前記複数のタスク固有パラメータに関するセマンティック情報を集めるために、前記クエリハンドラモジュールを用いて前記少なくとも1つの他のロボットに対して外部クエリをトリガ
することと、
前記クエリハンドラモジュールを用いて、前記少なくとも1つの他のロボットから受け取ったクエリに応答して、前記独自のセマンティック知識ベースに記憶された前記セマンティック情報の少なくとも一部を前記少なくとも1つの他のロボットに提供
することと、
前記タスク割り当てモジュールを用いて、前記独自のセマンティック知識ベース及び前記少なくとも1つの他のロボットのセマンティック知識ベースからの前記複数のタスク固有パラメータに関する前記集められたセマンティック情報に基づいて、前記少なくとも1つのタスクの実行を処理するターゲットロボットを識別
することであって、
前記第1のロボットは、
前記集めたセマンティック情報に基づいて、前記少なくとも1つのタスクを実行するロボットに必要な能力を決定することと、
前記決定した能力を前記第1のロボット及び前記少なくとも1つの他のロボットの能力と比較することにより、マッチング能力を有する前記第1のロボット及び前記少なくとも1つの他のロボットのうちのすべてのロボットを識別することと、
前記マッチング能力を有するものとして識別された各ロボットについてコスト係数を決定することであって、ロボットの前記コスト係数は、前記タスクを実行するために前記ロボットを用いる際に関わるコストを表す、決定することと、
マッチング能力を有する前記第1のロボット及び前記少なくとも1つの他のロボットから最小のコスト係数を有するロボットを前記ターゲットロボットとして選択することと、
によって前記ターゲットロボットを識別する、識別することと、
前記タスク実行モジュールを用いて、前記第1のロボットが前記ターゲットロボットとして識別された場合に前記少なくとも1つのタスクを実行することと、
を行わせる、第1のロボット(101)。
【請求項10】
前記第1のロボットは、タスクのタイプ、前記タスクに関わる対象物のタイプ、前記対象物に対して実施される動作のタイプ、前記対象物が作られる材料のタイプ、前記ロボットのロケーションと前記対象物のロケーションとの間の距離、及びバッテリ消費量を含む複数のパラメータに基づいて、前記少なくとも1つのタスクに対する前記第1のロボット及び前記少なくとも1つの他のロボットの各々の前記コスト係数を決定する、請求項
9に記載の第1のロボット(101)。
【請求項11】
前記第1のロボットの前記独自のセマンティック知識ベースは、前記第1のロボット及び前記少なくとも1つの他のロボットの間で分散された分散セマンティック知識ベースの一部である、請求項
9に記載の第1のロボット(101)。
【請求項12】
前記第1のロボットは、前記複数のタスク固有パラメータのうちの少なくとも1つに関して集められた1又は2以上のリアルタイムデータに基づいて前記分散セマンティック知識ベースを動的に更新するように構成される、請求項
11に記載の第1のロボット(101)。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照及び優先権)
本出願は、2019年3月08日以前に出願されたインド国特許出願201921009192からの優先権を主張する。
(技術分野)
【0002】
本明細書の開示は、全体的に、ロボット工学に関し、より詳細には、分散セマンティック知識ベースを用いたロボットの群による協調的タスク実行(collaborated task execution)に関する。
【背景技術】
【0003】
ロボット工学及びオートメーションの分野の進歩と共に、ロボットは、様々な用途に関連して、異なるタイプのタスクを処理するのに、幅広く使用されている。例えば、ロボットは、在庫管理の処理、爆弾の拡散、自動監視などのために使用される。全てのこのような自動化用途では、ロボットは、ロボットに割り当てられるタスクの種々の態様に関する特定のデータを収集して、タスクを計画及び実行する必要がある。
【0004】
既存のシステムの大部分において、ロボットに対してデータを提供する集中データベースが使用される。帯域幅が制約されたシナリオでは、ロボットと集中データベースの間の接続は、安定ではない場合がある。ロボットが、クラウド上に収容できる必要なデータを集中データベースから取得しない場合、ロボットによって実施されているタスクの実行に影響を受ける可能性がある。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の実施形態は、本発明者らによって従来のシステムにおいて認識された上述の技術的問題の1又は2以上への解決策として技術的改良を提示する。例えば、1つの実施形態において、ロボットタスク実行のためのプロセッサによって実施される方法(processor-implemented method)が提供される。本方法において、ロボット群(robotic group)に割り当てられたタスクは、ロボット群を形成する2つのロボットによってフェッチされ、ロボット群は、該ロボット群に割り当てられた少なくとも1つのタスクを実行するために協調する(collaborating)前記少なくとも2つのロボットを含む。次いで、フェッチされた少なくとも1つのタスクは、少なくとも2つのロボットの各々によって処理される。このプロセスの間、各ロボットは、独自のセマンティック知識データベース(own semantic knowledge database)にクエリを行って(query)、少なくとも1つのタスクを実行するのに必要な複数のタスク固有パラメータを集める(gather)。各ロボットは更に、タスク固有パラメータがセマンティック知識データベースにおいて利用可能でない場合、少なくとも2つのロボットのうちの少なくとも1つの他のロボットのセマンティック知識データベースにクエリを行う。複数のタスク固有パラメータに関するセマンティック情報を全て集めた後、集められたセマンティック情報が処理され、その間、少なくとも2つのロボットのうちの少なくとも1つは、ロボット群に割り当てられた少なくとも1つのタスクを実行するためのターゲットロボットとして識別され、ターゲットロボットは、a)前記少なくとも1つのタスクを処理する能力及びb)コスト係数(cost factor)に関する基準を満足する。更に、ターゲットロボットは、少なくとも1つのターゲットロボットを用いて少なくとも1つのタスクを実行する。
【0006】
他の態様において、タスク実行のためのロボット群が提供される。ロボット群は、少なくとも2つのロボットを含み、少なくとも2つのロボットが、ロボット群に割り当てられたタスクを集めること(collecting)により、及び更に少なくとも2つのロボットの各々によって集められたタスクを処理することにより、ロボット群に割り当てられたタスクを実行するよう協調する。タスクの処理の間、各ロボットは、少なくとも1つのタスクを実行するのに必要とされる複数のタスク固有パラメータを集めるため、独自のセマンティック知識データベースにクエリを行う。各ロボットは更に、タスク固有パラメータが独自のセマンティック知識データベースにおいて利用可能でない場合、少なくとも2つのロボットのうちの少なくとも1つの他のロボットのセマンティック知識データベースにクエリを行う。複数のタスク固有パラメータに関するセマンティック情報を全て集めた後、集められたセマンティック情報が処理され、その間、少なくとも2つのロボットのうちの少なくとも1つは、ロボット群に割り当てられた少なくとも1つのタスクを実行するためのターゲットロボットとして識別され、ターゲットロボットは、a)少なくとも1つのタスクを処理する能力及びb)コスト係数に関する基準を満足する。更に、ターゲットロボットは、少なくとも1つのターゲットロボットを用いて少なくとも1つのタスクを実行する。
【0007】
更に別の態様において、少なくとも1つの他のロボットと協調して少なくとも1つのタスクを実行するための第1のロボットが提供される。第1のロボットは、複数の命令を記憶するメモリモジュールと、1又は2以上の通信インタフェースと、構成モジュールと、コントローラモジュールと、クエリハンドラモジュールと、タスク割り当てモジュールと、タスク実行モジュールと、1又は2以上の通信インタフェースを介してメモリモジュールに結合された1又は2以上のハードウェアプロセッサと、を含む。複数の命令によって、1又は2以上のハードウェアプロセッサに、少なくとも1つの他のロボットと協調してタスクの実行の一部として以下の動作を実施させる。構成モジュールを用いてロボットが始動される(initiated)。更に、少なくとも1つのタスクを処理する少なくとも1つの命令は、コントローラモジュールを用いて集められる(collected)。次いで、第1のロボットは、コントローラモジュールを用いて、少なくとも1つのタスクを処理するのに必要とされる複数のタスク固有パラメータを決定する。次に、第1のロボットは、コントローラモジュールを用いて、複数のタスク固有パラメータの各々に関するセマンティック情報を第1のロボット及び少なくとも1つの他のロボットのうちのどのロボットが記憶するかを識別する。次に、第1のロボットは、クエリハンドラモジュールを用いて自己クエリ(self query)をトリガして、メモリモジュールに記憶された独自のセマンティック知識ベースにクエリを行い、複数のタスク固有パラメータの少なくとも一部に関するセマンティック情報を集める。次いで、第1のロボットは、クエリハンドラモジュールを用いて少なくとも1つの他のロボットに対して外部クエリ(external query)をトリガして、少なくとも1つの他のロボットのセマンティック知識ベースにクエリを行って、独自のセマンティック知識ベースに存在しない複数のタスク固有パラメータに関するセマンティック情報を集める。第1のロボットは、クエリハンドラモジュールを用いて、少なくとも1つの他のロボットから受け取ったクエリに応答して、独自のセマンティック知識ベースに記憶されたセマンティック情報の少なくとも一部を少なくとも1つの他のロボットに提供する。第1のロボットは、タスク割り当てモジュールを用いて、独自のセマンティック知識ベース及び少なくとも1つの他のロボットのセマンティック知識ベースからの複数のタスク固有パラメータに関する集められたセマンティック情報に基づいて、少なくとも1つのタスクの実行を処理するためターゲットロボットを識別する。第1のロボットは、該第1のロボットがターゲットロボットとして識別された場合に、タスク実行モジュールを用いて、少なくとも1つのタスクを実行する。
【0008】
前述の概要及び以下の詳細な説明は何れも例証で説明のためのものであり、請求項に記載された本発明の実施形態の更なる説明を行うことを意図している点を理解されたい。
【0009】
本開示に組み込まれ且つその一部を構成する添付図面は、例示的な実施形態を例証しており、本明細書と共に本開示の原理を説明する役割を果たす。
【図面の簡単な説明】
【0010】
【
図1】本開示の一部の実施形態による、タスク実行のための分散セマンティック知識ベースを備えた例示的なロボット群を示すブロック図である。
【
図2】本開示の一部の実施形態による、ロボット群の一部であるロボットの構成要素を描いたブロック図である。
【
図3】本開示の一部の実施形態による、
図1のロボット群による、分散セマンティック知識ベースを用いたタスク実行を実施するプロセスに関するステップを示したフロー図である。
【
図4】本開示の一部の実施形態による、
図1のロボット群による、タスク実行のターゲットロボットとしてロボット群から少なくとも1つのロボットを識別するプロセスに関するステップを示したフロー図である。
【
図5a】本開示の一部の実施形態による、分散セマンティック知識ベースの例示的な構造を示す図である。
【
図5b】本開示の一部の実施形態による、ロボット群におけるロボットを互いにクエリを行う機構を示す図である。
【
図6a】本開示の一部の実施形態による、実験設定における、集中型知識ベースに優る分散型知識ベースの利点を示す異なるパラメータの値を示す例示的なグラフである。
【
図6b】本開示の一部の実施形態による、実験設定における、集中型知識ベースに優る分散型知識ベースの利点を示す異なるパラメータの値を示す例示的なグラフである。
【
図6c】本開示の一部の実施形態による、実験設定における、集中型知識ベースに優る分散型知識ベースの利点を示す異なるパラメータの値を示す例示的なグラフである。
【
図6d】本開示の一部の実施形態による、実験設定における、集中型知識ベースに優る分散型知識ベースの利点を示す異なるパラメータの値を示す例示的なグラフである。
【
図6e】本開示の一部の実施形態による、実験設定における、集中型知識ベースに優る分散型知識ベースの利点を示す異なるパラメータの値を示す例示的なグラフである。
【発明を実施するための形態】
【0011】
例示的な実施形態について、添付図面を参照して記載される。図中、参照番号の最上位桁(単数又は複数)は、当該参照番号が最初に現われる図を表している。好都合であれば、複数の図面を通じて同じ又は同様の部分を指すために同じ参照番号が用いられる。開示される原理の実施例及び特徴が本明細書に記載されるが、開示される実施形態の技術的思想及び範囲から逸脱することなく、変更、適応、及び他の実施構成が実施可能である。以下の詳細な記載は、例証に過ぎず、真の範囲及び思想は添付の特許請求の範囲によって示されることが意図される。
【0012】
ここで、図面全体を通じて同じ参照符号が一貫して対応する特徴を示す図面、より詳細には
図1~
図6eを参照すると、好ましい実施形態が示され、これらの実施形態は、以下の例示的なシステム及び/又は方法との関連において記載されている。
【0013】
図1は、本開示の一部の実施形態による、タスク実行のための分散セマンティック知識ベース(distributed semantic knowledge base)を備えた例示的なロボット群を示すブロック図である。ロボット群100は、該ロボット群100に割り当てられている1又は2以上のタスクを実行するよう協調する複数のロボット101(複数のロボット101のうちの1つは、ロボット101の能力/機能性を説明する目的で「第1のロボット」と呼ばれる)を含む。
図1は、4つのロボット101(101.a~101.d)を含むロボット群100を示す。しかしながら、あらゆる数のロボット101を用いて、ロボット群100を形成することができ、
図1は、ロボット群100を形成するロボット101の数に関する制約を意図するものではない。
【0014】
あらゆるタスクを実行するために、ロボットシステム100のロボット101は、「タスク固有パラメータ(task specific parameters)」と呼ばれるある情報を必要とする。例えば、ロボット群に割り当てられているタスクが対象物(object)をピックアップしていると考慮されたい。対象物をピックアップするタスクに対応するタスク固有パラメータは、対象物特定データ(object specific data)(対象物名、対象物のタイプ、対象物のサイズ、対象物の形状、対象物の色、対象物の重量、など)、ロケーション特定データ(location specific data)(ラック数、通路数、通路幅、対象物に近接した位置にいるロボット、など)、能力特定データ(capability specific data)(限定ではないが、把持部/吸着カップの存在などタスクを実行するのにロボットによって必要とされる能力、及びある重量を有する対象物を持ち上げる能力)を含むことができる。
【0015】
ロボット群100によって使用されている分散セマンティック知識ベースにおいて、タスク固有パラメータに関連するセマンティック情報(semantic information)は、ロボット群を形成するロボット101間で分散され、対象物特定データを記憶する対象物データベースは、1つのロボット(例えば、ロボット101.a)に記憶され、ロケーション特定データを記憶するロケーションデータベースは、別のロボット(例えば、ロボット101.b)に記憶され、所要の能力を記憶する能力データベースは、別のロボット(例えば、ロボット101.c)に記憶される。タスクがロボット群100によってフェッチされると、各ロボット101は、タスクを別個に処理し、その間に各ロボット101は、最初に、フェッチしたタスクを実行するのに必要とされる、フェッチされたタスクに対応する複数のタスク固有パラメータを識別する。タスク固有のパラメータは、対象物、ロケーション、及び能力に関連していると考慮されたい。分散セマンティック知識ベースの例示的な構造が、
図5aに与えられる。
図5aで分かるように、対象物、ロケーション、及び能力に関する種々の情報は、データベースのobject.owl(対象物.owl)、location.owl(ロケーション.owl)、及びcapability.owl(能力.owl)それぞれに記憶される。ロボット群100における各ロボット101は、関連するデータベースにて維持され、データベースに関する情報は、ロボット群100における各ロボット101により維持される。例えば、データベースは、対象物データベースがロボット101.aによって維持され、ロケーションデータベースがロボット101.bによって維持され、能力データベースは、ロボット101.cによって維持されることを指定している。
【0016】
ロボット群100における各ロボット101は、フェッチされたタスクを処理する。タスクの処理中、各ロボットは、自己クエリ及び複数の外部クエリをトリガして、タスク固有パラメータに関するセマンティック情報を集める(gather)/収集する(集める)(collect)。自己クエリは、ロボット101によってトリガされて、独自のセマンティック知識ベース(own semantic knowledge base)からセマンティック情報を集める。例えば、対象物データベースは、ロボット101.aによって維持され、該ロボット101.aは、自己クエリをトリガして、対象物関連のタスク固有パラメータに関するセマンティック情報を集める。同時に、ロボット101.b及び101.cは、ロボット101.aに対して別個の外部クエリをトリガし、対象物関連のタスク固有パラメータに関するセマンティック情報を集める。同様に、ロボット101の各々は、自己クエリ又は外部クエリをトリガして、ロケーション及び能力に関するセマンティック情報を集める。この機構は、
図5bに示されている。自己クエリ又は外部クエリをトリガすることにより、各ロボット101は、タスク固有パラメータの全てに関するセマンティック情報を集める。
【0017】
次いで、各ロボット101は、集められたセマンティック情報を処理して、少なくとも1つのタスクを実行するためのターゲットロボットとしてロボット101のうちの少なくとも1つを識別する。種々の実施形態において、ロボット101は、少なくとも2つの条件、すなわち、
a)少なくとも1つのタスクを実行する能力、
b)タスク実行のためロボットを使用/利用するのに伴うコスト係数、
に基づいてターゲットロボットとして識別される。ロボット101は、タスクを実行するために幾つかの特定の能力を必要とする。必要とされるこの能力は、タスク毎に異なる可能性がある。少なくとも1つのタスクを実行するために必要とされる能力は、ロボット群100における各ロボット101のメモリモジュール101で予め構成又は動的に構成することができる。各ロボット101は、少なくとも1つのタスクの能力要件をロボット101の各ロボットの能力と比較して、ロボット101の少なくとも1つをマッチング/所要能力(matching/required capabilities)を有するものとして識別することができる。必要とされる能力を有する1又は2以上のロボット101を識別した後、対応するコスト係数が、マッチング/所要能力を有するロボット101の各々について計算される。コスト係数は、ロボット-タスクペアについて計算されて、タスクを実行するためロボット101を使用/配備する際に生じるコストを表す。タスクに対するロボット101の各々のコスト係数は、限定ではないが、タスクのタイプ、タスクに関わる対象物のタイプ、対象物に対して実施される動作のタイプ、対象物が作られる材料のタイプ、ロボットのロケーションと対象物のロケーションとの間の距離、及びバッテリ消費量など、複数のパラメータに基づいて計算される。ロボット101によりあらゆる好適な計算機構を使用して、コスト係数を計算することができる。ロボット101についての高いコスト係数値は、当該特定のロボット101を配備するのに関わるコストが比較的高い(マッチング/所要能力を有するものとして識別されたロボット群100における他のロボット101のコスト係数値と比較して)ことを示している。同様にして、ロボット101についての低いコスト係数値は、当該特定のロボット101を配備するのに関わるコストが比較的低い(マッチング/所要能力を有するものとして識別されたロボット群100における他のロボット101のコスト係数値と比較して)ことを示している。
【0018】
次いで、ターゲットロボットとして識別されるロボット101は、ロボット群に割り当てられた少なくとも1つのタスクを実行する。ターゲットロボットは、少なくとも1つのタスクを実行するために必要な機能に相当する必要なソフトウェア及び/又はハードウェア手段を備えることができる。タスク実行相の間、ターゲットロボットは、少なくとも1つのロケーションに到達して少なくとも1つのタスクを実行するように、ターゲットロボットの経路を計画する何れかの好適な機構/手法を用いることができる。
【0019】
図2は、本開示の一部の実施形態による、ロボット群の一部であるロボットの構成要素を描いたブロック図である。ロボット群100における各ロボット101は、少なくとも1つのメモリモジュール201、少なくとも1つの通信インタフェース202、1又は2以上のハードウェアプロセッサ203、構成モジュール204、コントローラモジュール205、クエリハンドラモジュール206、タスク割り当てモジュール207、及びタスク実行モジュール208を含む。
【0020】
少なくとも1つのメモリモジュール201は、1又は2以上のハードウェアプロセッサ203に動作可能に結合される。ハードウェアプロセッサである1又は2以上のハードウェアプロセッサ203は、1又は2以上のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、状態機械、グラフィックコントローラ、論理回路、及び/又は動作命令に基づいて信号を操作する任意のデバイスとして実装する(implemented)ことができる。他の能力の中でも、1又は複数のプロセッサは、メモリ102に記憶されたコンピュータ可読命令をフェッチして実行するように構成される。1つの実施形態において、システム100は、例えば、ラップトップコンピュータ、ノートブック、ハンドへルドデバイス、ワークステーション、メインフレームコンピュータ、サーバ、ネットワーククラウド及び同様のものなど、様々なコンピューティングシステムに実装することができる。
【0021】
通信インタフェース202は、様々なソフトウェア及びハードウェアインタフェース、例えば、ウェブインタフェース、グラフィカルユーザインタフェース、及び同様のものを含むことができ、有線ネットワーク(例えば、LAN、ケーブルなど)及びWLAN、セルラ、又は衛星のような無線ネットワークを含めて、多種多様なネットワークN/W及びプロトコルタイプ内の複数の通信を容易にすることができる。1つの実施形態において、1又は複数のI/Oインタフェースデバイスは、幾つかのデバイスを互いに又は別のサーバに接続するための1又は2以上のポートを含むことができる。
【0022】
1又は複数のメモリモジュール201は、例えば、スタティックランダムアクセスメモリ(SRAM)及びダイナミックランダムアクセスメモリ(DRAM)のような揮発性メモリ、及び/又はリードオンリメモリ(ROM)、消去可能プログラマブルROM、フラッシュメモリ、ハードディスク、光ディスク、並びに磁気テープのような不揮発性メモリを含めて、当技術分野で公知の任意のコンピュータ可読媒体を含むことができる。1つの実施形態において、ロボット101の1又は2以上のモジュール(図示せず)は、1又は複数のメモリモジュール201内に記憶することができる。メモリモジュール201は更に、1又は2以上のタスク固有パラメータに関するセマンティック情報を記憶するように構成され、1又は2以上のタスクを実行するのに必要とされるタスク固有情報を記憶したセマンティック知識ベースが、ロボット群を形成する様々なロボット101のメモリモジュール201間で分散される。1つの実施形態において、セマンティック知識ベースの内容は、ロボット群100における少なくとも1つのロボット101によって収集されたリアルタイム情報に基づいて動的に更新される。
【0023】
構成モジュール204は、新しいタスクがロボット群100に割り当てられるたびに、ロボット101を初期設定する。このプロセスの間、構成モジュール204は、限定ではないが、ネットワークip、ファイルパス、及びマップ内のロボット101の初期ロケーションなどのデータを構成ファイルから読み込むことができる。
【0024】
コントローラモジュール205は、ロボット101のモジュールの他のモジュールと通信して、ロボット群100によって実施されているタスク実行の種々の段階の間、モジュール間の通信を同期及び協調するよう構成される。コントローラモジュール205は、ロボット群100に割り当てられている新しいタスクを収集し、収集した新しいタスクを処理することによって、タスクの未知のパラメータ(ここで未知のパラメータは、コントローラモジュール205がその一部であるロボットにとって未知であるタスク固有パラメータを意味する)を抽出するよう構成することができる。次いで、コントローラモジュール205は、必要なクエリを生起するようクエリハンドラモジュール206に通知する。コントローラモジュール205は更に、クエリハンドラモジュール206からの応答を収集して、タスク実行モジュール208に通知して、タスクを実行させることができる。
【0025】
クエリハンドラモジュール206は、自己クエリ及び外部クエリをトリガして、タスク固有パラメータに関するセマンティック情報を集める/収集するように構成される。
【0026】
タスク割り当てモジュール207は、ロボットの能力及びコスト係数情報に基づいて、少なくとも1つのターゲットロボットを識別するよう構成される。タスク割り当てモジュール207は、各ロボット-タスクペアについてのコスト係数を計算するよう構成される。
【0027】
タスク実行モジュール208は、適切なソフトウェア及びハードウェア能力を有するターゲットロボットを使用して、クエリハンドラモジュール206によって収集されたセマンティック情報に基づき、ロボット群100に割り当てられた少なくとも1つのタスクを実行するよう構成される。
【0028】
図3は、本開示の一部の実施形態による、
図1のロボット群による、分散セマンティック知識ベースを用いたタスク実行を実施するプロセスに関するステップを示したフロー図である。本方法において、ロボット群100は、該ロボット群100に割り当てられている少なくとも1つのタスクをフェッチする(fetch)(302)。ロボット群100の各ロボット101は、自己クエリ又は1又は2以上の外部クエリをトリガ(304&306)して、
図1の記載に関して詳細に説明するように種々のタスク固有パラメータに関するセマンティック情報を集める。複数のタスク固有パラメータに関するセマンティック情報を集めた後、各ロボット101は、集められた情報を処理してロボット101のうちの少なくとも1つをターゲットロボットとして識別する(308)。更に、ロボット群100に割り当てられた少なくとも1つのタスクは、1又は2以上のターゲットロボットによって実行される。
【0029】
図4は、本開示の一部の実施形態による、
図1のロボット群による、タスク実行のターゲットロボットとしてロボット群から少なくとも1つのロボットを識別するプロセスに関するステップを示したフロー図である。ターゲットロボットを識別するために、ロボット群100における各ロボット101は、集められたセマンティック情報を処理して、少なくとも1つのタスクを実行するのに必要なロボット能力を識別する(402)。各ロボット101は、決定された能力を有する全てのロボットを決定する。決定された能力を有するとして識別されたロボット101の各々について、各ロボット101は、コスト係数を決定(406)し、決定された能力を有するとして識別された全てのロボット101のうち最小のコスト係数を有する1つのロボットをターゲットロボットとして選択する(408)。
【0030】
(タスク固有パラメータに関するセマンティック情報の収集の実施例)
タスク固有パラメータに関するセマンティック情報を収集するための自己クエリ及び外部クエリのトリガは、
図5a及び
図5bを参照することにより説明される。3つのロボット101.a,101.b及び101.cを含むロボット群100に割り当てられたタスクは、対象物X(この実施例ではグッチのバッグである)をピックアップしている点を考慮されたい。この事象では、タスク(すなわち、グッチのバッグをピックアップすること)を実行するロボット101.a,101.b及び101.cについて、対象物、ロケーション及び能力に関するデータは、必要とされるタスク固有パラメータである。対象物に関するセマンティック情報を記憶するセマンティック知識ベース(object.owl)は、ロボット101.aに記憶され、ロケーションに関するセマンティック情報を記憶するセマンティック知識ベース(Location.owl)は、ロボット101.bに記憶され、能力に関連するセマンティック情報を記憶するセマンティック知識ベース(Capability.owl)は、ロボット101.cに記憶される。セマンティック情報を集める際の様々なステップが、以下で与えられる。
【0031】
ステップ1:タスク「グッチバッグをピックアップする」は、ロボット101.a,101.b及び101.cの各々のコントローラモジュール205によって処理される。ロボット101の各々のコントローラモジュール205は、クエリをトリガする命令を対応するクエリハンドラモジュール206に送る。ステップ1において、トリガされたクエリは、割り当てられたタスクに関連する1又は2以上の対象物に関する情報がデータベースobject.owlに存在するかどうかをチェックする。従って、ロボット101.bのクエリハンドラモジュール206は、自己クエリをトリガし、ロボットロボット101.a及びロボット101.cは、1又は2以上の外部クエリをトリガする。ステップ1にてトリガされたクエリが、何らかの結果をもたらさない場合、1又は2以上の対象物に関する情報がobject.owlデータベースに存在しないことを意味し、その場合は、ロボット101.a,101.b及び101.cが割り当てられたタスクをスキップし、パイプラインにおいて次のタスク(もしあれば)をピックアップすることができる。ステップ1において対象物の特定のデータが得られた場合、ステップ2が実行される。
【0032】
ステップ2:ステップ2において、ロボット101.a,101.b及び101.cの各々がクエリをトリガし、ロケーションに関するセマンティック情報を収集する。ロボット101.aは、データベースlocation.owlを維持している。従って、ロボット101.aのクエリハンドラモジュール206は、自己クエリをトリガして、1又は2以上の対象物に関するセマンティック情報を集め/収集し、他方、ロボット101.b及び101.cは、1又は2以上の外部クエリ(ロボット101.aに対して)をトリガし、1又は2以上の対象物に関するセマンティック情報を集める。ロケーションデータは、座標形式で得ることができる。
【0033】
ステップ3:ステップ1において、トリガされたクエリは、トリガされたタスクにおいて1又は2以上の対象物に関する情報を収集することを考慮されたい。ロボット101.bは、データベースobject.owlを維持している。従って、ロボット101.bのクエリハンドラモジュール206は、自己クエリをトリガして、1又は2以上の対象物に関するセマンティック情報を集め/収集し、他方、ロボット101.a及び101.cは、1又は2以上の外部クエリ(ロボット101.bに対して)をトリガして、1又は2以上の対象物に関するセマンティック情報を集める。このステップにおいて、限定ではないが、対象物のサイズ、対象物をピックアップする方法、対象物の形状、及び1又は2以上の対象物に関して壊れ物であるかどうかなどの情報が収集される。
【0034】
ロボット101.a,101.b及び101.cの各々は、クエリをトリガして、能力、すなわち、1又は2以上のタスクを実行するのに必要な能力に関するセマンティック情報を収集し、割り当てられたタスクを実行するターゲットロボットを識別する。ロボット101.cは、データベースcapability.owlを維持している。従って、ロボット101.cのクエリハンドラモジュール206は、自己クエリをトリガして、1又は2以上の能力に関するセマンティック情報を集め/収集し、他方、ロボット101.a及び101.bは、1又は2以上の外部クエリ(ロボット101.cに対して)をトリガして、1又は2以上の能力に関するセマンティック情報を集める。
【0035】
(実験データ)
実験装置は、集中セマンティック知識ベースに対する分散セマンティック知識ベースの性能を比較することを意図して本明細書で記載されている。実験装置は、以下のように設計された。
・それぞれ3、6及び9台のロボットから構成される3つのロボット群(R1,R2,R3)が必要される。
・5つのタスクグループ(T1、T2、T3、T4、T5)が作成され、それぞれ対象物をピックアップする5、10、20、40、80のタスクから構成される。
・各ロボット群は、全てのタスクグループにおけるタスクを実施し、すなわち、各Ri,iε{1,2,3}が、Tj,jε{1,2,3,4,5}を実施した。
・各{Ri,Tj}ペアは、それぞれ35kbps、128kbps、256kbps、512kbpsの値を有する4つの異なるネットワーク帯域幅Bk、kε{1、2、3、4}に対して試験した。
・{Ri,Tj,Bk}の各々は、それぞれ2%、5%、10%、15%、20%の値を有する異なるネットワーク損失条件Lp,pε{1,2,3,4,5}下で試験した。
【0036】
上述したように、全てのこれらの試験は、様々なパラメータを全て使用して実行され、知識ベース全体が1つのリモートクラウドに記憶されている。
【0037】
分散バージョンと集中バージョンの比較は、タスクを完了するまでの時間と、ネットワークを介して交換された合計バイト数の観点で記録される。
【0038】
この試験は、特に帯域幅が不十分な条件の下での性能を評価するために実施された。従って、ネットワークの帯域幅は、帯域幅が不十分な条件を確保するために、GPRS(35KBps)、EDGE(135KBps)などのセルラネットワーク帯域幅の範囲内にあるように選択した。実験中に行われた仮定の一部は以下の通り。
・タスクは外部ソースからロボット群に順次的にトリガされる。
・ロボットネットワーク内の各ロボットは、ロボット群内の他の各ロボットと共にどのような知識ベースが存在するかを認知している。
【0039】
(実験装置)
実験は、5つのタスクシナリオで、それぞれ1GBのRAMを備えた3つのカスタムメイドのR-Piロボットを使用して実施した。しかしながら、後の段階では、3台より多いロボットで性能を試験するために、仮想マシン(VM)を使用してより多くのロボットがシミュレーションされ、各々が900MBのROMしか有していなかった。実際のロボットを表すこれらのVMは、内部ネットワークを介して相互に通信する。NetEmユーティリティは、このネットワークの様々な帯域幅及び損失条件を構成するのに使用されている。Wiresharkは、ネットワークトラフィック及び遅延を取り込むのに使用される。各VMは、ロボットエージェントの実行中のインスタンスを有し、クライアント/サーバモードを介して相互に通信する。
【0040】
(実験結果)
実験中に、集中システムと分散システムの性能について、35Kbpsの帯域幅で5つのタスクにおいて交換されたバイトの合計数で比較した。ネットワーク損失(%単位)は様々であり、ネットワーク経由で交換されたバイト数は、3、6、及び9台のロボットについて記録される。得られた結果は、分散システムにおいてネットワークトラフィック(すなわち、交換されたバイト数)は、集中システムと比べて、ネットワーク損失が2%の場合に42%近く減少し、ネットワーク損失が20%に増加してもそれほど変化しない。従って、分散システムには利点がある。他の帯域幅についても同様の挙動が観測される。このことが、
図6aに描かれている。
【0041】
更に、結果から、35Kbpsシナリオの場合、ロボットの数が増加すると(3から6から9へ)、ネットワークトラフィックは、何れの場合も約1%減少することが観察されている。これは
図6bに描かれている。他の全てのネットワーク帯域幅について同じ挙動が観測され、すなわち、チームサイズ(ロボットの数)が増加した場合、ネットワークトラフィックが減少し、タスクの数とネットワーク損失は変化しないままである。
【0042】
実験装置において、N個のタスクは、ロボット群に順次的にはプッシュされず、代わりに、N個のタスクが2つの等しいセット(6台のロボットの場合)又は3つの等しいセット(9台のロボットの場合)に分割され、このような各タスクセットを3台のロボットのクラスターにプッシュして並列処理をした。従って、9台のロボットの場合、N個のタスクは、ロボットの3つのクラスターによって並列に処理され、各クラスターはN/3タスクを効果的に処理し、一方、6台のロボットの場合、各クラスターは、N/2タスクを処理し、3台のロボットの場合、単一のクラスターがN個のタスク全てを処理する。交換されるバイトの数は、ロボットによって行われたクエリの数に正比例し、これもまたロボットが処理するタスクの数に比例し、ロボットの数の減少に伴ってネットワークトラフィックが僅かに増大したのが観測された。
【0043】
実験中に、異なるタスクのセットと異なるネットワーク損失条件においてネットワーク上で交換されたバイトの総数に対する分散及び集中システムにおけるネットワークトラフィック上のタスクの数の増加の影響は、帯域幅を35kbpsに固定し、ロボットは3台だけにすることによって評価された。タスクの数が指数関数的に増加するにつれて(すなわち、5、10、20、40、80)、各ロボットの知識ベースに関連するクエリの数も増加するので、これにより多くのネットワークトラフィックが発生することが観測された。結果は、分散システムが各タスクセットに対してより良好に実施することを示した。他の3つの帯域幅についても同じ比較が行われ、同様の傾向が観測された。これは、
図6cに描かれている。
【0044】
更に実験中、タスクの数を変化させることにより、集中システムと分散システムとの間でネットワークを介して交換されるバイト数の相違の傾向が確認された。結果は、所与のネットワーク条件(帯域幅353Kbps及び損失2%)において、集中システムにおいて交換されたバイトは、タスク数の増加に伴って指数関数的に増加し、すなわち、より多くのタスクが入ってくると、集中システムは分散システムと比べてより多くのネットワークバイトを消費することを示した。理由:各タスクがQ個のクエリを生成し、そのうちの2つのクエリ(平均で)が内部で解決された場合(分散システムの場合)、N個のタスクの場合、N*(Q-2)クエリがネットワークで実行される。しかしながら、集中システムの場合、N*Q個のクエリがネットワークで実行される。この差(2N)は、Nが増大するほど大きくなり、ネットワークトラフィックの差が大きくなる。一方、ロボットの数が増大した場合でも、所与のセットのタスクにおいて、ネットワークトラフィックに大きな変化はない。これは、
図6dに描かれている。
【0045】
更に、様々なタスクのセットと様々なネットワーク損失条件において、35kbps及び3台のロボットのシナリオについて、分散及び集中ネットワークのタスク完了時間を確認した。結果は、分散システムが集中システムよりも優れていることを示している。ネットワーク損失が増加すると、所与のタスクセットについてタスク完了時間も増加する。ネットワークが低帯域幅から高帯域幅に移行するにつれて、タスク完了時間の対応する減少が観測された。また、ロボットの全てのセットについて、タスクの完了時間の差は、少数のタスクでは大きくないが、タスクの数が増加すると、対応するタスク完了時間の差が大きくなり、これは、タスクの数が増えると、集中システムの性能が悪化することを意味する。
【0046】
35Kbpsのネットワーク帯域幅についての分散システムにおける異なるネットワーク損失条件下での異なる数のタスクに対して、ロボットの異なるセット(すなわち、3、6、9)間のタスク完了時間の比較が実行された。これは、
図6eに描かれている。他の3つの帯域幅についても同じ比較を行った。4つの帯域幅の全ての事例において、タスクの数が増加すると、タスクの完了時間も増加することが観測された。しかしながら、所与のタスクセットに対してロボットの数が増大すると、タスクの完了時間が短縮される。所与の数のタスクについて、ネットワークの損失が増加すると、タスクの完了時間も緩慢に増加する。
【0047】
本明細書は、当業者が本発明の実施形態を実施及び利用できるように、本明細書で主題を記載している。本主題の実施形態の範囲は、請求項によって定められ、当業者であれば想起される他の修正形態を含むことができる。他のこのような修正形態は、請求項の文言と相違しない同様の要素を有する場合、又は請求項の文言と僅かな差異を有する均等な要素を含む場合には、請求項の範囲内にあるものとする。
【0048】
本明細書における本開示の実施形態は、ロボット環境におけるロボット間の協調に関する未だ解決されていない問題に取り組んでいる。従って、本実施形態は、分散セマンティック知識ベースを提供し、ここで分散セマンティック知識ベースは、ロボット群を形成する複数のロボット間で分散される。更に、本明細書の実施形態は更に、タスクを実行する目的で情報を交換するロボットの機構を提供する。
【0049】
本特許の保護範囲は、このようなプログラムにまで、及びこれに加えてメッセージを内部に有するコンピュータ可読手段にまで拡張され、かかるコンピュータ可読記憶手段は、プログラムがサーバ又はモバイルデバイス上で又は何れかの好適なプログラマブルデバイス上で実行されたときに、本方法の1又は2以上のステップを実装するためのプログラムコード手段を含む点に留意されたい。ハードウェアデバイスは、例えば、サーバ又はパーソナルコンピュータ又は同様のもの、もしくはこれらの組み合わせのような何れかの種類のコンピュータを含む、プログラムすることができる何れかの種類のデバイスとすることができる。デバイスはまた、例えば、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのハードウェア手段、又は、例えば、ASIC及びFPGA、又はソフトウェアモジュールが配置された少なくとも1つのマイクロプロセッサ及び少なくとも1つのメモリなどのハードウェアとソフトウェアの組み合わせとすることができる手段を含むことができる。従って、本手段は、ハードウェア手段とソフトウェア手段の両方を含むことができる。本明細書で記載される方法の実施形態は、ハードウェア及びソフトウェアにおいて実装することができる。デバイスはまた、ソフトウェア手段を含むことができる。代替として、本実施形態は、例えば、複数のCPUを用いて、様々なハードウェアデバイス上で実装することができる。
【0050】
本明細書の実施形態は、ハードウェア要素とソフトウェア要素とを含むことができる。ソフトウェアにて実装される実施形態は、限定ではないが、ファームウェア、常駐ソフトウェア、マイクロコード、その他を含む。本明細書で記載された種々のモジュールによって実施される機能は、他のモジュール又は他のモジュールの組み合わせにおいて実装することができる。本明細書において、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスによって又はこれらと接続して使用されるプログラムを包含、記憶、通信、伝搬、又は伝送することができる何らかの装置とすることができる。
【0051】
例示されるステップは、図示の例示的な実施形態を説明するために提示され、進行中の技術開発が、特定の機能が実施される方式を変化させるであろうことは理解されたい。これらの実施例は、本明細書では限定ではなく説明の目的で提示されている。更に、説明の便宜上、本明細書では機能的構成単位の境界が任意に定義された。指定される機能及びそれらの関係が適切に行われる限り、代替の境界を定義することができる。(本明細書に記載されるものの等価物、拡張、変形、逸脱などを含む)別の代替手段は、本明細書に含まれる教示に基づいて当業者には明らかであろう。かかる代替手段は、開示される実施形態の範囲及び技術的思想の範囲内にある。更に、単語「含む(comprising)」、「有する(having)」、「含む(containing)」及び「含む(including)」並びに他の同様の語形は、意味が等しいことが意図され、これらの単語の何れかに続く単数又は複数の項目が単数又は複数のかかる項目の網羅的なリストであることを意味せず、リストされた単数又は複数の項目のみに限定されることも意味しないという点で非限定的であることが意図される。同様に、本明細書及び添付の特許請求の範囲において、文脈が明らかに別のことを指示しない限り、単数形「1つの(a)」、「1つの(an)」、及び「前記(the)」が複数の参照を含むことも留意しなくてはならない。
【0052】
更に、本開示に適合する実施形態を実装する際に、1又は2以上のコンピュータ可読記憶媒体を利用することができる。コンピュータ可読記憶媒体は、プロセッサによって可読な情報又はデータを記憶することができる何れかのタイプの物理メモリを指す。従って、コンピュータ可読記憶媒体は、本明細書に記載される実施形態に適合するステップ又は段階をプロセッサ(単数又は複数)に行わせるための命令を含む、1又は2以上のプロセッサによる実行のための命令を記憶することができる。用語「コンピュータ可読媒体」は、有形の品目を含み、搬送波及び過渡信号を除く、すなわち非一時的であると理解されるべきである。実施例は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、揮発性メモリ、不揮発性メモリ、ハードドライブ、CD ROM、DVD、フラッシュドライブ、ディスク及びその他の既知の物理記憶媒体を含む。
【0053】
本開示及び実施例は、単に例示的なものとみなされ、開示される実施形態の真の範囲及び精神は、添付の特許請求の範囲によって示される。