以下、本発明の実施形態について、図面を参照して説明する。
なお、以下の実施形態において、説明の便宜上必要があるときは、複数のセクションまたは実施例に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、詳細説明、または補足説明などの関係にある。
また、以下の実施例において、要素の数など(個数、数値、量及び範囲を含む)に言及する場合、特に明示した場合及び原理的に明らかに特定の数に限定される場合などを除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよいものとする。
さらに、以下の実施例において、その構成要素(要素ステップなどを含む)は、特に明示した場合及び原理的に明らかに必須であると考えられる場合などを除き、必ずしも必須のものではないことは言うまでもない。
本発明の一実施形態に係る自律移動可能な情報処理装置を制御する制御装置は、前記情報処理装置の位置に関する情報である第1の情報と、前記情報処理装置の通信に関する情報である第2の情報とを取得し、前記第1の情報及び前記第2の情報を用いて通信品質の分布を示す通信品質情報を作成する通信品質情報生成部と、前記通信品質情報に基づいて、前記情報処理装置の移動範囲を制御する移動制御部と、を有する。
前記通信品質情報生成部は、さらに、前記情報処理装置が実行中の機能の通信に関する情報である第3の情報を取得し、前記移動制御部は、前記第3の情報を用いて、前記情報処理装置の移動範囲を制御してもよい。
前記第1の情報及び前記第2の情報に基づく前記情報処理装置の現在位置の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記移動制御部は、前記情報処理装置へ移動命令を送信してもよい。
前記制御装置は、第1の通信手段で前記情報処理装置と通信を行う第1の通信インタフェースと、第2の通信手段で前記情報処理装置と通信を行う第2の通信インタフェースと、をさらに備えてもよい。前記第2の情報は、前記第1の通信インタフェースを用いて前記第1の通信手段で前記情報処理装置と行った通信の通信品質に関する情報でよい。前記情報処理装置の現在位置の前記第1の通信手段の通信品質が前記情報処理装置に要求される通信品質を下回る場合、又は前記情報処理装置への移動命令情報を取得し、前記移動命令による移動先の位置の前記第1の通信手段の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記制御装置は、前記第1の通信インタフェース及び前記第2の通信インタフェースを用いて前記情報処理装置と通信を行ってもよい。
前記情報処理装置の現在位置の前記第1の通信手段の通信品質が前記情報処理装置に要求される通信品質を下回る場合、又は前記情報処理装置への移動命令情報を取得し、前記移動命令による移動先の位置の前記第1の通信手段の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記制御装置は、前記情報処理装置が実行中の第1の機能を停止させ、前記第1の機能の代替機能である第2の機能を実行させる機能切替処理部をさらに有してもよい。
前記情報処理装置の現在位置の前記第1の通信手段の通信品質が前記情報処理装置に要求される通信品質を下回る場合、又は前記情報処理装置への移動命令情報を取得し、前記移動命令による移動先の位置の前記第1の通信手段の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記制御装置は、前記情報処理装置が実行する機能のうち少なくとも一つ以上の機能に関する通信量を抑制する通信制御部をさらに有してもよい。
前記第1の情報及び前記第2の情報に基づく前記情報処理装置の現在位置の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記制御装置は、前記情報処理装置の形状又は向きを変更する命令を送信する状態管理部をさらに備えてもよい。
前記通信品質情報生成部は、前記第1の情報及び前記第2の情報に基づく前記情報処理装置の現在位置の通信品質と前記通信品質情報との比較結果に基づいて、前記通信品質情報を更新してもよい。
本発明の一実施形態に係る制御システムは、自律移動可能な情報処理装置と、前記情報処理装置を制御する制御装置とを有する。前記制御装置は、前記情報処理装置から、前記情報処理装置の位置に関する情報である第1の情報と、前記情報処理装置の通信に関する情報である第2の情報とを取得し、前記第1の情報及び前記第2の情報を用いて、前記制御装置と前記情報処理装置との通信品質の分布を示す通信品質情報を作成する通信品質情報生成部と、前記通信品質情報に基づいて、前記情報処理装置の移動範囲を制御する移動制御部と、を有してもよい。
前記通信品質情報生成部は、さらに、前記情報処理装置が実行中の機能の通信に関する情報である第3の情報を取得し、前記移動制御部は、前記第3の情報を用いて、前記情報処理装置の移動範囲を制御してもよい。
本発明の一実施形態に係る自律移動可能な情報処理装置は、前記情報処理装置の位置に関する情報である第1の情報、及び前記情報処理装置の通信に関する情報である第2の情報を用いて作成された通信品質の分布を示す通信品質情報と、前記情報処理装置の現在位置とに基づいて、移動制御を行う位置管理部を、有してもよい。
前記位置管理部は、前記通信品質情報と前記情報処理装置が実行中の機能とに基づいて、前記情報処理装置の移動制御を行ってもよい。
前記自律移動可能な情報処理装置の位置情報が、前記通信品質情報と前記情報処理装置が実行中の機能とに基づいて定まる前記情報処理装置の移動許可範囲外であった場合、前記位置管理部は、前記情報処理装置を前記移動許可範囲内へ移動させるようにしてもよい。
前記自律移動可能な情報処理装置が、第1の通信手段で通信を行う第1の通信インタフェースと、第2の通信手段で通信を行う第2の通信インタフェースと、をさらに備えてもよい。前記第2の情報は、前記第1の通信インタフェースを用いて前記第1の通信手段で行った通信の通信品質に関する情報でよい。前記情報処理装置の現在位置が、前記通信品質情報と前記情報処理装置が実行中の機能とに基づいて定まる前記情報処理装置の移動許可範囲外であった場合、又は前記第1の情報及び前記第2の情報に基づく前記情報処理装置の現在位置の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記情報処理装置は、前記第1の通信インタフェース及び前記第2の通信インタフェースを用いて通信を行ってもよい。
前記情報処理装置の現在位置が、前記通信品質情報と前記情報処理装置が実行中の機能とに基づいて定まる前記情報処理装置の移動許可範囲外であった場合、又は前記第1の情報及び前記第2の情報に基づく前記情報処理装置の現在位置の通信品質が前記情報処理装置に要求される通信品質を下回る場合、前記情報処理装置が実行中の第1の機能を停止し、前記第1の機能の代替機能である第2の機能を実行してもよい。
<実施例1>
図1は、実施例1のロボット管理システムの構成の例を示す図である。実施例1のロボット管理システムは、自律移動可能な情報処理装置であるロボット101と、制御サーバ110と、アプリケーションサーバ111とを有する。
ロボット101と制御サーバ110とは無線通信により接続される。ロボット101と制御サーバ110とを接続する通信手段は、例えば無線LAN(Local Area Network)104、短距離無線106及び移動体通信網107である。
ロボット101と制御サーバ110とが無線LAN104により接続される場合は、無線LAN AP(Access Point)を介して接続される。
ロボット101と制御サーバ110とが短距離無線106により接続される場合は、ロボット101と制御サーバ110とがそれぞれ持つ短距離無線I/F(インタフェース)が直接通信を行う。
ロボット101と制御サーバ110とが移動体通信網107により接続される場合は、基地局装置108及びインターネット109を介して接続される。
制御サーバ110は、ロボット101との通信情報を用いて、通信品質情報を計測する。通信品質とは、ロボット毎の通信品質であり、制御サーバ110とロボット101との間の上り方向の受信品質、又は下り方向の受信品質を示す指標である。
また、制御サーバ110は、ロボット101が計測したロボット101の現在位置を示す位置情報を取得する。位置情報は、例えば絶対位置でもよいし、ロボット101の移動が認められる最大移動範囲1010内の相対位置でもよい。制御サーバ110は、ロボット101の位置情報と、通信品質情報を用いて、最大移動範囲1010内にロボット101が移動可能な範囲である移動許可範囲103と、ロボット101が侵入不可な範囲である非移動許可範囲102を設定してもよい。
アプリケーションサーバ111は、ロボット101にアプリケーションを実行させるためのサーバであり、移動命令を制御サーバ110を介してロボット101に送信する。
一つの制御サーバ110が複数のロボット101を収容してもよいし、複数の制御サーバ110が一つのロボット101を収容してもよい。
図2は、制御サーバ110の構成の例を示す図である。
制御サーバ110は、メモリ201と、CPU(Central Processing Unit)202と、I/O(入出力インタフェース)203と、補助記憶装置204と、無線LAN I/F205と、短距離無線I/F206と、移動体通信網I/F207とを有する。以下に説明する制御サーバ110が行う処理は、CPU202が、補助記憶装置204に格納されたコンピュータプログラム(ソフトウェア)を読み出して、メモリ201上に展開して実行することにより実現される。制御サーバ110は、無線LAN I/F205、短距離無線I/F206又は移動体通信網I/F207を介してロボット101と通信する。
I/O203は、ユーザが制御サーバ110に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。I/O203には、入出力デバイス(例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど)が接続される。I/O203は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
CPU202は、メモリ201に格納されたプログラムを実行するプロセッサである。メモリ201は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS:Basic Input Output System)などが格納される。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、補助記憶装置202に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
例えば、メモリ201には、通信品質計測プログラム211、移動許可範囲マップ作成プログラム212、通信品質判定プログラム213、通信制御プログラム214、通信手段切替プログラム215、機能切替プログラム216、ロボット状態変更プログラム217、通信復旧プログラム218、及び移動判定プログラム219が格納される。
通信品質計測プログラム211は、通信品質計測処理(図3参照)を実行するためのプログラムである。移動許可範囲マップ作成プログラム212は、移動許可範囲マップ作成処理(図4参照)を実行するためのプログラムである。通信品質判定プログラム213は、通信品質判定処理(図5参照)を実行するためのプログラムである。通信制御プログラム214は、通信制御処理(図6参照)を実行するためのプログラムである。通信手段切替プログラム215は、通信手段切替処理(図7参照)を実行するためのプログラムである。機能切替プログラム216は機能切替処理(図8参照)を実行するためのプログラムである。ロボット状態変更プログラム217はロボット状態変更処理(図9参照)を実行するためのプログラムである。通信復旧プログラム218は、通信復旧処理(図10参照)を実行するためのプログラムである。移動判定プログラム219は、移動判定処理(図11参照)を実行するためのプログラムである。
また、メモリ201には、機能情報管理テーブル221(図12参照)、通信品質情報管理テーブル222(図13参照)、機能実施可能範囲情報管理テーブル223(図15参照)、ロボット状態情報管理テーブル224(図17参照)、機能提供範囲情報管理テーブル225(図18参照)、移動許可範囲情報管理テーブル226(図20参照)、機能状態情報管理テーブル227(図22参照)が格納される。
補助記憶装置204は、例えば、磁気記憶装置(HDD:Hard Disk Drive)、フラッシュメモリ(SSD:Solid State Drive)などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置204は、CPU202により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置204から読み出されて、メモリ201にロードされ、CPU202によって実行される。
制御サーバ110は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ201に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、制御サーバ110と他の装置が一つの物理的又は論理的計算機に収容されてもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア(例えば、Field−Programmable Gate Array)によって実現してもよい。
図3は、通信品質計測処理の例を示すフローチャートである。通信品質計測処理は、通信品質計測プログラム211が制御サーバ110のCPU202で実行されることにより行われる処理である。通信品質計測プログラム211は、通信品質情報生成部として動作する。
通信品質計測処理は、ロボット101と制御サーバ110との間で送受信されるパケット、及びロボット101の位置情報に基づいて行われる処理である。通信品質計測処理では、ロボット101と制御サーバ110との間で送受信されたメッセージに基づいて通信品質の計測が行われ、この通信品質がロボット101の位置情報と対応付けて通信品質情報管理テーブル222(図13)に保存される。
まず、CPU202は、ロボット101と制御サーバ110間の通信パケットから通信品質情報を計測する(ステップ2111)。次に、CPU202は、ロボット101が計測したロボット101自身の位置情報を取得し、時間情報を基に位置情報と通信品質情報を紐付ける(ステップ2112)。
CPU202は通信品質情報管理テーブル222(図13)を参照し、取得したロボット101の位置情報が示す位置に通信品質情報が既に登録されているか否かを判定する(ステップ2113)。
ロボット101の位置情報が示す位置に通信品質情報が登録されていない場合は(ステップ2113:No)、ステップ2111で計測した通信品質を通信品質情報管理テーブル222(図13)に登録し、通信品質マップ2220(図14参照)を更新する(ステップ2117)。さらにCPU202は、更新した通信品質マップ2220をロボット101に通知して(ステップ2118)処理を終了する。
一方、ステップ2113において、ロボット101の位置情報が示す位置に通信品質情報が登録されていた場合は(ステップ2113:Yes)、CPU202は通信品質情報管理テーブル222(図13)に登録されている通信品質情報と、ステップ2111で計測した通信品質情報とを以下の条件1で比較する(ステップ2114)。
条件1:計測された通信品質<登録済み通信品質
ステップ2114で、条件1を満たさないと判定された場合、ステップ2117へ遷移する。
ステップ2114で、条件1を満たすと判定された場合、CPU202は通信品質判定プログラム213を実行し、通信品質判定処理(図5参照)を行う(ステップ2115)。CPU202は、通信品質判定処理によって通信手段切替処理が行われたか否か判定する(ステップ2116)。通信品質判定処理で通信手段切替処理が行われなかった場合は(ステップ2116:No)、ステップ2117へ遷移する。一方で、通信品質判定処理で通信手段切替処理が行われた場合は(ステップ2116:Yes)、通信品質計測処理を終了する。
これにより、制御サーバ110及びロボット101間の最新の通信状態を示す通信品質情報がロボット101へ提供される。その結果、ロボット101が通信品質に基づいて自律的に位置制御することが可能になる。
図4は、移動許可範囲マップ作成処理の例を示すフローチャートである。移動許可範囲マップ作成処理は、移動許可範囲マップ作成プログラム212が制御サーバ110のCPU202で実行されることにより行われる処理である。移動許可範囲マップ作成プログラム212は、移動許可範囲情報生成部として動作する。
移動許可範囲マップ作成処理では、現実の通信品質とロボット101で使用中の機能の要求通信品質とから、ロボット101が移動することを許可される範囲を示す移動許可範囲情報管理テーブル226(図20)が更新される。
まず、CPU202は、通信品質判定処理により作成された通信品質情報管理テーブル222(図13)を取得する(ステップ2121)。次に、CPU202は機能情報管理テーブル221(図12)を参照して機能毎に要求される通信品質を示す要求通信品質値2212を取得する(ステップ2122)。そして、CPU202は、現在の通信品質と各機能の要求通信品質値2212とに基づいて、現在の通信品質が各機能の要求通信品質を満たす領域を特定し、機能実施可能範囲情報管理テーブル223(図15)に登録する(ステップ2123)。機能実施可能範囲情報管理テーブル223は機能別のテーブルであってもよい。
さらに、CPU202は、ロボット状態情報管理テーブル224(図17)からロボット101が使用中の機能に関する情報を取得する(ステップ2124)。そして、CPU202は、ロボットが使用中の機能に関する機能実施可能範囲情報管理テーブル223(図15)に基づいて、ロボットが使用中の機能を維持したまま移動可能な範囲を移動許可範囲情報管理テーブル226(図20)に登録する(ステップ2125)。ロボット101が複数の機能を使用している場合は、機能毎の要求通信品質を満たすか否かを判定し、すべての機能の通信品質を満たす範囲をロボット101の移動許可範囲として、移動許可範囲情報管理テーブル226(図20)に登録してもよい。
次に、CPU202は、機能提供範囲情報管理テーブル225(図18)から機能の提供が必要となる範囲を取得する(ステップ2126)。そして、移動許可範囲情報管理テーブル226(図20)に登録されたロボットの移動許可範囲と、機能提供範囲情報管理テーブル225が示す機能の提供が必要となる範囲の重複する範囲を、新たな移動許可範囲として移動許可範囲情報管理テーブル226(図20)を更新する(ステップ2127)。
CPU202は、ロボット101に更新された移動許可範囲情報管理テーブル226(図20)を送信する(ステップ2128)。このとき、制御サーバ110からロボット101へ送信されるのは移動許可範囲情報管理テーブル226(図20)でもよいし、このテーブルを最大移動範囲1010の地図で表した移動許可範囲マップ(図21参照)でもよい。
これにより、情報処理装置が実行中の機能と制御サーバ110及びロボット101間の通信品質とから定まる移動許可範囲情報がロボット101へ提供される。その結果、ロボット101が許可された範囲で自律的に位置制御することが可能になる。
図5は、通信品質判定処理の例を示すフローチャートである。通信品質判定処理は、通信品質判定プログラム213が制御サーバ110のCPU202で実行されることにより行われる処理である。通信品質判定プログラム213は、通信品質判定部として動作する。
通信品質判定処理では、通信品質を向上させるための処理が行われる。
通信品質判定処理では、まずCPU202は、機能情報管理テーブル221とロボット状態情報管理テーブル224を参照する(ステップ2131)。そして、CPU202は、ロボット101が使用中の機能の通信品質値の合計と、ステップ2111で計測した通信品質値の差を算出し、使用中の機能の通信品質値の合計と計測した通信品質値を以下の条件2で比較する(ステップ2132)。
条件2:使用中の機能の要求品質値の合計>計測した通信品質値
条件2を満たさないと判定された場合は(ステップ2132:No)、以下の処理をすべてスキップして通信品質判定処理を終了する。
一方で、条件2を満たすと判定された場合は(ステップ2132:Yes)、CPU202は、通信制御プログラム214を実行し、通信制御処理(図6参照)を行う(ステップ2133)。通信制御処理では、優先度の低い機能について通信量を抑制するための処理が行われる。
さらにCPU202は、通信手段切替プログラム215を実行し、通信手段切替処理(図7参照)を行う(ステップ2134)。通信手段切替処理では、要求通信品質を満たす別の通信手段への切替が行われる。
さらにCPU202は、機能切替プログラム216を実行し、機能切替処理(図8参照)を行う(ステップ2135)。機能切替処理では、代替機能が割り当てられている場合は代替機能への切替が行われる。
次に、CPU202は、ステップ2133で少なくとも1つ以上の機能に対して通信量の抑制が実行されたか否か、ステップ2134で少なくとも1つ以上の機能に対して通信手段の切替が実行されたか否か、又はステップ2135で少なくとも1つ以上の機能に対して代替機能への切替が実行されたか否かの判定を行う(ステップ2136)。
ここで、いずれかの処理が実行されていた場合には(ステップ2136:Yes)、通信品質判定処理を終了する。
一方で、いずれの処理も実行されなかった場合は(ステップ2136:No)、CPU202は、ロボット状態変更プログラム217を実行し、ロボット形状変更処理(図9参照)を行う(ステップ2137)。ロボット形状変更処理では、ロボットの向き又は形状を変更して、通信品質の改善を試みる。
、ステップ2137でロボットの向き又は形状の変更が行われた場合は、通信品質処理を終了する(ステップ2138:Yes)。一方で、ロボットの向き又は形状の変更が行われなかった場合は(ステップ2138:No)、CPU202は、通信復旧プログラム218を実行し、通信復旧処理(図10参照)を行う(ステップ2139)。通信復旧処理では、通信品質が高い位置にロボット101を移動させて、通信品質の改善を試みる。
これにより、通信品質が低いときに通信品質を改善するための種々の処理が実行される。
図6は通信制御処理の例を示すフローチャートである。通信制御処理は、通信制御プログラム214が制御サーバ110のCPU202で実行されることにより行われる処理である。通信制御プログラム214は、通信制御部として動作する。通信制御処理は、図5の通信品質判定処理において実行される。
通信制御処理では、まずCPU202が機能情報管理テーブル221(図12)を参照し(ステップ2141)、使用中の機能の優先度と所定の閾値2に関して、以下の条件3を満たす機能があるか判定する。(ステップ2142)。
条件3:優先度≦閾値2
条件3を満たす機能がない場合は(ステップ2142:No)、通信制御処理を終了する。一方で、条件3を満たす機能がある場合、すなわち、優先度が閾値2よりも低い機能が使用中の場合は、CPU202は、機能ごとに、その機能が現在使用している通信量と要求通信品質値2212とを以下の条件4で比較する(ステップ2143)。
条件4:通信量>要求通信品質値2212のいずれか一つ以上
条件4を満たす機能については(ステップ2143:Yes)、CPU202がその機能の通信量が要求通信品質値になるまで通信量を抑制する制御を行う(ステップ2144)。一方で、条件4を満たさない機能については(ステップ2143:No)、CPU202は、その機能が正常に動作していないと判断して機能を終了する(S2145)。
これにより、優先度の低い機能が使用する通信量を抑制できる。
図7は、通信手段切替処理の例を示すフローチャートである。通信手段切替処理は、通信手段切替プログラム215が制御サーバ110のCPU202で実行されることにより行われる処理である。通信手段切替プログラム215は、通信手段切替部として動作する。通信手段切替処理は、図5の通信品質判定処理において実行される。
通信手段切替処理では、まずCPU202は、ロボット101と制御サーバ110の間で通信可能な通信手段が複数あるか否かを判定する(ステップ2151)。通信可能な通信手段が複数存在しない場合は、通信手段切替処理を終了する(ステップ2151:No)。
通信可能な通信手段が複数ある場合は(ステップ2151:Yes)、機能状態情報管理テーブル227(図22参照)を参照し、機能と通信手段との対応に関する情報を取得する(ステップ2152)。CPU202は、取得した情報に基づき、通信手段が割り当てられていない機能があるか否か、又は割り当てられた通信手段の現在の通信品質では要求通信品質が満たされない機能があるか否かを判定する(ステップ2153)。ここで、割り当てられた通信手段の現在の通信品質では要求通信品質が満たされない機能がある場合は、例えば、ロボット101が移動許可範囲情報管理テーブル226で定まる移動許可範囲外に存在することが考えられる。
通信手段が割り当てられていない機能がない、又は割り当てられた通信手段では要求通信品質が満たされない機能がない場合は(ステップ2153:No)、通信手段切替処理を終了する。
一方、通信手段が割り当てられていない機能があるか、又は割り当てられた通信手段では要求通信品質が満たされない機能がある場合は(ステップ2153:Yes)、CPU202は機能情報管理テーブル221(図12)を参照して、その機能の情報を取得し(ステップ2154)、その機能が要求する通信品質値を満たす通信手段があるか否かの判定を行う(ステップ2155)。
ここで、その機能が要求する通信品質値を満たす通信手段がなければ通信手段切替処理を終了する(ステップ2155:No)。
一方で、その機能が要求する通信品質値を満たす通信手段があった場合(ステップ2155:Yes)、CPU202は、その機能に要求する通信品質値を満たす通信手段を割り当てる(ステップ2156)。CPU202は、通信手段の全体の通信品質値からステップ2156で機能を割り当てた通信手段の通信品質値を減算し、通信帯域の余剰分を示す通信品質値の差分を算出する(ステップ2157)。その後ステップ2153に戻り、通信手段が割り当てられていない機能及び割り当てられている通信手段で要求通信品質が満たされない機能がなくなるまで繰り返す。
これにより、機能に対して割り当てられる通信手段の切替が行われる。その結果、ロボット101が複数の機能を実行しているときは、各機能に異なる通信手段を割り当てることができる。つまり、ロボット101は複数機能を実行中に複数の通信手段で通信することができ、通信品質が安定する。
図8は機能切替処理の例を示すフローチャートである。機能切替処理は、機能切替プログラム216が制御サーバ110のCPU202で実行されることにより行われる処理である。機能切替プログラム216は機能切替部として動作する。機能切替処理は、図5の通信品質判定処理において実行される。
機能切替処理では、まずCPU202が通信手段切替処理(図7参照)によっても通信手段が割り当てられていない機能があるか否か、又は割り当てられた通信手段の現在の通信品質では要求通信品質が満たされない機能があるか否かを判定する(ステップ2161)。ここで、割り当てられた通信手段の現在の通信品質では要求通信品質が満たされない機能がある場合は、例えば、ロボット101が移動許可範囲情報管理テーブル226で定まる移動許可範囲外に存在することが考えられる。
通信手段が割り当てられていない機能がない、又は割り当てられた通信手段では要求通信品質が満たされない機能がない場合は、機能切替処理を終了する(ステップ2161:No)。
通信手段が割り当てられていない機能があるか、又は割り当てられた通信手段では要求通信品質が満たされない機能がある場合は(ステップ2161:Yes)、CPU202は、機能情報管理テーブル221(図12)を参照し、その機能の代替機能2215が登録されているか否かを判定する(ステップ2162)。代替機能2215が登録されていない場合は(ステップ2162:No)、CPU202はその機能を終了させ(ステップ2165)、再びステップ2161へ戻る。
その機能の代替機能2215が登録されている場合は(ステップ2162:Yes)、CPU202は、代替機能の要求する通信品質値を満たす通信手段があるか否かを判定する(ステップ2163)。代替機能が要求する通信品質値を満たす通信手段があれば(ステップ2163:Yes)、CPU202は、通信手段が割り当てられていない機能又は割り当てられた通信手段では要求通信品質が満たされない機能を終了し、代替機能を実行して代替機能に切替え(ステップ2164)、ステップ2161へ戻る。代替機能が要求する通信品質値を満たす通信手段がなければ(ステップ2163:No)、ステップ2165へ遷移する。
これにより、代替機能が設定されている機能については、代替機能への切替が行われる。
図9はロボット状態変更処理の例を示すフローチャートである。ロボット状態変更処理は、ロボット状態変更プログラム217が制御サーバ110のCPU202で実行されることにより行われる処理である。ロボット状態変更プログラム217は、ロボット状態変更部として動作する。ロボット状態変更処理は、図5の通信品質判定処理において実行される。
ロボット状態変更処理では、まずCPU202が移動許可範囲情報管理テーブル226(図20)を参照する(ステップ2171)。
CPU202は、移動許可範囲情報管理テーブル226(図20)の中に無線LAN AP又は無線中継機の場所に関する情報があるか否かを判定する(ステップ2172)。移動許可範囲情報管理テーブル226(図20)の中に無線LAN AP又は無線中継機の場所に関する情報がある場合は(ステップ2172:Yes)、ロボット101の位置から最も近い無線LAN AP又は無線中継機の方向へ、ロボット101の無線LAN I/F305が向くようにロボット101の姿勢を制御するための制御命令をロボット101へ送信する(ステップ2173)。
上記の制御命令の送信後、及び、移動許可範囲情報管理テーブル226(図20)の中に無線LAN AP又は無線中継機の場所に関する情報がない場合は(ステップ2172:No)、CPU202は、ロボット状態情報管理テーブル224(図17)を参照する(ステップ2274)。そして制御サーバ110は、ロボット101の現在の形状が通信復旧用の形状であるか否か判定する(ステップ2175)。通信復旧用の形状とは、例えば、予め定められたロボット101の形状であって、通信品質が低いときに通信品質を改善させるのに適した形状である。
ロボット101が通信復旧用の形状でない場合は(ステップ2175:No)、制御サーバ110は、ロボット101が自らの形状を通信復旧用の形状に変更するための制御命令をロボット101へ送信する(ステップ2176)。ロボットが通信復旧用の形状であった場合は(ステップ2175:Yes)、ステップ2176をスキップしてロボット状態変更処理を終了する。
これにより、ロボットの向き及び形状を変化させることができる。その結果、制御サーバ110とロボット101との通信状態の改善が期待できる。
図10は通信復旧処理の例を示すフローチャートである。通信復旧処理は、通信復旧プログラム218が制御サーバ110のCPU202で実行されることにより行われる処理である。通信復旧プログラム218は、ロボット101の移動制御をする移動制御部として動作する。通信復旧処理は、図5の通信品質判定処理において実行される。
通信復旧処理では、まずCPU202が、通信手段が割り当てられておらず、かつ、代替機能も起動されていない機能の優先度と所定の閾値3を以下の条件5で比較する(ステップ2181)。
条件5:優先度≧閾値3
条件5を満たさない場合は(ステップ2181:No)、通信復旧処理を終了する。
一方、条件5を満たす機能がある場合、つまり、実行中であっても通信状態が不十分な機能がある場合は(ステップ2181:Yes)、通信手段切替処理(図7)が既に行われたか否かを判定する(ステップ2182)。通信手段切替処理が行われていた場合は(ステップ2182:Yes)、処理を終了する。
通信手段切替処理が行われなかった場合は(ステップ2182:No)、通信品質情報管理テーブル222(図13)を参照し、現在の位置より通信品質が高い位置の有無を判定する(ステップ2183)。
現在の位置より通信品質が高い位置がなければ(ステップ2183:No)、制御サーバ110からロボット101へ、待機地点への移動命令が送信される(ステップ2184)。現在の位置より通信品質が高い位置があれば(ステップ2183:Yes)、制御サーバ110からロボット101へ通信品質が高い位置への移動命令が送信される(ステップ2185)。
ステップ2184及びステップ2185の終了後、CPU202は、移動許可範囲情報管理テーブル226(図20)において、現在位置をロボット101の移動が許可されない範囲として更新する(ステップ2186)。
これにより、ロボット101を通信状態がより良い位置に強制的に移動させ、制御サーバ110がロボット101の管理を継続できるようになる。
図11は移動判定処理の例を示すフローチャートである。移動判定処理は、移動判定プログラム219が制御サーバ110のCPU202で実行されることにより行われる処理である。移動判定プログラム219は移動判定部として動作する。移動判定プログラム219は、ロボット101の移動制御をする移動制御部として動作する。
まず、CPU202は、アプリケーションサーバ111からロボット101に対する移動通知を取得し、通信品質情報管理テーブル222を参照して移動通知が示す移動先の位置の通信品質情報を取得する(ステップ2191)。
次にCPU202は、ロボット状態情報管理テーブル224と機能情報管理テーブル221とを参照し(ステップ2192)、ロボット101が使用中の機能の要求通信品質と移動通知が示す移動先の位置の通信品質を以下の条件6で比較する(ステップ2193)。
条件6:使用中の機能の要求品質値の合計値>移動通知の位置の通信品質値
条件6を満たさないと判定されると(ステップ2193:No)、CPU202は、ロボット101へ移動通知が示す移動先の位置への移動命令を送信し(ステップ2200)、処理を終了する。
条件6を満たすと判定された場合は(ステップ2193:Yes)、CPU202は、通信制御プログラム214を起動して通信制御処理(図6参照)を実行する(ステップ2194)。CPU202は、さらに、通信手段切替プログラム215を起動し通信手段切替処理(図7参照)を実行する(ステップ2195)。CPU202は、さらに、機能切替プログラム216を起動し機能切替処理(図8参照)を実行する(ステップ2196)。
そしてステップ2194、ステップ2195、ステップ2196の実行後、CPU202は、あらためて条件6を満たす機能があるか判定する(ステップ2197)。
条件6を満たす機能がない場合は(ステップ2197:No)、ステップ2200へ遷移する。条件6を満たす機能がある場合(ステップ2197:Yes)、CPU202は、条件6を満たす機能の優先度と所定の閾値4を以下の条件7で比較する(ステップ2198)。
条件7:利用不可な機能の優先度≧閾値4
条件7を満たすと判定されると、CPU202は、移動通知に基づいてロボット101を移動させることが不可であることを、アプリケーションサーバ111に対して通知し(ステップ2199)、処理を終了する。条件7を満たさないと判定されると、ステップ2220へ遷移する。
これにより、通信品質がよくない位置へロボット101を移動させることを未然に防止できる。
図12は機能情報管理テーブル221の例を示す図である。
機能情報管理テーブル221は、ロボット101が実行する機能に関する情報を格納する。例えば、機能情報管理テーブル221には、機能を一意に識別するための機能ID2211と、機能ごとに要求されるロボット101と制御サーバ110との間の通信品質の情報である要求通信品質値2212と、通信品質値2212から判定される通信品質の要求レベル2213と、機能の優先度情報である優先度2214と、機能が使用できない場合の代替機能2215とが格納される。
通信品質値2212は、図12に示すように、さらにデータ転送速度などのスループット、RTT(Round Trip Time)及びパケットロス率を含むが、これら指標の一部のみを含むものでもよく、通信品質を示す他の指標(ジッタなど)を含んでもよい。
要求レベル2213は、例えば、スループットが0〜100000bpsを1、100001〜1000000bpsを2、1000001〜5000000bpsを3、5000001〜10000000bpsを4、10000001bps以上を5とする。この例では、要求レベルのランクを5段階としているが、要求レベルのランクの数はいくつでもよい。
代替機能2215には、機能ID2211に係る機能に代わりうる代替機能の機能IDが格納される。
図13は通信品質情報管理テーブル222の例を示す図である。通信品質情報管理テーブル222はロボット101の最大移動範囲1010内の通信品質を示す情報を有する。通信品質情報管理テーブル222は、ロボット101の位置に関する情報と、ロボット101との通信に関する情報から生成される。
通信品質情報管理テーブル222では、例えば、ロボット101の最大移動範囲1010が所定の大きさの格子状の領域に区分され、格子状に区分された各領域における通信品質レベルに関する情報が格納される。格子状に区分された各領域は、例えば、XY座標で特定されてもよい。通信品質レベルは、通信品質計測処理(図3)で判定されてもよい。
この例では、通信品質情報管理テーブル222に格納される情報は通信品質レベルとしているが、これ以外でもよい。例えば、通信品質であるスループット、遅延、パケットロス率などの平均値、中央値、最大値、又は最小値としてもよい。
また、無線LAN AP又は無線LANを中継する中継機の位置が分かっているときは、無線LAN AP又は中継機の位置を示す文字、記号又は数字等がそれらが位置する格子状の領域に付加されてもよい。
ロボット101と制御サーバ110との間に複数の通信手段があるとき、通信品質情報管理テーブル222は通信手段別に作成されてもよい。あるいは、一つの通信品質情報管理テーブル222が複数の通信手段の通信品質値の合計値に基づいて生成されてもよい。
図14は、通信品質マップ2220の例を示す図である。通信品質マップ2220は、通信品質情報管理テーブル222に基づいて、ロボット101の移動範囲の通信品質を可視化したマップである。例えば、通信品質マップ2220は、図14に示すように、最大移動範囲1010を所定の大きさの格子状の領域に区分し、格子状に区分された領域において、通信品質情報管理テーブル222に登録されたスループットを、格子ごとに多段階に分けて表してもよい。通信品質情報管理テーブル222と通信品質マップ2220の格子は互いに対応していてもよい。
例えば、スループットが0〜100000bpsをレベル1、100001〜1000000bpsをレベル2、1000001〜5000000bpsをレベル3、5000001〜10000000bpsをレベル4、10000001bps以上をレベル5とする。この例では、要求レベルのランクを5段階としているが、要求レベルのランクの数はいくつでもよい。
また、マップをx軸、y軸、z軸を持つ3次元マップとし、高さ方向のz軸のグラフで遅延やパケットロス率、通信品質のレベルを表現してもよい。
図15は機能実施可能範囲情報管理テーブル223の例を示す図である。機能実施可能範囲情報管理テーブル223は、ロボット101の最大移動範囲1010内で各機能の要求通信品質に対する現実の通信品質の状態を示す情報を有する。機能実施可能範囲情報管理テーブル223は、現実の通信品質と、機能に要求される通信品質とから生成される。
機能実施可能範囲情報管理テーブル223では、例えば、通信品質情報管理テーブル222と同様にロボット101の最大移動範囲1010が所定の大きさの格子状の領域に区分される。機能実施可能範囲情報管理テーブル223では、機能別に、格子状に区分された各領域における各機能の要求通信品質を満たすか否かを示す情報が格納される。格子状に区分された各領域は、例えば、XY座標で特定されてもよい。例えば、機能の要求通信品質を満たさない格子には、機能の要求品質を満たさないことを示す値(例えば、0)が格納されるようにしてもよい。
また、無線LAN AP又は無線LANを中継する中継機の位置が分かっていれば、無線LAN AP又は中継機の位置を示す文字、記号又は数字等がそれらが位置する格子状の領域に付加されてもよい。
ロボット101と制御サーバ110との間に複数の通信手段があるとき、機能実施可能範囲情報管理テーブル223は通信手段別に作成されてもよい。あるいは、一つの機能実施可能範囲情報管理テーブル223が複数の通信手段の通信品質値の合計値に基づいて生成されてもよい。
図16は、機能実施可能範囲マップ2230の例を示す図である。機能実施可能範囲マップ2230は、機能実施可能範囲情報管理テーブル223に基づいてロボット101の最大移動範囲1010における機能ごとの要求通信品質に対する現実の通信品質のレベルを可視化したマップである。例えば、機能実施可能範囲マップ2230は、図16に示すように、最大移動範囲1010を所定の大きさの格子状の領域に区分し、格子状に区分された領域において、機能実施可能範囲情報管理テーブル223に登録された機能別の要求通信品質に対する現実の通信品質のレベルを、格子毎に多段階に分けて可視的に表してもよい。例えば、機能の要求通信品質を満たさない領域には、機能利用不可を示す表示してもよい。機能実施可能範囲情報管理テーブル223と機能実施可能範囲マップ2230の格子は互いに対応していてもよい。
図17は、ロボット状態情報管理テーブル224の例を示す図である。ロボット状態情報管理テーブル224は機能及び形状に関するロボット101の状態を示す。
ロボット状態情報管理テーブル224は、例えば、ロボット101の状態を一意に識別するためのIDであるロボット状態ID2241と、各機能の状態2242と、ロボットの形状2243とを有する。各機能の状態2242には、例えば、ロボット101が機能を実施する場合は1、ロボット101が機能を実施しない場合は0が格納されるようにしてもよい。ロボット形状2243には、例えば、ロボット101が通信復旧用形状の場合は1、その他の形状の場合は0が格納されるようにしてもよい。
図18は、機能提供範囲情報管理テーブル225の例を示す図である。機能提供範囲情報管理テーブル225は、ロボット101の最大移動範囲1010内で各機能の提供が必要な領域を示す。
機能提供範囲情報管理テーブル225では、例えば、通信品質情報管理テーブル222及び機能実施可能範囲情報管理テーブル223と同様にロボット101の最大移動範囲1010が所定の大きさの格子状の領域に区分された領域ごとに、機能の提供が必要な範囲か否かを示す値が格納される。格子状に区分された各領域は、例えば、XY座標で特定されてもよい。機能の提供が必要な範囲か否かを示す値は、例えば、機能の提供が必要な範囲であれば1、機能の提供が必要ない範囲であれば0でよい。
ロボット101と制御サーバ110との間に複数の通信手段があるとき、機能提供範囲情報管理テーブル225は通信手段別に作成されてもよい。あるいは、一つの機能提供範囲情報管理テーブル225が複数の通信手段の通信品質値の合計値に基づいて生成されてもよい。
図19は機能提供範囲マップ2250の例を示す図である。機能提供範囲マップ2250は、機能提供範囲情報管理テーブル225に基づいてロボット101の最大移動範囲1010内で機能の提供が必要とされる範囲を可視化したマップである。例えば、機能提供範囲マップ2250は、図19に示すように、地図を所定の大きさの格子状の領域に区分し、格子状に区分された領域において、機能提供範囲情報管理テーブル225に登録された、機能の提供が必要な範囲か否かを示す値を、格子毎に分けて可視的に表してもよい。機能提供範囲情報管理テーブル225と機能提供範囲マップ2250の格子は互いに対応していてもよい。
図20は移動許可範囲情報管理テーブル226の例を示す図である。移動許可範囲情報管理テーブル226は、ロボット101の最大移動範囲1010内でロボット101が現在提供中の機能を継続して提供するために移動可能な範囲を示す。移動許可範囲情報管理テーブル226は、通信品質と実行中の機能の要求通信品質とから生成される。
移動許可範囲情報管理テーブル226では、例えば、通信品質情報管理テーブル222、機能実施可能範囲情報管理テーブル223及び機能提供範囲情報管理テーブル225と同様にロボット101の最大移動範囲1010が所定の大きさの格子状の領域に区分される。格子状に区分された各領域は、例えば、XY座標で特定されてもよい。移動許可範囲情報管理テーブル226では、格子状に区分された各領域には、通信品質情報又は通信品質のレベルが格納され、ロボット101の移動が許可されない領域には、移動を許可しないことを示す値(例えば、0)が格納されるようにしてもよい。
ロボット101と制御サーバ110との間に複数の通信手段があるとき、移動許可範囲情報管理テーブル226は通信手段別に作成されてもよい。あるいは、一つの移動許可範囲情報管理テーブル226が複数の通信手段の通信品質値の合計値に基づいて生成されてもよい。
図21は移動許可範囲マップ2260の例を示す図である。移動許可範囲マップ2260は、移動許可範囲情報管理テーブル226に基づいて、ロボット101の最大移動範囲1010内でロボット101の移動が許可される範囲を可視化したマップである。例えば、移動許可範囲マップ2260は、図21に示すように、地図を所定の大きさの格子状の領域に区分し、格子状に区分された領域において、移動許可範囲情報管理テーブル226に登録された通信品質情報又は通信品質のレベルを、格子毎に多段階に分けて可視的に表してもよい。例えば、移動が許可されていない領域には、移動を許可しないことを示す記号を表示してもよい。移動許可範囲情報管理テーブル226と移動許可範囲マップ2260の格子は互いに対応していてもよい。
図22は機能状態情報管理テーブル227の例を示す図である。機能状態情報管理テーブル227は各機能で使用される通信手段を示す。
機能状態情報管理テーブル227は、機能を一意に識別するためのIDである機能ID2271と、機能が割り当てられている通信手段を示す通信手段2272と、機能が代替機能を使用しているか否かを示す代替機能使用状態2273とを有する。通信手段2272は、ロボット101で機能が実行中のときに割り当てられ、実行が終了すると解除されるようにしてもよい。代替機能使用状態2273は、代替機能が実行中であるか否かを示す。
次に、制御サーバ110とロボット101との間の通信について説明する。
図23は、通信品質マップ及び移動許可範囲マップ更新の例を示すシーケンス図である。
ロボット101と制御サーバ110との間でパケットの送受信が行われると、制御サーバ110は通信品質計測プログラム211を実行して、ロボット101と制御サーバ110との間の通信品質を計測する。
通信品質計測プログラム211が実行された結果、通信品質情報管理テーブル222が更新されると、制御サーバ110は、更新された通信品質情報管理テーブル222又は通信品質情報管理テーブル222と等価な通信品質マップ2220に関する情報をロボット101に送信する。このとき、制御サーバ110からロボット101へ、更新後の通信品質情報管理テーブル222又は通信品質マップ2220を送信してもよいし、これらの更新前との差分情報を送信してもよい。
次に、制御サーバ110は移動許可範囲マップ作成プログラム212を実行し、移動許可範囲情報管理テーブル226を更新する。その後、制御サーバ110は更新された移動許可範囲情報管理テーブル226又は移動許可範囲情報管理テーブル226と等価な移動許可範囲マップ2260に関する情報をロボット101へ送信する。このとき、制御サーバ110からロボット101へ、更新後の移動許可範囲情報管理テーブル226又は移動許可範囲マップ2260を送信してもよいし、これらの更新前との差分情報を送信してもよい。
制御サーバ110及びロボット101は、定期的、あるいは任意のタイミングで図23の通信品質マップ及び移動許可範囲マップの更新を行うことができる。
図24は、ロボット101と制御サーバ110との間の通信品質を安定させる処理の例を示すシーケンス図である。
ロボット101と制御サーバ110との間でパケットの送受信が行われると、制御サーバ110は通信品質計測プログラム211を実行して、ロボット101と制御サーバ110との間の通信品質を計測する。計測された通信品質が通信品質情報管理テーブル222に登録された値以下であった場合、通信品質計測プログラム211による通信品質計測処理において、通信品質判定プログラム213が実行される。
さらに次に、通信品質判定プログラム213による通信品質判定処理において、通信制御プログラム214及び通信手段切替プログラム215が実行され、通信手段の切り替えが行われると、制御サーバ110がロボット101へ通信手段を切り替える命令を送信する。
次に、機能切替プログラム216による機能切替処理において、ロボット101の機能の切り替えが必要と判定されると、制御サーバ110からロボット101に機能を切り替えるための命令が送信される。
さらに、ロボット状態変更プログラム217によるロボット状態変更処理において、ロボットの形状又は向きの変更が必要と判定されると、制御サーバ110がロボット101へロボット101の形状又は向きを変更させる制御のための制御命令が送信される。
そして通信復旧プログラム218による通信復旧処理において、ロボット101の移動が必要と判定されると、制御サーバ110からロボット101に移動命令が送信される。
制御サーバ110は、定期的、あるいは任意のタイミングで図24の通信安定化処理を行うことができる。
図25は実施例1のロボット101の構成の例を示す図である。
ロボット101は、メモリ301と、CPU(Central Processing Unit)302と、I/O(入出力インタフェース)303と、補助記憶装置304と、無線LAN I/F305と、短距離無線I/F306と、移動体通信網I/F307と、頭、腕、脚といったロボットの機構部分である機構部308と、機構部308を制御する機構制御部309と、音声等を発するスピーカ310と、音声等を収集するマイク311と、発光部312とを有する。以下に説明するロボット101が行う処理は、CPU302が補助記憶装置304に格納されたコンピュータプログラム(ソフトウェア)を読み出して、メモリ301上に展開して実行することにより実現される。ロボット101は、無線LAN I/F305、短距離無線I/F306又は移動体通信網I/F307を介して制御サーバ110と通信する。
I/O303は、ユーザがロボット101に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。I/O303には、入出力デバイス(例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど)が接続される。I/O303は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
CPU302は、メモリ301に格納されたプログラムを実行するプロセッサである。メモリ301は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS:Basic Input Output System)などが格納される。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、補助記憶装置302に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
例えば、メモリ301には、位置管理プログラム321、通信復旧プログラム322が格納される。
位置管理プログラム321は、位置管理処理(図26参照)を実行するためのプログラムである。通信復旧プログラム322は、通信復旧処理(図27参照)を実行するためのプログラムである。
また、メモリ301は、通信品質情報管理テーブル222(図13参照)、移動許可範囲情報管理テーブル226(図20参照)が格納される。
補助記憶装置304は、例えば、磁気記憶装置(HDD:Hard Disk Drive)、フラッシュメモリ(SSD:Solid State Drive)などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置304は、CPU302により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置304から読み出されて、メモリ301にロードされ、CPU302によって実行される。
制御サーバ110から送信された各種テーブル又はマップは、メモリ301又は補助記憶装置304に格納され、CPU302によるプログラム実行時に参照される。
ロボット101の計算機システムは、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ201に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア(例えば、Field−Programmable Gate Array)によって実現してもよい。
図26は位置管理処理の例を示すフローチャートである。位置管理処理は、位置管理プログラム321がロボット101のCPU302で実行されることにより行われる処理である。位置管理プログラム321は、位置管理部として動作する。
位置管理処理では、まずCPU302がロボット101の位置情報を取得する(ステップ3221)。次にCPU302は、取得したロボット101の位置情報を基に移動許可範囲情報管理テーブル226を参照し(ステップ3222)、ロボット101の現在位置が移動許可範囲内か否かを判定する(ステップ3223)。
ロボット101の現在位置が移動許可範囲内であれば、位置管理処理を終了する(ステップ3223:Yes)。
一方、ロボット101の現在位置が移動許可範囲内でなければ(ステップ3223:No)、CPU302は機構制御部309へ、現在位置から最も近い移動許可範囲内の位置に移動させるための指示を出して、ロボット101を移動許可範囲内へ移動させる(ステップ3224)。
これにより、ロボット101は自らの位置を制御サーバ110から指示された移動許可範囲内に保つことができる。
図27は通信復旧処理の例を示すフローチャートである。通信復旧処理は、通信復旧プログラム322がロボット101のCPU302で実行されることにより行われる処理である。通信復旧プログラム322は、通信復旧処理部または位置管理部として動作する。
通信復旧処理は、まずCPU302がロボット101と制御サーバ110の間で送受信されるパケットから、通信品質を計測する(ステップ3231)。ここで計測される通信品質は、例えばデータ転送速度などのスループット、RTT(Round Trip Time)などの遅延及びパケットロス率である。ロボット101は、通信品質の計測のためにテストパケットを送信してもよい。
次に、CPU302は計測された通信品質値と所定の閾値5を、以下の条件8で比較する(ステップ3232)。
条件8:通信品質値≦閾値5
条件8を満たさないと判定された場合は、通信復旧処理を終了する(ステップ3232:No)。
条件8を満たすと判定された場合、すなわち通信品質値が閾値5以下であるときは(ステップ3232:Yes)、CPU302は通信品質マップ2220を参照し(ステップ3233)、現在の位置より通信品質の良い場所があるか否か判定する(ステップ3234)。
現在の位置より通信品質の良い場所がなければ(ステップ3234:No)、CPU302は機構制御部309へ指示を出して、ロボット101を待機地点へ移動させる(ステップ3235)。
一方、現在の位置より通信品質の良い場所があれば(ステップ3234:Yes)、CPU302は機構制御部309へ指示を出して、ロボット101を現在の位置より通信品質の良い場所へ移動させる(ステップ3236)。
これにより、ロボット101の位置を制御して、ロボット101が制御サーバ110と通信不能となることを回避できる。
<実施例2>
実施例2では、中継サーバ120が移動体通信網107の通信を中継する例を説明する。以下の説明において、実施例1で説明した構成又は機能と共通するものについては、実施例1と同一の符号を付して説明を省略する場合がある。
図28は、実施例2のロボット管理システムの例を示す図である。実施例2のロボット管理システムは、自律移動可能な情報処理装置であるロボット101、制御装置である制御サーバ110、アプリケーションサーバ111と、ロボット101と制御サーバ110の間の移動体通信網の無線通信を中継する中継サーバ120を有する。
ロボット101と制御サーバ110は無線通信により接続される。ロボット101と制御サーバ110を接続する通信手段は、例えば無線LAN(Local Area Network)104、短距離無線106である。無線LAN104及び短距離無線106を用いた通信は実施例1と同様である。
ロボット101と中継サーバ120は無線通信により接続される。ロボット101と中継サーバ120を接続する通信手段は、例えば移動体通信網107である。このとき、ロボット101と中継サーバ120は基地局装置108及びインターネット109を介して接続される。制御サーバ110と中継サーバ120は有線通信、例えばインターネット109を介して接続される。従って、ロボット101と制御サーバ110は、中継サーバ120を介して通信できる。
制御サーバ110及び中継サーバ120は、それぞれ、ロボット101との通信情報を用いて、通信品質情報を計測する。
図29は、制御サーバ110の構成の例を示す図である。
制御サーバ110は、メモリ401と、CPU(Central Processing Unit)402と、I/O(入出力インタフェース)403と、補助記憶装置404と、無線LAN I/F405と、短距離無線I/F406と、移動体通信網I/F407と、ネットワーク I/F408とを有する。以下に説明する制御サーバ110が行う処理は、CPU402が補助記憶装置404に格納されたコンピュータプログラム(ソフトウェア)を読み出して、メモリ401上に展開して実行することにより実現される。制御サーバ110は、無線LAN I/F405、短距離無線I/F406、又は移動体通信網I/F407を介してロボット101と通信する。また、制御サーバ110は、ネットワーク I/F408を介して中継サーバ120と通信する。
I/O(入出力インタフェース)403は、ユーザが制御サーバ110に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。I/O403には、入出力デバイス(例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど)が接続される。I/O403は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
CPU402は、メモリ401に格納されたプログラムを実行するプロセッサである。メモリ401は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS:Basic Input Output System)などが格納される。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、補助記憶装置402に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
例えば、メモリ401には、通信品質計測プログラム411、移動許可範囲マップ作成プログラム212、通信品質判定プログラム213、通信制御プログラム214、通信手段切替プログラム215、機能切替プログラム216、ロボット状態変更プログラム217、通信復旧プログラム218及び移動判定プログラム219が格納される。
通信品質計測プログラム411は、通信品質計測処理(図30参照)を実行するためのプログラムである。移動許可範囲マップ作成プログラム212〜移動判定プログラム219は実施例1と同じであるので説明を省略する。
また、メモリ401に格納されている機能情報管理テーブル221〜機能状態情報管理テーブル227も実施例1と同じであるので説明を省略する。
補助記憶装置404は、例えば、磁気記憶装置(HDD:Hard Disk Drive)、フラッシュメモリ(SSD:Solid State Drive)などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置404は、CPU402により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置404から読み出されて、メモリ401にロードされ、CPU402によって実行される。
図30は、通信品質計測処理の例を示すフローチャートである。通信品質計測処理は、通信品質計測プログラム411が制御サーバ110のCPU402で実行されることにより行われる処理である。通信品質計測プログラム411は、通信品質計測部として動作する。本実施例の制御サーバ110が行う通信品質計測処理は、実施例1と同様に、無線LAN140及び短距離無線106によりロボット101と直接行う通信の品質を計測する処理を含む。本実施例の通信品質計測処理は、さらに、中継サーバ120とロボット101間の通信品質に関する情報を中継サーバ120から取得する処理を含む。
通信品質計測処理は、実施例1と同様に、ロボット101と制御サーバ110との間で送受信されるパケットを用いて通信品質を計測し、通信品質情報管理テーブル222を更新する。
まず、CPU402は、実施例1と同様に、ステップ4111でロボット101と制御サーバ110間の通信品質を計測し、ステップ4112でロボット101の位置情報と通信品質情報を紐付ける。
次に、CPU402は、中継サーバ120から、中継サーバ120の位置情報と、中継サーバ120とロボット101との通信品質とを取得する(ステップ4113)。中継サーバ120は、予めロボット101との間の通信品質を計測を行い(図34参照)、制御サーバ110はこの計測結果を取得する。
これ以降、CPU402は実施例1と同様に、ロボット101の位置情報と対応付けられた通信品質を通信品質情報管理テーブル222に登録するための処理を行う(ステップ4114〜ステップ4119)。
これにより、制御サーバ110及びロボット101間(中継サーバ120を経由する場合を含む)の最新の通信状態を示す通信品質情報がロボット101へ提供される。
図31は実施例2の中継サーバ120の構成の例を示す図である。
中継サーバ120は、メモリ501と、CPU502と、I/O503と、補助記憶装置504と、移動体通信網I/F505と、ネットワークI/F506とを有する。以下に説明する中継サーバ120が行う処理は、CPU502が補助記憶装置504に格納されたコンピュータプログラムをメモリ501上に展開して実行することにより実現される。中継サーバ120は、移動体通信網I/F505を介してロボット101と通信する。また、中継サーバ120は、ネットワークI/F506を介して制御サーバ110と通信する。
I/O(入出力インタフェース)503は、ユーザが中継サーバ120に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。I/O503には、入出力デバイス(例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど)が接続される。I/O503は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
CPU502は、メモリ501に格納されたプログラムを実行するプロセッサである。メモリ501は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS:Basic Input Output System)などが格納される。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、補助記憶装置502に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
例えば、メモリ501には、情報転送プログラム511及び通信品質計測プログラム512が格納される。
情報転送プログラム511は、情報転送処理(図32参照)を実行するためのプログラムである。通信品質計測プログラム512は、通信品質計測処理(図34参照)を実行するためのプログラムである。
また、メモリ501には、装置情報管理テーブル521(図33参照)が格納される。
補助記憶装置504は、例えば、磁気記憶装置(HDD:Hard Disk Drive)、フラッシュメモリ(SSD:Solid State Drive)などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置504は、CPU502により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置504から読み出されて、メモリ501にロードされ、CPU502によって実行される。
中継サーバ120は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ501に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、中継サーバ120と他の装置が一つの物理的又は論理的計算機に収容されてもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア(例えば、Field−Programmable Gate Array)によって実現してもよい。
図32は情報転送処理の例を示すフローチャートである。情報転送処理は、情報転送プログラム511はCPU502で実行されることにより行われる処理である。情報転送処理は、ロボット101又は制御サーバ110からのパケットを受信することにより行われる処理である。
情報転送処理では、まずロボット101又は制御サーバ110からのパケットを受信すると(ステップ5111)、CPU502が受信したパケットの宛先装置を特定し、装置情報管理テーブル521を参照して宛先装置の情報を取得する(ステップ5112)。CPU502は、ステップ5112で取得した宛先装置の情報に基づいて、ステップ5111で受信したパケットを転送する(ステップ5113)。
図33は、装置情報管理テーブル521の例を示す図である。
装置情報管理テーブル521は、中継サーバ120と通信可能な装置に関する情報を有する。例えば、装置情報管理テーブル521は、装置を一意に識別するIDである装置ID5211と、装置が通信に使用するIPアドレス5212と、装置が通信に使用するポート番号5213が格納される。その他に装置が通信を行うための情報(MACアドレスなど)が格納されてもよい。
図34は、通信品質計測処理の例を示すフローチャートである。通信品質計測処理は、通信品質計測プログラム512が中継サーバ120のCPU502で実行されることにより行われる処理である。通信品質計測プログラム512は、通信品質計測部として動作する。
通信品質計測処理では、図32に示す情報転送処理が行われると(ステップ5121)、CPU502がロボット101と中継サーバ120との間で送受信されるパケットから、ロボット101と中継サーバ120間の通信品質を計測する(ステップ5122)。
次にCPU502は、ロボット101からロボット101の位置情報を取得し、時間情報を基にロボット101の位置情報とステップ5122で計測した通信品質とを紐付ける(ステップ5123)。そして、CPU502が位置情報と紐付けた通信品質を制御サーバ110に送信する(ステップ5124)。
これにより、中継サーバ120で通信品質の計測を行うことができる。
本実施例によれば、中継サーバ120を介して制御サーバ110とロボット101との通信を行っても、実施例1のように直接通信行うときと同様に、制御サーバ110とロボット101との通信状態を要求通信品質に保つようにロボットを制御することができる。
なお、本発明を実施するための形態は、以上で説明した実施例に限定されるものではなく、様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成の一部を加えてもよい。
また、前述したプログラムによる処理などは、それらの一部又は全部を、例えば集積回路で設計するなどにより、ハードウェアで実現してもよく、ハードウェアによる処理とプログラムによる処理を組み合わせてもよい。プログラムやテーブルなどの情報は、メモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの記憶装置、又は、ICカード、SDカード、DVDなどの記録媒体に格納することができる。また、制御線や情報線は説明上必要なものを示しており、示した以外の制御線や情報線があってもよい。