(57)【要約】【課題】タスクの対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことのできるプラン実行装置を提供する。【解決手段】一連の処理であるプランを実行する実行手段１７０と、プランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段１３０と、プランの実行情報を保持する実行情報保持手段１４０と、割込指示を受け付ける割込指示受付手段１００と、割込指示を受け付けた場合に、割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定手段１２０と、処理状態と、実行中プランの実行情報と、割込情報とに基づいて、割込プランを実行するか否かを判断する割込可否判断手段１２０とを備えた。【選択図】        図１
2006268343.tif 000002
【特許請求の範囲】
【請求項１】
一連の処理であるプランを実行する実行手段と、
前記実行手段が実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段と、
前記実行手段が実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段と、
前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、
前記割込指示受付手段が所定の割込プランの前記割込指示を受け付けた場合に、前記割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定手段と、
前記処理状態保持手段が保持している前記処理状態と、前記実行中プランの前記実行情報と、前記割込情報特定手段が特定した前記割込情報とに基づいて、前記割込プランを実行するか否かを判断する割込可否判断手段と
を備えたことを特徴とするプラン実行装置。
【請求項２】
前記プランは、前記実行手段が実行する最小単位であるアクションを複数有し、
前記実行情報保持手段は、前記実行情報として前記アクションの実行に関する情報であるアクション実行情報を保持し、
前記割込可否判断手段は、前記処理状態と、前記割込情報と、前記実行中プランに含まれる各アクションの前記アクション実行情報とに基づいて、前記割込プランを実行するか否かを判断することを特徴とする請求項１に記載のプラン実行装置。
【請求項３】
前記実行情報保持手段は、前記アクション実行情報として、前記実行手段が前記アクションを実行する直前に成立している必要のあるアクション実行前条件を保持し、
前記割込可否判断手段は、前記処理状態と、前記割込情報と、前記実行中プランに含まれる各アクションの前記アクション実行前条件とに基づいて、前記割込プランを実行するか否かを判断することを特徴とする請求項２に記載のプラン実行装置。
【請求項４】
前記実行情報保持手段は、前記アクション実行情報として、前記実行手段による前記アクション実行の効果であるアクション実行効果を保持し、
前記割込可否判断手段は、前記処理状態と、前記割込情報と、前記実行中プランに含まれる各アクションの前記アクション実行効果とに基づいて、前記割込プランを実行するか否かを判断することを特徴とする請求項２または３に記載のプラン実行装置。
【請求項５】
前記割込可否判断手段は、前記処理状態と、前記割込情報と、前記プランに含まれる各アクションの前記アクション実行情報とに基づいて、前記実行中プランのうち実行手段が実行していないアクションのうちいずれかアクションの直後に、前記割込プランを実行するか否かをさらに判断することを特徴とする請求項２から４のいずれか一項に記載のプラン実行装置。
【請求項６】
前記実行情報保持手段は、前記アクション実行情報として、前記実行手段が前記アクションを実行する直前に成立している必要のあるアクション実行前条件と、前記実行手段による前記アクション実行の効果であるアクション実行効果とを保持し、
前記割込可否判断手段は、前記処理状態と、前記割込情報と、前記実行手段が実行中の実行中アクションに対する前記アクション実行効果と、前記実行中アクションの次に実行すべきアクションに対するアクション実行前条件とに基づいて、前記実行中アクションの次に、前記割込プランを実行するか否かを判断することを特徴とする請求項２に記載のプラン実行装置。
【請求項７】
前記割込情報特定手段は、前記割込情報として、前記実行手段による前記割込プラン実行の効果である割込プラン実行効果を特定し、
前記割込可否判断手段は、前記処理状態と、前記実行中プランの前記実行情報と、前記割込情報特定手段が特定した前記割込プラン実行効果に基づいて、前記割込プランを実行するか否かを判断することを特徴とする請求項１に記載のプラン実行装置。
【請求項８】
前記割込情報特定手段は、前記割込情報として、前記実行手段が前記割込プランを実行する直前に成立している必要のある割込プラン実行前条件を特定し、
前記割込可否判断手段は、前記処理状態と、前記実行中プランの前記実行情報と、前記割込情報特定手段が特定した前記割込プラン実行前条件に基づいて、前記割込プランを実行するか否かを判断することを特徴とする請求項１に記載のプラン実行装置。
【請求項９】
前記プランは、前記実行手段が実行する最小単位であるアクションを複数有し、
前記割込情報特定手段は、前記割込プランに含まれる各アクションのアクション実行情報を特定し、
前記割込可否判断手段は、前記処理状態と、前記実行中プランの前記実行情報と、前記割込プランの各アクションに対する前記アクション実行情報とに基づいて、前記割込プランを実行するか否かを判断することを特徴とする請求項２に記載のプラン実行装置。
【請求項１０】
前記割込可否判断手段は、前記処理状態と、前記実行中プランの前記実行情報と、前記割込プランの各アクションに対する前記アクション実行情報とに基づいて、当該アクションが前記対象オブジェクトの処理状態を変更すると判断した場合に、前記割込プランの割り込みを禁止することを特徴とする請求項２に記載のプラン実行装置。
【請求項１１】
一連の処理であるプランを実行する実行手段と、
前記実行手段が実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段と、
前記実行手段が実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段と、
前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、
前記割込指示受付手段が前記割込指示を受け付けた場合に、前記処理状態保持手段が保持している前記処理状態と、前記実行情報保持手段が保持している前記実行情報とに基づいて、割込プランを作成する割込プラン作成手段と、
前記割込プラン作成手段が作成した前記割込プランの割り込みを行う割込制御手段と
を備えたことを特徴とするプラン実行装置。
【請求項１２】
前記割込プラン作成手段は、前記処理状態を変更しない前記割込プランを作成することを特徴とする請求項１１に記載のプラン実行装置。
【請求項１３】
前記プランは、前記実行手段が実行する最小単位であるアクションを複数有し、
前記実行情報保持手段は、前記実行情報として前記アクションの実行に関する情報であるアクション実行情報を保持し、
前記割込プラン作成手段は、前記処理状態と、前記プランに含まれる各アクションの前記アクション実行情報とに基づいて、前記割込プランを作成することを特徴とする請求項１１に記載のプラン実行装置。
【請求項１４】
一連の処理であるプランを実行する実行ステップと、
前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定ステップと、
前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段に保持されている前記実行情報と、前記割込情報特定ステップにおいて特定した前記割込情報とに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップと
を有することを特徴とするプラン実行方法。
【請求項１５】
一連の処理であるプランを実行する実行ステップと、
前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段が保持している前記実行情報とに基づいて、割込プランを作成する割込プラン作成ステップと、
前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップと
を有することを特徴とするプラン実行方法。
【請求項１６】
プラン実行処理をコンピュータに実行させるプラン実行プログラムであって、
一連の処理であるプランを実行する実行ステップと、
前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定ステップと、
前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段に保持されている前記実行情報と、前記割込情報特定ステップにおいて特定した前記割込情報とに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップと
を有することを特徴とするプラン実行プログラム。
【請求項１７】
プラン実行処理をコンピュータに実行させるプラン実行プログラムであって、
一連の処理であるプランを実行する実行ステップと、
前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段が保持している前記実行情報とに基づいて、割込プランを作成する割込プラン作成ステップと、
前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップと
を有することを特徴とするプラン実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割り込みにかかるプランを実行するプラン実行装置、プラン実行方法およびプラン実行プログラムに関するものである。
【背景技術】
【０００２】
所定のタスク列であるプランを実行中に、他のプランの割り込みが行われる場合がある。この場合に、割込プランの実行を管理する方法としてスケジューリング方式が知られている。スケジューリング方式としては、例えば、複数の割り込みがあった場合にこれらの優先順序をつけるものが知られている（例えば、「特許文献１」参照）。
【０００３】
【特許文献１】特開平０６−１８７１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、例えば移動ロボットにおいては、プランの実行により移動ロボットが移動する場合がある。したがって、所定のプランを実行中に他のプランの割り込みを許可し、他の位置に移動した場合に、元のプランを実行できないことがある。
【０００５】
例えば、階段を昇るというタスクを実行中にリビングに行くという割込タスクを実行すると、割込タスク完了時には移動ロボットはリビングに移動している。したがって、階段を昇るというプランを復帰させたときには、このプランを実行することができない。
【０００６】
このように、タスクの対象となるオブジェクトの状態がタスクの実行に影響を及ぼし、かつこのオブジェクトの状態がタスクの実行により変化する場合には、従来のタスク管理を適用することができないという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、タスクの対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことのできるプラン実行装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、プラン実行装置であって、一連の処理であるプランを実行する実行手段と、前記実行手段が実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段と、前記実行手段が実行している実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段と、前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、前記割込指示受付手段が所定の割込プランの前記割込指示を受け付けた場合に、前記割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定手段と、前記処理状態保持手段が保持している前記処理状態と、前記実行中プランの前記実行情報と、前記割込情報特定手段が特定した前記割込情報とに基づいて、前記割込プランを実行するか否かを判断する割込可否判断手段とを備えたことを特徴とする。
【０００９】
また、本発明の他の形態は、プラン実行装置であって、一連の処理であるプランを実行する実行手段と、前記実行手段が実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段と、前記実行手段が実行している実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段と、前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、前記割込指示受付手段が前記割込指示を受け付けた場合に、前記処理状態保持手段が保持している前記処理状態と、前記実行情報保持手段が保持している前記実行情報とに基づいて、前記割込プランを作成する割込プラン作成手段と、割込プラン作成手段が作成した前記割込プランの割り込みを行う割込制御手段とを備えたことを特徴とする。
【００１０】
また、本発明の他の形態は、プラン実行方法であって、一連の処理であるプランを実行する実行ステップと、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定ステップと、前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段に保持されている前記実行情報と、前記割込情報特定ステップにおいて特定した前記割込情報とに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップとを有することを特徴とする。
【００１１】
また、本発明の他の形態は、プラン実行方法であって、一連の処理であるプランを実行する実行ステップと、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段が保持している前記実行情報とに基づいて、割込プランを作成する割込プラン作成ステップと、前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップとを有することを特徴とする。
【００１２】
また、本発明の他の形態は、プラン実行処理をコンピュータに実行させるプラン実行プログラムであって、一連の処理であるプランを実行する実行ステップと、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記割込プランのプラン実行に関する情報である割込情報を特定する割込情報特定ステップと、前記実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段に保持されている前記実行情報と、前記割込情報特定ステップにおいて特定した前記割込情報とに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップとを有することを特徴とする。
【００１３】
また、本発明の他の形態は、プラン実行処理をコンピュータに実行させるプラン実行プログラムであって、一連の処理であるプランを実行する実行ステップと、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行ステップにおいて実行しているプランである実行中プランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している前記処理状態と、前記実行ステップにおいて実行しているプランの実行に関する情報である実行情報を保持する実行情報保持手段が保持している前記実行情報とに基づいて、割込プランを作成する割込プラン作成ステップと、前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップとを有することを特徴とする。
【発明の効果】
【００１４】
本発明にかかるプラン実行装置によれば、実行手段が、一連の処理であるプランを実行し、処理状態保持手段が、実行手段が実行しているプランの処理対象となる対象オブジェクトの処理状態を保持し、実行情報保持手段が、実行手段が実行しているプランである実行中プランの実行に関する情報である実行情報を保持し、割込指示受付手段が、実行手段がプランを実行しているときに割込指示を受け付け、割込情報特定手段が、割込指示受付手段が所定の割込プランの割込指示を受け付けた場合に、割込プランのプラン実行に関する情報である割込情報を特定し、割込可否判断手段が、処理状態保持手段が保持している処理状態と、実行中プランの実行情報と、割込情報特定手段が特定した割込情報とに基づいて、割込プランを実行するか否かを判断するので、処理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
【００１５】
本発明の他の形態にかかるプラン実行装置によれば、実行手段が、一連の処理であるプランを実行し、処理状態保持手段が、実行手段が実行しているプランの処理対象となる対象オブジェクトの処理状態を保持し、実行情報保持手段が、実行手段が実行しているプランである実行中プランの実行に関する情報である実行情報を保持し、割込指示受付手段が、実行手段がプランを実行しているときに割込指示を受け付け、割込プラン作成手段が、割込指示受付手段が割込指示を受け付けた場合に、処理状態保持手段が保持している処理状態と、実行情報保持手段が保持している実行情報とに基づいて割込プランを作成し、割込制御手段が、割込プラン作成手段が作成した割込プランの割り込みを行うので、処理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
【００１６】
本発明の他の形態にかかるプラン実行方法によれば、実行ステップにおいて、一連の処理であるプランを実行し、割込指示受付ステップにおいて、実行ステップにおいてプランを実行しているときに、割込指示を受け付け、割込情報特定ステップにおいて、割込指示受付ステップにおいて所定の割込プランの割込指示を受け付けた場合に、割込プランのプラン実行に関する情報である割込情報を特定し、割込可否判断ステップにおいて、実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している処理状態と、実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段に保持されている実行情報と、割込情報特定ステップにおいて特定した割込情報とに基づいて、割込プランを実行するか否かを判断するので、処理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
【００１７】
本発明の他の形態にかかるプラン実行方法によれば、実行ステップにおいて、一連の処理であるプランを実行し、割込指示受付ステップにおいて、実行ステップにおいてプランを実行しているときに、割込指示を受け付け、割込プラン作成ステップにおいて、割込指示受付ステップにおいて割込指示を受け付けた場合に、実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している処理状態と、実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段が保持している実行情報とに基づいて割込プランを作成し、割込制御ステップにおいて、割込プラン作成ステップにおいて作成した割込プランの割り込みを行うので、処理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
【００１８】
本発明の他の形態にかかるプラン実行プログラムによれば、実行ステップにおいて、一連の処理であるプランを実行し、割込指示受付ステップにおいて、実行ステップにおいてプランを実行しているときに、割込指示を受け付け、割込情報特定ステップにおいて、割込指示受付ステップにおいて所定の割込プランの割込指示を受け付けた場合に、割込プランのプラン実行に関する情報である割込情報を特定し、割込可否判断ステップにおいて、実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している処理状態と、実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段に保持されている実行情報と、割込情報特定ステップにおいて特定した割込情報とに基づいて、割込プランを実行するか否かを判断するので、処理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
【００１９】
本発明の他の形態にかかるプラン実行プログラムによれば、実行ステップにおいて、一連の処理であるプランを実行し、割込指示受付ステップにおいて、実行ステップにおいてプランを実行しているときに、割込指示を受け付け、割込プラン作成ステップにおいて、割込指示受付ステップにおいて割込指示を受け付けた場合に、実行ステップにおいて実行しているプランの処理対象となる対象オブジェクトの処理状態を保持する処理状態保持手段が保持している処理状態と、実行ステップにおいて実行しているプランである実行中プランの実行に関する情報である実行情報を保持する実行情報保持手段が保持している実行情報とに基づいて割込プランを作成し、割込制御ステップにおいて、割込プラン作成ステップにおいて作成した割込プランの割り込みを行うので、処理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明にかかるプラン実行装置、プラン実行方法およびプラン実行プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００２１】
図１は、本実施の形態にかかるプラン作成装置を備えた移動ロボット１０の機能構成を示す図である。
【００２２】
移動ロボット１０は、ゴール受付部１００と、ゴール保持部１１０と、実行管理部１２０と、信念ＤＢ１３０と、プラン作成用知識ＤＢ１４０と、プラン作成部１５０と、プランＤＢ制御部１６０と、アクション実行部１７０とを備えている。
【００２３】
ゴール受付部１００は、ゴールを取得する。ゴール受付部１００はさらに、ゴールを通常ゴールとするか割込ゴールとするかの指定を受け付ける。
【００２４】
ここでゴールとは、実行完了したいタスクまたは達成したい状態のことである。なお、他の例としては、達成したい目標状態であってもよい。また、割込ゴールとは、割り込みにより達成されるゴールであり、通常ゴールとは、割込ゴール以外のゴール、すなわちゴールの取得順に処理されるべきゴールである。
【００２５】
実施の形態にかかるゴール受付部１００は、特許請求の範囲に記載の割込指示受付手段に対応する。
【００２６】
ゴール保持部１１０は、割込ゴール待ち行列１１２と、通常ゴール待ち行列１１４とを有している。割込ゴール待ち行列１１２は、ゴール受付部１００が取得した割込ゴールを取得順に保持している。通常ゴール待ち行列１１４は、ゴール受付部１００が取得した通常ゴールを取得順に保持している。
【００２７】
実行管理部１２０は、ゴール保持部１１０、信念ＤＢ１３０、プラン作成部１５０、プランＤＢ制御部１６０およびアクション実行部１７０を管理する。なお、本実施の形態にかかる実行管理部１２０は、特許請求の範囲に記載の割込情報特定手段、割込可否判断手段および割込制御手段に対応する。
【００２８】
信念ＤＢ１３０は、信念情報を格納している。ここで、信念情報とは、処理の対象となる移動ロボット１０の状態に関する情報や、処理の前提となる状況など動的に更新される情報である。ロボット１０の状態に関する情報としては、例えば、ロボットが階段にいる場合には、ロボットの存在位置が階段であることを示す情報である。この情報により、階段以外の場所で実行されるべきタスクは、実行できないことがわかる。
【００２９】
また、処理の前提となる状況としては、例えば、現在時刻、現在日時などがある。例えば、「おはようございます」と音声出力するというタスクは、午前中以外の時間帯には適さない。現在時刻を示す信念に基づけば、「おはようございます」と音声出力するというタスクを実行するか否かを判断することができる。
【００３０】
信念ＤＢ１３０はさらに、移動ロボット１０の移動対象とする領域のトポロジカル地図を格納している。
【００３１】
本実施の形態にかかる信念情報は、特許請求の範囲に記載の対象オブジェクトの処理状態に対応する。また、本実施の形態にかかる信念ＤＢ１３０は、特許請求の範囲に記載の処理状態保持手段に対応する。
【００３２】
プラン作成部１５０は、割込ゴール待ち行列１１２または通常ゴール待ち行列１１４の先頭のゴールに対応するプランを作成する。ここで、プランとは、ゴールを実行または達成するための一連の処理である。プランは、複数のアクションを有している。ここで、アクションとは、プランを実行するときの最小単位である。
【００３３】
ここで、図２を参照しつつ、プランおよびアクションについて詳述する。図２は、プランとアクションの関係を示す図である。プランは、タスクの実行順序を表すものである。例えば、全順序プラン「Ｔａｓｋ１，Ｔａｓｋ２，Ｔａｓｋ３」は、図２に示すように、まず「Ｔａｓｋ１」というタスクを実行し、次に「Ｔａｓｋ２」というタスクを実行し、最後に「Ｔａｓｋ３」というタスクを実行することを表す。本実施の形態においては、アクション実行部１７０が実行可能なタスクをアクションと称する。また、本実施の形態においては、全順序プランのことをプランと称する。
【００３４】
プランには、具体的プランと抽象的プランがある。ここで、具体的プランとは、アクションの実行順序のみを表すプランのことである。抽象的プランとは、具体的なプランでないプランのことである。本実施の形態にかかる移動ロボット１０が対象とするのは具体的プランである。
【００３５】
プラン作成用知識ＤＢ１４０は、プラン作成部１５０がプランを作成するときに参照すべき情報であるプラン作成用知識を格納している。具体的には、プランに含めるべきアクションを格納している。さらに、各アクションに対応付けて、実行前条件および実行効果を格納している。実行前条件および実行効果については後述する。
【００３６】
本実施の形態にかかるプラン作成用知識ＤＢ１４０は、特許請求の範囲に記載の実行情報保持手段に対応する。
【００３７】
プランＤＢ制御部１６０は、割込プランＤＢ１６２、実行中プランＤＢ１６４および中断中プランＤＢ１６６を制御する。割込プランＤＢ１６２は、プラン作成用知識ＤＢ１４０が取得したプランを格納する。実行中プランＤＢ１６４は、実行対象のプランを格納する。中断中プランＤＢ１６６は、中断中のプランを格納する。
【００３８】
アクション実行部１７０は、実行中プランＤＢ１６４に格納されているプランを実行する。すなわちプランに含まれるアクションの順番にしたがって、複数のアクションを順に実行する。アクション実行部１７０は、アクションの実行が完了すると、信念ＤＢ１３０の情報を、アクション実行後の状態に更新する。
【００３９】
図３は、信念ＤＢ１３０に格納されているトポロジカル地図を模式的に示す図である。図３に示すように地図上のノード（ｎｏｄｅ１〜ｎｏｄｅ６）が信念情報として格納されている。また、ｎｏｄｅ２には、展示物ｅｘｈｉｂｉｔｉｏｎ１が展示されている。ｎｏｄｅ３には、展示物ｅｘｈｉｂｉｔｉｏｎ２が展示されている。ｎｏｄｅ５には、トイレが設置されている。これらの内容も信念情報として格納されている。
【００４０】
また、展示物の位置に移動した場合には、移動ロボットは、展示されている展示物の説明を行う。この内容に対応する情報も信念情報として信念ＤＢ１３０に格納されている。
【００４１】
地図上の点（ノード）：ｎｏｄｅ１，ｎｏｄｅ２，ｎｏｄｅ３，ｎｏｄｅ４，ｎｏｄｅ５，ｎｏｄｅ６の相対座標は、それぞれ、（０，２０），（１０，２０），（０，１０），（１０，１０），（０，０），（１０，０）である。
【００４２】
この信念情報は、具体的には以下の記述として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ｃｏｏｒｄｉｎａｔｅ（ｎｏｄｅ１，０，２０））．
ｂｅｌｉｅｆ（ｃｏｏｒｄｉｎａｔｅ（ｎｏｄｅ２，１０，２０））．
ｂｅｌｉｅｆ（ｃｏｏｒｄｉｎａｔｅ（ｎｏｄｅ３，０，１０））．
ｂｅｌｉｅｆ（ｃｏｏｒｄｉｎａｔｅ（ｎｏｄｅ４，１０，１０））．
ｂｅｌｉｅｆ（ｃｏｏｒｄｉｎａｔｅ（ｎｏｄｅ５，０，０））．
ｂｅｌｉｅｆ（ｃｏｏｒｄｉｎａｔｅ（ｎｏｄｅ６，１０，０））．
【００４３】
また、ｎｏｄｅ２に展示物ｅｘｈｉｂｉｔｉｏｎ１が展示されている。ｎｏｄｅ３には展示物ｅｘｈｉｂｉｔｉｏｎ２が展示されている。また、ｎｏｄｅ５にトイレが設けられている。この信念情報は、具体的には以下の知識として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ｌｏｃａｔｉｏｎ（ｅｘｈｉｂｉｔｉｏｎ１，ｎｏｄｅ２））．
ｂｅｌｉｅｆ（ｌｏｃａｔｉｏｎ（ｅｘｈｉｂｉｔｉｏｎ２，ｎｏｄｅ３））．
ｂｅｌｉｅｆ（ｌｏｃａｔｉｏｎ（ｔｏｉｌｅｔ，ｎｏｄｅ５））．
【００４４】
また、展示物ｅｘｈｉｂｉｔｉｏｎ１およびｅｘｈｉｂｉｔｉｏｎ２に関する説明はそれぞれ「これは世界初の日本語ワープロです。」および「これは駒をまわすロボットです。」である。この信念情報は、具体的には以下の知識として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ｃｏｎｔｅｎｔｓ（ｅｘｈｉｂｉｔｉｏｎ１，‘ これは世界初の日本語ワープロです。'））．
ｂｅｌｉｅｆ（ｃｏｎｔｅｎｔｓ（ｅｘｈｉｂｉｔｉｏｎ２，‘これは駒をまわすロボットです。'））．
【００４５】
また、トイレにおいては、「ここはトイレです。」という説明がされる。この信念情報は、具体的には以下の知識として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ｃｏｎｔｅｎｔｓ（ｔｏｉｌｅｔ，‘ ここはトイレです。'））．
【００４６】
ｎｏｄｅ１からｎｏｄｅ２は移動可能であり、かつ、ｎｏｄｅ２からｎｏｄｅ１へも移動可能である。この信念情報は、具体的には以下の知識として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ１，ｎｏｄｅ２））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ２，ｎｏｄｅ１））．
【００４７】
同様にノード間の接続関係は、以下の知識として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ１，ｎｏｄｅ３））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ３，ｎｏｄｅ１））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ２，ｎｏｄｅ４））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ４，ｎｏｄｅ２））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ３，ｎｏｄｅ４））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ４，ｎｏｄｅ３））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ３，ｎｏｄｅ５））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ５，ｎｏｄｅ３））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ４，ｎｏｄｅ６））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ６，ｎｏｄｅ４））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ５，ｎｏｄｅ６））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ６，ｎｏｄｅ５））．
【００４８】
初期状態でのロボットの位置はｎｏｄｅ６であるとする。この信念情報は、具体的には以下の知識として信念ＤＢ１３０に格納されている。
ｂｅｌｉｅｆ（ａｔ（ｎｏｄｅ６））．
【００４９】
ここで、「ａｔ（ｎｏｄｅ６）」は、ｎｏｄｅ６からロボットが移動してしまうと成り立たなくなる。すなわち「ａｔ（＿）」の真偽値は動的に変化する。ここで、「＿」は、無名変数であり、いずれの値が代入されてもよいことを示している。
【００５０】
このように、真偽値が動的に変化することをあわせて、具体的には、以下の知識が信念ＤＢ１３０に格納されている。
ｄｙ（ａｔ（_））．
【００５１】
現在、午前中の昼間あることは、信念ＤＢ１３０には、以下の知識として格納されている。
ｂｅｌｉｅｆ（ｎｏｗ（ｍｏｒｎｉｎｇ））．
【００５２】
ここで、「ｎｏｗ（ｍｏｒｎｉｎｇ）」は、午後になると（外部モジュールから）消される。したがって、この条件は、成立しなくなる。すなわち、「ｎｏｗ（_）」の真偽値は動的に変化する。そこで、真偽値が動的に変化することをあわせて、具体的には、以下の知識が信念ＤＢ１３０に格納されている。
ｄｙ（ｎｏｗ（_））．
【００５３】
図４は、プラン作成用知識ＤＢ１４０が格納しているプラン作成用知識を模式的に示す図である。プラン作成用知識は、具体的には、プランに含めるべきアクションである。さらに、各アクションには、実行前条件と実行効果とが割り当てられている。ここで、実行前条件とは、各アクションを実行する直前に成立している必要のある条件のことである。また、実行効果とは、アクション実行直後から継続的に成立する状態や性質等である。同じアクションでも、そのアクションを含むプランが異なるために、実行前条件が異なる場合がある。そこで、本実施の形態においては、プランに含まれる各アクションの実行前条件と実行効果を明示的にプラン内部に記録する。
【００５４】
図４に示すアクション「ＡからＢに移動」に対しては、実行前条件として「現在位置はＡ」が記録されている。また、実行効果として「現在位置はＡでなくなる」、「実行位置はＢになる」が記録されている。
【００５５】
また、アクション「ＢからＣに移動」に対しては、実行前条件として「現在位置はＢ」が記録されている。また、実行効果として「現在位置はＢでなくなる」、「実行位置はＣになる」が記録されている。
【００５６】
以上の内容は、具体的には、以下の記述としてプラン作成用知識ＤＢ１４０に記録される。
[ｐｒｅｃｏｎｄ（[ａｔ（ａ）]），
ｍｏｖｅ（ａ， ｂ），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ａ））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｂ））]）
ｐｒｅｃｏｎｄ（[ａｔ（ｂ）]），
ｍｏｖｅ（ｂ， ｃ），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｂ））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｃ））]）]
ここで、「ｍｏｖｅ（ａ， ｂ）」は、ａ地点からｂ地点まで移動するアクションを表している。「ｐｒｅｃｏｎｄ（[ａｔ（ａ）]）」は、アクション「ｍｏｖｅ（ａ， ｂ）」の実行前条件を示している。ここで、「ａｔ（ａ）」は、ａ地点にいることを表している。
【００５７】
また、「ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ａ））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｂ））]）」は、アクション「ｍｏｖｅ（ａ， ｂ）」に対する実行効果を表している。「ｔｅｒｍｉｎａｔｅｓ（ａｔ（ａ））」は、現在位置がａ地点でなくなることを表している。また、「ｉｎｉｔｉａｔｅｓ（ａｔ（ｂ））」は、現在位置がｂ地点になることを表している。
【００５８】
同様に、「ｍｏｖｅ（ｂ， ｃ）」は、ｂ地点からｃ地点まで移動するアクションを表している。「ｐｒｅｃｏｎｄ（[ａｔ（ｂ）]）」は、アクション「ｍｏｖｅ（ｂ， ｃ）」の実行前条件を表している。また、「ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｂ））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｃ））]）」は、実行効果を表している。
【００５９】
例えば、テキストを読むというアクションには、実行前条件および実行効果は存在しない。このように、実行前条件および実行効果が存在しない場合には、以下の記述がプラン作成用知識ＤＢ１４０に格納される。
ａｃｔｉｏｎ（ｓｐｅａｋ（Ｔｅｘｔ），[
]，[
]）．
なお、この記述は、読むという動作の対象を「テキスト」とした場合のアクションを表すが、「ｓｐｅａｋ（Ｔｅｘｔ）」の「Ｔｅｘｔ」は、変数であり任意の文字列を代入することにより、この文字列を読む動作となる。
【００６０】
また、現在のノードから他のノードを経由することなく、直接移動可能なノードに移動するというアクションは、以下のように記述される。
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），[
ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ），
ｃｏｎｎｅｃｔｓ（ＣｕｒｒｅｎｔＮｏｄｅ，ＮｅｘｔＮｏｄｅ）
]，[
ｔｅｒｍｉｎａｔｅｓ（ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ）），
ｉｎｉｔｉａｔｅｓ（ａｔ（ＮｅｘｔＮｏｄｅ））
]）．
ここで、「ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ）」は、アクションを表している。また、「ＣｕｒｒｅｎｔＮｏｄｅ」は、現在いるノードを表している。ここで、ＣｕｒｒｅｎｔＮｏｄｅは変数である。ＮｅｘｔＮｏｄｅは、移動先のノードを表している。ここで、ＮｅｘｔＮｏｄｅは、変数である。
【００６１】
「ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ）」は実行前条件である。現在のノードが、ＣｕｒｒｅｎｔＮｏｄｅであることを表している。また、「ｃｏｎｎｅｃｔｓ（ＣｕｒｒｅｎｔＮｏｄｅ，ＮｅｘｔＮｏｄｅ）」も実行前条件である。ＣｕｒｒｅｎｔＮｏｄｅからＮｅｘｔＮｏｄｅへ直接移動可能であることを表している。このアクションの効果「ｔｅｒｍｉｎａｔｅｓ（ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ）），ｉｎｉｔｉａｔｅｓ（ａｔ（ＮｅｘｔＮｏｄｅ））」は、現在位置がＣｕｒｒｅｎｔＮｏｄｅからＮｅｘｔＮｏｄｅに変化することを表している。
【００６２】
プラン作成用知識ＤＢ１４０は、またアクションでないタスクを分解する方法をプラン作成用知識として格納している。例えば、ゴール受付部１００が、ゴールとして、「ｓｈｏｗ（Ｏｂｊｅｃｔ）」（対象物：Ｏｂｊｅｃｔがある位置まで移動して、対象物の説明をする）というタスクを受け付けたとする。しかし、このタスクはアクション実行部１７０が実行可能な単位のタスクではない、すなわちアクションではないので、これをアクションに分解する必要がある。プラン作成用知識ＤＢ１４０は、このための情報を格納している。
【００６３】
タスク「ｓｈｏｗ（Ｏｂｊｅｃｔ）」の実行前条件は、「ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ）」である。この実行前条件が成立する場合、このタスクを実行するためには、まず、ノード（Ｎｏｄｅ）への移動を実行し、その後、対象物（Ｏｂｊｅｃｔ）に関する説明を実行すればよい。したがって、タスク「ｓｈｏｗ（Ｏｂｊｅｃｔ）」は、「ｇｏｔｏ（Ｎｏｄｅ）」というタスクと、「ｅｘｐｌａｉｎ（Ｏｂｊｅｃｔ）」というタスクに分解される。具体的には、タスク「ｓｈｏｗ（Ｏｂｊｅｃｔ）」は、以下の記述で表されるタスクに分解される。
ｈｔｎ（ｓｈｏｗ（Ｏｂｊｅｃｔ），[
ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ）
]，[
ｇｏｔｏ（Ｎｏｄｅ），
ｅｘｐｌａｉｎ（Ｏｂｊｅｃｔ）
]）．
【００６４】
また、「ｔｅｌｌＬｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ）」（対象物：Ｏｂｊｅｃｔがあるノードを口頭で教える。）というタスクを実行するためには、Ｏｂｊｅｃｔ＋'は' ＋Ｎｏｄｅ＋'にあります'という文字列の音声出力を実行すればよい。すなわち、タスクは、実行前条件「ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ）」（ＯｂｊｅｃｔのあるノードはＮｏｄｅである。）が成立すればよい。
【００６５】
以上より、タスク「ｔｅｌｌＬｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ）」は、タスク「ｓｐｅａｋ（Ｏｂｊｅｃｔ+'は'+Ｎｏｄｅ+'にあります'）」を含む以下の記述で表されるタスクに分解される。なお、ここで、ＯｂｊｅｃｔとＮｏｄｅは変数である。
ｈｔｎ（ｔｅｌｌＬｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ），[
ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ）
]，[
ｓｐｅａｋ（Ｏｂｊｅｃｔ+'は'+Ｎｏｄｅ+'にあります'）
]）．
【００６６】
また、「ｓａｙＨｅｌｌｏ」（あいさつする。）というタスクに対しては、昼間の午前である場合には、'おはよう'という文字列の音声出力が実行さればよい。したがって、実行前条件「ｎｏｗ（ｍｏｒｎｉｎｇ）」（今は昼間の午前である。）が付与される。以上より、タスク「ｓａｙＨｅｌｌｏ」（あいさつする。）は、タスク「ｓｐｅａｋ（'おはよう'）」を含む以下の記述のタスクに分解される。
ｈｔｎ（ｓａｙＨｅｌｌｏ，[
ｎｏｗ（ｍｏｒｎｉｎｇ）
]，[
ｓｐｅａｋ（'おはよう'）
]）．
【００６７】
同様に、「ｓａｙＨｅｌｌｏ」（あいさつする。）というタスクであっても、昼間の午後である場合には、‘こんにちは'という文字列の音声出力が実行されればよい。したがって、タスクの実行前条件「ｎｏｗ（ａｆｔｅｒｎｏｏｎ）」（今は昼間の午後である。）が付与される。以上より、タスク「ｓａｙＨｅｌｌｏ」（あいさつする。）は、タスク「ｓｐｅａｋ（'こんにちは'）」を含む以下の記述のタスクに分解される。
ｈｔｎ（ｓａｙＨｅｌｌｏ，[
ｎｏｗ（ａｆｔｅｒｎｏｏｎ）
]，[
ｓｐｅａｋ（'こんにちは'）
]）．
【００６８】
同様に、「ｓａｙＨｅｌｌｏ」（あいさつする。）というタスクであっても、夜間である場合には、‘こんばんは'という文字列の音声出力が実行されればよい。したがって、タスクの実行前条件「ｎｏｗ（ｎｉｇｈｔ）」（今は夜間である。）が付与される。以上よりタスク「ｓａｙＨｅｌｌｏ」（あいさつする。）は、タスク「ｓｐｅａｋ（'こんばんは'）」を含む以下の記述のタスクに分解される。
ｈｔｎ（ｓａｙＨｅｌｌｏ，[
ｎｏｗ（ｎｉｇｈｔ）
]，[
ｓｐｅａｋ（'こんばんは'）
]）．
【００６９】
また、「ｅｘｐｌａｉｎ（Ｏｂｊｅｃｔ）」（対象物：Ｏｂｊｅｃｔに関する説明をする）というタスクに対しては、現在位置がノード：Ｎｏｄｅであること、対象物：Ｏｂｊｅｃｔの位置がノード「Ｎｏｄｅ」であること、および対象物：Ｏｂｊｅｃｔの説明文がＴｅｘｔであることを前提として、説明文「Ｔｅｘｔ」を読む。というアクションを実行すればよい。
【００７０】
すなわち、３つの実行前条件「ａｔ（Ｎｏｄｅ）」（現在位置がノード：Ｎｏｄｅである。）、「ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ）」（対象物：Ｏｂｊｅｃｔの位置がノード：Ｎｏｄｅである。）および「ｃｏｎｔｅｎｔｓ（Ｏｂｊｅｃｔ，Ｔｅｘｔ）」（対象物：Ｏｂｊｅｃｔの説明文がＴｅｘｔ）が成立する場合に、「ｓｐｅａｋ（Ｔｅｘｔ）」（説明文（Ｔｅｘｔ）を読む。）を実行すればよい。したがって、以下の記述のタスクに分解される。
ｈｔｎ（ｅｘｐｌａｉｎ（Ｏｂｊｅｃｔ），[
ａｔ（Ｎｏｄｅ），
ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ），
ｃｏｎｔｅｎｔｓ（Ｏｂｊｅｃｔ，Ｔｅｘｔ）
]，[
ｓｐｅａｋ（Ｔｅｘｔ）
]）．
【００７１】
また、タスク「ｇｏｔｏ（Ｎｏｄｅ）」（ノード（Ｎｏｄｅ）に移動する。）は、実行前条件「ａｔ（Ｎｏｄｅ）」（現在位置がノード：Ｎｏｄｅである）が成立する場合には、アクションの実行は不要である。したがって、以下の記述のタスクに分解される。なお、ここで、Ｎｏｄｅは、変数である。また、実行すべきタスクがない場合、[]と表す。
ｈｔｎ（ｇｏｔｏ（Ｎｏｄｅ），[
ａｔ（Ｎｏｄｅ）
]，[
]）．
【００７２】
また、タスク「ｇｏｔｏ（Ｎｏｄｅ）」（ノード：Ｎｏｄｅに移動する）を実行するためには、まず、タスク「ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ）」（隣のノード：ＮｅｘｔＮｏｄｅに移動する）を実行し、次に、タスク「ｇｏｔｏ（Ｎｏｄｅ）」（ノード：Ｎｏｄｅに移動する）を実行すればよい。したがって、以下の記述のタスクに分解される。ここで、ＮｏｄｅとＮｅｘｔＮｏｄｅは変数である。
ｈｔｎ（ｇｏｔｏ（Ｎｏｄｅ），[
]，[
ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），
ｇｏｔｏ（Ｎｏｄｅ）
]）．
【００７３】
次に、プラン作成部１５０がプランを作成する処理について詳述する。通常ゴールとして、「ｓｈｏｗ（ｅｘｈｉｂｉｔｉｏｎ１）」（対象物：ｅｘｈｉｂｉｔｉｏｎ１のあるノードまで行って、ｅｘｈｉｂｉｔｉｏｎ１の説明をする）というタスクを受け取り、このプランを作成する場合、プラン作成部１５０は、以下のプラン作成用知識：
ｈｔｎ（ｓｈｏｗ（Ｏｂｊｅｃｔ），[
ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ）
]，[
ｇｏｔｏ（Ｎｏｄｅ），
ｅｘｐｌａｉｎ（Ｏｂｊｅｃｔ）
]）．
と、以下の信念：
ｂｅｌｉｅｆ（ｌｏｃａｔｉｏｎ（ｅｘｈｉｂｉｔｉｏｎ１，ｎｏｄｅ２））．
に基づいて、タスク「ｓｈｏｗ（ｅｘｈｉｂｉｔｉｏｎ１）」から以下のプランを作成する。
[ｇｏｔｏ（ｎｏｄｅ２）， ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）]
【００７４】
次に、このプランの「ｇｏｔｏ（ｎｏｄｅ２）」を以下のプラン作成用知識：
ｈｔｎ（ｇｏｔｏ（Ｎｏｄｅ），[
]，[
ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），
ｇｏｔｏ（Ｎｏｄｅ）
]）．
を使って分解し、以下のプランを得る。
[ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ）， ｇｏｔｏ（ｎｏｄｅ２）， ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）]
ここで、ＮｅｘｔＮｏｄｅは代入されていない変数である。
【００７５】
ここで、以下のプラン作成用知識：
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），[
ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ），
ｃｏｎｎｅｃｔｓ（ＣｕｒｒｅｎｔＮｏｄｅ，ＮｅｘｔＮｏｄｅ）
]，[
ｔｅｒｍｉｎａｔｅｓ（ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ）），
ｉｎｉｔｉａｔｅｓ（ａｔ（ＮｅｘｔＮｏｄｅ））
]）．
と、以下の２つの信念：
ｂｅｌｉｅｆ（ａｔ（ｎｏｄｅ６））．
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ６，ｎｏｄｅ４））．
から、アクション：ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ）の実行前条件は満たされる。
【００７６】
また、その実行効果：
ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））．
ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））．
より、現在位置は、ｎｏｄｅ６でなくなる。さらに、現在位置は、ｎｏｄｅ４になる。
【００７７】
また、信念ＤＢ１３０に、以下の情報が格納されている。
ｄｙ（ａｔ（_））．
【００７８】
したがって、実行前条件「ａｔ（ｎｏｄｅ６）」は、現在は成立するが、その真偽値は、将来、変化する可能性があることがわかる。したがって、この成立の真偽は、今後もチェックする必要がある。
【００７９】
そこで、プラン作成部１５０は、変数：ＮｅｘｔＮｏｄｅにｎｏｄｅ４を代入して、プランにこれらの情報を不可する。具体的には、「ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４））」という記述を付加する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｇｏｔｏ（ｎｏｄｅ２），
ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）]
なお、「ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４））」は、アクション「ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）」に、実行前条件（将来真偽値が変化する可能性あり）と実行効果に関する情報を既に付加したことを表している。
【００８０】
また、ノード「ｎｏｄｅ６」に繋がっているノードは複数個ある。このため、アクション「ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ）」の分解方法は複数存在する。本実施の形態においては、このうち、最終目的地であるノード「ｎｏｄｅ２」に最も近いノード「ｎｏｄｅ４」を選択して、ＮｅｘｔＮｏｄｅに代入することとした。
【００８１】
次に、以下のプラン作成用知識：
ｈｔｎ（ｇｏｔｏ（ＧｏａｌＮｏｄｅ），[
]，[
ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），
ｇｏｔｏ（Ｎｏｄｅ）
]）．
から、プラン作成部１５０は、タスク「ｇｏｔｏ（ｎｏｄｅ２）」を分解して、以下のようにプランを更に詳細化する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），
ｇｏｔｏ（ｎｏｄｅ２），
ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）]
ここで、以下のプラン作成用知識：
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ），[
ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ），
ｃｏｎｎｅｃｔｓ（ＣｕｒｒｅｎｔＮｏｄｅ，ＮｅｘｔＮｏｄｅ）
]，[
ｔｅｒｍｉｎａｔｅｓ（ａｔ（ＣｕｒｒｅｎｔＮｏｄｅ）），
ｉｎｉｔｉａｔｅｓ（ａｔ（ＮｅｘｔＮｏｄｅ））
]）．
と、以下の信念：
ｂｅｌｉｅｆ（ｃｏｎｎｅｃｔｓ（ｎｏｄｅ４，ｎｏｄｅ２））．
ｄｙ（ａｔ（_））．
と、プランに付加されている情報：
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]）
に記されているアクションの実行効果「ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））」から、プランにアクション「ｇｏｔｏＮｅｘｔＮｏｄｅ（ＮｅｘｔＮｏｄｅ）」の実行前条件と実行効果を以下のように追加する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｇｏｔｏ（ｎｏｄｅ２），
ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）]
【００８２】
以下のプラン作成用情報：
ｈｔｎ（ｇｏｔｏ（Ｎｏｄｅ），[
ａｔ（Ｎｏｄｅ）
]，[
]）．
と、以下の信念：
ｄｙ（ａｔ（_））．
と、プランに付加されている情報：
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]）
に記されているアクションの実行効果「ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））」から、タスク「ｇｏｔｏ（ｎｏｄｅ２）」を実行するために、何もアクションを実行しなくてもよいことがわかる。
【００８３】
そこで、プラン作成部１５０は、以下のようにプラン内のタスク「ｇｏｔｏ（ｎｏｄｅ２）」を分解し、動的に変化する実行前条件「ａｔ（ｎｏｄｅ２）」を付加する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）]
ここで、以下のプラン作成用情報：
ｈｔｎ（ｅｘｐｌａｉｎ（Ｏｂｊｅｃｔ），[
ａｔ（Ｎｏｄｅ），
ｌｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ，Ｎｏｄｅ），
ｃｏｎｔｅｎｔｓ（Ｏｂｊｅｃｔ，Ｔｅｘｔ）
]，[
ｓｐｅａｋ（Ｔｅｘｔ）
]）．
プランに付加されている情報：
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]）
に記されているアクションの効果：
ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））
と、以下の信念：
ｂｅｌｉｅｆ（ｌｏｃａｔｉｏｎ（ｅｘｈｉｂｉｔｉｏｎ１，ｎｏｄｅ２））．
ｂｅｌｉｅｆ（ｃｏｎｔｅｎｔｓ（ｅｘｈｉｂｉｔｉｏｎ１，' これは世界初の日本語ワープロです。'））．
から、プラン内のタスク：
ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）
は、以下のように置き換えることができる。
ｓｐｅａｋ（‘これは世界初の日本語ワープロです。'）
【００８４】
さらに、以下の信念：
ｄｙ（ａｔ（_））．
から、タスク：
ｅｘｐｌａｉｎ（ｅｘｈｉｂｉｔｉｏｎ１）
の実行前条件「ａｔ（ｎｏｄｅ２）」は動的に変化することがわかる。
【００８５】
そこで、プラン作成部１５０は、下のようにプランを詳細化する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ｓｐｅａｋ（‘これは世界初の日本語ワープロです。'）]
なお、実行前条件「ａｔ（ｎｏｄｅ２）」は、既に分解前のプランに記録されているため、２重には記録しないこととしたが、記録することとしてもよい。
【００８６】
さらに、以下のプラン作成用知識：
ａｃｔｉｏｎ（ｓｐｅａｋ（Ｔｅｘｔ），[
]，[
]）．
から、アクション：
ｓｐｅａｋ（' これは世界初の日本語ワープロです。'）
の実行前条件（なし）、実行効果（なし）をプランに付加する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ａｃｔｉｏｎ（ｓｐｅａｋ（‘これは世界初の日本語ワープロです。'）） ，
ｅｆｆｅｃｔ（[]）]
【００８７】
以上により、アクションでない抽象的タスクを含まないプランが完成する。完成したプランには、全てのアクションに関して、（動的に変化する）実行前条件と実行効果が付加されている。以上の処理により完成したプランは、プランＤＢ制御部１６０の割込プランＤＢ１６２に格納される。
【００８８】
図５は、完成したプランを模式的に示す図である。図５に示すように、完成したプランによれば、まず、ロボット初期位置であるｎｏｄｅ６からｎｏｄｅ４に移動し、続いて、ｎｏｄｅ４からｎｏｄｅ２に移動する。そして、ｎｏｄｅ２において展示物の説明をする。このように、プラン作成部１５０は与えられたゴールに基づいて、複数のアクションを有するプランを作成することができる。
【００８９】
図６は、実施の形態にかかる移動ロボット１０がプランを実行するときのプラン実行処理を示すフローチャートである。まず、ゴール受付部１００がゴールを取得する（ステップＳ１００）。次に、ゴール受付部１００は、取得したゴールの種類を判断する。具体的には、通常ゴールであるか割込ゴールであるかを判断する。
【００９０】
通常ゴールである場合には（ステップＳ１０２，通常ゴール）、取得した通常ゴールをゴール保持部１１０の通常ゴール待ち行列１１４の最後尾に挿入する（ステップＳ１０４）。一方、割込ゴールである場合には（ステップＳ１０２，割込ゴール）、取得した割込ゴールをゴール保持部１１０の割込ゴール待ち行列１１２の最後尾に挿入する（ステップＳ１０６）。
【００９１】
次に、実行管理部１２０は、ゴール保持部１１０の割込ゴール待ち行列１１２に割込ゴールが存在するか否かを確認する。割込ゴールが存在する場合には（ステップＳ１１０，Ｙｅｓ）、割込ゴール待ち行列１１２のうち、先頭の割込ゴールを取り出す（ステップＳ１１２）。一方、割込ゴールが存在しない場合には（ステップＳ１１０，Ｎｏ）、実行管理部１２０は、さらに通常ゴール待ち行列１１４に通常ゴールが存在するか否かを確認する。通常ゴールが存在する場合には（ステップＳ１２０，Ｙｅｓ）、実行管理部１２０は、さらに実行中プランＤＢ１６４にプランが存在するか否かを確認する。プランが存在しない場合には（ステップＳ１２２，Ｎｏ）、プラン作成部１５０は、通常ゴール待ち行列１１４からゴールを取り出す（ステップＳ１２４）。
【００９２】
次に、プラン作成部１５０は、通常ゴール待ち行列１１４から取り出したゴールに対応するプランを作成する（ステップＳ１３０）。次に、アクション実行部１７０は、プランＤＢ制御部１６０の制御により、実行中プランＤＢ１６４に格納されているプランをアクション単位で実行する（ステップＳ１４０）。ゴール保持部１１０にゴールが存在する場合には（ステップＳ１５０，Ｙｅｓ）、再びステップＳ１１０へ戻る。ゴール保持部１１０にゴールが存在しない場合には（ステップＳ１５０，Ｎｏ）、プラン実行処理を完了する。
【００９３】
一方、ステップＳ１２０において、通常ゴール待ち行列１１４に通常ゴールが存在しない場合には（ステップＳ１２０，Ｎｏ）、処理を終了する。また、ステップＳ１２２において、実行中プランＤＢ１６４にプランが存在する場合には（ステップＳ１２２，Ｙｅｓ）、処理を終了する。
【００９４】
図７は、図６において説明したプラン作成処理（ステップＳ１３０）における詳細な処理を示すフローチャートである。プラン作成部１５０は、プラン作成を行うタイミングにおいて、アクション実行部１７０がアクションを実行中である場合には、アクションが終了するまで待機する。
【００９５】
そして、アクションの実行が終了すると（ステップＳ２００，Ｙｅｓ）、ステップＳ１１２において割込ゴール待ち行列１１２から取り出した割込ゴール、またはステップＳ１２４において通常ゴール待ち行列１１４から取り出した通常ゴールに対するプランを作成する（ステップＳ２０２）。次に、作成したプランを割込プランＤＢ１６２に格納する（ステップＳ２０４）。
【００９６】
次に、プランＤＢ制御部１６０は、実行中プランＤＢ１６４にプランが存在するか否かを確認する。プランが存在する場合には（ステップＳ２０６，Ｙｅｓ）、割込プランＤＢ１６２に格納したプランのうち、実行中プランＤＢ１６４に格納されているプランに影響を与えるプランを削除する（ステップＳ２０８）。なお、この処理については後に詳述する。
【００９７】
次に、プランＤＢ制御部１６０は、割込プランＤＢ１６２に割込プランが存在するか否かを確認する。プランが存在する場合には（ステップＳ２１０，Ｙｅｓ）、実行中プランＤＢ１６４にあるプランを中断中プランＤＢ１６６に移動する（ステップＳ２２０）。すなわち、実行中のプランを一時退避させる。
【００９８】
次に、割込プランＤＢ１６２にあるプランを実行中プランＤＢ１６４に移動する（ステップＳ２２２）。なお、割込プランＤＢ１６２に複数のプランが格納されている場合には、いずれか１つのプランを選択し、選択したプランを実行中プランＤＢ１６４に移動する。なお、いずれを選択するかは任意である。
【００９９】
また、他の例としては、例えば、実行前条件および実行効果が変化するアクションを含まないプランを優先して選択することとしてもよい。
【０１００】
ステップＳ２２０において、割込プランＤＢ１６２に複数のプランが格納されていた場合には、ステップＳ２２０において選択したプラン以外のプランは実行中プランＤＢ１６４から削除する（ステップＳ２２４）。そして、ステップＳ１４０へ進む。
【０１０１】
一方、ステップＳ２１０において、割込プランＤＢ１６２にプランが存在しない場合には（ステップＳ２１０，Ｎｏ）、ゴール保持部１１０から取り出したゴールを再びゴール保持部１１０の元の待ち行列の元の位置に戻す（ステップＳ２２６）。そして、ステップＳ１４０へ進む。すなわち、作成した割込プランが実行中プランＤＢ１６４に格納されているプランに影響を与える場合には、このプランの実行は行わない。
【０１０２】
なお、他の例としては、割込プランＤＢ１６２にプランが存在しない場合には（ステップＳ２１０，Ｎｏ）、ゴール保持部１１０から取り出した割込ゴールを削除してもよい。このように、作成したプランが、実行中のプランに影響を与える場合には、ゴールを削除することにより、実行中のプランに影響を与えるプランを排除することとしてもよい。
【０１０３】
図８は、図７において説明したステップＳ２０８において、実行中のプランに影響を与えるプランを選択する影響プラン選択処理を示すフローチャートである。実行中プランＤＢ１６４に格納されているプラン（以下、第１プランと称する）「Ｐ１」に含まれるアクション「Ａ１ｘ」の実行前条件と、Ｐ２に含まれるアクション「Ａ２ｘ」の実行効果を比較する。そして、比較の結果に基づいて、第１の条件または第２の条件を満足する状態か否かを判断する。なお、第１の条件および第２の条件については後述する。
【０１０４】
なお、前提として、実行中プランＤＢ１６４に格納されているアクションの実行が完了すると、実行が完了したアクションは、実行中プランＤＢ１６４から削除される。
【０１０５】
第１の条件を満たす場合には（ステップＳ２８０，Ｙｅｓ）、第２アクションは、第１アクションの実行に影響を与えないと判断する（ステップＳ２８４）。また、第２の条件を満たす場合には（ステップＳ２８２，Ｙｅｓ）、同様に、第２アクションは、第１アクションの実行に影響を与えないと判断する（ステップＳ２８４）。これ以外の場合には（ステップＳ２８０，Ｎｏ、ステップＳ２８２，Ｎｏ）、第２アクションは、第１アクションの実行に影響を与えると判断する（ステップＳ２８６）。
【０１０６】
図９は、第１の条件を説明するための図である。ここで、第１プラン「Ｐ１」のアクション「Ａ１ｘ」の実行前条件を「Ｘ」とする。第１の条件は、２つある。まず１つめは、アクション「Ａ１ｘ」の実行前条件「Ｘ」を終了させるような実行効果「ｔｅｒｍｉｎａｔｅｓ（Ｘ）」を有するアクション「Ａ２ｘ」が存在することである。２つめは、このアクション「Ａ２ｘ」よりの後のアクション「Ａ２ｘ＋ｍ」が存在し、このアクション「Ａ２ｘ＋ｍ」が「Ｘ」を開始するような実行効果「ｉｎｉｔｉａｔｅｓ（Ｘ）」を有することである。
【０１０７】
このように、第２プラン「Ｐ２」中に「Ｘ」を終了させるような実行効果を有するアクションが存在する場合であっても、「Ｘ」を開始するような実行効果「ｉｎｉｔｉａｔｅｓ（X）」を有するアクションが存在する場合には、アクション「Ａ２ｘ」を実行する直前のタイミングにおいては、実行前条件「Ｘ」を満たす状態になっている。したがって、この場合には、新たに割込プランＤＢ１６２に格納された第２プラン「Ｐ２」は、実行中のプランである第１プラン「Ｐ１」に影響を与えないと判断する。
【０１０８】
図１０は、第２の条件を説明するための図である。第２の条件は２つある。まず２つめは、第１の条件と同様に、アクション「Ａ１ｘ」の実行前条件「Ｘ」を終了させるような実行効果「ｔｅｒｍｉｎａｔｅｓ（Ｘ）」を有するアクション「Ａ２ｘ」が存在することである。２つめは、第１プラン「Ｐ１」のアクション「Ａ１ｘ」より前に実行されるアクション「Ａ１ｘ−ｎ」が存在し、このアクション「Ａ１ｘ−ｎ」が「Ｘ」を開始するような実行効果「ｉｎｉｔｉａｔｅｓ（Ｘ）」を有することである。
【０１０９】
このように、第２プラン「Ｐ２」中に「Ｘ」を終了させるような実行効果を有するアクションが存在する場合であっても、「Ｘ」を開始するような実行効果「ｉｎｉｔｉａｔｅｓ（Ｘ）」を有するアクションが第１プラン「Ｐ１」中のアクション「Ａ１ｘ」よりも前に実行されるアクションとして存在する場合には、アクション「Ａ２ｘ」を実行する直前のタイミングにおいては、実行前条件「Ｘ」を満たす状態になっている。したがって、この場合には、新たに割込プランＤＢ１６２に格納された第２プラン「Ｐ２」は、実行中のプランである第１プラン「Ｐ１」に影響を与えないと判断する。
【０１１０】
また、図８には示していないが、第２プランに含まれる各アクションの実行効果が規定されていない場合には、第１プランに影響を与えないと判断することとする。実行効果が規定されてない場合には、第２プランの実行は状態の変化を伴わないので、第１プランに影響を及ぼさないからである。
【０１１１】
また、割込プランを割り込みで実行させるタイミングは、現在実行中のアクションの直後である。しかし、例えば現在実行中のアクションの直後では、実行中のプランに影響を与えるが、現在実行中のアクションよりも後に実行されるアクションの後であれば影響を与えない場合には、このタイミングで割り込みにかかるアクションを実行させることとしてもよい。この場合の判断は、図８から図１０を参照しつつ説明した処理により行う。
【０１１２】
図１１は、図６において説明したプラン実行処理（ステップＳ１４０）の詳細な処理を示すフローチャートである。プラン実行処理においては、まず、実行管理部１２０は、割込ゴール待ち行列１１２に割込ゴールが存在するか否かを確認する（ステップＳ３００）。割込ゴールが存在する場合には（ステップＳ３００，Ｙｅｓ）、ステップＳ１１２へ進む。
【０１１３】
次に、実行管理部１２０は、実行中プランＤＢ１６４に実行中のプランが存在するか否かを確認する。実行中のプランが存在する場合には（ステップＳ３０２，Ｙｅｓ）、このプランが空プランか否かを確認する。空プランでない場合には（ステップＳ３０４，Ｎｏ）、アクション実行部１７０は、実行中プランＤＢ１６４中のプランに含まれるアクションを実行する（ステップＳ３１０）。次に、実行管理部１２０は、プランＤＢ制御部１６０の各ＤＢ１６２，１６４，１６６の更新および信念ＤＢ１３０の更新を行う（ステップＳ３１２）。そして、再びステップＳ３００に戻る。
【０１１４】
一方、ステップＳ３０４において実行中プランＤＢ１６４に存在するプランが空プランである場合には（ステップＳ３０４，Ｙｅｓ）、プランＤＢ制御部１６０は、実行中プランＤＢ１６４に存在する空プランを消去する（ステップＳ３２０）。
【０１１５】
次に、プランＤＢ制御部１６０は、中断中プランＤＢ１６６に格納されている中断中プランが存在するか否かを確認する。中断中プランが存在する場合には（ステップＳ３２２，Ｙｅｓ）、プランＤＢ制御部１６０は、中断中プランＤＢ１６６に格納されている中断中プランを次に実行すべきプランとして実行中プランＤＢ１６４に移動する（ステップＳ３２４）。そして、再びステップＳ３００に戻る。
【０１１６】
一方、ステップＳ３２２において中断中プランが存在しない場合には（ステップＳ３２２，Ｎｏ）、プラン実行処理は終了する。また、ステップＳ３０２において実行中プランＤＢ１６４にプランが存在しない場合にも（ステップＳ３０２，Ｎｏ）、プラン実行処理は終了する。
【０１１７】
以上、図６から図１１を参照しつつ説明したプラン実行処理を、より具体的に説明する。ここでは、移動ロボット１０は、以下に示すプラン、すなわちｓｈｏｗ（ｅｘｈｉｂｉｔｉｏｎ１）というタスクに対するプランを実行中に割込ゴールを取得した場合の、より具体的な処理について説明する。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｐｒｅｃｏｎｄ（［ａｔ（ｎｏｄｅ２）］），
ａｃｔｉｏｎ（ｓｐｅａｋ（‘これは世界初の日本語ワープロです。'）） ，
ｅｆｆｅｃｔ（[]）]
【０１１８】
まず、アクション実行部１７０は、プランに従い、以下のアクションを実行する。
ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）
このアクションの実行後、プランに付加されたアクションの実行効果「ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]）， 」にしたがい、プラン作成用知識ＤＢ１４０にある信念：「ｂｅｌｉｅｆ（ａｔ（ｎｏｄｅ６））」を「ｂｅｌｉｅｆ（ａｔ（ｎｏｄｅ４））」に置き換える。その後、プラン作成部１５０は、プランを以下のように書き換える。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ａｃｔｉｏｎ（ｓｐｅａｋ（' これは世界初の日本語ワープロです。'）），
ｅｆｆｅｃｔ（[]）]
【０１１９】
図１２は、このプランを模式的に示す図である。アクション「ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）」を実行したので、移動ロボット１０の現在位置は、ｎｏｄｅ４である。プラン作成用知識ＤＢ１４０には、移動ロボット１０の現在位置がｎｏｄｅ４である旨のプラン作成用知識が新たに格納されている。したがって、プラン作成部１５０は、図１２に示すように、ｎｏｄｅ４を初期状態とし、この状態からｎｏｄｅ２へ移動するプランを新たに作成する。
【０１２０】
このとき、ゴール受付部１００が、外部から通常ゴールとして「ｓｈｏｗ（ｅｘｈｉｂｉｔｉｏｎ２）」を取得したとする。この場合、通常ゴール待ち行列１１４の最後尾にこのゴールを通常ゴールとして挿入する（ステップＳ１０２，通常ゴール、ステップＳ１０４）。
【０１２１】
このとき、割込ゴール待ち行列１１２には割込ゴールは存在しない（ステップＳ１１０，Ｎｏ）。また、通常ゴール待ち行列１１４には当該ゴールが存在し（ステップＳ１２０，Ｙｅｓ）、かつ実行中プランＤＢ１６４には、ｎｏｄｅ２で展示物を説明するプランが格納されている（ステップＳ１２２，Ｙｅｓ）。したがって、この場合、「ｓｈｏｗ（ｅｘｈｉｂｉｔｉｏｎ２）」に対するプランは、現在実行中のプランの実行完了後に実行されることとなる。
【０１２２】
また、ゴール受付部１００が外部から割込ゴールとして「ｓａｙＨｅｌｌｏ」を取得したとする。この場合、割込ゴール待ち行列１１２の最後尾にこのゴールを割込ゴールとして挿入する（ステップＳ１０２，割込ゴール、ステップＳ１０６）。このとき、割込ゴール待ち行列１１２に割込ゴールが存在するので（ステップＳ１１０，Ｙｅｓ）、実行管理部１２０は、プラン作成部１５０に対しこのプランの作成を指示する。
【０１２３】
そして、プラン作成部１５０は、割込ゴール待ち行列１１２からこの割込ゴールを取り出し（ステップＳ１１２）、割込ゴールに対するプランを作成する（ステップＳ１３０）。
【０１２４】
具体的には、プラン作成部１５０は、プラン作成用知識ＤＢ１４０に格納されている、午前中であればおはようと言う旨を示すプラン作成用知識：
ｈｔｎ（ｓａｙＨｅｌｌｏ，[
ｎｏｗ（ｍｏｒｎｉｎｇ）
]，[
ｓｐｅａｋ（'おはよう'）
]）．
と、信念ＤＢ１３０に格納されている、現在午前中であるが、真偽可変であることを示す信念：
ｂｅｌｉｅｆ（ｎｏｗ（ｍｏｒｎｉｎｇ））．
ｄｙ（ｎｏｗ（_））．
に基づいて、以下のプランを作成する。
[ｐｒｅｃｏｎｄ（[ｎｏｗ（ｍｏｒｎｉｎｇ）]），ｓｐｅａｋ（'おはよう'）]
【０１２５】
さらに、以下の実行効果に関するプラン作成用知識：
ａｃｔｉｏｎ（ｓｐｅａｋ（Ｔｅｘｔ），[
]，[
]）．
に基づいて、先に作成したプランを以下のプランに変更する。
[ｐｒｅｃｏｎｄ（[ｎｏｗ（ｍｏｒｎｉｎｇ）]）， ａｃｔｉｏｎ（ｓｐｅａｋ（'おはよう'））， ｅｆｆｅｃｔ（[]）]
以上でプランが完成する（ステップＳ２０２）。
【０１２６】
次に、プラン作成部１５０は、こうして作成されたプランを割込プランＤＢ１６２に格納する（ステップＳ２０４）。図１３は、作成されたプランを模式的に示す図である。このように、移動ロボット１０の現在位置においておはようと言うというプランが作成される。
【０１２７】
このとき、実行中プランＤＢ１６４には実行中のプランが既に格納されているので（ステップＳ２０６，Ｙｅｓ）、実行管理部１２０は、作成されたプランが実行中のプランに影響を与えるか否かを判断する（ステップＳ２０８）。
【０１２８】
割込ゴールに含まれているアクションに対する実行効果は規定されていない。すなわち、割込プランは、在実行中のプランに影響を及ぼさない。したがって、この割込プランを割込プランＤＢ１６２に残す（ステップＳ２０８）。
【０１２９】
割込プランＤＢ１６２には割込プランが存在するので（ステップＳ２１０，Ｙｅｓ）、プランＤＢ制御部１６０は、実行中プランＤＢ１６４に格納されているプランを中断中プランＤＢ１６６に移動する（ステップＳ２２０）。さらに、割込プランＤＢ１６２に格納されているプランを実行中プランＤＢ１６４に移動させる（ステップＳ２２２）。割込プランＤＢ１６２には１つのプランのみが格納されていたので、以上でプラン作成処理（ステップＳ１３０）が完了する。このように、実行管理部１２０は、割込プランが実行中のプランに影響を与えない場合には、割込プランを実行中のプランに優先して実行させる。
【０１３０】
このとき、割込ゴール待ち行列１１２に割込ゴールが存在せず（ステップＳ３００，Ｎｏ）、実行中プランＤＢ１６４に空でないプランが存在するので（ステップＳ３０２，Ｙｅｓ、ステップＳ３０４，Ｎｏ）、実行中プランＤＢ１６４に格納されているプランを実行する（ステップＳ３１０）。
【０１３１】
具体的には、アクション実行部１７０は、実行中プランＤＢ１６４に新たに格納されたプラン：
[ｐｒｅｃｏｎｄ（[ｎｏｗ（ｍｏｒｎｉｎｇ）]）， ａｃｔｉｏｎ（ｓｐｅａｋ（'おはよう'））， ｅｆｆｅｃｔ（[]）]
にしたがい、アクション：ｓｐｅａｋ（'おはよう'）を実行する。
【０１３２】
このアクションの実行効果はない（ｅｆｆｅｃｔ（[]））。したがって、信念ＤＢ１３０に格納されている信念の更新は行わない。
【０１３３】
次に、実行中プランＤＢ１６４に格納されているプランを、以下のように更新する（ステップＳ３１２）。すなわち、空プランに変更する。
[]
【０１３４】
そして、再びステップＳ３００に戻る。このとき実行中プランＤＢ１６４には空プランのみが格納されているので（ステップＳ３００，Ｎｏ、ステップＳ３０２，Ｙｅｓ、ステップＳ３０４，Ｙｅｓ）、プランＤＢ制御部１６０は、空プランを削除する（ステップＳ３２０）。このようにプランが空プランになったことから、プランの実行が完了したことを認識することができる。
【０１３５】
さらに、このとき、中断中プランＤＢ１６６に中断中のプランが格納されているので（ステップＳ３２２，Ｙｅｓ）、中断中プランＤＢ１６６に格納されているプランを実行中プランＤＢ１６４に移動する（ステップＳ３２４）。そして、再びステップＳ３００に戻り、通常プランを実行する。
【０１３６】
具体的には、実行管理部１２０は、中断中であったプラン（図１２参照）の実行を再開させる。
【０１３７】
中断中のプランは以下のように記述される。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]）
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ２））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ａｃｔｉｏｎ（ｓｐｅａｋ（‘これは世界初の日本語ワープロです。'）），
ｅｆｆｅｃｔ（[]）]
【０１３８】
アクション実行部１７０は、まず実行中プランＤＢ１６４に格納されているこのプランにしたがい、「ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ２）」を実行する。そして、信念ＤＢ１３０に格納されている信念「ａｔ（ｎｏｄｅ４）」を「ａｔ（ｎｏｄｅ２）」に置換する。さらに、実行中プランＤＢ１６４に格納されているプランを以下のように更新する。
[ ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ａｃｔｉｏｎ（ｓｐｅａｋ（' これは世界初の日本語ワープロです。'）），
ｅｆｆｅｃｔ（[]）]
【０１３９】
図１４は、更新後のプランを模式的に示す図である。このように、現在のロボット位置は、ｎｏｄｅ２であるので、ｎｏｄｅ２において「これは世界初の日本語ワープロです。」と説明する旨のプランに更新される。
【０１４０】
さらに、このタイミングにおいて、ゴール受付部１００が外部から割込ゴール：ｇｕｉｄｅ（ｔｏｉｌｅｔ）を取得したとする（ステップＳ１００）。この場合、取得したゴールは割込ゴールであるので（ステップＳ１０２，割込ゴール）、割込ゴール待ち行列１１２の最後尾に挿入する（ステップＳ１０６）。割込ゴール待ち行列１１２にこの割込ゴールが存在するので（ステップＳ１１０，Ｙｅｓ）、プラン作成部１５０は、この割込ゴールを取り出し（ステップＳ１１２）、対応するプランを作成する（ステップＳ１３０）。
【０１４１】
アクション実行部１７０は、具体的には、以下のプラン作成用知識：
ｈｔｎ（ｇｕｉｄｅ（Ｏｂｊｅｃｔ），[
]，[
ｓｈｏｗ（Ｏｂｊｅｃｔ）
]）．
に基づいて、以下の第１プランを作成する。
[ｓｈｏｗ（ｔｏｉｌｅｔ）]
【０１４２】
また、以下のプラン作成用知識：
ｈｔｎ（ｇｕｉｄｅ（Ｏｂｊｅｃｔ），[
]，[
ｔｅｌｌＬｏｃａｔｉｏｎ（Ｏｂｊｅｃｔ）
]）．
に基づいて、以下の第２プランを作成する。
[ｔｅｌｌＬｏｃａｔｉｏｎ（ｔｏｉｌｅｔ）]
以上のように、同一の割込ゴールに対し、２つのプランを作成する。
【０１４３】
これらのプランは、前述のプラン作成における処理と同様の処理により、それぞれ以下のようなプランに詳細化される。以上、プラン作成部１５０は、２つのプランを作成する（ステップＳ２０２）。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ４）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ２））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ４））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ４）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ６）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ４））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ６））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ６）]），
ａｃｔｉｏｎ（ｇｏｔｏＮｅｘｔＮｏｄｅ（ｎｏｄｅ５）），
ｅｆｆｅｃｔ（[ｔｅｒｍｉｎａｔｅｓ（ａｔ（ｎｏｄｅ６））， ｉｎｉｔｉａｔｅｓ（ａｔ（ｎｏｄｅ５））]），
ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ５）]），
ａｃｔｉｏｎ（ｓｐｅａｋ（' ここはトイレです。'）），
ｅｆｆｅｃｔ（[]）]
[ｐｒｅｃｏｎｄ（[]），
ａｃｔｉｏｎ（ｓｐｅａｋ（'ｔｏｉｌｅｔはｎｏｄｅ５にあります。'）），
ｅｆｆｅｃｔ（[]）]
【０１４４】
図１５は、第１プランを模式的に示す図である。このように、第１プランは、ｎｏｄｅ２からｎｏｄｅ４、ｎｏｄｅ６を経由してトイレまで移動するプランである。また、図１６は、第２プランを模式的に示す図である。このように、第２プランは、ｎｏｄｅ２において、トイレの場所を案内するプランである。
【０１４５】
プラン作成部１５０は、これら２つのプランを割込プランＤＢ１６２に格納する（ステップＳ２０４）。このとき、実行中プランＤＢ１６４には実行中プランが格納されている（ステップＳ２０６，Ｙｅｓ）。そこで、実行管理部１２０は、プラン作成部１５０が作成した２つのプランがこの実行中プランに影響を与えるか否かを判断する。
【０１４６】
実行中のプラン「ｓｐｅａｋ（‘これは世界初の日本語ワープロです。'）」には、実行前条件（ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]））が対応付けられている。したがって、このプランの直前にａｔ（ｎｏｄｅ２）が成り立たなければならない。これに対し、第１プランは、ｎｏｄｅ５まで移動して処理が完了するため、実行前条件（ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]））を満たさない。一方、第２プランは、実行効果がなく、実行前条件（ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]））を満たす。したがって、第１プランは削除し、第２プランのみを残す（ステップＳ２０８）。
【０１４７】
したがって、割込プランＤＢ１６２には第２プランが存在する（ステップＳ２１０，Ｙｅｓ）。そこで、次に、実行中プランＤＢ１６４に格納されている実行中のプランを中断中プランＤＢ１６６に移動する（ステップＳ２２０）。次に、割込プランＤＢ１６２にある第２プランを実行中プランＤＢ１６４に移動する（ステップＳ２２２）。割込プランＤＢ１６２にはプランが残されていないので、以上でプラン作成処理が完了する。
【０１４８】
このように、本実施の形態においては、実行中のプランの実行前条件を満たさないプランは削除されるので、このようなプランが実行されることはない。したがって、適切なプランのみを割り込み実行させることができる。
【０１４９】
次に、実行中プランＤＢ１６４に新たに格納された第２プランを実行する（ステップＳ１４０）。具体的には、第２プラン：
[ｐｒｅｃｏｎｄ（[]），
ａｃｔｉｏｎ（ｓｐｅａｋ（'ｔｏｉｌｅｔはｎｏｄｅ５にあります。'）），
ｅｆｆｅｃｔ（[]）]
にしたがい、アクション：
（ｓｐｅａｋ（'ｔｏｉｌｅｔはｎｏｄｅ５にあります。'）
を実行する。
【０１５０】
このアクションの実行効果はない（ｅｆｆｅｃｔ（[]））。したがって、信念ＤＢ１３０に格納されている信念の更新は行わない。
【０１５１】
次に、実行中プランＤＢ１６４に格納されているプランを、以下のように更新する（ステップＳ３１２）。すなわち、空プランに変更する。
[]
【０１５２】
そして、再びステップＳ３００に戻る。このとき実行中プランＤＢ１６４には空プランのみが格納されているので（ステップＳ３００，Ｎｏ、ステップＳ３０２，Ｙｅｓ、ステップＳ３０４，Ｙｅｓ）、プランＤＢ制御部１６０は、空プランを削除する（ステップＳ３２０）。
【０１５３】
さらにこのとき、中断中プランＤＢ１６６に中断中のプランが格納されているので（ステップＳ３２２，Ｙｅｓ）、中断中プランＤＢ１６６に格納されているプランを実行中プランＤＢ１６４に移動する（ステップＳ３２４）。そして、再びステップＳ３００に戻り、通常プランを実行する。
【０１５４】
具体的には、実行管理部１２０は、中断中であったプラン（図１４参照）の実行を再開させる。中断中のプランは以下のように記述される。
[ｐｒｅｃｏｎｄ（[ａｔ（ｎｏｄｅ２）]），
ａｃｔｉｏｎ（ｓｐｅａｋ（‘ これは世界初の日本語ワープロです。'）），
ｅｆｆｅｃｔ（[]）]
【０１５５】
アクション実行部１７０はまず、実行中プランＤＢ１６４に格納されているプランにしたがい、アクション：ｓｐｅａｋ（‘ これは世界初の日本語ワープロです。'）を実行する。このアクションの実行効果はない（ｅｆｆｅｃｔ（[]））。したがって、信念ＤＢ１３０の更新を行わない。
【０１５６】
次に、実行中プランＤＢ１６４に格納されているプランを、以下のように更新する。
[]
空プランになったので、このプランの実行は無事に終了したことになる。従って、プランＤＢ制御部１６０は、この空プランを実行中プランＤＢ１６４から削除する。
【０１５７】
また、プランＤＢ制御部１６０にプランが存在せず、通常ゴール待ち行列１１４に１つの通常ゴール「ｓｈｏｗ（ｅｘｈｉｂｉｔｉｏｎ２）」が存在する場合には（ステップＳ１２０，Ｙｅｓ、ステップＳ１２２，Ｎｏ）、プラン作成部１５０は、通常ゴール待ち行列１１４に格納されている通常ゴールを取り出し、（ステップＳ１２４）、この通常ゴールに対応するプランを作成する（ステップＳ１３０）。そして、作成したプランを実行する（ステップＳ１４０）。
【０１５８】
図１７は、実施の形態にかかる移動ロボット１０のハードウェア構成を示す図である。移動ロボット１０は、ハードウェア構成として、移動ロボット１０におけるプラン実行処理を実行するプラン実行プログラムなどが格納されているＲＯＭ５２と、ＲＯＭ５２内のプログラムに従って移動ロボット１０の各部を制御するＣＰＵ５１と、移動ロボット１０の制御に必要な種々のデータを記憶するＲＡＭ５３と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５７と、各部を接続するバス６２とを備えている。
【０１５９】
先に述べた移動ロボット１０におけるプラン実行プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（Ｒ）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
【０１６０】
この場合には、プラン実行プログラムは、移動ロボット１０において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
【０１６１】
また、本実施の形態のプラン実行プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【０１６２】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【０１６３】
そうした第１の変更例としては、本実施の形態においては、プラン実行装置を搭載した移動ロボットについて説明したが、プラン実行装置の適用対象は、移動ロボットに限定されるものではない。例えば、商品の在庫管理に関するプランを実行してもよい。商品の在庫数量の変化を信念情報とすることにより、商品の搬送個数、搬入個数等に応じて、割込プランを適切に実行することができる。
【０１６４】
このように、プランの対象となるオブジェクトの状態が変化し、かつこの変化がプラン実行の可否に影響するような場合であっても、本実施の形態にかかるプラン実行装置は、オブジェクトに状態に基づいてプラン実行を管理するので、割込プランを適切に実行することができる。
【０１６５】
第２の変更例について説明する。本実施の形態においては、図８から図１０を参照しつつ説明したように、割込プランが実行中プランの実行前条件と異なる状態に変化させるようなアクションを含む場合であっても、実行中プランを実行する直前のタイミングにおいて実行前条件を満たす状態に戻っていることを条件として、実行中のプランに影響を与えないと判断したが、これにかえて、割込プランが実行中プランの実行前条件と異なる状態に変化させるようなアクションを含む場合には、このことを条件として、実行中のプランに影響を与えるとして、割り込みを禁止することとしてもよい。これにより、実行前条件と異なる状態から実行前条件を満たす状態に戻るか否かを判断する処理を省略することができる。
【０１６６】
第３の変更例について説明する。本実施の形態においては、割込プランを複数のアクションに分割し、各アクションの実行効果と実行前条件とを参照することにより割り込み可否を判断したが、これにかえて、割込プラン自体の実行効果と実行前条件を参照することにより割り込み可否を判断することとしてもよい。
【０１６７】
割込プラン中に信念情報である移動ロボットの処理状態が変化した場合であっても、このように実行中プランに復帰する時点で、復帰するアクションの実行前条件を満たせば、不都合なく復帰するアクションを実行することができる。
【０１６８】
第４の変更例について説明する。本実施の形態においては、プラン作成部１５０は、割込ゴールに対し、複数の割込プランを作成し、アクション実行部１７０は、そのうち実行中のプランに影響を与えないアクションを実行した。これにかえて、プラン作成部１５０は、信念ＤＢ１３０に格納されている信念情報および、プラン作成用知識ＤＢ１４０に格納されているプラン作成用知識を利用して、実行中のプランに影響を与えないアクションのみを作成することとしてもよい。なお、この場合の作成処理においては、図８から図１０を参照しつつ説明した影響プラン選択処理における条件を満たすプランを作成する。
【図面の簡単な説明】
【０１６９】
【図１】本実施の形態にかかるプラン作成装置を備えた移動ロボット１０の機能構成を示す図である。
【図２】プランとアクションの関係を示す図である。
【図３】信念ＤＢ１３０に格納されているトポロジカル地図を模式的に示す図である。
【図４】プラン作成用知識ＤＢ１４０が格納しているプラン作成用知識を模式的に示す図である。
【図５】プラン作成部１５０によって作成されたプランを模式的に示す図である。
【図６】実施の形態にかかる移動ロボット１０がプランを実行するときのプラン実行処理を示すフローチャートである。
【図７】図６において説明したプラン作成処理（ステップＳ１３０）における詳細な処理を示すフローチャートである。
【図８】図７において説明したステップＳ２０８において、実行中のプランに影響を与えるプランを選択する影響プラン選択処理を示すフローチャートである。
【図９】第１の条件を説明するための図である。
【図１０】第２の条件を説明するための図である。
【図１１】図６において説明したプラン実行処理（ステップＳ１４０）の詳細な処理を示すフローチャートである。
【図１２】このプランを模式的に示す図である。
【図１３】作成されたプランを模式的に示す図である。
【図１４】更新後のプランを模式的に示す図である。
【図１５】第１プランを模式的に示す図である。
【図１６】第２プランを模式的に示す図である。
【図１７】実施の形態にかかる移動ロボット１０のハードウェア構成を示す図である。
【符号の説明】
【０１７０】
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５７  通信Ｉ／Ｆ
６２  バス
１０  移動ロボット
１００  ゴール受付部
１１０  ゴール保持部
１１２  割込ゴール待ち行列
１１４  通常ゴール待ち行列
１２０  実行管理部
１３０  信念ＤＢ
１４０  プラン作成用知識ＤＢ
１５０  プラン作成部
１６０  プランＤＢ制御部
１６２  割込プランＤＢ
１６４  実行中プランＤＢ
１６６  中断中プランＤＢ
１７０  アクション実行部
【図１】
2006268343.tif 000003
【図２】
2006268343.tif 000004
【図３】
2006268343.tif 000005
【図４】
2006268343.tif 000006
【図５】
2006268343.tif 000007
【図６】
2006268343.tif 000008
【図７】
2006268343.tif 000009
【図８】
2006268343.tif 000010
【図９】
2006268343.tif 000011
【図１０】
2006268343.tif 000012
【図１１】
2006268343.tif 000013
【図１２】
2006268343.tif 000014
【図１３】
2006268343.tif 000015
【図１４】
2006268343.tif 000016
【図１５】
2006268343.tif 000017
【図１６】
2006268343.tif 000018
【図１７】
2006268343.tif 000019