JP4357442B2 - プラン実行装置、プラン実行方法およびプログラム - Google Patents

プラン実行装置、プラン実行方法およびプログラム Download PDF

Info

Publication number
JP4357442B2
JP4357442B2 JP2005084460A JP2005084460A JP4357442B2 JP 4357442 B2 JP4357442 B2 JP 4357442B2 JP 2005084460 A JP2005084460 A JP 2005084460A JP 2005084460 A JP2005084460 A JP 2005084460A JP 4357442 B2 JP4357442 B2 JP 4357442B2
Authority
JP
Japan
Prior art keywords
plan
execution
interrupt
state
action
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005084460A
Other languages
English (en)
Other versions
JP2006268343A (ja
Inventor
久志 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2005084460A priority Critical patent/JP4357442B2/ja
Priority to US11/213,891 priority patent/US7770171B2/en
Publication of JP2006268343A publication Critical patent/JP2006268343A/ja
Application granted granted Critical
Publication of JP4357442B2 publication Critical patent/JP4357442B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/41835Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by programme execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Description

本発明は、割り込みにかかるプランを実行するプラン実行装置、プラン実行方法およびプログラムに関するものである。
所定のタスク列であるプランを実行中に、他のプランの割り込みが行われる場合がある。この場合に、割込プランの実行を管理する方法としてスケジューリング方式が知られている。スケジューリング方式としては、例えば、複数の割り込みがあった場合にこれらの優先順序をつけるものが知られている(例えば、「特許文献1」参照)。
特開平06−187171号公報
しかしながら、例えば移動ロボットにおいては、プランの実行により移動ロボットが移動する場合がある。したがって、所定のプランを実行中に他のプランの割り込みを許可し、他の位置に移動した場合に、元のプランを実行できないことがある。
例えば、階段を昇るというタスクを実行中にリビングに行くという割込タスクを実行すると、割込タスク完了時には移動ロボットはリビングに移動している。したがって、階段を昇るというプランを復帰させたときには、このプランを実行することができない。
このように、タスクの対象となるオブジェクトの状態がタスクの実行に影響を及ぼし、かつこのオブジェクトの状態がタスクの実行により変化する場合には、従来のタスク管理を適用することができないという問題があった。
本発明は、上記に鑑みてなされたものであって、タスクの対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことのできるプラン実行装置を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、プラン実行装置であって、予め定められた順番に実行される複数のアクションを有する集合であるプランを、アクション単位で実行する実行手段と、前記プランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、現在の前記対象オブジェクトの前記処理状態を保持する状態保持手段と、前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、前記割込指示受付手段が所定の割込プランの前記割込指示を受け付けた場合に、前記状態保持手段が保持する現在の前記対象オブジェクトの状態と、前記実行情報保持手段が保持する前記割込プランの前記実行前条件および前記実行効果とを特定する割込情報特定手段と、現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致するか否かに基づいて、前記割込プランを実行するか否かを判断する割込可否判断手段とを備えたことを特徴とする。
また、本発明の他の形態は、プラン実行装置であって、予め定められた順番に実行される複数のアクションを有する集合であるプランを、アクション単位で実行する実行手段と、前記プランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、現在の前記対象オブジェクトの状態を保持する状態保持手段と、前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、前記割込指示受付手段が前記割込指示を受け付けた場合に、前記実行情報保持手段が保持するプランのうち前記実行前条件および前記実行効果が、記状態保持手段が保持している現在の前記対象オブジェクトの状態と一致するプランを割込プランとして作成する割込プラン作成手段と、前記割込プラン作成手段が作成した前記割込プランの割り込みを行う割込制御手段とを備えたことを特徴とする。
また、本発明の他の形態は、プラン実行装置において実行されるプラン実行方法であって、前記プラン実行装置は、予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、現在の前記対象オブジェクトの状態を保持する状態保持手段とを備え、実行手段が、前記プランを、アクション単位で実行する実行ステップと、割込指示受付手段が、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、割込情報特定手段が、前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記状態保持手段が保持する現在の前記対象オブジェクトの状態と、前記実行情報保持手段が保持する前記割込プランの前記実行前条件および前記実行効果とを特定する割込情報特定ステップと、割込可否判断手段が、現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致するか否かに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップとを有することを特徴とする。
また、本発明の他の形態は、プラン実行装置において実行されるプラン実行方法であって、前記プラン実行装置は、予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、現在の前記対象オブジェクトの状態を保持する状態保持手段とを備え、実行手段が、前記プランを、アクション単位で実行する実行ステップと、割込指示受付手段が、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、割込プラン作成手段が、前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行情報保持手段が保持するプランのうち前記実行前条件および前記実行効果が、前記状態保持手段が保持している現在の前記対象オブジェクトの状態と一致するプランを割込プランとして作成する割込プラン作成水ステップと、割込制御手段が、前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップとを有することを特徴とする。
また、本発明の他の形態は、プラン実行処理をコンピュータに実行させるためのプログラムであって、前記コンピュータは、予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、現在の前記対象オブジェクトの状態を保持する状態保持手段とを備え、前記プランを、アクション単位で実行する実行ステップと、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記状態保持手段が保持する現在の前記対象オブジェクトの状態と、前記実行情報保持手段が保持する前記割込プランの前記実行前条件および前記実行効果とを特定する割込情報特定ステップと、現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致するか否かに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップとを前記コンピュータに実行させることを特徴とする。
また、本発明の他の形態は、プラン実行処理をコンピュータに実行させるためのプログラムであって、前記コンピュータは、予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、現在の前記対象オブジェクトの状態を保持する状態保持手段と備え、前記プランを、アクション単位で実行する実行ステップと、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行情報保持手段が保持するプランのうち前記実行前条件および前記実行効果が、記状態保持手段が保持している現在の前記対象オブジェクトの状態と一致するプランを割込プランとして作成する割込プラン作成ステップと、前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップとを前記コンピュータに実行させることを特徴とする。
理の対象となるオブジェクトの状態が変化する場合であっても、所定のプランを実行中に他のプランの割り込みを適切に行うことができるという効果を奏する。
以下に、本発明にかかるプラン実行装置、プラン実行方法およびプログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
図1は、本実施の形態にかかるプラン作成装置を備えた移動ロボット10の機能構成を示す図である。
移動ロボット10は、ゴール受付部100と、ゴール保持部110と、実行管理部120と、信念DB130と、プラン作成用知識DB140と、プラン作成部150と、プランDB制御部160と、アクション実行部170とを備えている。
ゴール受付部100は、ゴールを取得する。ゴール受付部100はさらに、ゴールを通常ゴールとするか割込ゴールとするかの指定を受け付ける。
ここでゴールとは、実行完了したいタスクまたは達成したい状態のことである。なお、他の例としては、達成したい目標状態であってもよい。また、割込ゴールとは、割り込みにより達成されるゴールであり、通常ゴールとは、割込ゴール以外のゴール、すなわちゴールの取得順に処理されるべきゴールである。
実施の形態にかかるゴール受付部100は、特許請求の範囲に記載の割込指示受付手段に対応する。
ゴール保持部110は、割込ゴール待ち行列112と、通常ゴール待ち行列114とを有している。割込ゴール待ち行列112は、ゴール受付部100が取得した割込ゴールを取得順に保持している。通常ゴール待ち行列114は、ゴール受付部100が取得した通常ゴールを取得順に保持している。
実行管理部120は、ゴール保持部110、信念DB130、プラン作成部150、プランDB制御部160およびアクション実行部170を管理する。なお、本実施の形態にかかる実行管理部120は、特許請求の範囲に記載の割込情報特定手段、割込可否判断手段および割込制御手段に対応する。
信念DB130は、信念情報を格納している。ここで、信念情報とは、処理の対象となる移動ロボット10の状態に関する情報や、処理の前提となる状況など動的に更新される情報である。ロボット10の状態に関する情報としては、例えば、ロボットが階段にいる場合には、ロボットの存在位置が階段であることを示す情報である。この情報により、階段以外の場所で実行されるべきタスクは、実行できないことがわかる。
また、処理の前提となる状況としては、例えば、現在時刻、現在日時などがある。例えば、「おはようございます」と音声出力するというタスクは、午前中以外の時間帯には適さない。現在時刻を示す信念に基づけば、「おはようございます」と音声出力するというタスクを実行するか否かを判断することができる。
信念DB130はさらに、移動ロボット10の移動対象とする領域のトポロジカル地図を格納している。
本実施の形態にかかる信念情報は、特許請求の範囲に記載の対象オブジェクトの処理状態に対応する。また、本実施の形態にかかる信念DB130は、特許請求の範囲に記載の処理状態保持手段に対応する。
プラン作成部150は、割込ゴール待ち行列112または通常ゴール待ち行列114の先頭のゴールに対応するプランを作成する。ここで、プランとは、ゴールを実行または達成するための一連の処理である。プランは、複数のアクションを有している。ここで、アクションとは、プランを実行するときの最小単位である。
ここで、図2を参照しつつ、プランおよびアクションについて詳述する。図2は、プランとアクションの関係を示す図である。プランは、タスクの実行順序を表すものである。例えば、全順序プラン「Task1,Task2,Task3」は、図2に示すように、まず「Task1」というタスクを実行し、次に「Task2」というタスクを実行し、最後に「Task3」というタスクを実行することを表す。本実施の形態においては、アクション実行部170が実行可能なタスクをアクションと称する。また、本実施の形態においては、全順序プランのことをプランと称する。
プランには、具体的プランと抽象的プランがある。ここで、具体的プランとは、アクションの実行順序のみを表すプランのことである。抽象的プランとは、具体的なプランでないプランのことである。本実施の形態にかかる移動ロボット10が対象とするのは具体的プランである。
プラン作成用知識DB140は、プラン作成部150がプランを作成するときに参照すべき情報であるプラン作成用知識を格納している。具体的には、プランに含めるべきアクションを格納している。さらに、各アクションに対応付けて、実行前条件および実行効果を格納している。実行前条件および実行効果については後述する。
本実施の形態にかかるプラン作成用知識DB140は、特許請求の範囲に記載の実行情報保持手段に対応する。
プランDB制御部160は、割込プランDB162、実行中プランDB164および中断中プランDB166を制御する。割込プランDB162は、プラン作成用知識DB140が取得したプランを格納する。実行中プランDB164は、実行対象のプランを格納する。中断中プランDB166は、中断中のプランを格納する。
アクション実行部170は、実行中プランDB164に格納されているプランを実行する。すなわちプランに含まれるアクションの順番にしたがって、複数のアクションを順に実行する。アクション実行部170は、アクションの実行が完了すると、信念DB130の情報を、アクション実行後の状態に更新する。
図3は、信念DB130に格納されているトポロジカル地図を模式的に示す図である。図3に示すように地図上のノード(node1〜node6)が信念情報として格納されている。また、node2には、展示物exhibition1が展示されている。node3には、展示物exhibition2が展示されている。node5には、トイレが設置されている。これらの内容も信念情報として格納されている。
また、展示物の位置に移動した場合には、移動ロボットは、展示されている展示物の説明を行う。この内容に対応する情報も信念情報として信念DB130に格納されている。
地図上の点(ノード):node1,node2,node3,node4,node5,node6の相対座標は、それぞれ、(0,20),(10,20),(0,10),(10,10),(0,0),(10,0)である。
この信念情報は、具体的には以下の記述として信念DB130に格納されている。

belief(coordinate(node1,0,20)).
belief(coordinate(node2,10,20)).
belief(coordinate(node3,0,10)).
belief(coordinate(node4,10,10)).
belief(coordinate(node5,0,0)).
belief(coordinate(node6,10,0)).
また、node2に展示物exhibition1が展示されている。node3には展示物exhibition2が展示されている。また、node5にトイレが設けられている。この信念情報は、具体的には以下の知識として信念DB130に格納されている。

belief(location(exhibition1,node2)).
belief(location(exhibition2,node3)).
belief(location(toilet,node5)).
また、展示物exhibition1およびexhibition2に関する説明はそれぞれ「これは世界初の日本語ワープロです。」および「これは駒をまわすロボットです。」である。この信念情報は、具体的には以下の知識として信念DB130に格納されている。

belief(contents(exhibition1,‘ これは世界初の日本語ワープロです。')).
belief(contents(exhibition2,‘これは駒をまわすロボットです。')).
また、トイレにおいては、「ここはトイレです。」という説明がされる。この信念情報は、具体的には以下の知識として信念DB130に格納されている。

belief(contents(toilet,‘ ここはトイレです。')).
node1からnode2は移動可能であり、かつ、node2からnode1へも移動可能である。この信念情報は、具体的には以下の知識として信念DB130に格納されている。

belief(connects(node1,node2)).
belief(connects(node2,node1)).
同様にノード間の接続関係は、以下の知識として信念DB130に格納されている。

belief(connects(node1,node3)).
belief(connects(node3,node1)).
belief(connects(node2,node4)).
belief(connects(node4,node2)).
belief(connects(node3,node4)).
belief(connects(node4,node3)).
belief(connects(node3,node5)).
belief(connects(node5,node3)).
belief(connects(node4,node6)).
belief(connects(node6,node4)).
belief(connects(node5,node6)).
belief(connects(node6,node5)).
初期状態でのロボットの位置はnode6であるとする。この信念情報は、具体的には以下の知識として信念DB130に格納されている。

belief(at(node6)).
ここで、「at(node6)」は、node6からロボットが移動してしまうと成り立たなくなる。すなわち「at(_)」の真偽値は動的に変化する。ここで、「_」は、無名変数であり、いずれの値が代入されてもよいことを示している。
このように、真偽値が動的に変化することをあわせて、具体的には、以下の知識が信念DB130に格納されている。
dy(at(_)).
現在、午前中の昼間あることは、信念DB130には、以下の知識として格納されている。

belief(now(morning)).
ここで、「now(morning)」は、午後になると(外部モジュールから)消される。したがって、この条件は、成立しなくなる。すなわち、「now(_)」の真偽値は動的に変化する。そこで、真偽値が動的に変化することをあわせて、具体的には、以下の知識が信念DB130に格納されている。

dy(now(_)).
図4は、プラン作成用知識DB140が格納しているプラン作成用知識を模式的に示す図である。プラン作成用知識は、具体的には、プランに含めるべきアクションである。さらに、各アクションには、実行前条件と実行効果とが割り当てられている。ここで、実行前条件とは、各アクションを実行する直前に成立している必要のある条件のことである。また、実行効果とは、アクション実行直後から継続的に成立する状態や性質等である。同じアクションでも、そのアクションを含むプランが異なるために、実行前条件が異なる場合がある。そこで、本実施の形態においては、プランに含まれる各アクションの実行前条件と実行効果を明示的にプラン内部に記録する。
図4に示すアクション「AからBに移動」に対しては、実行前条件として「現在位置はA」が記録されている。また、実行効果として「現在位置はAでなくなる」、「実行位置はBになる」が記録されている。
また、アクション「BからCに移動」に対しては、実行前条件として「現在位置はB」が記録されている。また、実行効果として「現在位置はBでなくなる」、「実行位置はCになる」が記録されている。
以上の内容は、具体的には、以下の記述としてプラン作成用知識DB140に記録される。

[precond([at(a)]),
move(a, b),
effect([terminates(at(a)), initiates(at(b))])
precond([at(b)]),
move(b, c),
effect([terminates(at(b)), initiates(at(c))])]

ここで、「move(a, b)」は、a地点からb地点まで移動するアクションを表している。「precond([at(a)])」は、アクション「move(a, b)」の実行前条件を示している。ここで、「at(a)」は、a地点にいることを表している。
また、「effect([terminates(at(a)), initiates(at(b))])」は、アクション「move(a, b)」に対する実行効果を表している。「terminates(at(a))」は、現在位置がa地点でなくなることを表している。また、「initiates(at(b))」は、現在位置がb地点になることを表している。
同様に、「move(b, c)」は、b地点からc地点まで移動するアクションを表している。「precond([at(b)])」は、アクション「move(b, c)」の実行前条件を表している。また、「effect([terminates(at(b)), initiates(at(c))])」は、実行効果を表している。
例えば、テキストを読むというアクションには、実行前条件および実行効果は存在しない。このように、実行前条件および実行効果が存在しない場合には、以下の記述がプラン作成用知識DB140に格納される。

action(speak(Text),[
],[
]).

なお、この記述は、読むという動作の対象を「テキスト」とした場合のアクションを表すが、「speak(Text)」の「Text」は、変数であり任意の文字列を代入することにより、この文字列を読む動作となる。
また、現在のノードから他のノードを経由することなく、直接移動可能なノードに移動するというアクションは、以下のように記述される。

action(gotoNextNode(NextNode),[
at(CurrentNode),
connects(CurrentNode,NextNode)
],[
terminates(at(CurrentNode)),
initiates(at(NextNode))
]).

ここで、「gotoNextNode(NextNode)」は、アクションを表している。また、「CurrentNode」は、現在いるノードを表している。ここで、CurrentNodeは変数である。NextNodeは、移動先のノードを表している。ここで、NextNodeは、変数である。
「at(CurrentNode)」は実行前条件である。現在のノードが、CurrentNodeであることを表している。また、「connects(CurrentNode,NextNode)」も実行前条件である。CurrentNodeからNextNodeへ直接移動可能であることを表している。このアクションの効果「terminates(at(CurrentNode)),initiates(at(NextNode))」は、現在位置がCurrentNodeからNextNodeに変化することを表している。
プラン作成用知識DB140は、またアクションでないタスクを分解する方法をプラン作成用知識として格納している。例えば、ゴール受付部100が、ゴールとして、「show(Object)」(対象物:Objectがある位置まで移動して、対象物の説明をする)というタスクを受け付けたとする。しかし、このタスクはアクション実行部170が実行可能な単位のタスクではない、すなわちアクションではないので、これをアクションに分解する必要がある。プラン作成用知識DB140は、このための情報を格納している。
タスク「show(Object)」の実行前条件は、「location(Object,Node)」である。この実行前条件が成立する場合、このタスクを実行するためには、まず、ノード(Node)への移動を実行し、その後、対象物(Object)に関する説明を実行すればよい。したがって、タスク「show(Object)」は、「goto(Node)」というタスクと、「explain(Object)」というタスクに分解される。具体的には、タスク「show(Object)」は、以下の記述で表されるタスクに分解される。

htn(show(Object),[
location(Object,Node)
],[
goto(Node),
explain(Object)
]).
また、「tellLocation(Object)」(対象物:Objectがあるノードを口頭で教える。)というタスクを実行するためには、Object+'は' +Node+'にあります'という文字列の音声出力を実行すればよい。すなわち、タスクは、実行前条件「location(Object,Node)」(ObjectのあるノードはNodeである。)が成立すればよい。
以上より、タスク「tellLocation(Object)」は、タスク「speak(Object+'は'+Node+'にあります')」を含む以下の記述で表されるタスクに分解される。なお、ここで、ObjectとNodeは変数である。

htn(tellLocation(Object),[
location(Object,Node)
],[
speak(Object+'は'+Node+'にあります')
]).
また、「sayHello」(あいさつする。)というタスクに対しては、昼間の午前である場合には、'おはよう'という文字列の音声出力が実行さればよい。したがって、実行前条件「now(morning)」(今は昼間の午前である。)が付与される。以上より、タスク「sayHello」(あいさつする。)は、タスク「speak('おはよう')」を含む以下の記述のタスクに分解される。

htn(sayHello,[
now(morning)
],[
speak('おはよう')
]).
同様に、「sayHello」(あいさつする。)というタスクであっても、昼間の午後である場合には、‘こんにちは'という文字列の音声出力が実行されればよい。したがって、タスクの実行前条件「now(afternoon)」(今は昼間の午後である。)が付与される。以上より、タスク「sayHello」(あいさつする。)は、タスク「speak('こんにちは')」を含む以下の記述のタスクに分解される。

htn(sayHello,[
now(afternoon)
],[
speak('こんにちは')
]).
同様に、「sayHello」(あいさつする。)というタスクであっても、夜間である場合には、‘こんばんは'という文字列の音声出力が実行されればよい。したがって、タスクの実行前条件「now(night)」(今は夜間である。)が付与される。以上よりタスク「sayHello」(あいさつする。)は、タスク「speak('こんばんは')」を含む以下の記述のタスクに分解される。

htn(sayHello,[
now(night)
],[
speak('こんばんは')
]).
また、「explain(Object)」(対象物:Objectに関する説明をする)というタスクに対しては、現在位置がノード:Nodeであること、対象物:Objectの位置がノード「Node」であること、および対象物:Objectの説明文がTextであることを前提として、説明文「Text」を読む。というアクションを実行すればよい。
すなわち、3つの実行前条件「at(Node)」(現在位置がノード:Nodeである。)、「location(Object,Node)」(対象物:Objectの位置がノード:Nodeである。)および「contents(Object,Text)」(対象物:Objectの説明文がText)が成立する場合に、「speak(Text)」(説明文(Text)を読む。)を実行すればよい。したがって、以下の記述のタスクに分解される。

htn(explain(Object),[
at(Node),
location(Object,Node),
contents(Object,Text)
],[
speak(Text)
]).
また、タスク「goto(Node)」(ノード(Node)に移動する。)は、実行前条件「at(Node)」(現在位置がノード:Nodeである)が成立する場合には、アクションの実行は不要である。したがって、以下の記述のタスクに分解される。なお、ここで、Nodeは、変数である。また、実行すべきタスクがない場合、[]と表す。

htn(goto(Node),[
at(Node)
],[
]).
また、タスク「goto(Node)」(ノード:Nodeに移動する)を実行するためには、まず、タスク「gotoNextNode(NextNode)」(隣のノード:NextNodeに移動する)を実行し、次に、タスク「goto(Node)」(ノード:Nodeに移動する)を実行すればよい。したがって、以下の記述のタスクに分解される。ここで、NodeとNextNodeは変数である。

htn(goto(Node),[
],[
gotoNextNode(NextNode),
goto(Node)
]).
次に、プラン作成部150がプランを作成する処理について詳述する。通常ゴールとして、「show(exhibition1)」(対象物:exhibition1のあるノードまで行って、exhibition1の説明をする)というタスクを受け取り、このプランを作成する場合、プラン作成部150は、以下のプラン作成用知識:

htn(show(Object),[
location(Object,Node)
],[
goto(Node),
explain(Object)
]).

と、以下の信念:

belief(location(exhibition1,node2)).

に基づいて、タスク「show(exhibition1)」から以下のプランを作成する。

[goto(node2), explain(exhibition1)]

次に、このプランの「goto(node2)」を以下のプラン作成用知識:

htn(goto(Node),[
],[
gotoNextNode(NextNode),
goto(Node)
]).

を使って分解し、以下のプランを得る。

[gotoNextNode(NextNode), goto(node2), explain(exhibition1)]

ここで、NextNodeは代入されていない変数である。
ここで、以下のプラン作成用知識:

action(gotoNextNode(NextNode),[
at(CurrentNode),
connects(CurrentNode,NextNode)
],[
terminates(at(CurrentNode)),
initiates(at(NextNode))
]).

と、以下の2つの信念:

belief(at(node6)).
belief(connects(node6,node4)).

から、アクション:gotoNextNode(NextNode)の実行前条件は満たされる。
また、その実行効果:

terminates(at(node6)).
initiates(at(node4)).

より、現在位置は、node6でなくなる。さらに、現在位置は、node4になる。
また、信念DB130に、以下の情報が格納されている。

dy(at(_)).
したがって、実行前条件「at(node6)」は、現在は成立するが、その真偽値は、将来、変化する可能性があることがわかる。したがって、この成立の真偽は、今後もチェックする必要がある。
そこで、プラン作成部150は、変数:NextNodeにnode4を代入して、プランにこれらの情報を付加する。具体的には、「action(gotoNextNode(node4))」という記述を付加する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
goto(node2),
explain(exhibition1)]

なお、「action(gotoNextNode(node4))」は、アクション「gotoNextNode(node4)」に、実行前条件(将来真偽値が変化する可能性あり)と実行効果に関する情報を既に付加したことを表している。
また、ノード「node6」に繋がっているノードは複数個ある。このため、アクション「gotoNextNode(NextNode)」の分解方法は複数存在する。本実施の形態においては、このうち、最終目的地であるノード「node2」に最も近いノード「node4」を選択して、NextNodeに代入することとした。
次に、以下のプラン作成用知識:

htn(goto(GoalNode),[
],[
gotoNextNode(NextNode),
goto(Node)
]).

から、プラン作成部150は、タスク「goto(node2)」を分解して、以下のようにプランを更に詳細化する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
gotoNextNode(NextNode),
goto(node2),
explain(exhibition1)]

ここで、以下のプラン作成用知識:

action(gotoNextNode(NextNode),[
at(CurrentNode),
connects(CurrentNode,NextNode)
],[
terminates(at(CurrentNode)),
initiates(at(NextNode))
]).

と、以下の信念:

belief(connects(node4,node2)).
dy(at(_)).

と、プランに付加されている情報:

effect([terminates(at(node6)), initiates(at(node4))])

に記されているアクションの実行効果「initiates(at(node4))」から、プランにアクション「gotoNextNode(NextNode)」の実行前条件と実行効果を以下のように追加する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
precond([at(node4)]),
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
goto(node2),
explain(exhibition1)]
以下のプラン作成用情報:

htn(goto(Node),[
at(Node)
],[
]).

と、以下の信念:

dy(at(_)).

と、プランに付加されている情報:
effect([terminates(at(node4)), initiates(at(node2))])

に記されているアクションの実行効果「initiates(at(node2))」から、タスク「goto(node2)」を実行するために、何もアクションを実行しなくてもよいことがわかる。
そこで、プラン作成部150は、以下のようにプラン内のタスク「goto(node2)」を分解し、動的に変化する実行前条件「at(node2)」を付加する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
precond([at(node4)]),
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
precond([at(node2)]),
explain(exhibition1)]

ここで、以下のプラン作成用情報:

htn(explain(Object),[
at(Node),
location(Object,Node),
contents(Object,Text)
],[
speak(Text)
]).

プランに付加されている情報:

effect([terminates(at(node4)), initiates(at(node2))])

に記されているアクションの効果:

initiates(at(node2))

と、以下の信念:

belief(location(exhibition1,node2)).
belief(contents(exhibition1,' これは世界初の日本語ワープロです。')).

から、プラン内のタスク:

explain(exhibition1)

は、以下のように置き換えることができる。

speak(‘これは世界初の日本語ワープロです。')
さらに、以下の信念:

dy(at(_)).

から、タスク:

explain(exhibition1)

の実行前条件「at(node2)」は動的に変化することがわかる。
そこで、プラン作成部150は、下のようにプランを詳細化する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
precond([at(node4)]),
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
precond([at(node2)]),
speak(‘これは世界初の日本語ワープロです。')]

なお、実行前条件「at(node2)」は、既に分解前のプランに記録されているため、2重には記録しないこととしたが、記録することとしてもよい。
さらに、以下のプラン作成用知識:

action(speak(Text),[
],[
]).

から、アクション:

speak(' これは世界初の日本語ワープロです。')

の実行前条件(なし)、実行効果(なし)をプランに付加する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
precond([at(node4)]),
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
precond([at(node2)]),
action(speak(‘これは世界初の日本語ワープロです。')) ,
effect([])]
以上により、アクションでない抽象的タスクを含まないプランが完成する。完成したプランには、全てのアクションに関して、(動的に変化する)実行前条件と実行効果が付加されている。以上の処理により完成したプランは、プランDB制御部160の割込プランDB162に格納される。
図5は、完成したプランを模式的に示す図である。図5に示すように、完成したプランによれば、まず、ロボット初期位置であるnode6からnode4に移動し、続いて、node4からnode2に移動する。そして、node2において展示物の説明をする。このように、プラン作成部150は与えられたゴールに基づいて、複数のアクションを有するプランを作成することができる。
図6は、実施の形態にかかる移動ロボット10がプランを実行するときのプラン実行処理を示すフローチャートである。まず、ゴール受付部100がゴールを取得する(ステップS100)。次に、ゴール受付部100は、取得したゴールの種類を判断する。具体的には、通常ゴールであるか割込ゴールであるかを判断する。
通常ゴールである場合には(ステップS102,通常ゴール)、取得した通常ゴールをゴール保持部110の通常ゴール待ち行列114の最後尾に挿入する(ステップS104)。一方、割込ゴールである場合には(ステップS102,割込ゴール)、取得した割込ゴールをゴール保持部110の割込ゴール待ち行列112の最後尾に挿入する(ステップS106)。
次に、実行管理部120は、ゴール保持部110の割込ゴール待ち行列112に割込ゴールが存在するか否かを確認する。割込ゴールが存在する場合には(ステップS110,Yes)、割込ゴール待ち行列112のうち、先頭の割込ゴールを取り出す(ステップS112)。一方、割込ゴールが存在しない場合には(ステップS110,No)、実行管理部120は、さらに通常ゴール待ち行列114に通常ゴールが存在するか否かを確認する。通常ゴールが存在する場合には(ステップS120,Yes)、実行管理部120は、さらに実行中プランDB164にプランが存在するか否かを確認する。プランが存在しない場合には(ステップS122,No)、プラン作成部150は、通常ゴール待ち行列114からゴールを取り出す(ステップS124)。
次に、プラン作成部150は、通常ゴール待ち行列114から取り出したゴールに対応するプランを作成する(ステップS130)。次に、アクション実行部170は、プランDB制御部160の制御により、実行中プランDB164に格納されているプランをアクション単位で実行する(ステップS140)。ゴール保持部110にゴールが存在する場合には(ステップS150,Yes)、再びステップS110へ戻る。ゴール保持部110にゴールが存在しない場合には(ステップS150,No)、プラン実行処理を完了する。
一方、ステップS120において、通常ゴール待ち行列114に通常ゴールが存在しない場合には(ステップS120,No)、処理を終了する。また、ステップS122において、実行中プランDB164にプランが存在する場合には(ステップS122,Yes)、処理を終了する。
図7は、図6において説明したプラン作成処理(ステップS130)における詳細な処理を示すフローチャートである。プラン作成部150は、プラン作成を行うタイミングにおいて、アクション実行部170がアクションを実行中である場合には、アクションが終了するまで待機する。
そして、アクションの実行が終了すると(ステップS200,Yes)、ステップS112において割込ゴール待ち行列112から取り出した割込ゴール、またはステップS124において通常ゴール待ち行列114から取り出した通常ゴールに対するプランを作成する(ステップS202)。次に、作成したプランを割込プランDB162に格納する(ステップS204)。
次に、プランDB制御部160は、実行中プランDB164にプランが存在するか否かを確認する。プランが存在する場合には(ステップS206,Yes)、割込プランDB162に格納したプランのうち、実行中プランDB164に格納されているプランに影響を与えるプランを削除する(ステップS208)。なお、この処理については後に詳述する。
次に、プランDB制御部160は、割込プランDB162に割込プランが存在するか否かを確認する。プランが存在する場合には(ステップS210,Yes)、実行中プランDB164にあるプランを中断中プランDB166に移動する(ステップS220)。すなわち、実行中のプランを一時退避させる。
次に、割込プランDB162にあるプランを実行中プランDB164に移動する(ステップS222)。なお、割込プランDB162に複数のプランが格納されている場合には、いずれか1つのプランを選択し、選択したプランを実行中プランDB164に移動する。なお、いずれを選択するかは任意である。
また、他の例としては、例えば、実行前条件および実行効果が変化するアクションを含まないプランを優先して選択することとしてもよい。
ステップS220において、割込プランDB162に複数のプランが格納されていた場合には、ステップS220において選択したプラン以外のプランは実行中プランDB164から削除する(ステップS224)。そして、ステップS140へ進む。
一方、ステップS210において、割込プランDB162にプランが存在しない場合には(ステップS210,No)、ゴール保持部110から取り出したゴールを再びゴール保持部110の元の待ち行列の元の位置に戻す(ステップS226)。そして、ステップS140へ進む。すなわち、作成した割込プランが実行中プランDB164に格納されているプランに影響を与える場合には、このプランの実行は行わない。
なお、他の例としては、割込プランDB162にプランが存在しない場合には(ステップS210,No)、ゴール保持部110から取り出した割込ゴールを削除してもよい。このように、作成したプランが、実行中のプランに影響を与える場合には、ゴールを削除することにより、実行中のプランに影響を与えるプランを排除することとしてもよい。
図8は、図7において説明したステップS208において、実行中のプランに影響を与えるプランを選択する影響プラン選択処理を示すフローチャートである。実行中プランDB164に格納されているプラン(以下、第1プランと称する)「P1」に含まれるアクション「A1x」の実行前条件と、P2に含まれるアクション「A2x」の実行効果を比較する。そして、比較の結果に基づいて、第1の条件または第2の条件を満足する状態か否かを判断する。なお、第1の条件および第2の条件については後述する。
なお、前提として、実行中プランDB164に格納されているアクションの実行が完了すると、実行が完了したアクションは、実行中プランDB164から削除される。
第1の条件を満たす場合には(ステップS280,Yes)、第2アクションは、第1アクションの実行に影響を与えないと判断する(ステップS284)。また、第2の条件を満たす場合には(ステップS282,Yes)、同様に、第2アクションは、第1アクションの実行に影響を与えないと判断する(ステップS284)。これ以外の場合には(ステップS280,No、ステップS282,No)、第2アクションは、第1アクションの実行に影響を与えると判断する(ステップS286)。
図9は、第1の条件を説明するための図である。ここで、第1プラン「P1」のアクション「A1x」の実行前条件を「X」とする。第1の条件は、2つある。まず1つめは、アクション「A1x」の実行前条件「X」を終了させるような実行効果「terminates(X)」を有するアクション「A2x」が存在することである。2つめは、このアクション「A2x」よりの後のアクション「A2x+m」が存在し、このアクション「A2x+m」が「X」を開始するような実行効果「initiates(X)」を有することである。
このように、第2プラン「P2」中に「X」を終了させるような実行効果を有するアクションが存在する場合であっても、「X」を開始するような実行効果「initiates(X)」を有するアクションが存在する場合には、アクション「A2x」を実行する直前のタイミングにおいては、実行前条件「X」を満たす状態になっている。したがって、この場合には、新たに割込プランDB162に格納された第2プラン「P2」は、実行中のプランである第1プラン「P1」に影響を与えないと判断する。
図10は、第2の条件を説明するための図である。第2の条件は2つある。まず2つめは、第1の条件と同様に、アクション「A1x」の実行前条件「X」を終了させるような実行効果「terminates(X)」を有するアクション「A2x」が存在することである。2つめは、第1プラン「P1」のアクション「A1x」より前に実行されるアクション「A1x−n」が存在し、このアクション「A1x−n」が「X」を開始するような実行効果「initiates(X)」を有することである。
このように、第2プラン「P2」中に「X」を終了させるような実行効果を有するアクションが存在する場合であっても、「X」を開始するような実行効果「initiates(X)」を有するアクションが第1プラン「P1」中のアクション「A1x」よりも前に実行されるアクションとして存在する場合には、アクション「A2x」を実行する直前のタイミングにおいては、実行前条件「X」を満たす状態になっている。したがって、この場合には、新たに割込プランDB162に格納された第2プラン「P2」は、実行中のプランである第1プラン「P1」に影響を与えないと判断する。
また、図8には示していないが、第2プランに含まれる各アクションの実行効果が規定されていない場合には、第1プランに影響を与えないと判断することとする。実行効果が規定されてない場合には、第2プランの実行は状態の変化を伴わないので、第1プランに影響を及ぼさないからである。
また、割込プランを割り込みで実行させるタイミングは、現在実行中のアクションの直後である。しかし、例えば現在実行中のアクションの直後では、実行中のプランに影響を与えるが、現在実行中のアクションよりも後に実行されるアクションの後であれば影響を与えない場合には、このタイミングで割り込みにかかるアクションを実行させることとしてもよい。この場合の判断は、図8から図10を参照しつつ説明した処理により行う。
図11は、図6において説明したプラン実行処理(ステップS140)の詳細な処理を示すフローチャートである。プラン実行処理においては、まず、実行管理部120は、割込ゴール待ち行列112に割込ゴールが存在するか否かを確認する(ステップS300)。割込ゴールが存在する場合には(ステップS300,Yes)、ステップS112へ進む。
次に、実行管理部120は、実行中プランDB164に実行中のプランが存在するか否かを確認する。実行中のプランが存在する場合には(ステップS302,Yes)、このプランが空プランか否かを確認する。空プランでない場合には(ステップS304,No)、アクション実行部170は、実行中プランDB164中のプランに含まれるアクションを実行する(ステップS310)。次に、実行管理部120は、プランDB制御部160の各DB162,164,166の更新および信念DB130の更新を行う(ステップS312)。そして、再びステップS300に戻る。
一方、ステップS304において実行中プランDB164に存在するプランが空プランである場合には(ステップS304,Yes)、プランDB制御部160は、実行中プランDB164に存在する空プランを消去する(ステップS320)。
次に、プランDB制御部160は、中断中プランDB166に格納されている中断中プランが存在するか否かを確認する。中断中プランが存在する場合には(ステップS322,Yes)、プランDB制御部160は、中断中プランDB166に格納されている中断中プランを次に実行すべきプランとして実行中プランDB164に移動する(ステップS324)。そして、再びステップS300に戻る。
一方、ステップS322において中断中プランが存在しない場合には(ステップS322,No)、プラン実行処理は終了する。また、ステップS302において実行中プランDB164にプランが存在しない場合にも(ステップS302,No)、プラン実行処理は終了する。
以上、図6から図11を参照しつつ説明したプラン実行処理を、より具体的に説明する。ここでは、移動ロボット10は、以下に示すプラン、すなわちshow(exhibition1)というタスクに対するプランを実行中に割込ゴールを取得した場合の、より具体的な処理について説明する。

[precond([at(node6)]),
action(gotoNextNode(node4)),
effect([terminates(at(node6)), initiates(at(node4))]),
precond([at(node4)]),
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
precond([at(node2)]),
action(speak(‘これは世界初の日本語ワープロです。')) ,
effect([])]
まず、アクション実行部170は、プランに従い、以下のアクションを実行する。

gotoNextNode(node4)

このアクションの実行後、プランに付加されたアクションの実行効果「effect([terminates(at(node6)), initiates(at(node4))]), 」にしたがい、プラン作成用知識DB140にある信念:「belief(at(node6))」を「belief(at(node4))」に置き換える。その後、プラン作成部150は、プランを以下のように書き換える。

[precond([at(node4)]),
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
precond([at(node2)]),
action(speak(' これは世界初の日本語ワープロです。')),
effect([])]
図12は、このプランを模式的に示す図である。アクション「gotoNextNode(node4)」を実行したので、移動ロボット10の現在位置は、node4である。プラン作成用知識DB140には、移動ロボット10の現在位置がnode4である旨のプラン作成用知識が新たに格納されている。したがって、プラン作成部150は、図12に示すように、node4を初期状態とし、この状態からnode2へ移動するプランを新たに作成する。
このとき、ゴール受付部100が、外部から通常ゴールとして「show(exhibition2)」を取得したとする。この場合、通常ゴール待ち行列114の最後尾にこのゴールを通常ゴールとして挿入する(ステップS102,通常ゴール、ステップS104)。
このとき、割込ゴール待ち行列112には割込ゴールは存在しない(ステップS110,No)。また、通常ゴール待ち行列114には当該ゴールが存在し(ステップS120,Yes)、かつ実行中プランDB164には、node2で展示物を説明するプランが格納されている(ステップS122,Yes)。したがって、この場合、「show(exhibition2)」に対するプランは、現在実行中のプランの実行完了後に実行されることとなる。
また、ゴール受付部100が外部から割込ゴールとして「sayHello」を取得したとする。この場合、割込ゴール待ち行列112の最後尾にこのゴールを割込ゴールとして挿入する(ステップS102,割込ゴール、ステップS106)。このとき、割込ゴール待ち行列112に割込ゴールが存在するので(ステップS110,Yes)、実行管理部120は、プラン作成部150に対しこのプランの作成を指示する。
そして、プラン作成部150は、割込ゴール待ち行列112からこの割込ゴールを取り出し(ステップS112)、割込ゴールに対するプランを作成する(ステップS130)。
具体的には、プラン作成部150は、プラン作成用知識DB140に格納されている、午前中であればおはようと言う旨を示すプラン作成用知識:

htn(sayHello,[
now(morning)
],[
speak('おはよう')
]).
と、信念DB130に格納されている、現在午前中であるが、真偽可変であることを示す信念:

belief(now(morning)).
dy(now(_)).

に基づいて、以下のプランを作成する。

[precond([now(morning)]),speak('おはよう')]
さらに、以下の実行効果に関するプラン作成用知識:

action(speak(Text),[
],[
]).

に基づいて、先に作成したプランを以下のプランに変更する。

[precond([now(morning)]), action(speak('おはよう')), effect([])]

以上でプランが完成する(ステップS202)。
次に、プラン作成部150は、こうして作成されたプランを割込プランDB162に格納する(ステップS204)。図13は、作成されたプランを模式的に示す図である。このように、移動ロボット10の現在位置においておはようと言うというプランが作成される。
このとき、実行中プランDB164には実行中のプランが既に格納されているので(ステップS206,Yes)、実行管理部120は、作成されたプランが実行中のプランに影響を与えるか否かを判断する(ステップS208)。
割込ゴールに含まれているアクションに対する実行効果は規定されていない。すなわち、割込プランは、在実行中のプランに影響を及ぼさない。したがって、この割込プランを割込プランDB162に残す(ステップS208)。
割込プランDB162には割込プランが存在するので(ステップS210,Yes)、プランDB制御部160は、実行中プランDB164に格納されているプランを中断中プランDB166に移動する(ステップS220)。さらに、割込プランDB162に格納されているプランを実行中プランDB164に移動させる(ステップS222)。割込プランDB162には1つのプランのみが格納されていたので、以上でプラン作成処理(ステップS130)が完了する。このように、実行管理部120は、割込プランが実行中のプランに影響を与えない場合には、割込プランを実行中のプランに優先して実行させる。
このとき、割込ゴール待ち行列112に割込ゴールが存在せず(ステップS300,No)、実行中プランDB164に空でないプランが存在するので(ステップS302,Yes、ステップS304,No)、実行中プランDB164に格納されているプランを実行する(ステップS310)。
具体的には、アクション実行部170は、実行中プランDB164に新たに格納されたプラン:

[precond([now(morning)]), action(speak('おはよう')), effect([])]

にしたがい、アクション:speak('おはよう')を実行する。
このアクションの実行効果はない(effect([]))。したがって、信念DB130に格納されている信念の更新は行わない。
次に、実行中プランDB164に格納されているプランを、以下のように更新する(ステップS312)。すなわち、空プランに変更する。

[]
そして、再びステップS300に戻る。このとき実行中プランDB164には空プランのみが格納されているので(ステップS300,No、ステップS302,Yes、ステップS304,Yes)、プランDB制御部160は、空プランを削除する(ステップS320)。このようにプランが空プランになったことから、プランの実行が完了したことを認識することができる。
さらに、このとき、中断中プランDB166に中断中のプランが格納されているので(ステップS322,Yes)、中断中プランDB166に格納されているプランを実行中プランDB164に移動する(ステップS324)。そして、再びステップS300に戻り、通常プランを実行する。
具体的には、実行管理部120は、中断中であったプラン(図12参照)の実行を再開させる。
中断中のプランは以下のように記述される。

[precond([at(node4)])
action(gotoNextNode(node2)),
effect([terminates(at(node4)), initiates(at(node2))]),
precond([at(node2)]),
action(speak(‘これは世界初の日本語ワープロです。')),
effect([])]
アクション実行部170は、まず実行中プランDB164に格納されているこのプランにしたがい、「gotoNextNode(node2)」を実行する。そして、信念DB130に格納されている信念「at(node4)」を「at(node2)」に置換する。さらに、実行中プランDB164に格納されているプランを以下のように更新する。

[ precond([at(node2)]),
action(speak(' これは世界初の日本語ワープロです。')),
effect([])]
図14は、更新後のプランを模式的に示す図である。このように、現在のロボット位置は、node2であるので、node2において「これは世界初の日本語ワープロです。」と説明する旨のプランに更新される。
さらに、このタイミングにおいて、ゴール受付部100が外部から割込ゴール:guide(toilet)を取得したとする(ステップS100)。この場合、取得したゴールは割込ゴールであるので(ステップS102,割込ゴール)、割込ゴール待ち行列112の最後尾に挿入する(ステップS106)。割込ゴール待ち行列112にこの割込ゴールが存在するので(ステップS110,Yes)、プラン作成部150は、この割込ゴールを取り出し(ステップS112)、対応するプランを作成する(ステップS130)。
アクション実行部170は、具体的には、以下のプラン作成用知識:

htn(guide(Object),[
],[
show(Object)
]).

に基づいて、以下の第1プランを作成する。

[show(toilet)]
また、以下のプラン作成用知識:

htn(guide(Object),[
],[
tellLocation(Object)
]).

に基づいて、以下の第2プランを作成する。

[tellLocation(toilet)]

以上のように、同一の割込ゴールに対し、2つのプランを作成する。
これらのプランは、前述のプラン作成における処理と同様の処理により、それぞれ以下のようなプランに詳細化される。以上、プラン作成部150は、2つのプランを作成する(ステップS202)。

[precond([at(node2)]),
action(gotoNextNode(node4)),
effect([terminates(at(node2)), initiates(at(node4))]),
precond([at(node4)]),
action(gotoNextNode(node6)),
effect([terminates(at(node4)), initiates(at(node6))]),
precond([at(node6)]),
action(gotoNextNode(node5)),
effect([terminates(at(node6)), initiates(at(node5))]),
precond([at(node5)]),
action(speak(' ここはトイレです。')),
effect([])]

[precond([]),
action(speak('toiletはnode5にあります。')),
effect([])]
図15は、第1プランを模式的に示す図である。このように、第1プランは、node2からnode4、node6を経由してトイレまで移動するプランである。また、図16は、第2プランを模式的に示す図である。このように、第2プランは、node2において、トイレの場所を案内するプランである。
プラン作成部150は、これら2つのプランを割込プランDB162に格納する(ステップS204)。このとき、実行中プランDB164には実行中プランが格納されている(ステップS206,Yes)。そこで、実行管理部120は、プラン作成部150が作成した2つのプランがこの実行中プランに影響を与えるか否かを判断する。
実行中のプラン「speak(‘これは世界初の日本語ワープロです。')」には、実行前条件(precond([at(node2)]))が対応付けられている。したがって、このプランの直前にat(node2)が成り立たなければならない。これに対し、第1プランは、node5まで移動して処理が完了するため、実行前条件(precond([at(node2)]))を満たさない。一方、第2プランは、実行効果がなく、実行前条件(precond([at(node2)]))を満たす。したがって、第1プランは削除し、第2プランのみを残す(ステップS208)。
したがって、割込プランDB162には第2プランが存在する(ステップS210,Yes)。そこで、次に、実行中プランDB164に格納されている実行中のプランを中断中プランDB166に移動する(ステップS220)。次に、割込プランDB162にある第2プランを実行中プランDB164に移動する(ステップS222)。割込プランDB162にはプランが残されていないので、以上でプラン作成処理が完了する。
このように、本実施の形態においては、実行中のプランの実行前条件を満たさないプランは削除されるので、このようなプランが実行されることはない。したがって、適切なプランのみを割り込み実行させることができる。
次に、実行中プランDB164に新たに格納された第2プランを実行する(ステップS140)。具体的には、第2プラン:

[precond([]),
action(speak('toiletはnode5にあります。')),
effect([])]

にしたがい、アクション:

(speak('toiletはnode5にあります。')

を実行する。
このアクションの実行効果はない(effect([]))。したがって、信念DB130に格納されている信念の更新は行わない。
次に、実行中プランDB164に格納されているプランを、以下のように更新する(ステップS312)。すなわち、空プランに変更する。

[]
そして、再びステップS300に戻る。このとき実行中プランDB164には空プランのみが格納されているので(ステップS300,No、ステップS302,Yes、ステップS304,Yes)、プランDB制御部160は、空プランを削除する(ステップS320)。
さらにこのとき、中断中プランDB166に中断中のプランが格納されているので(ステップS322,Yes)、中断中プランDB166に格納されているプランを実行中プランDB164に移動する(ステップS324)。そして、再びステップS300に戻り、通常プランを実行する。
具体的には、実行管理部120は、中断中であったプラン(図14参照)の実行を再開させる。中断中のプランは以下のように記述される。

[precond([at(node2)]),
action(speak(‘ これは世界初の日本語ワープロです。')),
effect([])]
アクション実行部170はまず、実行中プランDB164に格納されているプランにしたがい、アクション:speak(‘ これは世界初の日本語ワープロです。')を実行する。このアクションの実行効果はない(effect([]))。したがって、信念DB130の更新を行わない。
次に、実行中プランDB164に格納されているプランを、以下のように更新する。

[]

空プランになったので、このプランの実行は無事に終了したことになる。従って、プランDB制御部160は、この空プランを実行中プランDB164から削除する。
また、プランDB制御部160にプランが存在せず、通常ゴール待ち行列114に1つの通常ゴール「show(exhibition2)」が存在する場合には(ステップS120,Yes、ステップS122,No)、プラン作成部150は、通常ゴール待ち行列114に格納されている通常ゴールを取り出し、(ステップS124)、この通常ゴールに対応するプランを作成する(ステップS130)。そして、作成したプランを実行する(ステップS140)。
図17は、実施の形態にかかる移動ロボット10のハードウェア構成を示す図である。移動ロボット10は、ハードウェア構成として、移動ロボット10におけるプラン実行処理を実行するプラン実行プログラムなどが格納されているROM52と、ROM52内のプログラムに従って移動ロボット10の各部を制御するCPU51と、移動ロボット10の制御に必要な種々のデータを記憶するRAM53と、ネットワークに接続して通信を行う通信I/F57と、各部を接続するバス62とを備えている。
先に述べた移動ロボット10におけるプラン実行プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フロッピー(R)ディスク(FD)、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
この場合には、プラン実行プログラムは、移動ロボット10において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
また、本実施の形態のプラン実行プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
そうした第1の変更例としては、本実施の形態においては、プラン実行装置を搭載した移動ロボットについて説明したが、プラン実行装置の適用対象は、移動ロボットに限定されるものではない。例えば、商品の在庫管理に関するプランを実行してもよい。商品の在庫数量の変化を信念情報とすることにより、商品の搬送個数、搬入個数等に応じて、割込プランを適切に実行することができる。
このように、プランの対象となるオブジェクトの状態が変化し、かつこの変化がプラン実行の可否に影響するような場合であっても、本実施の形態にかかるプラン実行装置は、オブジェクトに状態に基づいてプラン実行を管理するので、割込プランを適切に実行することができる。
第2の変更例について説明する。本実施の形態においては、図8から図10を参照しつつ説明したように、割込プランが実行中プランの実行前条件と異なる状態に変化させるようなアクションを含む場合であっても、実行中プランを実行する直前のタイミングにおいて実行前条件を満たす状態に戻っていることを条件として、実行中のプランに影響を与えないと判断したが、これにかえて、割込プランが実行中プランの実行前条件と異なる状態に変化させるようなアクションを含む場合には、このことを条件として、実行中のプランに影響を与えるとして、割り込みを禁止することとしてもよい。これにより、実行前条件と異なる状態から実行前条件を満たす状態に戻るか否かを判断する処理を省略することができる。
第3の変更例について説明する。本実施の形態においては、割込プランを複数のアクションに分割し、各アクションの実行効果と実行前条件とを参照することにより割り込み可否を判断したが、これにかえて、割込プラン自体の実行効果と実行前条件を参照することにより割り込み可否を判断することとしてもよい。
割込プラン中に信念情報である移動ロボットの処理状態が変化した場合であっても、このように実行中プランに復帰する時点で、復帰するアクションの実行前条件を満たせば、不都合なく復帰するアクションを実行することができる。
第4の変更例について説明する。本実施の形態においては、プラン作成部150は、割込ゴールに対し、複数の割込プランを作成し、アクション実行部170は、そのうち実行中のプランに影響を与えないアクションを実行した。これにかえて、プラン作成部150は、信念DB130に格納されている信念情報および、プラン作成用知識DB140に格納されているプラン作成用知識を利用して、実行中のプランに影響を与えないアクションのみを作成することとしてもよい。なお、この場合の作成処理においては、図8から図10を参照しつつ説明した影響プラン選択処理における条件を満たすプランを作成する。
本実施の形態にかかるプラン作成装置を備えた移動ロボット10の機能構成を示す図である。 プランとアクションの関係を示す図である。 信念DB130に格納されているトポロジカル地図を模式的に示す図である。 プラン作成用知識DB140が格納しているプラン作成用知識を模式的に示す図である。 プラン作成部150によって作成されたプランを模式的に示す図である。 実施の形態にかかる移動ロボット10がプランを実行するときのプラン実行処理を示すフローチャートである。 図6において説明したプラン作成処理(ステップS130)における詳細な処理を示すフローチャートである。 図7において説明したステップS208において、実行中のプランに影響を与えるプランを選択する影響プラン選択処理を示すフローチャートである。 第1の条件を説明するための図である。 第2の条件を説明するための図である。 図6において説明したプラン実行処理(ステップS140)の詳細な処理を示すフローチャートである。 このプランを模式的に示す図である。 作成されたプランを模式的に示す図である。 更新後のプランを模式的に示す図である。 第1プランを模式的に示す図である。 第2プランを模式的に示す図である。 実施の形態にかかる移動ロボット10のハードウェア構成を示す図である。
符号の説明
51 CPU
52 ROM
53 RAM
57 通信I/F
62 バス
10 移動ロボット
100 ゴール受付部
110 ゴール保持部
112 割込ゴール待ち行列
114 通常ゴール待ち行列
120 実行管理部
130 信念DB
140 プラン作成用知識DB
150 プラン作成部
160 プランDB制御部
162 割込プランDB
164 実行中プランDB
166 中断中プランDB
170 アクション実行部

Claims (12)

  1. 予め定められた順番に実行される複数のアクションを有する集合であるプランを、アクション単位で実行する実行手段と、
    前記プランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、
    現在の前記対象オブジェクトの状態を保持する状態保持手段と、
    前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、
    前記割込指示受付手段が所定の割込プランの前記割込指示を受け付けた場合に、前記状態保持手段が保持する現在の前記対象オブジェクトの状態と、前記実行情報保持手段が保持する前記割込プランの前記実行前条件および前記実行効果とを特定する割込情報特定手段と、
    現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致するか否かに基づいて、前記割込プランを実行するか否かを判断する割込可否判断手段と
    を備えたことを特徴とするプラン実行装置。
  2. 前記プランは、前記実行手段が実行する最小単位である前記アクションを複数有し、
    前記実行情報保持手段は、前記アクションと、前記アクションの実行直前に成立している必要のある前記対象オブジェクトの状態を示す前記実行前条件と、前記アクションの実行直後から成立する前記対象オブジェクトの状態を示す前記実行効果とを対応付けて保持し、
    前記割込情報特定手段は、前記実行手段が実行中の実行中アクションの前記実行効果と、前記実行中アクションの次に実行されるアクションの前記実行前条件とをさらに特定し、
    前記割込可否判断手段は、前記実行中アクションの前記実行効果と前記割込プランの前記実行前条件が一致するか否か、および前記割込プランの前記実行効果と前記実行中アクションの次に実行される前記アクションの前記実行前条件とが一致するか否かに基づいて、前記実行中アクションの次に前記割込プランを実行するか否かを判断することを特徴とする請求項1に記載のプラン実行装置。
  3. 前記割込可否判断手段は、現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致する場合に前記割込プランを実行することを特徴とする請求項1または2に記載のプラン実行装置。
  4. 前記割込情報特定手段は、前記実行中アクション以降に実行される複数の前記アクションの前記実行前条件および前記実行効果をさらに特定し、
    前記割込可否判断手段は、さらに前記実行中アクション以降に実行される所定のアクションの前記実行効果と前記割込プランの実行前条件が一致するか否か、および前記割込プランの前記実行効果と前所定のアクションの次に実行される前記アクションの前記実行前条件とが一致するか否かに基づいて、前記実行中アクション以降に実行される所定のアクションの次に前記割込プランを実行するか否かをさらに判断することを特徴とする請求項2または3に記載のプラン実行装置。
  5. 前記割込可否判断手段は、前記割込プランの前記実行前条件および前記実行効果が一致しない場合に、前記割込プランの割り込みを禁止することを特徴とする請求項1から3のいずれか一項に記載のプラン実行装置。
  6. 予め定められた順番に実行される複数のアクションを有する集合であるプランを、アクション単位で実行する実行手段と、
    前記プランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、
    現在の前記対象オブジェクトの状態を保持する状態保持手段と、
    前記実行手段が前記プランを実行しているときに、割込指示を受け付ける割込指示受付手段と、
    前記割込指示受付手段が前記割込指示を受け付けた場合に、前記実行情報保持手段が保持するプランのうち前記実行前条件および前記実行効果が、記状態保持手段が保持している現在の前記対象オブジェクトの状態と一致するプランを割込プランとして作成する割込プラン作成手段と、
    前記割込プラン作成手段が作成した前記割込プランの割り込みを行う割込制御手段と
    を備えたことを特徴とするプラン実行装置。
  7. 前記割込プラン作成手段は、現在の前記対象オブジェクトの状態を変更しない前記割込プランを作成することを特徴とする請求項に記載のプラン実行装置。
  8. 前記プランは、前記実行手段が実行する最小単位である前記アクションを複数有し、
    前記実行情報保持手段は、前記アクションと、前記アクションの実行直前に成立している必要のある前記対象オブジェクトの状態を示す前記実行前条件と、前記アクションの実行直後から成立する前記対象オブジェクトの状態を示す前記実行効果とを対応付けて保持し、
    前記割込プラン作成手段は、前記プランの前記実行前条件と前記実行手段が実行中の実行中アクションの前記実行効果とが一致し、前記プランの実行効果と前記実行中アクションの次に実行されるアクションの前記実行前条件と一致するプランを前記割込プランとして作成することを特徴とする請求項6または7に記載のプラン実行装置。
  9. プラン実行装置において実行されるプラン実行方法であって、
    前記プラン実行装置は、
    予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、
    現在の前記対象オブジェクトの状態を保持する状態保持手段と
    を備え、
    実行手段が、前記プランを、アクション単位で実行する実行ステップと、
    割込指示受付手段が、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
    割込情報特定手段が、前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記状態保持手段が保持する現在の前記対象オブジェクトの状態と、前記実行情報保持手段が保持する前記割込プランの前記実行前条件および前記実行効果とを特定する割込情報特定ステップと、
    割込可否判断手段が、現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致するか否かに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップと
    を有することを特徴とするプラン実行方法。
  10. プラン実行装置において実行されるプラン実行方法であって、
    前記プラン実行装置は、
    予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、
    現在の前記対象オブジェクトの状態を保持する状態保持手段と
    を備え、
    実行手段が、前記プランを、アクション単位で実行する実行ステップと、
    割込指示受付手段が、前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
    割込プラン作成手段が、前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行情報保持手段が保持するプランのうち前記実行前条件および前記実行効果が、記状態保持手段が保持している現在の前記対象オブジェクトの状態と一致するプランを割込プランとして作成する割込プラン作成ステップと、
    割込制御手段が、前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップと
    を有することを特徴とするプラン実行方法。
  11. プラン実行処理をコンピュータに実行させるためのプログラムであって、
    前記コンピュータは、
    予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、
    現在の前記対象オブジェクトの前記対象オブジェクトの状態を保持する状態保持手段と
    を備え、
    前記プランを、アクション単位で実行する実行ステップと、
    前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
    前記割込指示受付ステップにおいて所定の割込プランの前記割込指示を受け付けた場合に、前記状態保持手段が保持する現在の前記対象オブジェクトの状態と、前記実行情報保持手段が保持する前記割込プランの前記実行前条件および前記実行効果とを特定する割込情報特定ステップと、
    現在の前記対象オブジェクトの状態、前記割込プランの前記実行前条件および前記実行効果が一致するか否かに基づいて、前記割込プランを実行するか否かを判断する割込可否判断ステップと
    前記コンピュータに実行させることを特徴とするプログラム。
  12. プラン実行処理をコンピュータに実行させるためのプログラムであって、
    前記コンピュータは、
    予め定められた順番に実行される複数のアクションを有する集合であるプランと、前記プランの実行により変化し得る対象オブジェクトの状態であって、前記プランの実行直前に成立している必要のある前記対象オブジェクトの状態を示す実行前条件と、前記プランの実行直後から成立する前記対象オブジェクトの状態を示す実行効果とを対応付けて保持する実行情報保持手段と、
    現在の前記対象オブジェクトの前記対象オブジェクトの状態を保持する状態保持手段と
    を備え、
    前記プランを、アクション単位で実行する実行ステップと、
    前記実行ステップにおいて前記プランを実行しているときに、割込指示を受け付ける割込指示受付ステップと、
    前記割込指示受付ステップにおいて前記割込指示を受け付けた場合に、前記実行情報保持手段が保持するプランのうち前記実行前条件および前記実行効果が、記状態保持手段が保持している現在の前記処対象オブジェクトの状態と一致するプランを割込プランとして作成する割込プラン作成ステップと、
    前記割込プラン作成ステップにおいて作成した前記割込プランの割り込みを行う割込制御ステップと
    前記コンピュータに実行させることを特徴とするプログラム。
JP2005084460A 2005-03-23 2005-03-23 プラン実行装置、プラン実行方法およびプログラム Expired - Fee Related JP4357442B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005084460A JP4357442B2 (ja) 2005-03-23 2005-03-23 プラン実行装置、プラン実行方法およびプログラム
US11/213,891 US7770171B2 (en) 2005-03-23 2005-08-30 Plan executing apparatus, method of plan execution, and computer program product therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005084460A JP4357442B2 (ja) 2005-03-23 2005-03-23 プラン実行装置、プラン実行方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2006268343A JP2006268343A (ja) 2006-10-05
JP4357442B2 true JP4357442B2 (ja) 2009-11-04

Family

ID=37036675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005084460A Expired - Fee Related JP4357442B2 (ja) 2005-03-23 2005-03-23 プラン実行装置、プラン実行方法およびプログラム

Country Status (2)

Country Link
US (1) US7770171B2 (ja)
JP (1) JP4357442B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367798B2 (en) 2012-09-20 2016-06-14 Brain Corporation Spiking neuron network adaptive control apparatus and methods
US20150005937A1 (en) * 2013-06-27 2015-01-01 Brain Corporation Action selection apparatus and methods
US9489623B1 (en) 2013-10-15 2016-11-08 Brain Corporation Apparatus and methods for backward propagation of errors in a spiking neuron network

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0266800B1 (en) * 1986-11-07 1995-03-15 Nec Corporation Data processor having different interrupt processing modes
US5293591A (en) * 1991-06-10 1994-03-08 Advanced Micro Devices, Inc. Processing system including memory selection of multiple memories and method in an interrupt environment
JP2597283B2 (ja) 1992-12-18 1997-04-02 エルグ株式会社 割込みにおけるスケジューリング方式
US5774711A (en) * 1996-03-29 1998-06-30 Integrated Device Technology, Inc. Apparatus and method for processing exceptions during execution of string instructions
US5864701A (en) * 1997-02-14 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay associated with mask flag transition
US6633942B1 (en) * 1999-08-12 2003-10-14 Rockwell Automation Technologies, Inc. Distributed real-time operating system providing integrated interrupt management
US6662297B1 (en) * 1999-12-30 2003-12-09 Intel Corporation Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism
US6883037B2 (en) * 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
JP2004283958A (ja) 2003-03-20 2004-10-14 Sony Corp ロボット装置、その行動制御方法及びプログラム
JP4070669B2 (ja) 2003-06-30 2008-04-02 株式会社東芝 プラン実行装置
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7194337B2 (en) * 2003-10-31 2007-03-20 Hewlett-Packard Development Company, Lp Agent-based operation of a robotic device
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7421521B2 (en) * 2004-04-05 2008-09-02 Intel Corporation System, method and device for real time control of processor
JP2005316599A (ja) * 2004-04-27 2005-11-10 Matsushita Electric Ind Co Ltd 割込制御装置
US7209994B1 (en) * 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7487503B2 (en) * 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor

Also Published As

Publication number Publication date
US20060218555A1 (en) 2006-09-28
JP2006268343A (ja) 2006-10-05
US7770171B2 (en) 2010-08-03

Similar Documents

Publication Publication Date Title
CN101690132B (zh) 用于执行一网域主机配置协议请求的方法和设备
JP5845016B2 (ja) 地図差分データ作成装置及び地図差分データ作成方法
JP2004062463A (ja) プログラム実行装置
KR100420459B1 (ko) 에이전트 시스템과 그 정보 처리 방법
JP4357442B2 (ja) プラン実行装置、プラン実行方法およびプログラム
JP2007264198A (ja) 対話装置、対話方法、対話システム、コンピュータプログラム及び対話シナリオ生成装置
CN111859198A (zh) 页面跳转方法、页面跳转系统、客户端设备及服务端设备
EP1164541A2 (en) Method of expressing crowd movement in game, storage medium, and information processing apparatus
CN112783619A (zh) 一种任务调度方法、装置和自动驾驶系统
CN103377405A (zh) 部署和修改面向服务架构部署环境模型的方法和系统
JP4442430B2 (ja) プログラマブル・コントローラ・システム、そのコントローラ、プログラム
JP2007048094A (ja) プラン実行装置、プラン実行方法およびプラン実行プログラム
JP7465147B2 (ja) 車載制御装置、サーバ、検証システム
JP3688462B2 (ja) 情報処理装置及び方法並びに情報処理用プログラムを記録した記録媒体
JP2001005678A (ja) ネットワーク型情報処理装置及び方法
JP2005092708A (ja) ソフトウェア更新システム及びソフトウェア更新方法並びにコンピュータプログラム
CN113918196B (zh) 数据处理方法、升级方法、装置、服务器及移动机器人
JP7378674B1 (ja) プログラマブルロジックコントローラ、推論実行システム、推論実行方法、および、プログラム
CN113407321B (zh) 基于计算图的任务型会话管理框架、设备及存储介质
JP4005984B2 (ja) プラン実行方法とそのシステム、プログラム
JP2013020494A (ja) ソフトウェア実行システムおよびソフトウェア実行方法およびプログラム
KR102309714B1 (ko) 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치
US20230306334A1 (en) Task assignment in autonomous mobile devices
JP2019016980A (ja) 伝送経路設計支援装置
JP4550278B2 (ja) 遠隔計算機処理

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090604

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090707

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090804

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120814

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120814

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees