(57)【特許請求の範囲】
【請求項１】
ロボットに対して指令を出すための指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部から情報を記録するための入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備え、
前記処理装置は外部から入力されたプログラムを実行するプログラム処理装置を含み、
前記プログラムはアクチュエータを作動するための命令を含み、
前記命令は速度、距離、回数の少なくとも１つを指定するためのパラメータを付加することができ、
前記記憶装置は、少なくとも、前記プログラムを記憶する領域と、前記命令の実行を禁止するためのルールを記述した命令禁止ルールを記憶する領域または前記命令を変更するためのルールを記述した命令変更ルールの少なくとも一方を記憶する領域と、プログラムの出所情報とを記憶する領域を有し、
前記命令禁止ルールは、禁止すべき命令と命令を禁止するか否かを判定するための条件とを含み、
前記命令変更ルールは、変更すべき命令または命令の一部を変更すべき命令と、命令を変更するか否かを判定する条件と、前記変更すべき命令または前記命令の一部と置き換える代替命令とを含み、
前記条件にプログラムの出所を示す出所情報と、前記命令と、前記パラメータに関する条件とを記述することができ、
前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、実行すべき命令を禁止するルールまたは実行すべき命令を変更するルールの少なくとも一方が存在する場合には、前記記憶装置から実行中のプログラムの出所情報を取得し、前記命令禁止ルールまたは前記命令変更ルールに含まれる条件が満たされたときに前記命令を棄却するかまたは前記命令の少なくとも一部を置き換えて実行し、前記条件が満たされない場合には前記命令を実行することを特徴とするロボットのプログラム実行方法。
【請求項２】
さらに、プログラム処理装置の外部または当該装置自身の様々な状態を取得するセンサの少なくとも一方を備え、前記条件には、さらに前記センサからの入力情報に関する条件を記述することができ、
前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、実行すべき命令を禁止するルールまたは実行すべき命令を変更するルールの少なくとも一方が存在する場合には、さらに前記センサからの入力情報を取得し、前記命令禁止ルールまたは前記命令変更ルールに含まれる条件の少なくとも一方が満たされたときに、前記命令を棄却するかまたは前記命令の少なくとも一部を置き換えて実行し、前記条件が満たされない場合には前記命令を実行することを特徴とする請求項１に記載のロボットのプログラム実行方法。
【請求項３】
さらに前記記憶装置には、命令を実行した履歴を記憶する領域を有し、前記条件には、さらに前記命令を実行した履歴に関する条件を記述することができ、
前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、実行すべき命令を禁止するルールまたは実行すべき命令を変更するルールの少なくとも一方が存在する場合に、さらに前記記憶装置から命令を実行した履歴情報を取得し、前記命令禁止ルールまたは前記命令変更ルールに含まれる条件の少なくとも一方が満たされたときに、前記命令を棄却するかまたは前記命令の少なくとも一部を置き換え置き換えて実行し、前記条件が満たされない場合には前記命令を実行することを特徴とする請求項１または２に記載のロボットのプログラム実行方法。
【請求項４】
ロボットに対して指令を出す指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部からの情報を記録する入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備え、前記処理装置が外部から入力されたプログラムを実行するプログラム処理装置を含み、
前記プログラムは少なくともアクチュエータに対する命令を含み、
前記命令は速度、距離、回数の少なくとも１つを指定するためのパラメータを付加することができ、
前記記憶装置は、少なくとも、前記プログラムを記憶する領域と、前記命令の実行を禁止するためのルールを記述した命令禁止ルールを記憶する領域または前記命令を変更するためのルールを記述した命令変更ルールの少なくとも一方を記憶する領域と、プログラムの出所情報とを記憶する領域を有し、
前記命令禁止ルールは、禁止すべき命令と命令を禁止するか否かを判定するための条件とを含み、
前記命令変更ルールは、変更すべき命令あるいは命令の一部を変更すべき命令と、命令を変更するか否かを判定する条件と、前記変更すべき命令あるいは変更すべき命令の一部を置き換える代替命令とを含み、
前記条件は、プログラムの出所情報と、前記命令と、前記パラメータに関する条件の中から選択される少なくとも１つを記述することができ、前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索し、実行しようとする命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、前記記憶装置から実行中のプログラムの出所情報とを取得し、出所情報を基に前記命令禁止ルールまたは前記命令変更ルールに含まれる条件を判定して、
前記条件が満たされる場合には、前記命令を禁止するかまたは前記命令に代えて前記命令変更ルールに記述された代替命令を実行し、前記条件が満たされない場合には前記命令を実行することを特徴とするロボットシステム。
【請求項５】
ロボットに対して指令を出すための指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部から情報を記録するための入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備え、
プログラムを前記記憶装置から読み込んで命令だけを取り出すプログラム解釈手段と、
前記命令を受け取り、命令の実行を禁止するか否かを判定し、禁止すべきと判定した場合には、前記取り出された命令を実行せず破棄する命令禁止手段または命令を変更すべきかどうかの少なくとも一方を判定し、変更すべきと判定した場合には前記命令の少なくとも一部を別の命令で置き換える命令変更手段と、前記命令または前記別の命令を実行する命令実行手段とを含み、
前記命令禁止手段または前記命令変更手段の少なくとも一方が、命令の実行を禁止するか否かを判定する条件を少なくとも含む命令禁止ルールまたは命令の一部あるいは全部を変更するか否かの少なくとも一方を判定する条件と命令の一部あるいは全部を置き換える代替命令を少なくとも含む命令変更ルールを検索し、前記命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、前記記憶装置から実行中のプログラムの出所情報を取得し、前記命令禁止ルールまたは命令変更ルールに含まれる条件の少なくとも一方を判定して満たされる場合には命令を棄却するかまたは受け取った命令に代えて前記命令変更ルールに記述された代替命令を実行し、満たされない場合には前記命令を前記命令実行手段に渡すことを特徴とするプログラム処理装置。
【請求項６】
さらにプログラム処理装置の外部または当該装置自身の様々な状態を取得するセンサの少なくとも一方を備え、
前記命令禁止手段または前記命令変更手段の少なくとも一方が、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、前記命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、さらに前記センサからの入力情報が取得されることを特徴とする請求項５に記載のプログラム処理装置。
【請求項７】
さらに前記記憶装置には、命令を実行した履歴を記憶する領域を有し、
前記命令禁止手段または前記命令変更手段の少なくとも一方が、前記命令禁止ルールまたは命令変更ルールの少なくとも一方を検索して、前記命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、さらに対応する実行履歴が取得されることを特徴とする請求項５または６に記載のプログラム処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ロボットのためのプログラム実行方法、ロボットシステムおよび処理装置に関し、特に、ロボットの外部環境と内部状態に応じてプログラムの実行を制限するロボットのためのプログラム実行方法、ロボットシステムおよび処理装置に関する。
【０００２】
【従来の技術】
従来、ロボットの制御装置には、ロボットあるいはロボットを操作するユーザを保護する目的のために安全機構が搭載されていた。安全装置を組み込んだロボット制御装置の一例として、特開平１１−７７５８０号公報を挙げることができる。このロボット制御装置では、ロボットの動作中の過負荷を検出し、過負荷時にはモータを停止させる。これにより、ロボットが外部機械に衝突した場合の損傷を防ぎ、操作者の安全を守っていた。
しかしながら、この安全機構はロボット制御装置の一部として完全に組み込まれており、安全機構の変更だけのために、ロボット制御装置全体の変更をしなければならないという問題があった。
【０００３】
この問題を部分的に解決したロボット制御装置が、特開平６−３２８３７９号公報に記載されている。このロボット制御装置は、安全機構ではないが、センサ情報に応じて動作モードを切り替える動作修正手段を搭載している。図１０（ａ）は、このロボット制御装置の構成を示すブロック図である。このロボット制御装置では、センサ８４から得られた情報に基づいて、現在の作業状態を状態監視部８２２が決定し、その状態に応じて、動作選択部８２３が動作修正モジュール２４１〜２４３のいずれかを選択することにより動作モードを切り替える。状態監視部８２２は図１０（ｂ）の示すセンサ値とイベント値の対応関係に基づいて、現在の作業状態を示すイベントを発生させる。動作選択部８２３は図１０（ｃ）に示す状態遷移表に基づいて、動作モードを切り替える。すなわち、センサ値ｆがある閾値Ｆ以下の場合は、イベントＥｖ１が状態監視部８２２から実行され、動作選択部８２３は倣い状態の動作モードを選択し、倣い状態の動作修正モジュールを選択する。センサ値ｆがある閾値Ｆより大きい場合は、イベントＥｖ２が状態監視部８２２から発行され、動作選択部８２３はバリ取り状態の動作モードを選択し、バリ取り状態の動作修正モジュールを選択する。この動作修正手段を用いれば前述のロボット制御装置の安全装置と同様の機能が実現できる。さらに、動作修正のためのルールとモジュールとがモジュール化されているため、前述のロボット制御装置に比べて、部分的な変更が行いやすい。
【０００４】
また、ロボット用ではないが、コンピュータ用のプログラム処理装置として、ＪＡＶＡ（登録商標）実行環境がある。文献Ｊａｖａ（登録商標）２  Ｐｌａｔｆｏｒｍ  Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｌｉ  Ｇｏｎｇ，  Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ、日本語訳は「ＪＡＶＡ（登録商標）２プラットフォームセキュリティ」  ピアソン・エデュケーション）  には、ＪＡＶＡ（登録商標）の最新版であるＪＡＶＡ（登録商標）２の安全機構が記載されている。ＪＡＶＡ（登録商標）２では、セキュリティポリシーと呼ばれるルールを記述することにより、プログラムの作成者と置き場所によって、そのプログラムが操作する対象物（ファイル、ネットワーク）と、操作内容（読み、書き）とを制限することができる。このセキュリティポリシーは、テキストファイルやバイナリ化されたデータとしてＪＡＶＡ（登録商標）実行環境とは別に持つことができるので、ＪＡＶＡ（登録商標）実行環境そのものを置換えなくても、セキュリティポリシーだけを変更することができる。
【０００５】
しかしながら、従来のプログラム処理装置の安全機構は、動作を制限するルールの追加、変更が難しいという第１の問題点が指摘される。
これは、従来のロボット制御装置の安全機構は、状態遷移のきっかけとなるイベントの発生条件や状態遷移のルールが、状態監視部と動作選択部とにそれぞれ組み込まれており、ルールの部分だけを容易に変更することができないことによる。また、上記したようなＪＡＶＡ（登録商標）実行環境の安全機構は、ルールを変更することができるものの、作成者と置き場所に関するルールしか記述することができない。また、センサ情報などを追加する仕組みあるいは機構も用意されていない。
【０００６】
また、第２の問題点として、従来のプログラム処理装置の安全機構では、ルールの表現力、記述性が乏しいという問題点がある。
従来のロボット制御装置の安全機構では、ルールの記述方法として単純なものしか用意されておらず、多数のセンサや内部状態が与えられたとしてもそれらを統合して判断できるようなルールを記述できる仕組みを提供していない。上記したＪＡＶＡ（登録商標）の実行環境の安全装置にしても、例外ではない。
【０００７】
例えば、汎用目的のロボットでは、プログラムを外部から読み込んで、様々な仕事をさせることが求められるが、このようなロボットでは、プログラムの作成者、置き場所に関する情報と、センサ情報やロボットの内部状態とを統合して、安全性を検査する必要がある。そのためにはこれらの情報を統合的に検査するルールを記述することが求められている。
従来のロボット制御装置あるいはＪＡＶＡ（登録商標）実行環境のように、ルールの記述性に柔軟性がないものでは不十分であると、本発明者は考えている。
【０００８】
【発明が解決しようとする課題】
本発明は、上記問題点に鑑みてなされたものであり、プログラムの作成者、置き場所、センサ情報、システムの内部状態などの利用可能な情報をすべて利用してプログラムの実行を制限するかどうかを判断し、プログラムが実行される環境に適した実行形態を提供することにより、操作者およびロボットのプログラム実行時の安全性を向上することのできるロボット用のプログラム実行方法およびプログラム処理装置を提供することを目的とする。
【０００９】
また、プログラムの作成者、置き場所、センサ情報、システムの内部状態などの利用可能な情報をすべて利用してプログラムの実行を制限する場合に、複数の条件をまとめて総合的に安全性を判断することにより、プログラム実行時の安全性を検査するためのルールの表現力や記述性を向上させたロボット用プログラム実行方法およびロボット用プログラム処理装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
請求項１に記載のロボットのプログラム実行方法は、ロボットに対して指令を出すための指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部から情報を記録するための入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備え、前記処理装置は外部から入力されたプログラムを実行するプログラム処理装置を含み、前記プログラムはアクチュエータを作動するための命令を含み、前記命令は速度、距離、回数の少なくとも１つを指定するためのパラメータを付加することができ、前記記憶装置は、少なくとも、前記プログラムを記憶する領域と、前記命令の実行を禁止するためのルールを記述した命令禁止ルールを記憶する領域または前記命令を変更するためのルールを記述した命令変更ルールの少なくとも一方を記憶する領域と、プログラムの出所情報とを記憶する領域を有し、前記命令禁止ルールは、禁止すべき命令と命令を禁止するか否かを判定するための条件とを含み、前記命令変更ルールは、変更すべき命令または命令の一部を変更すべき命令と、命令を変更するか否かを判定する条件と、前記変更すべき命令または前記命令の一部と置き換える代替命令とを含み、前記条件にプログラムの出所を示す出所情報と、前記命令と、前記パラメータに関する条件とを記述することができ、前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、実行すべき命令を禁止するルールまたは実行すべき命令を変更するルールの少なくとも一方が存在する場合には、前記記憶装置から実行中のプログラムの出所情報を取得し、前記命令禁止ルールまたは前記命令変更ルールに含まれる条件が満たされたときに前記命令を棄却するかまたは前記命令の少なくとも一部を置き換えて実行し、前記条件が満たされない場合には前記命令を実行することを特徴とする。
【００１１】
請求項２記載のロボットのプログラム実行方法は、請求項１において、さらに、プログラム処理装置の外部または当該装置自身の様々な状態を取得するセンサの少なくとも一方を備え、前記条件には、さらに前記センサからの入力情報に関する条件を記述することができ、前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、実行すべき命令を禁止するルールまたは実行すべき命令を変更するルールの少なくとも一方が存在する場合には、さらに前記センサからの入力情報を取得し、前記命令禁止ルールまたは前記命令変更ルールに含まれる条件の少なくとも一方が満たされたときに、前記命令を棄却するかまたは前記命令の少なくとも一部を置き換えて実行し、前記条件が満たされない場合には前記命令を実行することを特徴とする。
【００１２】
請求項３記載のロボットのプログラム実行方法は、請求項１または２において、さらに前記記憶装置には、命令を実行した履歴を記憶する領域を有し、前記条件には、さらに前記命令を実行した履歴に関する条件を記述することができ、前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、実行すべき命令を禁止するルールまたは実行すべき命令を変更するルールの少なくとも一方が存在する場合に、さらに前記記憶装置から命令を実行した履歴情報を取得し、前記命令禁止ルールまたは前記命令変更ルールに含まれる条件の少なくとも一方が満たされたときに、前記命令を棄却するかまたは前記命令の少なくとも一部を置き換え置き換えて実行し、前記条件が満たされない場合には前記命令を実行することを特徴とする。
【００１３】
請求項４記載のロボットシステムは、ロボットに対して指令を出す指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部からの情報を記録する入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備え、前記処理装置が外部から入力されたプログラムを実行するプログラム処理装置を含み、前記プログラムは少なくともアクチュエータに対する命令を含み、前記命令は速度、距離、回数の少なくとも１つを指定するためのパラメータを付加することができ、前記記憶装置は、少なくとも、前記プログラムを記憶する領域と、前記命令の実行を禁止するためのルールを記述した命令禁止ルールを記憶する領域または前記命令を変更するためのルールを記述した命令変更ルールの少なくとも一方を記憶する領域と、プログラムの出所情報とを記憶する領域を有し、前記命令禁止ルールは、禁止すべき命令と命令を禁止するか否かを判定するための条件とを含み、前記命令変更ルールは、変更すべき命令あるいは命令の一部を変更すべき命令と、命令を変更するか否かを判定する条件と、前記変更すべき命令あるいは変更すべき命令の一部を置き換える代替命令とを含み、前記条件は、プログラムの出所情報と、前記命令と、前記パラメータに関する条件の中から選択される少なくとも１つを記述することができ、前記プログラムに含まれる命令を実行する際に、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索し、実行しようとする命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、前記記憶装置から実行中のプログラムの出所情報とを取得し、出所情報を基に前記命令禁止ルールまたは前記命令変更ルールに含まれる条件を判定して、前記条件が満たされる場合には、前記命令を禁止するかまたは前記命令に代えて前記命令変更ルールに記述された代替命令を実行し、前記条件が満たされない場合には前記命令を実行することを特徴とする。
【００１４】
請求項５記載のプログラム処理装置は、ロボットに対して指令を出すための指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部から情報を記録するための入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備え、プログラムを前記記憶装置から読み込んで命令だけを取り出すプログラム解釈手段と、前記命令を受け取り、命令の実行を禁止するか否かを判定し、禁止すべきと判定した場合には、前記取り出された命令を実行せず破棄する命令禁止手段または命令を変更すべきかどうかの少なくとも一方を判定し、変更すべきと判定した場合には前記命令の少なくとも一部を別の命令で置き換える命令変更手段と、前記命令または前記別の命令を実行する命令実行手段とを含み、前記命令禁止手段または前記命令変更手段の少なくとも一方が、命令の実行を禁止するか否かを判定する条件を少なくとも含む命令禁止ルールまたは命令の一部あるいは全部を変更するか否かの少なくとも一方を判定する条件と命令の一部あるいは全部を置き換える代替命令を少なくとも含む命令変更ルールを検索し、前記命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、前記記憶装置から実行中のプログラムの出所情報を取得し、前記命令禁止ルールまたは命令変更ルールに含まれる条件の少なくとも一方を判定して満たされる場合には命令を棄却するかまたは受け取った命令に代えて前記命令変更ルールに記述された代替命令を実行し、満たされない場合には前記命令を前記命令実行手段に渡すことを特徴とする。
【００１５】
請求項６記載のプログラム処理装置は、請求項５において、さらにプログラム処理装置の外部または当該装置自身の様々な状態を取得するセンサの少なくとも一方を備え、前記命令禁止手段または前記命令変更手段の少なくとも一方が、前記命令禁止ルールまたは前記命令変更ルールの少なくとも一方を検索して、前記命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、さらに前記センサからの入力情報が取得されることを特徴とする。
【００１６】
請求項７記載のプログラム処理装置は、請求項５または６において、さらに前記記憶装置には、命令を実行した履歴を記憶する領域を有し、前記命令禁止手段または前記命令変更手段の少なくとも一方が、前記命令禁止ルールまたは命令変更ルールの少なくとも一方を検索して、前記命令に対応する命令禁止ルールまたは命令変更ルールの少なくとも一方がある場合には、さらに対応する実行履歴が取得されることを特徴とする。
【００１７】
換言すれば、本発明の第１のプログラム処理装置は、センサからの入力値とプログラムの出所情報とあらかじめ定めたルールに基づいてアクチュエータを動作させる命令を実行するかどうかを判定し、その結果に基づいて命令を実行するか、あるいは、棄却する。より具体的には、プログラム解釈手段から渡された命令に対応した命令禁止ルール（図１の２２）を取得し、センサからの入力値と出所情報（図１の２３）と前記命令と命令のパラメータとを基に命令禁止ルールの禁止条件を判定し、この禁止条件が成立する場合にのみ命令を棄却し、成立しない場合には命令を命令実行手段に渡す命令禁止手段（図１の１２）を有する。
【００１８】
ここで、命令禁止ルールは、禁止すべき命令と命令を禁止するかどうかを判定するための禁止条件とを含む。禁止条件には、命令のパラメータ、プログラムの出所情報、センサの入力値に関する条件が含まれ得る。
また、命令禁止手段は、命令解釈手段から渡された命令に対応する命令禁止ルールを検索し、対応するものが存在する時には、プログラムの出所情報とセンサからの入力値を取得し、その禁止条件を判定し、それが成立する場合のみ命令を棄却する。対応する命令禁止ルールが存在しない場合や禁止条件が成立しない場合には、命令を命令実行手段に渡す。
【００１９】
本発明の第２のプログラム処理装置は、命令の実行履歴とプログラムの出所情報とあらかじめ定めたルールに基づいてアクチュエータを動作させる命令を実行するかどうかを判定し、その結果に基づいて命令を実行するか、あるいは、棄却する。より具体的には、プログラム解釈手段から渡された命令に対応した第２の命令禁止ルール（図５の２２２）を取得し、命令の実行履歴（図５の２４）と出所情報（図５の２３）と前記命令と命令のパラメータとを基に命令禁止ルールの禁止条件を判定し、この禁止条件が成立する場合にのみ命令を棄却し、成立しない場合には命令を命令実行手段に渡す第２の命令禁止手段（図５の１２）を有する。
【００２０】
ここで、第２の命令禁止ルールは、禁止すべき命令と命令を禁止するかどうかを判定するための禁止条件とを含む。禁止条件には、命令のパラメータ、プログラムの出所情報、命令の実行履歴に関する条件が含まれ得る。
また、第２の命令禁止手段は、命令解釈手段から渡された命令に対応する命令禁止ルールを検索し、対応するものが存在する時には、プログラムの出所情報と命令の実行履歴を取得し、その禁止条件を判定し、それが成立する場合のみ命令を棄却する。対応する命令禁止ルールが存在しない場合や禁止条件が成立しない場合は、命令を命令実行手段に渡す。
【００２１】
本発明の第３のプログラム処理装置は、センサからの入力値とプログラムの出所情報とあらかじめ定めたルールに基づいてアクチュエータを動作させる命令を実行するかどうかを判定し、その結果に基づいて命令を実行するか、あるいは、前記命令の代わりに別の命令を実行する。より具体的には、変更すべき命令と命令を変更するかどうかを判定するための変更条件と元の命令の変わりに実行する代替命令とを含む命令変更ルール（図８の２５）を取得し、センサからの入力値と出所情報（図８の２３）と前記命令と命令のパラメータとを基に命令変更ルールの変更条件を判定し、前記命令変更ルールの変更条件が成立する場合にのみ前記命令の代わりに前記命令変更ルールの代替命令を命令実行手段に渡し、成立しない場合には前記命令を命令実行手段に渡す命令変更手段（図８の１４）を有する。
【００２２】
ここで、命令変更ルールは、変更すべき命令と命令を変更するかどうかを判定するための変更条件と、元の命令の代わりに実行する代替命令を含む。変更条件には、第１の命令禁止ルールと同様のものが含まれ得る。
また、命令変更手段は、命令解釈手段から渡された命令に対応する命令変更ルールを検索し、対応するものが存在する時には、プログラムの出所情報とセンサからの入力値を取得し、その変更条件を判定し、それが成立する場合のみ代替命令を実行する。対応する命令変更ルールが存在しない場合や変更条件が成立しない場合は、命令を命令実行手段に渡す。
【００２３】
本発明の第４のプログラム処理装置は、命令の実行履歴とプログラムの出所情報とあらかじめ定めたルールに基づいてアクチュエータを動作させる命令を実行するかどうかを判定し、その結果に基づいて命令を実行するか、あるいは、前記命令の代わりに別の命令を実行する。より具体的には、変更すべき命令と、命令を変更するかどうかを判定するための変更条件と、元の命令の変わりに実行する代替命令とを含む第２の命令変更ルールを取得し、命令の実行履歴と、出所情報と前記命令と、命令のパラメータとを基に命令変更ルールの変更条件を判定し、前記命令変更ルールの変更条件が成立する場合にのみ前記命令の代わりに前記命令変更ルールの代替命令を命令実行手段に渡し、成立しない場合には、前記命令を命令実行手段に渡す第２の命令変更手段を有する。
【００２４】
ここで、第２の命令変更ルールは、変更すべき命令と、命令を変更するかどうかを判定するための変更条件と、元の命令の代わりに実行する代替命令とを含む。変更条件には、第２の命令禁止ルールと同様のものが含まれ得る。
また、第２の命令変更手段は、命令解釈手段から渡された命令に対応する命令変更ルールを検索し、対応するものが存在する時には、その変更条件を判定し、プログラムの出所情報と命令の実行履歴を取得し、それが成立する場合にのみ、代替命令を実行する。対応する命令変更ルールが存在しない場合または変更条件が成立しない場合には、命令を命令実行手段に渡す。
【００２５】
【発明の実施の形態】
本発明に係るロボット用のプログラム処理装置は、ロボットに対して指令を出すための指令装置と、情報を保存する記憶装置と、前記記憶装置に対して外部から情報を記録するための入力装置と、プログラムを実行する処理装置と、処理装置からの制御信号により動作するアクチュエータとを備えており、さらに、外界の状況を把握するためのセンサを有することが好ましい。命令を禁止するルールは、直積およびまたは直和およびヌル（ゼロ：何もしないあるいは空欄（停止を含む））が独立してあるいは組み合わせて用いられる。本発明に使用される記憶装置は、書き換えない限り半永久的あるいは永久的に保存することのできる記憶装置であってもよく、また、キャッシュメモリのように一時的に記憶することのできる記憶装置であっても良い。記録は、光学的、磁気的、あるいは公知のその他の方法により行うことのできる方法により行えるものであってよい。
【００２６】
＜第１実施形態＞
本発明に係るロボット用プログラム処理装置の第１の実施の形態は、プログラムの実行開始を指示するための指令装置５と、プログラムを実行するためのプログラム処理装置１と、情報を保存、記録するための記憶装置２と、情報を入力するための入力装置６と、ロボットが外界に対して働きかけるためのアクチュエータ４とを含み、さらに本発明に係るロボット用プログラム処理装置は、外部環境あるいはアクチュエータにより命令実行したことによる外部環境からの変化、外部環境の状況把握のためのデータを取得するためのセンサ３を有する。
【００２７】
記憶装置２は、プログラムを保持するプログラム記憶部２１と、プログラムの命令を禁止するルール（以下、命令禁止ルールと呼ぶ）を保持する命令禁止ルール記憶部２２と、プログラムの出所情報を保持する出所情報記憶部２３とを含む。
【００２８】
プログラムはＰｅｒｌ、Ｔｃｌなどのスクリプト言語で記述されたスクリプト、あるいはＪＡＶＡ（登録商標）コンパイラが出力するような中間コードであり、これらは、インタプリタで実行されることを想定している。したがって、命令そのものやパラメータの正当性を実行時あるいはその前に検査することが可能である。命令には、少なくともアクチュエータ４を動作させる命令が含まれる。
【００２９】
出所情報には、ダウンロードあるいはその他の方法で入力されたプログラムごとにプログラムの作成者名、取得の方法（ＦＴＰ：Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ、メール、自作等）が含まれる。
【００３０】
命令禁止ルールには、命令を禁止するかどうかを判定する禁止条件と、禁止すべき命令の組が記述される。禁止条件には、命令のパラメータに関する条件が含まれており、これと、出所情報に関する条件と、センサ情報に関する条件から選択される少なくとも１つとを組み合わせて記述できる。
条件の組み合わせ方には、例えば、Ｃ言語で用いる条件文の論理積、論理和を独立してあるいは組み合わせて使えばよい。さらに本発明では、前記したようなヌル（ゼロ：何もしない、あるいは具体的な内容を含まない状態をいう（空欄を含む。））を含むこともできる。
【００３１】
命令禁止ルールとして、例えば、ＦＴＰで取得したプログラムの場合、近くに人がいることが検出され、かつ、秒速５０ｃｍ以上の速度指定がされている移動命令の実行を禁止するというルールが記述できる。この命令禁止ルールは、プログラムやプログラム処理装置１とは分離されているため、ユーザのニーズに合わせて入れ替えることができる。命令禁止ルールは、命令名やセンサ名、出所を示すＵＲＬ、引数や比較値を文字列で表したテキストとして表現してもよいし、一部を符号化して数値で表したバイナリデータと表現してもよい。
【００３２】
入力装置６は、ユーザの操作やメール受信、定期的なＦＴＰによりプログラムを取得し、記憶装置２に記録する。同時に、プログラムの出所情報を記憶装置２に記録し、さらに、ユーザの操作により、あらかじめ作成された命令禁止ルールを記憶装置２に記録する。
【００３３】
プログラム処理装置１は、プログラム解釈手段１１、命令禁止手段１２、命令実行手段１３を含む。プログラム解釈手段１１は、プログラムを読み込んでアクチュエータ４を動作させるための命令を取り出す。命令禁止手段１２は、命令禁止ルールを取得し、それと命令のパラメータ、出所情報およびセンサ情報に基づいて命令の実行を禁止すべきかを判定する。命令実行手段１３は、命令を実行し、アクチュエータ４を動作させる。
【００３４】
次に、図１と図２を参照して、本発明に係るロボット用プログラム処理装置の第１実施形態の動作について、説明する。
指令装置５により、実行すべきプログラムＰのプログラム名が指定されると、プログラム解釈手段１１は、プログラムＰをプログラム記憶部２１から読み込む。
【００３５】
次に、プログラム解釈手段１１は、プログラム中の制御文の解釈、変数への値の代入など一般的なスクリプト言語の実行時処理系が行うのと同様の処理を行う。ただし、プログラムの解釈中に命令を見つけた時は、命令Ｃを命令禁止手段１２に渡す。
【００３６】
命令禁止手段１２は、命令Ｃを受け取ると（ステップＳ１１）、命令禁止ルール記憶部２２から命令Ｃに対応した命令禁止ルールＲがあるか検索する（ステップＳ１２）。そして、対応した命令禁止ルールＲが存在する場合（ステップＳ１３／ＹＥＳ）、その禁止条件にセンサに関する条件が含まれるかを調べる（ステップＳ１４）。センサに関する条件が含まれる場合は（ステップＳ１４／ＹＥＳ）、センサ３からの入力値を取得する（ステップＳ１５）。さらに、禁止条件に出所情報に関する条件が含まれているかを調べる（ステップＳ１６）。出所情報に関する条件が含まれる場合には（ステップＳ１６／ＹＥＳ）、出所情報記憶部２３から出所情報を取得する（ステップＳ１７）。なおステップＳ１４は省略することができる。この場合、命令禁止ルールＲにセンサに関する条件が含まれているか否かに関わらず、センサからの入力値が取得される。また、ステップＳ１６も省略可能である。
次に、センサからの入力値、出所情報、命令とそのパラメータのいずれかあるいはすべてを利用して、禁止条件が成立するかどうかを判定する（ステップＳ１８）。禁止条件を満たす場合（ステップＳ１９／ＹＥＳ）には、命令を棄却し何も実行しないで（ステップＳ２０）、命令解釈手段１１に異常終了を伝える（ステップＳ２１）。
【００３７】
一方、禁止条件が成立しない場合（ステップＳ１９／ＮＯ）には、命令Ｃを命令実行手段１３に渡し（ステップＳ２２）、命令解釈手段１１に正常に終了したことを伝える（ステップＳ２３）。また、命令Ｃに対応する命令禁止ルールが存在しない場合（ステップＳ１３／ＮＯ）にも、前記同様に命令禁止手段１２は命令実行手段１３に命令Ｃを渡し（ステップＳ２２）、命令解釈手段１１に正常終了したことを伝える（ステップＳ２３）。
命令実行手段１３は命令Ｃを受け取ると、命令Ｃを実行してアクチュエータ４を動作させる。プログラム解釈手段１１は命令禁止手段１２から異常終了が伝えられた場合には、プログラムの実行を即座に中止する。一方、正常終了が伝えられた場合は、プログラムの解釈を続ける。
【００３８】
次に、本発明に係るロボット用プログラム処理装置の第１実施形態の効果について説明する。本発明に係るロボット用プログラム処理装置の第１実施形態では、センサからの入力値と出所情報、命令、命令のパラメータに基づいてプログラムが発行可能な命令を制限する。これによって、出所の怪しいプログラムの実行により、周囲の人、物あるいはロボット自身が危害を受けることを未然に防止することができる。しかも、命令禁止ルールの禁止条件が成立しない限り、命令の実行に関しては、何ら制限を受けない。このため、ロボットの機能拡張性を損なわずにしかもロボットの安全性を、さらに向上することができる。
【００３９】
次に、図１〜図４を参照して、ロボット用プログラム処理装置の具体的な実施例により、説明する。
本実施例では、部屋の中を移動しながら、人と対話し、リモコン（遠隔操作装置）で電気製品を制御する自律移動ロボットに第１のロボット用プログラム処理装置を適用する。
【００４０】
図４は自律移動ロボットの構成を示すブロック図である。自律移動ロボット７は、センサとして、たとえば、周囲の物体との距離を測る超音波距離センサ７１と、画像認識用のＣＣＤカメラ７２と、音声認識用のマイク７３と、音源方向を検出するための多方向マイク７４とを備える。また、アクチュエータとして、移動用の足モータ７５と、頭の向きを変えるための頭モータ７６と、テレビなどの電気製品を制御するためのリモコン（遠隔操作装置）７７と、音声合成機能を備えた発話用のスピーカ７９とを備える。さらに、プログラム処理装置１と記憶装置２が含まれるコンピュータ７８を備える。コンピュータ７８は一般的なコンピュータと同様に、プロセッサ７８１、メモリ７８２、ＨＤＤ７８３を内包する。また、ロボット７では指令装置５として、音声認識用のマイク７３を利用する。すなわち、プログラムの実行要求は、ユーザの発話をマイク等により採取することによって行われる。この音声認識によるプログラムの実行要求はすでに、ＮＥＣ製ＳｍａｒｔＶｏｉｃｅで実用化されている技術であり、これの詳細な説明は省略する。また、入力装置６として、本実施形態で使用されるロボットには、無線ＬＡＮアダプタ７１０を備える。ＨＤＤ７８３は、自律移動ロボット７とは別のコンピュータあるいは通信機能を有する端末（携帯電話、ＰＤＡなどを含む）から無線ＬＡＮを介してアクセスすることが可能である。プロセッサ７８１により実行されるメール受信プログラムやＦＴＰプログラムにより、無線ＬＡＮを介して外部からプログラムが取得されることもある。
【００４１】
本実施例では、プロセッサ７８１上で実行されるインタプリタは、ロボットの起動時にＨＤＤ７８３から、メモリ７８２に読み込まれ、実行される。なお、インタプリタは、ＲＯＭまたはプロセッサ内のハードウェアロジックとして構成することもできる。また、記憶装置２はＨＤＤ７８３上の一部の領域であり、プログラム、命令禁止ルール、出所情報は、ＨＤＤ７８３上のファイルとして保存され、必要に応じてメモリ７８２に読み取られ参照される。
【００４２】
超音波距離センサ７１からの入力値としては、右、左、前、後の方向に関して物体の存在する方向と距離が、たとえば、「右３０ｃｍ、左２００ｃｍ、前４００ｃｍ、後４００ｃｍ」という形式で得られる。多方向マイク７４からの入力値としては、右、左、前、後のいずれかを取りうる。ＣＣＤカメラ７２からの入力値としては、人物か人物でないかの値を取りうる。マイク７３からの入力値としては、音声認識した結果の単語列が得られ、また、マイクからの入力値および／またはコマンド入力値（パラメータ）を用いることもできる。さらに、上記したセンサの代わりに、レーザ（ＩＲ光も含む）計測による位置決めセンサを用いたり、超音波（音波計測による位置決めも含む）センサなどを用いることもでき、また、携帯電話機能を有してＧＰＳ（Ｄ−ＧＰＳシステムも含む）システムを用いることもできる。なお、前、後の方向は、基本的には、正対方向を「前」と定義することができ、これによって、他の方向についても同様に定義可能である。
【００４３】
足モータ７５への命令としては、「直進」、「回転」の２つがある。直進はロボットを前進あるいは後退させる命令である。「直進」命令はパラメータとして、距離と速度をとる。速度が正の場合は前進を、負の場合は後退を意味する。回転はロボットをその場で回転させる命令である。回転命令はパラメータとして、角度と角速度をとる。角速度が負の場合は右回転を、正の場合は左回転を意味する。頭モータ７６への命令である「首上下回転」はロボットの首を上下に回転させる命令である。首上下回転命令はパラメータとして角度と角速度をとる。角速度が正の場合は上方向への回転を、負の場合には下方向への回転を意味する。リモコン７７への命令である「テレビ電源」はテレビ電源をＯＮまたはＯＦＦする命令である。パラメータはとらず、トグル動作する。スピーカ７９への命令である「発話」は、音声合成を使ってパラメータとして与えられた文字列を発話する。なお回転の際の回転軸は、たとえばＸ軸、Ｙ軸またはＺ軸など以外でも任意に自在に規定できる。
【００４４】
本実施例では、命令禁止ルールをテキストファイルとして実現する。このファイルの中身は禁止すべき命令と禁止するかどうかを判定するための条件を一つのエントリとして持つ表あるいはマトリクスとして表現できる。この表などでは、命令および禁止条件は文字列として表され、命令と禁止条件の間にはコンマが置かれ、エントリの区切りとして改行文字が使用される。禁止条件には、Ｃ言語の条件文と同様のスタイルで条件を記述する。すなわち演算子として、「＆＆」論理積、「｜｜」論理和、「＝＝」等号、「！＝」ノットイコール（ｎｏｔ  ｅｑｕａｌ    ：・・・でない場合は）、「＞」左辺は右辺より大なり、「＞＝」左辺は右辺以上、「（  ）」括弧などが用いられ、「（  ）」括弧による演算の優先度付けもできる。なお、本実施例では、Ｃ言語を用いて条件文を定義したが、ＢＡＳＩＣあるいはＰｅｒｌなど、他の言語を用いて条件文を定義することもできる。
【００４５】
図３に命令禁止ルールの例を示す。この命令禁止ルールファイルＲ１内の命令禁止ルールＲ１１は、プログラムの作成者が「ＮＥＣ」以外で、かつ、前方の超音波センサの値が５０ｃｍ未満では、速度を示すパラメータ２が正（前進を意味する）であれば、直進命令を禁止することを意味する。同様に、命令禁止ルールＲ１２は、プログラムの作成者が「ＮＥＣ」以外であり、かつ、後方の超音波センサの値が５０ｃｍ未満で、パラメータ２が負（後退を意味する）であれば、直進命令を禁止することを意味する。
【００４６】
出所情報もテキストファイルとして実現する。このファイルの中身は、プログラム名、取得方法、作成者名の組を１つのエントリとして持つ表あるいはマトリクスとして表現する。各項目の間には、コンマ「，」が置かれ、エントリの区切りとしては改行文字が使用される。図３にこのような出所情報ファイルの例を示す。出所情報ファイルＪ１内の出所情報Ｊ１１の「人を探す」という名前のプログラムは、「ＴＯＭ」によって作成され、「ＦＴＰ」によって取得されたことを示している。
【００４７】
次に本実施例の動作を説明する。プログラムＰ１は、ＨＤＤ７８３に「人を探す」という名前で（たとえばファイルとして）保存されているものとする。そして、プログラム解釈手段１１は、音声認識用マイク７３を通じて、「人を探す」という名前のプログラムの実行が指定されたことを受け取ると、プログラム名「人を捜す」に対応するプログラムＰ１を読み込んで、プログラムの解釈を開始する。
【００４８】
プログラム解釈手段１１が、プログラムＰ１の解釈中に命令Ｃ２「直進（３０ｃｍ，１０ｃｍ／秒）」を見つけた場合、命令Ｃ２は命令禁止手段１２に渡される。命令禁止手段１２は、命令禁止ルールファイルＲ１を検索し、「直進」に対応する命令禁止ルールＲ１１とＲ１２を取得する。まず、命令禁止ルールＲ１１の禁止条件を解析すると、プログラムの作成者に関する条件と超音波距離センサの値に関する条件と２つ目のパラメータに関する条件とが含まれることがわかる。そこで、まず、超音波距離センサからの入力を取得する。この入力が超音波距離センサからの入力Ｕ１であったとすると、前方向の値は２０ｃｍであり、よって、禁止条件「超音波距離センサ（前）＜５０ｃｍ」が成立する。さらに、プログラム「人を探す」に対応する出所情報を取得し、これから、プログラムの作成者が「ＴＯＭ」であることを得る。また、パラメータ２の値はＣ２から、「１０ｃｍ／秒」である。
【００４９】
これらの情報を使って、命令禁止ルールＲ１１の禁止条件「作成者！＝ＮＥＣ＆＆超音波距離センサ（前）＜５０ｃｍ＆＆パラメータ２＞０ｃｍ／秒」を判定すると、これらの条件が全て成立する。その結果、命令Ｃ２は棄却されることとなる。
【００５０】
一方、命令Ｃ３「直進（３０ｃｍ，−１０ｃｍ／秒）」の場合には、「直進」に対応する命令禁止ルールＲ１１、Ｒ１２の禁止条件は成立しない。その結果、命令Ｃ３は、命令実行手段１３により実行されることとなる。
また、命令Ｃ１「回転（３０度，１０度／秒）」、命令Ｃ４「テレビ電源」の場合には、対応する命令禁止ルールは存在しないため、条件判定は行われない。その結果、命令Ｃ１、Ｃ４は実行されることとなる。
【００５１】
本実施例の形態の変形として、命令禁止ルールの禁止条件が成立して、命令禁止手段１２が異常終了を伝えた場合に、命令解釈手段１２はプログラムの実行を中断するのではなく、そのままプログラムの解釈を続行するように変更することも可能である。これにより、プログラムを安全に、かつ、中断することなく最後まで実行できるようになるという利点がある。
【００５２】
＜第２実施形態＞
次に、本発明のロボット用プログラム処理装置の第２の実施の形態について説明する。本実施の形態では、命令の禁止条件として、センサからの入力値ではなく、命令の実行履歴を利用する点が第１の実施の形態と異なる。
まず、図５を参照して、本発明のロボット用プログラム処理装置の第２の実施の形態の構成について説明する。
【００５３】
本発明のロボット用プログラム処理装置の第２実施形態は、第１実施形態で使用された拡張処理プログラム処理装置１に代えて、第２のプログラム処理装置１０２とし、記憶装置２に代えて第２の記憶装置２０２を含む構成を採用している。
【００５４】
第２の記憶装置２０２は、プログラム記憶部２１と、第２の命令禁止ルール記憶部２２２と、出所情報記憶部２３と、実行履歴記憶部２４を含む。プログラム記憶部２１は第１実施形態の記憶装置２と同様である。実行履歴記憶部２４は、命令の実行履歴を時間とパラメータとともに記録する。第２の命令禁止ルール記憶部２２２は第１実施形態の命令禁止ルール記憶部２２と同様に、命令禁止ルールを記憶するが、命令禁止ルールには禁止条件として、実行履歴を評価する条件が含まれている。
【００５５】
第２のプログラム処理装置１０２は、プログラム処理装置１の命令禁止手段１２の代わりに第２の命令禁止手段１２２を含み、命令実行手段１３の代わりに第２の命令実行手段１３２を含む。第２の命令禁止手段１３２は、出所情報と命令の実行履歴を取得し、それらを使って命令禁止ルールの禁止条件を判定する。第２の命令実行手段１３２は、命令を実行すると同時に、命令を実行した時間と命令、パラメータとが実行履歴記憶部２４に記録される。
【００５６】
次に、図５と図６を参照して、前記したような構成を採用した本発明に係るロボット用プログラム処理装置の第２実施形態の動作について説明する。
プログラム解釈手段１１は、第１の実施の形態と同様にプログラムを解釈し、命令Ｃを第２の命令禁止手段１２２に渡す。
【００５７】
第２の命令禁止手段１２２の動作を、図６を参照して詳細に説明する。第２の命令禁止手段１２２の動作は、第１実施形態の命令禁止手段１２と、センサ値の代わりに、命令の実行履歴を利用する点が異なっている。すなわち、禁止条件に実行履歴に関する条件が含まれるか否かを調べ（ステップＳ３４）、含まれる場合には（ステップＳ３４／ＹＥＳ）、対応する実行履歴を実行履歴記憶部２４から取得する（ステップＳ３５）。さらに、出所情報に関する情報を取得し（ステップＳ１６／ＹＥＳ、ステップＳ１７）、これら２つの情報と命令とそのパラメータとを使って、禁止条件を判定する（ステップＳ３８）。なおステップＳ３４は省略することができる。この場合、禁止条件に実行履歴に関する条件が含まれているか否かに関わらず、実行履歴情報が取得される。同様に、ステップＳ１６も省略可能である。
【００５８】
第２の命令実行手段１３２は命令Ｃを受け取ると、命令Ｃを実行してアクチュエータを動作させる。さらに、命令実行の履歴を実行履歴記憶部２４に記録する。プログラム解釈手段１１は、第１の実施の形態と同様に、第２の命令禁止手段１２２から異常終了が伝えられた場合、プログラムの実行を即座に中止し、正常終了が伝えられた場合にはプログラムの解釈を続ける。
【００５９】
次に、本発明に係るロボット用プログラム処理装置の第２実施形態の効果について説明する。本第２実施形態は、プログラムの出所情報と命令の実行履歴と命令と命令のパラメータとに基づいて、プログラムが実行可能な命令を制限するので、頻繁に同じ動作命令を繰り返さないことを命令禁止ルールとして記述することによって、ロボット自身やその他の機器が危害を受けることを防ぐことができる。
【００６０】
次に、図４〜図７を参照して、第２のロボット用プログラム処理装置の具体的な実施例について、説明する。
本実施例も、第１のロボット用プログラム処理装置と同じく、図４に示す構成を持つ自律移動ロボットに適用される。第１の実施例と異なる点は、第２の記憶装置の構成と第２のプログラム処理装置の動作であり、他の動作は同様であるので、その異なる点について説明する。
【００６１】
本実施例でも、第２の記憶装置２０２は、ＨＤＤ７８３上の一部の領域として実現される。プログラムや出所情報と同様に、第２の命令禁止ルールと、実行履歴は、ＨＤＤ７８３上のファイルとして実現される。
【００６２】
本実施例では、命令禁止ルールの禁止条件にパラメータに関する条件と出所情報に関する条件と命令の実行履歴に関する条件とが含まれる。図７に命令禁止ルールの例を示す。命令禁止ファイルＲ２内の命令禁止ルールＲ２１は、作成者が「ＮＥＣ」以外であり、「回転」命令の実行回数が過去１０秒以内に１０回以上ならば、回転命令を禁止することを意味する。また、Ｒ２２は、過去１０秒以内に「テレビ電源」命令が３回以上呼ばれたのであれば、テレビ電源命令を禁止することを意味する。
【００６３】
実行履歴記憶部２４は、テキストファイルとして実現する。このファイルの中身は、日時、命令（パラメータも含む）の組を一つのエントリとして持つ表あるいはマトリクスで表示可能なものである。この表等では、日時と命令は、文字列として記載され、項目間にはコンマが置かれ、エントリの区切りとして改行文字が使用される。
また、エントリはファイルの先頭に追加される。図７に実行履歴の例を示す。実行履歴ファイルＨ１では、エントリＨ１１は「テレビ電源」命令が２０００年１月１日の１４時１分１０秒に引数なしで実行されたことを意味する。エントリＨ１４を除くＨ１２〜Ｈ１６も同様に、それぞれの日時にテレビ電源命令が実行されたことを意味する。また、エントリＨ１４は、直進命令が（３０ｃｍ，１０ｃｍ／秒）というパラメータを伴って、２０００年１月１日の１４時１分２秒に実行されたことを意味する。
出所情報ファイルＪ１の内容は、第１の実施例（第２実施形態の第１実施例）と同様である。
【００６４】
次に本実施例の動作を説明する。第１の実施例と同様に、「人を探す」というプログラム名のプログラムＰ１を実行する場合について説明する。
プログラム解釈手段１１の動作は、第１のプログラム処理装置の実施例と同様である。
第２の命令禁止手段１２２は、命令Ｃ４「テレビ電源」を受け取ると、命令禁止ルールファイルＲ２を検索し、「テレビ電源」に対応する命令禁止ルールＲ２２を取得する。命令禁止ルールＲ２２の禁止条件「作成者！＝ＮＥＣ＆＆実行回数（テレビ電源，１０秒）＞＝３回」を解析すると、プログラムの作成者と、「テレビ電源」命令の実行履歴に関する条件とが含まれることがわかる。
命令Ｃ４を受け取った日時が２０００年１月１日１４時１分１２秒とすると、実行履歴ファイルＨ１を参照すれば、１０秒前の同日１４時１分２秒から実行された命令は、Ｈ１１〜Ｈ１４の４つであり、この中にテレビ電源命令が３回含まれることが判る。さらに、出所情報ファイルＪ１のエントリＪ１１から、前進命令Ｃ１は棄却される。
【００６５】
一方、命令Ｃ１「回転（３０度，  １０度／秒）」の場合、命令禁止ルールＲ２１の禁止条件「作成者！＝ＮＥＣ＆＆実行回数（回転，１０秒）＞＝１０回」が判定される。命令Ｃ１を受け取った日時が２０００年１月１日１４時１分１２秒とすると、実行履歴ファイルＨ１を参照すれば、１０秒前の同日１４時１分２秒から１４時１分１２秒までの間に、「回転」命令は一度も実行されていないことが判る。したがって、命令禁止ルールＲ２１は成立しないので、命令Ｃ４は実行される。
【００６６】
＜第３実施形態＞
次に、本発明に係るロボット用プログラム処理装置の第３実施形態について説明する。本実施の形態では、命令を禁止せずに、パラメータを安全な範囲のものに置換えるか、あるいは全く別の命令を、実行しようとしている命令の代わりに実行して、実行を継続する。この点が前述した第１の実施の形態等と異なる。
【００６７】
まず、図８を参照して、本発明に係るロボット用プログラム処理装置の第３実施形態に使用される構成例について説明する。
第３の実施の形態は、第１実施形態の構成のプログラム処理装置１に代えて、第３のプログラム処理装置１０３を、さらに、記憶装置２に代えて、第３の記憶装置２０３を含む構成を採用している。
【００６８】
第３の記憶装置２０３は、図８に示すように、記憶装置２の命令禁止ルール記憶部２３の代わりに、命令変更ルール記憶部２５を含む。命令変更ルール記憶部２５には、変更すべき命令と、命令を変更するかどうかを判定するための条件と、条件が成立する場合に実行される代替命令とが含まれる構成を有する。代替命令は、パラメータも含めた形式で記述される。したがって、命令の変更は、パラメータのみを変更することも可能である。また、元の命令のパラメータを代替命令のパラメータとして利用する場合には、代替命令のパラメータ部分に、たとえば「パラメータ１」という形で記述することができる。このパラメータには、前記したヌルも含まれる。
【００６９】
第３のプログラム処理装置１０３は、プログラム処理装置１の命令禁止手段の代わりに命令変更手段１４を含む。命令変更手段１４は、命令変更ルールの条件を判定し、条件が成立する場合には、命令変更ルールの代替命令を使って命令を置換える。
【００７０】
次に、図８〜図９を参照して、第３実施形態の動作について説明する。
プログラム解釈手段１１は第１の実施の形態と同様にプログラムを解釈し、命令Ｃを命令変更手段１４に渡す。
【００７１】
命令変更手段１４の動作を、図９を参照して詳細に説明する。命令変更手段１４は、命令Ｃを受け取ると（ステップＳ１１）、命令変更ルール記憶部２５から命令Ｃに対応した命令変更ルールＲがあるか検索する（ステップＳ４２）。そして、対応した命令変更ルールＲが見つかった場合（ステップＳ４３／ＹＥＳ）には、その変更条件にセンサに関する条件が含まれるかを調べる（ステップＳ４４）。
センサに関する条件が含まれる場合には（ステップＳ４４／ＹＥＳ）、センサ３から入力値を取得する（ステップＳ４５）。さらに、変更条件に出所情報に関する条件が含まれるかを調べる（ステップＳ４６）。出所情報に関する条件が含まれる場合には（ステップＳ４６／ＹＥＳ）、出所情報記憶部２３から出所情報を取得する（ステップＳ４７）。なおステップＳ４４は省略することができる。この場合、命令禁止ルールＲにセンサに関する条件が含まれているか否かに関わらず、センサからの入力値が取得される。また、ステップＳ４６も省略可能である。
【００７２】
次に、センサからの入力値、出所情報、命令とそのパラメータのいずれかあるいはすべてを利用して変更条件が成立するか否かを判定する（ステップＳ４８）。変更条件が成立する場合（ステップＳ４９／ＹＥＳ）には、命令Ｃの代わりに命令変更ルールの代替命令Ｄを命令実行手段に渡す（ステップＳ５０）。これとは逆に変更条件が成立しない場合（ステップＳ４９／ＮＯ）には、命令Ｃを命令実行手段１３に渡す（ステップＳ５１）。また、命令Ｃに対応する命令変更ルールが存在しない場合（ステップＳ４３／ＮＯ）にも、命令変更手段１２は、命令実行手段１３に命令Ｃを渡す（ステップＳ５１）。
命令実行手段１３は命令Ｃあるいは代替命令Ｄを受け取ると、それを実行してアクチュエータを動作させる。
【００７３】
次に、第３実施形態の効果を説明する。第３実施形態では、安全性に問題がある命令が含まれるプログラムであっても、代替命令で置換えることにより、中断することなく安全に実行を続けることができる。このため、ロボットの拡張性を損なうことなく、安全性を高めることができる。
【００７４】
次に、図４と、図８〜図１０とを参照して、第３実施形態の具体的な実施例について説明する。
本実施例も、第１のロボット用プログラム処理装置と同じく、図４に示す構成を持つ自律移動ロボットに適用する。第１の実施例とは、第３の記憶装置と第３のプログラム処理装置が異なっており、その異なる点について、その動作を説明する。
【００７５】
本実施例でも、第３の記憶装置２０３はＨＤＤ７８３の一部の領域として実現される。プログラムや出所情報と同様に、命令変更ルールもＨＤＤ７８３上のファイルとして実現される。なおＨＤＤの代わりに、一時的なＲＡＭ、キャッシュメモリ等のように、データを一時的に保存することのできる記憶装置も用いることができる。これは、他の実施形態あるいは実施例でも同様である。
【００７６】
命令変更ルールは、テキストファイルとして実現する。このファイルの内容は、命令、変更条件、代替命令の組を一つのエントリとして持つ表あるいはマトリクスで表示可能である。表等の形式は、命令禁止ルールファイルＲ１とほぼ同様であるが、命令と判定条件とに加えて、代替命令も記述されている。判定条件と代替命令の間にはコンマ「，」を置く。また代替命令に記述する命令のパラメータが複数ある場合には、その間にもコンマを置く。
図１０に命令変更ルールの例を示す。命令変更ルールファイルＲ３内の命令変更ルールＲ３１は、変更条件が満たされれば、直進命令の第２パラメータである速度を毎秒５ｃｍに抑えることを意味する。なお、第１パラメータである距離は、元の直進命令の第１パラメータをそのまま利用することができる。また、命令変更ルールＲ３２は、変更条件が満たされた場合には、回転する代わりに、「ロボット回転」と発話することにより、命令が入力され、この命令に置き換わって実行されることを意味する。
【００７７】
次に、本実施例の具体的な動作について説明する。まず、第１の実施例と同様、プログラム解釈手段１１は、「人を探す」という名前のプログラムＰ１の解釈を開始する。
【００７８】
プログラム解釈手段１１が命令Ｃ２「直進（３０ｃｍ，１０ｃｍ／秒）」を見つけ、それを命令変更手段１４に渡すと、命令変更手段１４は命令変更ルールファイルＲ３を上から検索して、「直進」に対応する命令変更ルールＲ３１を取得する。命令変更ルールＲ３１には、プログラムの作成者と超音波距離センサに関する条件が含まれているので、超音波距離センサからの入力Ｕ１と出所情報ファイルＪ１の該当する情報が取得される。これらの情報を使って、命令変更ルールＲ３１の変更条件を判定すると、変更条件は満たされる。この結果、代替命令として、「直進（パラメータ１，５ｃｍ／秒）」が取得される。第１パラメータはもとの命令の第１パラメータで置換えられるので、最終的に、「直進（３０ｃｍ，５ｃｍ／秒）」という命令が、命令実行手段１３に渡される。また、命令Ｃ１が渡されたときには、命令変更ルールＲ３２が適用され、回転命令の代わりに発話命令が実行される。
【００７９】
なお、この本発明の第３実施形態では、第１実施形態を改造した場合を示したが、第２実施形態に関しても第１実施形態と同様に、第２の命令禁止手段１２２を命令変更手段で置換える改造を施すことができる。この改造は、ハードウェアとして行うこともできるが、ソフトウェア上で実行することもでき、その場合の効果は第３実施形態と同様である。
本発明に係るロボット用プログラム処理装置の用途は特に限定されないが、産業用ロボット、パーソナルロボットなど、広範囲に亘って使用できる。また、この装置は、ダウンロードなどにより外部等から取込まれる拡張プログラムを主な扱えるプログラムとしているが、予め作成された拡張以外のプログラムを使用することもできる。
【００８０】
＜第４実施形態＞
本発明に係るロボット用プログラム処理装置の第４実施形態は、プログラムの実行開始を指示するための指令装置５と、プログラムを実行するためのプログラム処理装置１と、情報を保存、記録するための記憶装置２と、情報を入力するための入力装置６と、ロボットが外界に対して働きかけるためのアクチュエータ４と、センサとを含む。センサとしては、たとえば、図４に示すような超音波距離センサ、ＣＣＤカメラ、マイク、多方向マイクなどであっても良く、他の電気的あるいは光学的変化を計測することのできる装置であってもよく、特に他の実施形態同様に制限されず、センサは、単一でも複数であってもよく、使用されるセンサの種類も１種または２種以上であってもよい。このようなセンサの使用は、センサを使用する他の実施形態でも同様である。
【００８１】
記憶装置２は、プログラムを保持するプログラム記憶部２１と、プログラムの命令を禁止するルール（命令禁止ルール：実施形態１同様）を保持する命令禁止ルール記憶部２２と、プログラムの出所情報を保持する出所情報記憶部２３と、を有している。前記命令禁止ルール記憶部２２には、命令を変更する命令変更ルールを保持することもできる。この命令変更ルールは、前記同様である。また代替命令も前記同様である。さらに、元の命令のパラメータを代替命令のパラメータとして利用する場合も前記実施形態と同様である。
【００８２】
プログラムも前記同様に、Ｐｅｒｌ、Ｔｃｌなどのスクリプト言語で記述されたスクリプト等が使用できる。これらは、前記同様、インタプリタで実行されることを想定されている。したがって、命令そのものやパラメータの正当性を実行時あるいはその前に検査することが可能であり、好ましくは上記言語を用いてインタプリタで実行されることを想定されている。本発明の効果を得ることができるのであれば、インタプリタで実行せずに、コンパイラ等で行うことができるような実行言語を任意に選択することもできる。これらも、他の実施形態でも同様に使用できる。
【００８３】
出所情報には、プログラムごとにプログラムの作成者名、取得の方法（ＦＴＰ：Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ、メール、自作等）が含まれる。
【００８４】
その他、前記した実施形態と同様の動作を本実施形態でも行うことができ、その流れ図を図１１に示す。
図１１に示すように、指令装置５により、実行すべきプログラムＰのプログラム名が指定されると、プログラム解釈手段１１は、プログラムＰをプログラム記憶部２１から読み込む。
【００８５】
図１１に示すように、本実施形態では、同一のステップは、第１実施形態等で説明したのと同一の番号を付している。
ただし、本実施形態では、命令禁止ルールの代わりに、命令変更／禁止ルール形式のルールが用いられるため、ステップＳ１６０の後に、命令が、禁止ルールなのか、変更ルールなのかを判定するステップを設けている。
本実施形態の動作は、前記同様である。
まず、命令禁止および／または命令変更手段は、命令Ｃを受け取ると（ステップＳ１１）、命令禁止ルール記憶部および／または命令変更ルール記憶部から命令Ｃに対応した命令禁止ルールＲがあるか検索し（ステップＳ１２０）、そして、対応した命令禁止ルールまたは命令変更ルールが存在する場合には（ステップＳ１３／ＹＥＳ）、その禁止条件または変更条件にセンサに関する条件（センサ値の評価）が含まれるかを調べ（ステップＳ１４０）、センサ値の評価に関する条件が含まれる場合は（ステップＳ１４０／ＹＥＳ）、センサ値を取得し（ステップＳ１５）、さらに、禁止または変更条件に出所情報に関する条件が含まれているかを調べる（ステップＳ１６０）。出所情報に関する条件が含まれる場合には（ステップＳ１６０／ＹＥＳ）、出所情報記憶部２３から出所情報を取得する（ステップＳ１７）。なおステップＳ１４０は省略することができる。この場合、命令変更ルールＲにセンサに関する条件が含まれているか否かに関わらず、センサからの入力値が取得される。また、ステップＳ１６０も省略可能である。
【００８６】
命令が禁止条件の場合（ステップＳ１００でＹＥＳの場合）には、センサからの入力値、出所情報、命令とそのパラメータのいずれかあるいはすべてを利用して、禁止条件が成立するかどうかを判定し（ステップＳ１８）、禁止条件を満たす場合（ステップＳ１９／ＹＥＳ）には、命令を棄却し何も実行しないで（ステップＳ２０）、命令解釈手段１１に異常終了を伝える（ステップＳ２１）。
また、禁止条件が成立しない場合（ステップＳ１９／ＮＯ）には、命令Ｃを命令実行手段１３に渡し（ステップＳ２２）、プログラム解釈手段１１に正常に終了したことを伝える（ステップＳ２３）。また、命令Ｃに対応する命令禁止ルールおよび／または命令変更ルールが存在しない場合（ステップＳ１３／ＮＯ）にも、前記同様に命令禁止手段１２は命令実行手段１３に命令Ｃを渡し（ステップＳ２２）、命令解釈手段１１に正常終了したことを伝える（ステップＳ２３）。命令実行手段１３は命令Ｃを受け取ると、命令Ｃを実行してアクチュエータを動作させる。プログラム解釈手段１１は命令禁止手段１２から異常終了が伝えられた場合には、プログラムの実行を即座に中止する。一方、正常終了が伝えられた場合は、プログラムの解釈を続ける。
【００８７】
また前記ステップＳ１００で、ＮＯ（禁止条件ではなく変更条件の場合）の場合には、前記第３実施形態のステップＳ４８〜Ｓ５０と同様の処理が実行される。すなわち、センサからの入力値、出所情報、命令とそのパラメータのいずれかあるいはすべてを利用して変更条件が成立するか否かを判定し（ステップＳ４８）、変更条件が成立する場合（ステップＳ４９／ＹＥＳ）には、命令Ｃの代わりに命令変更ルールの代替命令Ｄを命令実行手段に渡し（ステップＳ５０）、これとは逆に変更条件が成立しない場合（ステップＳ４９／ＮＯ）には、命令Ｃを命令実行手段１３に渡す（ステップＳ５１）。
命令実行手段１３は命令Ｃあるいは代替命令Ｄを受け取ると、それを実行してアクチュエータを動作させる。なお当該ステップＳ５１は、図１１では、ステップＳ２２とステップＳ２３のステップとして成立している。本実施形態では、ステップＳ２３を省略することが可能である。
【００８８】
＜第５実施形態＞
本発明に係るロボットのプログラム処理装置の第５実施形態を説明する。
本実施形態では、図１２に示すように、前記した第２実施形態と同様に、センサを省略可能としている。動作は、前記第４実施形態と略同一であるが、センサを省略可能として、そのセンサからの入力データ（入力値：センサ値）を用いない代わりに、対応する実行履歴を取得した後にステップＳ１００を実行する点が、第４実施形態と異なっている。
【００８９】
また、第４実施形態および第５実施形態において、ステップＳ１００の実行は、ステップＳ１３の直後に実施することもできる。このようにステップＳ１３の直後にステップＳ１００を実施した場合には、ステップＳ１００でＹＥＳ（禁止条件の場合）となれば、その後、ステップＳ１４〜Ｓ２３までが実行され、また、他方、ステップＳ１００でＮＯとなれば（変更条件の場合）、ステップＳ４４〜Ｓ５０までが実行される。
【００９０】
また図１０では、命令変更ルールファイルには、Ｒ３１とＲ３２の２つのルールが記載されているが、このルールの数は、当然ながら制限されない。これは、図３、図７等の命令禁止ルールファイル例でも同様である。
【００９１】
＜第６実施形態＞
本実施形態は、図１３に示すように、前記第４実施形態および第５実施形態のそれぞれの形態において、それぞれ、センサ情報または実行履歴情報を活用せずに、出所情報を取得し、禁止条件および／または変更条件を判定することによって、ロボット制御装置の安全機構あるいは安全の仕組みを達成することを可能としている。
このように、本実施形態では、第４実施形態の動作において、ステップＳ３４およびステップＳ３５を省略した以外は、本実施形態では、第４実施形態と同様の動作を行う。このように本実施形態では動作するため、実行履歴の記録部および／またはセンサを省略可能な構成としている。
【００９２】
また本実施形態でも前記第４あるいは第５実施形態と同様、ステップＳ１００をステップＳ１３の直後に導入することもできる。ここで第４実施形態では、ステップＳ１３以降のステップは、ステップＳ１００でＹＥＳの場合には、ステップＳ１４〜Ｓ２３までが実行され、また、他方、ステップＳ１００でＮＯの場合（変更条件の場合）には、ステップＳ４４〜Ｓ５０が進行する。また、命令に禁止条件と変更条件とが含まれている場合にも、本実施形態では対処可能となっている。すなわち、命令に禁止条件と変更条件とが含まれている場合には、ステップＳ１００において、変更条件を優先させて処理した後にステップＳ４８に進む前に禁止条件の処理を行うステップＳ１４に戻り、以降、実施形態２と同様の処理が実行される。
【００９３】
以上説明した第６実施形態において、変更条件と禁止条件とが混在する場合に、先に禁止条件を実行することにより、命令が禁止されない場合に命令変更を行うことが可能となる。この実施形態も本発明に含まれる。
なお命令変更ルール中に、優先度を付し、たとえば最優先度（最低優先度）のものについては命令を禁止とし、その他のものについては、命令変更ルールとすることも本発明では可能である。このような優先度を閾値的に設定して使用することにより、命令禁止ルールと、命令変更ルールとを実質的に混在した領域を記憶部に設けることもでき、このような思想も本発明に含まれる。さらに、命令禁止措置を即座にとらずに、たとえば、一旦外部の指示を仰ぐようにし（たとえばディスプレイ等の表示機能等を介して外部に問い合わせ）、周囲の判断を仰いだり、外部からの信頼できる命令を入力して禁止あるいは命令の少なくとも一部の変更を行うことができるように設定することもできる。
【００９４】
【発明の効果】
第１の効果は、出所の怪しいプログラムでも、単に実行を制限するのではなく、実行環境に合わせて安全に実行することができる。
これは、プログラムの出所情報だけで実行を制限するのではなく、実行時のセンサ情報も利用することもでき、この情報を用いて制限することができるからである。
【００９５】
第２の効果は、単調な動作を繰り返すことを制限することにより、ロボットや他の装置を破壊するプログラムの実行を制限できることである。
これは、命令の実行履歴も実行制限の条件として指定して、反映することができる。
【図面の簡単な説明】
【図１】本発明の第１のプログラム処理装置の構成を示すブロック図である。
【図２】本発明の第１のプログラム処理装置の動作を示す流れ図である。
【図３】本発明の第１のプログラム処理装置の実施例を示す図である。
【図４】自律移動ロボットの構成を示すブロック図である。
【図５】本発明の第２のプログラム処理装置の構成を示すブロック図である。
【図６】本発明の第２のプログラム実行装置の動作を示す流れ図である。
【図７】本発明の第２のプログラム処理装置の実施例を示す図である。
【図８】本発明の第３のプログラム処理装置の構成を示すブロック図である。
【図９】本発明の第３のプログラム処理装置の動作を示す流れ図である。
【図１０】本発明の第３のプログラム処理装置の実施例を示す図である。
【図１１】本発明の第４のプログラム処理装置の動作を示す流れ図である。
【図１２】本発明の第５のプログラム処理装置の動作を示す流れ図である。
【図１３】本発明の第６のプログラム処理装置の動作を示す流れ図である。
【図１４】従来のロボット制御装置の構成を示すブロック図である。
【符号の説明】
１  プログラム処理装置
２  記憶装置
３  センサ
４  アクチュエータ
５  指令装置
６  入力装置
１１  プログラム解釈手段
１２  命令禁止手段
１３  命令実行手段
１４  命令変更手段
２１  プログラム記憶部
２２  命令禁止ルール記憶部
２３  出所情報記憶部
２４  実行履歴記憶部
２５  命令変更ルール記憶部
１０２  第２のプログラム処理装置
２０２  第２の記憶装置
１２２  第２の命令禁止手段
１３２  第２の命令実行手段
２２２  第２の命令禁止ルール記憶部
１０３  第３のプログラム処理装置
２０３  第３の記憶装置
７  自律移動ロボット
７１  超音波距離センサ
７２  ＣＣＤカメラ
７３  マイク
７４  多方向マイク
７５  足モータ
７６  頭モータ
７７  リモコン
７８  コンピュータ
７９  スピーカ
７８１  プロセッサ
７８２  メモリ
７８３  ＨＤＤ
７１０  無線ＬＡＮアダプタ
８１  動作生成手段
８２  動作修正手段
８３  運動制御手段
８４  センサ
８２１  センサ情報処理部
８２２  状態監視部
８２３  動作選択部
８２４  修正動作生成部
８２４１〜８２４３  動作修正モジュール
Ｐ１  プログラム
Ｕ１  超音波距離センサからの入力
Ｊ１  出所情報ファイル
Ｈ１  実行履歴ファイル
Ｒ１、Ｒ２  命令禁止ルールファイル
Ｒ３  命令変更ルールファイル
【図１】
0003594016.tif 000002
【図２】
0003594016.tif 000003
【図３】
0003594016.tif 000004
【図４】
0003594016.tif 000005
【図５】
0003594016.tif 000006
【図６】
0003594016.tif 000007
【図７】
0003594016.tif 000008
【図８】
0003594016.tif 000009
【図９】
0003594016.tif 000010
【図１０】
0003594016.tif 000011
【図１１】
0003594016.tif 000012
【図１２】
0003594016.tif 000013
【図１３】
0003594016.tif 000014
【図１４】
0003594016.tif 000015