(57)【特許請求の範囲】
【請求項１】
複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、
ロボットの作業処理を記述した作業記述を格納する格納手段と、
前記機能モジュールに前記作業記述の実行を命令する作業記述実行部と、
を有し、
前記複数の機能モジュールの各々は、前記作業記述実行部により命令があった作業記述に基づき処理を行うと共に、前記機能モジュールにて行う各処理と、前記複数の機能モジュールのうち拘束させる機能モジュールと、拘束される機能モジュールとの対応情報を拘束条件管理情報として有しており、前記拘束条件管理情報を参照して、前記作業記述実行部により命令された作業記述に基づいて行っている処理に応じて前記拘束させる機能モジュールを拘束させ、
前記機能モジュールは、
前記作業記述実行部より前記作業記述が命令されると、前記拘束条件管理情報を参照し、
前記拘束される機能モジュールがある場合は、前記作業記述実行部からの前記拘束される機能モジュールへの命令を不許可とし、
前記機器を制御して、ロボットに作業を実行させることを特徴とするロボットシステム。
【請求項２】
複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、
ロボットの作業処理を記述した作業記述を格納する格納手段と、
前記機能モジュールに前記作業記述の実行を命令する作業記述実行部と、
を有し、
前記複数の機能モジュールの各々は、前記作業記述実行部により命令があった作業記述に基づき処理を行うと共に、前記機能モジュールにて行う各処理と、前記複数の機能モジュールのうち拘束させる機能モジュールと、拘束される機能モジュールとの対応情報を拘束条件管理情報として有しており、前記拘束条件管理情報を参照して、前記作業記述実行部により命令された作業記述に基づいて行っている処理に応じて前記拘束させる機能モジュールを拘束させ、
前記複数の機能モジュールのうち少なくとも１つは、前記作業記述実行部からの命令に基づいて、他の機能モジュールを制御し、前記他の機能モジュールに前記機器を制御させて、ロボットに作業を実行させることを特徴とするロボットシステム。
【請求項３】
複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、
ロボットの作業処理を記述した作業記述を格納する格納手段と、
前記機能モジュールに前記作業記述の実行を命令する作業記述実行部と、
を有し、
前記複数の機能モジュールの各々は、前記作業記述実行部により命令があった作業記述に基づき処理を行うと共に、前記機能モジュールにて行う各処理と、前記複数の機能モジュールのうち拘束させる機能モジュールと、拘束される機能モジュールとの対応情報を拘束条件管理情報として有しており、前記拘束条件管理情報を参照して、前記作業記述実行部により命令された作業記述に基づいて行っている処理に応じて前記拘束させる機能モジュールを拘束させ、
前記機能モジュールは、
前記作業記述に基づいて、拘束させる必要のなくなった機能モジュールが存在する場合は、前記拘束させる必要のなくなった機能モジュールの拘束を解除することを特徴とするロボットシステム。
【請求項４】
複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、
ロボットの作業処理を記述した作業記述を格納する格納手段と、
前記機能モジュールに前記作業記述の実行を命令する作業記述実行部と、
を有し、
前記複数の機能モジュールの各々は、前記作業記述実行部により命令があった作業記述に基づき処理を行うと共に、前記機能モジュールにて行う各処理と、前記複数の機能モジュールのうち拘束させる機能モジュールと、拘束される機能モジュールとの対応情報を拘束条件管理情報として有しており、前記拘束条件管理情報を参照して、前記作業記述実行部により命令された作業記述に基づいて行っている処理に応じて前記拘束させる機能モジュールを拘束させ、
前記機能モジュールは、
前記拘束条件管理情報を参照し、前記拘束される機能モジュールがある場合は、前記拘束される機能モジュールが前記機器を制御して、ロボットに特定の作業を実行させることを拘束することを特徴とするロボットシステム。
【請求項５】
複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、
ロボットの作業処理を記述した作業記述を格納する格納手段と、
前記機能モジュールに前記作業記述の実行を命令する作業記述実行部と、
を有し、
前記複数の機能モジュールの各々は、前記作業記述実行部により命令があった作業記述に基づき処理を行うと共に、前記機能モジュールにて行う各処理と、前記複数の機能モジュールのうち拘束させる機能モジュールと、拘束される機能モジュールとの対応情報を拘束条件管理情報として有しており、前記拘束条件管理情報を参照して、前記作業記述実行部により命令された作業記述に基づいて行っている処理に応じて前記拘束させる機能モジュールを拘束させ、
前記作業記述は、優先度を有し、
前記機能モジュールは、
前記作業記述実行部より前記作業記述が命令されると、前記作業記述の優先度を取得することを特徴とするロボットシステム。
【請求項６】
前記機能モジュールは、前記拘束条件管理情報を参照し、拘束される機能モジュールがある場合は、前記作業記述実行部からの、前記拘束される機能モジュールへの命令を不許可とし、
前記拘束される機能モジュールは、
前記作業記述実行部より新たな作業記述が命令されると、前記新たな作業記述の優先度を取得し、前記優先度と、前記新たな優先度とを比較し、前記新たな優先度の方が大きい場合は、前記拘束させる機能モジュールに、拘束の解除を要求して、前記機器を制御し、ロボットに前記新たな作業記述を実行させることを特徴とする請求項５記載のロボットシステム。
【請求項７】
複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、
ロボットの作業処理を記述した作業記述を格納する格納手段と、
前記機能モジュールに前記作業記述の実行を命令する作業記述実行部と、
を有し、
前記複数の機能モジュールの各々は、前記作業記述実行部により命令があった作業記述に基づき処理を行うと共に、前記機能モジュールにて行う各処理と、前記複数の機能モジュールのうち拘束させる機能モジュールと、拘束される機能モジュールとの対応情報を拘束条件管理情報として有しており、前記拘束条件管理情報を参照して、前記作業記述実行部により命令された作業記述に基づいて行っている処理に応じて前記拘束させる機能モジュールを拘束させ、
前記機能モジュールは、
不具合を発生した不調機能モジュールが存在する場合は、前記作業記述実行部からの、前記不調機能モジュールへの命令を不許可とすることを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器の制御を行う複数の機能モジュールと、作業記述に基づいてこれらの機能モジュールを非同期に動作させて、全体として作業を実現する作業記述実行部を有するロボットシステムに関する。
【背景技術】
【０００２】
複数の機能モジュールに非同期に命令を与えて、ユーザが意図する作業をロボットに行わせる場合、ある機能モジュールがある動作を実行中に、特定の機能モジュールに並列に命令を与えてはいけないといった拘束条件が生じることがある。例えば、ロボットの頭部に接続されたカメラで画像処理中に、頭部の首振りを行ってはいなけない等である。
【０００３】
従来から、ロボットの拘束条件を管理し、適切に作動させるために様々な技術が提案されている。
【０００４】
例えば、関節で接続された複数のリンクから成るロボットの全体制御を、当該リンクに任意の数の拘束条件を与えることによって、ロボットが不自然な姿勢になることを防ぐ技術がある(特許文献1)。
【０００５】
また、例えば、ロボットの運動状態によって生じるリンク重心位置などの運動拘束条件を線形等式として、関節角速度リミッタを関節角変化量などの線形不等式として表し、拘束条件を計算毎に変更することによって、移動やバランス維持、アーム作業といった複数のタスクを同時に実行することができる技術がある (特許文献2)。
【特許文献１】特開2003-058907号公報
【特許文献２】特開2004-306231号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
作業記述を作成することによって、様々な作業を行わせることを可能にするロボットシステムでは、拘束条件に反する作業記述によって、ロボットが予期せぬ動作を行うことを防がなければならないため、拘束条件のインプリメントは必要不可欠である。そして、機能モジュールの中には、複数の機能モジュールを用いて複合的な機能を実現するものもあり、また、機能モジュールは追加されることもあるため、拘束条件は容易に変更できなければならない。そこで、一般的には、各機能モジュールがどの状態の時に、どの機能モジュールには命令を出してはいけないという拘束条件表を作成し、一括して拘束条件管理部が管理する方法をとることになる。しかし、当該方法をとると、作業記述実行部から各機能モジュールに命令が出る毎に、各機能モジュールは拘束条件管理部に対して拘束条件の検索を行わなければならず、拘束条件が増加すると、機能モジュールが命令を受けてからロボットが動作を実行するまでに時間がかかってしまう。
【０００７】
本発明の目的は、機能モジュールや拘束条件が増加しても、機能モジュールの競合を防ぎ、かつ、機能モジュールが命令を受けてから、ロボットが動作を実行するまでの時間を短縮させるロボットシステム及びその制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、複数の機器と、前記複数の機器の制御を行う複数の機能モジュールとを有するロボットシステムにおいて、ロボットに作業を実行させるための作業記述を格納する格納手段と、前記機能モジュールに前記作業記述を命令する作業記述実行部と、を有し、前記機能モジュールは、前記機能モジュールが相互に競合することを防ぐための拘束条件を有することを特徴とするロボットシステムである。これによれば、機能モジュールに命令が出された場合は、予め機能モジュール毎に有している拘束条件に基づいて、命令の許可・不許可を判断可能なロボットシステムを提供することができる。
【０００９】
また、本発明は、前記機能モジュールは、前記作業記述実行部より前記作業記述が命令されると、前記拘束条件を参照し、拘束すべき機能モジュールがある場合は、前記作業記述実行部からの前記拘束すべき機能モジュールへの命令を不許可とし、前記機器を制御して、ロボットに作業を実行させることを特徴とするロボットシステムである。これによれば、機能モジュールに命令が出された場合は、予め機能モジュール毎に有している拘束条件に基づいて、命令の許可・不許可を判断することによって、機能モジュールの競合を防ぎ、命令を受けてから実行するまでの時間を短縮可能なロボットシステムを提供することができる。
【００１０】
また、本発明は、前記複数の機能モジュールのうち少なくとも1つは、前記作業記述実行部からの命令に基づいて、他の機能モジュールを制御し、前記他の機能モジュールに前記機器を制御させて、ロボットに作業を実行させることを特徴とするロボットシステムである。これによれば、複数の機能モジュールを用いて、ロボットに複雑な作業を実行させることが可能なロボットシステムを提供することができる。
【００１１】
また、本発明は、前記機能モジュールは、前記作業記述に基づいて、拘束する必要のなくなった機能モジュールが存在する場合は、前記拘束する必要のなくなった機能モジュールの拘束を解除することを特徴とするロボットシステムである。これによれば、拘束する必要のなくなった機能モジュールは、作業技術実行部からの命令を受け付けることができる。
【００１２】
また、本発明は、前記機能モジュールは、前記拘束条件を参照し、拘束すべき機能モジュールがある場合は、前記拘束すべき機能モジュールが前記機器を制御して、ロボットに特定作業を実行させることを拘束することを特徴とするロボットシステムである。これによれば、ロボットが特定の作業を行っている場合に、ロボットに新たな命令がなされても、当該命令を受け付けないロボットシステムを提供することができる。
【００１３】
また、本発明は、前記作業記述は、優先度を有し、前記機能モジュールは、前記作業記述実行部より前記作業記述が命令されると、前記作業記述の優先度を取得することを特徴とするロボットシステムである。これによれば、ロボットが特定作業を行っている場合に、ロボットに優先度の高い新たな命令がなされると、当該新たな命令を実行可能なロボットシステムを提供することができる。
【００１４】
また、本発明は、前記機能モジュールは、前記拘束条件を参照し、拘束すべき機能モジュールがある場合は、前記作業記述実行部からの、前記拘束すべき機能モジュールへの命令を不許可とし、前記拘束すべき機能モジュールは、前記作業記述実行部より新たな作業記述が命令されると、前記新たな作業記述の優先度を取得し、前記優先度と、前記新たな優先度とを比較し、前記新たな優先度の方が大きい場合は、前記機能モジュールに、拘束の解除を要求して、前記機器を制御し、ロボットに前記新たな作業記述を実行させることを特徴とするロボットシステムである。これによれば、ロボットが特定作業を行っている場合に、ロボットに優先度の高い新たな命令がなされると、当該新たな命令を実行可能なロボットシステムを提供することができる。
【００１５】
また、本発明は、前記機能モジュールは、不具合を発生した不調機能モジュールが存在する場合は、前記作業記述実行部からの、前記不調機能モジュールへの命令を不許可とすることを特徴とするロボットシステムである。これによれば、不調機能モジュールによってロボットが予期しない動作を行うことを防ぐことが可能なロボットシステムを提供することができる。
【発明の効果】
【００１６】
本発明では、機能モジュールに命令が出された場合は、予め機能モジュール毎に有している拘束条件に基づいて、命令の許可・不許可を判断することによって、機能モジュールの競合を防ぎ、命令を受けてから実行するまでの時間を短縮することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について図を参照しつつ説明する。
【実施例１】
【００１８】
実施例1では、拘束すべき機能モジュールがある場合は、当該機能モジュールに拘束をかけ、機能モジュールが競合することなく、ユーザからの指示をロボットに実行させることについて説明する。
【００１９】
図1はロボットのハードウェア構成図である。本発明におけるロボットには、ロボット全体の制御処理を行うCPU1、ロボットの状態等の表示を行う表示部2、ユーザからの指示を受け付ける入力部3、ユーザからの指示を外部のサーバ等から無線通信で受け付ける通信部4、地図データ、シナリオスクリプト、拘束条件等を格納する格納部5、が設けられている。また、走行部9、アーム10の駆動制御を行う駆動部制御ボード6、ステレオカメラ8からの立体画像を処理する画像処理ボード7が設けられている。なお、走行部9は、走行車輪等のロボット移動手段であり、アーム10は、エレベータボタンの操作等を行うものである。
【００２０】
図2はCPU1の機能ブロック図である。本発明におけるロボットシステムのソフトウェアは、シナリオスクリプト24、ユーザからの指示に対応するシナリオを機能モジュール27に命令する作業記述実行部21、機能モジュール27の競合を防ぐための条件が記述された拘束条件25、当該拘束条件を機能モジュールに通知する拘束条件管理部22、ロボットに自律移動を行わせるための地図データ26、当該地図データを機能モジュール27に通知する計画経路部23とから構成されている。ユーザから入力部3等より指示があると、当該指示に対応するシナリオを作業記述実行部21が、シナリオスクリプト24から抽出し、機能モジュール27に命令する。機能モジュール27は当該命令を受け、駆動部制御ボード6を通じて、走行部9、アーム10を制御し、ロボットにシナリオを実行させる。また、拘束条件管理部22は、機能モジュール毎に設定された拘束条件を機能モジュールに持たせている。機能モジュール27には、自律移動系モジュール27a、走行系モジュール27b、腕系モジュール27c等があり、これらの機能モジュールが走行部9等を制御することによって、ロボットに様々な作業を実行させる。
【００２１】
まず、作業記述実行部21から自律移動系モジュール27aにエレベータを利用して7Fの現在地から1Fの目的地まで移動せよというシナリオが命令された時の各機能モジュールの関係を図4に示す。図3に示すように、ロボットは、シナリオに基づいて、状態を遷移して、現在地から目的地まで移動する。走行系モジュール27bは、走行部9を制御し、腕系モジュール27cは、アーム10を制御し、自律移動系モジュール27aは、走行系モジュール27b、腕系モジュール27cを制御することで、ロボットに様々な作業をさせることができる。各機能モジュールは、拘束条件等を管理する拘束条件管理オブジェクトを有し、拘束条件管理オブジェクトには、現在の拘束元、機能モジュールが各状態の時に拘束すべき機能モジュール名が記述されている。機能モジュールに、作業記述実行部21や他の機能モジュールからの命令があると、現在の拘束元を参照し、拘束元がある場合は、原則として命令を不許可とする。自律移動系モジュール27aが、作業記述実行部21より目的地への自律移動を命令されると、通常走行を行う状態に遷移し、走行系モジュール27bに目的地の座標等を通知する。走行系モジュール27bは、当該通知を受け、拘束条件管理オブジェクトの現在の拘束元を自律移動系モジュール27aとした後、走行部9を制御し、ロボットを当該目的地まで移動させる。このように、自律移動系モジュール27aは、複数の機能モジュールを用いて、複合的な機能を実現しており、この場合に、作業記述実行部21から走行系モジュール27bへの別のシナリオの命令を許可してしまうと、当該目的地の座標まで移動することが妨げられてしまう。そのため、走行系モジュール27bを拘束し、作業記述実行部21からの動作命令を不許可としている。ただし、走行系モジュール27bは拘束元である自律移動系モジュール27aからの命令は許可する。自律移動系モジュール27aからの命令を許可しなければ、走行部9を制御して、通常走行を行うことを実現できないからである。また、腕系モジュール27cの拘束条件管理オブジェクトには、拘束元の機能モジュール名が記述されていない。すなわち、腕系モジュール27cは拘束されていないため、作業記述実行部21からの動作命令を許可することができる。これによって、例えば、ロボットは、通常走行をしながら腕を動かして、ユーザに場所案内等を行うことができる。
【００２２】
次に、自律移動系モジュール27aが、エレベータ乗降中の状態に遷移した時の各機能モジュールの関係を図5に示す。自律移動系モジュール27aがエレベータ乗降中の状態では、ロボットは、以下の動作を行う。まず、エレベータの外ボタン操作を行い、エレベータを7Fに到着させる。エレベータが7Fに到着すると、エレベータに乗り込み、エレベータ内ボタンを操作して、エレベータが1Fに到着するようにする。エレベータが1Fに到着すると、エレベータから降りる。図5に示すように、自律移動系モジュール27aは、走行系モジュール27bと腕系モジュール27cに対して拘束をかけている。エレベータのボタン操作では、ロボットはボタンの前で、腕を動かし操作を行う。当該操作を行っている時に、作業記述実行部21から走行系モジュール27bへの動作命令を許可してしまうと、ロボットの位置がずれてしまい、ボタン操作を適切に行えなくなる可能性がある。また、ロボットがエレベータへ乗り込む時に、腕系モジュール27cへの動作命令を許可してしまうと、腕をエレベータの入り口にぶつけるといった危険性がある。そのため、当該拘束を行っており、走行系モジュール27b、腕系モジュール27cの拘束条件管理オブジェクトにおける現在の拘束元は自律移動系モジュール27aとなっている。
【００２３】
続いて、自律移動系モジュール27aが、待機の状態に遷移した時の各機能モジュールの関係を図6に示す。待機の状態とは、ロボットが、エレベータが7Fから1Fに到着するまでの状態のことである。自律移動系モジュール27aは、走行系モジュール27bと腕系モジュール27cに対しての拘束を解除しているため、それぞれの拘束条件管理オブジェクトの拘束元には、何も記述されていない。エレベータが1Fに到着するまでは、エレベータ内で、移動したり、腕を動かしたりしても、自律移動の妨げにはならないからである。
【００２４】
このように、シナリオを解析した作業記述実行部21からの命令に基づいて、自律移動系モジュール27aの状態が遷移することで、ロボットが目的地まで移動することを実現している。以下に、図9を用いて、上述した自律移動系モジュール27aの処理について説明する。
【００２５】
ステップS001において、入力部3または通信部4から、1階の目的地まで荷物を運べという指示があると、当該指示を解析した作業記述実行部21は、シナリオスクリプト内の当該指示に対応した部分(自律移動モジュールを使って指定の場所まで移動し、荷物を指定の場所に腕系モジュールを用いて置く)を実行する。作業記述実行部21は、その記述に従って、自律移動系モジュール27aに1Fの目的地まで移動せよという指示の実行を命令する。処理はステップS002へ移行する。
【００２６】
ステップS002において、自律移動系モジュール27aは、拘束条件管理オブジェクトの拘束カウンタを参照して、現在の拘束があるか否かを判定する。これによれば、自律移動系モジュール27a自身が拘束条件を有しているため、作業記述実行部21からの命令を許可するか否かの判定を即座に行うことができる。現在の拘束があった場合は、処理はステップS004へ移行し、作業記述実行部21に動作命令を不許可とすることを通知する。作業記述実行部21は、自律移動系モジュール27aから当該通知を受け取り、表示部2にユーザの指示を実行できない旨を通知する。現在の拘束がない場合は、拘束条件管理オブジェクトの現在の拘束元を作業記述実行部21とし、自律移動系モジュール27aは、ロボットをエレベータ前まで移動させるために、通常走行の状態になる。処理はステップS003へ移行する。
【００２７】
ステップS003において、自律移動系モジュール27aは、現在の状態(通常走行)と1つ前の状態とで拘束する機能モジュールが異なるか否かを判定する。拘束する機能モジュールが異なる場合は、処理はステップS005へ、拘束する機能モジュールが同じ場合は、処理はステップS006へ移行する。なお、作業記述実行部21から機能モジュールに初めて命令があった場合は、待機状態と現在の状態とで当該判定を行う。処理はステップS005へ移行する。
【００２８】
ステップS005において、自律移動系モジュール27aは、新たに拘束すべき機能モジュールを拘束する。また、1つ前の状態では拘束する必要があったが、現在の状態では拘束する必要のなくなった機能モジュールの拘束を解除する。ここでは、走行系モジュール27bを拘束することによって、作業記述実行部21から、走行系モジュール27bへの動作命令を不許可とし、ロボットを現在地から目的地まで確実に移動させることができる。なお、腕系モジュール27cに拘束をかけていないのは、ロボットが通常走行を行っている状態では、腕を動かしても自律移動を妨げることにはならないからであり、例えば、通常走行をしながら腕を動かして、ユーザに道案内を行うことができる。処理はステップS006へ移行する。
【００２９】
ステップS006において、自律移動系モジュール27aは、作業記述実行部21によって命令された動作を実行するため、走行系モジュール27bに命令を出す。走行系モジュール27bは、当該命令を受け、走行部9を制御し、命令された位置(エレベータ前)までロボットを移動させる。処理はステップS007へ移行する。
【００３０】
ステップS007において、自律移動系モジュール27aは、作業記述実行部21によって命令された動作が全て完了したか否かを判定する。動作が完了した場合は、処理は終了する。一方、動作が完了していない場合は、処理はステップS008へ移行し、自律移動系モジュール27aは、次の状態(エレベータ乗降)へ遷移する。処理は再びステップS003に戻る。
【００３１】
ステップS003において、自律移動系モジュール27aは、現在の状態(エレベータ乗降)と1つ前の状態(通常走行)とで拘束する機能モジュールが異なるか否かを判定する。エレベータ乗降の状態では、ロボットにエレベータ乗降を行わせるために自律移動系モジュール27aは、走行系モジュール27b、腕系モジュール27cに命令を実行させる。そのため、走行系モジュール27b、腕系モジュール27cを拘束する。拘束する機能モジュールは1つ前の状態(通常走行)とは異なるので、処理はステップS005へ移行する。
【００３２】
ステップS005において、自律移動系モジュール27aは、新たに腕系モジュール27cを拘束する。これによって、作業記述実行部21から、走行系モジュール27b、腕系モジュール27cへの動作命令を不許可とし、ロボットに自律移動を確実に行わせることができる。処理はステップS006へ移行する。
【００３３】
ステップS006において、自律移動系モジュール27aは、走行系モジュール27b、腕系モジュール27cにエレベータ乗降を行わせるための命令を出す。腕系モジュール27cは当該命令を受け、アーム10を制御し、エレベータ外ボタンを操作し、エレベータを7Fに到着させる。さらに、走行系モジュール27bも当該命令を受け、走行部9を制御し、エレベータが7Fに到着した後、エレベータへの乗り込みを行う。乗り込みの後、腕系モジュール27cは、エレベータ内ボタンを操作し、目的階である1Fにエレベータが到着するようにする。処理はステップS007へ移行する。
【００３４】
ステップS007において、自律移動系モジュール27aは、作業記述実行部21によって命令された動作が全て完了したか否かを判定し、全てが完了してないため、処理はステップS008へ移行し、自律移動系モジュール27aは、次の状態(待機)へ遷移する。処理は再びステップS003に戻る。
【００３５】
ステップS003において、自律移動系モジュール27aは、現在の状態(待機)と1つ前の状態(エレベータ乗降)とで拘束する機能モジュールが異なるか否かを判定する。ロボットが1Fに到着するまで待機を行っている状態では、エレベータの中で移動したり、腕を動かしたりしても自律移動の妨げにはならないため、走行系モジュール27b、腕系モジュール27cの拘束を解除する。拘束する機能モジュールは、1つ前の状態(エレベータ乗降)とは異なるので、処理はステップS005へ移行する。
【００３６】
ステップS005において、自律移動系モジュール27aは、走行系モジュール27b、腕系モジュール27cの拘束を解除する。これによって、走行系モジュール27b、腕系モジュール27cは、作業記述実行部21からの動作命令を許可することができる。処理はステップS006へ移行する。
【００３７】
ステップS006において、自律移動系モジュール27aは、エレベータが1Fに到着するまで、ロボットを待機させる。処理はステップS007へ移行する。
【００３８】
ステップS007において、自律移動系モジュール27aは、作業記述実行部21によって命令された動作が全て完了したか否かを判定し、全てが完了してないため、処理はステップS008へ移行し、自律移動系モジュール27aは、次の状態(エレベータ乗降)へ遷移する。処理は再びステップS003に戻る。以下、このように命令された動作が完了するまで(目的地に到着するまで)状態遷移を繰り返す。
【実施例２】
【００３９】
実施例1では、拘束すべき機能モジュールがある場合は、競合を防ぐために機能モジュール全体に対して拘束をかけたが、機能モジュールが特定の状態になることを拘束する構成にすることも考えられる。実施例2では、ロボットがユーザの手荷物をハンドリングしている状態で、現在地から目的地まで移動するよう命令された例を用い、機能モジュールが特定の状態になることを拘束する構成について説明する。
【００４０】
図7は、作業記述実行部21から腕系モジュール27cにユーザの手荷物を運べという動作が命令され、腕系モジュール27cが動作中の状態、つまり、腕系モジュール27cがアーム10を制御して、ロボットにユーザの手荷物をハンドリングさせている場合に、新たに作業記述実行部21から、自律移動系モジュール27aにエレベータを利用して7Fの現在地から1Fの目的地まで移動せよというシナリオの命令があった場合の各機能モジュールの関係を示す。自律移動系モジュール27aの拘束条件管理オブジェクトから分かるように、実施例2においては、実施例1のように機能モジュール全体に対して拘束をかけるのではなく、腕系モジュール27cは、自律移動系モジュール27aがエレベータ乗降の状態になることを拘束している。つまり、自律移動系モジュール27aが通常走行、及び待機の状態に遷移することは許可するが、エレベータ乗降の状態に遷移することは不許可としている。なぜなら、ユーザの手荷物をハンドリングしたまま、通常走行を行うことは問題がないが、エレベータ乗降を行う場合、ロボットはエレベータのボタン操作を行うため、物をハンドリングしながら当該操作はできないからである。このような場合に、作業記述実行部21から自律移動系モジュール27aに動作が命令されると、現在の拘束元を参照して、エレベータ乗降の状態に遷移することを腕系モジュール27cによって拘束されていることを確認し、当該命令を許可する。そして、自律移動制御モジュールは、通常走行を行う状態となり、走行系モジュール27bに目的地の座標等を通知する。走行系モジュール27bは、当該通知を受け、拘束条件管理オブジェクトの現在の拘束元を自律移動系モジュール27aとした後、走行部9を制御し、ロボットをエレベータ前まで移動させる。次に、エレベータ乗降の状態に遷移して、エレベータ乗り込みを行うが、エレベータ状態に遷移することは、腕系モジュール27cによって拘束されているため、命令を実行できない旨を作業記述実行部21に通知する。作業記述実行部21は、当該通知を受け、シナリオスクリプト(=作業記述)に記述されている失敗時の処理を行う。例えば、表示部1に「ユーザの手荷物をハンドリングしているため、エレベータ乗降を行えません。」というメッセージを表示させ、ユーザに手荷物のハンドリングを解除させるよう促す。このように、機能モジュールが特定の状態に遷移することを拘束することで、実施例1と比べて、シナリオの記述にある程度の自由度を持たせることができる。以下に、図10、11を用いて、上述した自律移動系モジュール27aの処理について説明する。
【００４１】
ステップS101において、自律移動系モジュール27aに動作の実行を命令する。処理はステップS102へ移行する。
【００４２】
ステップS102において、自律移動系モジュール27aは、腕系モジュール27cによって拘束されているため、処理はステップS104へ移行する。
【００４３】
ステップS104において、自律移動系モジュール27aは、現在の拘束が特定の状態に遷移することの拘束か否かを判定する。腕系モジュール27cからは、エレベータ乗降の状態に遷移することを拘束されているため、処理はステップS105へ移行する。一方、腕系モジュール27cから機能モジュール全体に対して拘束がかけられている場合は、処理はステップS106へ移行し、作業記述実行部21に動作命令を不許可とすることを通知する。作業記述実行部21は、自律移動系モジュール27aから当該通知を受け取り、表示部2にユーザの指示を実行できない旨を通知する。
【００４４】
ステップS105において、自律移動系モジュール27aは、作業記述実行部21からの命令により、自律移動系モジュール27aが、腕系モジュール27cにより拘束されている状態、すなわち、エレベータ乗降の状態になるか否かを判定する。作業記述実行部21からの命令があると、自律移動系モジュール27aは、通常走行の状態となるため、処理はステップS103へ移行する。
【００４５】
ステップS103、S107、S108、S109における処理は、実施例1で説明した通りであり、ステップS110において、次の状態(エレベータ乗降)へ移行する。処理は再びステップS102に戻る。
【００４６】
ステップS102において、自律移動系モジュール27aは、腕系モジュール27cによって拘束されているため、処理はステップS104へ移行する。
【００４７】
ステップS104において、自律移動系モジュール27aは、現在の拘束が特定の状態に遷移することの拘束か否かを判定する。腕系モジュール27cからは、エレベータ乗降の状態に遷移することを拘束されており、自律移動系モジュール27aは、拘束されている状態に遷移してしまっているため、処理はステップS106へ移行する。
【００４８】
ステップS106において、自律移動系モジュール27aは、作業記述実行部21にシナリオスクリプトからの命令を不許可とすることを通知する。作業記述実行部21は、自律移動系モジュール27aから当該通知を受け取り、表示部2にユーザの指示を実行できない旨を通知する。ユーザは、入力部3、または、通信部4から、ロボットに手荷物を下ろさせるなどの指示を必要に応じて行う。
【実施例３】
【００４９】
実施例1、2では、機能モジュール全体が拘束されている場合、または、機能モジュールが特定の状態になることを拘束されている場合は、作業記述実行部21からの命令を不許可としたが、例えば、ロボットの緊急停止などの優先度の高い動作が命令されることも考えられ、このような場合に、機能モジュールが拘束されていることを理由に命令を不許可としてしまっては、取り返しのつかない事態に発展する危険性が生じる。実施例3では、ロボットが通常走行を行っている状態で、作業記述実行部21から優先度の高い命令がなされた例を用い、機能モジュールが拘束されている場合でも、優先度の高い命令の実行を優先することについて説明する。
【００５０】
図8は、作業記述実行部21から自律移動系モジュール27aにエレベータを利用して7Fの現在地から1Fの目的地まで移動せよという動作が命令され、自律移動系モジュール27aが通常走行の状態に遷移している時に、作業記述実行部21から走行系モジュール27bに緊急停止の動作が命令された場合の各機能モジュールの関係を示す。実施例3では、作業記述実行部21からの命令に新たに優先度情報を付加し、拘束条件管理オブジェクトに当該優先度情報を追加する。拘束されている機能モジュールに対して、作業記述実行部21から命令がなされた場合、拘束されている機能モジュールは、作業記述実行部21からの命令の優先度(50)と、拘束元の機能モジュールが作業記述実行部21より通知されている優先度(30)とを比較する。当該比較によって、拘束されている機能モジュールに対する優先度(50)が拘束元の機能モジュールに対する優先度(30)よりも高い場合は、拘束元の機能モジュールに拘束の解除を要求し、優先度の高い動作をロボットに実行させる。このように、命令に優先度情報を付加し、当該優先度の比較によって、ロボットに実行させる動作を決定することで、優先度の高い作業の割り込みを許可することが可能になる。以下に、図12、13を用いて、上述した走行系モジュール27bの処理について説明する。
【００５１】
ステップS201において、ユーザによって、入力部3、または、通信部4より指示があると、シナリオスクリプトを実行中の作業記述実行部21は、当該指示に対応する部分に記述されている走行系モジュール27bへの、緊急停止の動作の実行を命令する。処理はステップS202へ移行する。
【００５２】
ステップS202において、走行系モジュール27bは、拘束条件管理オブジェクトの拘束カウンタを参照して、現在の拘束があるか否かを判定する。実施例3では、走行系モジュール27bは、自律移動系モジュール27aによって拘束されているため、処理はステップS204へ移行する。
【００５３】
ステップS204において、走行系モジュール27bは、作業記述実行部21によって命令された動作の優先度(50)が、拘束元の自律移動系モジュール27aが、作業記述実行部21によって命令された動作の優先度(30)よりも高いか否かを判定する。作業記述実行部21によって命令された動作の優先度が高い場合は、処理はステップS205へ移行する。一方、優先度が低い場合は、処理はステップS208へ移行し、作業記述実行部21にシナリオスクリプトからの命令を不許可とすることを通知する。作業記述実行部21は、自律移動系モジュール27aから当該通知を受け取り、表示部2にユーザの指示を実行できない旨を通知する。
【００５４】
ステップS205において、走行系モジュール27bは、拘束元である自律移動系モジュール27aに対して、現在の実行を中止して、走行系モジュール27bの拘束を解除することを要求する。処理はステップS206へ移行する。
【００５５】
ステップS206において、自律移動系モジュール27aは、現在の動作を実行したまま、走行系モジュール27bが命令された動作を実行できるか否かを判定する。走行系モジュール27bが動作を実行できる場合は、処理はステップS203へ移行する。一方、走行系モジュール27bが動作を実行できない場合は、処理はステップS207へ移行する。実施例3においては、走行系モジュール27bになされるシナリオスクリプトからの命令はロボットの緊急停止であるため、自律移動系モジュール27aはロボットに行わせている現在の動作を中止しなければならず、処理はステップS207へ移行する。
【００５６】
ステップS207において、自律移動系モジュール27aは現在の実行動作を中止し、走行系モジュール27bの拘束を解除する。これによって、作業記述実行部21から走行系モジュール27bへの命令は許可される。処理はステップS203へ移行する。
【００５７】
ステップS203、S209における処理は実施例1と同様である。
【００５８】
ステップS210において、走行系モジュール27bは、走行部9を制御し、ロボットの緊急停止を実行する。処理はステップS211へ移行する。
【００５９】
ステップS211において、走行系モジュール27bはロボットの緊急停止という動作を全て完了したため、処理は修了する。
【００６０】
以上の実施の形態は、本発明をより良く理解させるために具体的に説明したものであって、別形態を制限するものではない。従って、発明の趣旨を変更しない範囲で変更可能である。例えば、不具合が発生し、使用不可能となった機能モジュールに常時の拘束を加えて、作業記述実行部21、または、他の機能モジュールからの命令を不許可とし、ロボットが、予期せぬ動作を行うことを防ぐような構成にすることも考えられる。
【図面の簡単な説明】
【００６１】
【図１】ハードウェア全体構成を示した図である。
【図２】CPUの機能ブロック図である。
【図３】ロボットの経路移動について示した図である。
【図４】作業記述実行部と各機能モジュールとの関係を示した図である。
【図５】作業記述実行部と各機能モジュールとの関係を示した図である。
【図６】作業記述実行部と各機能モジュールとの関係を示した図である。
【図７】作業記述実行部と各機能モジュールとの関係を示した図である。
【図８】作業記述実行部と各機能モジュールとの関係を示した図である。
【図９】本発明の実施の形態における機能モジュールの動作を示すフローチャートである。
【図１０】本発明の実施の形態における機能モジュールの動作を示すフローチャートである。
【図１１】本発明の実施の形態における機能モジュールの動作を示すフローチャートである。
【図１２】本発明の実施の形態における機能モジュールの動作を示すフローチャートである。
【図１３】本発明の実施の形態における機能モジュールの動作を示すフローチャートである。
【符号の説明】
【００６２】
1 CPU、2 表示部、3 入力部、4 通信部、5 記憶部、6 駆動部制御ボード、7 画像処理ボード、8 ステレオカメラ、9 走行部、10 アーム、21 作業記述実行部21、22 拘束条件管理部、23 経路計画部、24 シナリオスクリプト、25 拘束条件、26 地図データ、27 機能モジュール、27a 自律移動系モジュール、27b 走行系モジュール、27c 腕系モジュール
【図１】
0005140934.tif 000002
【図２】
0005140934.tif 000003
【図３】
0005140934.tif 000004
【図４】
0005140934.tif 000005
【図５】
0005140934.tif 000006
【図６】
0005140934.tif 000007
【図７】
0005140934.tif 000008
【図８】
0005140934.tif 000009
【図９】
0005140934.tif 000010
【図１０】
0005140934.tif 000011
【図１１】
0005140934.tif 000012
【図１２】
0005140934.tif 000013
【図１３】
0005140934.tif 000014