(57)【要約】  本技術は、ロボットの動作の失敗を未然に防ぐことができるようにする制御装置、制御方法、およびプログラムに関する。本技術の一側面の制御装置は、タスクの実行時のロボットの状態の遷移が、タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、タスクの失敗に至る前に、所定の処理を行うようにロボットの動作を制御する状態遷移判断部を備える。本技術は、自律的に動作することが可能なロボットに適用することができる。
2020031718.tif 000002
【特許請求の範囲】
【請求項１】
タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する状態遷移判断部を備える
制御装置。
【請求項２】
前記所定の処理は、ユーザに対する警告、前記ロボットの動作の緊急停止である
請求項１に記載の制御装置。
【請求項３】
前記状態遷移判断部は、前記所定の処理としてのユーザに対する警告を行った後に、前記ロボットの状態の遷移が前記失敗状態遷移を辿っている場合、前記ロボットの動作を緊急停止させる
請求項２に記載の制御装置。
【請求項４】
前記ロボットの状態の遷移が前記失敗状態遷移を辿った場合、前記失敗状態遷移を更新する更新部をさらに備える
請求項１に記載の制御装置。
【請求項５】
前記更新部は、前記失敗状態遷移を辿った回数が閾値の回数を超えた場合、または、前記失敗状態遷移を辿った前記ロボットの状態の遷移の内容に応じて、前記失敗状態遷移を更新する
請求項４に記載の制御装置。
【請求項６】
前記更新部は、前記ロボットの状態の遷移が前記失敗状態遷移を辿りやすくなるように前記失敗状態遷移を更新する
請求項４に記載の制御装置。
【請求項７】
前記ロボットの状態の遷移が前記失敗状態遷移を辿った場合、リカバリーを実行するように前記ロボットを制御するリカバリー制御部をさらに備える
請求項１に記載の制御装置。
【請求項８】
前記リカバリー制御部は、前記所定の処理が行われた後に、前記リカバリーを実行させる
請求項７に記載の制御装置。
【請求項９】
前記失敗状態遷移を表す情報を記憶する記憶部をさらに備える
請求項１に記載の制御装置。
【請求項１０】
制御装置が、
タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する
制御方法。
【請求項１１】
コンピュータに、
タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する
処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、制御装置、制御方法、およびプログラムに関し、特に、ロボットの動作の失敗を未然に防ぐことができるようにした制御装置、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
工場などの人がいる環境でロボットを扱う場合、安全性の観点などから、ロボットの誤動作を防ぐ必要がある。機械学習により得られたモデルや予め設定されたルールに基づいて動作する場合、動作の失敗をロボット自身が判断することは難しい。【０００３】
例えば特許文献１には、動作が成功した場合に予想されるセンサ出力データの時系列パターンと、作業中のセンサ出力データの時系列パターンに基づいて、動作の正否を判定する技術が開示されている。時系列パターンの各折線部を１つの状態として扱うとともに各節点を状態変化のためのイベントとして扱い、それぞれの状態とイベントに許容範囲を設定して状態遷移を監視するようになされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−０６５６４９号公報
【特許文献２】特開２００７−３０３８６６号公報
【特許文献３】特開２０１２−７３７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した技術においては、それぞれの状態とイベントにユーザが許容範囲を設定する必要がある。また、動作が成功した場合に予想されるセンサ出力データの時系列パターンを自動的に更新したり、動作が失敗すると判断した場合にリカバリーを行ったりすることができない。【０００６】
動作が成功するか否かの判断の基準となるデータをロボットが自動的に更新したり、動作が失敗すると判断した場合にロボットが動作を自動的にやり直したりすることができれば便利である。【０００７】
本技術はこのような状況に鑑みてなされたものであり、ロボットの動作の失敗を未然に防ぐことができるようにするものである。
【課題を解決するための手段】
【０００８】
本技術の一側面の制御装置は、タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する状態遷移判断部を備える。【０００９】
本技術の一側面においては、タスクの実行時のロボットの状態の遷移が、タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、タスクの失敗に至る前に、所定の処理を行うようにロボットの動作が制御される。
【発明の効果】
【００１０】
本技術によれば、ロボットの動作の失敗を未然に防ぐことができる。【００１１】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１２】
【図１】本技術の一実施形態に係るロボットの外観の例を示す図である。
【図２】失敗状態遷移の例を示す図である。
【図３】失敗状態遷移の他の例を示す図である。
【図４】ロボットのハードウェア構成例を示すブロック図である。
【図５】制御部の機能構成例を示すブロック図である。
【図６】失敗状態遷移生成処理について説明するフローチャートである。
【図７】制御処理について説明するフローチャートである。
【図８】「物体を掴む」のタスクに関する失敗状態遷移の更新の第１の例を示す図である。
【図９】「物体を掴む」のタスクに関する失敗状態遷移の更新の第２の例を示す図である。
【図１０】「物体を人に渡す」のタスクに関する失敗状態遷移の更新の第１の例を示す図である。
【図１１】「物体を人に渡す」のタスクに関する失敗状態遷移の更新の第２の例を示す図である。
【図１２】「物体を掴む」のタスクに関する失敗状態遷移の更新の他の例を示す図である。
【図１３】制御部の他の機能構成例を示すブロック図である。
【図１４】失敗状態遷移更新部の構成例を示すブロック図である。
【図１５】失敗状態遷移更新処理について説明するフローチャートである。
【図１６】「物体を掴む」のタスクに関する、リカバリーを含む失敗状態遷移の第１の例を示す図である。
【図１７】「物体を掴む」のタスクに関する、リカバリーを含む失敗状態遷移の第２の例を示す図である。
【図１８】「物体を人に渡す」のタスクに関する、リカバリーを含む失敗状態遷移の第１の例を示す図である。
【図１９】「物体を人に渡す」のタスクに関する、リカバリーを含む失敗状態遷移の第２の例を示す図である。
【図２０】制御部の他の機能構成例を示すブロック図である。
【図２１】リカバリー制御部の構成例を示すブロック図である。
【図２２】リカバリー実行処理について説明するフローチャートである。
【図２３】制御システムの構成例を示す図である。
【図２４】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、本技術を実施するための形態について説明する。説明は以下の順序で行う。
１．失敗状態遷移
２．ロボットの構成例
３．ロボットの動作
４．失敗状態遷移を更新する例
５．リカバリーの例
６．変形例
【００１４】
＜失敗状態遷移＞
図１は、本技術の一実施形態に係るロボットの外観の例を示す図である。
【００１５】
図１のＡに示すロボット１は、アーム型のロボットである。ロボット１は、ベース部１１、ベース部１１から延びるアーム部１２、およびアーム部１２の先端に取り付けられたハンド部１３から構成される。ロボット１は、工場などに設けられ、物を掴んで移動させるなどの所定のタスクを実行する。
【００１６】
ロボット１に代えて、図１のＢに示すような、二足歩行が可能な人型のロボットであるロボット２が用いられるようにしてもよい。ロボット２もアーム部などを有しており、物を掴んで移動させることができる。
【００１７】
図１に示すロボット１、ロボット２は、内蔵するコンピュータによって所定のプログラムを実行し、各部位を駆動させることによって自律的な行動をとる。
【００１８】
以下、適宜、アーム型のロボットであるロボット１において行われる処理について説明する。ロボット１において行われる処理と同様の処理が、ロボット２や、四足歩行が可能なロボットなどの他の形状のロボットにおいて行われる。
【００１９】
ロボット１は、物を掴んで移動させるなどのタスクを実行する場合、各タイミングの自身の状態を監視する。ロボット１は、自身の状態の遷移が、タスクの失敗に至る状態の遷移である失敗状態遷移と同じ遷移を辿っている場合、失敗の状態に辿り着く前に、ユーザに警告するなどの所定のアクションを実行する。
【００２０】
ロボット１は、タスク毎の失敗状態遷移を表す情報である失敗状態遷移情報を有している。失敗状態遷移情報は、所定のタイミングで予め生成され、ロボット１に用意される。
【００２１】
ここで、状態には、動作とイベントが含まれる。動作は、ロボット１が能動的に行う事象を表す。「アームを動かす」、「認識する」などの事象が動作に含まれる。また、イベントは、ロボット１において検出される受動的な事象を表す。「見失う」などの事象がイベントに含まれる。ここでは、各状態を値によって表すのではなく、ロボット１の状態が各状態に該当するか否かが判断される。
【００２２】
なお、状態には、画像の認識結果、異音検知結果、匂い検知結果などの認識結果が含まれる。また、状態には、物体を把持することによって特定される、物体の形状、滑りやすさ、柔らかさなどの認識結果も含まれる。
【００２３】
図２は、失敗状態遷移の例を示す図である。
【００２４】
図２に示す失敗状態遷移は、「物体を掴む」のタスクの失敗に至る状態遷移を表す。「物体を掴む」のタスクは、例えば、ロボット１の近傍に置かれた物体を認識し、把持して持ち上げるタスクである。
【００２５】
「物体を掴む」のタスクの実行時、ロボット１の状態は、はじめに、アーム部１２が上がった状態である状態＃１となり、次に、把持対象となる物体が認識された状態である状態＃２となる。把持対象となる物体は、例えば、カメラにより撮影された画像やセンサにより検出されたセンサデータに基づいて認識される。
【００２６】
把持対象となる物体を認識した状態である状態＃２になった後、アーム部１２を動かすか否かが判定される。
【００２７】
アーム部１２を動かすと判定された場合、ロボット１の状態は、アーム部１２を動かす状態である状態＃３となる。ロボット１は、状態＃３になった場合、各部を駆動してアーム部１２を動かす。アーム部１２を動かさない場合は、タスクの失敗に至ることがないものとして扱われる。
【００２８】
アーム部１２を動かす状態である状態＃３になった後、把持対象となる物体を見失ったか否かが判定される。
【００２９】
把持対象となる物体を見失ったと判定された場合、ロボット１の状態は、把持対象となる物体を見失った状態である状態＃４となる。
【００３０】
状態＃４になった場合、矢印Ａ１の先に示すように、警告のアクションが実行される。ロボット１は、スピーカなどを駆動させ、把持対象となる物体を見失った状態になったことを音声によってユーザに警告する。把持対象となる物体を見失っていない場合は、タスクの失敗に至ることがないものとして扱われる。
【００３１】
把持対象となる物体を見失った状態である状態＃４となり、警告のアクションが実行された後、アーム部１２をさらに動かすか否かが判定される。
【００３２】
アーム部１２をさらに動かすと判定された場合、ロボット１の状態は、アーム部１２を動かす状態である状態＃５となる。
【００３３】
状態＃５になった場合、タスクが失敗に至る前の状態である失敗前状態であると判断され、矢印Ａ２の先に示すように、緊急停止のアクションが実行される。ロボット１は、各部の駆動を停止して、アーム部１２を動かさない。アーム部１２を動かさないことにより、タスクの失敗に至ることはない。
【００３４】
このように、状態＃１乃至＃５からなる状態遷移が、「物体を掴む」のタスクを実行する場合の失敗状態遷移として設定される。ロボット１の状態の遷移が失敗状態遷移と同じ遷移を辿っている場合、警告や緊急停止のアクションが実行される。
【００３５】
把持対象となる物体を見失って警告を行った後においても失敗状態遷移を辿り、アーム部１２を動かそうとする場合、失敗前状態となって動作を緊急停止させることにより、ロボット１は、タスクの失敗を防ぎ、周りにある物にアーム部１２などがぶつかってしまうことを防ぐことが可能となる。
【００３６】
図３は、失敗状態遷移の他の例を示す図である。
【００３７】
図３に示す失敗状態遷移は、「物体を人に渡す」のタスクの失敗に至る状態遷移を表す。「物体を人に渡す」のタスクは、例えば、ロボット１の近傍に置かれた物体を把持したまま、近くにいる人の前方に差し出し、把持を解除することによって人に渡すタスクである。
【００３８】
「物体を人に渡す」のタスクの実行時、ロボット１の状態は、はじめに、物体をハンド部１３により持った状態である状態＃１１となり、次に、ハンド部１３を人の前に差し出す状態である状態＃１２となる。物体を持つ動作は、対象の物体をカメラなどのセンサの出力に基づいて認識し、アーム部１２とハンド部１３を駆動させることによって実現される。
【００３９】
物体を把持したハンド部１３を人の前に差し出す状態である状態＃１２になった後、人の手が物体に触れていないか否かが判定される。人の手が物体に触れたことは、例えば、カメラにより撮影された画像やセンサにより検出されたセンサデータに基づいて認識される。
【００４０】
人の手が物体に触れていないと判定された場合、ロボット１の状態は、人の手が物体に触れていない状態である状態＃１３となる。
【００４１】
状態＃１３になった場合、矢印Ａ１１の先に示すように、警告のアクションが実行される。ロボット１は、スピーカなどを駆動させ、手が物体に触れていないことを音声によってユーザに警告する。人の手が物体に触れている場合は、タスクの失敗に至ることがないものとして扱われる。
【００４２】
人の手が物体に触れていない状態である状態＃１３となり、警告のアクションが実行された後、ハンド部１３により差し出している物体を人が見ていないか否かが判定される。物体を見ているか否かは、例えば、カメラにより撮影された画像を解析することによって特定される、人の視線の方向に基づいて判定される。
【００４３】
人が物体を見ていないと判定された場合、ロボット１の状態は、人が物体を見ていない状態である状態＃１４となる。
【００４４】
状態＃１４になった場合、矢印Ａ１２の先に示すように、警告のアクションが実行される。ロボット１は、スピーカなどを駆動させ、物体を見ることに集中することを音声によってユーザに警告する。人が物体を見ている場合は、タスクの失敗に至ることがないものとして扱われる。
【００４５】
人が物体を見ていない状態である状態＃１４となり、警告のアクションが実行された後、物体を握るハンド部１３の力を緩めるか否かが判定される。
【００４６】
物体を握るハンド部１３の力を緩めると判定された場合、ロボット１の状態は、物体を握るハンド部１３の力を緩める状態である状態＃１５となる。物体を握るハンド部１３の力を緩めない場合は、タスクの失敗に至ることがないものとして扱われる。
【００４７】
状態＃１５になった場合、失敗前状態であると判断され、矢印Ａ１３の先に示すように、握り直しのアクションが実行される。ロボット１は、ハンド部１３の力を加えて物体を再度握るように各部を駆動する。
【００４８】
このように、状態＃１１乃至＃１５からなる状態遷移が、「物体を人に渡す」のタスクを実行する場合の失敗状態遷移として設定される。ロボット１の状態の遷移が失敗状態遷移と同じ遷移を辿っている場合、警告や緊急停止のアクションが実行される。
【００４９】
物体を見るように警告を行った後においても失敗状態遷移を辿り、ハンド部１３の力を緩めようとする場合、失敗前状態となって物体を握り直すための動作を行うことにより、ロボット１は、タスクの失敗を防ぎ、持ち上げている物体を落としてしまうことを防ぐことが可能となる。
【００５０】
このように、失敗状態遷移がタスク毎に設定され、そのような遷移を表す情報がロボット１に用意される。
【００５１】
ロボット１は、自身の状態の遷移が失敗状態遷移と同じ遷移を辿っている場合にタスクが失敗するものと判断し、実際に失敗に至る前に、タスクに応じた最適な動作を行うことにより、失敗を防ぐことが可能となる。
【００５２】
以上のようにして失敗を防ぐロボット１の処理についてはフローチャートを参照して後述する。
【００５３】
＜ロボットの構成例＞
図４は、ロボット１のハードウェア構成例を示すブロック図である。
【００５４】
図４に示すように、ロボット１は、制御部３１に対して、入出力部３２、駆動部３３、無線通信部３４、および電源部３５が接続されることによって構成される。
【００５５】
制御部３１は、CPU(Central Processing Unit)，ROM(Read Only Memory)，RAM(Random Access Memory)、フラッシュメモリなどを有するコンピュータにより構成される。制御部３１は、CPUにより所定のプログラムを実行し、ロボット１の全体の動作を制御する。制御部３１を構成するコンピュータは、ロボット１の動作を制御する制御装置として機能する。
【００５６】
例えば、制御部３１は、入出力部３２から供給された情報、および、駆動部３３の各駆動ユニットから供給された情報に基づいて、自身の状態を監視する。
【００５７】
また、制御部３１は、所定のタスクを実行する場合、そのタスクの失敗状態遷移情報に基づいて、自身の状態の遷移が、失敗状態遷移と同じ遷移を辿っているか否かを判断する。自身の状態の遷移が失敗状態遷移と同じ遷移を辿っているとして判断した場合、制御部３１は、実際に失敗に至る前に、所定のアクションを実行する。
【００５８】
入出力部３２は、カメラ４１、マイク（マイクロフォン）４２、スピーカ４３、タッチセンサ４４、およびLED(Light Emitting Diode)４５により構成される。
【００５９】
カメラ４１は、周囲の環境を順次撮影する。カメラ４１は、撮影によって得られた静止画像または動画像である撮影画像のデータを制御部３１に出力する。
【００６０】
マイク４２は、環境音を検出する。マイク４２は、環境音のデータを制御部３１に出力する。
【００６１】
スピーカ４３は、発話音声、BGMなどの所定の音を出力する。
【００６２】
タッチセンサ４４は、ベース部１１などの所定の部位に設けられる。タッチセンサ４４は、ユーザが触れたことを検出し、ユーザによる操作の内容を表す情報を制御部３１に出力する。
【００６３】
LED４５は、制御部３１による制御に従って発光し、ユーザに情報を提示する。LED４５に代えて、LCD、有機ELディスプレイなどの小型のディスプレイが設けられるようにしてもよい。
【００６４】
入出力部３２には、周囲にある物体までの距離を測定する測距センサ、GPS(Global Positioning System)などの測位センサなどの各種のモジュールが設けられる。
【００６５】
駆動部３３は、制御部３１による制御に従って駆動し、ロボット１の行動を実現する。駆動部３３は、ロール、ピッチ、ヨーなどの関節軸毎に設けられた複数の駆動ユニットにより構成される。
【００６６】
各駆動ユニットは、例えばロボット１のそれぞれの関節に設けられる。各駆動ユニットは、軸回りの回転動作を行うモータ、モータの回転位置を検出するエンコーダ、および、エンコーダの出力に基づいてモータの回転位置や回転速度を適応的に制御するドライバの組み合わせによって構成される。駆動ユニットの数、駆動ユニットの位置などによって、ロボット１のハードウェア構成が定まる。
【００６７】
図４の例においては、駆動ユニットとして、駆動ユニット５１−１乃至５１−ｎが設けられる。例えば駆動ユニット５１−１は、モータ６１−１、エンコーダ６２−１、ドライバ６３−１により構成される。駆動ユニット５１−２乃至５１−ｎも、駆動ユニット５１−１と同様の構成を有する。
【００６８】
無線通信部３４は、無線LANモジュール、LTE(Long Term Evolution)に対応した携帯通信モジュールなどの無線通信モジュールである。無線通信部３４は、インターネット上のサーバなどの外部の装置との間で通信を行う。無線通信部３４は、制御部３１から供給されたデータを外部の装置に送信し、外部の装置から送信されてきたデータを受信する。
【００６９】
電源部３５は、ロボット１内の各部に対して給電を行う。電源部３５は、充電バッテリ７１と、充電バッテリ７１の充放電状態を管理する充放電制御部７２により構成される。
【００７０】
図５は、制御部３１の機能構成例を示すブロック図である。
【００７１】
図５に示すように、制御部３１は、動作出力部１０１、動作取得部１０２、失敗状態遷移判断部１０３、失敗状態遷移記憶部１０４、失敗状態遷移生成部１０５、および駆動制御部１０６から構成される。図５に示す機能部のうちの少なくとも一部は、制御部３１を構成するCPUにより所定のプログラムが実行されることにより実現される。
【００７２】
動作出力部１０１は、駆動部３３の各駆動ユニットから供給された情報を受信し、動作取得部１０２に出力する。
【００７３】
動作取得部１０２は、動作出力部１０１から供給された情報に基づいて、ロボット１の動作の内容を検出する。動作取得部１０２は、動作の内容を表す情報を失敗状態遷移判断部１０３に出力する。
【００７４】
失敗状態遷移判断部１０３は、所定のタスクを実行する場合、実行するタスクの失敗状態遷移を表す情報を失敗状態遷移記憶部１０４から読み出して取得する。
【００７５】
失敗状態遷移判断部１０３は、動作取得部１０２から供給された情報により表される動作に基づいてロボット１の状態を特定し、自身の状態の遷移が、失敗状態遷移と同じ遷移を辿っているか否かを判断する。
【００７６】
失敗状態遷移判断部１０３は、状態遷移の判断結果に基づいて駆動制御部１０６を制御する。例えば、失敗状態遷移判断部１０３は、自身の状態遷移が失敗状態遷移と同じ遷移を辿っていないと判断した場合、タスクの成功までの各動作を行わせる。また、失敗状態遷移判断部１０３は、自身の状態遷移が失敗状態遷移と同じ遷移を辿っていると判断した場合、予め設定されたアクションを実行させる。
【００７７】
失敗状態遷移記憶部１０４は、各タスクの失敗状態遷移情報を記憶する。
【００７８】
失敗状態遷移生成部１０５は、各タスクの失敗状態遷移を設定し、失敗状態遷移情報を生成する。失敗状態遷移生成部１０５は、失敗状態遷移情報を失敗状態遷移記憶部１０４に出力し、記憶させる。
【００７９】
駆動制御部１０６は、失敗状態遷移判断部１０３から供給された情報に基づいて、駆動部３３の各駆動ユニットを制御し、所定の動作を行わせる。
【００８０】
＜ロボットの動作＞
ここで、以上のような構成を有するロボット１の動作について説明する。
【００８１】
はじめに、図６のフローチャートを参照して、ロボット１の失敗状態遷移生成処理について説明する。
【００８２】
ステップＳ１において、失敗状態遷移生成部１０５は、所定のタスクの失敗状態遷移を設定する。失敗状態遷移の設定が、例えばロボット１の管理者の操作に応じて行われるようにしてもよい。
【００８３】
ステップＳ２において、失敗状態遷移生成部１０５は、失敗状態遷移情報を失敗状態遷移記憶部１０４に出力し、記憶させる。
【００８４】
以上の処理が、各タスクを対象として行われる。失敗状態遷移記憶部１０４には、タスク毎の失敗状態遷移情報が記憶される。
【００８５】
次に、図７のフローチャートを参照して、ロボット１の制御処理について説明する。
【００８６】
ステップＳ１１において、失敗状態遷移判断部１０３は、動作取得部１０２から供給された情報により表される動作に基づいてロボット１の状態を特定する。動作取得部１０２からは、ロボット１がどのように動いているか（アーム部１２を上に動かす、前に進むなど）、ロボット１がどのような情報を得たか（画像/音声認識結果、その他センサ情報など）などを表す情報が、動作の内容を表す情報として供給される。
【００８７】
ステップＳ１２において、失敗状態遷移判断部１０３は、ロボット１の状態を失敗状態遷移に当てはめる。
【００８８】
ステップＳ１３において、失敗状態遷移判断部１０３は、ロボット１の状態の遷移が、失敗状態遷移と同じ遷移を辿っており、アクションを実行すべき遷移が生じたか否かを判定する。
【００８９】
アクションを実行すべき遷移が生じていないとステップＳ１３において判定した場合、失敗状態遷移判断部１０３は、ステップＳ１１に戻り、上述した処理を繰り返す。
【００９０】
アクションを実行すべき遷移が生じたとステップＳ１３において判定した場合、ステップＳ１４において、失敗状態遷移判断部１０３は、所定のアクションを実行するように駆動制御部１０６を制御する。上述したように、ロボット１の状態に応じて、ユーザに対する警告、動作の緊急停止、握り直しなどのアクションが実行される。
【００９１】
アクションが実行された後、処理は終了となる。以上の処理が、タスクの実行中、繰り返し行われる。
【００９２】
以上のように、ロボット１は、タスクが失敗する前に最適な動作を行うことにより、タスクの失敗を防ぐことができる。
【００９３】
＜失敗状態遷移を更新する例＞
失敗状態遷移がロボット１により自動的に更新されるようにしてもよい。失敗状態遷移の更新は、例えば、失敗前状態に至った回数が多い場合に行われる。
【００９４】
・更新の例１
図８は、「物体を掴む」のタスクに関する失敗状態遷移の更新の第１の例を示す図である。
【００９５】
図８の状態＃２１乃至＃２３は、図２の状態＃１乃至＃３と同様である。アーム部１２を動かす状態である状態＃２３になった後、把持対象となる物体を見失ったか否かが判定される。
【００９６】
把持対象となる物体を見失ったと判定された場合、ロボット１の状態は、把持対象となる物体を見失った状態である状態＃２４となる。
【００９７】
状態＃２４になった場合、矢印Ａ２１の先に示すように、緊急停止のアクションが実行される。ロボット１は、各部の駆動を停止して、アーム部１２を動かさない。
【００９８】
すなわち、図８の失敗状態遷移においては、破線で囲んで示すように、把持対象となる物体を見失った状態である状態＃２４になった場合に失敗前状態に至ったものと判断され、ユーザに対する警告なしに、緊急停止のアクションが実行される。言い換えると、失敗前状態に至りやすくなるように、失敗状態遷移が更新されることになる。
【００９９】
失敗前状態に至ったものと早い段階で判断するように失敗状態遷移が更新されることにより、より確実に、タスクの失敗を防ぐことが可能となる。
【０１００】
・更新の例２
図９は、「物体を掴む」のタスクに関する失敗状態遷移の更新の第２の例を示す図である。
【０１０１】
図９の状態＃３１乃至＃３３は、図２の状態＃１乃至＃３と同様である。アーム部１２を動かす状態である状態＃３３になった後、把持対象となる物体の半分以上が画角から外れたか否かが判定される。
【０１０２】
把持対象となる物体の半分以上が画角から外れたと判定された場合、ロボット１の状態は、把持対象となる物体の半分以上が画角から外れた状態である状態＃３４となる。
【０１０３】
状態＃３４になった場合、矢印Ａ３１の先に示すように、警告のアクションが実行される。ロボット１は、スピーカなどを駆動させ、把持対象となる物体の半分以上が画角から外れたことを音声によってユーザに警告する。
【０１０４】
すなわち、図９の失敗状態遷移においては、破線で囲んで示すように、図２の遷移における基準より厳しい基準に基づいて警告のアクションが実行されることになる。
【０１０５】
図２の失敗状態遷移においては、把持対象となる物体の例えば全体が画角から外れ、物体を見失ったと判定された場合に警告のアクションが実行される。把持対象となる物体の半分が画角から外れる状態は、物体の全体が画角から外れる状態と比べて生じやすい状態であるから、図９の失敗状態遷移の方が、警告のアクションを実行する基準が厳しい基準であるといえる。言い換えると、失敗状態遷移を辿りやすくなるように、失敗状態遷移が更新されることになる。
【０１０６】
図９の失敗状態遷移において、警告のアクションが実行された後の遷移は、図２を参照して説明した遷移と同様である。
【０１０７】
アクションを実行する基準がより厳しい基準となるように失敗状態遷移が更新されることにより、より確実に、タスクの失敗を防ぐことが可能となる。
【０１０８】
・更新の例３
図１０は、「物体を人に渡す」のタスクに関する失敗状態遷移の更新の第１の例を示す図である。
【０１０９】
図１０の状態＃４１乃至＃４３は、図３の状態＃１１乃至＃１３と同様である。人の手が物体に触れていない状態である状態＃４３になった場合、矢印Ａ４１の先に示すように、警告のアクションが実行される。
【０１１０】
人の手が物体に触れていない状態である状態＃４３となり、警告のアクションが実行された後、人の顔が物体の方向を向いていないか否かが判定される。
【０１１１】
人の顔が物体の方向を向いていないと判定された場合、ロボット１の状態は、人の顔が物体の方向を向いていない状態である状態＃４４となる。状態＃４４になった場合、矢印Ａ４２の先に示すように、警告のアクションが実行される。
【０１１２】
すなわち、図１０の失敗状態遷移においては、破線で囲んで示すように、図３の遷移における基準より厳しい基準に基づいて警告のアクションが実行されることになる。
【０１１３】
図３の失敗状態遷移においては、人が物体を見ていないと判定された場合に警告のアクションが実行される。言い換えると、顔の向きに関わらず、視線を物体に向けてさえいれば警告のアクションが実行されないことになる。
【０１１４】
視線だけでなく顔の向きについても意識させるという点で人の注意をより要求する基準が用いられているから、図１０の失敗状態遷移の方が、警告のアクションを実行する基準としてより厳しい基準を用いた遷移であるといえる。
【０１１５】
図１０の失敗状態遷移において、警告のアクションが実行された後の遷移は、図３を参照して説明した遷移と同様である。
【０１１６】
・更新の例４
図１１は、「物体を人に渡す」のタスクに関する失敗状態遷移の更新の第２の例を示す図である。
【０１１７】
図１１の状態＃５１，＃５２は、図３の状態＃１１，＃１２と同様である。物体を把持したハンド部１３を人の前に差し出す状態である状態＃１２になった後、人の手が物体を握っていないか否かが判定される。
【０１１８】
人の手が物体を握っていないと判定された場合、ロボット１の状態は、人の手が物体を握っていない状態である状態＃５３となる。状態＃５３になった場合、矢印Ａ５１の先に示すように、警告のアクションが実行される。
【０１１９】
すなわち、図１１の失敗状態遷移においては、破線で囲んで示すように、図３の遷移における基準より厳しい基準に基づいて警告のアクションが実行されることになる。
【０１２０】
図３の失敗状態遷移においては、人の手が物体に触れていないと判定された場合に警告のアクションが実行される。言い換えると、物体を握らないでも、手が触れてさえいれば警告のアクションが実行されないことになる。
【０１２１】
物体に触れるだけでなく実際に握らせるという点で人の注意をより要求する基準であるから、図１０の失敗状態遷移の方が、警告のアクションを実行する基準としてより厳しい基準を用いた遷移であるといえる。
【０１２２】
図１１の失敗状態遷移において、警告のアクションが実行された後の遷移は、図３を参照して説明した遷移と同様である。
【０１２３】
・更新の例５
図１２は、「物体を掴む」のタスクに関する失敗状態遷移の更新の他の例を示す図である。
【０１２４】
図１２に示す失敗状態遷移は、警告のアクションを実行することになる状態が追加されている点で、図２の失敗状態遷移と異なる。
【０１２５】
図１２の状態＃６１，＃６２は、図２の状態＃１，＃２と同様である。アーム部１２を動かす状態である状態＃６３になった後、把持対象となる物体の半分以上が画角から外れたか否かが判定される。
【０１２６】
把持対象となる物体の半分以上が画角から外れたと判定された場合、ロボット１の状態は、把持対象となる物体の半分以上が画角から外れた状態である状態＃６４となる。
【０１２７】
状態＃６４になった場合、矢印Ａ６１の先に示すように、警告のアクションが実行される。
【０１２８】
すなわち、図１２の失敗状態遷移においては、破線で囲んで示すように、警告のアクションを実行すべき状態になったか否かの判定が追加され、図９の遷移と比べて、警告のアクションが実行されやすくなる。
【０１２９】
警告のアクションが実行された後の遷移は、図２の状態＃３以降の遷移と同様である。
【０１３０】
このように、警告のアクションを実行することになる状態を増やすように失敗状態遷移が更新されることによっても、より確実に、タスクの失敗を防ぐことが可能となる。
【０１３１】
・失敗状態遷移更新部の構成例
図１３は、制御部３１の他の機能構成例を示すブロック図である。
【０１３２】
図１３に示す構成は、基本的に、失敗状態遷移更新部１０７が追加されている点を除いて、図５に示す構成と同じである。重複する説明については適宜省略する。
【０１３３】
失敗状態遷移更新部１０７は、失敗状態遷移を更新するタイミングになったと判断した場合、失敗状態遷移を上述したようにして更新する。失敗状態遷移を更新するタイミングになったか否かは、失敗状態遷移判断部１０３から供給された情報に基づいて判断される。
【０１３４】
失敗状態遷移更新部１０７は、更新後の失敗状態遷移を表す失敗状態遷移情報を失敗状態遷移記憶部１０４に出力し、記憶させる。
【０１３５】
図１４は、失敗状態遷移更新部１０７の構成例を示すブロック図である。
【０１３６】
図１４に示すように、失敗状態遷移更新部１０７は、失敗情報取得部１３１、更新判断部１３２、更新部１３３、更新判断基準情報記憶部１３４、および更新遷移情報記憶部１３５から構成される。
【０１３７】
失敗情報取得部１３１は、失敗状態遷移判断部１０３（図１３）から出力された情報に基づいて、タスクの失敗に関する情報を取得する。失敗情報取得部１３１は、例えば、失敗前状態に至った回数を特定し、特定した回数を表す情報を更新判断部１３２に出力する。
【０１３８】
更新判断部１３２は、失敗情報取得部１３１から供給された情報に基づいて、失敗状態遷移を更新するか否かを判断する。更新判断基準情報記憶部１３４には、各タスクについての、更新の判断の基準となる更新判断基準情報が記憶されている。
【０１３９】
失敗状態遷移を更新するか否かは、例えば、失敗前状態に至った回数と、更新判断基準情報により表される閾値の回数とを比較することによって行われる。更新判断部１３２は、所定のタスクの失敗前状態に至った回数が閾値の回数を超えた場合、そのタスクの失敗状態遷移を更新すると判断し、そのことを表す情報を更新部１３３に出力する。
【０１４０】
更新部１３３は、更新すると判断された失敗状態遷移を、更新遷移情報記憶部１３５に記憶されている情報に基づいて更新する。更新遷移情報記憶部１３５には、失敗状態遷移の更新の仕方に関する情報が記憶されている。更新部１３３は、更新後の失敗状態遷移を表す失敗状態遷移情報を失敗状態遷移記憶部１０４に出力し、記憶させる。
【０１４１】
・失敗状態遷移更新処理
図１５のフローチャートを参照して、失敗状態遷移を更新するロボット１の処理について説明する。
【０１４２】
ステップＳ２１において、失敗情報取得部１３１は、失敗状態遷移判断部１０３から出力された情報に基づいて、タスクの失敗に関する情報を取得する。
【０１４３】
例えば、失敗情報取得部１３１は、失敗に関する情報として、失敗前状態に至った回数、失敗の内容、失敗の深刻度を取得する。
【０１４４】
失敗の内容は、上述したアクションの原因である。例えば、物体を見失う、人の手が物体に触れていない、人が物体を見ていない、物体の半分が画角から外れる、人の顔が物体の方向を向いていない、人の手が物体を握っていない、などが、失敗の内容として取得される。
【０１４５】
また、失敗の深刻度は、失敗前状態に至ったことの深刻度である。例えば、ぶつかったか否か、物体を落としたか否か、物体や壁などを壊したか否か、駆動領域のリミットまで動いたか否か、人が近くにいたか否か、などの、失敗前状態に応じた深刻度が取得される。
【０１４６】
ステップＳ２２において、更新判断部１３２は、失敗状態遷移の更新の条件を満たしたか否かを判定する。
【０１４７】
ここでは、例えば、失敗前状態に至った回数が閾値の回数以上となった場合、更新の条件を満たしたものとして判定される。
【０１４８】
また、同じ内容の失敗が閾値の回数以上繰り返された場合、または、深刻度が閾値の度合いより高い失敗が起きた場合にも、更新の条件を満たしたものとして判定される。
【０１４９】
更新の条件を満たしていないとステップＳ２２において判定された場合、ステップＳ２１に戻り、以上の処理が繰り返される。
【０１５０】
更新の条件を満たしたとステップＳ２２において判定された場合、ステップＳ２３において、更新部１３３は失敗状態遷移を更新する。失敗状態遷移の更新は、例えば以下の１〜３のようにして行われる。
【０１５１】
１．事前の設定に従って、上述したように、失敗前状態に至ったものと早い段階で判断するように、あるいは、アクションを実行する基準がより厳しい基準となるように更新する。
【０１５２】
例えば、失敗前状態に至った回数が閾値の回数以上となった場合は、失敗前状態に至ったものと早い段階で判断するように更新される。また、同じ内容の失敗が閾値の回数以上繰り返された場合、または、深刻度が閾値の度合いより高い失敗が起きた場合は、アクションを実行する基準がより厳しい基準となるように更新される。
【０１５３】
２．使用する失敗状態遷移を状況に応じて変えるように更新する。
【０１５４】
例えば、把持対象となる物体の大きさが所定のサイズより小さい場合には図８の失敗状態遷移を使用し、所定のサイズより大きい場合には図９の失敗状態遷移を使用するといったように、使用する失敗状態遷移が把持対象となる物体の大きさに応じて切り替えられる。
【０１５５】
また、物体の渡し先となる人が子どもである場合には図１０の失敗状態遷移を使用し、大人である場合には図１１の失敗状態遷移を使用するといったように、使用する失敗状態遷移が物体の渡し先となる人の属性に応じて切り替えられる。
【０１５６】
３．ユーザによる設定に従って更新する。
【０１５７】
この場合、スピーカ４３から音声を出力するなどして、ユーザに対して条件を更新することが促される。
【０１５８】
ステップＳ２４において、更新部１３３は、更新後の失敗状態遷移を表す失敗状態遷移情報を失敗状態遷移記憶部１０４に記憶させ、処理を終了させる。
【０１５９】
このように、条件を満たした場合に失敗状態遷移を更新することにより、ロボット１は、タスクの失敗をより確実に防ぐことができる。
【０１６０】
＜リカバリーの例＞
失敗前状態に至った場合にリカバリーが実行されるようにしてもよい。リカバリーは、タスクの実行を再度試みる動作である。
【０１６１】
・リカバリーの例１
図１６は、「物体を掴む」のタスクに関する、リカバリーを含む失敗状態遷移の第１の例を示す図である。
【０１６２】
図１６の状態＃１０１乃至＃１０５は、それぞれ、図２の状態＃１乃至＃５と同様である。
【０１６３】
図１６の例においては、アーム部１２を動かす状態である状態＃１０５となり、失敗前状態であると判断された場合、ロボット１の状態は、再度、状態＃１０１に戻る。
【０１６４】
すなわち、物体を見失った状態でアーム部１２を動かす場合、ロボット１は、アーム部１２を上げた状態となるように各部を制御する。図１６の例においては、アーム部１２を上げた状態となるように各部を制御する動作によって、リカバリーが実行される。
【０１６５】
・リカバリーの例２
図１７は、「物体を掴む」のタスクに関する、リカバリーを含む失敗状態遷移の第２の例を示す図である。
【０１６６】
図１７の状態＃１１１乃至＃１１５は、それぞれ、図２の状態＃１乃至＃５と同様である。
【０１６７】
図１７の例においては、アーム部１２を動かす状態である状態＃１１５となり、失敗前状態であると判断された場合、ロボット１の状態は、物体を認識していた位置までアーム部１２を動かす状態である状態＃１１６となる。ロボット１は、物体を見失う直前の位置までアーム部１２を動かすように各部を制御する。
【０１６８】
物体を認識していた位置までアーム部１２を動かす状態である状態＃１１６になった後、ロボット１の状態は、物体追跡パラメータを更新する状態である状態＃１１７となる。
【０１６９】
物体追跡パラメータは、カメラ４１により撮影された画像に基づいて物体を追跡するためのパラメータである。カメラ４１がアーム部１２の先端近傍に設けられている場合、物体追跡パラメータには、アーム部１２の移動速度などの情報が含まれる。
【０１７０】
ロボット１は、物体を見失わないように、アーム部１２の移動速度を下げるなどして物体追跡パラメータを更新する。その後、ロボット１の状態は状態＃１１２に戻り、同様の状態遷移が続けられる。図１７の例においては、物体を見失う直前の位置までアーム部１２を動かし、物体追跡パラメータを更新する動作によって、リカバリーが実行される。
【０１７１】
・リカバリーの例３
図１８は、「物体を人に渡す」のタスクに関する、リカバリーを含む失敗状態遷移の第１の例を示す図である。
【０１７２】
図１８の状態＃１２１乃至＃１２５は、それぞれ、図３の状態＃１１乃至＃１５と同様である。
【０１７３】
図１８の例においては、物体を握るハンド部１３の力を緩める状態である状態＃１２５となり、失敗前状態であると判断された場合、ロボット１の状態は、再度、状態＃１２１に戻る。
【０１７４】
すなわち、物体の渡し先となる人が物体を見ていない状態でハンド部１３の力を緩めようとする場合、ロボット１は、物体を持つ状態となるように、ハンド部１３を含む各部を制御する。図１８の例においては、物体を持つ状態となるようにハンド部１３を含む各部を制御する動作によって、リカバリーが実行される。
【０１７５】
・リカバリーの例４
図１９は、「物体を人に渡す」のタスクに関する、リカバリーを含む失敗状態遷移の第２の例を示す図である。
【０１７６】
図１９の状態＃１３１乃至＃１３５は、それぞれ、図３の状態＃１１乃至＃１５と同様である。
【０１７７】
図１９の例においては、物体を握るハンド部１３の力を緩める状態である状態＃１３５となり、失敗前状態であると判断された場合、ロボット１の状態は、物体を握り直す状態である状態＃１３６となる。物体の渡し先となる人が物体を見ていない状態でハンド部１３の力を緩めようとする場合、ロボット１は、物体を握り直すようにハンド部１３を含む各部を制御する。
【０１７８】
ハンド部１３によって物体を握り直す状態である状態＃１３６になった後、ロボット１の状態は、物体を見て、注意しながら持つようにユーザに警告を行う状態である状態＃１３７となる。ロボット１は、スピーカ４３から音声を出力するなどしてそのような警告を行った後、人が物体を見ていないか否かを判定し、同様の状態遷移を繰り返す。
【０１７９】
図１９の例においては、物体を握り直すようにハンド部１３を含む各部を制御し、ユーザに対して警告を行う動作によって、リカバリーが実行される。
【０１８０】
以上のように、リカバリーを含む失敗状態遷移がロボット１において管理され、失敗前状態に至った場合にリカバリーが実行される。これにより、ロボット１は、タスクの失敗を防ぐとともに、タスクを成功に導くことができる。警告が行われた後にリカバリーが行われるようにしてもよい。
【０１８１】
・リカバリー制御部の構成例
図２０は、制御部３１の他の機能構成例を示すブロック図である。
【０１８２】
図２０に示す構成は、基本的に、リカバリー制御部１０８が追加されている点を除いて、図５に示す構成と同じである。重複する説明については適宜省略する。
【０１８３】
リカバリー制御部１０８は、失敗前状態に至ったと判断した場合、リカバリーを実行するように駆動制御部１０６を制御する。失敗前状態に至ったか否かは、失敗状態遷移判断部１０３から供給された情報、または、駆動制御部１０６から供給された情報に基づいて判断される。
【０１８４】
図２１は、リカバリー制御部１０８の構成例を示すブロック図である。
【０１８５】
図２１に示すように、リカバリー制御部１０８は、失敗情報取得部１５１、リカバリー判断部１５２、リカバリー実行部１５３、リカバリー判断基準情報記憶部１５４、およびリカバリー状態遷移情報記憶部１５５から構成される。
【０１８６】
失敗情報取得部１５１は、失敗状態遷移判断部１０３または駆動制御部１０６から出力された情報に基づいて、タスクの失敗に関する情報を取得する。失敗情報取得部１５１は、例えば、失敗前状態に至った回数を特定し、特定した回数を表す情報をリカバリー判断部１５２に出力する。
【０１８７】
リカバリー判断部１５２は、失敗情報取得部１５１から供給された情報に基づいて、リカバリーを実行するか否かを判断する。リカバリー判断基準情報記憶部１５４には、各タスクについての、リカバリーを実行するか否かの判断の基準となるリカバリー判断基準情報が記憶されている。
【０１８８】
リカバリーを実行するか否かは、例えば、失敗前状態に至った回数と、リカバリー判断基準情報により表される閾値の回数とを比較することによって判断される。リカバリー判断部１５２は、所定のタスクの失敗前状態に至った回数が閾値の回数を超えた場合、リカバリーを実行すると判断し、そのことを表す情報をリカバリー実行部１５３に出力する。
【０１８９】
リカバリー実行部１５３は、リカバリー状態遷移情報記憶部１５５に記憶されている情報に基づいてリカバリーを実行する。リカバリー状態遷移情報記憶部１５５には、リカバリーの状態を含む失敗状態遷移に関する情報が記憶されている。
【０１９０】
・リカバリー実行処理
図２２のフローチャートを参照して、リカバリーを実行するロボット１の処理について説明する。
【０１９１】
ステップＳ３１において、失敗情報取得部１５１は、失敗状態遷移判断部１０３から出力されたタスクの失敗に関する情報を取得する。例えば、失敗情報取得部１５１は、失敗に関する情報として、失敗前状態に至った回数、失敗の内容、失敗の深刻度を取得する。
【０１９２】
ステップＳ３２において、リカバリー判断部１５２は、リカバリーを実行するか否かを判定する。
【０１９３】
ここでは、例えば、失敗前状態に至った回数が閾値の回数以上となった場合、リカバリーを実行するものとして判定される。また、深刻度が閾値の度合いより低い失敗が起きた場合、リカバリーを実行するものとして判定される。
【０１９４】
リカバリーを実行するとステップＳ３２において判定された場合、ステップＳ３３において、リカバリー実行部１５３はリカバリーを実行する。
【０１９５】
一方、リカバリーを実行しないとステップＳ３２において判定された場合、ステップＳ３４において、リカバリー実行部１５３は、所定のアクションを実行するように駆動制御部１０６を制御する。
【０１９６】
以上のように、ロボット１は、タスクが失敗する前にリカバリーを実行することにより、タスクの失敗を防ぐことができる。
【０１９７】
＜変形例＞
失敗状態遷移をロボット１自身が生成するのではなく、ユーザによる操作に応じてロボット１において生成されるようにしてもよい。また、PCなどの外部の装置においてユーザによる操作に応じて生成された失敗状態遷移情報がロボット１に提供され、上述したような処理に用いられるようにしてもよい。
【０１９８】
ロボット１の動作のテスト段階で生じた失敗状態遷移に基づいて失敗状態遷移情報が生成され、ロボット１に提供されるようにしてもよい。どのような状態遷移が失敗状態遷移であるのかに関する情報は、例えばユーザにより指定される。
【０１９９】
また、発生を回避したい状態をユーザが設定し、それに基づいて失敗状態遷移情報が生成されるようにしてもよい。
【０２００】
以上においては、「物体を掴む」と「物体を人に渡す」のタスクを実行する場合の処理について説明したが、他のタスクを実行する場合にも同様の処理が行われる。他のタスクの実行中においても、ロボット１の状態の遷移が失敗状態遷移と同じ遷移を辿っている場合、失敗が生じる前に緊急停止等のアクションが実行される。
【０２０１】
・制御システムの例
失敗状態遷移に基づくロボット１の動作が、インターネット上のサーバなどの外部の装置により行われるようにしてもよい。
【０２０２】
図２３は、制御システムの構成例を示す図である。
【０２０３】
図２３の制御システムは、ロボット１と制御サーバ２０１がインターネットなどのネットワーク２０２を介して接続されることによって構成される。ロボット１と制御サーバ２０１は、ネットワーク２０２を介して通信を行う。
【０２０４】
図２３の制御システムにおいては、ロボット１の状態が、ロボット１から送信されてくる情報に基づいて制御サーバ２０１により特定される。ロボット１から制御サーバ２０１に対しては、ロボット１の各デバイスの状態を表す情報が順次送信される。
【０２０５】
ロボット１の状態の遷移が失敗状態遷移を辿っていることを検出した場合、制御サーバ２０１は、ロボット１を制御し、警告のアクション、タスク失敗時のアクションなどの状態に応じたアクションを実行させる。
【０２０６】
このように、制御サーバ２０１は、ロボット１の状態を監視するとともに、ロボット１の動作を状態に応じて制御する制御装置として機能する。制御サーバ２０１においては、所定のプログラムが実行されることにより、図５、図１４、または図２０の各機能部が実現される。
【０２０７】
・コンピュータの構成例
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０２０８】
図２４は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。図２３の制御サーバ２０１は、図２４に示す構成と同様の構成を有する。
【０２０９】
CPU(Central Processing Unit)１００１、ROM(Read Only Memory)１００２、RAM(Random Access Memory)１００３は、バス１００４により相互に接続されている。
【０２１０】
バス１００４には、さらに、入出力インタフェース１００５が接続されている。入出力インタフェース１００５には、キーボード、マウスなどよりなる入力部１００６、ディスプレイ、スピーカなどよりなる出力部１００７が接続される。また、入出力インタフェース１００５には、ハードディスクや不揮発性のメモリなどよりなる記憶部１００８、ネットワークインタフェースなどよりなる通信部１００９、リムーバブルメディア１０１１を駆動するドライブ１０１０が接続される。
【０２１１】
以上のように構成されるコンピュータでは、CPU１００１が、例えば、記憶部１００８に記憶されているプログラムを入出力インタフェース１００５及びバス１００４を介してRAM１００３にロードして実行することにより、上述した一連の処理が行われる。
【０２１２】
CPU１００１が実行するプログラムは、例えばリムーバブルメディア１０１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供され、記憶部１００８にインストールされる。
【０２１３】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０２１４】
本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０２１５】
本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
【０２１６】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０２１７】
例えば、本技術は、１つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０２１８】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０２１９】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０２２０】
・構成の組み合わせ例
本技術は、以下のような構成をとることもできる。
【０２２１】
（１）
タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する状態遷移判断部を備える
制御装置。
（２）
前記所定の処理は、ユーザに対する警告、前記ロボットの動作の緊急停止である
前記（１）に記載の制御装置。
（３）
前記状態遷移判断部は、前記所定の処理としてのユーザに対する警告を行った後に、前記ロボットの状態の遷移が前記失敗状態遷移を辿っている場合、前記ロボットの動作を緊急停止させる
前記（２）に記載の制御装置。
（４）
前記ロボットの状態の遷移が前記失敗状態遷移を辿った場合、前記失敗状態遷移を更新する更新部をさらに備える
前記（１）乃至（３）のいずれかに記載の制御装置。
（５）
前記更新部は、前記失敗状態遷移を辿った回数が閾値の回数を超えた場合、または、前記失敗状態遷移を辿った前記ロボットの状態の遷移の内容に応じて、前記失敗状態遷移を更新する
前記（４）に記載の制御装置。
（６）
前記更新部は、前記ロボットの状態の遷移が前記失敗状態遷移を辿りやすくなるように前記失敗状態遷移を更新する
前記（４）または（５）に記載の制御装置。
（７）
前記ロボットの状態の遷移が前記失敗状態遷移を辿った場合、リカバリーを実行するように前記ロボットを制御するリカバリー制御部をさらに備える
前記（１）乃至（６）のいずれかに記載の制御装置。
（８）
前記リカバリー制御部は、前記所定の処理が行われた後に、前記リカバリーを実行させる
前記（７）に記載の制御装置。
（９）
前記失敗状態遷移を表す情報を記憶する記憶部をさらに備える
前記（１）乃至（８）のいずれかに記載の制御装置。
（１０）
制御装置が、
タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する
制御方法。
（１１）
コンピュータに、
タスクの実行時のロボットの状態の遷移が、前記タスクの失敗に至る状態遷移として予め設定された失敗状態遷移を辿っている場合、前記タスクの失敗に至る前に、所定の処理を行うように前記ロボットの動作を制御する
処理を実行させるためのプログラム。
【符号の説明】
【０２２２】
１，２  ロボット，  １１  ベース部，  １２  アーム部，  １３  ハンド部，  ３１  制御部，  ３３  駆動部，  ４１  カメラ，  １０１  動作出力部，  １０２  動作取得部，  １０３  失敗状態遷移判断部，  １０４  失敗状態遷移記憶部，  １０５  失敗状態遷移生成部，  １０６  駆動制御部，  １０７  失敗状態遷移更新部，  １０８  リカバリー制御部，  １３１  失敗情報取得部，  １３２  更新判断部，  １３３  更新部，  １３４  更新判断基準情報記憶部，  １３５  更新遷移情報記憶部，  １５１  失敗情報取得部，  １５２  リカバリー判断部，  １５３  リカバリー実行部，  １５４  リカバリー判断基準情報記憶部，  １５５  リカバリー状態遷移情報記憶部，  ２０１  制御サーバ，  ２０２  ネットワーク
【図１】
2020031718.tif 000003
【図２】
2020031718.tif 000004
【図３】
2020031718.tif 000005
【図４】
2020031718.tif 000006
【図５】
2020031718.tif 000007
【図６】
2020031718.tif 000008
【図７】
2020031718.tif 000009
【図８】
2020031718.tif 000010
【図９】
2020031718.tif 000011
【図１０】
2020031718.tif 000012
【図１１】
2020031718.tif 000013
【図１２】
2020031718.tif 000014
【図１３】
2020031718.tif 000015
【図１４】
2020031718.tif 000016
【図１５】
2020031718.tif 000017
【図１６】
2020031718.tif 000018
【図１７】
2020031718.tif 000019
【図１８】
2020031718.tif 000020
【図１９】
2020031718.tif 000021
【図２０】
2020031718.tif 000022
【図２１】
2020031718.tif 000023
【図２２】
2020031718.tif 000024
【図２３】
2020031718.tif 000025
【図２４】
2020031718.tif 000026
【国際調査報告】
2020031718.tif 000027
2020031718.tif 000028
2020031718.tif 000029
2020031718.tif 000030