(57)【要約】【課題】人に対してスムーズにサービスを提供する。【解決手段】自律移動可能な情報処理装置の位置情報と、サービス提供拠点に設置され、情報処理装置が提供するサービスに必要な機器の位置情報とに基づいて、情報処理装置と機器との間の距離を算出し、情報処理装置が機器と連携してサービスを提供する際に、情報処理装置と機器との間の距離に基づいて、利用可能な機器を判定する。【選択図】  図３
2019021162.tif 000002
【特許請求の範囲】
【請求項１】
自律移動可能な情報処理装置を制御するサーバ装置であって、
前記情報処理装置の位置情報と、サービス提供拠点に設置され、前記情報処理装置が提供するサービスに必要な機器の位置情報とに基づいて、前記情報処理装置と前記機器との間の距離を算出する距離算出部と、
前記情報処理装置が前記機器と連携して前記サービスを提供する際に、前記情報処理装置と前記機器との間の距離に基づいて、利用可能な前記機器を判定する利用可否判定部と、
を備えることを特徴とするサーバ装置。
【請求項２】
請求項１に記載のサーバ装置であって、
前記情報処理装置と前記機器との間の距離と、前記情報処理装置の移動速度とに基づいて、前記情報処理装置から前記機器までの移動時間を算出する利用時間算出部を備え、
前記利用可否判定部は、前記サービスの利用予定時間と、前記移動時間とに基づいて、利用可能な前記機器を判定する、
ことを特徴とするサーバ装置。
【請求項３】
請求項２に記載のサーバ装置であって、
前記情報処理装置が提供するサービスの標準的な所要時間を記憶するサービス情報に基づいて、前記サービスの利用予定時間を算出し、前記機器ごとに記憶されている前記サービスの利用予定時間を更新する利用時間更新部、
を備えることを特徴とするサーバ装置。
【請求項４】
請求項２に記載のサーバ装置であって、
前記利用時間更新部は、前記サービスの利用予定時間が、あらかじめ定められた前記情報処理装置の待機限度時間を越えているか否かを判定し、当該判定の結果に基づいて、前記情報処理装置を待機させる、
ことを特徴とするサーバ装置。
【請求項５】
請求項２に記載のサーバ装置であって、
前記利用可否判定部が利用可能な前記機器がないと判定した場合において、開始予定のサービスの利用予定時間に対応付けて記憶されている前記サービスの優先度が、実行中のサービスの利用予定時間に対応付けて記憶されている前記サービスの優先度よりも高い場合、前記機器を利用可能と判定する優先度判定部、
を備えることを特徴とするサーバ装置。
【請求項６】
請求項３に記載のサーバ装置であって、
前記利用時間更新部は、前記サービスの現在の状態や進行度を示すサービスステートにおいて、前記サービスの利用予定時間を更新する、
ことを特徴とするサーバ装置。
【請求項７】
請求項４に記載のサーバ装置であって、
前記利用時間更新部は、前記サービスの利用予定時間が、あらかじめ定められた前記情報処理装置の待機限度時間を越えていると判定した場合、当該サービスの代替機能を提供する、
ことを特徴とするサーバ装置。
【請求項８】
自律移動可能な情報処理装置の位置情報と、サービス提供拠点に設置され、前記情報処理装置が提供するサービスに必要な機器の位置情報とに基づいて、前記情報処理装置と前記機器との間の距離を算出し、
前記情報処理装置が前記機器と連携して前記サービスを提供する際に、前記情報処理装置と前記機器との間の距離に基づいて、利用可能な前記機器を判定する、
ことを特徴とする装置制御方法。
【請求項９】
請求項８に記載の装置制御方法であって、
前記情報処理装置と前記機器との間の距離と、前記情報処理装置の移動速度とに基づいて、前記情報処理装置から前記機器までの移動時間を算出し、
前記利用可否判定において、前記サービスの利用予定時間と、前記移動時間とに基づいて、利用可能な前記機器を判定する、
ことを特徴とする装置制御方法。
【請求項１０】
請求項９に記載の装置制御方法であって、
前記情報処理装置が提供するサービスの標準的な所要時間を記憶するサービス情報に基づいて、前記サービスの利用予定時間を算出し、前記機器ごとに記憶されている前記サービスの利用予定時間を更新する、
ことを特徴とする装置制御方法。
【請求項１１】
請求項９に記載の装置制御方法であって、
前記利用時間更新において、前記サービスの利用予定時間が、あらかじめ定められた前記情報処理装置の待機限度時間を越えているか否かを判定し、当該判定の結果に基づいて、前記情報処理装置を待機させる、
ことを特徴とする装置制御方法。
【請求項１２】
請求項９に記載の装置制御方法であって、
前記利用可否判定において利用可能な前記機器がないと判定した場合において、開始予定のサービスの利用予定時間に対応付けて記憶されている前記サービスの優先度が、実行中のサービスの利用予定時間に対応付けて記憶されている前記サービスの優先度よりも高い場合、前記機器を利用可能と判定する、
ことを特徴とする装置制御方法。
【請求項１３】
請求項１０に記載の装置制御方法であって、
前記利用時間更新において、前記サービスの現在の状態や進行度を示すサービスステートにおいて、前記サービスの利用予定時間を更新する、
ことを特徴とする装置制御方法。
【請求項１４】
請求項１１に記載の装置制御方法であって、
前記利用時間更新において、前記サービスの利用予定時間が、あらかじめ定められた前記情報処理装置の待機限度時間を越えていると判定した場合、当該サービスの代替機能を提供する、
ことを特徴とする装置制御方法。
【請求項１５】
コンピュータに、
自律移動可能な情報処理装置の位置情報と、サービス提供拠点に設置され、前記情報処理装置が提供するサービスに必要な機器の位置情報とに基づいて、前記情報処理装置と前記機器との間の距離を算出する処理と、
前記情報処理装置が前記機器と連携して前記サービスを提供する際に、前記情報処理装置と前記機器との間の距離に基づいて、利用可能な前記機器を判定する処理と、
を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置、装置制御方法、および記録媒体に関するものである。
【背景技術】
【０００２】
あらゆる機器をインターネットに接続し、種々のサービスを提供するＩｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ（ＩｏＴ）技術が普及しつつある。インターネットに接続される機器の数が急速に増加する中、コミュニケーションを用いて人間に種々のサービスを提供するロボットシステムの技術開発が行われている。ロボットはモータ・アクチュエータ等による移動機能を備えている反面、機体のサイズ、形状等の制約から、ロボットに搭載可能な機器には制約が生じる。例えば、大型ディスプレイのような表示機器をロボットに搭載するには、ロボット自身のサイズも大型である必要があるし、搭載できるディスプレイのサイズ、場所にも制約が生じる。そこで、ロボットシステムにおいてロボットに搭載できない機器を利用可能とするためには、サービス提供に必要な機器をロボットの外部に設置し、外部機器をロボットが制御する方法が考えられる。
【０００３】
これに対して、特許文献１では、ネットワークに接続された印刷装置などの周辺機器内ソフトウェアリソースを管理する装置であって、周辺機器内のソフトウェアリソース情報の種類を記憶する記憶手段と、ネットワーク上の周辺機器を指定する第１の指定手段と、ネットワーク上の周辺機器を指定する第２の指定手段と、第１の指定手段で指定された周辺機器内のソフトウェアリソースが第２の指定手段で指定された周辺機器内のソフトウェアリソースに含まれるかどうかを判定する判定手段からなることを特徴とする、周辺機器管理装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−４６７０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された技術を用いれば、サービス提供に必要なソフトウェアリソースを持つ周辺機器を選択することが可能となる。しかしながら、ロボットによる接客、案内などのサービスを人に対して実施する場合には、単純に機器が使えるか否かだけでなく、機器の近さや、状態を考慮し、できるだけ早く使える機器を選択し、スムーズにサービスを提供する必要がある。
【０００６】
本発明は、人に対してスムーズにサービスを提供することが可能なサーバ装置、装置制御方法、および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明にかかるサーバ装置は、自律移動可能な情報処理装置を制御するサーバ装置であって、前記情報処理装置の位置情報と、サービス提供拠点に設置され、前記情報処理装置が提供するサービスに必要な機器の位置情報とに基づいて、前記情報処理装置と前記機器との間の距離を算出する距離算出部と、前記情報処理装置が前記機器と連携して前記サービスを提供する際に、前記情報処理装置と前記機器との間の距離に基づいて、利用可能な前記機器を判定する利用可否判定部と、を備えることを特徴とするサーバ装置として構成される。
【０００８】
また、本発明は、上記サーバ装置で行われる装置制御方法、コンピュータ読み取り可能な記録媒体としても把握される。
【発明の効果】
【０００９】
本発明によれば、人に対してスムーズにサービスを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例１のロボット制御システムの構成の例を示す図である。
【図２】運用管理サーバの構成の例を示す図である。
【図３】外部機器連携処理の例を示すフローチャートである。
【図４】距離算出処理の例を示すフローチャートである。
【図５】機器利用可否判定処理の例を示すフローチャートである。
【図６】機器利用時間算出処理の例を示すフローチャートである。
【図７】サービス優先度判定処理の例を示すフローチャートである。
【図８】機器利用時間更新処理の例を示すフローチャートである。
【図９】運用管理サーバが管理するデータの構造を示すブロック図である。
【図１０】サービス制御サーバの構成の例を示す図である。
【図１１】サービス制御処理の例を示すフローチャートである。
【図１２】サービス処理の例を示すフローチャートである。
【図１３】代替機能提供処理の例を示すフローチャートである。
【図１４】サービス制御サーバが管理するデータの構造を示すブロック図である。
【図１５】外部機器制御サーバの構成の例を示す図である。
【図１６】外部機器制御処理の例を示すフローチャートである。
【図１７】ロボットの構成の例を示す図である。
【図１８】位置管理処理の例を示すフローチャートである。
【図１９】シナリオ制御処理の例を示すフローチャートである。
【図２０】ロボットが管理するデータの構造を示すブロック図である。
【図２１】外部機器の構成の例を示す図である。
【図２２】外部機器制御処理の例を示すフローチャートである。
【図２３】外部機器が管理するデータの構造を示すブロック図である。
【図２４】外部機器連携の例を示すシーケンス図である。
【図２５】機器利用時間更新の例を示すシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施例を図面に基づいて詳細に説明する。
【実施例１】
【００１２】
図１は、実施例１の移動機器向け外部機器管理システム１０００の構成の例を示す図である。移動機器向け外部機器管理システム１０００は、システム全体の運用管理を実施する運用管理サーバ１０と、ロボットによるサービスを制御するサービス制御サーバ２０と、サービス機器を制御する外部機器制御サーバ３０とが配置される運用管理センタ８０と、移動機器として自律移動可能な情報処理装置であるロボット６０と、ロボット６０と連携したサービスを実行する外部機器７０とが配置されるサービス拠点９０を含む。ここでは移動機器を自律移動可能な情報処理装置であるロボット６０として説明するが、移動機器はロボットに限定されるものではなく、ドローンや自動運転車のように広範囲を移動可能な機器も含まれる。
【００１３】
運用管理センタ８０とサービス拠点９０はネットワーク４０で接続される。また、サービス拠点内は構内ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）５０で接続される。構内ＬＡＮの接続方式は、例えば有線ＬＡＮ、無線ＬＡＮ、短距離無線であり、複数の接続方式を併用してもよい。
【００１４】
図２は、運用管理サーバ１０の構成の例を示す図である。運用管理サーバ１０には、一般的なコンピュータの補助記憶装置１０４にプログラム（ソフトウェア）が格納され、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０２が、補助記憶装置１０４から読み出したプログラムをメモリ１０１上に展開して、実行する。運用管理サーバ１０は、ネットワークインタフェース（Ｉ／Ｆ）１０５を介して他のサーバやサービス機器、ロボットと通信する。
【００１５】
Ｉ／Ｏ（入出力インタフェース）１０３は、ユーザが運用管理サーバ１０に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。Ｉ／Ｏ１０３には、入出力デバイス（例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど）が接続される。Ｉ／Ｏ１０３は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
【００１６】
ＣＰＵ１０２は、メモリ１０１に格納されたプログラムを実行するプロセッサである。メモリ１０１は、不揮発性の記憶素子であるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）及び揮発性の記憶素子であるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）などが格納される。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、補助記憶装置１０２に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
【００１７】
具体的に、メモリ１０１は、外部機器連携プログラム１１１、距離算出プログラム１１２、機器利用可否判定プログラム１１３、機器利用時間算出プログラム１１４、サービス優先度判定プログラム１１５、機器利用時間更新プログラム１１６が格納される。
【００１８】
外部機器連携プログラム１１１は、外部機器連携処理（図３参照）を実行するためのプログラムである。距離算出プログラム１１２は、距離算出処理（図４参照）を実行するためのプログラムである。機器利用可否判定プログラム１１３は、機器利用可否判定処理（図５参照）を実行するためのプログラムである。機器利用時間算出プログラム１１４は、機器利用時間算出処理（図６参照）を実行するためのプログラムである。サービス優先度判定プログラム１１５は、サービス優先度判定処理（図７参照）を実行するためのプログラムである。機器利用時間更新プログラム１１６は、機器利用時間更新処理（図８参照）を実行するためのプログラムである。
【００１９】
また、メモリ１０１は、ロボット状態ＤＢ１２１（図９参照）、サービス情報ＤＢ１２２（図９参照）、外部機器情報ＤＢ１２３（図９参照）、ロボット情報ＤＢ１２４（図９参照）、外部機器利用状況ＤＢ１２５（図９参照）が格納される。
【００２０】
補助記憶装置１０４は、例えば、磁気記憶装置（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置１０４は、ＣＰＵ１０２により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装１０４から読み出されて、メモリ１０１にロードされ、ＣＰＵ１０２によって実行される。
【００２１】
運用管理サーバ１０は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ１０１に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、運用管理サーバ１０と他の装置が一つの物理的又は論理的計算機に収容されてもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア（例えば、ＦＰＧＡ：Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）によって実現してもよい。
【００２２】
さらに、上記プログラムは、ＲＯＭ等に予め組み込まれて提供されたり、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供したり、配布してもよい。さらには、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供したり、配布してもよい。
【００２３】
図３は、外部機器連携処理の例を示すフローチャートである。外部機器連携処理は、外部機器連携プログラム１１１が運用管理サーバ１０のＣＰＵ１０２で実行されることにより行われる処理である。外部機器連携プログラム１１１は、運用管理サーバ１０が、外部機器を必要とするサービスを開始する情報を取得することにより行われる処理である。
【００２４】
まず、外部機器連携プログラム１１１は、ロボット６０が外部機器を必要とするサービスの外部機器情報（図８）を取得する（ステップ１１１１）。例えば、外部機器連携プログラム１１１は、サービスを提供するためのサービス要求を受けると、そのサービス要求に含まれるサービス識別子をキーにしてサービス情報ＤＢ１２２（図９）を参照し、提供すべきサービスを特定する。外部機器連携プログラム１１１は、特定したサービスのサービス識別子に対応する外部機器パラメータを参照し、当該外部機器パラメータに含まれる外部機器７０の機器識別子をキーにして、さらに外部機器情報ＤＢ１２３（図９）を参照し、当該機器識別子により識別される外部機器７０を、上記サービスの提供に必要な機器と判断する。
【００２５】
その後、外部機器連携プログラム１１１は、距離算出プログラム１１２を起動し、距離算出処理（図４参照）を実行し（ステップ１１１２）、距離があらかじめ設定された閾値１より小さい範囲に外部機器７０が存在するか否かを判定する（ステップ１１１３）。外部機器連携プログラム１１１は、上記閾値１より小さい範囲に外部機器７０が存在しないと判定した場合は（ステップ１１１３；Ｎｏ）、上記提供すべきサービスの継続が不可であることを示す利用不可能メッセージをサービス制御サーバ２０に送信し（ステップ１１２０）、処理を終了する。
【００２６】
一方で、外部機器連携プログラム１１１は、上記閾値１より小さい範囲に外部機器７０が存在すると判定した場合は（ステップ１１１３；Ｙｅｓ）、機器利用可否判定プログラム１１３を起動し、機器利用可否判定処理（図５参照）を実行し（ステップ１１１４）、利用可能な外部機器が存在するか否かを判定する（ステップ１１１５）。外部機器連携プログラム１１１は、利用可能な外部機器が存在すると判定した場合は（ステップ１１１５；Ｙｅｓ）、機器利用時間算出プログラム１１４を起動し、機器利用時間算出処理（図６参照）を実行し（ステップ１１１６）、サービス制御サーバ２０に対象の外部機器情報を送信し（ステップ１１１７）、処理を終了する。例えば、外部機器連携プログラム１１１は、利用可能な外部機器の機器識別子および機器種別を含む外部機器情報ＤＢ１２３に記憶されている情報と、その時点における当該機器識別子に対応する最新の外部機器利用状況ＤＢ１２５のサービス予想継続時間とを対応付けた利用可能メッセージを上記外部機器情報としてサービス制御サーバ２０に送信する。
【００２７】
一方で、外部機器連携プログラム１１１は、利用可能な外部機器が存在しないと判定した場合は（ステップ１１１５；Ｎｏ）、サービス優先度判定プログラム１１５を起動し、サービス優先度判定処理を実行し（ステップ１１１８）、機器利用可否判定プログラム１１３は、利用可能になる外部機器７０があるか否かを判定する（ステップ１１１９）。外部機器連携プログラム１１１は、利用可能になる外部機器７０があると判定した場合は（ステップ１１１９；Ｙｅｓ）、ステップ１１１６、１１１７に進み、処理を終了する。外部機器連携プログラム１１１は、利用可能になる外部機器７０がないと判定した場合は（ステップ１１１９；Ｎｏ）、ステップ１１２０に進み、処理を終了する。
【００２８】
図４は、距離算出処理の例を示すフローチャートである。距離算出処理は、距離算出プログラム１１２が運用管理サーバ１０１のＣＰＵで実行されることにより行われる処理である。
【００２９】
距離算出プログラム１１２では、まずロボット状態ＤＢ１２１（図９）を参照し、ロボット６０の位置情報を取得する（ステップ１１２１）。例えば、距離算出プログラム１１２は、自装置に記憶されているロボット識別子をキーにしてロボット状態ＤＢ１２１を参照し、当該ロボット識別子に対応する座標情報（Ｘ座標、Ｙ座標）を読み取る。
【００３０】
次に、距離算出プログラム１１２は、サービス情報ＤＢ１２２を参照し、サービスに必要な外部機器の種別を取得する（ステップ１１２２）。例えば、距離算出プログラム１１２は、ステップ１１１１で取得されたサービス要求に含まれるサービス識別子をキーにして、ステップ１１１１と同様に、提供すべきサービスに必要な外部機器７０を特定し、外部機器パラメータに含まれる機器識別子と機器種別とを読み取る。
【００３１】
さらに、距離算出プログラム１１２は、読み取った機器識別子および機器種別をキーにして外部機器情報ＤＢ１２３を参照し、サービスに必要な外部機器の位置情報を取得する（ステップ１１２３）、対象の外部機器が存在するか否かを判定する（ステップ１１２４）。例えば、距離算出プログラム１１２は、外部機器情報ＤＢ１２３に記憶されている上記機器識別子および機器種別に対応する座標情報（Ｘ座標、Ｙ座標）を読み取り、当該外部機器７０が存在するか否かを判定する。
【００３２】
距離算出プログラム１１２は、対象の外部機器が存在しないと判定した場合は（ステップ１１２４；Ｎｏ）、処理を終了する。一方で、距離算出プログラム１１２は、対象の外部機器７０が存在すると判定した場合は（ステップ１１２４；Ｙｅｓ）、ロボット６０の位置情報と、外部機器７０の位置情報から、ロボット６０から当該外部機器７０までの距離を算出する（ステップ１１２５）。さらに、距離算出プログラム１１２は、ロボット情報ＤＢ１２４（図９）を参照してロボットの移動速度を取得し、ロボット６０が外部機器７０の位置に到達するまでの移動時間を算出する（ステップ１１２６）。例えば、距離算出プログラム１１２は、上記ロボット識別子をキーにしてロボット情報ＤＢ１２４を参照し、当該ロボット識別子に対応するロボットパラメータに含まれる移動速度を読み取り、算出した上記距離と当該移動速度とからロボット６０の移動速度を算出する。
【００３３】
図５は、機器利用可否判定処理の例を示すフローチャートである。機器利用可否判定処理は、機器利用可否判定プログラム２１３が運用管理サーバ１０１のＣＰＵで実行されることにより行われる処理である。
【００３４】
機器利用可否判定プログラム２１３では、まず外部機器利用状況ＤＢ１２５を参照し、ロボット６０と外部機器７０の距離が閾値１より小さい範囲に存在する外部機器７０の利用状況（サービス予想継続時間）を取得する（ステップ１１３１）。例えば、機器利用可否判定プログラム２１３は、ステップ１１２２で読み取った機器識別子をキーにして外部機器利用状況ＤＢ１２５を参照し、当該機器識別子に対応するサービス予想継続時間（例えば、サービス１予想継続時間）を取得する。
【００３５】
次に、機器利用可否判定プログラム２１３は、ロボット６０と外部機器７０の距離が閾値１より小さい範囲に存在する外部機器７０ごとに現在別のサービスが利用中であるか否か（上記サービス予想継続時間内か否か）を判定する（ステップ１１３２）。機器利用可否判定プログラム２１３は、別のサービスが利用中でないと判定した場合（ステップ１１３２；Ｎｏ）、その外部機器７０を利用可と判定し（ステップ１１３５）、現在時刻にロボット６０がその外部機器７０の場所まで移動するための移動時間を加算した時間をサービス開始可能時間とする。
【００３６】
一方で、機器利用可否判定プログラム２１３は、別のサービスが利用中であると判定した場合（ステップ１１３５；Ｙｅｓ）、別のサービスの上記サービス予想継続時間である利用予定時間とあらかじめ設定された閾値２を次の条件で比較する。当該閾値２は、上記別のサービスの利用予定時間の終了見込みを判断するための閾値である。
【００３７】
条件１：利用予定時間≧閾値２
機器利用可否判定プログラム２１３は、上記条件１を満たすか否かを判定し（ステップ１１３３）、上記条件１を満たすと判定した場合は（ステップ１１３３；Ｙｅｓ）、外部機器７０を利用不可と判定する（ステップ１１３４）。機器利用可否判定プログラム２１３は、上記条件１を満たさないと判定した場合は（ステップ１１３３；Ｎｏ）、外部機器７０を利用可と判定し（ステップ１１３５）、現在時刻に外部機器７０を現在使用している別のサービスの利用予定時間もしくはロボット６０が外部機器７０の場所まで移動するための移動時間の小さい方を加算した時刻、すなわち早くサービスを開始できる時刻をサービス開始可能時間とする（ステップ１１３６）。
【００３８】
そして、機器利用可否判定プログラム２１３は、全ての外部機器の中でサービス開始可能時間が最も小さい外部機器７０を選択し（ステップ１１３７）、処理を終了する。
【００３９】
図６は、機器利用時間算出処理の例を示すフローチャートである。機器利用時間算出処理は、機器利用時間算出プログラム２１４が運用管理サーバ１０１のＣＰＵで実行されることにより行われる処理である。
【００４０】
機器利用時間算出プログラム２１４では、まず外部機器７０を現在利用しているサービスの利用予定時間（上記サービス予想継続時間）と、ロボット６０から外部機器７０までの移動時間を比較し、上記利用予定時間がロボット６０の移動時間よりも長いか否かを判定する（ステップ１１４１）。
【００４１】
機器利用時間算出プログラム２１４は、上記利用予定時間がロボットの移動時間よりも長いと判定した場合は（ステップ１１４１；Ｙｅｓ）、外部機器７０を現在利用しているサービスの終了時間（上記サービス予想継続時間の終了時刻）から、サービス情報ＤＢ１２２の残りのサービスの終了時間（標準継続時間のうちの残りのステートの標準継続時間）が経過するまでのサービス利用予定時間を算出して機器利用時間とし（ステップ１１４２）、外部機器利用状況ＤＢ１２５のサービス予想継続時間をそれぞれステートにおいて更新し（ステップ１１４３）、処理を終了する。
【００４２】
より具体的には、機器利用時間算出プログラム２１４は、上記利用予定時間がロボットの移動時間よりも長いため、ロボット６０が移動した後もまだサービスの利用が継続していると判断する。機器利用時間算出プログラム２１４は、ステップ１１１１で取得されたサービス要求に含まれるサービス識別子をキーにしてサービス情報ＤＢ１２２を参照し、当該サービス識別子に対応する標準継続時間およびステートの標準継続時間（ステート１標準継続時間〜ステートＮ標準継続時間）を読み取る。機器利用時間算出プログラム２１４は、ステップ１１２２で読み取った機器識別子をキーにして外部機器利用状況ＤＢ１２５を参照し、現在時刻と上記サービスの終了時間とから上記残りのサービスの終了時間を算出し、算出した時間が経過するまでの時間を新たなサービス利用予定時間として算出し、外部機器利用状況ＤＢ１２５のサービス予想継続時間を、当該新たなサービス利用予定時間に更新する。
【００４３】
一方で、機器利用時間算出プログラム２１４は、上記利用予定時間がロボットの移動時間よりも長くないと判定した場合は（ステップ１１４１；Ｎｏ）、すなわち、ロボット６０の外部機器７０までの移動時間の方が長い場合は、ロボット６０が外部機器７０に到着する時間をサービス開始時間とし（ステップ１１４４）、当該サービス利用予定開始時間と、ステップ１１４２で算出した上記サービス利用予定時間とを加えた時間を新たなサービス利用予定時間とし（ステップ１１４５）、外部機器利用状況ＤＢ１２５のサービス予想継続時間を、当該新たなサービス利用予定時間に更新し（ステップ１１４３）、処理を終了する。
【００４４】
図７は、サービス優先度判定処理の例を示すフローチャートである。サービス優先度判定処理は、サービス優先度判定プログラム１１５が運用管理サーバ１０１のＣＰＵで実行されることにより行われる処理である。
【００４５】
サービス優先度判定プログラム１１５では、まず、開始予定のサービスである上記提供すべきサービスの優先度と、閾値３を以下の条件で比較する（ステップ１１５１）。例えば、サービス優先度判定プログラム１１５は、上記提供すべきサービスのサービス識別子をキーにしてサービス情報ＤＢ１２２を参照し、当該サービス識別子に対応する優先度を読み取り、以下の条件２を満たすか否かを判定する。当該閾値３は、上記提供すべきサービスと他のサービスに比べて優先させるか否かを判断するための閾値である。
【００４６】
条件２：開始予定のサービスの優先度≧閾値３
サービス優先度判定プログラム１１５は、上記条件２を満たすか否かを判定し（ステップ１１５１）、上記条件２を満たさないと判定した場合は（ステップ１１５１；Ｎｏ）、処理を終了する。一方、サービス優先度判定プログラム１１５は、上記条件２を満たすと判定した場合は（ステップ１１５１；Ｙｅｓ）、ステップ１１１５で利用可能と判定された外部機器毎に、実行中のサービスの優先度を取得する（ステップ１１５２）。例えば、サービス優先度判定プログラム１１５は、上記利用可能と判定された外部機器７０の機器識別子をキーにして外部機器利用状況ＤＢ１２５を参照し、当該機器識別子に対応するサービス優先度を読み取る。
【００４７】
サービス優先度判定プログラム１１５は、開始予定のサービスの優先度と外部機器７０で実行中のサービスの優先度とを比較して、外部機器７０で実行中のサービスの優先度よりも開始予定のサービスの優先度が高い外部機器７０が存在するか否かを判定し（ステップ１１５３）、開始予定のサービスの優先度の方が高くなる外部機器がないと判定した場合（ステップ１１５３；Ｎｏ）、処理を終了する。一方、サービス優先度判定プログラム１１５は、開始予定のサービスの優先度の方が高くなる外部機器があると判定した場合（ステップ１１５３；Ｙｅｓ）、一旦、ステップ１１１５において利用可能でないと判定された場合であっても外部機器７０を利用可能と判定し（ステップ１１５４）、処理を終了する。
【００４８】
図８は、機器利用時間更新処理の例を示すフローチャートである。機器利用時間更新処理は、機器利用時間更新プログラム１１６が運用管理サーバ１０１のＣＰＵで実行されることにより行われる処理である。
【００４９】
機器利用時間更新プログラム１１６では、まず、サービス制御サーバ２０からサービスの現在の状態や進行度を示すサービスステート情報（図１４）を取得する（ステップ１１６１）。例えば、機器利用時間更新プログラム１１６は、上記提供すべきサービスのサービス識別子をキーにして、サービス制御サーバ２０に記憶されているサービス情報ＤＢ２２１を参照し、当該サービス識別子に対応するステート動作およびサービスパラメータを取得する。また、機器利用時間更新プログラム１１６は、サービス状態情報ＤＢ２２２を参照し、上記サービス識別子に一致する提供中サービス識別子に対応するサービスステートと開始時間と終了予定時間とを含むステート情報を取得する。
【００５０】
次に、機器利用時間更新プログラム１１６は、サービス状態情報ＤＢ２２２から取得したサービスステートが終了を示すステートであるか否かを判定し（ステップ１１６２）、サービスステートが終了を示すステートでないと判定した場合は（ステップ１１６２；Ｎｏ）、サービス情報ＤＢ１２２を参照し、現在のサービスステートからサービス終了までの予想継続時間を算出する（ステップ１１６９）。
【００５１】
例えば、機器利用時間更新プログラム１１６は、上記提供すべきサービスのサービス識別子をキーにしてサービス情報ＤＢ１２２を参照し、ステップ１１６１で取得したステート動作のステートに対応するステート標準継続時間と、当該ステート以降の残りのステートの標準継続時間とを加算することにより、上記予想継続時間を算出する。
【００５２】
さらに、機器利用時間更新プログラム１１６は、ステップ１１６１で取得したサービスステートに対応する提供中サービス識別子により識別されるサービスで利用している外部機器７０の利用待ちをしているサービスがあるか否かを判定し（ステップ１１７０）、当該サービスがないと判定した場合は（ステップ１１７０；Ｎｏ）処理を終了する。例えば、機器利用時間更新プログラム１１６は、ステップ１１１５で読み取られた機器識別子をキーにして外部機器利用状況ＤＢ１２５を参照し、当該機器識別子により識別される外部機器７０を用いて、上記提供中サービス識別子により識別されるサービスよりもサービス優先度が低いサービスがあるか否かを判定し、当該サービスがないと判定した場合は処理を終了する。
【００５３】
一方、機器利用時間更新プログラム１１６は、当該サービスがあると判定した場合（ステップ１１７０；Ｙｅｓ）、すなわち、サービスステートを取得したサービスで利用している外部機器７０の利用待ちをしているサービスがあると判定した場合は、ステップ１１６７に進む。
【００５４】
ステップ１１６２に戻り、機器利用時間更新プログラム１１６は、サービス制御サーバ２０から取得したサービスステートの種別が終了を示すステートであると判定した場合は（ステップ１１６２；Ｙｅｓ）、ステップ１１７０の場合と同様に、外部機器利用状況ＤＢを参照し（ステップ１１６３）、サービス対象の外部機器に別のサービスの利用待ちがあるか否かを判定する（ステップ１１６４）。機器利用時間更新プログラム１１６は、サービス対象の外部機器に別のサービスの利用待ちがないと判定した場合は（ステップ１１６４；Ｎｏ）、外部機器利用状況ＤＢ１２５を更新し（ステップ１１６８）、処理を終了する。
【００５５】
一方、機器利用時間更新プログラム１１６は、サービス対象の外部機器に別のサービスの利用待ちがあると判定した場合は（ステップ１１６４；Ｙｅｓ）、サービス制御サーバ２０に、次に待機しているサービスの開始を通知するメッセージを送信する（ステップ１１６５）。例えば、機器利用時間更新プログラム１１６は、ステップ１１１５で読み取られた機器識別子をキーにして外部機器利用状況ＤＢ１２５を参照し、当該機器識別子により識別される外部機器７０を用いて、上記提供中サービス識別子により識別されるサービスよりもサービス優先度が低いサービスがあるか否かを判定し、当該サービスがあると判定した場合、上記サービス優先度が低いサービスのサービス識別子を含む上記メッセージをサービス制御サーバ２０に送信する。
【００５６】
さらに、機器利用時間更新プログラム１１６は、サービス情報ＤＢ１２２を参照し、外部機器の利用待ちをしているサービス毎にサービス予想継続時間を算出する（ステップ１１６６）。サービス予想継続時間は、ステップ１１４２または１１４５で算出した時間と同様、現在のステートからステートＮまでの標準継続時間を合計した時間である。
【００５７】
機器利用時間更新プログラム１１６は、外部機器の利用待ちをしているサービスの中で、算出したサービス予想継続時間が、あらかじめサービスごとに定められた待機限度時間を超えるか否かを判定し、待機限度時間を超えない場合にはサービスを提供するロボット６０を待機させ、待機限度時間を超える場合には、サービス制御サーバ２０に、当該サービスの代替機能の提供を要求するためのメッセージを送信し（ステップ１１６７）、外部機器利用状況ＤＢ１２５を更新し（ステップ１１６８）、処理を終了する。
【００５８】
図９は、運用管理サーバ１０のメモリ１０１に記憶される各種のデータベースの構造を表す。
【００５９】
ロボット状態ＤＢ１２１は、ロボット６０の状態に関する情報を管理するデータベースである。図９に示すように、ロボット状態ＤＢ１２１は、ロボット６０を識別するためのロボット識別子と、ロボット６０が設置されているサービス拠点９０を識別するための拠点識別子、当該拠点識別子により識別される拠点の地理的情報を含む拠点マップ、当該拠点マップにおけるロボット６０の位置情報を示すＸ座標およびＹ座標を含む。拠点識別子は拠点を一意に識別する識別子であり、端的には拠点の名称、あるいはシステムの命名規則に従って設定された文字列等が指定される。拠点マップはサービス拠点９０の形状、広さ、見取り図など、拠点の物理的構造に関する情報であり、ロボット６０の設置時に情報の初期設定が行われる。ロボット６０には自己位置推定機能があり、レーザーレンジファインダ等を用いて周囲の壁と自身の距離を測定することで、サービス拠点９０内の自身の位置（Ｘ座標，Ｙ座標）を判定できる。
【００６０】
サービス情報ＤＢ１２２は、ロボット６０が提供するサービスの情報を管理するデータベースである。図９に示すように、サービス情報ＤＢ１２２は、サービスを一意に特定するサービス識別子、サービスを実行するために必要となる標準的な時間である標準継続時間、サービスの状態を示すステート毎に、各ステートにおける動作や制御を実行するために必要となる標準的な時間であるステート標準時間、サービスの優先度を示すサービス優先度、サービスを実行する際に必要となる外部機器の条件を示す外部機器パラメータ、サービスを実行できない場合に実行する代替機能を一意に特定する代替機能識別子を含む。外部機器パラメータには、外部機器７０の機器識別子と、当該機器の機器種別とが含まれる。機器種別としては、例えば、モニタ（０１）、スピーカ（０２）、タッチパネル（０３）等というように、当該サービスの提供に必要な機器とその識別情報が、上記外部機器７０の条件として記憶されている。なお、サービス情報ＤＢ１２２には、実際には、上記代替機能識別子に対応付けて、実際に代替機能を提供するための代替アプリケーションが記憶されている。例えば、提供不可能なサービスがディスプレイを用いた案内である場合、当該サービスの代替機能として、スピーカを用いた音声情報を出力して案内するアプリケーションが記憶されている。サービス識別子と同様のステート動作およびサービスパラメータが、代替アプリケーションにより提供されるサービスの状態を示すステート毎に、当該アプリケーションの代替機能識別子に対応付けて代替ステート動作および代替サービスパラメータとして記憶されている。
【００６１】
外部機器情報ＤＢ１２３は、ロボット６０が利用可能な外部機器７０の情報を管理するデータベースである。図９に示すように、外部機器情報ＤＢ１２３は、外部機器７０を一意に特定する機器識別子、外部機器の種類を表す機器種別、外部機器がサービス拠点９０内で設置されている位置情報Ｘ座標およびＹ座標、外部機器７０を制御するために利用可能なパラメータのリスト（機器制御パラメータ１〜機器制御パラメータＮ）を含む。機器制御パラメータの内容は対象となる外部機器７０の種別によって変化する。例えば、外部機器がデジタルサイネージのような出力機器であれば、機器制御パラメータとしては画面のオン／オフ、画面に表示するコンテンツの識別子、コンテンツにおける表示箇所（ページ数、ＵＲＬ等）が指定される。外部機器がカメラであれば、機器制御パラメータにはカメラの角度（パン・チルト）を設定することができる。サービス機器がエレベータであれば、機器制御パラメータはエレベータへの移動要求、階数指定が考えられる。
【００６２】
ロボット情報ＤＢ１２４は、運用管理サーバ１０が管理しているロボット６０の情報を管理するデータベースである。図９に示すように、ロボット情報ＤＢ１２４は、ロボットを一意に特定するロボット識別子、ロボットが持つ性能を示すパラメータのリスト（ロボットパラメータ１〜ロボットパラメータＮ）を含む。例えば、ロボット６０の移動速度や回転速度、タッチパネルの解像度に関するパラメータがロボットパラメータとして記憶されている。
【００６３】
外部機器利用状況ＤＢ１２５は、外部機器７０の利用予定を管理するデータベースである。図９に示すように、外部機器利用状況ＤＢ１２５は、外部機器の利用が予定されるサービス毎に、予想されるサービスの継続時間（サービス１予想継続時間〜サービスＮ予想継続時間）、外部機器を利用する予定のサービス毎の優先度（サービス１優先度〜サービスＮ優先度）を含む。サービス予想継続時間は、現在提供しているサービスが終了するまでの時間を示す。また、サービス優先度は、他のサービスとの関係において、上記サービス予想継続時間に対応する当該サービスが優先される順位を示し、例えば、優先度が高いほど大きな値の数値が記憶される。
【００６４】
図１０は、サービス制御サーバ２０の構成の例を示す図である。サービス制御サーバ２０には、一般的なコンピュータの補助記憶装置２０４にプログラム（ソフトウェア）が格納され、ＣＰＵ２０２が、補助記憶装置２０４から読み出したプログラムをメモリ２０１上に展開して、実行する。サービス制御サーバ２０は、ネットワークＩ／Ｆ２０５を介して他のサーバやサービス機器、ロボットと通信する。
【００６５】
Ｉ／Ｏ２０３は、ユーザがサービス制御サーバ２０に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。Ｉ／Ｏ２０３には、入出力デバイス（例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど）が接続される。Ｉ／Ｏ２０３は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
【００６６】
ＣＰＵ２０２は、メモリ２０１に格納されたプログラムを実行するプロセッサである。メモリ２０１は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などが格納される。ＲＡＭは、ＤＲＡＭのような高速かつ揮発性の記憶素子であり、補助記憶装置２０２に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
【００６７】
具体的に、メモリ２０１は、サービス制御プログラム２１１、サービスプログラム２１２、代替機能提供プログラム２１３が格納される。
【００６８】
サービス制御プログラム２１１は、サービス制御処理（図１１参照）を実行するためのプログラムである。サービスプログラム２１２は、サービス処理（図１２参照）を実行するためのプログラムである。代替機能提供プログラム２１３は、代替機能提供処理（図１３参照）を実行するためのプログラムである。
【００６９】
また、メモリ２０１は、サービス情報ＤＢ２２１（図１４参照）、サービス状態情報ＤＢ２２２（図１４参照）が格納される。
【００７０】
補助記憶装置２０４は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置２０４は、ＣＰＵ２０２により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置２０４から読み出されて、メモリ２０１にロードされ、ＣＰＵ２０２によって実行される。
【００７１】
サービス制御サーバ２０は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ２０１に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、サービス制御サーバ２０と他の装置が一つの物理的又は論理的計算機に収容されてもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア（例えば、ＦＰＧＡ）によって実現してもよい。
【００７２】
さらに、上記プログラムは、ＲＯＭ等に予め組み込まれて提供されたり、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録して提供したり、配布してもよい。さらには、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供したり、配布してもよい。
【００７３】
図１１は、サービス制御処理の例を示すフローチャートである。サービス制御処理は、サービス制御プログラム２１１がサービス制御サーバ１０２のＣＰＵで実行されることにより行われる処理である。
【００７４】
サービス制御プログラム２１１では、まず、ロボット６０または外部機器７０からサービス識別子およびロボット識別子、またはサービス識別子および機器識別子を含むサービス開始要求を受信すると、当該サービス識別子をキーにしてサービス情報ＤＢ２２１を参照し（ステップ２１１１）、当該サービス識別子により識別されるサービスが外部機器との連携が必要なサービスであるか否かを判定する（ステップ２１１２）。例えば、サービス制御プログラム２１１は、当該サービス識別子に対応するステート動作およびサービスパラメータを読み取り、上記ステート動作に対応する上記サービスパラメータとして、外部機器７０の機器識別子が含まれているか否かを判定する。
【００７５】
サービス制御プログラム２１１は、外部機器７０との連携が必要なサービスではないと判定した場合（ステップ２１１２；Ｎｏ）、サービス処理（図１２参照）を実行し、処理を終了する。一方、サービス制御プログラム２１１は、外部機器７０との連携が必要なサービスであると判定した場合は（ステップ２１１２；Ｙｅｓ）、運用管理サーバ１０に外部機器７０を利用する要求メッセージを送信し、待機する（ステップ２１１３）。当該要求メッセージには、上記機器識別子が含まれる。
【００７６】
サービス制御プログラム２１１は、運用管理サーバ１０から利用できる外部機器７０が存在するか否かの結果と、当該外部機器７０を利用できるまでの予定時間を含むメッセージを受信し、利用できる外部機器７０があるか判定する（ステップ２１１４）。例えば、サービス制御プログラム２１１は、上記結果として、利用可能な外部機器の機器識別子および機器種別を含む外部機器情報ＤＢ１２３に記憶されている情報と、上記予定時間として、その時点における当該機器識別子に対応する最新の外部機器利用状況ＤＢ１２５のサービス予想継続時間とを対応付けた利用可能メッセージ、あるいは提供すべきサービスの継続が不可であることを示す利用不可能メッセージを運用管理サーバ１０から受信することにより、利用可能な外部機器の有無を判定する。
【００７７】
サービス制御プログラム２１１は、運用管理サーバ１０から受信したメッセージが上記利用可能メッセージであり、利用できる外部機器７０があるか否かを判定し（ステップ２１１４）、利用できる外部機器７０があると判定した場合（ステップ２１１４；Ｙｅｓ）、さらに、サービスを提供可能である内容であるか否かを判定する（ステップ２１１５）。例えば、サービス制御プログラム２１１は、運用管理サーバ１０から受信した上記利用可能メッセージに含まれるサービス予想継続時間が、あらかじめ定められたサービスを提供するまでの待ちを許容する時間を示す閾値（例えば、閾値２）よりも長い時間であるか否かを判定し、上記サービス予想継続時間が上記閾値よりも短いと判定した場合、サービスの提供が可能と判断し、上記サービス予想継続時間が上記閾値以上と判定した場合、サービスの提供が不可能と判断する。
【００７８】
サービス制御プログラム２１１は、サービスの提供が可能であると判定した場合（ステップ２１１５；Ｙｅｓ）、当該サービスを提供するためのサービス処理（図１２参照）を実行し（ステップ２１１６）、処理を終了する。一方、サービス制御プログラム２１１は、運用管理サーバ１０から上記利用不可能メッセージを受信し、利用できる外部機器７０がないと判定した場合（ステップ２１１４；Ｎｏ）、またはサービスの提供が可能でないと判定した場合（ステップ２１１５；Ｎｏ）、当該サービスの代替機能を提供するための代替機能提供処理（図１３参照）を実行し（ステップ２１１７）、処理を終了する。
【００７９】
図１２は、サービス処理の例を示すフローチャートである。サービス処理は、サービスプログラム２１２がサービス制御サーバ１０２のＣＰＵで実行されることにより行われる処理である。
【００８０】
サービスプログラム２１２では、まず運用管理サーバ１０に現在のステート情報を送信する（ステップ２１２１）。例えば、サービスプログラム２１２は、ステップ２１１１でロボット６０または外部機器７０から受信した上記サービス開始要求に含まれるサービス識別子をキーにサービス状態情報ＤＢ２２２を参照し、上記サービス識別子に一致する提供中サービス識別子に対応するサービスステートと開始時間と終了予定時間とを読み取り、これらの情報を上記ステート情報として運用管理サーバ１０に送信する。
【００８１】
続いて、サービスプログラム２１２は、上記サービス開始要求に含まれるロボット識別子により識別されるロボット６０に、サービスステートに対応するシナリオ情報を送信する（ステップ２１２２）。例えば、サービスプログラム２１２は、上記提供中サービス識別子に対応するサービスステートに含まれるシナリオ情報を読み取り、送信する。シナリオ情報は、提供中のサービスを構成するシナリオを識別するためのシナリオ識別子と、当該シナリオ識別子により識別されるシナリオを構成するシナリオ動作の順序を示す動作順序番号を含む情報である。シナリオ識別子および動作順序番号については後述する。
【００８２】
サービスプログラム２１２は、ロボット６０または外部機器７０から受信した上記サービス開始要求に含まれるサービス識別子をキーにサービス情報ＤＢ２２１を参照し、当該サービス識別子に対応するステート動作を読み取り、読み取ったステート動作に対応するサービスパラメータを外部機器７０の制御情報として外部機器制御サーバ３０に送信する（ステップ２１２３）。例えば、サービスプログラム２１２は、上記ステート動作がディスプレイを用いた案内を行うための動作である場合、その動作に対応するサービスパラメータ（例えば、ディスプレイの電源をＯＮするための外部機器に対する機器制御パラメータ）を、制御情報として外部機器制御サーバ３０に送信する。
【００８３】
サービスプログラム２１２は、サービス状態情報ＤＢ２２２を更新し（ステップ２１２４）、処理を終了する。例えば、サービスプログラム２１２は、提供するサービスを実行して、順次、ステート動作１〜ステート動作Ｎが実行される都度、実行を開始するステート動作をサービス状態情報ＤＢ２２２のサービスステートに書き込む。このとき、実行を開始するステート動作の開始時間および終了予定時間を合わせて書き込み、現在のステート情報とする。上記ステート動作は、ステップ２１２１で送信したサービスステートであり、サービスプログラム２１２は、あるステート動作（例えば、電源ＯＮ）を実行した後、次のステート動作（例えば、ディスプレイへの挨拶文表示）に更新する。
【００８４】
図１３は、代替機能提供処理の例を示すフローチャートである。代替機能提供処理は、代替機能提供プログラム２１３がサービス制御サーバ１０２のＣＰＵで実行されることにより行われる処理である。
【００８５】
代替機能提供プログラム２１３では、まず、提供中サービス識別子に対応するサービスステートを取得すると（ステップ２１４１）、サービス情報ＤＢ２２１を参照し、上記提供中サービス識別子に一致するサービス識別子に対応する代替機能識別子を取得する（ステップ２１４２）。代替機能提供プログラム２１３は、上記代替識別子に対応づけて記憶されている代替アプリケーションを起動して代替機能のサービスをスタートし（ステップ２１４３）、代替ステート動作毎にサービス状態情報ＤＢ２２２を更新し（ステップ２１４４）、運用管理サーバ１０に現在のステート情報を送信し（ステップ２１４５）、処理を終了する。例えば、代替機能提供プログラム２１３は、起動した代替アプリケーションを実行して、順次、代替ステート動作１〜代替ステート動作Ｎが実行される都度、実行を開始する代替ステート動作をサービス状態情報ＤＢ２２２のサービスステートに書き込む。このとき、実行を開始する代替ステート動作の開始時間および終了予定時間を合わせて書き込み、書き込んだ後のサービス状態情報ＤＢ２２２を上記現在のステート情報を運用管理サーバ１０に送信する。
【００８６】
図１４は、サービス制御サーバ２０のメモリ２０１に存在する各種のデータベースの構造を表す。 
サービス情報ＤＢ２２１は、ロボット６０が提供するサービスの情報を管理するデータベースである。図１４に示すように、サービス情報ＤＢ２２１は、サービスを一意に特定するサービス識別子、サービス識別子により識別されるサービスを構成するステートの動作を示すステート動作、各ステート動作によりサービスを実行するために必要となるパラメータを示すサービスパラメータ、サービスを実行できない場合に実行する代替機能を一意に特定する代替機能識別子、代替識別子により識別される代替アプリケーションを構成するステートの動作を示す代替ステート動作、各代替ステート動作により代替アプリケーションを実行するために必要となるパラメータを示す代替サービスパラメータを含む。ステート動作および代替ステート動作には、ロボット６０がシナリオを動作させるために必要な情報、外部機器７０を制御するための制御情報が含まれる。
【００８７】
サービス状態情報ＤＢ２２２は、サービス制御サーバが提供中のサービスを管理するデータベースである。図１４に示すように、サービス状態情報ＤＢ２２２は、提供中のサービスを一意に特定する提供中サービス識別子、提供中のサービスのサービスステート、サービスステートとして記憶されているステート動作または代替ステート動作の開始時間、終了予定時間を含む。
【００８８】
図１５は、外部機器制御サーバ３０の構成の例を示す図である。外部機器制御サーバ３０には、一般的なコンピュータの補助記憶装置３０４にプログラム（ソフトウェア）が格納され、ＣＰＵ３０２が、補助記憶装置３０４から読み出したプログラムをメモリ３０１上に展開して、実行する。外部機器制御サーバ３０は、ネットワークＩ／Ｆ３０５を介して他のサーバやサービス機器、ロボットと通信する。
【００８９】
Ｉ／Ｏ３０３は、ユーザが外部機器制御サーバ３０に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。Ｉ／Ｏ３０３には、入出力デバイス（例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど）が接続される。Ｉ／Ｏ３０３は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
【００９０】
ＣＰＵ３０２は、メモリ３０１に格納されたプログラムを実行するプロセッサである。メモリ３０１は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などが格納される。ＲＡＭは、ＤＲＡＭのような高速かつ揮発性の記憶素子であり、補助記憶装置３０２に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
【００９１】
具体的に、メモリ３０１は、外部機器制御プログラム３１１が格納される。
【００９２】
外部機器制御プログラム３１１は、外部機器連携処理（図１６参照）を実行するためのプログラムである。
【００９３】
補助記憶装置３０４は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置３０４は、ＣＰＵ３０２により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置３０４から読み出されて、メモリ３０１にロードされ、ＣＰＵ３０２によって実行される。
【００９４】
外部機器制御サーバ３０は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ３０１に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、外部機器制御サーバ３０と他の装置が一つの物理的又は論理的計算機に収容されてもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア（例えば、ＦＰＧＡ）によって実現してもよい。
【００９５】
さらに、上記プログラムは、ＲＯＭ等に予め組み込まれて提供されたり、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録して提供したり、配布してもよい。さらには、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供したり、配布してもよい。
【００９６】
図１６は、外部機器制御処理の例を示すフローチャートである。外部機器制御処理は、外部機器制御プログラム３１１が外部機器制御サーバ１０３のＣＰＵで実行されることにより行われる処理である。
【００９７】
外部機器制御プログラム３１１では、まず、外部機器７０を利用することを示す情報（例えば、Ｓ２１１３の外部機器利用要求）を取得すると、外部機器の利用状態を示す情報を取得する（ステップ３１１１）。上記利用状態を示す情報とは、外部機器が利用可能な状態であるか否かを示す情報であり、例えば、当該外部機器がビジー状態であることを示す信号である。
【００９８】
外部機器制御プログラム３１１は、取得した上記利用状態を示す情報が利用可能な状態を示す情報であるか否かを判定し（ステップ３１１２）、外部機器が利用可能な状態を示す情報であると判定した場合（ステップ３１１２；Ｙｅｓ）、ステップ２１２３でサービス制御サーバ２０から送信された外部機器７０の制御情報を外部機器７０に転送する（ステップ３１１３）。
【００９９】
一方、外部機器制御プログラム３１１は、外部機器が利用不可な状態を示す情報であると判定した場合（ステップ３１１２；Ｎｏ）、外部機器が利用不可なことを示すメッセージを運用管理サーバ１０に送信し（ステップ３１１４）、処理を終了する。
【０１００】
図１７は、ロボット６０の構成の例を示す図である。ロボット６０のには、一般的なコンピュータの補助記憶装置６０４にプログラム（ソフトウェア）が格納され、ＣＰＵ６０２が、補助記憶装置６０４から読み出したプログラムをメモリ６０１上に展開して、実行する。ロボット６０は、ＬＡＮ  Ｉ／Ｆ６０５を介して他の機器と通信する。さらにロボット６０は、頭、腕、脚といったロボットの機構部分である機構部６０６と、機構部を制御する機構制御部６０７と、音声を発するスピーカ６０８と、音声を収集するマイク６０９と、発光部６１０と、カメラやレーザによる距離測定器などの位置測定用のセンサ６２０とを備える。
【０１０１】
Ｉ／Ｏ６０３は、ユーザがロボット６０に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。Ｉ／Ｏ６０３には、入出力デバイス（例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど）が接続される。Ｉ／Ｏ６０３は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
【０１０２】
ＣＰＵ６０２は、メモリ６０１に格納されたプログラムを実行するプロセッサである。メモリ６０１は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などが格納される。ＲＡＭは、ＤＲＡＭのような高速かつ揮発性の記憶素子であり、補助記憶装置６０２に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
【０１０３】
具体的に、メモリ６０１は、位置管理プログラム６１１、シナリオ制御プログラム６１２が格納される。
【０１０４】
位置管理プログラム６１１は、位置管理処理（図１８参照）を実行するためのプログラムである。シナリオ制御プログラム６１２は、シナリオ制御処理（図１９参照）を実行するためのプログラムである。
【０１０５】
また、メモリ６０１は、ロボット状態情報ＤＢ６２１（図２０参照）、シナリオ情報ＤＢ６２２（図２０参照）が格納される。
【０１０６】
補助記憶装置６０４は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置６０４は、ＣＰＵ６０２により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置６０４から読み出されて、メモリ６０１にロードされ、ＣＰＵ６０２によって実行される。
【０１０７】
ロボット６０の計算機システムは、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ６０１に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア（例えば、ＦＰＧＡ）によって実現してもよい。
【０１０８】
さらに、上記プログラムは、ＲＯＭ等に予め組み込まれて提供されたり、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録して提供したり、配布してもよい。さらには、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供したり、配布してもよい。
【０１０９】
図１８は、位置管理処理の例を示すフローチャートである。位置管理処理は、位置管理プログラム６１１がロボット１０７のＣＰＵで実行されることにより行われる処理である。
【０１１０】
位置管理プログラム６１１は、まずロボット状態情報ＤＢ６２１を参照し、拠点マップを取得する（ステップ６１１１）。次に、位置管理プログラム６１１は、取得した拠点マップと、距離測定用センサ６２０で取得した情報により、自己位置推定を行い、ロボット６０がマップ上のどの位置にあるかを推定する（ステップ６１１２）。そして、推定した位置を当該ロボット６０の位置情報として運用管理サーバ１０に送信し（ステップ６１１３）、処理を終了する。
【０１１１】
図１９は、シナリオ制御処理の例を示すフローチャートである。シナリオ制御処理は、シナリオ制御プログラム６１２はロボット１０７のＣＰＵで実行されることにより行われる処理である。
【０１１２】
シナリオ制御プログラム６１２は、まず、サービス制御サーバ２０から、ロボット６０がサービスを提供するためのシナリオを実行するためのシナリオ開始メッセージを受信すると（ステップ６１２１）、当該シナリオ開始メッセージに含まれるシナリオ識別子をキーにしてシナリオ情報ＤＢ６２２を参照し（ステップ６１２２）、当該シナリオ識別子に対応するシナリオ動作（シナリオ動作１〜シナリオ動作Ｎ）を実行する（６１２３）。シナリオ動作の実行が終了すると、シナリオ制御プログラム６１２は、サービス制御サーバ２０に上記シナリオ識別子を含むシナリオ終了メッセージを送信する（ステップ６１２４）。
【０１１３】
図２０は、ロボット６０のメモリ６０１に記憶される各種のデータベースの構造を表す。ロボット状態情報ＤＢ６２１は、図９に示したロボット状態ＤＢ１２１と同様のデータベースであるため、ここではその説明を省略する。
【０１１４】
シナリオ情報ＤＢ１２２は、ロボット６０が提供するサービスのシナリオの情報を管理するデータベースである。図２０に示すように、シナリオ情報ＤＢ１２２は、シナリオを一意に特定するシナリオ識別子、シナリオの動作を定義した情報（シナリオ１動作〜シナリオＮ動作）を含む。
【０１１５】
図２１は、外部機器７０の構成の例を示す図である。外部機器７０には、一般的なコンピュータの補助記憶装７０４にプログラム（ソフトウェア）が格納され、ＣＰＵ７０２が、補助記憶装置７０４から読み出したプログラムをメモリ７０１上に展開して、実行する。外部機器７０は、ネットワークＩ／Ｆ７０５を介して他のサーバや外部機器、ロボットと通信する。
【０１１６】
Ｉ／Ｏ３０３は、ユーザが外部機器７０に指示を入力し、プログラムの実行結果などをユーザに提示するためのユーザインタフェースである。Ｉ／Ｏ７０３には、入出力デバイス（例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタなど）が接続される。Ｉ／Ｏ７０３は、ネットワークを経由して接続された管理端末によって提供されるユーザインタフェースが接続されてもよい。
【０１１７】
ＣＰＵ７０２は、メモリ７０１に格納されたプログラムを実行するプロセッサである。メモリ７０１は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などが格納される。ＲＡＭは、ＤＲＡＭのような高速かつ揮発性の記憶素子であり、補助記憶装置７０２に格納されたプログラム及びプログラムの実行時に使用されるデータが一時的に格納される。
【０１１８】
具体的に、メモリ７０１は、外部機器プログラム７１１が格納される。
【０１１９】
外部機器プログラム７１１は、外部機器処理（図２２参照）を実行するためのプログラムである。
【０１２０】
また、メモリ７０１は、外部機器情報ＤＢ７２１（図２３参照）が格納される。
【０１２１】
補助記憶装置３０４は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）などの大容量かつ不揮発性の記憶装置である。また、補助記憶装置３０４は、ＣＰＵ３０２により実行されるプログラム及びプログラムの実行時に使用されるデータが格納される。すなわち、プログラムは、補助記憶装置３０４から読み出されて、メモリ３０１にロードされ、ＣＰＵ３０２によって実行される。
【０１２２】
外部機器制御サーバ３０は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、メモリ３０１に格納されたプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、外部機器制御サーバ３０と他の装置が一つの物理的又は論理的計算機に収容されてもよい。なお、プログラムの実行によって実現される処理の全部又は一部の処理をハードウェア（例えば、ＦＰＧＡ）によって実現してもよい。
【０１２３】
さらに、上記プログラムは、ＲＯＭ等に予め組み込まれて提供されたり、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録して提供したり、配布してもよい。さらには、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供したり、配布してもよい。
【０１２４】
図２２は、外部機器制御処理の例を示すフローチャートである。外部機器制御処理は、外部機器制御プログラム７１１が外部機器１０６のＣＰＵで実行されることにより行われる処理である。
【０１２５】
外部機器制御プログラム７１１は、まず、ステップ３１１３において外部機器制御サーバ３０から転送された外部機器７０の制御情報を取得すると（ステップ７１１１）、外部機器情報ＤＢ７２１を更新し（ステップ７１１２）、更新後の外部機器情報ＤＢ７２１の状態情報を、当該状態情報に対応する機器識別子とともに外部機器制御サーバ３０に送信し（ステップ７１１３）、処理を終了する。
【０１２６】
図２３は、外部機器７０のメモリ７０１に記憶される各種のデータベースの構造を表す。
【０１２７】
外部機器情報ＤＢ７２１は、外部機器７０の情報を管理するデータベースである。図２３に示すように、外部機器情報ＤＢ７２１は、図９に示した外部機器情報ＤＢ１２３と同様の項目に加え、外部機器７０の状態情報を記憶する。当該状態情報は、例えば、外部機器が利用可能な状態であるか否かを示す情報であり、例えば、当該外部機器がビジー状態であることを示す信号である。
【０１２８】
図２４は、ロボット６０が外部機器７０との連携を必要とするサービスを実行する際の処理の例を示すシーケンス図である。図２４に示すように、サービス制御サーバ２０は、サービス制御プログラム２１１を実行し、外部機器７０との連携が必要なサービスを実行する場合、運用管理サーバ１０に外部機器連携を要求するメッセージを送信する（ステップ２４０１、図１１）。
【０１２９】
運用管理サーバ１０は、外部機器連携を要求するメッセージを受信すると、外部機器連携プログラム１１１を実行し（ステップ２４０２、図３）、距離算出プログラム１１２を実行し（ステップ２４０３、図４）、機器利用可否判定プログラム１１３を実行し（ステップ２４０４、図５）、機器利用時間算出プログラム１１４を実行する（ステップ２４０５、図６）。利用可能な外部機器７０の情報をサービス制御サーバ２０に送信する。サービス制御サーバ２０は、運用管理サーバ１０から送信された利用可能な外部機器７０の情報を受信すると、サービスプログラム２１２を実行し（ステップ２４０６、図１２）、ロボット６０に実行するシナリオの内容を含む制御メッセージを送信する。
【０１３０】
ロボット６０は、サービス制御サーバ２０から制御メッセージを受信すると、シナリオ制御プログラム６１２を実行し（ステップ２４０７、図１９）、外部機器７０を利用するタイミングで外部機器制御サーバ３０に外部機器の制御メッセージを送信する。外部機器制御サーバ３０は、ロボット６０から外部機器７０の制御メッセージを受信すると、外部機器制御プログラム３１１を実行し（ステップ２４０８、図１６）、外部機器７０の制御を開始し、外部機器７０に制御メッセージを送信する。外部機器７０は、外部機器制御サーバ３０から制御メッセージを受信すると、外部機器プログラム７１１を実行し（ステップ２４０９、図２２）、制御メッセージ内容の動作を実行する。
【０１３１】
図２５は、外部機器７０を利用しているサービスの状況によって外部機器利用状況ＤＢ１２５を更新するための処理である。図２５に示すように、ロボット６０は、シナリオ制御プログラム６１２を実行し（ステップ２５０１、図１９）、シナリオが終了すると、シナリオが終了したことを示すメッセージをサービス制御サーバ２０に送信する。サービス制御サーバ２０は、ロボット６０からシナリオが終了したことを示すメッセージを受信すると、サービスステートを変更し（ステップ２５０２、図１１）、変更したサービスステート情報を運用管理サーバ１０に送信する。運用管理サーバ１０は、サービス制御サーバ２０からサービスステート情報を送信すると、機器利用時間更新プログラム１１６を実行し（ステップ２５０３、図８）、サービス毎の利用予定時間を算出し、外部機器利用状況ＤＢ１２５を更新する。
【０１３２】
このように、本実施例によれば、ロボットが外部機器との連携が必要なサービスを人に対して提供する際に、外部機器との距離や外部機器の使用状況によって外部機器を選択することで、人に対してスムーズにサービスを提供することが可能となる。
【０１３３】
なお、本発明を実施するための形態は、以上で説明した実施例に限定されるものではなく、様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成の一部を加えてもよい。
【０１３４】
また、前述したプログラムによる処理などは、それらの一部又は全部を、例えば集積回路で設計するなどにより、ハードウェアで実現してもよく、ハードウェアによる処理とプログラムによる処理を組み合わせてもよい。プログラムやテーブルなどの情報は、メモリ、ＨＤＤ、ＳＳＤなどの記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤなどの記録媒体に格納することができる。また、制御線や情報線は説明上必要なものを示しており、示した以外の制御線や情報線があってもよい。
【符号の説明】
【０１３５】
１０００  外部機器管理システム
１０  運用管理サーバ
２０  サービス制御サーバ
３０  機器制御サーバ
４０  ネットワーク
５０  構内ＬＡＮ
６０  ロボット
７０  外部機器
８０  運用管理センタ
９０  サービス拠点
【図１】
2019021162.tif 000003
【図２】
2019021162.tif 000004
【図３】
2019021162.tif 000005
【図４】
2019021162.tif 000006
【図５】
2019021162.tif 000007
【図６】
2019021162.tif 000008
【図７】
2019021162.tif 000009
【図８】
2019021162.tif 000010
【図９】
2019021162.tif 000011
【図１０】
2019021162.tif 000012
【図１１】
2019021162.tif 000013
【図１２】
2019021162.tif 000014
【図１３】
2019021162.tif 000015
【図１４】
2019021162.tif 000016
【図１５】
2019021162.tif 000017
【図１６】
2019021162.tif 000018
【図１７】
2019021162.tif 000019
【図１８】
2019021162.tif 000020
【図１９】
2019021162.tif 000021
【図２０】
2019021162.tif 000022
【図２１】
2019021162.tif 000023
【図２２】
2019021162.tif 000024
【図２３】
2019021162.tif 000025
【図２４】
2019021162.tif 000026
【図２５】
2019021162.tif 000027