説明

ロボット制御方法及びプログラム

【課題】サービスロボットの利用効率を向上すること。
【解決手段】ロボット制御方法において、ロボットの状態遷移の履歴を保持し、制御装置で発生されたロボットに対する割込要求を受け付け、ロボットが割込要求を割込可能の状態にない場合はロボットの状態遷移の履歴に基づいて割込要求に対して推定される割込処理の待ち時間を算出し、前記制御装置に対して待ち時間を提示するように構成する。前記状態遷移の履歴を保持する工程は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める工程を更に含み、前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御方法及びプログラムに係り、特にロボットに対する割込処理の待ち時間を提示するロボット制御方法及びプログラムに関する。本発明は、このようなプログラムを格納したコンピュータ読み取り可能な記憶媒体にも関する。
【背景技術】
【0002】
商業施設等の、人とロボットが共存する環境において、ロボットによりサービスを提供する各種方法が提案されている。サービスを提供するロボットは、サービスロボットとも呼ばれる。ロボットは、予め決められた状態遷移に従って動作することで、自律動作を実現できる。しかし、ロボットは、自律動作中に人に邪魔されたり、動作できない状態に追い込まれたりして、ロボットが使用される現場で人による対応が必要となる場合がある。又、ロボットが提供するサービスをカスタマイズする場合も、ロボットが使用される現場での対応が必要となる。
【0003】
そこで、ロボットが提供するべきカスタマイズされたサービスをネットワークを介してロボットへ送り、カスタマイズされたサービスの実行スケジュールをロボットに設定することで、実行スケジュールに従った種々のサービスをロボットに提供させることが提案されている。又、ロボットがサービスを提供中に、ネットワークを介したロボットの遠隔操作を可能にすることで、ロボットが動作できない状態に追い込まれてもその状態からの脱出を可能にすることも提案されている。サービスのカスタマイズと実行スケジュールは、例えばRSNP(Robot Service Network Protocol)仕様のタスクプロファイルにより実現できる(例えば、非特許文献1を参照)。又、ロボットの遠隔操作は、例えばRSNP仕様のコマンドプロファイルにより実現できる(例えば、非特許文献2を参照)。
【0004】
ロボットが、施設や売場の案内、販売促進、キャンペーン、買物アドバイス等のサービスを提供している時は、状態遷移による自律動作を行っている。この状態で、ネットワークを介したロボットの遠隔操作を行おうとすると、ロボットが提供しているサービスに割り込んでロボットの操作権を取得してから、実際の遠隔操作を行うことになる。この場合、ロボットは施設利用者等にサービスを提供しているため、提供中のサービスを突然中断することは避ける必要がある。このため、ロボットが割込可能な状態に遷移するのを待ってから、ロボットの操作権を取得するようにする仕組みも提案されている。しかし、提案されている仕組みには、以下に説明する如き問題がある。
【0005】
ロボットが割込可能な状態に遷移するのを待ってからロボットの操作権を取得する従来の仕組みの一例(例えば、非特許文献2を参照)では、例えば遠隔のサーバからロボットに操作権の獲得を要求した時点でロボットが割込可能な状態でない場合は、サーバはロボットの操作権を獲得できないことをロボットから通知され、サーバはロボットが割込可能な状態に遷移するまで待つ必要がある。しかし、サーバ側では、どの程度の時間待てばロボットが操作可能になるのかを知ることができないので、ロボットの利用効率を向上することは難しい。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】植木 美和他、「RSiプロトコル仕様V2.0〜タスクプロファイル〜」、第26回日本ロボット学会学術講演会予稿集、RSJ2008AC3B2-04、2008
【非特許文献2】植木 美和他、RSNPによる共通ロボット動作に向けた取組み〜コマンドプロファイル〜」、第27回日本ロボット学会学術講演会予稿集、RSJ2009AC1J3-08、2009
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来のロボット制御方法では、ロボットが割込可能な状態でない場合、どの程度の時間待てばロボットが割込可能な状態に遷移するのかを知ることができないので、ロボットの利用効率を向上することは難しいという問題があった。
【0008】
そこで、本発明は、ロボットが割込可能な状態でない場合、どの程度の時間待てばロボットが割込可能な状態に遷移するのかを推定するロボット制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一観点によれば、ロボットの状態遷移の履歴を保持する工程と、制御装置で発生された前記ロボットに対する割込要求を受け付ける工程と、前記ロボットが前記割込要求を割込可能の状態にない場合、前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する工程と、前記制御装置に対して前記待ち時間を提示する工程を含むことを特徴とするロボット制御方法が提供される。
【0010】
本発明の一観点によれば、ロボット内のコンピュータに待ち時間を提示させるプログラムであって、前記ロボットの状態遷移の履歴を記憶部に保持する手順と、前記ロボットの外部で発生された割込要求を受け付ける手順と、前記ロボットが前記割込要求を割込可能の状態にない場合、前記記憶部に保持された前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する手順と、前記外部に対して前記待ち時間を提示する手順を前記コンピュータに実行させることを特徴とするプログラムが提供される。
【発明の効果】
【0011】
開示のロボット制御方法及びプログラムによれば、ロボットが割込可能な状態でない場合、どの程度の時間待てばロボットが割込可能な状態に遷移するのかを推定するので、ロボットの利用効率を向上することが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施例におけるロボットシステムの一例を説明する図である。
【図2】サーバの構成の一例を示すブロック図である。
【図3】ロボットの構成の一例を示すブロック図である。
【図4】ロボットの状態遷移を説明する図である。
【図5】ロボットの構成の一例を示す機能ブロック図である。
【図6】現在の状態までの状態遷移の履歴を利用しない待ち時間の計算方法を説明するフローチャートである。
【図7】現在の状態までの状態遷移の履歴を利用する待ち時間の計算方法を説明するフローチャートである。
【図8】ロボットシステムの動作の第1の例を説明するフローチャートである。
【図9】ロボットシステムの動作の第2の例を説明するフローチャートである。
【図10】ロボットシステムの動作の第3の例を説明するフローチャートである。
【発明を実施するための形態】
【0013】
開示のロボット制御方法及びプログラムでは、ロボットが割込可能な状態でない場合、ロボットの状態遷移の履歴に基づいて割込可能な状態に遷移するまでの待ち時間を推定して提示する。
【0014】
以下に、開示のロボット制御方法及びプログラムの各実施例を図面と共に説明する。
【実施例】
【0015】
図1は、本発明の一実施例におけるロボットシステムの一例を説明する図である。図1に示すロボットシステムは、ロボット1とサーバ3がネットワーク2を介して接続された構成を有する。ネットワーク2は、例えば無線ネットワークで形成可能である。ロボット1は、例えば商業施設等の、人とロボットが共存する環境においてサービスを提供するサービスロボットにより形成可能である。サーバ3は、ロボット1の監視、ロボット1に対する割込要求の発生、ロボット1の動作の指示等を行う制御装置を形成する。
【0016】
図2は、サーバの構成の一例を示すブロック図である。図2に示すように、サーバ3は、CPU(Central Processing Unit)31、記憶部32、入力部33、表示部34、及びインタフェース(I/F:Interface)35がバス38を介して接続された構成を有する。CPU31は、サーバ3全体の動作の制御を司る。記憶部32は、CPU31が実行するロボット制御プログラムを含む各種プログラム、CPU31が実行する演算の中間データを含む各種データ等を格納する。入力部33は、キーボード、マウス等により形成可能であり、CPU31に各種コマンドや各種データを入力するのに用いられる。表示部34は、オペレータに操作を促す画面を含む各種操作画面、CPU31が実行した演算結果、後述するロボット1に対する割込要求に対する待ち時間情報等の各種情報を表示する。I/F35は、CPU31の制御下で、ネットワーク2からコマンドやデータを受信したり、ネットワーク2へコマンドやデータを送信する。
【0017】
記憶装置32は、コンピュータ読み取り可能な記憶媒体により形成可能である。コンピュータ読み取り可能な記憶媒体は、一例として、磁気記録媒体、光記録媒体、光磁気記録媒体、ディスクを記録媒体として用いるディスク装置、ROM(Read Only Memory)等を含む半導体記憶装置等を含む。
【0018】
尚、サーバ3の構成は図2の構成に限定されるものではなく、例えばプロセッサと記憶部を備えた汎用コンピュータで形成可能である。
【0019】
図3は、ロボットの構成の一例を示すブロック図である。図3に示すように、ロボット1は、CPU111、記憶部112、入力部113、出力部114、I/F115、及び駆動部116がバス118を介して接続された構成を有する。CPU111は、ロボット1全体の動作の制御を司る。記憶部112は、CPU111が実行する各種プログラム、CPU111が実行する演算の中間データを含む各種データ等を格納する。入力部113は、操作パネル、マイクロホン等により形成可能であり、CPU111に各種コマンドや各種データを入力するのに用いられる。出力部114は、オペレータに操作を促したり案内を提供する音声を出力するスピーカ、オペレータに操作を促したり案内を提供する画面を表示する表示部等により形成可能である。入力部113の操作パネルと出力部114の表示部は、タッチパネル等の入出力手段により形成しても良い。I/F115は、CPU111の制御下で、ネットワーク2からコマンドやデータを受信したり、ネットワーク2へコマンドやデータを送信する。駆動部116は、CPU111の制御下でロボット1の自律走行を可能とする、モータとこのモータにより駆動される車輪等を含む周知の構成を有する。
【0020】
記憶装置112は、コンピュータ読み取り可能な記憶媒体により形成可能である。コンピュータ読み取り可能な記憶媒体は、一例として、磁気記録媒体、光記録媒体、光磁気記録媒体、ディスクを記録媒体として用いるディスク装置、ROM(Read Only Memory)等を含む半導体記憶装置等を含む。
【0021】
尚、ロボット1の駆動部116を除く部分の構成は図3の構成に限定されるものではなく、例えばプロセッサと記憶部を備えた汎用コンピュータで形成可能である。又、ロボット1が例えば人型のロボットであれば、CPU111、記憶部112、入力部113、出力部114、I/F115、駆動部116、及びバス118は、人型のフレーム又はボディ(図示せず)内に設けられることは言うまでもない。
【0022】
先ず、ロボットの状態遷移について、図4と共に説明する。図4は、ロボットの状態遷移を説明する図である。
【0023】
説明の便宜上、ロボット1は、状態遷移により自律的に動作するものとする。ロボット1の自立的な動作は、ロボット1の自律走行を含んでも良い。又、ロボット1へ割込可能となるのは、ロボット1がある特定の状態に遷移した場合とし、各状態でロボット1が実行する処理の実行時間は一定時間に決められているものとする。図4は、ロボット1の状態a,b,cを示し、状態間の遷移は矢印で示す。
【0024】
図4において、例えば客待ち状態bにあるロボット1に客が近づくと、ロボット1は案内状態aに遷移して案内G1を実行する。この案内状態aで、客がより深い(又は、詳細な)情報を希望すると、ロボット1は案内状態cに遷移して案内G2を実行する。案内状態cでの案内G2が終わると、ロボット1は案内状態aに遷移して案内G1を実行し、客がいなければ客待ち状態bに遷移する。
【0025】
例えばサーバ3がネットワーク2を介してロボット1に操作権の獲得を要求してロボット1へ割込可能となるのは、客待ち状態bである。又、案内G1の実行時間は例えば10秒であり、案内G1の実行時間は例えば5秒である。
【0026】
ロボット1の状態遷移の履歴を状態遷移列の形で保持しておくことで、ロボット1が任意の状態から異なる状態に遷移する状態遷移列の出現回数を求めることができる。状態遷移列は、例えば割込可能な状態から割込可能な状態までのものを保持すれば良い。状態遷移列とその出現回数を利用すれば、平均の遷移時間を計算して提示することができる。状態遷移列の出現回数は、カウントして保持すれば良い。最多の出現回数を有する状態遷移列がその状態遷移に要する必要時間、又は、最長の状態遷移列の状態遷移に要する必要時間を提示しても良い。
【0027】
図5は、ロボットの構成の一例を示す機能ブロック図である。ロボット1は、図5に示す如く接続された割込受付部11、状態遷移実行部12、割込処理部13、復帰処理部14、ロボット制御部15、割込待ち部16、遷移履歴取得部17、出現回数累積部18、待ち時間算出部19、及び待ち時間提示部20を有する。これらの機能ブロック部11〜20の機能は、図3に示すCPU111が記憶部112に格納された対応するプログラムを実行することで実現可能である。
【0028】
サーバ3がロボット1に操作権の獲得を要求してロボットへ割り込み(以下、割込要求と言う)を発生すると、割込受付部11はネットワーク2を介してサーバ3からの割込要求を受け付ける。状態遷移実行部12は、ロボット1の状態遷移を予め設定された状態遷移、或いは、サーバ3から要求された状態遷移に従って実行し、ロボット制御部15に状態遷移に応じた指示を出力する。ロボット1の状態遷移の履歴は、例えば状態遷移実行部12内に保持される。ロボット制御部15は、状態遷移実行部12からの指示に基づいて駆動部116の駆動、入力部113による入力、出力部114による出力等を制御することで、ロボット1を自律的に動作させる。
【0029】
又、状態遷移実行部12は、ロボット1が割込可能な状態であると(即ち、割込要求を割込可能の状態にある場合)、割込受付部11で受け付けた割込要求に応答して状態遷移実行部12による状態遷移を停止すると共に、割込処理部13に割込処理を実行させる。割込処理部13による割込処理が終了すると、復帰処理部14が割込処理の終了に応答して復帰処理を実行し、状態遷移実行部12の状態遷移の停止状態を解除する。
【0030】
一方、状態遷移実行部12は、ロボット1が割込可能な状態にないと(即ち、割込要求を割込可能の状態にない場合)、割込待ち処理部16にその旨を通知して割込可能な状態になるまで割込処理の実行を待たせる。
【0031】
遷移履歴取得部17は、状態遷移の実行時に状態遷移の履歴を状態遷移実行部12から取得する。出現回数集計部18は、ロボット1が割込可能な状態から他の状態に遷移した後に元の割込可能な状態に戻って来るまでの各遷移列の出現回数を集計して保持する。待ち時間算出部19は、割込受付部11が受け付けた割込要求が割込待ち処理部16において待ち状態になる場合に、ロボット1が現在の状態から割込可能な状態に遷移するまでの平均待ち時間、最も起こりやすい待ち時間(以下、最多出現率の待ち時間と言う)、最長の待ち時間(以下、最大待ち時間と言う)等の待ち時間情報を計算して保持する。待ち時間提示部20は、待ち時間算出部19が保持する待ち時間情報(即ち、計算により推定された待ち時間)をネットワーク2を介してサーバ3へ通知することで、サーバ3の割込要求に対する待ち時間情報を提示する。提示された待ち時間情報は、図2に示すサーバ3の表示部34に表示される。
【0032】
尚、ロボット1内で保持される状態遷移の履歴、集計された各遷移列の出現回数、待ち時間情報等は、図3に示す記憶部112に格納可能である。
【0033】
次に、待ち時間の算出方法を、説明の便宜上、図4に示すようにロボット1が3つの状態a,b,cを有する場合について説明する。上記の如く、図4の例では、ロボット1は案内状態aで案内G1を実行し、客待ち状態bで待ち状態となり、案内状態cで案内G2を実行する。
【0034】
客待ち状態bのロボット1の近傍に客が来ると、状態遷移実行部12が客待ち状態bから案内状態aに遷移して案内G1を実行する、この状態で客が案内G2を希望すると、状態遷移実行部12が案内状態aから案内状態cへ遷移して案内G2を実行した後、案内状態aに戻って案内G1を実行する。ロボット1の近傍に次の客が来ると、状態遷移実行部12はそのまま案内状態aで案内G1を実行し続け、この次の客が希望すれば案内状態cへ遷移して案内G2を実行する。状態遷移実行部12は、ロボット1の近傍に来る客及びその客の機能に応じてこのような状態遷移を繰り返す。客がロボット1の近傍からいなくなると、状態遷移実行部12は客待ち状態cに遷移して割込可能な状態に戻る。
【0035】
このような場合、状態遷移実行部12は、ロボット1の状態遷移の履歴として、割込可能な状態(この場合は、客待ち状態b)から元の割込可能な状態(客待ち状態b)に戻るまでの状態遷移列を保持する。ロボット1の状態遷移の履歴は、割込可能な状態から元の割込可能な状態に戻るまでの状態遷移列の形で保持すれば良く、この例では次の表1に示すように、状態遷移列の形で保持されるロボット1の状態遷移の履歴は状態遷移列「ba(ca)*b」を含む。出現回数集計部18は、次の表1に示すように、このようにロボット1の状態遷移の履歴として保持された状態遷移列の出現回数を保持する。
【0036】
【表1】

