(57)【要約】【課題】共有プログラムデータベースからプログラムを検索する際に、簡単な操作でプログラムを取得できるロボットプログラム共有システムを提供する。【解決手段】ロボット２００の、所定の事象を検知するイベント入力部２０５と、イベント入力部２０５で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成するコマンド生成部２０６と、プログラム取得指令を生成した場合に、イベント入力部２０５で検知した事象に応じて共有プログラムデータベース１００から所定のプログラムを検索してダウンロードするプログラム検索部２１２と、プログラム実行指令を生成した場合に、ロボット２００に格納しているプログラムを実行するプログラム実行部２０４と、を備える。特に、イベント入力部２０５は、動作を表す明示的な言語の媒介によらない事象を検知する。【選択図】図２
2009262279.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの、所定の事象を検知する事象検知手段と、
前記事象検知手段で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成手段と、
前記指令手段で前記プログラム取得指令を生成した場合に、前記検知手段で検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得手段と、
前記指令手段で前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行手段と、
を備えることを特徴とするロボット。
【請求項２】
前記事象検知手段は、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする請求項１に記載のロボット。
【請求項３】
前記事象検知手段は、接触センサ、圧力センサ、変位センサ、音響センサもしくは画像センサ、またはそれらの任意の組み合わせを備え、前記ロボットに相対するユーザの動作によって引き起こされる前記接触センサ、圧力センサ、変位センサ、音響センサまたは画像センサの信号を検知することを特徴とする請求項１または２に記載のロボット。
【請求項４】
前記指令生成手段は、さらに、プログラム変更指令またはプログラム登録指令のいずれかを含む指令を生成し、
前記指令手段で前記プログラム変更指令を生成した場合に、該ロボットに格納しているプログラムに、前記検知手段で検知した事象に応じて所定の変更を加える変更手段と、
前記指令手段でプログラム登録指令を生成した場合に、格納しているプログラムを前記共有プログラムデータベースに登録する登録手段と、
を備えることを特徴とする請求項１ないし３のいずれか１項に記載のロボット。
【請求項５】
前記指令生成手段は、さらに、プログラム投票指令を生成し、
前記指令手段で前記プログラム投票指令を生成した場合に、前記検知手段で検知した事象に応じて、該ロボットに格納しているプログラムに関して、前記ロボットに相対する者の意見または感情を表す投票情報を生成して、前記共有プログラムデータベースに登録する投票手段を備える
ことを特徴とする請求項１ないし４のいずれか１項に記載のロボット。
【請求項６】
前記取得手段は、任意の２つのプログラムの類似性を数値化する類似判定手段を含み、該類似判定手段で数値化した類似性に基づいて前記共有プログラムデータベースから所定のプログラムを検索してダウンロードすることを特徴とする請求項１ないし５のいずれか１項に記載のロボット。
【請求項７】
前記変更手段は、前記検知手段で検知した事象に基づいて、該ロボットに格納しているプログラムのパラメータを設定する学習手段を含むことを特徴とする請求項１ないし６のいずれか１項に記載のロボット。
【請求項８】
ロボットの動作プログラムを格納する共有プログラムデータベースと、
前記共有プログラムデータベースに格納された動作プログラムを実行することによって動作するロボットであって、
前記ロボットの、所定の事象を検知する事象検知手段と、
前記事象検知手段で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成手段と、
前記指令手段で前記プログラム取得指令を生成した場合に、前記検知手段で検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得手段と、
前記指令手段で前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行手段と、
を備えるロボットと、
を備えることを特徴とするロボットプログラム共有システム。
【請求項９】
前記ロボットの前記事象検知手段は、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする請求項８に記載のロボットプログラム共有システム。
【請求項１０】
前記ロボットの前記事象検知手段は、接触センサ、圧力センサ、変位センサ、音響センサもしくは画像センサ、またはそれらの任意の組み合わせを備え、前記ロボットに相対するユーザの動作によって引き起こされる前記接触センサ、圧力センサ、変位センサ、音響センサまたは画像センサの信号を検知することを特徴とする請求項８または９に記載のロボットプログラム共有システム。
【請求項１１】
前記ロボットの前記指令生成手段は、さらに、プログラム変更指令またはプログラム登録指令のいずれかを含む指令を生成し、
前記指令手段で前記プログラム変更指令を生成した場合に、該ロボットに格納しているプログラムに、前記検知手段で検知した事象に応じて所定の変更を加える変更手段と、
前記指令手段で前記プログラム登録指令を生成した場合に、格納しているプログラムを前記共有プログラムデータベースに登録する登録手段と、
を備えることを特徴とする請求項８ないし１０のいずれか１項に記載のロボットプログラム共有システム。
【請求項１２】
前記ロボットの前記指令生成手段は、さらに、プログラム投票指令を生成し、
前記指令手段で前記プログラム投票指令を生成した場合に、前記検知手段で検知した事象に応じて、該ロボットに格納しているプログラムに関して、前記ロボットに相対する者の意見または感情を表す投票情報を生成して、前記共有プログラムデータベースに登録する投票手段を備える
ことを特徴とする請求項８ないし１１のいずれか１項に記載のロボットプログラム共有システム。
【請求項１３】
前記ロボットの前記取得手段は、任意の２つのプログラムの類似性を数値化する類似判定手段を含み、該類似判定手段で数値化した類似性に基づいて前記共有プログラムデータベースから所定のプログラムを検索してダウンロードすることを特徴とする請求項８ないし１２のいずれか１項に記載のロボットプログラム共有システム。
【請求項１４】
前記ロボットの前記変更手段は、前記検知手段で検知した事象に基づいて、該ロボットに格納しているプログラムのパラメータを設定する学習手段を含むことを特徴とする請求項８ないし１３のいずれか１項に記載のロボットプログラム共有システム。
【請求項１５】
ロボットの、所定の事象を検知する事象検知ステップと、
前記事象検知ステップで所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成ステップと、
前記指令ステップで前記プログラム取得指令を生成した場合に、前記検知ステップで検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得ステップと、
前記指令ステップで前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行ステップと、
を備えることを特徴とするロボットプログラム共有方法。
【請求項１６】
前記事象検知ステップは、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする請求項１５に記載のロボットプログラム共有方法。
【請求項１７】
前記事象検知ステップは、前記ロボットに相対するユーザの動作によって引き起こされる接触センサ、圧力センサ、変位センサ、音響センサまたは画像センサの信号を検知することを特徴とする請求項１５または１６に記載のロボットプログラム共有方法。
【請求項１８】
前記指令生成ステップは、さらに、プログラム変更指令またはプログラム登録指令のいずれかを含む指令を生成し、
前記指令ステップで前記プログラム変更指令を生成した場合に、該ロボットに格納しているプログラムに、前記検知ステップで検知した事象に応じて所定の変更を加える変更ステップと、
前記指令ステップで前記プログラム登録指令を生成した場合に、格納しているプログラムを前記共有プログラムデータベースに登録する登録ステップと、
を備えることを特徴とする請求項１５ないし１７のいずれか１項に記載のロボットプログラム共有方法。
【請求項１９】
前記指令生成ステップは、さらに、プログラム投票指令を生成し、
前記指令ステップで前記プログラム投票指令を生成した場合に、前記検知ステップで検知した事象に応じて、該ロボットに格納しているプログラムに関して、前記ロボットに相対する者の意見または感情を表す投票情報を生成して、前記共有プログラムデータベースに登録する投票ステップを備える
ことを特徴とする請求項１５ないし１８のいずれか１項に記載のロボットプログラム共有方法。
【請求項２０】
前記取得ステップは、任意の２つのプログラムの類似性を数値化する類似判定ステップを含み、該類似判定ステップで数値化した類似性に基づいて前記共有プログラムデータベースから所定のプログラムを検索してダウンロードすることを特徴とする請求項１５ないし１９のいずれか１項に記載のロボットプログラム共有方法。
【請求項２１】
前記変更ステップは、前記検知ステップで検知した事象に基づいて、該ロボットに格納しているプログラムのパラメータを設定する学習ステップを含むことを特徴とする請求項１５ないし２０のいずれか１項に記載のロボットプログラム共有方法。
【請求項２２】
コンピュータを、
ロボットの、所定の事象を検知する事象検知手段と、
前記事象検知手段で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成手段と、
前記指令手段で前記プログラム取得指令を生成した場合に、前記検知手段で検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得手段と、
前記指令手段で前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行手段
として動作させることを特徴とするプログラム。
【請求項２３】
前記事象検知手段は、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする請求項２２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボットプログラム共有システムに関し、特に、娯楽用や教育用のパーソナルロボットにおけるロボットプログラム共有システムに関する。
【背景技術】
【０００２】
ロボットにおけるプログラミングは、限られた制約のもとで行う必要があり、通常深い知識が必要となる。例えば、モータ制御における排他処理や、複数のモータを制御する際の並列処理など、専門的な知識なくしてプログラミングを行うことは困難である。そこで、他人が作成したプログラムを参照したり、改変したりできるロボットプログラム共有システムが必要となる。
【０００３】
複数のロボットが一つの共有プログラムデータベースを介してプログラムを共有することで、無駄な開発を省くことができ、開発の効率化が期待できる。ロボットプログラム共有システムの一例が、特許文献２に記載されている。特許文献２の技術は、作業ロボットなどのロボット装置についてユーザが作成したプログラムを、ロボット装置のメーカ側で管理するサーバでプログラムリストとして登録できるようにし、他のユーザに対して閲覧可能に表示させる。希望するプログラムをダウンロード可能とすることで、プログラムを共有してコストの低減を図る。
【０００４】
特許文献３には、ユーザがロボットの動作プログラムを作成するための技術が記載されている。特許文献３の技術では、ユーザは、動作プログラム開発手段を備えているネットワーク上のサイトの自己が持っているロボットと同一のロボットをネットワークを介して遠隔操作し、これにより、ロボットの動作をプログラム化し、得られた動作プログラムをユーザの情報端末にダウンロードした後、自己が持っているロボットに移植する。
【０００５】
特許文献４には、対人用のパーソナル、パートナロボットのためのネットワークロボットの機能提供システムの技術が記載されている。特許文献４の技術では、ネットワークロボットにおいて、内部情報取得手段により取得された内部情報は、情報送信手段により暗号化されて外部サーバに送信される。外部サーバにおいては、この暗号化されて送信された内部情報が、情報受信手段により受信されて復号化される。この内部情報は、情報評価手段により評価されてネットワークロボットに必要な追加機能が特定される。そして、プログラム抽出手段によりこの追加機能を実現するための追加プログラムが管理用データベースから抽出される。この追加プログラムは、プログラム送信手段により暗号化されてネットワークロボットに送信される。
【０００６】
特許文献５には、人間との対話や人間の問いかけに対する動作を自然に行うことのできるロボットの技術が記載されている。特許文献５の技術では、ロボットは、相方の言動を認識する相方言動認識部と、観客の状態を認識する観客状態認識部と、ロボットと相方との対話における相方の言動およびロボットの言動を記述したシナリオを記憶するシナリオ記憶部と、シナリオ記憶部を参照して、ロボットの発話および動作を決定して、ロボットに当該発話および動作を実行させる全体制御部と、を含む。全体制御部は、シナリオ記憶部を参照して、観客の状態を考慮するか否かを判断し、その判断に基づき、観客の状態を考慮する必要がある場合、観客状態認識部の認識結果を考慮して、ロボットの発話および動作を決定する。
【０００７】
特許文献８には、産業用ロボットの動作を修正変更するための技術が記載されている。特許文献８の技術は、産業用ロボットに設置したセンサからの信号を処理してメッセージを送出するセンサ処理モジュールのメッセージにより、共有データエリアに書き込んだロボット動作モジュールの優先順位を変更すること、もしくは、ロボット動作モジュールと並行に動作するロボット作業評価モジュール５による評価メッセージにより、共有データエリアに書き込んだロボット動作モジュールの優先順位を変更することにより、産業用ロボットの動作を停止することなくロボット作業動作を修正変更自在とする。
【０００８】
その他、特許文献１には、圧力センサシート上に加えられた圧力値に基づいて算出した特徴量と、行動主体の触行動との関係を学習データとして格納し、行動主体の触行動を識別することが記載されている。特許文献６には、スクリプトプログラムの設定やロード、実行指示などのために用意された所定のニーモニックを認識し、そのニーモニックのパラメータで指示されたスクリプトプログラムを実行することが記載されている。
【０００９】
また、特許文献７には、与えられた入出力例題仕様から類似プログラムを検索し、制約条件を求めて、類似プログラムをプログラムの典型的な構造を表現した内部構造に変換することが記載されている。特許文献７ではさらに、内部構造のうち共通制約に関連した部分を抽出し、類似した以外の部分を修正してコードを出力する。
【特許文献１】特開２００１−１４１５８０号公報
【特許文献２】特開２００２−１２３３９４号公報
【特許文献３】特開２００３−１６２０３号公報
【特許文献４】特開２００５−３１９５２６号公報
【特許文献５】特開２００５−３３５０５３号公報
【特許文献６】特開２００６−１８６９７号公報
【特許文献７】特開平０５−５３７８０号公報
【特許文献８】特開平０７−２６１８２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
図９に示すように、関連する技術のロボットプログラム共有システムは、共有プログラムデータベース１００と、コマンド入力部３０１と、共有プログラム登録検索部３０２と、プログラム修正部３０３と、プログラム実行部３０４とから構成されている。このような構成を有する従来のロボットプログラム共有システムは次のように動作する。
【００１１】
共有プログラムデータベース１００はユーザが作成したプログラムを格納する。コマンド入力部３０１はキーボードやマウスなどでユーザからコマンドを受け付ける。受け付けたコマンドが、プログラムの登録や検索であった場合は、共有プログラム登録検索部３０２がプログラムの登録や検索を実施する。例えば、プログラムの登録コマンドは、「登録ボタン」を押すで実現する。例えば、プログラムの検索コマンドは、検索条件をキーワードで指定し、結果リストから選択することで実現する。
【００１２】
受け付けたコマンドが、プログラムの修正であった場合は、プログラム修正部３０３がプログラムの修正を実施する。例えば、プログラムの修正コマンドは、キーボードでテキストを編集し、「修正ボタン」を押すことで実現する。
【００１３】
共有プログラム登録検索部３０２がプログラムを検索し、対象が一つに絞り込まれた際には、絞り込まれたプログラムを共有プログラムデータベース１００からダウンロードしプログラム実行部３０４に送る。プログラム修正部３０３がプログラムを修正した際には、修正されたプログラムをプログラム実行部３０４に送る。プログラム実行部３０４はプログラムが送られると、そのプログラムを必要に応じてコンパイルなどの前処理を行い、実行する。
【００１４】
工業用ロボットにおいては、作業を着実に実行することがロボットの使命であり、プログラミングの仕様は明確である。一方、娯楽用や教育用に開発されたパーソナルロボットにおいては、いかに人間とコミュニケーションするかなど考慮する必要があり、プログラミングに豊かな発想が必要である。パーソナルロボットのプログラミングにおいて少数の専門家に閉じてプログラミングを行うことは、十分に豊かな発想を生み出すことは期待できない。 
【００１５】
関連する技術のロボットプログラム共有システムにおいては、プログラムを共有することで、専門家の間での協調開発は実現しているが、パーソナルロボットに求められる豊かな発想を支援するためには、専門家だけではなくより多くのユーザに参加してもらうことが重要である。プログラミングができる専門家は、その他のユーザを含めた総数からするとほんの一部であり、豊かな発想を促すことができないことが懸念される。そこで、専門家でないユーザも開発に参加できるようなシステムが望まれるが、そのためには簡単な操作で開発に貢献できることが必要である。 開発への貢献は、通常はプログラムを新規に作成したり、既存のプログラムを修正し、新しいプログラムを共有プログラムデータベースに登録することで実現できるが、ユーザがより簡単に開発に貢献できるようにするためには次のような問題がある。
【００１６】
第１の問題点は、既存のプログラムの取得に関する。共有プログラムデータベースからプログラムを検索するには複雑な検索条件を指定し、検索結果から最終的に一つに絞り込まなければならない。専門家でないユーザは検索条件の指定や検索結果の複雑な絞り込みの実行が困難であるという問題があった。
【００１７】
第２の問題点は、プログラムに対するフィードバックに関する。プログラムを実行してロボットを使用するユーザは、そのプログラムに対する意見や感情を持っているが、それを検知して共有プログラムデータベースにフィードバックして協調開発を促進する方法がないという問題があった。
【００１８】
本発明は上述のような課題に鑑みてなされたものであり、その目的は、協調開発に参加できるユーザをプログラミングできる専門家に留めず、その他のユーザも開発に貢献できるように、共有プログラムデータベースからプログラムを検索する際に、簡単な操作でプログラムを取得できるロボットプログラム共有システムを提供することである。
【課題を解決するための手段】
【００１９】
本発明の第１の観点に係るロボットは、
ロボットの、所定の事象を検知する事象検知手段と、
前記事象検知手段で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成手段と、
前記指令手段で前記プログラム取得指令を生成した場合に、前記検知手段で検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得手段と、
前記指令手段で前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行手段と、
を備えることを特徴とする。
【００２０】
本発明の第２の観点に係るロボットプログラム共有システムは、
ロボットの動作プログラムを格納する共有プログラムデータベースと、
前記共有プログラムデータベースに格納された動作プログラムを実行することによって動作するロボットであって、
前記ロボットの、所定の事象を検知する事象検知手段と、
前記事象検知手段で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成手段と、
前記指令手段で前記プログラム取得指令を生成した場合に、前記検知手段で検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得手段と、
前記指令手段で前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行手段と、
を備えるロボットと、
を備えることを特徴とする。
【００２１】
本発明の第３の観点に係るロボットプログラム共有方法は、
ロボットの、所定の事象を検知する事象検知ステップと、
前記事象検知ステップで所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成ステップと、
前記指令ステップで前記プログラム取得指令を生成した場合に、前記検知ステップで検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得ステップと、
前記指令ステップで前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行ステップと、
を備えることを特徴とする。
【００２２】
本発明の第４の観点に係るプログラムは、コンピュータを、
ロボットの、所定の事象を検知する事象検知手段と、
前記事象検知手段で所定の条件に適合する事象を検知した場合に、その条件に応じて、プログラム取得指令またはプログラム実行指令のいずれかを含む指令を生成する指令生成手段と、
前記指令手段で前記プログラム取得指令を生成した場合に、前記検知手段で検知した事象に応じて共有プログラムデータベースから所定のプログラムを検索してダウンロードする取得手段と、
前記指令手段で前記プログラム実行指令を生成した場合に、該ロボットに格納しているプログラムを実行する実行手段
として機能させることを特徴とする。
【発明の効果】
【００２３】
本発明のロボットおよびロボットプログラム共有システムによれば、ロボットのユーザがプログラムを検索する際に、簡単な操作でプログラムを取得して実行させることができる。その理由は、共有プログラムデータベースからプログラムをダウンロードする際に、ロボットの状態に応じて自動的にプログラムを検索するためである。
【発明を実施するための最良の形態】
【００２４】
図１は、本発明の実施の形態に係るロボットプログラム共有システムの構成例を示す概念図である。図１に示すように、複数のロボット２００が一つの共有プログラムデータベース１００を介してプログラムを共有する。複数のロボット２００は、ネットワークＮを経由して共有プログラムデータベース１００からプログラムをダウンロードし、また、プログラムその他のデータをアップロードする。
【００２５】
ネットワークＮは、特に限定しない。ネットワークＮは、例えば、無線ＬＡＮとそれが接続するインターネットまたはイントラネットである。共有プログラムデータベース１００とロボット２００とは常に接続していなくてもよい。プログラムを検索してダウンロードし、また、プログラムその他のデータをアップロードするときにネットワークＮを介して接続すればよい。
【００２６】
共有プログラムデータベース１００は、ApacheなどのＷｅｂサーバ上でPerl CGI（Practical Extraction and Report Language Common Gateway Interface）などを用いて構築されたデータベース、もしくは、MySQL（登録商標）などの ＲＤＢＭＳ（Relational Data Base Management System）で構築されたデータベースである。共有プログラムデータベース１００は登録コマンドや検索コマンドを受け付け、ロボット２００からのネットワーク越しのデータベース操作を可能にする。また、共有プログラムデータベース１００には認証や権限管理などの機構が導入されていてもよい。
【００２７】
ロボット２００は複数のセンサをもつロボットで、特に、ユーザの対話を考慮した擬人化できるロボットである。ロボット２００はハードウエアで実現されていてもよいが、ソフトウエアで制御できるように、汎用のパソコンをベースにしたものでもよい。
【００２８】
（実施の形態１）
図２は、本発明の実施の形態１に係るロボットプログラム共有システムの構成例を示すブロック図である。ロボットプログラム共有システムは、共有プログラムデータベース１００と、ネットワークＮで接続するロボット２００とから構成されている。図２では、ロボット２００を１台で代表して示す。共有プログラムデータベース１００は、プログラムを格納するデータベースで、ロボット２００からのプログラムのアップロードや、ロボット２００へのプログラムのダウンロードを受け付ける。
【００２９】
ロボット２００は、イベント入力部２０５と、コマンド生成部２０６と、プログラム実行部２０４と、プログラム検索部２１２と、プログラム格納部２０１と、通信部２１０とから構成されている。イベント入力部２０５は、センサやＯＳ（Operating System）からイベントを取得し、コマンド生成部２０６に伝達する。例えば、イベントには、ロボットのタッチセンサイベントや、 ＯＳのタイマイベントなどがある。
【００３０】
ロボット２００のセンサは、例えば、接触センサ、圧力センサ、変位センサ、音響センサ（マイク）もしくは画像センサ（撮像装置）、またはそれらの任意の組み合わせを用いることができる。接触センサは、ロボット２００のユーザが接触したことを検知する。圧力センサは、例えば、ロボット２００の頭部、腕などに設置され、ユーザが圧力をかけたことを検知する。変位センサは、ロボット２００の関節などに設置され、ユーザによって、ロボット２００の部位が動かされたことを検知する。音響センサはマイクであって、ユーザが発する音声や動作音を検知する。画像センサ（撮像装置）は、ユーザの姿勢、動作、顔などを撮影する。撮影した画像データからユーザの表情を認識する。
【００３１】
本発明では、イベントはロボットの動作を表す言語を媒介としないものをいう。ここで、ロボットの動作を表す言語を媒介にするとは、例えば、ユーザの音声による動作指令、動作を表す文字情報の入力、動作を表す文字が記載されたスイッチの操作などをいう。本発明はそれらの動作を表す言語によらないイベントを対象とする。ただし、動作を表す言語を媒介とするものと、本発明でいうイベントとを組み合わせて用いることを排除するものではない。
【００３２】
コマンド生成部２０６は、イベントを受け取り、一定のルールににマッチした場合に、プログラム実行部２０４またはプログラム検索部２１２にコマンドを発行する。コマンド生成部２０６が用いるルールは、イベントのパターンをコマンドに変換するルールであり、例えば、ある特定のタッチセンサを同時にタッチした場合に格納しているプログラムのうち、所定のプログラムを実行するといったプログラム実行コマンドを発行する。また、一定時間タッチセンサがタッチを検知しなかった場合に、現在実行中のプログラムの一部もしくは全部を置き換えるまたはそれに追加するために、共有プログラムデータベース１００からプログラムを取得するといったプログラム検索コマンドを発行する、などがある。
【００３３】
プログラム格納部２０１は、ロボット２００（のプログラム実行部２０４）が実行するプログラムを格納する。プログラム格納部２０１は、複数のプログラムを格納する場合がある。
【００３４】
プログラム実行部２０４は、プログラム格納部２０１に格納されているプログラムを実行する。プログラム実行部２０４は、コマンド生成部２０６から指示されたプログラムを選択して実行する。実行しているプログラムは、プログラム実行部２０４が保持していてもよい。
【００３５】
プログラム検索部２１２は、コマンド生成部２０６からのプログラム検索コマンドを受け付け、通信部２１０を介して、ネットワークＮ経由で共有プログラムデータベース１００を検索する。そして、検索したプログラムをネットワークＮ経由でダウンロードし、プログラム格納部２０１に格納する。
【００３６】
プログラム検索コマンドは、共有プログラムデータベース１００に格納されているプログラムを一意に決定する検索式を含む場合と、複数の候補に絞り込み、それら複数の候補から適宜選択する場合とがある。複数の候補から選択する方法として、ランダムに選ぶ方法、ヒットした順に選択する方法、過去に選択したプログラムを排除する方法、イベント入力部２０５で取得したイベントによって、なんらかの順序をつけて選択する方法などが考えられる。
【００３７】
通常は、ロボット２００は、プログラムを検索してダウンロードしたのち、そのプログラムを実行する。その場合、コマンド生成部はプログラム実行部２０４に取得したプログラムの実行指示を伝達する。
【００３８】
図３は、実施の形態１に係るロボットのプログラム検索実行処理の動作の一例を示すフローチャートである。図３のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。イベント入力部２０５は、ロボットのセンサやＯＳから任意のイベントを受信する（ステップＳ１１）。イベントはある時間範囲において複数受信する場合もあるが、以降、イベントの集合も単にイベントと呼ぶ。
【００３９】
コマンド生成部２０６は、受信したイベントから予め定められた変換ルールによって、コマンドを生成する（ステップＳ１２）。
【００４０】
プログラムの検索コマンドを生成するトリガーとしては、ユーザの意図によりセンサが活性化（作動）する（イベントが発生する）場合と、ユーザの意図によらずにセンサが活性化される（イベントが発生する）場合とがある。ユーザの意図によらないイベントの例としては、しばらくユーザが何も操作しない、ユーザがじっと見つめている、同じ操作ばかり繰り返している、などがあり、主に、ユーザが退屈であることを察知してプログラムを共有プログラムデータベース１００からダウンロードして刺激を与える目的がある。プログラムの検索に関する検索式としては、ランダムにプログラムを選択する、最もよくダウンロードされているプログラムを選択する、人気のあるプログラム１０件からランダムに１件選択する、ユーザの知人が登録したプログラムを選択する、などがある。
【００４１】
選択しようとするプログラムがすでにプログラム格納部２０１に格納されている場合は、そのプログラムを選択してプログラム実行コマンドを発行する。
【００４２】
コマンド生成部２０６が検索コマンドを生成した場合は（ステップＳ１３；ＹＥＳ）、プログラム登録検索部２１２は、共有プログラムデータベース１００からプログラムをダウンロードして、プログラム実行部２０４が実行中の、もしくは、ロボット２００が保持しているプログラムを置き換える（ステップＳ１４）。プログラム検索コマンドを生成していない場合は（ステップＳ１３；ＮＯ）、プログラムの検索・ダウンロードを行わない。
【００４３】
コマンド生成部２０６がプログラム実行コマンドを生成した場合は（ステップＳ１５；ＹＥＳ）、プログラム実行部２０４は指定されたプログラムを実行する。その際、プログラム実行部２０４にそのプログラムを保持していなければ、プログラム格納部２０１からロードして実行する。一般的には、プログラムを検索したときに、続けてダウンロードしたプログラムを実行する。プログラムをダウンロードしておいて、何らかの条件（イベント発生）が生じたときに実行してもよい。その場合は、コマンド生成（ステップＳ１２）からステップＳ１４をスキップしてプログラム実行（ステップＳ１６）を行うことになる。
【００４４】
以上説明したように、実施の形態１のロボットおよびロボットプログラム共有システムによれば、ロボットのユーザがプログラムを検索する際に、簡単な操作でプログラムを取得して実行させることができる。また、ロボットが相対するユーザの状況に合わせて、プログラムを選択して実行することができる。
【００４５】
（実施の形態２）
図４は、本発明の実施の形態２に係るロボットプログラム共有システムの構成例を示すブロック図である。実施の形態２のロボットは、実施の形態１の構成に加えて、プログラムの変更と登録の処理を行う。図４に示すように、実施の形態２のロボット２００は、プログラム変更部２０３を備える。また、プログラム検索部２１２に代えて、プログラム登録検索部２０２を備える。さらに、パラメータ設定部２０７とプログラム類似判定部２０８を備える。
【００４６】
実施の形態２のコマンド生成部２０６は、プログラム検索とプログラム実行のコマンドに加えて、プログラム変更コマンドとプログラム登録コマンドを生成する。実施の形態２においても、イベントはロボットの動作を表す言語を媒介としない。例えば、ユーザの音声による動作指令、文字情報の入力、文字が記載されたスイッチの操作などによらないイベントを対象とする。
【００４７】
プログラム変更部２０３は、コマンド生成部２０６からのプログラム変更コマンドを受け付け、プログラム実行部２０４が実行しているプログラムを修正し、プログラム実行部２０４に修正したプログラムの実行指示を伝達する。実行しているプログラムは、プログラム実行部２０４が保持していてもよいし、プログラム格納部（図示せず）を別途用意してもよい。
【００４８】
プログラムを変更する内容を決定するには、ロボット２００が備える各種センサ、例えば、静電容量を検知するタッチセンサを用いる。例えば、センサＡをタッチした後にセンサＢをタッチすることで、プログラムの末尾に「前進する」というステートメントを追加することができる。これは、イベント入力部２０５がセンサ情報を取得し、コマンド生成部２０６がプログラム変更コマンドを生成し、プログラム変更部２０３がプログラムに修正（ステートメントを追記）することで実現する。さらに、変更したプログラムをプログラム実行部２０４が実行することで、ユーザはその挙動を即座に確認することができる。
【００４９】
イベント入力として、センサをタッチするタイミングも情報として用いることができる。例えば、センサＡをタッチした後にセンサＢとセンサＣを５０ミリ秒以内にタッチすることで、コマンドを生成するようなこともできる。より複雑な例としては、プログラムに、「センサＸが有効化された場合に、動作Ｙを実行する」という条件を追加することもできる。このような条件の具体例としては、「頭をタッチされたら、上を向く」、「左方向から音が聞こえたら、左を向く」、「『ありがとう』という声を認識したら、『どういたしまして』と発話する」、「ユーザの顔が幸せそうだったら、頬を光らせる」、などがある。
【００５０】
プログラム登録検索部２０２は、コマンド生成部２０６からのプログラム登録コマンドまたはプログラム検索コマンドを受け付ける。プログラム登録コマンドであれば、プログラム実行部２０４が実行しているプログラムを共有プログラムデータベース１００に登録する。プログラム検索コマンドの場合は、実施の形態１のプログラム検索部２１２と同様の動作を行う。
【００５１】
プログラムの登録に関する単純な一つの例は、プログラム変更部２０３がプログラムを変更する度にプログラムの登録することである。場合によっては、プログラムの変更の大きさを考慮し、大規模な変更であった場合にプログラムの登録をする。
【００５２】
プログラム類似判定部２０８は、プログラム登録検索部２０２から類似判定を依頼された際に、プログラムの類似度を計算し、結果をプログラム登録検索部２０２に返す。プログラムの類似度の計算は、例えば、プログラムを木構造で表現したときのも最も大きく一致する部分木のノードの数とすることによって行う。
【００５３】
プログラム類似判定部２０８を用いると、現在実行中のプログラムと共通部分があるプログラムを検索しユーザを困惑させないようにする、もしくくは逆に、現在実行中のプログラムと共通部分がなるプログラムを検索しユーザを刺激し発想を促す、といったことができる。
【００５４】
プログラム実行部２０４が一度に実行できるプログラムは１つであるため、プログラム登録検索部２０２が検索するプログラムは１つである必要がある、もしくは、複数ダウンロードした場合には１つに絞り込む必要がある。１つに絞り込むには、ランダムに選択したり、順位づけをして選択したりする方法がある。選択されたものと、選択されなかったものは記憶し、以降の検索においてプログラムを重複して実行することを避けることができる。プログラムを検索して実行すると、それまで実行中のプログラムが消去されてしまう場合には、検索前に常に登録するようにすることで、プログラムの消失を回避することができる。
【００５５】
実施の形態２では、パラメータ設定部２０７をさらに備える。パラメータ設定部２０７はイベント入力部２０５からイベントを受け取り、受け取ったイベントがパラメータ設定コマンドに相当する場合は、プログラムのパラメータをイベントにより更新し、プログラム変更部２０３にプログラムパラメータ変更を指示する。設定するパラメータは、例えば、ロボットの心地よい首を傾げる角度であり、ユーザの肯定表現や否定表現により強化学習などによりパラメータを調整する。
【００５６】
パラメータ設定部２０７はロボット２００が備える各種センサを用いてプログラム中のパラメータを設定する。例えば、ロボットがユーザにとって心地よく首を傾げる仕草のプログラムを作成する場合に、首を傾ける角度はパラメータとしておき、プログラム実行時のユーザの反応によってパラメータを設定する。ユーザの反応とは、タッチセンサによる明示的なものや、ユーザの表情の変化による非明示的なものがある。パラメータの設定は、単純には、ランダムにパラメータを変化させたのち、ユーザが肯定的に反応したものの平均値を用いることで実現する。パラメータは複数ある場合もあり、例えば、首を傾ける角度に加えて、首を傾ける速度も考慮する。複雑なパラメータの設定には強化学習なども用いることもできる。
【００５７】
図５は、実施の形態２に係るプログラムの変更・登録を伴うロボットの動作の一例を示すフローチャートである。実施の形態１と同様に、イベント入力部２０５は、ロボットのセンサやＯＳから任意のイベントを受信する（ステップＳ２１）。コマンド生成部２０６は、受信したイベントから予め定められた変換ルールによって、コマンドを生成する（ステップＳ２２）。コマンド生成部２０６は、プログラム検索コマンドとプログラム実行コマンドの生成に加えて、プログラム変更コマンドとプログラム登録コマンドを生成する場合がある。
【００５８】
プログラム検索コマンドの場合（ステップＳ２３、ステップＳ２４）については、実施の形態１（図３のステップＳ１３、ステップＳ１４）と同様である。プログラム検索ダウンロード（ステップＳ２４）において、検索コマンドがプログラムの類似度を利用するものであった場合は、プログラム登録検索部２０２はプログラム類似判定部２０８に２つのプログラムを与え類似度の計算をさせ、その類似度を用いて取得するプログラムを絞り込む。場合によっては、プログラム類似判定部２０８が提供する機能は、プログラムデータベース１００に備えられていてもよい。
【００５９】
コマンド生成部２０６がプログラム変更コマンドを生成した場合は（ステップＳ２５；ＹＥＳ）、プログラム変更部２０３は、プログラム実行部２０４が実行中の、もしくは、ロボット２００が保持しているプログラムを変更する（ステップＳ２６）。その後、変更したプログラムを実行する際は（ステップＳ３０）、それまでの実行状態、例えば、グローバル変数の値など、を引き継いでもよい。プログラム変更コマンドでない場合は（ステップＳ２５；ＮＯ）、プログラムの変更を行わない。
【００６０】
コマンド生成部２０６がプログラム登録コマンドを生成した場合は（ステップＳ２７；ＹＥＳ）、プログラム登録検索部２０２は、プログラム実行部２０４が実行中の、もしくは、ロボット２００が保持しているプログラムを共有プログラムデータベース１００にアップロードして登録する（ステップＳ２８）。
【００６１】
実施の形態２のロボットによれば、ロボットのユーザが簡単な操作でプログラムを変更して実行させることができる。また、ロボットが相対するユーザの状況に合わせて、プログラムを変更して実行することができる。また、変更したプログラムを共有プログラムデータベースに登録することができる。その結果、ロボットプログラムの開発に専門家だけではなくより多くのユーザに参加してもらうことができる。
【００６２】
また、本実施の形態では、パラメータ設定部２０７がイベント入力部２０５から入力されたイベントをもとにパラメータを設定するため、ユーザが明示的にプログラミングすることなくして、プログラムのパラメータを調整することができる。これにより、ロボットの動作がよりユーザの主観に合い、自然な動作となることが期待できる。
【００６３】
（実施の形態３）
図６は、本発明の実施の形態３に係るロボットプログラム共有システムの構成例を示すブロック図である。実施の形態３のロボットは、実施の形態２の構成に加えて、ロボットプログラムに関する投票を行う。図６に示すように、実施の形態３のロボット２００は、プログラム投票部２０９をさらに備える。
【００６４】
実施の形態３のコマンド生成部２０６は、プログラム検索、プログラム実行、プログラム変更およびプログラム登録のコマンドに加えて、プログラム投票コマンドを生成する。
【００６５】
プログラム投票部２０９はイベント入力部２０５からイベントを受け取り、そのイベントから肯定表現や否定表現があれば、判別する。例えば、ロボットを見ているユーザが嬉しそうな顔をしていたり、ロボットを触るなどしてより多くのフィードバックを受けた場合には、肯定表現とみなしたり、逆にロボットを見ているユーザが不安そうな顔をしていたり、ロボットを触ろうとしないなどフィードバックを得られない場合には、否定表現とみなしたりする。
【００６６】
プログラム投票部２０９は、判別できた肯定表現や否定表現を実行中のプログラムの投票情報として共有プログラムデータベース１００に登録する。投票情報はプログラム全体に対するものだけでなく、プログラムの部分に対するものもあり得る。場合によっては、ユーザに明示的に投票の機能を知らせておく、例えば、あるセンサを所定の時間（例えば数秒以上）活性化（作動）させると肯定表現とする、ということも可能である。
【００６７】
プログラムに投票する場合は、ロボット２００が備える各種センサを用いる。プログラムの投票は、ユーザの意図によるものとユーザの意図によらないものがある。ユーザの意図によるものとは、予め定められた投票に関するセンサを有効化することであり、例えば、右手を握手したらプラス評価、左手を握手したらマイナス評価、などとしたり、「へぇ」ボタンと呼ばれるようなセンサを有効化した回数により評価値を定めるなどとする。
【００６８】
ユーザの意図によらないものとは、ユーザの感情を認識して投票情報としてフィードバックするもので、例えば、プログラム実行後、ユーザが嬉しそうな顔をしていたらプラス評価、悲しそうな顔をしていたらマイナス評価、としたり、プログラムの構造を変えずに拡充する方向に修正していったらプラス評価、プログラムの構造を壊し作り変えるように修正していったらマイナス評価、とするなどがある。
【００６９】
プログラム投票部２０９は実行中のプログラムに対する投票情報（プラス評価やマイナス評価や得点など）を共有プログラムデータベース１００に登録する。この際に、投票の根拠や時刻、プログラムの実行箇所などより詳細な情報を付加情報として登録することもできる。
【００７０】
共有プログラムデータベース１００は登録された投票情報をもとに検索することを可能にする。すなわち、プログラム登録検索部２０２が検索コマンドを実行するときに、投票情報を用いることができる。これにより、例えば、最も人気のあるプログラムをダウンロードする、などの検索コマンドを実行することができる。
【００７１】
図７は、実施の形態３に係るプログラム投票処理を伴うロボットの動作の一例を示すフローチャートである。図７において、イベント取得（ステップＳ３１）から、プログラム実行（ステップＳ４０）までの処理は、図５のステップＳ２１ないしステップＳ３０と同様である。ただし、コマンド生成（ステップＳ３２）では、プログラム投票コマンドを生成する場合がある。
【００７２】
プログラム投票部２０９は、受信したイベントから、ユーザが肯定表現をしているか否定表現をしているか、すなわち、プログラム投票コマンドに該当するか判別する。肯定表現、否定表現の判別は、ユーザの感情を推定することにより判別したり、予め直感的なセンサを割り当てることにより判別する。予め直感的なセンサを割り当てとは、例えば、ロボットの頭を撫でると肯定表現とみなす、などである。
【００７３】
コマンド生成部２０６は、プログラム投票部２０９の判別結果を受けて、プログラム投票コマンドを生成してもよい。プログラム投票コマンドに該当する場合は（ステップＳ４１；ＹＥＳ）、投票情報、すなわち、肯定情報もしくは否定情報、を共有プログラムデータベース１００に登録する（ステップＳ４２）。
【００７４】
なお、プログラム変更処理（ステップＳ３６）で、パラメータ設定部２０７がイベントに基づいてプログラムのパラメータを設定する場合、プログラム投票部２０９が認識する肯定表現、否定表現とは別のものにするか、同じものである場合は、直前の動作との対応、もしくは、継続的な肯定表現、否定表現であるかによって区別する。
【００７５】
以上説明したとおり、実施の形態３に係るロボット２００によれば、プログラムの修正を伴うことなく、ユーザのフィードバックを得ることができることにある。その理由は、プログラム投票部２０９がイベント入力部２０５から受け取ったイベントをもとに投票情報を共有プログラムデータベース１００に登録するためである。
【００７６】
本実施の形態では、プログラム投票部２０９がイベント入力部２０５から入力されたイベントをもとに投票情報を共有プログラムデータベース１００に登録するため、ユーザがロボットとの自然な操作の中で投票できるという効果がある。また、投票情報が共有プログラムデータベース１００に集約することで、評価の高いプログラムを推定でき、評価の高いプログラムを組み合わせることでより評価の高くなるプログラムを合成することも期待できる。
【００７７】
図８は、図２、図４または図６に示すロボットプログラム共有システムにおけるロボット２００のハードウェア構成の一例を示すブロック図である。ロボット２００は、図８に示すように、制御部１１、主記憶部１２、外部記憶部１３、操作部１４、表示部１５、入出力部１６及び送受信部１７を備える。主記憶部１２、外部記憶部１３、操作部１４、表示部１５、入出力部１６及び送受信部１７はいずれも内部バス１０を介して制御部１１に接続されている。
【００７８】
制御部１１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部１３に記憶されている制御プログラム２０に従って、ロボット２００のプログラムを検索、変更、登録もしくは実行の処理、またはプログラム投票の処理を実行する。
【００７９】
主記憶部１２はＲＡＭ（Random-Access Memory）等から構成され、外部記憶部１３に記憶されている制御プログラム２０をロードし、制御部１１の作業領域として用いられる。
【００８０】
外部記憶部１３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、前記の処理を制御部１１に行わせるためのプログラムを予め記憶し、また、制御部１１の指示に従って、このプログラムが記憶するデータを制御部１１に供給し、制御部１１から供給されたデータを記憶する。図２、図４または図６のプログラム格納部２０１は、外部記憶部１３に構成される。
【００８１】
操作部１４はキーボード及びマウスなどのポインティングデバイス等と、キーボード及びポインティングデバイス等を内部バス１０に接続するインターフェース装置から構成されている。操作部１４を介して、ロボット２００の起動、停止、動作モードの設定などが入力され、制御部１１に供給される。
【００８２】
表示部１５は、ＣＲＴ（Cathode Ray Tube）又はＬＣＤ（Liquid Crystal Display）などから構成され、ロボット２００の動作状況などを表示する。
【００８３】
入出力部１６は、各種のセンサ１８およびアクチュエータ１９と接続するシリアルインタフェースまたはパラレルインタフェースから構成されている。ロボット２００のセンサ１８は、例えば、接触センサ、圧力センサ、変位センサ、音響センサ（マイク）もしくは画像センサ（撮像装置）、またはそれらの任意の組み合わせである。制御部１１は入出力部１６を介して、各センサ１８から検知したデータを入力する。アクチュエータ１９の変位をセンサ信号として入力してもよい。制御部１１は、入出力部１６を介して、アクチュエータ１９に指令してロボット２００の動作を制御する。
【００８４】
送受信部１７は、ネットワークＮに接続する網終端装置または無線通信装置、及びそれらと接続するシリアルインタフェース又はＬＡＮ（Local Area Network）インタフェースから構成されている。送受信部１７は、ネットワークを介して、共有プログラムデータベース１００からプログラムを検索してダウンロードし、変更したプログラムおよび投票情報を送信する。
【００８５】
図２、図４または図６のイベント入力部２０５、コマンド生成部２０６、プログラム実行部２０４、プログラム検索部２１２、プログラム格納部２０１、通信部２１０、プログラム変更部２０３、プログラム登録検索部２０２、パラメータ設定部２０７、プログラム類似判定部２０８およびプログラム投票部２０９の処理は、制御プログラム２０が、制御部１１、主記憶部１２、外部記憶部１３、操作部１４、表示部１５、入出力部１６及び送受信部１７などを資源として用いて処理することによって実行する。
【００８６】
本発明の好適な変形として、以下の構成が含まれる。
【００８７】
本発明の第１の観点に係るロボットについて、好ましくは、
前記事象検知手段は、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする。
【００８８】
好ましくは、前記事象検知手段は、接触センサ、圧力センサ、変位センサ、音響センサもしくは画像センサ、またはそれらの任意の組み合わせを備え、前記ロボットに相対するユーザの動作によって引き起こされる前記接触センサ、圧力センサ、変位センサ、音響センサまたは画像センサの信号を検知することを特徴とする。
【００８９】
好ましくは、前記指令生成手段は、さらに、プログラム変更指令またはプログラム登録指令のいずれかを含む指令を生成し、
前記指令手段で前記プログラム変更指令を生成した場合に、該ロボットに格納しているプログラムに、前記検知手段で検知した事象に応じて所定の変更を加える変更手段と、
前記指令手段でプログラム登録指令を生成した場合に、格納しているプログラムを前記共有プログラムデータベースに登録する登録手段と、
を備える。
【００９０】
好ましくは、前記指令生成手段は、さらに、プログラム投票指令を生成し、
前記指令手段で前記プログラム投票指令を生成した場合に、前記検知手段で検知した事象に応じて、該ロボットに格納しているプログラムに関して、前記ロボットに相対する者の意見または感情を表す投票情報を生成して、前記共有プログラムデータベースに登録する投票手段を備える。
【００９１】
好ましくは、前記取得手段は、任意の２つのプログラムの類似性を数値化する類似判定手段を含み、該類似判定手段で数値化した類似性に基づいて前記共有プログラムデータベースから所定のプログラムを検索してダウンロードすることを特徴とする。
【００９２】
好ましくは、前記変更手段は、前記検知手段で検知した事象に基づいて、該ロボットに格納しているプログラムのパラメータを設定する学習手段を含む。
【００９３】
本発明の第２の観点に係るロボットプログラム共有システムについて、好ましくは、
前記ロボットの前記事象検知手段は、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする。
【００９４】
好ましくは、前記ロボットの前記事象検知手段は、接触センサ、圧力センサ、変位センサ、音響センサもしくは画像センサ、またはそれらの任意の組み合わせを備え、前記ロボットに相対するユーザの動作によって引き起こされる前記接触センサ、圧力センサ、変位センサ、音響センサまたは画像センサの信号を検知することを特徴とする。
【００９５】
好ましくは、前記ロボットの前記指令生成手段は、さらに、プログラム変更指令またはプログラム登録指令のいずれかを含む指令を生成し、
前記指令手段で前記プログラム変更指令を生成した場合に、該ロボットに格納しているプログラムに、前記検知手段で検知した事象に応じて所定の変更を加える変更手段と、
前記指令手段で前記プログラム登録指令を生成した場合に、格納しているプログラムを前記共有プログラムデータベースに登録する登録手段と、
を備えることを特徴とする。
【００９６】
好ましくは、前記ロボットの前記指令生成手段は、さらに、プログラム投票指令を生成し、
前記指令手段で前記プログラム投票指令を生成した場合に、前記検知手段で検知した事象に応じて、該ロボットに格納しているプログラムに関して、前記ロボットに相対する者の意見または感情を表す投票情報を生成して、前記共有プログラムデータベースに登録する投票手段を備える。
【００９７】
好ましくは、前記ロボットの前記取得手段は、任意の２つのプログラムの類似性を数値化する類似判定手段を含み、該類似判定手段で数値化した類似性に基づいて前記共有プログラムデータベースから所定のプログラムを検索してダウンロードすることを特徴とする。
【００９８】
好ましくは、前記ロボットの前記変更手段は、前記検知手段で検知した事象に基づいて、該ロボットに格納しているプログラムのパラメータを設定する学習手段を含む。
【００９９】
本発明の第３の観点に係るロボットプログラム共有方法について、好ましくは、
前記事象検知ステップは、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする。
【０１００】
好ましくは、前記事象検知ステップは、前記ロボットに相対するユーザの動作によって引き起こされる接触センサ、圧力センサ、変位センサ、音響センサまたは画像センサの信号を検知することを特徴とする。
【０１０１】
好ましくは、前記指令生成ステップは、さらに、プログラム変更指令またはプログラム登録指令のいずれかを含む指令を生成し、
前記指令ステップで前記プログラム変更指令を生成した場合に、該ロボットに格納しているプログラムに、前記検知ステップで検知した事象に応じて所定の変更を加える変更ステップと、
前記指令ステップで前記プログラム登録指令を生成した場合に、格納しているプログラムを前記共有プログラムデータベースに登録する登録ステップと、
を備えることを特徴とする。
【０１０２】
好ましくは、前記指令生成ステップは、さらに、プログラム投票指令を生成し、
前記指令ステップで前記プログラム投票指令を生成した場合に、前記検知ステップで検知した事象に応じて、該ロボットに格納しているプログラムに関して、前記ロボットに相対する者の意見または感情を表す投票情報を生成して、前記共有プログラムデータベースに登録する投票ステップを備える。
【０１０３】
好ましくは、前記取得ステップは、任意の２つのプログラムの類似性を数値化する類似判定ステップを含み、該類似判定ステップで数値化した類似性に基づいて前記共有プログラムデータベースから所定のプログラムを検索してダウンロードすることを特徴とする。
【０１０４】
好ましくは、前記変更ステップは、前記検知ステップで検知した事象に基づいて、該ロボットに格納しているプログラムのパラメータを設定する学習ステップを含む。
【０１０５】
本発明の第４の観点に係るプログラムについて、好ましくは、
前記事象検知手段は、動作を表す明示的な言語の媒介によらない所定の事象を検知することを特徴とする。
【０１０６】
以上説明したように、本発明の共同編集支援システムによる第１の効果は、参加者の明示的な指示なくして、共同編集の調整に関係する参加者を提示することができることにある。これにより例えば、電子メーリングリストへの購読や電子掲示板の確認は不要になり、参加者の手間を軽減することができる。その理由は、参加者の操作履歴をもとに参加者の絞り込み、参加者の明示的な指示を必要としないためである。
【０１０７】
第２の効果は、ファイルより小さい単位で、共同編集の調整に関係する参加者を提示することができることにある。これにより例えば、大きなファイルを編集する場合でも、そのファイルの部分で関係参加者を絞り込めるようになり、他の部分の関係のない参加者と無駄な連絡をとる必要がなくなる。その理由は、参加者の操作履歴を細かく記録し、ファイルの部分についてその参加者を絞り込むためである。
【０１０８】
その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更及び修正が可能である。
【０１０９】
制御部１１、主記憶部１２、外部記憶部１３、送受信部１７、内部バス１０などから構成されるプログラム共有システムのためのロボットプログラム処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行するロボット２００を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することでロボット２００を構成してもよい。
【０１１０】
また、ロボット２００の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【０１１１】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【産業上の利用可能性】
【０１１２】
本発明によれば、複数人による、また、専門領域を越えた協調によるロボットのプログラム開発といった用途に適用できる。また、ロボットを用いた学習や教育といった用途にも適用可能である。
【図面の簡単な説明】
【０１１３】
【図１】本発明の実施の形態に係るロボットプログラム共有システムの構成例を示す概念図である。
【図２】本発明の実施の形態１に係るロボットプログラム共有システムの構成例を示すブロック図である。
【図３】実施の形態１に係るロボットのプログラム検索実行処理の動作の一例を示すフローチャートである。
【図４】本発明の実施の形態２に係るロボットプログラム共有システムの構成例を示すブロック図である。
【図５】実施の形態２に係るプログラムの変更・登録を伴うロボットの動作の一例を示すフローチャートである。
【図６】本発明の実施の形態３に係るロボットプログラム共有システムの構成例を示すブロック図である。
【図７】実施の形態３に係るプログラム投票処理を伴うロボットの動作の一例を示すフローチャートである。
【図８】本発明の実施の形態に係るロボットの物理的構成の例を示すブロック図である。
【図９】関連する技術のロボットプログラム共有システムの構成を示すブロック図である。
【符号の説明】
【０１１４】
１１  制御部
１２  主記憶部
１３  外部記憶部
１６  入出力部
１７  送受信部
１８  センサ
１９  アクチュエータ
２０  制御プログラム
１００  共有プログラムデータベース
２００  ロボット
２０１  プログラム格納部
２０２  プログラム登録検索部
２０３  プログラム変更部
２０４  プログラム実行部
２０５  イベント入力部
２０６  コマンド生成部
２０７  パラメータ設定部
２０８  プログラム類似判定部
２０９  プログラム投票部
２１０  通信部
Ｎ  ネットワーク
【図１】
2009262279.tif 000003
【図２】
2009262279.tif 000004
【図３】
2009262279.tif 000005
【図４】
2009262279.tif 000006
【図５】
2009262279.tif 000007
【図６】
2009262279.tif 000008
【図７】
2009262279.tif 000009
【図８】
2009262279.tif 000010
【図９】
2009262279.tif 000011