(57)【要約】【課題】プランを実行することによって生じる誤差や精度を考慮してプランを実行することができるプラン実行装置およびプラン実行方法を提供する。【解決手段】誤差・精度条件判定部１４１は、所定の目的を示すゴールを達成するプランを実行可能に分割した１または複数のアクションを実行したことにより生じた誤差を記憶する信念データベース１８０に記憶された誤差が、アクションごとに、アクションを実行する際の当該アクションを実行可能な誤差の範囲を示す誤差条件を記憶するアクション情報データベース１９０に記憶された誤差条件を満たすか否かを判定し、プラン実行部１６０は、誤差が誤差条件を満たすと判定した場合に、アクションを実行する。【選択図】        図１
2009237737.tif 000002
【特許請求の範囲】
【請求項１】
所定の目的を示すゴールを達成するプランを実行可能に分割した１または複数のアクションを実行したことにより生じた誤差を記憶する信念記憶手段と、
前記アクションごとに、前記アクションを実行する際の前記アクションを実行可能な誤差の範囲を示す誤差条件を記憶する誤差条件記憶手段と、
前記信念記憶手段に記憶された前記誤差が、前記誤差条件記憶手段に記憶された前記誤差条件を満たすか否かを判定する誤差条件判定手段と、
前記誤差条件判定手段によって前記誤差が前記誤差条件を満たすと判定した場合に、前記アクションを実行するプラン実行手段と、
を備えることを特徴とするプラン実行装置。
【請求項２】
前記誤差条件判定手段によって前記誤差が前記誤差条件を満たさないと判定した場合に、前記誤差条件を満たす割込みゴールを生成する誤差条件解決手段と、
前記誤差条件解決手段によって生成された前記割込みゴールを達成するプランを生成するプラン生成手段と、をさらに備え、
前記プラン実行手段は、前記プラン生成手段によって生成された前記プランに含まれるアクションを実行すること、を特徴とする請求項１に記載のプラン実行装置。
【請求項３】
前記誤差条件判定手段によって前記誤差が前記誤差条件を満たさないと判定した場合に、前記誤差条件を満たすアクションを前記プランに挿入する誤差条件解決手段、をさらに備え、
前記プラン実行手段は、前記誤差条件解決手段によって挿入された前記アクションを実行すること、を特徴とする請求項１に記載のプラン実行装置。
【請求項４】
前記ゴールを達成する複数のプランを記憶するプラン記憶手段と、
前記プラン実行手段によって前記プラン記憶手段に記憶された複数のプランのうちの一つに含まれるアクションを実行した後、当該アクションを実行した結果に基づいて前記プラン記憶手段に記憶された前記プランを更新するプラン更新手段と、
前記プラン更新手段によって前記プランを更新した後、前記プラン記憶手段に記憶された前記プランから実行するプランを選択するプラン選択手段と、をさらに備え、
前記プラン実行手段は、前記プラン選択手段によって選択された前記プランに含まれるアクションを実行すること、を特徴とする請求項１〜３のいずれか一つに記載のプラン実行装置。
【請求項５】
前記プラン選択手段は、前記誤差条件判定手段によって前記誤差が前記誤差条件を満たさないと判定した場合に、前記誤差条件を満たすプランを選択することを特徴とする請求項４に記載のプラン実行装置。
【請求項６】
前記アクションごとに前記アクションを実行する際に生じるであろうと予測される予測誤差を記憶する予測誤差記憶手段と、をさらに備え、
前記誤差条件判定手段は、前記プランに含まれるアクションごとに、前記予測誤差記憶手段に記憶された前記予測誤差が、前記誤差条件記憶手段に記憶された前記誤差条件を満たすか否かを判定し、
前記誤差条件解決手段は、前記誤差条件判定手段によって前記予想誤差が前記誤差条件を満たさないと判定した場合に、前記誤差条件を満たすアクションを前記プランに挿入すること、を特徴とする請求項２〜５のいずれか一つに記載のプラン実行装置。
【請求項７】
前記信念記憶手段は、前記アクションを実行したことにより計測された精度を記憶し、
前記誤差条件記憶手段は、前記アクションごとに、前記アクションを実行する際の前記アクションを実行可能な精度の範囲を示す精度条件を記憶し、
前記誤差条件判定手段は、前記信念記憶手段に記憶された前記精度が、前記誤差条件記憶手段に記憶された前記精度条件を満たすか否かを判定し、
前記プラン実行手段は、前記誤差条件判定手段によって前記精度が前記精度条件を満たすと判定した場合に、前記アクションを実行すること、を特徴とする請求項１〜６のいずれか一つに記載のプラン実行装置。
【請求項８】
プラン実行装置で実行されるプラン実行方法であって、
所定の目的を示すゴールを達成するプランを実行可能に分割した１または複数のアクションを実行したことにより生じた誤差を記憶する信念記憶手段と、
前記アクションごとに、前記アクションを実行する際の前記アクションを実行可能な誤差の範囲を示す誤差条件を記憶する誤差条件記憶手段と、を備え、
誤差条件判定手段が、前記信念記憶手段に記憶された前記誤差が、前記誤差条件記憶手段に記憶された前記誤差条件を満たすか否かを判定する誤差条件判定工程と、
プラン実行手段が、前記誤差条件判定工程によって前記誤差が前記誤差条件を満たすと判定した場合に、前記アクションを実行するプラン実行工程と、
を含むことを特徴とするプラン実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プラン実行装置およびプラン実行方法に関する。
【背景技術】
【０００２】
近年、プランに応じて複雑な動作を実行する装置を適確に制御するためのプランニング技術が研究されている。一般に、このようなプランニング技術では、プランを実行している途中で他のプランの割込みが行われた場合、割込みによって中断されたプランの実行を再開できないというという問題があった。
【０００３】
このような問題を解決するものとして、割込プランを実行した後に中断したゴールを達成するプランを再開することができるプラン実行装置が開示されている（特許文献１参照）。かかるプラン実行装置は、割込みによって中断したプランを保持し、割込プランの実行内容によって保持されたプランの内容を更新する。
【０００４】
【特許文献１】特開２００７−４８０９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
プラン実行装置がプラン実行中に、センサやアクチュエータ等の誤差や精度が許容範囲を超すと、プランをうまく実行できずにゴールを達成することが困難となる。このため、プラン実行中に誤差や精度が許容範囲を超した場合、誤差や精度が許容範囲内になるように、割込プランを実行する必要がある。
【０００６】
しかしながら、上記特許文献１に記載された技術および従来技術では、センサやアクチュエータ等の誤差や精度を考慮されていないという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、プランを実行することによって生じる誤差や精度を考慮してプランを実行することができるプラン実行装置およびプラン実行方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかるプラン実行装置は、所定の目的を示すゴールを達成するプランを実行可能に分割した１または複数のアクションを実行したことにより生じた誤差を記憶する信念記憶手段と、前記アクションごとに、前記アクションを実行する際の前記アクションを実行可能な誤差の範囲を示す誤差条件を記憶する誤差条件記憶手段と、前記信念記憶手段に記憶された前記誤差が、前記誤差条件記憶手段に記憶された前記誤差条件を満たすか否かを判定する誤差条件判定手段と、前記誤差条件判定手段によって前記誤差が前記誤差条件を満たすと判定した場合に、前記アクションを実行するプラン実行手段と、を備えることを特徴とする。
【０００９】
また、本発明にかかるプラン実行方法は、プラン実行装置で実行されるプラン実行方法であって、所定の目的を示すゴールを達成するプランを実行可能に分割した１または複数のアクションを実行したことにより生じた誤差を記憶する信念記憶手段と、前記アクションごとに、前記アクションを実行する際の前記アクションを実行可能な誤差の範囲を示す誤差条件を記憶する誤差条件記憶手段と、を備え、誤差条件判定手段が、前記信念記憶手段に記憶された前記誤差が、前記誤差条件記憶手段に記憶された前記誤差条件を満たすか否かを判定する誤差条件判定工程と、プラン実行手段が、前記誤差条件判定工程によって前記誤差が前記誤差条件を満たすと判定した場合に、前記アクションを実行するプラン実行工程と、を含むことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、プランを実行することによって生じる誤差を考慮してプランを実行することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、本発明にかかるプラン実行装置およびプラン実行方法の最良な実施の形態を詳細に説明する。なお、本発明はこれらの実施の形態に限定されるものではない。
【００１２】
本実施の形態について、添付図面を参照して説明する。まず、本発明が適用されるプラン実行装置の構成例について説明する。図１は、本実施の形態にかかるプラン実行装置１０の構成を示すブロック図である。
【００１３】
本実施の形態にかかるプラン実行装置１０は、プランニングエージェント部１００と、ゴール生成部２００と、外界監視部３００と、アクション実行部４００とを備えている。
【００１４】
プランニングエージェント部１００は、さらに通常ゴール取得部１１０と、通常ゴールキュー１２０と、割込みゴール取得部１３０と、プラン作成・更新部１４０と、代替プラン群スタック１５０と、プラン実行部１６０と、信念更新命令取得部１７０と、信念データベース１８０と、アクション情報データベース１９０とを備えている。
【００１５】
信念データベース１８０は、信念を格納する。ここで、信念とは、真実である事実を示すフルーエント（＝真偽値が変化する述語）の集合で表現される。各フルーエントには、誤差情報や精度情報が付加される場合がある。
【００１６】
通常ゴール取得部１１０は、プランニングエージェント部１００の外部、すなわちゴール生成部２００から投入された通常ゴールを取得し、取得した順に通常ゴールを通常ゴールキュー１２０に格納する。通常ゴール取得部１１０は、プラン作成・更新部１４０に通常ゴールを格納したことを通知する。ここで、ゴールとは、実行完了したいタスクまたは達成したい状態等を示すものである。また、ゴールは、通常ゴールと、緊急性の高い割込みゴールに２分される。通常ゴールとは、取得された順に実行されるゴールである。また、割込みゴールとは、通常ゴールキュー１２０に通常ゴールが格納されているか否かに関わらず、または、通常ゴールに対応するプランが実行されているか否かに関わらず、割込み処理によって実行されるゴールである。
【００１７】
通常ゴールキュー１２０は、通常ゴール取得部１１０が取得した順に通常ゴールを格納する。通常ゴールキュー１２０に格納された通常ゴールは、プラン作成・更新部１４０によって先に格納した通常ゴールから先に取り出される。
【００１８】
割込みゴール取得部１３０は、プランニングエージェント部１００の外部、すなわちゴール生成部２００から投入された割込みゴールを取得し、取得した割込みゴールを直接プラン作成・更新部１４０に送出し、割込みゴールに対するプランの作成を指示する。
【００１９】
プラン作成・更新部１４０は、代替プラン群スタック１５０にプランが格納されていない場合に、通常ゴールキュー１２０の先頭に格納されているゴールを取り出し、そのゴールに対するプラン群を作成する。プラン作成・更新部１４０は、そのゴールとプラン群をセットで、代替プラン群スタック１５０に格納（プッシュ）し、新たなプラン群を格納したことをプラン実行部１６０に通知する。なお、プランとは、ゴールを満たすためのアクションの実行順序である。アクションとは、アクション実行部４００で実行可能な動作を示す。
【００２０】
また、プラン作成・更新部１４０は、割込みゴール取得部１３０から割込みゴールの実行命令を受けた場合には、その割込みゴールに対するプラン群を作成し、ゴールとプラン群をセットで代替プラン群スタック１５０に格納する。また、プラン作成・更新部１４０は、新たなプラン群を格納したことをプラン実行部１６０に通知する。
【００２１】
また、プラン作成・更新部１４０は、信念更新命令取得部１７０から信念更新通知を受けた場合には、信念データベース１８０に格納されている信念と、アクション情報データベース１９０に格納されているアクション情報を参照して代替プラン群スタック１５０に格納されている各プランを必要に応じて更新する。プラン作成・更新部１４０は、プランを更新した場合は、プランを更新した旨をプラン実行部１６０に通知する。
【００２２】
また、プラン作成・更新部１４０は、アクション実行部４００から送信されるアクション実行結果に従い、代替プラン群スタック１５０に格納されている各プランを必要に応じて更新する。プラン作成・更新部１４０は、プランを更新した場合は、プランを更新した旨をプラン実行部１６０に通知する。
【００２３】
また、プラン作成・更新部１４０は、信念データベース１８０に格納されている信念とアクション情報データベース１９０に格納されている複数のアクション情報を用いて、プランを作成または更新する。また、プラン作成・更新部１４０が、代替プラン群スタック１５０に代替プラン群を格納する場合、あるいは各プランを更新する場合には、代替プラン群のうちの最も優先度の高いプランをマークしておく。
【００２４】
また、プラン作成・更新部１４０は、さらに誤差・精度条件判定部１４１と、誤差・精度条件解決部１４２を備えている。誤差・精度条件判定部１４１は、あるプランに含まれる各アクションを実行順序に従って実行した場合に、各アクションを実行したことによって生じ、信念データベース１７０に格納されている誤差情報や精度情報が、次に実行する予定のアクションの事前条件（誤差条件、精度条件を含む）を満たすか否かを判定する。ここで、誤差条件とは、アクションを実行する際の当該アクションを実行可能な誤差の範囲である。また、精度条件とは、アクションを実行する際の当該アクションを実行可能な精度の範囲である。
【００２５】
誤差・精度条件解決部１４２は、選択されたプランを実行することによって信念データベース１８０に格納されたフルーエントの誤差情報または精度情報が、次に実行される予定のアクションの事前条件を満たさない場合には、その誤差を縮小するため、またはその精度を上げるためのゴールを割込みゴールとして、自らに投入し、投入された割込みゴールのためのプランを実行する。また、誤差・精度条件解決部１４２は、その誤差を縮小するため、またはその精度を上げるためのアクションを実行中のプランへ挿入する。誤差・精度条件解決部１４２は、割込みゴールの投入や新たなアクションを実行しても、事前条件を満たせない場合には、そのプランを代替プラン群から破棄する。
【００２６】
代替プラン群スタック１５０は、あるゴールに対してプラン作成・更新部１４０で作成されたプラン群とゴールを格納する。図２は、通常ゴールに関する情報を格納した代替プラン群スタック１５０のデータ構成の一例を示す説明図である。図２に示す代替プラン群スタック１５０には、通常ゴール（ゴールＡ）と、通常ゴールに対するプラン群（プランＡ１、プランＡ２等）が格納されている。なお、図２に示すゴールＡは、通常ゴールが投入されていないときには、割込みゴールである場合もある。
【００２７】
図３は、通常ゴールと割込みゴールに関する情報を格納した代替プラン群スタック１５０のデータ構成の一例を示す説明図である。図３に示すように、図２に示した通常ゴールに関する情報に加え、割込みゴールに関する情報が最後尾に格納される。具体的には、割込みゴール（ゴールＢ）と、割込みゴールに対応するプラン群（プランＢ１、プランＢ２等）と、中断したアクション情報とが代替プラン群スタック１５０に格納される。中断したアクション情報とは、割込みゴールを格納する際に実行されていたアクション（例えば、ゴールＡに対応するプランＡ１に含まれるアクション）が中断可能であり、かつ、そのアクションを中断した場合に、そのアクションを再開する際に用いる情報である。このとき、代替プラン群スタック１５０に格納された通常ゴールに関する情報では、アクションが中断中であることを明確にする。例えば、プランＡが[a,b,c,d]で表される場合に、アクションａを中断した場合は、[resume(a),b,c,d]のように表す。なお、アクションが中断不可能な場合は、実行中のアクションが終了した後に、割込みゴールと、割込みゴールに対するプラン群を格納する。
【００２８】
また、さらに割込みゴールに対応するプランの実行中に別の割込みゴールが投入された場合には、その割込みゴールに対応するプランが作成され、割込みゴールが投入された回数の新たな割込みゴールと割込みゴールに対応するプラン群と中断したアクション情報が格納される。
【００２９】
プラン実行部１６０は、代替プラン群スタック１５０に格納されているプランを参照してプランを実行する。代替プラン群スタック１５０に最後に格納された代替プラン群のうちのマークされたプランがあれば、そのプランを実行する。プラン実行部１６０は、選択したプランに従い、次に実行すべきアクションの実行を適切なアクション実行部４００へ命令する。プラン実行部１６０は、アクション実行部４００によるアクションの実行結果をプラン作成・更新部１４０に通知する。
【００３０】
また、プラン実行部１６０は、アクション実行部４００から通知されるアクション実行結果に従い、実行したアクションごとのアクション情報データベース１９０に格納されたアクション情報を参照し、信念データベース１８０に格納されているフルーエントを追加または削除する。また、プラン実行部１６０は、アクション実行部４００の誤差・精度計算部４１０から送出される誤差情報または精度情報をもとに、信念データベース１８０に格納されている誤差情報や精度情報を更新する。
【００３１】
信念更新命令取得部１７０は、プランニングエージェント部１００の外部、すなわち外界監視部３００の誤差・精度計算部３１０から送出された信念更新命令を取得し、信念データベース１８０に格納されている信念を更新する。また、信念更新命令取得部１７０は、信念データベース１８０に格納されている信念を更新した場合に、信念を更新したことをプラン作成・更新部１４０に通知する。また、信念更新命令取得部１７０は、信念データベース１８０に格納されているフルーエントに付加される誤差情報や精度情報も更新する。
【００３２】
アクション情報データベース１９０は、プランに含まれる１つ１つのアクションに関する情報であるアクション情報を格納する。各アクション情報は、特定のアクションが実行される直前に成立しなければならないフルーエントに関する事前条件とアクション実行直後に成立する効果（フルーエントの真偽値の変化）に関する情報を含む。さらに、この事前条件には、フルーエントの誤差や精度に関する条件（誤差条件、精度条件）を指定できる。また、効果には、真となるフルーエントの予想誤差や予想精度を記載できる。ここで、予想誤差とは、アクションを実行する際に生じるであろうと予測される誤差であり、予想精度とは、アクションを実行する際に計測されるであろうと予測される精度である。予想誤差や予想精度は、人が予め設定しておくことを想定しているが、過去に実行したアクションの効果の誤差や精度の統計から自動的に予想誤差や予想精度を更新するようにしてもよい。
【００３３】
次に、ゴール生成部２００について説明する。ゴール生成部２００は、ユーザの指示等を受け付け、受け付けた指示からゴールを生成する。ゴール生成部２００は、生成したゴールをプランニングエージェント部１００に投入する。ゴール生成部２００は、生成したゴールをプランニングエージェント部１００に投入する際に、投入するゴールが通常ゴールまたは割込みゴールのいずれかを指定する。また、ゴール生成部２００は、外界監視部３００と同様に外界を監視し、必要ならばユーザから指示によらずゴールを作成してもよい。例えば、防犯センサが反応した場合に、ユーザからの指示を受付けない場合であってもその防犯センサ付近に人がいるか否かを確認するゴールを生成することが考えられる。ゴール生成部２００は、このような緊急性が高いゴールを割込みゴールと指定する。ゴール生成部２００は、外界監視部３００と同様に複数個あってもよい。
【００３４】
次に、外界監視部３００について説明する。外界監視部３００は、外部を監視することによって得られた情報を取得する。外界監視部３００が外部から得られる情報としては、例えばセンサから得られる検知情報、カメラから得られる画像情報、マイクから得られる音声情報、ネットワーク経由で得られる情報などがある。外界監視部３００は、プランの作成に用いるため、これらの情報を抽象化、記号化する。ここで、外部から得られた情報の抽象化、記号化とは、検知情報や画像情報自体ではなく、検知情報や画像情報をから総合的に判断される情報、例えば“１ｍ前にＡさんが立っている”というような情報を生成することである。外界監視部３００は、このように記号化された情報をプランニングエージェント部１００に送出する。プランニングエージェント部１００は、このような記号化された情報を信念として信念データベース１８０に格納する。
【００３５】
また、外界監視部３００は、複数設けられていてもよい。例えば、外界監視部３００として顔監視部、コマンド監視部、障害物監視部、ネットワーク家電監視部、温度湿度監視部、混雑度監視部、インターネット監視部等を備えてもよい。
【００３６】
ここで、顔監視部は、カメラが撮像した画像情報から指定された人の顔を検知する。障害物監視部は、超音波センサや赤外線センサが検知した検知情報からロボットの進行方向にある障害物を検知する。ネットワーク家電・センサ監視部は、ネットワークに繋がれたネットワーク家電のイベント（ＯＮ／ＯＦＦ、洗濯機や乾燥機の停止、玄関や冷蔵庫のドアの開閉、防犯センサ検知、電話着信等）を監視する。温度湿度監視部は、温度や湿度の変化（５度の気温変化等）を監視する。混雑度監視部は、カメラが撮像した画像情報やＲＦＩＤ（Radio Frequency Identification）タグや光ビーコン等を利用して人や車の混雑度変化イベントを検知する。インターネット監視部は、時々刻々と変化するインターネット上の膨大な情報から指定された新情報や状況変化を検知する。
【００３７】
次に、アクション実行部４００について説明する。アクション実行部４００は、プランニングエージェント部１００からの指示に従ってアクションを実行または中断する。アクション実行部４００は、アクションの実行結果（例えば、成功・失敗・中断）をプランニングエージェント部１００に通知する。
【００３８】
また、アクション実行部４００は、誤差・精度計算部４１０を備えている場合がある。誤差・精度計算部４１０は、アクション実行終了時に、アクションの効果の誤差を算出し、プランニングエージェント部１００に通知する。
【００３９】
なお、アクション実行部４００は、複数設けられていてもよい。例えば、移動アクション実行部、発話アクション実行部、音楽再生アクション実行部、写真撮影アクション実行部、動画撮影アクション実行部、ジェスチャー・アクション実行部、ロボット・アーム・アクション実行部、メール・アクション実行部、遠隔操作アクション実行部、センシング・アクション実行部、ブログ・掲示板書き込みアクション実行部、家電操作アクション実行部等である。
【００４０】
ここで、移動アクション実行部は、ロボットの移動を実行する。発話アクション実行部は発話を行う。音楽再生アクション実行部は音楽を流す。写真撮影アクション実行部は写真を撮影する。動画撮影アクション実行部は動画を撮影する。ジェスチャー・アクション実行部は、手や首や目などのロボットの身体的な動きを使ってジェスチャーを行う。ロボット・アーム・アクション実行部は、ロボット・アームで物を握ったり離したり移動させたりする。メール・アクション実行部は、コンピュータや携帯電話に電子メールを送信する。遠隔操作アクション実行部は、ネットワークに繋がれたコンピュータの操作・利用を行う。センシング・アクション実行部は、センサを使って予め定められた情報を取得する。データベース更新アクション実行部は、データベースのデータを更新する。ブログ・掲示板書き込みアクション実行部は、インターネット上のブログや掲示板等に書き込みを行う。家電操作アクション実行部は、インターネットや無線で接続された家電製品を操作する。
【００４１】
また、移動アクション実行部がプラン実行部１６０から送出されたアクション実行命令に応じて移動アクションを実行した場合、目標地点の座標と実際にロボットが目標地点に向かって移動した後の座標との誤差が生じる。この場合、誤差・精度計算部４１０での移動アクションによる誤差の算出方法としては、例えば移動アクション実行部によって一定の距離を移動するアクションを実行した場合の誤差を予め実測して求めておき、移動アクションで移動する距離に応じた誤差を算出する。また、ロボット・アーム・アクションでは、物を置く目標地点の座標と、実際にロボットがアームを操作して物を置いた後の物の座標との誤差が生じることが考えられる。この場合、誤差・精度計算部４１０でのロボット・アーム・アクションの誤差の算出方法としては、例えばロボット・アーム・アクション実行部によってロボット・アームの各関節を一定の角度に曲げるアクションを実行した場合の誤差を予め実測して求めておき、ロボット・アーム・アクションでロボット・アームの各関節を曲げた角度に応じた誤差を算出する。
【００４２】
次に、以上のように構成されているプランニングエージェント部１００による通常ゴールが投入された際のプラン実行処理について説明する。図４は、プランニングエージェント部１００が行う通常ゴールが投入された際のプラン実行処理手順を示すフローチャートである。
【００４３】
まず、通常ゴール取得部１１０は、ゴール生成部２００が投入した通常ゴールを取得する（ステップＳ４０１）。通常ゴール取得部１１０は、通常ゴールキュー１２０に通常ゴールが存在するか否かを判断する（ステップＳ４０２）。通常ゴールキュー１２０に通常ゴールが存在しないと判断した場合は（ステップＳ４０２：Ｎｏ）、プラン作成・更新部１４０は取得した通常ゴールのためのプラン実行処理を行う（ステップＳ４０３）。プラン実行処理の詳細は、後述する。
【００４４】
プラン作成・更新部１４０は、通常ゴールキュー１２０に通常ゴールが存在するか否かを判断する（ステップＳ４０４）。通常ゴールキュー１２０に通常ゴールが存在すると判断した場合は（ステップＳ４０４：Ｙｅｓ）、プラン作成・更新部１４０は通常ゴールキュー１２０から先頭の通常ゴールを取り出す（ステップＳ４０５）。プラン作成・更新部１４０は、取り出したゴールのプラン実行処理を行い（ステップＳ４０６）、その後ステップＳ４０４に戻る。ステップＳ４０４において、通常ゴールキュー１２０に通常ゴールが存在しないと判断した場合は（ステップＳ４０４：Ｎｏ）、処理を終了する。
【００４５】
ステップＳ４０２において、通常ゴールキュー１２０に通常ゴールが存在すると判断した場合は（ステップＳ４０２：Ｙｅｓ）、通常ゴール取得部１１０は取得した通常ゴールを通常ゴールキュー１２０の最後尾に格納し（ステップＳ４０７）、処理を終了する。
【００４６】
次に、プランニングエージェント部１００に割込みゴールが投入された際のプラン実行処理について説明する。図５は、プランニングエージェント部１００が行う割込みゴールが投入された際のプラン実行処理手順を示すフローチャートである。
【００４７】
まず、割込みゴール取得部１３０は、ゴール生成部２００が投入した割込みゴールを取得する（ステップＳ５０１）。プラン実行部１６０は、他のゴールのプラン実行処理を実行中であるか否かを判断する（ステップＳ５０２）。なお、実行中のプランに対応するゴールは、通常ゴールであっても割込みゴールであってもよい。プラン実行処理を実行中であると判断した場合は（ステップＳ５０２：Ｙｅｓ）、プラン実行部１６０はアクション実行中であり、かつ、可能であれば実行中のアクションを中断する（ステップＳ５０３）。なお、Ｓ５０３において、実行中のアクションが中断可能であれば、別スレッドのプラン実行処理はアクションの実行を終了し、アクション実行結果（このときのアクション実行結果は中断となる）に従って、信念データベース１８０に格納された信念を更新する（後述する図６のステップＳ６１１の処理である）。
【００４８】
プラン実行部１６０は、他のゴールのプラン実行処理を中断する（ステップＳ５０４）。プラン実行部１６０は、新たに取得された割込みゴールのためのプラン実行処理を行う（ステップＳ５０５）。詳細は後述する。プラン生成・更新部１４０は、中断されているゴールのためのプラン群を更新する（ステップＳ５０６）。このとき、誤差条件と精度条件は無視してプラン群の更新を行う。プラン実行部１６０は、中断されているプラン実行処理を再開する（ステップＳ５０７）。
【００４９】
ステップＳ５０２において、プラン実行処理を実行中でないと判断した場合は（ステップＳ５０２：Ｎｏ）、すなわち割込み処理を行わずに取得された割込みゴールのプラン実行処理を行う（ステップＳ５０８）。
【００５０】
次に、プラン作成・更新部１４０、プラン実行部１６０が行うアクション実行処理について説明する。図６は、プラン作成・更新部１４０、プラン実行部１６０が行うアクション実行処理手順を示すフローチャートである。
【００５１】
プラン作成・更新部１４０は、誤差条件や精度条件は無視してゴールに対するプラン群を作成する（ステップＳ６０１）。プラン作成・更新部１４０は、作成したプラン群を代替プラン群スタック１５０に格納する。プラン実行部１６０は、代替プラン群スタック１５０にプランが存在するか否かを判断する（ステップＳ６０２）。代替プラン群スタック１５０にプランが存在すると判断した場合は（ステップＳ６０２：Ｙｅｓ）、プラン実行部１６０は実行が終了したプランが存在するか否かを判断する（ステップＳ６０３）。具体的には、プランはアクションの集合であるから、空集合であるプランが存在するか否かを判断する。例えばプランＡを［a,b,c,d］と表すと、アクションａが実行され、アクション実行結果が成功の場合には、プランＡはアクション実行結果に従って更新され、［b,c,d］と表される。さらに、プランＡのすべてのアクションが実行されると、プランＡは［］と表される。よって、代替プラン群スタック１５０にこのような空集合［］が格納されていれば、ゴールに対するプラン群のうち、実行が終了したプランが存在すると判断することができる。これは、ゴールに対するプランの実行が成功したことを示す。
【００５２】
実行が終了したプランが存在しないと判断した場合は（ステップＳ６０３：Ｎｏ）、プラン実行部１６０は代替プラン群スタック１５０に格納されているプラン群から実行するプランを１つ選択する（ステップＳ６０４）。誤差・精度条件判定部１４１は、信念データベース１８０に格納されている誤差情報（または精度情報）が選択したプランの誤差条件（または精度条件）を満たすか否かを判断する（ステップＳ６０５）。具体的には、信念データベース１８０に格納されている誤差情報（または精度情報）が、選択されたプランにおいて次に実行するアクションの誤差条件（または精度条件）を満たすか否かを判断する。
【００５３】
信念データベース１８０に格納されている誤差情報が選択したプランの誤差条件（または精度条件）を満たさないと判断した場合は（ステップＳ６０５：Ｎｏ）、求められた誤差情報（または精度情報）が誤差条件（または精度条件）を満たすための割込みゴールの実行処理を行う（ステップＳ６０６）。具体的には、上述した図５に示す処理を実行する。
【００５４】
次に、プラン実行部１６０は、選択したプランが代替プラン群スタック１５０に存在するか否かを判断する（ステップＳ６０７）。すなわち、図５に示す割込みゴールが投入された際のプラン実行処理では、割込みゴールのためのプランを実行後、割込みゴールのためのプランを実行した結果に応じて代替プラン群スタック１５０に格納されているプランが更新される。そのプランが更新された結果、割込みを実行する前に実行していたプランが実行不可能になる場合がある。このため、ここでプラン自体が存在するか否かを判断する。代替プラン群スタック１５０に選択されたプランが存在していれば、選択されたプランを実行することができ、代替プラン群スタック１５０に選択されたプランが存在していなければ、選択されたプランを実行することができない。
【００５５】
選択したプランが代替プラン群スタック１５０に存在しないと判断した場合は（ステップＳ６０７：Ｎｏ）、すなわち選択されたプランを実行することができないため、ステップＳ６０２に戻り、代替プラン群スタック１５０にプランが存在すれば、新たなプランを選択する。
【００５６】
選択したプランが代替プラン群スタック１５０に存在すると判断した場合は（ステップＳ６０７：Ｙｅｓ）、選択したプランが誤差条件（または精度条件）を満たすか否かを判断する（ステップＳ６０８）。これは、割込みプランを実行時に、代替プラン群スタック１５０に格納されたプランを更新する際に誤差条件（や精度条件）は無視してプランを更新しているため、更新されたプランが誤差条件（または精度条件）を満たすか否かをこの時点で判断する。選択したプランが誤差条件（または精度条件）を満たさないと判断した場合は（ステップＳ６０８：Ｎｏ）、プラン実行部１６０は選択したプランを破棄し（ステップＳ６０９）、ステップＳ６０２に戻る。
【００５７】
ステップＳ６０５において、選択したプランが誤差条件（または精度条件）を満たすと判断した場合は（ステップＳ６０５：Ｙｅｓ）、または、ステップＳ６０８において、選択したプランが誤差条件（または精度条件）を満たすと判断した場合は（ステップＳ６０８：Ｙｅｓ）、プラン実行部１６０は選択したプランに従い、次のアクションを実行する（ステップＳ６１０）。具体的には、プラン実行部１６０は、アクション実行部４００に対してアクション実行命令を送出し、アクション実行部４００がアクションを実行する。
【００５８】
プラン作成・更新部１４０は、アクションの実行結果に従って信念データベース１８０に格納された信念を更新する（ステップＳ６１１）。ここで、アクションの実行結果としは、成功、失敗、中断があり、信念データベース１８０に更新して格納する信念には、誤差情報または精度情報が付加されている。
【００５９】
プラン作成・更新部１４０は、アクションの実行結果に従って誤差条件（または精度条件）を無視して代替プラン群スタック１５０に格納されているすべてのプランを更新する（ステップＳ６１２）。例えば、ゴールＡに対してプランＡ１、プランＡ２があった場合であって、プランＡ１を［a,b,c,d］と表し、プランＡ２を［a,x,y］と表す。このときに、ステップＳ６１０でアクションａが実行され、アクション実行結果が成功である場合には、プランＡ１は［b,c,d］に更新され、プランＡ２は［x,y］に更新される。このようにプランが更新されることによって、ステップＳ６０４でプランが選択される際に、今まで実行していたプランＡ１に代えて、プランＡ２を選択することも可能である。その際のプラン選択の基準は、優先的に実行するマークの有無やプランを実行する際のコスト情報等である。
【００６０】
プラン実行部１６０は、他の割込みゴールのためのプランを実行している場合は、そのプランの実行処理が終了するまで待機し（ステップＳ６１３）、その後ステップＳ６０２に戻る。なお、ステップＳ６１３において、アクションの実行結果が中断になるのは、別スレッドの外部から信念を更新されたときの処理（後述する図７に示す処理）、もしくは割込みゴールを投入された場合のプラン実行処理（上述した図５に示す処理）において実行中のアクションを中断したときである。これらの別スレッドによりアクションを中断された場合には、速やかにステップＳ６１１、Ｓ６１２からステップＳ６１３に処理が移る。
【００６１】
ステップＳ６０３において、実行が終了したプランが存在すると判断した場合は（ステップＳ６０３：Ｙｅｓ）、プラン実行成功時の処理を行う（ステップＳ６１４）。ステップＳ６０２において、代替プラン群スタック１５０にプランが存在しないと判断した場合は（ステップＳ６０２：Ｎｏ）、プラン実行失敗時の処理を行う（ステップＳ６１５）。
【００６２】
このように、プランを構成するアクションごとに誤差条件をアクション情報データベース１９０に格納しておき、アクションを実行するごとに生じる誤差情報が次のアクションの誤差条件を満たすか否かを判断した上でアクションを実行することにより、外界の環境や動作等によって生じてしまう誤差を、アクションを実行した時点で把握することができ、次のアクションを実行できるか否かを判断することができる。また、誤差が誤差条件を満たさない場合に、誤差条件を満たすための割込みゴールに対するプランを生成して実行することにより、ゴールに達成する可能性が向上する。
【００６３】
また、プランを構成するアクションごとに精度条件をアクション情報データベース１９０に格納しておき、アクションを実行している際に計測する精度情報が次のアクションの精度条件を満たすか否かを判断した上でアクションを実行することにより、精度が高い亜アクションを実行でき、ゴールに達成する可能性が向上する。また、精度情報が精度条件を満たさない場合に、精度条件を満たすための割込みゴールに対するプランを生成して実行することにより、ゴールに達成する可能性が向上する。
【００６４】
また、ゴールに対して複数のプランを作成し、選択されたプランに含まれるアクションを実行し、そのアクションの実行結果に応じて作成されたプランすべてが更新されるため、選択されたプランのアクションが途中で誤差条件や精度条件を満たさなくなった場合でも、他のプランに代替することができるため、ゴールを達成する可能性が向上する。
【００６５】
なお、ステップＳ６０６において、割込みゴールに対応するプランを実行する処理に代えて、求められた誤差情報（または精度情報）が誤差条件（または精度条件）を満たすためのアクションを実行しているプランに挿入してもよい。このように、誤差条件（または精度条件）を満たすためのアクションをプランに挿入して実行することにより、ゴールに達成する可能性が向上する。また、挿入されたアクションを実行することによって誤差条件（または精度条件）を満たせば、代替プラン群スタック１５０に格納されているプランを更新する必要がなく、処理負担が軽減される。
【００６６】
なお、ステップＳ６０１では、誤差条件や精度条件を無視して与えられたゴールに代替プランを生成しているが、プランを実行する前にアクション情報データベース１９０に格納された効果の予測誤差を用いて作成されたプランに含まれるアクションを実行した場合に予測誤差が誤差条件を満たすか否かを判断し、予測誤差が誤差条件を満たさない場合には、新たなアクションを追加してもよい。具体的な処理は、後述する具体例１で説明する。
【００６７】
次に、プラン作成・更新部１４０、プラン実行部１６０が行う信念を取得した際のプラン更新処理について説明する。図７は、プラン作成・更新部１４０、プラン実行部１６０が行う信念を取得した際のプラン更新処理手順を示すフローチャートである。なお、図７に示す処理は、外界監視部３００やアクション実行部４００から信念（誤差情報および精度情報を含む）を取得し、取得した信念を信念データベース１８０に格納した場合の処理である。
【００６８】
プラン作成・更新部１４０は、実行中のプランまたは中断中のプランが存在するか否かを判断する（ステップＳ７０１）。実行中のプランまたは中断中のプランが存在すると判断した場合は（ステップＳ７０１：Ｙｅｓ）、プラン作成・更新部１４０は信念の変更に伴って実行中または中断中のプランを更新する（ステップＳ７０２）。このとき、更新された誤差情報や精度情報は無視して実行中または中断中のプランを更新する。実行中のプランまたは中断中のプランが存在しないと判断した場合は（ステップＳ７０１：Ｎｏ）、処理を終了する。
【００６９】
プラン実行部１６０は、実行中のアクションを継続することが無意味か否かを判断する（ステップＳ７０３）。すなわち、実行中のアクションが信念を更新した後に更新された実行中プランと関連がなくなってしまった場合に無意味と判断される。例えば、何者かが移動ロボットが取りに行こうとした物体を持ち去ったことにより、当初の位置に対象の物体が存在しないという信念に更新された場合について考える。このように信念が更新されたことに伴って、実行中のプランを移動ロボットの定位置に戻るプランに更新したような場合は、物体が存在した当初の位置に移動するアクションは無意味であると判断される。
【００７０】
実行中のアクションを継続することが無意味であると判断した場合は（ステップＳ７０３：Ｙｅｓ）、プラン実行部１６０は可能であれば実行中のアクションを中断する（ステップＳ７０４）。なお、このようにアクションの実行を中断した直後に、別スレッドで実行されていたプラン実行処理のアクションは終了し、アクション実行結果に従って信念を更新する処理に移る。また、このときのアクション実行結果は中断となる。実行中のアクションを継続することが無意味でないと判断した場合は（ステップＳ７０３：Ｎｏ）、処理を終了する。すなわち、実行中のアクションを継続する。
【００７１】
（具体例１）
次に、上述した図４〜図７に示す処理について、さらに具体的に説明する。まず、あるゴールに対するプランを検証した際に、アクション実行による誤差が誤差条件を満たさない場合の誤差条件を満たすためのアクションを割込みして実行する処理について説明する。
【００７２】
図８は、複数のアクションを有するプランを示す説明図である。図８に示すプランは、アームを持つ移動ロボットがｎｏｄｅ１にある物体ｏｂｊをｎｏｄｅ２に持っていくというものである。このプランは、“ｎｏｄｅ１への移動”、“ｎｏｄｅ１で物体ｏｂｊをとる”、“ｎｏｄｅ２へ移動”、“物体ｏｂｊをｎｏｄｅ２に置く”の４つのアクションを実行することによって完了する。図９は、プランを実行する際の移動ロボットと物体ｏｂｊとの位置関係を示す説明図である。図８に示すように、“ｎｏｄｅ１で物体ｏｂｊをとる”というアクションを実行する直前には、移動ロボットはｎｏｄｅ１にいなければならない。このようにアクションの実行直前に成立しなければ条件のことを事前条件という。また、移動ロボットがｎｏｄｅ１へ行くというアクションを実行した直後には、移動ロボットはｎｏｄｅ１にいる。このようにアクションの実行直後に新たに成立することをアクションの効果という。
【００７３】
図８に示すプランでは、“ｎｏｄｅ１へ移動”というアクションの効果“ｎｏｄｅ１にいる”により、“ｎｏｄｅ１で物体ｏｂｊをとる”というアクションの事前条件“ｎｏｄｅ１にいる”を満たしている。従来のプランニング・システムでは、このような依存関係（protected link）が成立することをチェックすることが多い。同様に、“ｎｏｄｅ２へ移動”というアクションの効果“ｎｏｄｅ２にいる”により、“物体ｏｂｊをｎｏｄｅ２に置く”というアクションの事前条件“ｎｏｄｅ２にいる”を満たしている。
【００７４】
本実施の形態では、さらにアクション情報データベース１９０にアクションを実行する直前の誤差に関する条件（誤差条件）を格納する。また、アクション情報データベース１９０には、アクションの効果の予想誤差に関する情報を格納する。信念データベース１８０に格納された信念の各フルーエントに誤差情報を格納する。信念データベース１８０に格納される誤差情報は、アクション実行部４００がアクションを実行したことによって実際に生じた誤差であり、外界監視部３００の誤差・精度計算部３１０や、アクション実行部４００の誤差・精度計算部４１０によって算出される。
【００７５】
最初にプランを作成するときには、誤差条件は無視して通常のプランニング方法によりプランを作成する。誤差条件を無視して通常のプランニング方法によりプランを作成した後に、プランで実行予定の各アクションの誤差条件をチェックする。また、プランを実行途中にも、信念データベース１８０に格納されたフルーエント（＝真偽値が変わる述語）の誤差や、将来実行される予定のアクションの予想誤差に基づき、誤差条件を含めた各ｐｒｏｔｅｃｔｅｄ  ｌｉｎｋをチェックすることができる。
【００７６】
図１０は、図８に示したアクションに予想誤差および誤差条件を加えた説明図である。図１０に示すように、“ｎｏｄｅ１へ移動”というアクションの効果は、“ｎｏｄｅ１にいる”であり、予想誤差は“０．５メートル”である。この予想誤差“０．５メートル”は、次のアクションの“ｎｏｄｅ１で物体ｏｂｊをとる”の事前条件“ｎｏｄｅ１にいる”、誤差条件“０．７メートル未満”を満たすことがわかる。また、“ｎｏｄｅ２へ移動”というアクションの効果“ｎｏｄｅ２にいる”の予想誤差“１メートル”は、“物体ｏｂｊをｎｏｄｅ２に置く”というアクションの事前条件“ｎｏｄｅ２にいる”の誤差条件“２メートル未満”を満たすことがわかる。
【００７７】
さらに詳細に説明する。図１１は、信念データベース１８０に格納された初期状態の信念の一例を示す説明図である。ここで、任意のフルーエントＦに対し、
ｂｅｌｉｅｆ(Ｆ)．
は、フルーエントＦが現在成り立っている、すなわち真偽値が真であることを示す。ｂｅｌｉｅｆ(Ｆ)のように真偽値が真であると宣言されていないフルーエントは、全て偽であると解釈する。
【００７８】
また、任意のフルーエントＦに対し、
ｄｙｎａｍｉｃ(Ｆ)．
は、フルーエントＦの真偽値が動的に変化する可能性があることを示す。なお、信念は論理型プログラミング言語Ｐｒｏｌｏｇの記法で記述することとする。Ｐｒｏｌｏｇでは、変数は、英大文字で始まる文字列で表現される。また、“＿”は無名変数と呼ばれ、代入される値を気にしない変数を表す。また、任意のフルーエントＦと値Ｖに対し、
ｅｒｒｏｒ(Ｆ，Ｖ)
は、フルーエントＦの誤差がＶであることを表す。
【００７９】
ｃｏｏｒｄｉｎａｔｅ(ｎｏｄｅ０，０，０)
ｃｏｏｒｄｉｎａｔｅ(ｎｏｄｅ１，０，５)
ｃｏｏｒｄｉｎａｔｅ(ｎｏｄｅ２，５，５)
の各フルーエントは、３つのノードｎｏｄｅ０、ｎｏｄｅ１、ｎｏｄｅ２がそれぞれ、座標(０，０)、(０，５)、(５，５)にあることを示す。ｃｏｏｒｄｉｎａｔｅはｄｙｎａｍｉｃと宣言されていないので、真偽値は変化しない。
【００８０】
また、
ａｔ(ｎｏｄｅ０)
というフルーエントは、移動ロボットがｎｏｄｅ０にいることを表す。
【００８１】
同様に、
ｏｂｊｅｃｔ＿ａｔ(ｏｂｊ，ｎｏｄｅ１)
というフルーエントは、物体ｏｂｊの位置がｎｏｄｅ１であることを表す。
【００８２】
ｃｏｎｎｅｃｔｅｄ(ｎｏｄｅ０，ｎｏｄｅ１)
ｃｏｎｎｅｃｔｅｄ(ｎｏｄｅ１，ｎｏｄｅ２)
の各フルーエントは、ｎｏｄｅ０，ｎｏｄｅ１からそれぞれ隣接するｎｏｄｅ１，ｎｏｄｅ２まで移動可能であることを表す。
【００８３】
また、
ｍａｒｋｅｒ(ｎｏｄｅ０)
ｍａｒｋｅｒ(ｎｏｄｅ１)
ｍａｒｋｅｒ(ｎｏｄｅ２)
の各フルーエントは、ｎｏｄｅ０，ｎｏｄｅ１，ｎｏｄｅ２の各ノードに、移動ロボットが視覚認識可能なマーカが貼ってあるとことを表す。
【００８４】
また、
ｄｙｎａｍｉｃ(ａｔ(＿))
ｄｙｎａｍｉｃ(ｏｂｊｅｃｔ＿ａｔ(＿，＿))
ｄｙｎａｍｉｃ(ｈｏｌｄ(＿))
により、移動ロボットがいるノード、物体があるノード、移動ロボットが持っている物体が変化することがわかる。今のところ、ロボットは何も持っていない。
【００８５】
また、
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ０)，０)．
により、現在いるノード（ｎｏｄｅ１）の誤差は０であることがわかる。
【００８６】
次に、アクションの事前条件と効果の表現方法を示す。図１２〜図１５は、アクション情報データベース１９０に格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【００８７】
Ａというアクションの事前条件ＰＣ１，…，ＰＣｎと効果Ｅ１，…，Ｅｍは以下のように宣言する。
ａｃｔｉｏｎ（Ａ，[ＰＣ１，…，ＰＣｎ]，[ＥＦ１，…，ＥＦｍ]）．
これは、アクションＡを実行する直前に、ＰＣ１，…，ＰＣｎで表現された各条件が成立していれば、ＥＦ１，…ＥＦｍで表現される効果があることを示す。ＰＣ１，…，ＰＣｎの各条件には、真でなければならないフルーエント、組み込み述語、それらの否定、または誤差条件を指定する。
【００８８】
誤差条件は、以下のように表す。
ｅｒｒｏｒ（Ｆ，ＥＲ，[Ｃ１，…，Ｃｎ]）
これは、フルーエントＦの誤差ＥＲに関して、Ｃ１，…，Ｃｎで表現された各条件が成立している必要があることを表す。ただし、Ｃ１，…，Ｃｎの各条件は、真でなければならないフルーエント、組み込み述語、またはそれらの否定である。
【００８９】
また、アクションの効果のＥＦ１，…，ＥＦｍは、それぞれ、以下のいずれかの形をしている。
ｉｎｉｔｉａｔｅｓ(Ｆ)
ｔｅｒｍｉｎａｔｅｓ(Ｆ)
ｃａｕｓｅｓＥｒｒｏｒ(Ｆ，ＰＥ，[Ｃ１，…Ｃｎ])
ここで、ｉｎｉｔｉａｔｅｓ(Ｆ)はフルーエントＦの真偽値が真になることを表し、ｔｅｒｍｉｎａｔｅｓ(Ｆ)はフルーエントＦの真偽値が偽になることを表す。
【００９０】
また、ｃａｕｓｅｓＥｒｒｏｒ(Ｆ，ＰＥ，[Ｃ１，…Ｃｎ])は、フルーエントＦの予想誤差がＰＥ（Ｃ１，…ＣｎによりＰＥが算出される）になることを表す。ただし、各Ｃ１，…Ｃｎは、アクション実行後に真でなければならないフルーエントまたは組み込み述語である。
【００９１】
図１２は、座標(Ｘ２，Ｙ２)にあるノードＮｅｘｔＮｏｄｅへ移動するアクションの事前条件と効果を示す説明図である。事前条件は、
・ＣｕｒｒｅｎｔＮｏｄｅというノードにいる
・ＣｕｒｒｅｎｔＮｏｄｅから隣接するノードＮｅｘｔＮｏｄｅへ移動可能
・ＮｅｘｔＮｏｄｅの座標は(Ｘ２，Ｙ２)
・ａｔ(ＣｕｒｒｅｎｔＮｏｄｅ)の誤差Ｅ１が１メートル未満
であることを表す。
【００９２】
また、効果は、
・ＮｅｘｔＮｏｄｅにいる
・ＣｕｒｒｅｎｔＮｏｄｅにいなくなる
・ａｔ(ＮｅｘｔＮｏｄｅ)の誤差Ｅ２は、移動前の自己位置の座標(Ｘ１，Ｙ１)から移動後の自己位置の座標(Ｘ２，Ｙ２)までの距離の１０％の値に、移動前のａｔ(ＣｕｒｒｅｎｔＮｏｄｅ)の誤差Ｅ１を足した値
であることを表す。
【００９３】
図１３は、ノードＮｏｄｅで物体Ｏｂｊを拾うアクションの事前条件と効果を示す説明図である。事前条件は、
・何も持っていない
・Ｎｏｄｅにいる
・ＮｏｄｅにＯｂｊがある
・ａｔ(Ｎｏｄｅ)の誤差が０．７メートル未満
であることを表す。
【００９４】
また、効果は、
・Ｏｂｊを持っている
・ＮｏｄｅにＯｂｊがない
であることを表す。
【００９５】
図１４は、ノードＮｏｄｅに物体Ｏｂｊを置くというアクションの事前条件と効果を表す。事前条件は、
・Ｎｏｄｅにいる
・Ｏｂｊを持っている
・ａｔ(Ｎｏｄｅ)の誤差が２メートル未満
であることを表す。
【００９６】
また、効果は、
・ＮｏｄｅにＯｂｊがある
・Ｏｂｊを持っていない
であることを表す。
【００９７】
図１５は、現在いるノードにあるマーカを探して近づくというアクションの事前条件と効果を表す。事前条件は、
・Ｎｏｄｅにいる
・Ｎｏｄｅにマーカがある
であることを表す。
【００９８】
また、効果は、
・ａｔ(ＮｅｘｔＮｏｄｅ)の誤差Ｅ２は０．５未満
であることを表す。
【００９９】
図１６〜図１９は、アクション情報データベース１９０に格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。なお、図１６〜図１９は、図１２〜図１５で示したアクションの事前条件と効果から、誤差に関する事前条件（誤差条件）と効果の予想誤差を削除したものである。プラン作成の第１段階では、誤差条件と予想誤差を無視して、通常のプラン作成方法を用いて、プランを作成する。すなわち、各アクションの事前条件と効果は、図１６から図１９のように解釈してプランを作成する。ここで、プランに付随してアクションの事前条件と効果（または初期状態）の因果関係を示すｐｒｏｔｅｃｔｅｄ  ｌｉｎｋを記録できるならば、プラン作成方法は問わない。例えば、初期状態から最終状態に向かってアクションの順序を推論していく前向きプランニング、最終状態から初期状態に向かってアクションの順序を推論していく後ろ向きプランニング、大まかなタスクを詳細なタスク列に分解していくことによりアクション列にするＨＴＮプランニング等、様々なプランニング方法が考えられる。このプラン作成の第一段階において、ｏｂｊをｎｏｄｅ２に移動させるためのプランを作成したとする。
【０１００】
図２０は、具体例１で実行するアクションと事前条件との関係を示す説明図である。本具体例のプランでは、以下の順番でアクションを実行していくものとする。
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
ｐｉｃｋＵｐＡｔ（ｏｂｊ，ｎｏｄｅ１）
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
ｐｕｔＡｔ（ｏｂｊ，ｎｏｄｅ２）
【０１０１】
このとき、図２０の点線が表すｐｒｏｔｅｃｔｅｄ  ｌｉｎｋのように、各アクションの事前条件は、現在状態またはアクションの効果により満たされる。
【０１０２】
図２１は、具体例１で実行するアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。プラン作成の第２段階では、各アクションの予想誤差を算出し、各アクションの誤差条件が満たされることを確認する。以下、図２１を参照して説明する。まず、信念に記載の誤差情報
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ０)，０)
から、ａｔ(ｎｏｄｅ０)の誤差が０メートルであることがわかるので、プランの最初のアクション
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ０)，０，[
０ < １
])
は、満たされることがわかる。
【０１０３】
次に、このアクションの効果ａｔ(ｎｏｄｅ１)の予想誤差は、
ｃａｕｓｅｓＥｒｒｏｒ(ａｔ(ｎｏｄｅ１)，０．５，[
ｃｏｏｒｄｉｎａｔｅ(ａｔ(ｎｏｄｅ１)，０，５)，
ｄｉｓｔａｎｃｅ(５，０，０，０，５)，
０．５ ｉｓ ５ ＊ ０．１＋０
])
から、０．５メートルとわかる。従って、プランの２番目のアクション
ｐｉｃｋＵｐＡｔ（ｏｂｊ，ｎｏｄｅ１）
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ０)，０．５，[
０．５ < ０．７
])
は、満たされることがわかる。同様に、ａｔ(ｎｏｄｅ１)の予想誤差０．５メートルから、プランの３番目のアクション
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ１)，０．５，[
０．５ < １
])
は、満たされることがわかる。
【０１０４】
次に、このアクションの効果ａｔ(ｎｏｄｅ２)の予想誤差は、
ｃａｕｓｅｓＥｒｒｏｒ(ａｔ(ｎｏｄｅ２)，１，[
ｃｏｏｒｄｉｎａｔｅ(ａｔ(ｎｏｄｅ２)，５，５)，
ｄｉｓｔａｎｃｅ(５，０，５，５，５)，
１ ｉｓ ５ ＊ ０．１＋０．５
])
から、１メートルとわかる。従って、プランの４番目のアクション
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ２)，１，[
１ < ２
])
は、満たされることがわかる。これにより、予想誤差を用いてプランの誤差条件をチェックすることができるため、プランを実行することなく、プランの実現可能性を判断することができる。
【０１０５】
次に、このプランを実行した場合について説明する。図２２は、最初のアクションを実行した後のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。まず、最初のアクションである
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
を実行すると、残りのプランは、以下のようになる。
ｐｉｃｋＵｐＡｔ（ｏｂｊ，ｎｏｄｅ１）
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
ｐｕｔＡｔ（ｏｂｊ，ｎｏｄｅ２）
【０１０６】
そして、アクションの効果に従い、信念データベース１８０に格納されたフルーエント
ａｔ(ｎｏｄｅ０)
を
ａｔ(ｎｏｄｅ１)
に書き換える。
【０１０７】
図２３は、信念データベース１８０に格納された信念の一例を示す説明図である。図２３に示す例は、ａｔ(ｎｏｄｅ１)の誤差が、０．４であった場合の信念である。
【０１０８】
次に、プランの各アクションの誤差条件を再チェックする。ａｔ(ｎｏｄｅ１)の誤差０．４は、
ｐｉｃｋＵｐＡｔ（ｏｂｊ，ｎｏｄｅ１）
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ１)，０．４，[
０．４ < ０．７
])
と、
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ１)，０．４，[
０．４ < １
])
を満たすことがわかる。
【０１０９】
一方、
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
の効果ａｔ(ｎｏｄｅ２)の予想誤差は、
ｃａｕｓｅｓＥｒｒｏｒ(ａｔ(ｎｏｄｅ２)，０．９，[
ｃｏｏｒｄｉｎａｔｅ(ａｔ(ｎｏｄｅ２)，５，５)，
ｄｉｓｔａｎｃｅ(５，０，５，５，５)，
０．９ ｉｓ ５ ＊ ０．１＋０．４
])
から、０．９となる。これは、
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ２)，０．９，[
０．９ < ２
])
を満たす。図２２に示すように、誤差条件を考慮してもプランは有効である。
【０１１０】
図２４は、２番目のアクションを実行した後のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。２番目のアクションである、
ｐｉｃｋＵｐＡｔ（ｏｂｊ，ｎｏｄｅ１）
を実行すると、残りのプランは、以下のようになる。
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
ｐｕｔＡｔ（ｏｂｊ，ｎｏｄｅ１）
【０１１１】
アクションの効果に従い、信念データベース１８０に格納されたフルーエント
ｏｂｊｅｃｔ＿ａｔ(ｏｂｊ，ｎｏｄｅ１)
を
ｈｏｌｄ(ｏｂｊ)
に書き換える。図２５は、信念データベース１８０に格納された信念の一例を示す説明図である。誤差情報は変化しないので、図２４に示すように、プランの各アクションの誤差条件は満たされる。
【０１１２】
図２６は、３番目のアクションを実行した後のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。３番目のアクションである
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
を実行すると、残りのプランは、以下のようになる。
ｐｕｔＡｔ（ｏｂｊ，ｎｏｄｅ１）
【０１１３】
そして、アクションの効果に従い、信念データベース１８０に格納されたフルーエント
ａｔ(ｎｏｄｅ１)
を
ａｔ(ｎｏｄｅ２)
に書き換える。図２７は、信念データベース１８０に格納された信念の一例を示す説明図である。図２７に示す例は、ａｔ(ｎｏｄｅ２)の誤差が３であった場合の信念である。
【０１１４】
次に、プランの各アクションの誤差条件を再チェックする。ここで、図２６に示すように、ａｔ(ｎｏｄｅ２)の誤差３は、
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ２)，３，[
３ < ２
])
を満たさない。
【０１１５】
図２８は、割込みアクションを実行する場合のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。図２８に示すように、
ｇｏＣｌｏｓｅｒＴｏＭａｒｋｅｒＨｅｒｅ
というアクションをプランの先頭に挿入し、プランを
ｇｏＣｌｏｓｅｒＴｏＭａｒｋｅｒＨｅｒｅ
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
に修正する。この挿入したアクションの効果
ｃａｕｓｅｓＥｒｒｏｒ(ａｔ(Ｎｏｄｅ)，０．５，[])
により、ａｔ(ｎｏｄｅ２)の予想誤差が０．５になるので、
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
の誤差条件
ｅｒｒｏｒ(ａｔ(ｎｏｄｅ２)，０．５，[
０．５ < ２
])
は図２８のように満たされる。以下、同様にプラン実行を進めていく。
【０１１６】
ｇｏＣｌｏｓｅｒＴｏＭａｒｋｅｒＨｅｒｅ
を実行し、マーカに近づき、ａｔ(ｎｏｄｅ２)の誤差を誤差２メートル未満にすれば、
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
を実行できる。このアクションが無事に実行できれば、プランの実行は終了である。
【０１１７】
なお、本具体例では、実行中のプランに誤差条件を満たすためのアクションを挿入しているが、別の実施方法としては、プランは修正せずに実行を中断し、誤差条件を満たすためのアクションまたはプラン（本具体例では、ｇｏＣｌｏｓｅｒＴｏＭａｒｋｅｒＨｅｒｅ）を割込み実行した後に、中断中プランの誤差条件を再確認し、中断中のプランの実行を再開するという方法がある。
【０１１８】
また、本具体例では、物体の位置の誤差は考慮していないが、同様の手法で、物体の位置の誤差を考慮したプラン作成・修正・実行も可能である。
【０１１９】
（具体例２）
次に、他の具体例について説明する。図２９は、新たなアクションを実行する場合のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。図２８に示した具体例１において、
ｇｏＣｌｏｓｅｒＴｏＭａｒｋｅｒＨｅｒｅ
の実行に失敗したとする。すなわち、マーカが見つからず、ロボットの自己位置の誤差を少なくすることができなかったとする。このとき、残りのプラン
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
は、実行できない。なぜならば、その誤差条件が満たされないからである。
【０１２０】
図３０は、アクション情報データベース１９０に格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。ここで、移動ロボットは、さらに図３０で示されるように、ｏｂｊｅｃｔをｎｏｄｅ２に置くように人に音声で依頼するアクション
ａｓｋＳｏｍｅｏｎｅ(ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２))
を実行可能であるとする。このアクションの事前条件と効果は、図１４で示される
ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２)
の事前条件と効果とほぼ同じであるが、ａｔ(ｎｏｄｅ２)の誤差条件がないので、図３０に示すように、次のような１つのアクションのプランに変更可能である。
ａｓｋＳｏｍｅｏｎｅ(ｐｕｔＡｔ(ｏｂｊ，ｎｏｄｅ２))
このように、誤差条件を満たさない場合には、その誤差条件を回避するようなプランに変更することも考えられる。
【０１２１】
（具体例３）
具体例３では、さらにアクションの事前条件の１つとして精度条件を導入し、効果の１つとして予想精度を導入する。精度条件と予想精度は、具体例１の誤差条件と予想誤差の扱い方とほぼ同じである。図３１は、信念データベース１８０に格納されている信念を示す説明図である。つまり、具体例３における初期状態のロボットの信念は、図３１となる。
【０１２２】
本具体例では、具体例１と同様のアクションが実行可能であり、信念データベース１８０に格納されている信念は、図１１とほぼ同様である。ただし、図３１に示すように、見つけたマーカを記憶し、見失ったマーカを消去するために、
ｄｙｎａｍｉｃ(ｆｏｕｎｄＭａｒｋｅｒ(＿))．
と宣言しておく。
【０１２３】
また、一般に信念データベース１８０に精度条件を記載する場合、任意のフルーエントＦと値Ｖ（０≦Ｖ≦１）に対し、
ｐｒｅｃｉｓｉｏｎ(Ｆ，Ｖ)
は、フルーエントＦの精度がＶであることを表すこととする。
【０１２４】
また、任意のフルーエントＦと値ＰＲ（０≦Ｖ≦１）と条件Ｃ１，…，Ｃｎに対し、精度条件は、
ｐｒｅｃｉｓｉｏｎ(Ｆ，ＰＲ，[Ｃ１，…，Ｃｎ])
と表すことにする。これは、Ｃ１，…，Ｃｎで表現された各条件が成立している場合のフルーエントＦの予想精度がＰＲであることを表す。ただし、Ｃ１，…，Ｃｎの各条件は、真でなければならないフルーエント、組み込み述語またはそれらの否定である。
【０１２５】
また、任意のフルーエントＦと値ＰＲ（０≦Ｖ≦１）と条件Ｃ１，…，Ｃｎに対し、アクションの効果として予想精度を記載する場合、
ｃａｕｓｅｓＰｒｅｃｉｓｉｏｎ(Ｆ，ＰＰ，[Ｃ１，…，Ｃｎ])
は、フルーエントＦの予想精度がＰＰ（Ｃ１，…，ＣｎによりＰＰが算出される）になることを表す。ただし、各Ｃ１，…，Ｃｎは、アクション実行後に真でなければならないフルーエントまたは組み込み述語である。
【０１２６】
図３２は、プランを実行する際の移動ロボットの移動経路を示す説明図である。図３２に示すように、最初に移動ロボットは、ｎｏｄｅ０からｎｏｄｅ２に移動しようとしたとする。そのためのプランは以下のようである。
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
【０１２７】
図３３は、具体例３にかかるプランに含まれるアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。上述した具体例１の場合と同様に、このプランの各アクションの事前条件は、図３３に示すように満たされる。
【０１２８】
さらに、詳しく説明する。まず、図３３に示すプランの最初のアクション
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
を実行する。このアクションの実行中、すなわちｎｏｄｅ１へ移動中に、図３４に示すように、ｎｏｄｅ２のマーカを精度０．５でたまたま発見したとする。図３４は、プランを実行する際の移動ロボットの移動経路とマーカの発見地点の一例を示す説明図である。図３５は、信念データベース１８０に格納されている信念を示す説明図である。図３５に示すように、信念データベース１８０にフルーエント
ｆｏｕｎｄＭａｒｋｅｒ(ｎｏｄｅ２)
を記憶し、また、精度情報
ｐｒｅｃｉｓｉｏｎ(ｆｏｕｎｄＭａｒｋｅｒ(ｎｏｄｅ２)，０．５)
を記憶する。
【０１２９】
図３６は、アクション情報データベース１９０に格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。図３６に示すように、見つけたマーカのあるノードへは直接移動できるアクション
ｇｏｔｏＭａｒｋｅｒ(Ｎｏｄｅ，Ｘ，Ｙ)
が用意されていたとする。このアクションの事前条件は、
・Ｎｏｄｅにマーカがある
・Ｎｏｄｅのマーカが見つかった
・Ｎｏｄｅの座標は(Ｘ，Ｙ)である
・見つかったマーカの認識精度Ｐは０．８より大きい
と解釈する。３番目の事前条件は精度条件である。
【０１３０】
また、このアクション（ｇｏｔｏＭａｒｋｅｒ(Ｎｏｄｅ)）の効果は、
・移動ロボットの位置がＮｏｄｅになる
・今までの移動ロボットの位置を消去する
・移動ロボットの現在位置の誤差は、０．５メートル以内
と解釈する。３番目の効果は、予想誤差である。
【０１３１】
図３７は、最初のアクションを実行した後のアクションと事前条件との関係を示す説明図である。図３７に示すように、精度条件を無視すれば、以下のような１つのアクションの新しい代替プラン
ｇｏｔｏＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
を作成できる。なお、精度条件以外の事前条件は満たされている。コスト情報から代替プランのよしあしを比較できるならば、この新代替プランを実行したほうが、ｎｏｄｅ２へ短い距離で移動できるため、この新代替プランへ変更すべきである。
【０１３２】
図３８は、最初のアクションを実行した後のアクションと事前条件（精度条件を含む）との関係を示す説明図である。図３８に示すように、
ｍａｒｋｅｒＦｏｕｎｄ(ｎｏｄｅ２)
の精度条件
ｐｒｅｃｉｓｉｏｎ(ｍａｒｋｅｒＦｏｕｎｄ(ｎｏｄｅ２)，０．５，[
０．５>０．８
])
は満たされていない。
【０１３３】
図３９は、割込みアクションを実行した場合のアクションと事前条件（精度条件を含む）、予測精度との関係を示す説明図である。図３９に示すような精度を上げるアクション
ｆｉｎｄＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
を割込み実行すればよい。このアクションの事前条件は、
・Ｎｏｄｅのマーカを発見
・Ｎｏｄｅの座標は(Ｘ，Ｙ)
と解釈し、効果は
・マーカ発見の精度を０．９にする
と解釈する。
【０１３４】
図４０は、アクション情報データベース１９０に格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。図４０に示すアクションを割込み実行するとなると、代替プランは、
ｆｉｎｄＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
ｇｏｔｏＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
となり、図４０に示すように、
ｆｉｎｄＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
の予想効果
ｃａｕｓｅｓＰｒｅｃｉｓｉｏｎ(ｍａｒｋｅｒＦｏｕｎｄ(Ｎｏｄｅ)，０．９，[])
によると、
ｇｏｔｏＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
の事前条件である
ｍａｒｋｅｒＦｏｕｎｄ(ｎｏｄｅ２)
の精度条件
ｐｒｅｃｉｓｉｏｎ(ｍａｒｋｅｒＦｏｕｎｄ(ｎｏｄｅ２)，０．９，[
０．９>０．８
])
は図３９に示すように満たされる。
【０１３５】
そこで、現在実行中のアクション
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
の実行を中断し、この代替プランに切り替える。この代替プランに従い、
ｆｉｎｄＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
を実行すると、残りのプランは、
ｇｏｔｏＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
となる。
【０１３６】
図４１は、信念データベース１８０に格納された信念の一例を示す説明図である。図４１に示す例は、ｎｏｄｅ２のマーカを０．８より大きい精度で認識できなかった場合、例えば精度が０．６である場合の信念である。図４２は、プランに従ってアクションを実行した場合のアクションと事前条件（精度条件を含む）、精度情報との関係を示す説明図である。図４２に示すように、精度条件をみたさないので、最初のプラン
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２，５，５）
に戻し、中断していたアクション
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ１，０，５）
の実行を再開すればよい。
【０１３７】
図４３は、信念データベース１８０に格納された信念の一例を示す説明図である。図４３に示す例は、ｎｏｄｅ２のマーカを０．８より大きい精度で認識できた場合、例えば、精度が０．９１の場合の信念である。図４４は、プランに従ってアクションを実行した場合のアクションと事前条件（精度条件を含む）、精度情報との関係を示す説明図である。図４４に示すように、
ｇｏｔｏＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
の事前条件である
ｍａｒｋｅｒＦｏｕｎｄ(ｎｏｄｅ２)
の精度条件
ｐｒｅｃｉｓｉｏｎ(ｍａｒｋｅｒＦｏｕｎｄ(ｎｏｄｅ２)，０．９１，[
０．９１>０．８
])
を満たすので、プランの最後のアクション
ｇｏｔｏＭａｒｋｅｒ(ｎｏｄｅ２，５，５)
の実行が終われば、無事にｎｏｄｅ２に到着し、終了できる。
【０１３８】
なお、本具体例では、代替プランに精度条件を満たすためのアクションを挿入しているが、別の実施方法としては、代替プランは修正せずに、実行中の実行を中断し、精度条件を満たすためのアクションまたはプランを割込み実行した後に、代替プランの精度条件を再確認し、代替プランに変更するという方法がある。
【０１３９】
図４５は、本実施の形態にかかるプラン実行装置１０のハードウェア構成を示す図である。本実施の形態にかかるプラン実行装置１０は、ＣＰＵ（Central Processing Unit）１０１等の制御装置と、ＲＯＭ（Read Only Memory）１０２やＲＡＭ（Random Access Memory）１０３等の記憶装置と、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disk）ドライブ装置等の外部記憶装置１０４と、外部のネットワークと接続する通信インターフェース１０５と、これらを接続するバス１０６を備えている。
【０１４０】
先に述べたプラン実行装置１０で実行可能なプラン実行プログラムは、ＲＯＭ等に予め組み込んで提供するように構成しても、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
【０１４１】
この場合には、プラン実行プログラムは、プラン実行装置１０において上記記録装置や記憶媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
【０１４２】
また、プラン実行装置１０で実行可能なプラン実行プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、プラン実行装置１０で実行可能なプラン実行プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１４３】
なお、信念データベース１８０やアクション情報データベース１９０は、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカードなどの一般的に利用されているあらゆる記憶媒体により構成することができる。
【０１４４】
また、プラン実行装置１０が備えるプランニングエージェント部１００、ゴール生成部２００、外界監視部３００、アクション実行部４００はそれぞれ異なる装置として構成してもよい。
【０１４５】
なお、本発明は、上述した実施の形態や具体例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上述した実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、実施の形態や具体例で説明した構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１４６】
【図１】本実施の形態にかかるプラン実行装置の構成を示すブロック図である。
【図２】通常ゴールに関する情報を格納した代替プラン群スタックのデータ構成の一例を示す説明図である。
【図３】通常ゴールと割込みゴールに関する情報を格納した代替プラン群スタックのデータ構成の一例を示す説明図である。
【図４】プランニングエージェント部が行う通常ゴールが投入された際のプラン実行処理手順を示すフローチャートである。
【図５】プランニングエージェント部が行う割込みゴールが投入された際のプラン実行処理手順を示すフローチャートである。
【図６】プラン作成・更新部、プラン実行部が行うアクション実行処理手順を示すフローチャートである。
【図７】プラン作成・更新部、プラン実行部が行う信念を取得した際のプラン更新処理手順を示すフローチャートである。
【図８】複数のアクションを有するプランを示す説明図である。
【図９】プランを実行する際の移動ロボットと物体ｏｂｊとの位置関係を示す説明図である。
【図１０】図８に示したアクションに予想誤差および誤差条件を加えた説明図である。
【図１１】信念データベースに格納された初期状態の信念の一例を示す説明図である。
【図１２】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１３】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１４】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１５】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１６】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１７】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１８】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図１９】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図２０】具体例１で実行するアクションと事前条件との関係を示す説明図である。
【図２１】具体例１で実行するアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図２２】最初のアクションを実行した後のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図２３】信念データベースに格納された信念の一例を示す説明図である。
【図２４】２番目のアクションを実行した後のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図２５】信念データベースに格納された信念の一例を示す説明図である。
【図２６】３番目のアクションを実行した後のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図２７】信念データベースに格納された信念の一例を示す説明図である。
【図２８】割込みアクションを実行する場合のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図２９】新たなアクションを実行する場合のアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図３０】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図３１】信念データベースに格納されている信念を示す説明図である。
【図３２】プランを実行する際の移動ロボットの移動経路を示す説明図である。
【図３３】具体例３にかかるプランに含まれるアクションと事前条件（誤差条件を含む）、予想誤差との関係を示す説明図である。
【図３４】プランを実行する際の移動ロボットの移動経路とマーカの発見地点の一例を示す説明図である。
【図３５】信念データベースに格納されている信念を示す説明図である。
【図３６】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図３７】最初のアクションを実行した後のアクションと事前条件との関係を示す説明図である。
【図３８】最初のアクションを実行した後のアクションと事前条件（精度条件を含む）との関係を示す説明図である。
【図３９】割込みアクションを実行した場合のアクションと事前条件（精度条件を含む）、予測精度との関係を示す説明図である。
【図４０】アクション情報データベースに格納された移動ロボットが実行可能なアクションの事前条件と効果の一例を示す説明図である。
【図４１】信念データベースに格納された信念の一例を示す説明図である。
【図４２】プランに従ってアクションを実行した場合のアクションと事前条件（精度条件を含む）、精度情報との関係を示す説明図である。
【図４３】信念データベースに格納された信念の一例を示す説明図である。
【図４４】プランに従ってアクションを実行した場合のアクションと事前条件（精度条件を含む）、精度情報との関係を示す説明図である。
【図４５】本実施の形態にかかるプラン実行装置のハードウェア構成を示す図である。
【符号の説明】
【０１４７】
１０  プラン実行装置
１００  プランニングエージェント部
１１０  通常ゴール取得部
１２０  通常ゴールキュー
１３０  割込みゴール取得部
１４０  プラン作成・更新部
１４１  誤差・精度条件判定部
１４２  誤差・精度条件解決部
１５０  代替プラン群スタック
１６０  プラン実行部
１７０  信念更新命令取得部
１８０  信念データベース
１９０  アクション情報データベース
２００  ゴール生成部
３００  外界監視部
３１０  誤差・精度計算部
４００  アクション実行部
４１０  誤差・精度計算部
【図１】
2009237737.tif 000003
【図２】
2009237737.tif 000004
【図３】
2009237737.tif 000005
【図４】
2009237737.tif 000006
【図５】
2009237737.tif 000007
【図６】
2009237737.tif 000008
【図７】
2009237737.tif 000009
【図８】
2009237737.tif 000010
【図９】
2009237737.tif 000011
【図１０】
2009237737.tif 000012
【図１１】
2009237737.tif 000013
【図１２】
2009237737.tif 000014
【図１３】
2009237737.tif 000015
【図１４】
2009237737.tif 000016
【図１５】
2009237737.tif 000017
【図１６】
2009237737.tif 000018
【図１７】
2009237737.tif 000019
【図１８】
2009237737.tif 000020
【図１９】
2009237737.tif 000021
【図２０】
2009237737.tif 000022
【図２１】
2009237737.tif 000023
【図２２】
2009237737.tif 000024
【図２３】
2009237737.tif 000025
【図２４】
2009237737.tif 000026
【図２５】
2009237737.tif 000027
【図２６】
2009237737.tif 000028
【図２７】
2009237737.tif 000029
【図２８】
2009237737.tif 000030
【図２９】
2009237737.tif 000031
【図３０】
2009237737.tif 000032
【図３１】
2009237737.tif 000033
【図３２】
2009237737.tif 000034
【図３３】
2009237737.tif 000035
【図３４】
2009237737.tif 000036
【図３５】
2009237737.tif 000037
【図３６】
2009237737.tif 000038
【図３７】
2009237737.tif 000039
【図３８】
2009237737.tif 000040
【図３９】
2009237737.tif 000041
【図４０】
2009237737.tif 000042
【図４１】
2009237737.tif 000043
【図４２】
2009237737.tif 000044
【図４３】
2009237737.tif 000045
【図４４】
2009237737.tif 000046
【図４５】
2009237737.tif 000047