【0037】
従って、ロボット1が案内状態aの時にサーバ3から割込要求があると、この案内状態aから割込可能な状態(客待ち状態b)に遷移するには、上記表1の履歴から次の表2に示すような状態遷移が必要となる。
【0038】
【表2】

【0039】
しかし、案内状態aは、上記表1及び表2の夫々の遷移列の中にも出現するので、現在の状態だけから待ち時間を計算する場合、遷移列の部分列についても出現回数をカウントする必要がある。そこで、このような場合には、出現回数集計部18は次の表3のように出現回数をカウントして状態遷移の履歴に含めて保持すれば良い。
【0040】
【表3】

【0041】
待ち時間算出部19は、上記表3の出現回数の出現率から平均の必要時間を算出することができる。この例の場合、10×100/330+25×90/330+40×70/330+55×40/330+70×20/330+ 85×10/330=31.8181・・・となり、平均の必要時間は約32秒となる。待ち時間提示部20は、例えば待ち時間算出部19がこのようにして算出した平均の必要時間を平均待ち時間として提示しても良い。又、待ち時間提示部20は、例えば待ち時間算出部19が算出した最も起こりやすい(即ち、最多の)出現率である「acacab」の必要時間40秒を最多出現率の待ち時間として提示しても良い。更に、待ち時間提示部20は、例えば待ち時間算出部19が算出した最長の待ち時間である「acacacacacab」の必要時間85秒を最大待ち時間として提示しても良い。つまり、待ち時間提示部20は、平均待ち時間、最多出現率の待ち時間、及び最大待ち時間のうち少なくとも1つの待ち時間を提示すれば良い。
【0042】
一方、状態遷移実行部12が割込可能な状態(客待ち状態b)から案内状態aに至るまでの状態遷移を保持しており遷移履歴取得部17により取得可能であれば、待ち時間算出部19はその状態遷移の遷移列と一致する遷移列から待ち時間の算出しても良い。例えば、ロボット1の状態が「baca」と遷移して案内状態aに遷移しているものとすると、上記表1から次の表4が得られるので、この表4を状態遷移の履歴に含めて保持すれば良い。
【0043】
【表4】

