(57)【要約】【課題】ハード的には再構成可能な分散型の構成を採りながら、開発環境は集中型として管理することのできるロボットコントローラを提供する。【解決手段】マスタコントローラ（１０２）と、通信手段（１０６〜１０８、２０２ａ〜２０２ｄ）でマスタコントローラに接続され、マスタコントローラ側からの情報で再構成可能な機能を持つスレーブコントローラ（２０１ａ〜２０１ｄ）と、マスタコントローラに接続されたソフトウェア開発装置（１０１）とを備える。ソフトウェア開発装置（１０１）は、通信手段（１０６〜１０８、２０２ａ〜２０２ｄ）を隠蔽することで、スレーブコントローラ（２０１ａ〜２０１ｄ）がバーチャルにマスタコントローラ（１０２）の一部として認識される。【選択図】図１
2006088330.tif 000002
【特許請求の範囲】
【請求項１】
マスタコントローラと、通信手段で前記マスタコントローラに接続され、マスタコントローラ側からの情報で再構成可能な機能を持つスレーブコントローラと、前記マスタコントローラに接続されたソフトウェア開発装置とを備え、前記ソフトウェア開発装置は、前記通信手段を隠蔽することで、スレーブコントローラがバーチャルにマスタコントローラの一部として認識されるように構成したことを特徴とするロボットコントローラ。
【請求項２】
請求項１に記載のロボットコントローラにおいて、前記通信手段はルーティング機能を持つため複数個のスレーブコントローラを接続可能であり、この接続はプラグアンドプレイが可能で、前記ソフトウェア開発装置は、スレーブコントローラがプラグアンドプレイで接続された情報により、複数個のスレーブコントローラがバーチャルにマスタコントローラの一部として認識され、集中型のコントローラとして処理できるように構成したことを特徴とするロボットコントローラ。
【請求項３】
請求項１又は請求項２に記載のロボットコントローラにおいて、マスタコントローラとスレーブコントローラ間の通信、およびスレーブコントローラの再構成は、システムで規定された時間間隔内でリアルタイムに実行されることを特徴とするロボットコントローラ。
【請求項４】
請求項１又は請求項２に記載のロボットコントローラにおいて、マスタコントローラの通信は複数の仕様に対応していて、通信タイプの違う複数のスレーブコントローラが接続可能であり、これら複数のスレーブコントローラがバーチャルにマスタコントローラの一部として認識され、集中型のコントローラとして処理できるように構成したことを特徴とするロボットコントローラ。
【請求項５】
請求項１〜請求項４のいずれかに記載のロボットコントローラにおいて、マスタコントローラを再構成可能としたことを特徴とするロボットコントローラ。
【請求項６】
請求項５に記載のロボットコントローラにおいて、マスタコントローラの通信部分およびスレーブコントローラの通信部分は、マスタコントローラの再構成情報に応じていずれも再構成し、以降の通信ではマスタコントローラ側の通信部分は再構成した状態でデータをシリアライズし、スレーブコントローラ側では再構成した状態でデシリアライズしてデータをスレーブコントローラの処理部に渡すことを特徴とするロボットコントローラ。
【請求項７】
請求項５に記載のロボットコントローラにおいて、スレーブコントローラの再構成結果と同等の再構成がマスタコントローラで実行され、スレーブコントローラの動作をマスタコントローラ内で模擬することを特徴とするロボットコントローラ。
【請求項８】
請求項１〜請求項７のいずれかに記載のロボットコントローラにおいて、内部回路の再構成で、現構成回路から別の回路に変更する場合、該当コントローラの入出力信号ピンをハイインピーダンスに保ち、又は入力モードに変更してから、内部回路構成を変更することを特徴とするロボットコントローラ。
【請求項９】
請求項１〜請求項７のいずれかに記載のロボットコントローラにおいて、再構成の単位を、ロボットの構造、モータの種類、センサの種類、通信方法などに最適化されたハード的なブロックから選択するようにしたことを特徴とするロボットコントローラ。
【請求項１０】
請求項１〜請求項９のいずれかに記載のロボットコントローラにおいて、スレーブコントローラは、マスタコントローラと通信可能な子コントローラと、再構成可能な孫コントローラとで構成されることを特徴とするロボットコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタコントローラと、マスタコントローラと通信で結ばれ、マスタコントローラからの情報による再構成、又はスレーブコントローラ自身の自律的な判断による再構成が可能なスレーブコントローラと、マスタコントローラに接続されたソフトウェア開発装置とで構成され、スレーブコントローラが、ソフトウェア開発装置からバーチャルにマスタコントローラの一部として扱えるようにしたロボットコントローラに関する。
【背景技術】
【０００２】
従来のロボットコントローラは、ＣＰＵを１個だけ用いる集中型のものが一般的であったが、最近のロボットシステムの高度化、複雑化、大規模化に伴い、ＣＰＵを複数個利用する分散型のロボットコントローラが使われるようになってきた（例えば特許文献１参照）。
【０００３】
また、多様な用途に対応できるようにＦＰＧＡ（Field Programmable Gate Array）を利用し、用途に応じてコントローラ部を再構成可能にしたものもある（例えば特許文献２参照）。
【特許文献１】特開２００１−９２７９５号公報
【特許文献２】特開２００１−３２２０７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、こうした分散型のロボットコントローラは、集中型のものに比べて処理能力が向上し、フレキシビリティもアップするが、大規模化に伴い開発時に全体を統一的に管理することが困難になる場合が多い。そのため、システムにトラブルが発生した際、その原因やソフトウェアのバグを見つけるまでに従来の集中型のものより長い時間を必要とするという問題があった。
【０００５】
本発明は、このような点に鑑みてなされたものであり、その目的は、ハード的には再構成可能な分散型の構成を採りながら、開発環境は集中型として管理することのできるロボットコントローラを提供することにある。
【課題を解決するための手段】
【０００６】
本発明は上記課題を解決するものであって、請求項１に係る発明は、マスタコントローラと、通信手段で前記マスタコントローラに接続され、マスタコントローラ側からの情報で再構成可能な機能を持つスレーブコントローラと、前記マスタコントローラに接続されたソフトウェア開発装置とを備え、前記ソフトウェア開発装置は、前記通信手段を隠蔽することで、スレーブコントローラがバーチャルにマスタコントローラの一部として認識されるように構成したロボットコントローラである。
【０００７】
請求項２に係る発明は、請求項１に記載のロボットコントローラにおいて、前記通信手段はルーティング機能を持つため複数個のスレーブコントローラを接続可能であり、この接続はプラグアンドプレイが可能で、前記ソフトウェア開発装置は、スレーブコントローラがプラグアンドプレイで接続された情報により、複数個のスレーブコントローラがバーチャルにマスタコントローラの一部として認識され、集中型のコントローラとして処理できるように構成したロボットコントローラである。
【０００８】
請求項３に係る発明は、請求項１又は請求項２に記載のロボットコントローラにおいて、マスタコントローラとスレーブコントローラ間の通信、およびスレーブコントローラの再構成は、システムで規定された時間間隔内でリアルタイムに実行されるロボットコントローラである。
【０００９】
請求項４に係る発明は、請求項１又は請求項２に記載のロボットコントローラにおいて、マスタコントローラの通信は複数の仕様に対応していて、通信タイプの違う複数のスレーブコントローラが接続可能であり、これら複数のスレーブコントローラがバーチャルにマスタコントローラの一部として認識され、集中型のコントローラとして処理できるように構成したロボットコントローラである。
【００１０】
請求項５に係る発明は、請求項１〜請求項４のいずれかに記載のロボットコントローラにおいて、マスタコントローラを再構成可能としたロボットコントローラである。
【００１１】
請求項６に係る発明は、請求項５に記載のロボットコントローラにおいて、マスタコントローラの通信部分およびスレーブコントローラの通信部分は、マスタコントローラの再構成情報に応じていずれも再構成し、以降の通信ではマスタコントローラ側の通信部分は再構成した状態でデータをシリアライズし、スレーブコントローラ側では再構成した状態でデシリアライズしてデータをスレーブコントローラの処理部に渡すロボットコントローラである。
【００１２】
請求項７に係る発明は、請求項５に記載のロボットコントローラにおいて、スレーブコントローラの再構成結果と同等の再構成がマスタコントローラで実行され、スレーブコントローラの動作をマスタコントローラ内で模擬するロボットコントローラである。
【００１３】
請求項８に係る発明は、請求項１〜請求項７のいずれかに記載のロボットコントローラにおいて、内部回路の再構成で、現構成回路から別の回路に変更する場合、該当コントローラの入出力信号ピンをハイインピーダンスに保ち、又は入力モードに変更してから、内部回路構成を変更するロボットコントローラである。
【００１４】
請求項９に係る発明は、請求項１〜請求項７のいずれかに記載のロボットコントローラにおいて、再構成の単位を、ロボットの構造、モータの種類、センサの種類、通信方法などに最適化されたハード的なブロックから選択するようにしたロボットコントローラである。
【００１５】
請求項１０に係る発明は、請求項１〜請求項９のいずれかに記載のロボットコントローラにおいて、スレーブコントローラは、マスタコントローラと通信可能な子コントローラと、再構成可能な孫コントローラとで構成されるロボットコントローラである。
【発明の効果】
【００１６】
以上詳細に説明したように、本発明によれば、ハード的には再構成可能な分散型の構成を採ることで、ロボットのハードウェアに適した分散コントローラ構成を簡単に実現できるとともに、開発環境は集中型として管理することで、煩雑になる分散コントローラのソフトウェア開発を集中型コントローラと同様の手法で簡単に実現できる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明に係るロボットコントローラについて、図面を参照しながら具体的に説明する。
【００１８】
図４は、本発明のロボットコントローラの実施の対象例である移動ロボット４０１を示し、この移動ロボット４０１は、ＣＣＤカメラ４０２、モータで駆動されるカメラ用雲台部４０３、音声マイク４０４、超音波センサ４０５、及び、モータで駆動される移動用車輪４０６，４０７で構成されている。
【００１９】
図１は、図４に示す移動ロボット４０１のコントロールシステムを、本発明のロボットコントローラで構成したときのブロック図である。このロボットコントローラ１００は、ソフトウェア開発装置としての開発用ＰＣ（すなわちマンマシンインタフェース）１０１と、マスタコントローラ（すなわちマスタボード又はマスタＬＳＩチップ）１０２と、スレーブコントローラ（すなわちスレーブボード又はスレーブＬＳＩチップ）２０１ａ、２０１ｂ、２０１ｃ、２０１ｄとで構成される。
【００２０】
開発用ＰＣ１０１は、マスタコントローラ１０２に設けられた通信部１０３によってマスタコントローラ１０２と接続されている。
【００２１】
マスタコントローラ１０２は、通信部１０３に繋がるマスタＣＰＵコア１０４を備えている。マスタＣＰＵコア１０４には音声信号処理部１１０が設けられ、この音声信号処理部１１０は、音声マイク１１１（移動ロボット４０１の音声マイク４０４に相当）から入力される音声信号の信号処理を行う。
【００２２】
マスタコントローラ１０２は、マスタＣＰＵコア１０４に繋がるマスタコントローラ内部バス１０５を備えている。また、マスタコントローラ１０２は、スレーブコントローラ２０１ａ用のＩＥＥＥ１３９４通信部１０６、スレーブコントローラ２０１ｂ用のＣＡＮ通信部１０７、およびスレーブコントローラ２０１ｃ、２０１ｄ用のＵＳＢ２．０通信部１０８を備えていて、これらの通信部１０６、１０７、１０８もマスタコントローラ内部バス１０５に繋がっている。これにより、通信部１０６、１０７、１０８からマスタコントローラ内部バス１０５を介してマスタＣＰＵコア１０４に通信情報が伝達され、さらに、マスタＣＰＵコア１０４から通信部１０３を介して開発用ＰＣ１０１に通信情報が伝達される。
【００２３】
スレーブコントローラ２０１ａは、マスタコントローラ１０２の通信部１０６と接続されたＩＥＥＥ１３９４通信部２０２ａを備えていて、この通信部２０２ａを介してマスタコントローラ１０２と通信する。また、スレーブコントローラ２０１ａは、通信部２０２ａに繋がるＣＰＵコア付きＦＰＧＡ部２０３ａを備えていて、ＣＣＤカメラ２０４ａ（移動ロボット４０１のＣＣＤカメラ４０２に相当）の信号は、画像前処理用に再構成されたＣＰＵコア付きＦＰＧＡ部２０３ａで画像前処理され、その結果がマスタコントローラ１０２に送られる。
【００２４】
スレーブコントローラ２０１ｂは、マスタコントローラ１０２の通信部１０７と接続されたＣＡＮ通信部２０２ｂを備えていて、この通信部２０２ｂを介してマスタコントローラ１０２と通信する。また、スレーブコントローラ２０１ｂは、通信部２０２ｂに繋がるＣＰＵコア付きＦＰＧＡ部２０３ｂを備えていて、超音波センサ２０４ｂ（移動ロボット４０１の超音波センサ４０５に相当）の信号は、センサ信号処理用に再構成されたＣＰＵコア付きＦＰＧＡ部２０３ｂで信号処理され、その結果がマスタコントローラ１０２に送られる。
【００２５】
スレーブコントローラ２０１ｃは、ＵＳＢ２．０通信バス１０９を介してマスタコントローラ１０２の通信部１０８と接続されたＵＳＢ２．０通信部２０２ｃを備えていて、この通信部２０２ｃを介してマスタコントローラ１０２と通信する。また、スレーブコントローラ２０１ｃは、通信部２０２ｃに繋がるＣＰＵコア付きＦＰＧＡ部２０３ｃを備えていて、カメラ雲台２０４ｃ（移動ロボット４０１のカメラ用雲台部４０３に相当）は、雲台制御用に再構成されたＣＰＵコア付きＦＰＧＡ部２０３ｃで制御される。すなわち、スレーブコントローラ２０１ｃのＣＰＵコア付きＦＰＧＡ部２０３ｃは、マスタコントローラ１０２から雲台制御用の目標値を受信してカメラ雲台２０４ｃのモータ出力などを制御する一方、コマンド終了や異常状態などの通信をマスタコントローラ１０２に対して行う。
【００２６】
スレーブコントローラ２０１ｄは、ＵＳＢ２．０通信バス１０９を介してマスタコントローラ１０２の通信部１０８と接続されたＵＳＢ２．０通信部２０２ｄを備えていて、この通信部２０２ｄを介してマスタコントローラ１０２と通信する。また、スレーブコントローラ２０１ｄは、通信部２０２ｄに繋がるＣＰＵコア付きＦＰＧＡ部２０３ｄを備えていて、車輪駆動機構２０４ｄ（移動ロボット４０１のモータで駆動される移動用車輪４０６，４０７に相当）は、車輪駆動制御用に再構成されたＣＰＵコア付きＦＰＧＡ部２０３ｄで制御される。すなわち、スレーブコントローラ２０１ｃのＣＰＵコア付きＦＰＧＡ部２０３ｄは、マスタコントローラ１０２から車輪駆動制御用の目標値を受信して車輪駆動機構２０４ｄのモータ出力などを制御する一方、コマンド終了や異常状態などの通信をマスタコントローラ１０２に対して行う。
【００２７】
図２は、図１で示したロボットコントローラ１００のハードウェア構成において、全てのスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの機能がバーチャルにマスタコントローラ１０２上に存在するごとく開発用ＰＣ１０１から見えるようにしたときの仮想ブロック図である。
【００２８】
図２に示すようなブロック構成によれば、仮想的な画像前処理部２０５ａ、仮想的なセンサ信号処理部２０５ｂ、仮想的な雲台制御部２０５ｃ、および仮想的な車輪駆動制御部２０５ｄは、開発用ＰＣ１０１上に構成されたソフトウェア開発環境においては、それぞれがマスタＣＰＵコア１０４のひとつの処理ルーチンとして扱える。
【００２９】
この方法としては、ソフトウェア的に、ＩＥＥＥ１３９４通信部１０６、２０２ａ、ＣＡＮ通信部１０７、２０２ｂ、ＵＳＢ２．０通信部１０８、２０２ｃ、２０２ｄを隠蔽し、開発者に通信部を意識させずに開発環境を構築する方法がある。この方法はソフトウェアのみの対応で良いため、簡便であるというメリットがある。
【００３０】
これに対し、実際のロボットに組み込んだ組込システムではハード的なタイミングが重要になる。そこで、マスタコントローラ１０２もＦＰＧＡなどの再構成可能なものにし、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄと同様のハードウェアをマスタコントローラ１０２自身に構成するという方法もある。この方法は、スレーブコントローラが未完の場合など、初期のシステム開発時に有効である。
【００３１】
また、開発時には、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄに接続されるデバイス２０４ａ、２０４ｂ、２０４ｃ、２０４ｄなどが未完の場合もある。そこで、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄにおいてこれらのデバイスを模擬するような再構成を行うことも有効である。この場合、デバイス２０４ａ、２０４ｂ、２０４ｃ、２０４ｄそのものを再構成で模擬する方法や、デバイスそのものは模擬せずデータのみを模擬する方法がある。
【００３２】
図１のスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄにおいて、予め接続されるデバイス２０４ａ、２０４ｂ、２０４ｃ、２０４ｄが既知の場合は、スレーブコントローラ用のコンフィグレーションファイルは、マスタコントローラ１０２や開発用ＰＣ１０１などの上位系からシステム立ち上げ時に送られたものを利用できる。または、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄにＳＲＡＭなどの記憶部を持たせ、これにコンフィグレーションファイルを保存しておき、立ち上げ時にそこから読み出して再構成することができる。
【００３３】
また、デバイス２０４ａ、２０４ｂ、２０４ｃ、２０４ｄ自身と、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄとの間で、ＰＣにおけるＵＳＢ機器のようにプラグアンドプレイ的なハードウェア、ソフトウェア構成を持たせるようにすれば、先に示したＳＲＡＭなどに保存されているコンフィグレーションファイルから、又は、デバイス情報を基に上位系へ問い合わせ、検索してコンフィグレーションファイルをダウンロードすることで、自律的にスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄが再構成可能となる。
【００３４】
ロボットのような組込システムでは、作業の内容によって、実時間で制御則、制御演算を切り換える必要がある。そこで、制御則や制御演算に最適化したスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄのコンフィグレーションファイルを、制御則、制御演算実行時に先に示したＳＲＡＭなどから持ってきて、実時間で再構成を可能にすることで、演算時間や回路規模を効率化したスレーブコントローラハードウェアを構成できる。
【００３５】
マスタコントローラ１０２とスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄ間の通信部において、通信初期化時又は通信内容変更時にマスタ側から以降の通信内容に最適化したスレーブ通信部コンフィグレーションファイルを送り、これによりスレーブ通信部を再構成することで効率的な通信が可能になる。
【００３６】
すなわち、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの通信部２０２ａ、２０２ｂ、２０２ｃ、２０２ｄを、マスタコントローラ１０２からの再構成情報に応じて再構成する。これにより、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの通信部２０２ａ、２０２ｂ、２０２ｃ、２０２ｄは、以降の通信でマスタコントローラ１０２から送られてくるデータを、再構成した状態でデシリアライズして、ＣＰＵコア付きＦＰＧＡ部２０３ａ、２０３ｂ、２０３ｃ、２０３ｄに渡すことができる。
【００３７】
また、マスタコントローラ１０２の通信部１０６、１０７、１０８、および、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの通信部２０２ａ、２０２ｂ、２０２ｃ、２０２ｄを、マスタコントローラ１０２の再構成情報に応じていずれも再構成する。これにより、以降の通信では、マスタコントローラ１０２の通信部１０６、１０７、１０８は再構成した状態でデータをシリアライズし、一方、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの通信部２０２ａ、２０２ｂ、２０２ｃ、２０２ｄは再構成した状態でデータをデシリアライズして、ＣＰＵコア付きＦＰＧＡ部２０３ａ、２０３ｂ、２０３ｃ、２０３ｄに渡すことができる。
【００３８】
図３は、図１に示した車輪駆動制御用のスレーブコントローラ２０１ｄを、子コントローラ［すなわち孫コントローラ付きスレーブコントローラ（孫コントローラ付きスレーブボード又はスレーブＬＳＩチップ）］２１１と、孫コントローラ（すなわち孫ボード又は孫ＬＳＩチップ）３０１ａ、３０１ｂとで構成したブロック図である。
【００３９】
子コントローラ（孫コントローラ付きスレーブコントローラ）２１１は、ＵＳＢ２．０通信バス１０９を介してマスタコントローラ１０２の通信部１０８と接続された上位系通信部２１２を備えていて、この上位系通信部２１２を介してマスタコントローラ１０２と通信する。また、子コントローラ２１１は、上位系通信部２１２に繋がる再構成コア部２１３を備えている。再構成コア部２１３はジャイロ信号処理部２１６を備えていて、このジャイロ信号処理部２１６でジャイロセンサ２１７からの信号を処理する。また、再構成コア部２１３は下位系通信部２１８を備えていて、この下位系通信部２１８が、下位系通信バス２１９を介して孫コントローラ３０１ａ、３０１ｂと通信する。
【００４０】
孫コントローラ３０１ａは、下位系通信バス２１９を介して子コントローラ２１１と通信する通信部３０２ａと、右モータ制御用に再構成された右モータ用制御回路部３０３ａとを備えている。そして、右モータ用制御回路部３０３ａは、右モータ用ドライバ３０４ａおよび右モータ用回転角センサ３０６ａによって右モータ３０５ａを制御する。一方、孫コントローラ３０１ｂは、下位系通信バス２１９を介して子コントローラ２１１と通信する通信部３０２ｂと、左モータ制御用に再構成された左モータ用制御回路部３０３ｂとを備えている。そして、左モータ用制御回路部３０３ｂは、左モータ用ドライバ３０４ｂおよび左モータ用回転角センサ３０６ｂによって左モータ３０５ｂを制御する。
【００４１】
このように、ロボットシステムの構成によっては、図１に示すマスタコントローラ１０２およびスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄと同様な関係を多層に構成することで、システムのハードウェア製作が一層容易になる場合がある。この場合も、開発用ＰＣ１０１からはマスタコントローラ１０２上に全てのスレーブ側が存在するような仮想化を行うことで、開発の視認性を上げることができ、開発効率やデバッグ時に有効である。
【００４２】
また、再構成の内容によっては、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄと外部デバイスとの入出力信号が変更されることもある。スレーブコントローラの内部素子を破壊することなくこの入出力方向の切換を実施する方法を図５に示す。すなわち、スレーブコントローラの外部との入出力部（ＣＰＵ側信号ライン５０６とデバイス側信号ライン５０７間）に入出力バッファ部を用意し、そこに内蔵された入出力切換回路５０４（１チャネル分を示す）を入出力方向制御信号（モードコントロール信号）５０５によって切り換える。図５において、入出力バッファ部５０１は、入出力方向制御信号５０５が出力モードのときの入出力切換回路５０４の状態を示し、入出力バッファ部５０２は、入出力方向制御信号５０５が遷移モードのときの入出力切換回路５０４の状態を示し、入出力バッファ部５０３は、入出力方向制御信号５０５が入力モードのときの入出力切換回路５０４の状態を示す。このように、入出力バッファ部の入出力切換回路５０４は、入出力方向制御信号５０５により切換時でも常にハイインピーダンスが保たれるようにしている。
【００４３】
なお、図１では、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの再構成部２０３ａ、２０３ｂ、２０３ｃ、２０３ｄはＣＰＵコア付きＦＰＧＡの例を示したが、ＦＰＧＡは通常のカスタムＬＳＩより高価で動作クロックも上げられないという弱点を持つ。そこで、ロボット用のハードＩＰコアを予め用意しておき、コア間の接続情報のみで再構成させるようにすれば、カスタムＬＳＩと同等の価格と速度を実現できる。
【００４４】
上記のように、このロボットコントローラ１００は、マスタコントローラ１０２と、通信手段でマスタコントローラに接続され、マスタコントローラ側からの情報で再構成可能な機能を持つスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄと、マスタコントローラに接続されたソフトウェア開発装置としての開発用ＰＣ１０１とを備え、開発用ＰＣ１０１は、通信手段を隠蔽することで、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄがバーチャルにマスタコントローラ１０２の一部として認識される。
【００４５】
また、このロボットコントローラ１００は、マスタコントローラ１０２と、通信手段でマスタコントローラに接続され、コントロール対象となる機器の状態に応じて自律的に再構成可能なスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄと、マスタコントローラに接続されたソフトウェア開発装置としての開発用ＰＣ１０１とを備え、開発用ＰＣ１０１は、通信手段を隠蔽し、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄが自律的に再構成した結果がマスタコントローラ１０２を通じて開発用ＰＣ１０１に情報伝達されることで、スレーブコントローラがバーチャルにマスタコントローラ１０２の一部として認識される。
【００４６】
また、このロボットコントローラ１００は、マスタコントローラ１０２とスレーブコントローラとを繋ぐ通信手段はルーティング機能を持つため、複数個のスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄを接続可能であり、この接続はプラグアンドプレイが可能で、開発用ＰＣ１０１は、スレーブコントローラがプラグアンドプレイで接続された情報により、複数個のスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄがバーチャルにマスタコントローラ１０２の一部として認識され、集中型のコントローラとして処理できる。
【００４７】
また、このロボットコントローラ１００は、マスタコントローラ１０２とスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄ間の通信、およびスレーブコントローラの再構成は、システムで規定された時間間隔内でリアルタイムに実行される。
【００４８】
また、このロボットコントローラ１００は、マスタコントローラ１０２の通信は複数の仕様に対応していて、通信タイプの違う複数のスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄが接続可能であり、これら複数のスレーブコントローラがバーチャルにマスタコントローラ１０２の一部として認識され、集中型のコントローラとして処理できる。
【００４９】
また、このロボットコントローラ１００は、マスタコントローラ１０２が再構成可能である。
【００５０】
また、このロボットコントローラ１００は、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの通信部分はマスタコントローラ１０２からの再構成情報に応じて再構成し、以降の通信でマスタコントローラ１０２から送られてくるデータを再構成した状態でデシリアライズしてスレーブコントローラの処理部に渡すことができる。
【００５１】
また、このロボットコントローラ１００は、マスタコントローラ１０２の通信部分およびスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの通信部分は、マスタコントローラ１０２の再構成情報に応じていずれも再構成し、以降の通信ではマスタコントローラ１０２側の通信部分は再構成した状態でデータをシリアライズし、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄ側では再構成した状態でデシリアライズしてデータをスレーブコントローラの処理部に渡すことができる。
【００５２】
また、このロボットコントローラ１００は、マスタコントローラ１０２とスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄ間の通信部分はマスタコントローラ１０２からのリセット信号に応じて再構成し、標準通信構成に復帰できる。
【００５３】
また、このロボットコントローラ１００は、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの再構成結果と同等の再構成がマスタコントローラで実行され、スレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄの動作をマスタコントローラ１０２内で模擬することができる。
【００５４】
また、このロボットコントローラ１００は、何らかの入出力デバイスを取り扱うスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄでは、動作時に実際の入出力デバイスが無いときに入出力動作を模擬的に生成することができる。
【００５５】
また、このロボットコントローラ１００は、何らかの入出力デバイスを取り扱うスレーブコントローラ２０１ａ、２０１ｂ、２０１ｃ、２０１ｄでは、動作時に実際の入出力デバイスが無いときに入出力動作のデータ部分のみを模擬的に生成するように再構成することができる。
【００５６】
また、このロボットコントローラ１００は、内部回路の再構成で、現構成回路から別の回路に変更する場合、該当コントローラの入出力信号ピンをハイインピーダンスに保ち、又は入力モードに変更してから、内部回路構成を変更することができる。
【００５７】
また、このロボットコントローラ１００は、再構成の単位を、ロボットの構造、モータの種類、センサの種類、通信方法などに最適化されたハード的なブロックから選択することができる。
【００５８】
さらに、このロボットコントローラ１００は、スレーブコントローラを、マスタコントローラ１０２と通信可能な子コントローラ２１１と、再構成可能な孫コントローラ３０１ａ、３０１ｂとで構成することができる。
【図面の簡単な説明】
【００５９】
【図１】本発明によるロボットコントローラのハードウェアの一構成例を示すブロック図である。
【図２】図１のロボットコントローラにおける開発装置から見た仮想的なコントローラ構成を示すブロック図である。
【図３】図１のロボットコントローラにおけるスレーブコントローラを、子コントローラと孫コントローラとで構成したブロック図である。
【図４】図１のロボットコントローラの実施の対象例である移動ロボットを示す概略図である。
【図５】入出力の切換方法を示すバッファ回路の動作遷移図である。
【符号の説明】
【００６０】
１００  ロボットコントローラ
１０１  開発用ＰＣ（マンマシンインタフェース）
１０２  マスタコントローラ（マスタボード又はマスタＬＳＩチップ）
１０３  通信部
１０４  マスタＣＰＵコア
１０５  マスタコントローラの内部バス
１０６  ＩＥＥＥ１３９４通信部
１０７  ＣＡＮ通信部
１０８  ＵＳＢ２．０通信部
１０９  ＵＳＢ２．０通信バス
１１０  音声信号処理部
１１１  音声マイク
２０１ａ、２０１ｂ、２０１ｃ、２０１ｄ  スレーブコントローラ（スレーブボード又はスレーブＬＳＩチップ）
２０２ａ  ＩＥＥＥ１３９４通信部
２０２ｂ  ＣＡＮ通信部
２０２ｃ、２０２ｄ  ＵＳＢ２．０通信部
２０３ａ  画像前処理用に再構成されたＣＰＵコア付きＦＰＧＡ部
２０３ｂ  センサ信号処理用に再構成されたＣＰＵコア付きＦＰＧＡ部
２０３ｃ  雲台制御用に再構成されたＣＰＵコア付きＦＰＧＡ部
２０３ｄ  車輪駆動制御用に再構成されたＣＰＵコア付きＦＰＧＡ部
２０４ａ  ＣＣＤカメラ
２０４ｂ  超音波センサ
２０４ｃ  カメラ雲台
２０４ｄ  車輪駆動機構
２０５ａ  開発装置からみた仮想的な画像前処理部
２０５ｂ  開発装置からみた仮想的なセンサ信号処理部
２０５ｃ  開発装置からみた仮想的な雲台制御部
２０５ｄ  開発装置からみた仮想的な車輪駆動制御部
２１１  子コントローラ［孫コントローラ付きスレーブコントローラ（孫コントローラ付きスレーブボード又はスレーブＬＳＩチップ）］
２１２  上位系通信部
２１３  再構成コア部
２１６  ジャイロ信号処理部
２１７  ジャイロセンサ
２１８  下位系通信部
２１９  下位系通信バス
３０１ａ、３０１ｂ  孫コントローラ（孫ボード又は孫ＬＳＩチップ）
３０２ａ、３０２ｂ  子コントローラとの通信部
３０３ａ  再構成された右モータ用制御回路部
３０３ｂ  再構成された左モータ用制御回路部
３０４ａ  右モータ用ドライバ
３０４ｂ  左モータ用ドライバ
３０５ａ  右モータ
３０５ｂ  左モータ
３０６ａ  右モータ用回転角センサ
３０６ｂ  左モータ用回転角センサ
４０１  移動ロボット
４０２  ＣＣＤカメラ
４０３  カメラ用雲台部
４０４  音声マイク
４０５  超音波センサ
４０６  移動用車輪（右車輪）
４０７  移動用車輪（左車輪）
５０１  出力モード時の入出力バッファ部
５０２  遷移モード時の入出力バッファ部５０３  入力モード時の入出力バッファ部
５０４  入出力切換回路
５０５  入出力方向制御信号（モードコントロール信号）
５０６  ＣＰＵ側信号ライン
５０７  デバイス側信号ライン
【図１】
2006088330.tif 000003
【図２】
2006088330.tif 000004
【図３】
2006088330.tif 000005
【図４】
2006088330.tif 000006
【図５】
2006088330.tif 000007