(57)【特許請求の範囲】
【請求項１】
ロボットの状態遷移の履歴を複数の状態遷移列の形で保持する工程と、
制御装置で発生された前記ロボットに対する割込要求を受け付ける工程と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する工程と、
前記制御装置に対して前記待ち時間を提示する工程
を含み、
前記複数の状態遷移列間では、状態遷移開始時の最初の状態が互いに同じであり、状態遷移終了時の最後の状態が互いに同じであることを特徴とする、ロボット制御方法。
【請求項２】
前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める工程を更に含み、
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、請求項１記載のロボット制御方法。
【請求項３】
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、請求項２記載のロボット制御方法。
【請求項４】
前記待ち時間を算出する工程は、前記履歴が、前記割込要求を割込可能な状態から前記割込要求を割込可能な状態に至るまでの状態遷移列を保持している場合、前記ロボットの現在の状態を含む部分遷移列を前記履歴から取り出して前記ロボットの現在の状態が先頭となる部分遷移列に基づき前記待ち時間を計算する第１の計算と、前記履歴が、前記割込要求を割込可能な状態から前記割込要求を割込可能でない状態に至るまでの状態遷移列を保持している場合、前記ロボットの現在の状態までの状態遷移列と一致する前記履歴が保持する状態遷移列に基づき前記待ち時間を計算する第２の計算のうちいずれか一方を実行して、前記待ち時間を算出することを特徴とする、請求項１乃至３のいずれか１項記載のロボット制御方法。
【請求項５】
ロボット内のコンピュータに待ち時間を提示させるプログラムであって、
前記ロボットの状態遷移の履歴を複数の状態遷移列の形で記憶部に保持する手順と、
前記ロボットの外部で発生された割込要求を受け付ける手順と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記記憶部に保持された前記履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する手順と、
前記外部に対して前記待ち時間を提示する手順
を前記コンピュータに実行させ、
前記複数の状態遷移列間では、状態遷移開始時の最初の状態が互いに同じであり、状態遷移終了時の最後の状態が互いに同じであることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御方法及びプログラムに係り、特にロボットに対する割込処理の待ち時間を提示するロボット制御方法及びプログラムに関する。本発明は、このようなプログラムを格納したコンピュータ読み取り可能な記憶媒体にも関する。
【背景技術】
【０００２】
商業施設等の、人とロボットが共存する環境において、ロボットによりサービスを提供する各種方法が提案されている。サービスを提供するロボットは、サービスロボットとも呼ばれる。ロボットは、予め決められた状態遷移に従って動作することで、自律動作を実現できる。しかし、ロボットは、自律動作中に人に邪魔されたり、動作できない状態に追い込まれたりして、ロボットが使用される現場で人による対応が必要となる場合がある。又、ロボットが提供するサービスをカスタマイズする場合も、ロボットが使用される現場での対応が必要となる。
【０００３】
そこで、ロボットが提供するべきカスタマイズされたサービスをネットワークを介してロボットへ送り、カスタマイズされたサービスの実行スケジュールをロボットに設定することで、実行スケジュールに従った種々のサービスをロボットに提供させることが提案されている。又、ロボットがサービスを提供中に、ネットワークを介したロボットの遠隔操作を可能にすることで、ロボットが動作できない状態に追い込まれてもその状態からの脱出を可能にすることも提案されている。サービスのカスタマイズと実行スケジュールは、例えばＲＳＮＰ（Robot Service Network Protocol）仕様のタスクプロファイルにより実現できる（例えば、非特許文献１を参照）。又、ロボットの遠隔操作は、例えばＲＳＮＰ仕様のコマンドプロファイルにより実現できる（例えば、非特許文献２を参照）。
【０００４】
ロボットが、施設や売場の案内、販売促進、キャンペーン、買物アドバイス等のサービスを提供している時は、状態遷移による自律動作を行っている。この状態で、ネットワークを介したロボットの遠隔操作を行おうとすると、ロボットが提供しているサービスに割り込んでロボットの操作権を取得してから、実際の遠隔操作を行うことになる。この場合、ロボットは施設利用者等にサービスを提供しているため、提供中のサービスを突然中断することは避ける必要がある。このため、ロボットが割込可能な状態に遷移するのを待ってから、ロボットの操作権を取得するようにする仕組みも提案されている。しかし、提案されている仕組みには、以下に説明する如き問題がある。
【０００５】
ロボットが割込可能な状態に遷移するのを待ってからロボットの操作権を取得する従来の仕組みの一例（例えば、非特許文献２を参照）では、例えば遠隔のサーバからロボットに操作権の獲得を要求した時点でロボットが割込可能な状態でない場合は、サーバはロボットの操作権を獲得できないことをロボットから通知され、サーバはロボットが割込可能な状態に遷移するまで待つ必要がある。しかし、サーバ側では、どの程度の時間待てばロボットが操作可能になるのかを知ることができないので、ロボットの利用効率を向上することは難しい。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】植木 美和他、「ＲＳｉプロトコル仕様V2.0〜タスクプロファイル〜」、第２６回日本ロボット学会学術講演会予稿集、RSJ2008AC3B2-04、2008
【非特許文献２】植木 美和他、ＲＳＮＰによる共通ロボット動作に向けた取組み〜コマンドプロファイル〜」、第２７回日本ロボット学会学術講演会予稿集、RSJ2009AC1J3-08、2009
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来のロボット制御方法では、ロボットが割込可能な状態でない場合、どの程度の時間待てばロボットが割込可能な状態に遷移するのかを知ることができないので、ロボットの利用効率を向上することは難しいという問題があった。
【０００８】
そこで、本発明は、ロボットが割込可能な状態でない場合、どの程度の時間待てばロボットが割込可能な状態に遷移するのかを推定するロボット制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一観点によれば、ロボットの状態遷移の履歴を複数の状態遷移列の形で保持する工程と、制御装置で発生された前記ロボットに対する割込要求を受け付ける工程と、前記ロボットが前記割込要求を割込可能の状態にない場合、前記履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する工程と、前記制御装置に対して前記待ち時間を提示する工程を含み、前記複数の状態遷移列間では、状態遷移開始時の最初の状態が互いに同じであり、状態遷移終了時の最後の状態が互いに同じであるロボット制御方法が提供される。
【００１０】
本発明の一観点によれば、ロボット内のコンピュータに待ち時間を提示させるプログラムであって、前記ロボットの状態遷移の履歴を複数の状態遷移列の形で記憶部に保持する手順と、前記ロボットの外部で発生された割込要求を受け付ける手順と、前記ロボットが前記割込要求を割込可能の状態にない場合、前記記憶部に保持された前記履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する手順と、前記外部に対して前記待ち時間を提示する手順を前記コンピュータに実行させ、前記複数の状態遷移列間では、状態遷移開始時の最初の状態が互いに同じであり、状態遷移終了時の最後の状態が互いに同じであるプログラムが提供される。
【発明の効果】
【００１１】
開示のロボット制御方法及びプログラムによれば、ロボットが割込可能な状態でない場合、どの程度の時間待てばロボットが割込可能な状態に遷移するのかを推定するので、ロボットの利用効率を向上することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施例におけるロボットシステムの一例を説明する図である。
【図２】サーバの構成の一例を示すブロック図である。
【図３】ロボットの構成の一例を示すブロック図である。
【図４】ロボットの状態遷移を説明する図である。
【図５】ロボットの構成の一例を示す機能ブロック図である。
【図６】現在の状態までの状態遷移の履歴を利用しない待ち時間の計算方法を説明するフローチャートである。
【図７】現在の状態までの状態遷移の履歴を利用する待ち時間の計算方法を説明するフローチャートである。
【図８】ロボットシステムの動作の第１の例を説明するフローチャートである。
【図９】ロボットシステムの動作の第２の例を説明するフローチャートである。
【図１０】ロボットシステムの動作の第３の例を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
開示のロボット制御方法及びプログラムでは、ロボットが割込可能な状態でない場合、ロボットの状態遷移の履歴に基づいて割込可能な状態に遷移するまでの待ち時間を推定して提示する。
【００１４】
以下に、開示のロボット制御方法及びプログラムの各実施例を図面と共に説明する。
【実施例】
【００１５】
図１は、本発明の一実施例におけるロボットシステムの一例を説明する図である。図１に示すロボットシステムは、ロボット１とサーバ３がネットワーク２を介して接続された構成を有する。ネットワーク２は、例えば無線ネットワークで形成可能である。ロボット１は、例えば商業施設等の、人とロボットが共存する環境においてサービスを提供するサービスロボットにより形成可能である。サーバ３は、ロボット１の監視、ロボット１に対する割込要求の発生、ロボット１の動作の指示等を行う制御装置を形成する。
【００１６】
図２は、サーバの構成の一例を示すブロック図である。図２に示すように、サーバ３は、ＣＰＵ（Central Processing Unit）３１、記憶部３２、入力部３３、表示部３４、及びインタフェース（Ｉ／Ｆ：Interface）３５がバス３８を介して接続された構成を有する。ＣＰＵ３１は、サーバ３全体の動作の制御を司る。記憶部３２は、ＣＰＵ３１が実行するロボット制御プログラムを含む各種プログラム、ＣＰＵ３１が実行する演算の中間データを含む各種データ等を格納する。入力部３３は、キーボード、マウス等により形成可能であり、ＣＰＵ３１に各種コマンドや各種データを入力するのに用いられる。表示部３４は、オペレータに操作を促す画面を含む各種操作画面、ＣＰＵ３１が実行した演算結果、後述するロボット１に対する割込要求に対する待ち時間情報等の各種情報を表示する。Ｉ／Ｆ３５は、ＣＰＵ３１の制御下で、ネットワーク２からコマンドやデータを受信したり、ネットワーク２へコマンドやデータを送信する。
【００１７】
記憶装置３２は、コンピュータ読み取り可能な記憶媒体により形成可能である。コンピュータ読み取り可能な記憶媒体は、一例として、磁気記録媒体、光記録媒体、光磁気記録媒体、ディスクを記録媒体として用いるディスク装置、ＲＯＭ（Read Only Memory）等を含む半導体記憶装置等を含む。
【００１８】
尚、サーバ３の構成は図２の構成に限定されるものではなく、例えばプロセッサと記憶部を備えた汎用コンピュータで形成可能である。
【００１９】
図３は、ロボットの構成の一例を示すブロック図である。図３に示すように、ロボット１は、ＣＰＵ１１１、記憶部１１２、入力部１１３、出力部１１４、Ｉ／Ｆ１１５、及び駆動部１１６がバス１１８を介して接続された構成を有する。ＣＰＵ１１１は、ロボット１全体の動作の制御を司る。記憶部１１２は、ＣＰＵ１１１が実行する各種プログラム、ＣＰＵ１１１が実行する演算の中間データを含む各種データ等を格納する。入力部１１３は、操作パネル、マイクロホン等により形成可能であり、ＣＰＵ１１１に各種コマンドや各種データを入力するのに用いられる。出力部１１４は、オペレータに操作を促したり案内を提供する音声を出力するスピーカ、オペレータに操作を促したり案内を提供する画面を表示する表示部等により形成可能である。入力部１１３の操作パネルと出力部１１４の表示部は、タッチパネル等の入出力手段により形成しても良い。Ｉ／Ｆ１１５は、ＣＰＵ１１１の制御下で、ネットワーク２からコマンドやデータを受信したり、ネットワーク２へコマンドやデータを送信する。駆動部１１６は、ＣＰＵ１１１の制御下でロボット１の自律走行を可能とする、モータとこのモータにより駆動される車輪等を含む周知の構成を有する。
【００２０】
記憶装置１１２は、コンピュータ読み取り可能な記憶媒体により形成可能である。コンピュータ読み取り可能な記憶媒体は、一例として、磁気記録媒体、光記録媒体、光磁気記録媒体、ディスクを記録媒体として用いるディスク装置、ＲＯＭ（Read Only Memory）等を含む半導体記憶装置等を含む。
【００２１】
尚、ロボット１の駆動部１１６を除く部分の構成は図３の構成に限定されるものではなく、例えばプロセッサと記憶部を備えた汎用コンピュータで形成可能である。又、ロボット１が例えば人型のロボットであれば、ＣＰＵ１１１、記憶部１１２、入力部１１３、出力部１１４、Ｉ／Ｆ１１５、駆動部１１６、及びバス１１８は、人型のフレーム又はボディ（図示せず）内に設けられることは言うまでもない。
【００２２】
先ず、ロボットの状態遷移について、図４と共に説明する。図４は、ロボットの状態遷移を説明する図である。
【００２３】
説明の便宜上、ロボット１は、状態遷移により自律的に動作するものとする。ロボット１の自立的な動作は、ロボット１の自律走行を含んでも良い。又、ロボット１へ割込可能となるのは、ロボット１がある特定の状態に遷移した場合とし、各状態でロボット１が実行する処理の実行時間は一定時間に決められているものとする。図４は、ロボット１の状態ａ，ｂ，ｃを示し、状態間の遷移は矢印で示す。
【００２４】
図４において、例えば客待ち状態ｂにあるロボット１に客が近づくと、ロボット１は案内状態ａに遷移して案内Ｇ１を実行する。この案内状態ａで、客がより深い（又は、詳細な）情報を希望すると、ロボット１は案内状態ｃに遷移して案内Ｇ２を実行する。案内状態ｃでの案内Ｇ２が終わると、ロボット１は案内状態ａに遷移して案内Ｇ１を実行し、客がいなければ客待ち状態ｂに遷移する。
【００２５】
例えばサーバ３がネットワーク２を介してロボット１に操作権の獲得を要求してロボット１へ割込可能となるのは、客待ち状態ｂである。又、案内Ｇ１の実行時間は例えば１０秒であり、案内Ｇ１の実行時間は例えば５秒である。
【００２６】
ロボット１の状態遷移の履歴を状態遷移列の形で保持しておくことで、ロボット１が任意の状態から異なる状態に遷移する状態遷移列の出現回数を求めることができる。状態遷移列は、例えば割込可能な状態から割込可能な状態までのものを保持すれば良い。状態遷移列とその出現回数を利用すれば、平均の遷移時間を計算して提示することができる。状態遷移列の出現回数は、カウントして保持すれば良い。最多の出現回数を有する状態遷移列がその状態遷移に要する必要時間、又は、最長の状態遷移列の状態遷移に要する必要時間を提示しても良い。
【００２７】
図５は、ロボットの構成の一例を示す機能ブロック図である。ロボット１は、図５に示す如く接続された割込受付部１１、状態遷移実行部１２、割込処理部１３、復帰処理部１４、ロボット制御部１５、割込待ち部１６、遷移履歴取得部１７、出現回数累積部１８、待ち時間算出部１９、及び待ち時間提示部２０を有する。これらの機能ブロック部１１〜２０の機能は、図３に示すＣＰＵ１１１が記憶部１１２に格納された対応するプログラムを実行することで実現可能である。
【００２８】
サーバ３がロボット１に操作権の獲得を要求してロボットへ割り込み（以下、割込要求と言う）を発生すると、割込受付部１１はネットワーク２を介してサーバ３からの割込要求を受け付ける。状態遷移実行部１２は、ロボット１の状態遷移を予め設定された状態遷移、或いは、サーバ３から要求された状態遷移に従って実行し、ロボット制御部１５に状態遷移に応じた指示を出力する。ロボット１の状態遷移の履歴は、例えば状態遷移実行部１２内に保持される。ロボット制御部１５は、状態遷移実行部１２からの指示に基づいて駆動部１１６の駆動、入力部１１３による入力、出力部１１４による出力等を制御することで、ロボット１を自律的に動作させる。
【００２９】
又、状態遷移実行部１２は、ロボット１が割込可能な状態であると（即ち、割込要求を割込可能の状態にある場合）、割込受付部１１で受け付けた割込要求に応答して状態遷移実行部１２による状態遷移を停止すると共に、割込処理部１３に割込処理を実行させる。割込処理部１３による割込処理が終了すると、復帰処理部１４が割込処理の終了に応答して復帰処理を実行し、状態遷移実行部１２の状態遷移の停止状態を解除する。
【００３０】
一方、状態遷移実行部１２は、ロボット１が割込可能な状態にないと（即ち、割込要求を割込可能の状態にない場合）、割込待ち処理部１６にその旨を通知して割込可能な状態になるまで割込処理の実行を待たせる。
【００３１】
遷移履歴取得部１７は、状態遷移の実行時に状態遷移の履歴を状態遷移実行部１２から取得する。出現回数集計部１８は、ロボット１が割込可能な状態から他の状態に遷移した後に元の割込可能な状態に戻って来るまでの各遷移列の出現回数を集計して保持する。待ち時間算出部１９は、割込受付部１１が受け付けた割込要求が割込待ち処理部１６において待ち状態になる場合に、ロボット１が現在の状態から割込可能な状態に遷移するまでの平均待ち時間、最も起こりやすい待ち時間（以下、最多出現率の待ち時間と言う）、最長の待ち時間（以下、最大待ち時間と言う）等の待ち時間情報を計算して保持する。待ち時間提示部２０は、待ち時間算出部１９が保持する待ち時間情報（即ち、計算により推定された待ち時間）をネットワーク２を介してサーバ３へ通知することで、サーバ３の割込要求に対する待ち時間情報を提示する。提示された待ち時間情報は、図２に示すサーバ３の表示部３４に表示される。
【００３２】
尚、ロボット１内で保持される状態遷移の履歴、集計された各遷移列の出現回数、待ち時間情報等は、図３に示す記憶部１１２に格納可能である。
【００３３】
次に、待ち時間の算出方法を、説明の便宜上、図４に示すようにロボット１が３つの状態ａ，ｂ，ｃを有する場合について説明する。上記の如く、図４の例では、ロボット１は案内状態ａで案内Ｇ１を実行し、客待ち状態ｂで待ち状態となり、案内状態ｃで案内Ｇ２を実行する。
【００３４】
客待ち状態ｂのロボット１の近傍に客が来ると、状態遷移実行部１２が客待ち状態ｂから案内状態ａに遷移して案内Ｇ１を実行する、この状態で客が案内Ｇ２を希望すると、状態遷移実行部１２が案内状態ａから案内状態ｃへ遷移して案内Ｇ２を実行した後、案内状態ａに戻って案内Ｇ１を実行する。ロボット１の近傍に次の客が来ると、状態遷移実行部１２はそのまま案内状態ａで案内Ｇ１を実行し続け、この次の客が希望すれば案内状態ｃへ遷移して案内Ｇ２を実行する。状態遷移実行部１２は、ロボット１の近傍に来る客及びその客の機能に応じてこのような状態遷移を繰り返す。客がロボット１の近傍からいなくなると、状態遷移実行部１２は客待ち状態ｂに遷移して割込可能な状態に戻る。
【００３５】
このような場合、状態遷移実行部１２は、ロボット１の状態遷移の履歴として、割込可能な状態（この場合は、客待ち状態ｂ）から元の割込可能な状態（客待ち状態ｂ）に戻るまでの状態遷移列を保持する。ロボット１の状態遷移の履歴は、割込可能な状態から元の割込可能な状態に戻るまでの状態遷移列の形で保持すれば良く、この例では次の表１に示すように、状態遷移列の形で保持されるロボット１の状態遷移の履歴は状態遷移列「ｂａ(ｃａ)＊ｂ」を含む。出現回数集計部１８は、次の表１に示すように、このようにロボット１の状態遷移の履歴として保持された状態遷移列の出現回数を保持する。
【００３６】
【表１】
0005732810.tif 000002
【００３７】
従って、ロボット１が案内状態ａの時にサーバ３から割込要求があると、この案内状態ａから割込可能な状態（客待ち状態ｂ）に遷移するには、上記表１の履歴から次の表２に示すような状態遷移が必要となる。
【００３８】
【表２】
0005732810.tif 000003
【００３９】
しかし、案内状態ａは、上記表１及び表２の夫々の遷移列の中にも出現するので、現在の状態だけから待ち時間を計算する場合、遷移列の部分列についても出現回数をカウントする必要がある。そこで、このような場合には、出現回数集計部１８は次の表３のように出現回数をカウントして状態遷移の履歴に含めて保持すれば良い。
【００４０】
【表３】
0005732810.tif 000004
【００４１】
待ち時間算出部１９は、上記表３の出現回数の出現率から平均の必要時間を算出することができる。この例の場合、10×100/330+25×90/330+40×70/330+55×40/330+70×20/330+ 85×10/330=31.8181・・・となり、平均の必要時間は約３２秒となる。待ち時間提示部２０は、例えば待ち時間算出部１９がこのようにして算出した平均の必要時間を平均待ち時間として提示しても良い。又、待ち時間提示部２０は、例えば待ち時間算出部１９が算出した最も起こりやすい（即ち、最多の）出現率である「ａｃａｃａｂ」の必要時間４０秒を最多出現率の待ち時間として提示しても良い。更に、待ち時間提示部２０は、例えば待ち時間算出部１９が算出した最長の待ち時間である「ａｃａｃａｃａｃａｃａｂ」の必要時間８５秒を最大待ち時間として提示しても良い。つまり、待ち時間提示部２０は、平均待ち時間、最多出現率の待ち時間、及び最大待ち時間のうち少なくとも１つの待ち時間を提示すれば良い。
【００４２】
一方、状態遷移実行部１２が割込可能な状態（客待ち状態ｂ）から案内状態ａに至るまでの状態遷移を保持しており遷移履歴取得部１７により取得可能であれば、待ち時間算出部１９はその状態遷移の遷移列と一致する遷移列から待ち時間の算出しても良い。例えば、ロボット１の状態が「ｂａｃａ」と遷移して案内状態ａに遷移しているものとすると、上記表１から次の表４が得られるので、この表４を状態遷移の履歴に含めて保持すれば良い。
【００４３】
【表４】
0005732810.tif 000005
【００４４】
そこで、上記の場合と同様に、待ち時間算出部１９が表４の出現回数の出現率から平均の必要時間を算出すると、10×20/90+25×30/90+40×20/90+55×10/90+70×10/90  =33.3333・・・で約３３秒となる。待ち時間提示部２０は、例えば待ち時間算出部１９がこのようにして算出した平均の必要時間を平均待ち時間として提示しても良い。又、待ち時間提示部２０は、例えば待ち時間算出部１９が算出した最も起こりやすい（即ち、最多の）出現率である「ｂａｃａｃａｂ」の必要時間２５秒を最多出現率の待ち時間として提示しても良い。更に、待ち時間提示部２０は、例えば待ち時間算出部１９が算出した最長の待ち時間である「ｂａｃａｃａｃａｃａｃａｂ」の必要時間７０秒を最大待ち時間として提示しても良い。つまり、待ち時間提示部２０は、平均待ち時間、最多出現率の待ち時間、及び最大待ち時間のうち少なくとも１つの待ち時間を提示すれば良い。
【００４５】
上記の如き、ロボット１が割込可能な状態に遷移するまでの待ち時間を算出するための２つの計算方法は、任意に切り替え可能としても良い。この場合、ロボット１がサービスを提供する環境に応じて適切な計算方法で待ち時間を算出可能となる。
【００４６】
上記の例では、ロボット１の状態がａ，ｂ，ｃの３つである単純な場合を説明したが、ロボット１が取り得る状態数は有限個であり状態の出現回数も有限回であるため、ロボット１が割込可能な状態に遷移するまでの待ち時間を算出するための計算方法は一般化することが可能である。ここでは説明の便宜上、ロボット１が取り得る状態数がｎ＋ｍ個であり、割込可能でない状態がｎ個（p1, p2, p3, ..., pn）であり、割込可能な状態がｍ個（q1, q2, q3, ..., qm）という条件下でロボット１の状態遷移が実行されるものとする。例えば、ある状態qi（i=1, ..., m）から状態遷移が始まり、ある状態pj（j=1, ..., n）に至る状態遷移列は多数考えられるが有限回であり、出現した遷移列とその出現回数を保持するには膨大な資源、即ち、非常に大きな記憶容量を必要としない。又、この場合に遷移列からある状態pjを含む部分列を取り出しても、取り出される部分列は有限個であり、計算には膨大な計算時間を必要としない。
【００４７】
そこで、ロボット１の現在の状態までの状態遷移の履歴を利用しない場合と、利用する場合の待ち時間の一般化した計算方法を、夫々図６及び図７と共に説明する。尚、ロボット１が割込可能な状態から元の割込可能な状態に戻るまでの遷移列とその出現回数は履歴として保持されており、ロボット１の各状態の実行時間は予め決められているものとする。
【００４８】
図６は、現在の状態までの状態遷移の履歴を利用しない待ち時間の計算方法を説明するフローチャートである。図６に示す手順又は工程は、例えばロボット１のＣＰＵ１１１により実行可能であり、遷移履歴取得部１７、出現回数算出部１８、及び待ち時間算出部１９の機能は、ＣＰＵ１１１が記憶部１１２に格納された対応するプログラムを実行することで実現可能である。
【００４９】
図６において、ステップＳ１では、サーバ３から割込要求が来た時のロボット１の状態をロボット１の現状態として設定する。ステップＳ２では、現状態が割込可能な状態であるか否かを判定し、判定結果がＹＥＳであると処理は終了する。一方、ステップＳ２の判定結果がＮＯであると、ステップＳ３では、状態遷移の履歴の遷移列から、現状態が含まれている遷移列を全て抽出して可能遷移列群とする。ステップＳ４では、可能遷移列群の夫々の遷移列の合計出現回数にカウントされた出現回数の値を入れる。ステップＳ５では、可能遷移列群から１つの遷移列を取出して現遷移列とする。ステップＳ６では、現遷移列から現状態が先頭となるような部分列を抽出して現部分遷移列とする。
【００５０】
ステップＳ７では、現部分遷移列と同じ遷移列が可能遷移列群にあるか否かを判定し、判定結果がＹＥＳであると処理はステップＳ８へ進む、判定結果がＮＯであると処理はステップＳ９へ進む。ステップＳ８では、同じ遷移列に現遷移列の出現回数を加えたものを合計出現回数として保持し、処理はステップＳ１０へ進む。一方、ステップＳ９では、現部分列を可能遷移列群に一時的に追加し、出現回数を０に設定し、現遷移列の出現回数を合計出現回数とし、処理はステップＳ１０へ進む。つまり、抽出した遷移列と同じ遷移列が履歴にある場合は、その出現回数にステップＳ６で抽出した遷移列の出現回数を加えたものを一時的に保持する。しかし、抽出した遷移列と同じ遷移列が履歴にない場合は、現部分列を可能遷移列群に一時的に追加する。
【００５１】
ステップＳ１０では、可能遷移列群から全ての遷移列を抽出したか否かを判定し、判定結果がＮＯであると処理はステップＳ５へ戻る。ステップＳ１０の判定結果がＹＥＳであると、ステップＳ１１では、可能遷移列群の全ての遷移列（一時的に加えた遷移列を含む）の実行時間を求め、求めた実行時間に合計出現回数をかけた（即ち、積算した）ものの累計を求める。ステップＳ１２では、ステップＳ１１で求めた累計を可能遷移列群の全ての遷移列（一時的に加えた遷移列を含む）の出現回数の合計で除算したものを、割込可能な状態に遷移するまでの平均待ち時間とする。ステップＳ１３では、可能遷移列群の出現回数が一番多い遷移列の実行時間を、最多出現率の待ち時間とする。ステップＳ１４では、可能遷移列群の遷移列の中で最も長い実行時間を、最大待ち時間とし、処理は終了する。
【００５２】
図７は、現在の状態までの状態遷移の履歴を利用する待ち時間の計算方法を説明するフローチャートである。図７の処理は、例えばロボット１のＣＰＵ１１１により実行可能であり、遷移履歴取得部１７、出現回数算出部１８、及び待ち時間算出部１９の機能は、ＣＰＵ１１１が記憶部１１２に格納された対応するプログラムを実行することで実現可能である。
【００５３】
図７において、ステップＳ２１では、サーバ３から割込要求が来た時のロボット１の状態をロボット１の現状態として設定する。ステップＳ２２では、現状態が割込可能な状態であるか否かを判定し、判定結果がＹＥＳであると処理は終了する。一方、ステップＳ２２の判定結果がＮＯであると、ステップＳ２３では、状態遷移の履歴の遷移列から、現状態が含まれている遷移列を全て抽出して可能遷移列群とする。ステップＳ２４では、可能遷移列群の全ての遷移列の実行時間を求め、求めた実行時間に出現回数をかけた（即ち、積算した）ものの累計を求める。ステップＳ２５では、ステップＳ２４で求めた累計を可能遷移列群の全ての遷移列の出現回数の合計で除算したものを、割込可能な状態に遷移するまでの平均待ち時間とする。ステップＳ２６では、可能遷移列群の出現回数が一番多い遷移列の実行時間を、最多出現率の待ち時間とする。ステップＳ２７では、可能遷移列群の遷移列の中で最も長い実行時間を、最大待ち時間とし、処理は終了する。
【００５４】
上記の如き構成のロボット１は、例えば店舗で施設又は売場の案内と販売促進のサービスを提供する。この場合、ロボット１は、例えば無線ＬＡＮ（Local Area Network）或いは公衆回線ネットワークを介したデータ通信経由でインターネット等のネットワーク２に接続される。又、ロボット１の状態は、サーバ３のオペレータによりネットワーク２経由で遠隔監視される。ロボット１は、例えば周知の方法で人の顔を検知したこと等をトリガに案内や販促のサービスを開始するが、ある時点を境にロボット１が提供するサービスの回数が単位時間当たりの平均回数と比べて著しく減少していることにオペレータが気づいたとする。このような場合、オペレータは、ロボット１をサーバ３から遠隔操作してその原因を調べようとするが、ロボット１が客にサービスを提供中でなかなか遠隔操作ができない等、ロボット１が割込要求による割込可能な状態にならない場合は多々ある。又、オペレータは、一度に多数のロボットの状態を監視している場合もある。
【００５５】
本実施例では、サーバ３に対して割込要求がどれくらい待たされるかの目安となる待ち時間情報が提示されるため、オペレータは提示された待ち時間を例えば他のロボットへの対応等に充てることができ、ロボット１及びロボットシステムの効率的な運用が可能となる。
【００５６】
ところで、図５の例では、機能ブロック部１１〜２０の機能はロボット１内で実現されるが、これらの機能ブロック部１１〜２０の機能の一部をサーバ３側で実現しても良いことは言うまでもない。機能ブロック部１１〜２０の機能の一部をサーバ３側で実現することにより、ロボット１に対する処理の負荷が軽減できる。
【００５７】
図８は、ロボットシステムの動作の第１の例を説明するフローチャートである。この第１の例では、機能ブロック部１１〜２０の機能はロボット１内で実現される。図８中、ステップＳＲ１〜ＳＲ７はロボット１のＣＰＵ１１１により実行され、ステップＳＳ１〜ＳＳ５はサーバ３のＣＰＵ３１により実行される。尚、図８及び後述する図９及び図１０では、ネットワーク２の図示は省略する。
【００５８】
図８において、サーバ３は、ステップＳＳ１においてロボット１の状態監視を開始する。一方、ロボット１は、ステップＳＲ１において状態遷移実行部１２による状態遷移の実行、遷移履歴取得部１７による状態遷移の履歴の取得、出現回数集計部１８による出現回数の集計を実行する。サーバ３は、ステップＳＳ２においてロボット１に対して割込要求を出力して割込処理の情報をロボット１に送る。ロボット１は、ステップＳＲ２において割込受付部１１によりサーバ３からの割込要求を受け付ける。ロボット１が割込可能な状態にあるとロボット１の処理はステップＳＲ５へ進み、割込可能な状態にないとロボット１の処理はステップＳＲ３へ進む。
【００５９】
ロボット１は、ステップＳＲ３において割込待ち処理部１６により割込待ち処理を実行する。又、ロボット１は、ステップＳＲ４において待ち時間算出部１９により待ち時間を算出し、待ち時間提示部２０により算出した待ち時間情報をサーバ３に送る。サーバ３は、ステップＳＳ３においてロボット１から送られてくる待ち時間情報を表示部３４に表示することでサーバ３のオペレータに提示する。
【００６０】
ステップＳＲ４の後、ロボット１は割込要求に応答してステップＳＲ５において割込処理部１３により割込処理を実行し、状態遷移実行部１２による状態遷移を停止する。又、ロボット１は、ステップＳＲ６において割込処理の終了に応答して復帰処理部１４により復帰処理を実行し、状態遷移実行部１２の状態遷移の停止状態を解除すると共に、割込処理結果をサーバ３に送る。ステップＳＲ６の後、ロボット１はステップＳＲ７において状態遷移実行部１２による状態遷移の実行、遷移履歴取得部１７による状態遷移の履歴の取得、出現回数集計部１８による出現回数の集計の実行を継続し、以後はステップＳＲ２〜ＳＲ７と同様の処理が繰り返される。
【００６１】
サーバ３は、ステップＳＳ４においてロボット１から送られてくる割込処理結果に応答して割込終了通知を表示部３４に表示することで割込処理の終了をオペレータに通知する。又、サーバ３は、ステップＳＳ５においてロボット１の状態監視を継続し、以後はステップＳＳ２〜ＳＳ５と同様の処理が繰り返される。
【００６２】
図９は、ロボットシステムの動作の第２の例を説明するフローチャートである。この第２の例では、ロボット制御部１５の機能はロボット１内で実現され、機能ブロック部１１〜１４，１６〜２０の機能はサーバ３内で実行される。図９中、ステップＳＳ１１〜ＳＳ１９はサーバ３のＣＰＵ３１により実行される。
【００６３】
図９において、サーバ３はステップＳＳ１１においてロボット１に任意の動作を指示し、状態遷移実行部による状態遷移の実行、遷移履歴取得部による状態遷移の履歴の取得、出現回数集計部による出現回数の集計を実行することでロボット１の状態監視を開始する。この第２の例では、ロボット１の状態監視中、サーバ３とロボット１とは通信状態にあり、サーバ３はロボット１の状態等に関する情報を通信状態が切断されない限り取得可能であるものとする。サーバ３は、ステップＳＳ１２においてロボット１に対する割込要求を発生し、ステップＳＳ１３において割込受付部により割込要求の受付を実行する。サーバ３は、ロボット１が割込可能な状態にあると認識していると処理はステップＳＳ１６へ進み、割込可能な状態にないと認識していると処理はステップＳＳ１４へ進む。
【００６４】
サーバ３は、ステップＳＳ１４において割込待ち処理部により割込待ち処理を実行する。又、サーバ３は、ステップＳＳ１５において待ち時間算出部により待ち時間を算出し、待ち時間提示部により算出した待ち時間情報を表示部３４に表示することでサーバ３のオペレータに提示する。
【００６５】
サーバ３は、ステップＳＳ１６において、ステップＳＳ１２で発生した割込要求に応答して割込処理部１３により割込処理を実行し、状態遷移実行部による状態遷移を停止すると共に、ロボット１に割込処理に応じた動作を指示する。又、サーバ３は、ステップＳＳ１７において割込処理の終了に応答して復帰処理部により復帰処理を実行し、状態遷移実行部の状態遷移の停止状態を解除すると共に、割込処理結果を得る。サーバ３は、ステップＳＳ１８において割込処理結果を含む割込終了通知を表示部３４に表示することで割込処理の終了をオペレータに通知する。ステップＳＳ１８の後、サーバ３はステップＳＳ１９において状態遷移実行部による状態遷移の実行、遷移履歴取得部による状態遷移の履歴の取得、出現回数集計部による出現回数の集計を実行を継続することでロボット１の状態監視を継続し、以後はステップＳＳ１２〜ＳＳ１９と同様の処理が繰り返される。
【００６６】
図１０は、ロボットシステムの動作の第３の例を説明するフローチャートである。この第３の例では、機能ブロック部１１〜１７の機能はロボット１内で実現され、機能ブロック１８〜２０の機能はサーバ３内で実現される。図１０中、ステップＳＲ２１〜ＳＲ２６はロボット１のＣＰＵ１１１により実行され、ステップＳＳ２１〜ＳＳ２６はサーバ３のＣＰＵ３１により実行される。
【００６７】
図１０において、ロボット１は、ステップＳＲ２１において状態遷移実行部１２による状態遷移の実行、及び遷移履歴取得部１７による状態遷移の履歴の取得を実行し、状態遷移の履歴を定期的にサーバ３に送信する。一方、サーバ３は、ステップＳＳ２１においてロボット１の状態監視を開始し、ロボット１から定期的に送信されてくる状態遷移の履歴に基づいて出現回数集計部による出現回数の集計を実行する。サーバ３は、ステップＳＳ２２においてロボット１に対して割込要求を出力して割込処理の情報をロボット１に送る。ロボット１は、ステップＳＲ２２において割込受付部１１によりサーバ３からの割込要求を受け付ける。ロボット１が割込可能な状態にあるとロボット１の処理はステップＳＲ２４へ進み、割込可能な状態にないとロボット１の処理はステップＳＲ２３へ進む。
【００６８】
ロボット１は、ステップＳＲ２３において割込待ち処理部１６により割込待ち処理を実行し、割込待ちの通知をサーバ３に対して実行する。サーバ３は、割込待ち通知に応答してステップＳＳ２３において待ち時間算出部により待ち時間を算出し、ステップＳ２４において待ち時間提示部により算出した待ち時間情報を表示部３４に表示することでサーバ３のオペレータに提示する。
【００６９】
ステップＳＲ２３の後、ロボット１は割込要求に応答してステップＳＲ２４において割込処理部１３により割込処理を実行し、状態遷移実行部１２による状態遷移を停止する。又、ロボット１は、ステップＳＲ２５において割込処理の終了に応答して復帰処理部１４により復帰処理を実行し、状態遷移実行部１２の状態遷移の停止状態を解除すると共に、割込処理結果をサーバ３に送る。ステップＳＲ２５の後、ロボット１はステップＳＲ２６において状態遷移実行部１２による状態遷移の実行、及び遷移履歴取得部１７による状態遷移の履歴の取得の実行を継続し、状態遷移の履歴を定期的にサーバ３に送信し、以後はステップＳＲ２２〜ＳＲ２６と同様の処理が繰り返される。
【００７０】
サーバ３は、ステップＳＳ２５においてロボット１から送られてくる割込処理結果に応答して割込終了通知を表示部３４に表示することで割込処理の終了をオペレータに通知する。又、サーバ３は、ステップＳＳ２６においてロボット１の状態監視、及びロボット１から定期的に送信されてくる状態遷移の履歴に基づいた出現回数集計部による出現回数の集計の実行を継続し、以後はステップＳＳ２２〜ＳＳ２６と同様の処理が繰り返される。
【００７１】
この第３の例の場合、ロボット１の状態遷移の履歴はロボット１からサーバ３に定期的に送信されるので、サーバ３とロボット１との通知状態が一時的に切断されてしまっても、サーバ３において信頼性の高い待ち時間情報を提示することができる。
【００７２】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
ロボットの状態遷移の履歴を保持する工程と、
制御装置で発生された前記ロボットに対する割込要求を受け付ける工程と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する工程と、
前記制御装置に対して前記待ち時間を提示する工程
を含むことを特徴とする、ロボット制御方法。
（付記２）
前記状態遷移の履歴を保持する工程は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める工程を更に含み、
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、付記１記載のロボット制御方法。
（付記３）
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、付記２記載のロボット制御方法。
（付記４）
前記状態遷移の履歴を保持する工程、前記割込要求を受け付ける工程、前記待ち時間を算出する工程、及び前記待ち時間を提示する工程は、前記ロボット内のプロセッサにより実行されることを特徴とする、付記１乃至３のいずれか１項記載のロボット制御方法。
（付記５）
前記制御装置による前記ロボットの監視中、前記ロボットの状態を前記制御装置により取得する工程を更に含み、
前記状態遷移の履歴を保持する工程、前記割込要求を受け付ける工程、前記待ち時間を算出する工程、及び前記待ち時間を提示する工程は、前記制御装置内のプロセッサにより実行されることを特徴とする、付記１乃至３のいずれか１項記載のロボット制御方法。
（付記６）
前記制御装置による前記ロボットの監視中、前記ロボットの状態を定期的に前記制御装置に送信する工程を更に含み、
前記状態遷移の履歴を保持する工程及び前記割込要求を受け付ける工程は前記ロボット内のプロセッサにより実行され、
前記待ち時間を算出する工程、及び前記待ち時間を提示する工程は、前記制御装置内のプロセッサにより実行されることを特徴とする、付記１乃至３のいずれか１項記載のロボット制御方法。
（付記７）
前記待ち時間を前記制御装置の表示部に表示する工程を更に含むことを特徴とする、付記１乃至６のいずれか１項記載のロボット制御方法。
（付記８）
前記待ち時間を算出する工程は、前記ロボットの現在の状態までの状態遷移の履歴を利用しないで前記待ち時間を計算する第１の計算と、前記ロボットの現在の状態までの状態遷移の履歴を利用して前記待ち時間を計算する第２の計算のいずれかを実行して前記待ち時間を算出することを特徴とする、付記１乃至７のいずれか１項記載のロボット制御方法。
（付記９）
ロボット内のコンピュータに待ち時間を提示させるプログラムであって、
前記ロボットの状態遷移の履歴を記憶部に保持する手順と、
前記ロボットの外部で発生された割込要求を受け付ける手順と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記記憶部に保持された前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する手順と、
前記外部に対して前記待ち時間を提示する手順
を前記コンピュータに実行させることを特徴とする、プログラム。
（付記１０）
前記状態遷移の履歴を保持する手順は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記プログラムは、前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める手順を更に前記コンピュータに実行させ、
前記待ち時間を算出する手順は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、付記９記載のプログラム。
（付記１１）
前記待ち時間を算出する手順は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、付記１０記載のプログラム。
（付記１２）
前記待ち時間を算出する手順は、前記ロボットの現在の状態までの状態遷移の履歴を利用しないで前記待ち時間を計算する第１の計算と、前記ロボットの現在の状態までの状態遷移の履歴を利用して前記待ち時間を計算する第２の計算のいずれかを実行して前記待ち時間を算出することを特徴とする、付記９乃至１１のいずれか１項記載のプログラム。
（付記１３）
割込要求が外部から供給されるロボットであって、
前記ロボットの状態遷移の履歴を保持する記憶部と、
前記割込要求を受け付ける割込受付部と、
前記ロボットが割込可能な状態にないと、前記記憶部に保持された前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する待ち時間算出部と、
前記外部に対して前記待ち時間を提示する待ち時間提示部を備え、
ことを特徴とする、ロボット。
（付記１４）
前記記憶部は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める出現回数集計部を更に備え、
前記待ち時間算出部は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、付記１３記載のロボット。
（付記１５）
前記待ち時間算出部は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、付記１４記載のロボット。
【００７３】
以上、開示のロボット制御方法及びプログラムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【００７４】
１      ロボット
２      ネットワーク
３      サーバ
１７      遷移履歴取得部
１８      出現回数集計部
１９      待ち時間算出部
２０      待ち時間提示部
３１，１１１      ＣＰＵ
３２，１１２      記憶部
【図１】
0005732810.tif 000006
【図２】
0005732810.tif 000007
【図３】
0005732810.tif 000008
【図４】
0005732810.tif 000009
【図５】
0005732810.tif 000010
【図６】
0005732810.tif 000011
【図７】
0005732810.tif 000012
【図８】
0005732810.tif 000013
【図９】
0005732810.tif 000014
【図１０】
0005732810.tif 000015