【0044】
そこで、上記の場合と同様に、待ち時間算出部19が表4の出現回数の出現率から平均の必要時間を算出すると、10×20/90+25×30/90+40×20/90+55×10/90+70×10/90 =33.3333・・・で約33秒となる。待ち時間提示部20は、例えば待ち時間算出部19がこのようにして算出した平均の必要時間を平均待ち時間として提示しても良い。又、待ち時間提示部20は、例えば待ち時間算出部19が算出した最も起こりやすい(即ち、最多の)出現率である「bacacab」の必要時間25秒を最多出現率の待ち時間として提示しても良い。更に、待ち時間提示部20は、例えば待ち時間算出部19が算出した最長の待ち時間である「bacacacacacab」の必要時間70秒を最大待ち時間として提示しても良い。つまり、待ち時間提示部20は、平均待ち時間、最多出現率の待ち時間、及び最大待ち時間のうち少なくとも1つの待ち時間を提示すれば良い。
【0045】
上記の如き、ロボット1が割込可能な状態に遷移するまでの待ち時間を算出するための2つの計算方法は、任意に切り替え可能としても良い。この場合、ロボット1がサービスを提供する環境に応じて適切な計算方法で待ち時間を算出可能となる。
【0046】
上記の例では、ロボット1の状態がa,b,cの3つである単純な場合を説明したが、ロボット1が取り得る状態数は有限個であり状態の出現回数も有限回であるため、ロボット1が割込可能な状態に遷移するまでの待ち時間を算出するための計算方法は一般化することが可能である。ここでは説明の便宜上、ロボット1が取り得る状態数がn+m個であり、割込可能でない状態がn個(p1, p2, p3, ..., pn)であり、割込可能な状態がm個(q1, q2, q3, ..., qm)という条件下でロボット1の状態遷移が実行されるものとする。例えば、ある状態qi(i=1, ..., m)から状態遷移が始まり、ある状態pj(j=1, ..., n)に至る状態遷移列は多数考えられるが有限回であり、出現した遷移列とその出現回数を保持するには膨大な資源、即ち、非常に大きな記憶容量を必要としない。又、この場合に遷移列からある状態pjを含む部分列を取り出しても、取り出される部分列は有限個であり、計算には膨大な計算時間を必要としない。
【0047】
そこで、ロボット1の現在の状態までの状態遷移の履歴を利用しない場合と、利用する場合の待ち時間の一般化した計算方法を、夫々図6及び図7と共に説明する。尚、ロボット1が割込可能な状態から元の割込可能な状態に戻るまでの遷移列とその出現回数は履歴として保持されており、ロボット1の各状態の実行時間は予め決められているものとする。
【0048】
図6は、現在の状態までの状態遷移の履歴を利用しない待ち時間の計算方法を説明するフローチャートである。図6に示す手順又は工程は、例えばロボット1のCPU111により実行可能であり、遷移履歴取得部17、出現回数算出部18、及び待ち時間算出部19の機能は、CPU111が記憶部112に格納された対応するプログラムを実行することで実現可能である。
【0049】
図6において、ステップS1では、サーバ3から割込要求が来た時のロボット1の状態をロボット1の現状態として設定する。ステップS2では、現状態が割込可能な状態であるか否かを判定し、判定結果がYESであると処理は終了する。一方、ステップS2の判定結果がNOであると、ステップS3では、状態遷移の履歴の遷移列から、現状態が含まれている遷移列を全て抽出して可能遷移列群とする。ステップS4では、可能遷移列群の夫々の遷移列の合計出現回数にカウントされた出現回数の値を入れる。ステップS5では、可能遷移列群から1つの遷移列を取出して現遷移列とする。ステップS6では、現遷移列から現状態が戦闘となるような部分列を抽出して現部分遷移列とする。
【0050】
ステップS7では、現部分遷移列と同じ遷移列が可能遷移列群にあるか否かを判定し、判定結果がYESであると処理はステップS8へ進む、判定結果がNOであると処理はステップS9へ進む。ステップS8では、同じ遷移列に現遷移列の出現回数を加えたものを合計出現回数として保持し、処理はステップS10へ進む。一方、ステップS9では、現部分列を可能遷移列群に一時的に追加し、出現回数を0に設定し、現遷移列の出現回数を合計出現回数とし、処理はステップS10へ進む。つまり、抽出した遷移列と同じ遷移列が履歴にある場合は、その出現回数にステップS6で抽出した遷移列の出現回数を加えたものを一時的に保持する。しかし、抽出した遷移列と同じ遷移列が履歴にない場合は、現部分列を可能遷移列群に一時的に追加する。
【0051】
ステップS10では、可能遷移列群から全ての遷移列を抽出したか否かを判定し、判定結果がNOであると処理はステップS5へ戻る。ステップS10の判定結果がYESであると処理はステップS8であると、ステップS11では、可能遷移列群の全ての遷移列(一時的に加えた遷移列を含む)の実行時間を求め、求めた実行時間に合計出現回数をかけた(即ち、積算した)ものの累計を求める。ステップS12では、ステップS11で求めた累計を可能遷移列群の全ての遷移列(一時的に加えた遷移列を含む)の出現回数の合計で除算したものを、割込可能な状態に遷移するまでの平均待ち時間とする。ステップS13では、可能遷移列群の出現回数が一番多い遷移列の実行時間を、最多出現率の待ち時間とする。ステップS14では、可能遷移列群の遷移列の中で最も長い実行時間を、最大待ち時間とし、処理は終了する。
【0052】
図7は、現在の状態までの状態遷移の履歴を利用する待ち時間の計算方法を説明するフローチャートである。図7の処理は、例えばロボット1のCPU111により実行可能であり、遷移履歴取得部17、出現回数算出部18、及び待ち時間算出部19の機能は、CPU111が記憶部112に格納された対応するプログラムを実行することで実現可能である。
【0053】
図7において、ステップS21では、サーバ3から割込要求が来た時のロボット1の状態をロボット1の現状態として設定する。ステップS22では、現状態が割込可能な状態であるか否かを判定し、判定結果がYESであると処理は終了する。一方、ステップS22の判定結果がNOであると、ステップS23では、状態遷移の履歴の遷移列から、現状態が含まれている遷移列を全て抽出して可能遷移列群とする。ステップS24では、可能遷移列群の全ての遷移列の実行時間を求め、求めた実行時間に出現回数をかけた(即ち、積算した)ものの累計を求める。ステップS25では、ステップS24で求めた累計を可能遷移列群の全ての遷移列の出現回数の合計で除算したものを、割込可能な状態に遷移するまでの平均待ち時間とする。ステップS26では、可能遷移列群の出現回数が一番多い遷移列の実行時間を、最多出現率の待ち時間とする。ステップS27では、可能遷移列群の遷移列の中で最も長い実行時間を、最大待ち時間とし、処理は終了する。
【0054】
上記の如き構成のロボット1は、例えば店舗で施設又は売場の案内と販売促進のサービスを提供する。この場合、ロボット1は、例えば無線LAN(Local Area Network)或いは公衆回線ネットワークを介したデータ通信経由でインターネット等のネットワーク2に接続される。又、ロボット1の状態は、サーバ3のオペレータによりネットワーク2経由で遠隔監視される。ロボット1は、例えば周知の方法で人の顔を検知したこと等をトリガに案内や販促のサービスを開始するが、ある時点を境にロボット1が提供するサービスの回数が単位時間当たりの平均回数と比べて著しく減少していることにオペレータが気づいたとする。このような場合、オペレータは、ロボット1をサーバ3から遠隔操作してその原因を調べようとするが、ロボット1が客にサービスを提供中でなかなか遠隔操作ができない等、ロボット1が割込要求による割込可能な状態にならない場合は多々ある。又、オペレータは、一度に多数のロボットの状態を監視している場合もある。
【0055】
本実施例では、サーバ3に対して割込要求がどれくらい待たされるかの目安となる待ち時間情報が提示されるため、オペレータは提示された待ち時間を例えば他のロボットへの対応等に充てることができ、ロボット1及びロボットシステムの効率的な運用が可能となる。
【0056】
ところで、図5の例では、機能ブロック部11〜20の機能はロボット1内で実現されるが、これらの機能ブロック部11〜20の機能の一部をサーバ3側で実現しても良いことは言うまでもない。機能ブロック部11〜20の機能の一部をサーバ3側で実現することにより、ロボット1に対する処理の負荷が軽減できる。
【0057】
図8は、ロボットシステムの動作の第1の例を説明するフローチャートである。この第1の例では、機能ブロック部11〜20の機能はロボット1内で実現される。図8中、ステップSR1〜SR7はロボット1のCPU111により実行され、ステップSS1〜SS5はサーバ3のCPU31により実行される。尚、図8及び後述する図9及び図10では、ネットワーク2の図示は省略する。
【0058】
図8において、サーバ3は、ステップSS1においてロボット1の状態監視を開始する。一方、ロボット1は、ステップSR1において状態遷移実行部12による状態遷移の実行、遷移履歴取得部17による状態遷移の履歴の取得、出現回数集計部18による出現回数の集計を実行する。サーバ3は、ステップSS2においてロボット1に対して割込要求を出力して割込処理の情報をロボット1に送る。ロボット1は、ステップSR2において割込受付部11によりサーバ3からの割込要求を受け付ける。ロボット1が割込可能な状態にあるとロボット1の処理はステップSR5へ進み、割込可能な状態にないとロボット1の処理はステップSR3へ進む。
【0059】
ロボット1は、ステップSR3において割込待ち処理部16により割込待ち処理を実行する。又、ロボット1は、ステップSR4において待ち時間算出部19により待ち時間を算出し、待ち時間提示部20により算出した待ち時間情報をサーバ3に送る。サーバ3は、ステップSS3においてロボット1から送られてくる待ち時間情報を表示部34に表示することでサーバ3のオペレータに提示する。
【0060】
ステップSR4の後、ロボット1は割込要求に応答してステップSR5において割込処理部13により割込処理を実行し、状態遷移実行部12による状態遷移を停止する。又、ロボット1は、ステップSR6において割込処理の終了に応答して復帰処理部14により復帰処理を実行し、状態遷移実行部12の状態遷移の停止状態を解除すると共に、割込処理結果をサーバ3に送る。ステップSR6の後、ロボット1はステップSR7において状態遷移実行部12による状態遷移の実行、遷移履歴取得部17による状態遷移の履歴の取得、出現回数集計部18による出現回数の集計の実行を継続し、以後はステップSR2〜SR7と同様の処理が繰り返される。
【0061】
サーバ3は、ステップSS4においてロボット1から送られてくる割込処理結果に応答して割込終了通知を表示部34に表示することで割込処理の終了をオペレータに通知する。又、サーバ3は、ステップSS5においてロボット1の状態監視を継続し、以後はステップSS2〜SS5と同様の処理が繰り返される。
【0062】
図9は、ロボットシステムの動作の第2の例を説明するフローチャートである。この第2の例では、ロボット制御部15の機能はロボット1内で実現され、機能ブロック部11〜14,16〜20の機能はサーバ3内で実行される。図9中、ステップSS11〜SS19はサーバ3のCPU31により実行される。
【0063】
図9において、サーバ3はステップSS11においてロボット1に任意の動作を指示し、状態遷移実行部による状態遷移の実行、遷移履歴取得部による状態遷移の履歴の取得、出現回数集計部による出現回数の集計を実行することでロボット1の状態監視を開始する。この第2の例では、ロボット1の状態監視中、サーバ3とロボット1とは通信状態にあり、サーバ3はロボット1の状態等に関する情報を通信状態が切断されない限り取得可能であるものとする。サーバ3は、ステップSS12においてロボット1に対する割込要求を発生し、ステップSS13において割込受付部により割込要求の受付を実行する。サーバ3は、ロボット1が割込可能な状態にあると認識していると処理はステップSS16へ進み、割込可能な状態にないと認識していると処理はステップSS14へ進む。
【0064】
サーバ3は、ステップSS14において割込待ち処理部により割込待ち処理を実行する。又、サーバ3は、ステップSS15において待ち時間算出部により待ち時間を算出し、待ち時間提示部により算出した待ち時間情報を表示部34に表示することでサーバ3のオペレータに提示する。
【0065】
サーバ3は、ステップSS16において、ステップSS12で発生した割込要求に応答して割込処理部13により割込処理を実行し、状態遷移実行部による状態遷移を停止すると共に、ロボット1に割込処理に応じた動作を指示する。又、サーバ3は、ステップSS17において割込処理の終了に応答して復帰処理部により復帰処理を実行し、状態遷移実行部の状態遷移の停止状態を解除すると共に、割込処理結果を得る。サーバ3は、ステップSS18において割込処理結果を含む割込終了通知を表示部34に表示することで割込処理の終了をオペレータに通知する。ステップSS18の後、サーバ3はステップSS19において状態遷移実行部による状態遷移の実行、遷移履歴取得部による状態遷移の履歴の取得、出現回数集計部による出現回数の集計を実行を継続することでロボット1の状態監視を継続し、以後はステップSS12〜SS19と同様の処理が繰り返される。
【0066】
図10は、ロボットシステムの動作の第3の例を説明するフローチャートである。この第3の例では、機能ブロック部11〜17の機能はロボット1内で実現され、機能ブロック18〜20の機能はサーバ3内で実現される。図10中、ステップSR21〜SR26はロボット1のCPU111により実行され、ステップSS21〜SS26はサーバ3のCPU31により実行される。
【0067】
図10において、ロボット1は、ステップSR21において状態遷移実行部12による状態遷移の実行、及び遷移履歴取得部17による状態遷移の履歴の取得を実行し、状態遷移の履歴を定期的にサーバ3に送信する。一方、サーバ3は、ステップSS21においてロボット1の状態監視を開始し、ロボット1から定期的に送信されてくる状態遷移の履歴に基づいて出現回数集計部による出現回数の集計を実行する。サーバ3は、ステップSS22においてロボット1に対して割込要求を出力して割込処理の情報をロボット1に送る。ロボット1は、ステップSR22において割込受付部11によりサーバ3からの割込要求を受け付ける。ロボット1が割込可能な状態にあるとロボット1の処理はステップSR24へ進み、割込可能な状態にないとロボット1の処理はステップSR23へ進む。
【0068】
ロボット1は、ステップSR23において割込待ち処理部16により割込待ち処理を実行し、割込待ちの通知をサーバ3に対して実行する。サーバ3は、割込待ち通知に応答してステップSS23において待ち時間算出部により待ち時間を算出し、ステップS24において待ち時間提示部により算出した待ち時間情報を表示部34に表示することでサーバ3のオペレータに提示する。
【0069】
ステップSR23の後、ロボット1は割込要求に応答してステップSR24において割込処理部13により割込処理を実行し、状態遷移実行部12による状態遷移を停止する。又、ロボット1は、ステップSR25において割込処理の終了に応答して復帰処理部14により復帰処理を実行し、状態遷移実行部12の状態遷移の停止状態を解除すると共に、割込処理結果をサーバ3に送る。ステップSR25の後、ロボット1はステップSR26において状態遷移実行部12による状態遷移の実行、及び遷移履歴取得部17による状態遷移の履歴の取得の実行を継続し、状態遷移の履歴を定期的にサーバ3に送信し、以後はステップSR22〜SR26と同様の処理が繰り返される。
【0070】
サーバ3は、ステップSS25においてロボット1から送られてくる割込処理結果に応答して割込終了通知を表示部34に表示することで割込処理の終了をオペレータに通知する。又、サーバ3は、ステップSS26においてロボット1の状態監視、及びロボット1から定期的に送信されてくる状態遷移の履歴に基づいた出現回数集計部による出現回数の集計の実行を継続し、以後はステップSS22〜SS26と同様の処理が繰り返される。
【0071】
この第3の例の場合、ロボット1の状態遷移の履歴はロボット1からサーバ3に定期的に送信されるので、サーバ3とロボット1との通知状態が一時的に切断されてしまっても、サーバ3において信頼性の高い待ち時間情報を提示することができる。
【0072】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
ロボットの状態遷移の履歴を保持する工程と、
制御装置で発生された前記ロボットに対する割込要求を受け付ける工程と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する工程と、
前記制御装置に対して前記待ち時間を提示する工程
を含むことを特徴とする、ロボット制御方法。
(付記2)
前記状態遷移の履歴を保持する工程は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める工程を更に含み、
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、付記1記載のロボット制御方法。
(付記3)
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、付記2記載のロボット制御方法。
(付記4)
前記状態遷移の履歴を保持する工程、前記割込要求を受け付ける工程、前記待ち時間を算出する工程、及び前記待ち時間を提示する工程は、前記ロボット内のプロセッサにより実行されることを特徴とする、付記1乃至3のいずれか1項記載のロボット制御方法。
(付記5)
前記制御装置による前記ロボットの監視中、前記ロボットの状態を前記制御装置により取得する工程を更に含み、
前記状態遷移の履歴を保持する工程、前記割込要求を受け付ける工程、前記待ち時間を算出する工程、及び前記待ち時間を提示する工程は、前記制御装置内のプロセッサにより実行されることを特徴とする、付記1乃至3のいずれか1項記載のロボット制御方法。
(付記6)
前記制御装置による前記ロボットの監視中、前記ロボットの状態を定期的に前記制御装置に送信する工程を更に含み、
前記状態遷移の履歴を保持する工程及び前記割込要求を受け付ける工程は前記ロボット内のプロセッサにより実行され、
前記待ち時間を算出する工程、及び前記待ち時間を提示する工程は、前記制御装置内のプロセッサにより実行されることを特徴とする、付記1乃至3のいずれか1項記載のロボット制御方法。
(付記7)
前記待ち時間を前記制御装置の表示部に表示する工程を更に含むことを特徴とする、付記1乃至6のいずれか1項記載のロボット制御方法。
(付記8)
前記待ち時間を算出する工程は、前記ロボットの現在の状態までの状態遷移の履歴を利用しないで前記待ち時間を計算する第1の計算と、前記ロボットの現在の状態までの状態遷移の履歴を利用して前記待ち時間を計算する第2の計算のいずれかを実行して前記待ち時間を算出することを特徴とする、付記1乃至7のいずれか1項記載のロボット制御方法。
(付記9)
ロボット内のコンピュータに待ち時間を提示させるプログラムであって、
前記ロボットの状態遷移の履歴を記憶部に保持する手順と、
前記ロボットの外部で発生された割込要求を受け付ける手順と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記記憶部に保持された前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する手順と、
前記外部に対して前記待ち時間を提示する手順
を前記コンピュータに実行させることを特徴とする、プログラム。
(付記10)
前記状態遷移の履歴を保持する手順は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記プログラムは、前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める手順を更に前記コンピュータに実行させ、
前記待ち時間を算出する手順は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、付記9記載のプログラム。
(付記11)
前記待ち時間を算出する手順は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、付記10記載のプログラム。
(付記12)
前記待ち時間を算出する手順は、前記ロボットの現在の状態までの状態遷移の履歴を利用しないで前記待ち時間を計算する第1の計算と、前記ロボットの現在の状態までの状態遷移の履歴を利用して前記待ち時間を計算する第2の計算のいずれかを実行して前記待ち時間を算出することを特徴とする、付記9乃至11のいずれか1項記載のプログラム。
(付記13)
割込要求が外部から供給されるロボットであって、
前記ロボットの状態遷移の履歴を保持する記憶部と、
前記割込要求を受け付ける割込受付部と、
前記ロボットが割込可能な状態にないと、前記記憶部に保持された前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する待ち時間算出部と、
前記外部に対して前記待ち時間を提示する待ち時間提示部を備え、
ことを特徴とする、ロボット。
(付記14)
前記記憶部は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める出現回数集計部を更に備え、
前記待ち時間算出部は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、付記13記載のロボット。
(付記15)
前記待ち時間算出部は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、付記14記載のロボット。
【0073】
以上、開示のロボット制御方法及びプログラムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0074】
1 ロボット
2 ネットワーク
3 サーバ
17 遷移履歴取得部
18 出現回数集計部
19 待ち時間算出部
20 待ち時間提示部
31,111 CPU
32,112 記憶部

