(57)【要約】【課題】  状態遷移表を使用することなく、ロボットの異常が発生した場合であっても要求されたサービスの実行を継続することができるロボット制御システムを提供する。【解決手段】  本発明は、サービスフロー実行状態管理テーブルにサービス実行に必要なロボット保有能力、ロールバック定義及びサービス実行状態などを記憶し、ロボットに関するテーブルにロボットの保有能力、状態などを記憶し、サービス実行中のロボットに異常が発生して、当該ロボットがサービスの継続をできない場合に、上記テーブルに格納されたデータを参照することにより、状態遷移表を使用することなく要求されたサービスの実行を行なうものである。【選択図】図３
2006239849.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが行なうサービスのサービスフロー識別情報と、このサービスフローを起動するために必要とされるサービスフロー起動イベントとが互いに関連付けて記憶されるサービスフロー情報テーブルと、
サービスフローを構成するサービスのサービス識別情報と、サービスフロー識別情報と、サービス実行に必要なロボット保有能力と、ロールバック定義と、サービス実行状態とを互いに関連付けて記憶するサービスフロー実行状態管理テーブルと、
ロボット識別情報と、ロボットの状態と、ロボットの位置とを互いに関連付けて記憶するロボット情報テーブルと、
ロボット識別情報と、ロボットの保有能力とを互いに関連付けて記憶するロボット保有能力テーブルと、
サービスフロー起動イベントを検出する検出手段と、
前記検出されたサービスフロー起動イベント及びサービス実行状態が未実行であることをキーとして、前記サービスフロー情報テーブル、サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットのロボット識別情報を選択する選択手段と、
前記選択されたロボットのサービス中における異常を検出する検出手段と、
前記サービスフロー実行状態管理テーブルを参照することにより、前記異常が検出されたロボットのサービス識別情報以前のロールバック定義のうち、所定の値を有する直近のロールバック定義に対応するサービス識別情報によって示されるサービスから前記サービスフローをロボットに実行させる実行手段と
を具備することを特徴とするロボット制御システム。
【請求項２】
前記実行手段は、
前記所定の値を有する直近のロールバック定義に対応するサービス実行状態を未実行に書き換える手段と、
前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって示されるサービスをロボットに実行させる手段と
を具備することを特徴とする請求項１記載のロボット制御システム。
【請求項３】
前記実行手段は、
前記選択されたロボットの識別情報に対応するロボットが、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって表わされるサービス以降のサービスを実行可能か否かを判断する手段と、
実行可能ではないと判断された場合に、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって表わされるサービス以降のサービスを実行することが可能な他のロボットの識別情報を前記サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを参照することにより取得する手段と
を具備することを特徴とする請求項２記載のロボット制御システム。
【請求項４】
前記選択手段は、
前記検出されたサービスフロー起動イベントをキーとして、前記サービスフロー情報テーブルを検索することによりサービスフロー識別情報を得て、このサービスフロー識別情報及びサービス実行状態が未実行をキーとして、前記サービスフロー実行状態管理テーブルを検索することにより、サービスフロー実行に必要なロボット保有能力を得て、このロボット保有能力及びロボットの状態が待機状態であることをキーとして、前記ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットの識別情報を選択することを特徴とする請求項１記載のロボット制御システム。
【請求項５】
ロボットが行なうサービスのサービスフロー識別情報と、このサービスフローを起動するために必要とされるサービスフロー起動イベントとが互いに関連付けて記憶されるサービスフロー情報テーブルと、
サービスフローを構成するサービスのサービス識別情報と、サービスフロー識別情報と、サービス実行に必要なロボット保有能力と、ロールバック定義と、サービス実行状態とを互いに関連付けて記憶するサービスフロー実行状態管理テーブルと、
ロボット識別情報と、ロボットの状態と、ロボットの位置とを互いに関連付けて記憶するロボット情報テーブルと、
ロボット識別情報と、ロボットの保有能力とを互いに関連付けて記憶するロボット保有能力テーブルとを具備するロボット制御システムにおけるロボット制御方法において、
サービスフロー起動イベントを検出する検出ステップと、
前記検出されたサービスフロー起動イベント及びサービス実行状態が未実行であることをキーとして、前記サービスフロー情報テーブル、サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットのロボット識別情報を選択する選択ステップと、
前記選択されたロボットのサービス中における異常を検出する検出ステップと、
前記サービスフロー実行状態管理テーブルを参照することにより、前記異常が検出されたロボットのサービス識別情報以前のロールバック定義のうち、所定の値を有する直近のロールバック定義に対応するサービス識別情報によって示されるサービスから前記サービスフローをロボットに実行させる実行ステップとを具備することを特徴とするロボット制御方法。
【請求項６】
前記実行ステップは、
前記所定の値を有する直近のロールバック定義に対応するサービス実行状態を未実行に書き換え、
前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって示されるサービスを実行することを特徴とする請求項５記載のロボット制御方法。
【請求項７】
前記実行ステップは、
前記選択されたロボットの識別情報に対応するロボットが、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって表わされるサービス以降のサービスを実行可能か否かを判断し、
実行可能ではないと判断された場合に、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって表わされるサービス以降のサービスを実行することが可能な他のロボットの識別情報を前記サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを参照することにより取得することを特徴とする請求項６記載のロボット制御方法。
【請求項８】
前記選択ステップは、
前記検出されたサービスフロー起動イベントをキーとして、前記サービスフロー情報テーブルを検索することによりサービスフロー識別情報を得て、このサービスフロー識別情報及びサービス実行状態が未実行をキーとして、前記サービスフロー実行状態管理テーブルを検索することにより、サービスフロー実行に必要なロボット保有能力を得て、このロボット保有能力及びロボットの状態が待機状態であることをキーとして、前記ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットの識別情報を選択することを特徴とする請求項５記載のロボット制御方法。
【請求項９】
ロボットが行なうサービスのサービスフロー識別情報と、このサービスフローを起動するために必要とされるサービスフロー起動イベントとが互いに関連付けて記憶されるサービスフロー情報テーブルと、
サービスフローを構成するサービスのサービス識別情報と、サービスフロー識別情報と、サービス実行に必要なロボット保有能力と、ロールバック定義と、サービス実行状態とを互いに関連付けて記憶するサービスフロー実行状態管理テーブルと、
ロボット識別情報と、ロボットの状態と、ロボットの位置とを互いに関連付けて記憶するロボット情報テーブルと、
ロボット識別情報と、ロボットの保有能力とを互いに関連付けて記憶するロボット保有能力テーブルとを具備するロボット制御システムにおいて実行されるプログラムにおいて、
前記プログラムは、前記ロボット制御システムに、
サービスフロー起動イベントを検出させる検出ステップと、
前記検出されたサービスフロー起動イベント及びサービス実行状態が未実行であることをキーとして、前記サービスフロー情報テーブル、サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットの識別情報を選択させる選択ステップと、
前記選択されたロボットのサービス中における異常を検出させる検出ステップと、
前記サービスフロー実行状態管理テーブルを参照することにより、前記異常が検出されたロボットのサービス識別情報以前のロールバック定義のうち、所定の値を有する直近のロールバック定義に対応するサービス識別情報によって示されるサービスから前記サービスフローを実行させる実行ステップと
を具備することを特徴とするプログラム。
【請求項１０】
前記選択ステップは、
前記検出されたサービスフロー起動イベントをキーとして、前記サービスフロー情報テーブルを検索することによりサービスフロー識別情報を得て、このサービスフロー識別情報及びサービス実行状態が未実行をキーとして、前記サービスフロー実行状態管理テーブルを検索することにより、サービスフロー実行に必要なロボット保有能力を得て、このロボット保有能力及びロボットの状態が待機状態であることをキーとして、前記ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットの識別情報を選択することを特徴とする請求項９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービス実行中のロボットに異常が発生した場合であってもサービスフローを実行することができるロボット制御システムに関する。
【背景技術】
【０００２】
複数のロボットを制御することにより所定のサービスを実行し、ロボットに異常が発生した場合などの異常系処理を有するロボット制御システムが開発されている。このようなロボット制御システムの１つとして、例えば、状態遷移表を使用して、ロボットに異常が発生した場合などの異常系処理を網羅したサービスフローの状態遷移記述を行ない、このような状態遷移記述に基づいて異常系処理を行なうロボット制御システムが存在する。
【０００３】
また、操作者から受けたタスクを、自律性を持つロボット装置だけで実行可能かどうかロボット仕様データベースを参照して判断し、実行可能な場合はその命令を実行し、実行不可能な場合は実行できない部分を補完する他のロボット装置を探し、そのロボット装置と分担して命令を実行するロボット制御システムが開示されている（特許文献1参照）。
【０００４】
【特許文献１】特開2003−291083号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の状態遷移表を使用したロボット制御システムでは、異常処理系をシステムとして矛盾なく実装する際には、状態遷移表を使用していることからその追加、変更の実装が煩雑になってしまうという問題があった。
また、特許文献１に開示されている技術では、ロボットに異常が発生した場合には、当該サービスの継続を行なうことができなくなってしまうという問題がある。
【０００６】
本発明は、上記実情に鑑みてなされたものであり、状態遷移表を使用することなく、ロボットの異常が発生した場合であっても要求されたサービスの実行を継続することができるロボット制御システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の第１の発明によれば、ロボットが行なうサービスのサービスフロー識別情報と、このサービスフローを起動するために必要とされるサービスフロー起動イベントとが互いに関連付けて記憶されるサービスフロー情報テーブルと、サービスフローを構成するサービスのサービス識別情報と、サービスフロー識別情報と、サービス実行に必要なロボット保有能力と、ロールバック定義と、サービス実行状態とを互いに関連付けて記憶するサービスフロー実行状態管理テーブルと、ロボット識別情報と、ロボットの状態と、ロボットの位置とを互いに関連付けて記憶するロボット情報テーブルと、ロボット識別情報と、ロボットの保有能力とを互いに関連付けて記憶するロボット保有能力テーブルと、サービスフロー起動イベントを検出する検出手段と、前記検出されたサービスフロー起動イベント及びサービス実行状態が未実行であることをキーとして、前記サービスフロー情報テーブル、サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットのロボット識別情報を選択する選択手段と、前記選択されたロボットのサービス中における異常を検出する検出手段と、前記サービスフロー実行状態管理テーブルを参照することにより、前記異常が検出されたロボットのサービス識別情報以前のロールバック定義のうち、所定の値を有する直近のロールバック定義に対応するサービス識別情報によって示されるサービスから前記サービスフローをロボットに実行させる実行手段とを具備することを特徴とするロボット制御システム、である。
【０００８】
また、本発明の第２の発明によれば、第１の発明において、前記実行手段は、前記所定の値を有する直近のロールバック定義に対応するサービス実行状態を未実行に書き換える手段と、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって示されるサービスをロボットに実行させる手段とを具備することを特徴とするロボット制御システム、である。
【０００９】
さらに、本発明の第３の発明によれば、第２の発明において、前記実行手段は、前記選択されたロボットの識別情報に対応するロボットが、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって表わされるサービス以降のサービスを実行可能か否かを判断する手段と、実行可能ではないと判断された場合に、前記未実行に書き換えられたサービス実行状態に対応するサービス識別情報によって表わされるサービス以降のサービスを実行することが可能な他のロボットの識別情報を前記サービスフロー実行状態管理テーブル、ロボット情報テーブル及びロボット保有能力テーブルを参照することにより取得する手段とを具備することを特徴とするロボット制御システム、である。
【００１０】
さらに、本発明の第４の発明によれば、第１の発明において、前記選択手段は、前記検出されたサービスフロー起動イベントをキーとして、前記サービスフロー情報テーブルを検索することによりサービスフロー識別情報を得て、このサービスフロー識別情報及びサービス実行状態が未実行をキーとして、前記サービスフロー実行状態管理テーブルを検索することにより、サービスフロー実行に必要なロボット保有能力を得て、このロボット保有能力及びロボットの状態が待機状態であることをキーとして、前記ロボット情報テーブル及びロボット保有能力テーブルを検索することにより、サービスを実行するロボットの識別情報を選択することを特徴とするロボット制御システム、である。
【発明の効果】
【００１１】
本発明によれば、状態遷移表を使用することなく、ロボットの異常が発生した場合であっても要求されたサービスの実行を継続することができるロボット制御システムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本発明の実施の形態に係るロボット制御システムについて説明する。
図１は、本発明の実施の形態に係るロボット制御システムの全体を示す図である。
同図に示すように、ＬＡＮ、インターネットなどのネットワーク１には接続装置を介してユーザに対してサービスを遂行するロボット２〜４、ディスプレイ５及びスピーカ６などが接続されている。
【００１３】
また、ネットワーク１には、サービス開始イベントを検知して、サービスを遂行する最適なロボットを選択するプラットフォームサーバ７が接続されている。
図２は、プラットフォームサーバの機能を示すブロック図である。
同図に示すように、プラットフォームサーバ７は、サービスフローデータベース１１、ロボットデータベース１２、サービスフロー起動イベント検出部１３、ロボット制御処理部１４及びロボットリソース管理部１５を有している。
【００１４】
上記サービスフロー起動イベント検出部１３、ロボット制御処理部１４及びロボットリソース管理部１５の機能は、プラットフォームサーバ７のロボット制御プログラムにより実現される。
サービスフローデータベース１１は、サービスフロー情報テーブル及びサービスフロー実行状態管理テーブルを具備している。
【００１５】
サービスフロー情報テーブルは、表１に示すように、サービスフロー識別情報（ＩＤ）、サービスフロー名及びサービスフロー起動イベントが互いに関連付けて記憶されている。
【００１６】
【表１】
2006239849.tif 000003
表１においては、サービスフロー識別情報「１００１」、サービスフロー名「挨拶」及びサービスフロー起動イベント「人がエリアに入る」が記憶されている。
サービスフロー実行状態管理テーブルは、表２に示すように、サービス識別情報、サービスフロー識別情報、サービス名、サービス実行に必要なロボット保有能力、ロールバック定義及びサービス実行状態が互いに関連付けて記憶されている。
【００１７】
【表２】
2006239849.tif 000004
表２においては、サービス識別情報「１」、サービスフロー識別情報「１００１」、サービス名「発声認識」、サービス実行に必要なロボット保有能力「listenable」、ロールバック定義「１」及びサービス実行状態「実行完了（成功）」などが記憶されている。
【００１８】
なお、ここではサービスフロー実行状態管理テーブルは、複数のサービスフローに関する情報を１つのテーブルで管理しているものとするが、サービスフロー識別情報に対してサービスフロー実行状態管理テーブルを設けてもよい。
ロボットデータベース１２は、ロボット情報テーブル及びロボット保有能力テーブルを有している。
【００１９】
ロボット情報テーブルは、表３に示すように、ロボット識別情報、ロボット名、ロボットの状態、ロボットの位置に関する情報（ｘ座標、ｙ座標、ｚ座標）が互いに関連付けて記憶されている。
【００２０】
【表３】
2006239849.tif 000005
表３においては、ロボット識別情報「００１１」、ロボット名「ロボットＢ」、ロボットの状態「待機中」、ロボットの位置に関する情報（ｘ座標、ｙ座標、ｚ座標）「（ｘ座標、ｙ座標、ｚ座標）＝（１００，７０，０）」が記憶されている。
【００２１】
ロボット保有能力テーブルは、表４に示すように、保有能力識別情報、ロボット識別情報及び保有能力名が互いに関連付けて記憶されている。
【００２２】
【表４】
2006239849.tif 000006
表４においては、保有能力識別情報「０００２」、ロボット識別情報「００１１」及び保有能力名「movable」などが記憶されている。
サービスフロー起動イベント検出部１３は、センサや画像位置計測装置などの外部からのデータに基づいてサービスフロー起動イベントを検出し、この検出されたサービスフロー起動イベントをキーとしてサービスフロー情報テーブルを検索してサービスフロー識別情報を得て、ロボット制御処理部に送信する。
【００２３】
ロボット制御処理部１４は、サービスフロー起動イベント検出部１３から送信されたサービスフロー識別情報に基づいて、サービスフローデータベース１１及びロボットデータベース１２に格納されたデータを使用して、サービスを行なうロボットの接続装置２１−１，２に対して当該ロボットが行なうサービスを示すサービス識別情報を送信するなどの処理を行なう。また、サービスフロー起動イベント検出部１３及びロボットリソース管理部１５とともに、図３に示すフローチャートの処理を実現する。
【００２４】
ロボットリソース管理部１５は、ロボットのリソースに関する処理を管理するものであり、ロボット状態表現変換部２４−１，２４−２から定期的に送られるロボットの位置及び状態をロボット情報テーブルに逐次登録する。
接続装置２１−１，２は、ロボットＡ，Ｂに対してそれぞれ設けられ、ロボット動作コマンド生成部２２−１，２、ロボット位置・状態取得部２３−１，２及びロボット状態表現変換部２４−１，２を有している。
【００２５】
ロボット動作コマンド生成部２２−１，２は、ロボット動作指示決定部１４から送信されたサービス識別情報によって示されるサービスを実現するロボット固有の動作コマンドを生成して対応するロボットに出力する。
ロボット位置・状態取得部２３−１，２は、対応するロボットの位置及び状態を取得し、対応するロボット状態表現変換部２４−１，２４−２に出力する。
【００２６】
ロボット状態表現変換部２４−１，２４−２は、ロボット位置・状態取得部２３−１，２によって取得されたロボットの位置及び状態の表現をロボット固有の表現からプラットフォームサーバ７に共通の表現形式に変換してロボットリソース管理部部１５に出力する。
【００２７】
次に、本発明の実施の形態に係るロボット制御システムの動作について説明する。
まず、動作の説明を行なう前に、前提となる条件について説明する。ロボット制御システムの前提条件は下記の通りである。
・リソース：ロボットA  1台、ロボットB  1台、スピーカS  1台でいずれも状態は「待機中」
・ロボットAの保有能力：listenable, movable, able-to-speak, able-to-raise-hands
・ロボットBの保有能力：movable, able-to-speak, able-to-raise-hands
・スピーカＳの保有能力：able-to-speak
利用者が利用可能なサービス：
・挨拶サービスフロー：人の発声（「こんにちは」）を認識後、人に近寄って手をあげて挨拶する、サービスを起動するイベント：「人がエリア内に入る」
上述の前提を条件に、図３のフローチャートを参照して、本発明の実施の形態に係るロボット制御システムの動作について説明する。なお、この図３の処理フローは、上述のプラットフォームサーバ７のロボット制御プログラムにより実現される。
【００２８】
利用者である「人がエリア内に入る」というイベントが検出される（Ｓ１）。ここで、利用者の位置検出は、例えばエリア全体を視野内で捉えられるように天井に設置したカメラにより、公知のテンプレートマッチング技術（例えば、特開平9−330402号公報）を用いる。
【００２９】
次に、上記サービスフロー起動イベント「人がエリア内に入る」を条件に、サービスフロー情報テーブルを検索することにより、サービスフローID1001（「挨拶」）が選択される（Ｓ２）。「挨拶」サービスフロー識別情報およびサービス実行状態が「未実行」を条件にサービスフロー実行状態管理テーブルを検索することにより、「挨拶」サービスフロー実行に必要なロボット保有能力としてlistenable, movable, able-to-raise-hands, able-to-speakの4能力が選択され、保存される（Ｓ３）。
【００３０】
ロボット情報テーブルの状態フィールドが「待機中」を条件にロボット情報テーブルを検索し、現在利用可能なリソースとしてロボットA、ロボットB、スピーカSの識別情報が選択される（Ｓ４）。
状態が「待機中」かつ「挨拶」サービスフローの実行に必要な保有能力を備えているリソースはロボットAしかないので、ロボットAの識別情報が選択、決定される。仮に、状態が「待機中」かつ「挨拶」サービスフローの実行に必要なリソースがロボットA以外に複数選択された場合は、利用者に最も直線距離的に近い位置にいるロボットの識別情報が選択される。また、選択されたロボット識別情報をキーとしてロボット情報テーブルを検索して、そのロボットの状態を「待機中」から「実行中」に変更する（Ｓ５，Ｓ６）。一方、Ｓ５において、状態が「待機中」かつ「挨拶」サービスフローの実行に必要な保有能力を備えているリソースが存在しない場合には、処理を終了する。
【００３１】
次に、選択されたサービスフロー識別情報をキーとして、サービスフロー実行状態管理テーブルを検索して、上から実行状態が「未実行」のサービス識別情報を１つ選択し、サービス実行スタック（図示せず）に当該サービスのロールバック定義の値を積む（Ｓ７）。
【００３２】
表４において、全てのサービス実行状態が未実行であると仮定すると、まず、未実行の「発声認識」サービスが選択され、サービス実行スタックにロールバック定義の「1」を積む。サービス実行スタックを例えば [abcdefg]（左側aが古く、右側gが新しい値）と表記すると、スタックの内容は[ ]から[1]となる。そして、当該サービスの実行コマンドがロボットAに送信される（Ｓ８）。
【００３３】
ロボットAにサービスの実行の指示後、当該指示を行なったロボットのサービス実行状態を当該ロボットから取得する。そして、当該サービスフロー識別情報の実行の指示が行なわれたサービス識別情報をキーとしてサービスフロー実行状態管理テーブルを検索して、サービス実行状態フィールドを更新する（Ｓ９）。
【００３４】
ここでは、ロボットA位置・状態取得部２３−１がロボットAから状態情報を取得し、ロボットAから状態取得、サービス実行状態として「発声認識サービス実行中」という状態情報が、ロボット状態表現変換部２４−１からロボットリソース管理部１５に送信される。そして、ロボットリソース管理部１５により、当該サービスフロー識別情報の実行の指示が行なわれたサービス識別情報をキーとしてサービスフロー実行状態管理テーブルが検索されて、サービス実行状態フィールドが更新される。
【００３５】
次に、ロボットに指示したサービスの実行状態についての判断が行なわれる（Ｓ１０）。Ｓ１０における判断において、実行中であると判断された場合にはＳ９の処理に戻り、実行失敗と判断された場合にはＳ１１の処理に移り、実行完了（成功）であると判断された場合にはＳ１８の処理に移る。
【００３６】
ここで、ロボットに異常が発生して実行が失敗したか否かの判断は、例えば、ロボットからエラーが通知される場合、ロボットとの通信が遮断された場合、実行指示を行なったのち一定時間ロボットからの応答がない場合などである。
Ｓ１０において実行失敗と判断された場合には、サービス実行スタックのカウンタ（図示せず）の値を初期化（counter:=1)して（Ｓ１１）、サービス実行スタックの値を取り出す（Ｓ１２）。ここでのサービス実行スタックの値を取り出し方は、後入れ先出し（Last-In First-Out, LIFO）の方法でサービス実行スタックの値を取り出す。
【００３７】
そして、サービス実行スタックから取り出した値が「１」か否かの判断を行ない（Ｓ１３）、「１」ではないと判断された場合にはカウンタの値を１つ加算して(counter+=1)（Ｓ１４）、Ｓ１２の処理に戻る。
一方、Ｓ１３においてサービス実行スタックから取り出した値が「１」であると判断された場合には、サービスフロー実行状態管理テーブルにおいて、counter数値の回数分遡ってサービス再実行を選択し、該当するサービス以降のサービス全ての実行状態を「未実行」にセットする（Ｓ１５）。
【００３８】
本実施の形態においては、表２に示すように、「人に近づいたかの確認」サービス実行中に、ロボットAに異常が発生したとする。すると、
・ロボットA異常発生直後のサービス実行スタックの内容：[11010]
・1回目の取り出し後のサービス実行スタックの内容：[1101]
取り出した値は「人に近づいたかの確認」サービスのロールバック定義の値「0」
・2回目の取り出し後のサービス実行スタックの内容：[110]
取り出した値は「人に近づく」サービスのロールバック定義の値「1」
となる。
【００３９】
したがって、「人に近づく」サービスまで遡って当該サービス再実行を行うように、サービスフロー実行状態管理テーブルの「人に近づく」サービス以降のすべてのサービス実行状態を「未実行」に更新する。
Ｓ１５における処理の後、ロボットに状態取得コマンドを送信し（Ｓ１６）、当該ロボットから一定時間内に応答があるか否かの判断が行なわれる（Ｓ１７）。ここでは、ロボットＡに状態取得コマンドが送信されることになる。
【００４０】
Ｓ１７において状態取得コマンドを送信しても一定期間内に応答がないと判断された場合には、当該ロボットは使用不可能と判断され、Ｓ３の処理に戻り、代替ロボットの検索が行なわれる。
一方、Ｓ１０において、サービス実行状態が実行完了であると判断された場合には、サービスフロー実行状態管理テーブルで、未実行のサービスがあるか否かの判断が行なわれ（Ｓ１８）、未実行のサービスが存在しないと判断された場合には、当該ロボットのロボット識別情報をキーとしてロボット情報テーブルを検索し、状態を「待機中」に更新して（Ｓ１９）、処理を終了する。一方、Ｓ１８において、未実行のサービスが存在すると判断された場合には、Ｓ７の処理に移り、当該未実行のサービスを継続する。
【００４１】
本実施の形態においては、Ｓ３の処理において、サービス実行状態が「未実行」を条件にサービスフロー実行状態管理テーブルを検索し、サービス識別情報およびサービス実行に必要なロボット保有能力を選択する。「人に近づく」サービスから「発話」サービス、ならびにサービス実行に必要なロボット保有能力として「movable」「able-to-raise-hands」「able-to-speak」の3能力が選択される。
【００４２】
そして、Ｓ４乃至Ｓ６の処理において、上記サービス実行に必要なロボット保有能力および状態が「待機中」を条件に、ロボット識別情報が検索され、その結果、ロボットID  0011（「ロボットB」）が選択される。
その後、ロボットBが「人に近づく」サービスから実行し、手をあげて発話すると挨拶サービスフローを終了する。
【００４３】
したがって、本発明の実施の形態に係るロボット制御システムによれば、ロボットの突発的な異常発生に対しても、利用者に対してサービスを継続して提供することができる。
また、ロボットの位置/状態情報、およびサービスフローにおける各サービスの実行状態情報を逐次更新し、データベースで管理する。サービスフロー実行状態管理テーブルにより、サービスから構成される一連のサービスフローにおいて、各サービスの実行状況（未実行/実行中/実行完了(成功)/実行失敗）を管理する。サービスフローの構成要素となる各サービスのグルーピングを行い、何らかの異常でロボットがサービスを遂行できない場合に、どの時点まで遡って再度実行するかを事前に定義、記述しておく。これにより、状態遷移表を使用することなく、ロボットの異常が発生した場合であっても要求されたサービスの実行を継続することができるロボット制御システムを提供することができる。
【００４４】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００４５】
また、実施形態に記載した手法は、計算機（コンピュータ）に実行させることができるプログラム（ソフトウエア手段）として、例えば磁気ディスク（フロッピー（登録商標）ディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ等）、半導体メモリ（ＲＯＭ、ＲＡＭ、フラッシュメモリ等）等の記録媒体に格納し、また通信媒体により伝送して頒布することもできる。なお、媒体側に格納されるプログラムには、計算機に実行させるソフトウエア手段（実行プログラムのみならずテーブルやデータ構造も含む）を計算機内に構成させる設定プログラムをも含む。本装置を実現する計算機は、記録媒体に記録されたプログラムを読み込み、また場合により設定プログラムによりソフトウエア手段を構築し、このソフトウエア手段によって動作が制御されることにより上述した処理を実行する。なお、本明細書でいう記録媒体は、頒布用に限らず、計算機内部あるいはネットワークを介して接続される機器に設けられた磁気ディスクや半導体メモリ等の記憶媒体を含むものである。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施の形態に係るロボット制御システムの全体を示す図である。
【図２】プラットフォームサーバの機能を示すブロック図である。
【図３】本発明の実施の形態に係るロボット制御システムの動作を説明するためのフローチャートである。
【符号の説明】
【００４７】
１…ネットワーク、２〜４…ロボット、５…ディスプレイ、６…スピーカ、７…プラットフォームサーバ、１１…サービスフローデータベース、１２…ロボットデータベース、１３…サービスフロー起動イベント検出部、１４…ロボット制御処理部、１５…ロボットリソース管理部、２１−１，２…接続装置、２２−１，２…ロボット動作コマンド生成部、２３−１，２…ロボット位置・状態取得部、２４−１，２…ロボット状態表現変換部。
【図１】
2006239849.tif 000007
【図２】
2006239849.tif 000008
【図３】
2006239849.tif 000009