【特許請求の範囲】
【請求項1】
ロボットの状態遷移の履歴を保持する工程と、
制御装置で発生された前記ロボットに対する割込要求を受け付ける工程と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する工程と、
前記制御装置に対して前記待ち時間を提示する工程
を含むことを特徴とする、ロボット制御方法。
【請求項2】
前記状態遷移の履歴を保持する工程は、前記ロボットの状態遷移の履歴を状態遷移列の形で保持し、
前記ロボットが任意の状態から異なる状態に遷移する状態遷移列の出現回数を求める工程を更に含み、
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて前記待ち時間を算出することを特徴とする、請求項1記載のロボット制御方法。
【請求項3】
前記待ち時間を算出する工程は、前記状態遷移列とその出現回数に基づいて、平均の遷移時間、最多の出現回数を有する状態遷移列の状態遷移に要する必要時間、及び最長の状態遷移列の状態遷移に要する必要時間の少なくともいずれかを算出することを特徴とする、請求項2記載のロボット制御方法。
【請求項4】
前記待ち時間を算出する工程は、前記ロボットの現在の状態までの状態遷移の履歴を利用しないで前記待ち時間を計算する第1の計算と、前記ロボットの現在の状態までの状態遷移の履歴を利用して前記待ち時間を計算する第2の計算のいずれかを実行して前記待ち時間を算出することを特徴とする、請求項1乃至3のいずれか1項記載のロボット制御方法。
【請求項5】
ロボット内のコンピュータに待ち時間を提示させるプログラムであって、
前記ロボットの状態遷移の履歴を記憶部に保持する手順と、
前記ロボットの外部で発生された割込要求を受け付ける手順と、
前記ロボットが前記割込要求を割込可能の状態にない場合、前記記憶部に保持された前記ロボットの状態遷移の履歴に基づいて前記割込要求に対して推定される割込処理の待ち時間を算出する手順と、
前記外部に対して前記待ち時間を提示する手順
を前記コンピュータに実行させることを特徴とする、プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−91237(P2012−91237A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2010−237916(P2010−237916)
【出願日】平成22年10月22日(2010.10.22)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】