(57)【特許請求の範囲】
【請求項１】
画像入力手段から順次入力される画像データを記憶するための共有メモリを複数設けた記憶手段と、
上記画像データの転送先として上記共有メモリのアドレスを指定するアドレス情報が書き込まれたＤＭＡ（Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ）リストに従い、上記画像入力手段から上記記憶手段の上記アドレスへ上記画像データをＤＭＡ転送させるＤＭＡコントローラと、
上記ＤＭＡリストを生成し、上記ＤＭＡコントローラにより当該ＤＭＡリストに従い上記画像データを当該ＤＭＡリストにより指定されたアドレスの上記共有メモリへ順次転送して記憶させるデータ転送手段と、
上記画像データの読み出しが要求されると、当該読み出し対象の画像データが格納されている上記共有メモリのアドレス情報を通知する通知手段と、
通知された上記アドレス情報に基づいて上記共有メモリから上記読み出し対象の画像データをそれぞれ読み出し、各画像データに対し画像処理を並行して実行する複数の画像処理手段と
を有する画像処理装置。
【請求項２】
上記共有メモリに転送された上記画像データが上記画像処理手段によって読み出されるまで、上記画像入力手段から順次入力される他の画像データを他の上記共有メモリに転送させる転送制御手段
をさらに有する請求項１に記載の画像処理装置。
【請求項３】
アクチュエータにより関節部分を動作させるロボットであって、
画像入力手段から順次入力される複数の画像データを記憶するための共有メモリを複数設けた記憶手段と、
上記画像データの転送先として上記共有メモリのアドレスを指定するアドレス情報が書き込まれたＤＭＡリストに従い、上記画像入力手段から上記記憶手段の上記アドレスへ上記画像データをＤＭＡ転送させるＤＭＡコントローラと、
上記ＤＭＡリストを生成し、上記ＤＭＡコントローラにより当該ＤＭＡリストに従い上記画像データを当該ＤＭＡリストにより指定されたアドレスの上記共有メモリへ順次転送して記憶させるデータ転送手段と、
上記画像データの読み出しが要求されると、当該読み出し対象の画像データが格納されている上記共有メモリのアドレス情報を通知する通知手段と、
通知された上記アドレス情報に基づいて上記共有メモリから上記読み出し対象の画像データをそれぞれ読み出し、各画像データに対し画像処理を並行して実行する複数の画像処理手段と、
上記画像処理手段による処理結果を基に次の動作を決定し、当該決定した動作に応じた駆動信号を上記アクチュエータに送出する制御手段と
を有するロボット装置。
【請求項４】
画像入力手段から順次入力される複数の画像データの転送先として、当該画像データを記憶するため記憶手段に複数設けられた共有メモリのアドレスを指定するアドレス情報が書き込まれたＤＭＡリストを作成する作成ステップと、
ＤＭＡコントローラにより、上記ＤＭＡリストに従って上記画像入力手段から上記記憶手段における当該ＤＭＡリストに示されるアドレスの上記共有メモリへ上記画像データをＤＭＡ転送させて当該共有メモリに順次記憶させる記憶ステップと、
上記画像データの読み出しが要求されると、所定の通知手段により、当該読み出し対象の画像データが格納されている上記共有メモリのアドレス情報を通知する通知ステップと、
通知された上記アドレス情報に基づいて、複数の画像処理手段により上記共有メモリから上記読み出し対象の画像データをそれぞれ読み出し、各画像データに対し画像処理を並行して実行する画像処理ステップと
を有する画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理装置及びロボット装置並びに画像処理方法に関し、例えば４足動物のように動作するペットロボットに適用して好適なものである。
【０００２】
【従来の技術】
従来、パーソナルコンピュータやワークステーションのような汎用の計算機にビデオカメラなどの画像入力装置を接続し、当該画像入力装置から入力される画像データを計算機において処理する画像処理システムが開発されている。このような画像処理システムの計算機は、例えば色検出や動き検出などの画像処理を行う複数の画像処理オブジェクトを有し、入力される画像データに対して複数の画像処理を施すようになされている。
【０００３】
このため画像処理システムの計算機では、画像入力装置から入力される画像データを一旦フレームバッファに蓄積した後、当該フレームバッファから各画像処理オブジェクトを実行するＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）が直接アクセスし得るメモリに画像データを転送、又は各画像処理オブジェクトが直接フレームバッファにアクセスして画像データを読み出すようになされている。
【０００４】
また、汎用の計算機に画像入力装置を接続してなる画像処理システム以外には、汎用の計算機に予め画像入力装置を組み込んだ組み込み型の画像処理装置が開発されている。このような組み込み型の画像処理装置は、特定の画像処理を実行するためのＤＳＰ（Ｄｉｇｉｔａｌ Ｓｉｇｎａｌ Ｐｒｏｃｅｓｓｏｒ）を有し、当該ＤＳＰのメモリに画像データを直接書き込むことにより単一の画像処理を高速に行うようになされている。
【０００５】
【発明が解決しようとする課題】
ところで汎用の計算機に画像入力装置を接続してなる画像処理システムでは、ＣＰＵが実行する画像処理オブジェクトの数に比例して、画像データの転送にかかる時間が増大してしまい、画像処理に時間がかかる問題があった。因みに、画像データをフレームバッファに一旦蓄積した後にメモリに転送する方法としては、例えば特開平８−２９７５８５号公報に開示されている方法があり、この方法では、画像データを一旦フレームバッファに蓄積する分、転送速度が遅くなると共に、ＣＰＵがデータ転送を行っているため、データ転送が終わるまでＣＰＵが他の処理を実行することができない問題があった。また、各画像処理オブジェクトが直接フレームバッファにアクセスして画像データを読み出す方法では、データのアクセスが遅い上に、ＣＰＵがハードウェアであるフレームバッファに直接アクセスするため移植性が低く、データ保護の安全性に欠ける問題があった。
【０００６】
一方、組み込み型の画像処理装置では、特定の画像処理しか行えないＤＳＰを用いていることから、複数の画像処理を同時に実行させることや、ハードウェアに依存しないプログラムを記述することが困難であった。
【０００７】
本発明は以上の点を考慮してなされたもので、複数の独立した画像処理をそれぞれ並行して高速に実行する画像処理装置及びロボット装置並びに画像処理方法を提案しようとするものである。
【０００８】
【課題を解決するための手段】
かかる課題を解決するため本発明においては、画像入力手段から順次入力される画像データを記憶するための共有メモリを記憶手段に複数設け、画像データの転送先として共有メモリのアドレスを指定するアドレス情報が書き込まれたＤＭＡリストに従い、画像入力手段から上記記憶手段の上記アドレスへ画像データをＤＭＡ転送するＤＭＡコントローラを設け、ＤＭＡリストを生成してＤＭＡコントローラにより当該ＤＭＡリストに従い画像データを当該ＤＭＡリストにより指定されたアドレスの共有メモリへ順次転送して記憶させ、画像データの読み出しが要求されると、通知手段により、当該読み出し対象の画像データが格納されている共有メモリのアドレス情報を通知し、通知されたアドレス情報に基づいて、複数の画像処理手段により共有メモリから読み出し対象の画像データをそれぞれ読み出し、各画像データに対し画像処理を並行して実行するようにした。
【０００９】
これにより、画像入力手段と所望アドレスの共有メモリとの間で高速なＤＭＡ転送ができ、且つ各画像処理手段は、通知されたアドレス情報に基づいて読み出し対象の画像データをそれぞれ記憶手段の共有メモリから直接読み出して所定の画像処理を施すことができる。かくして本発明は、簡易な構成で複数の独立した画像処理をそれぞれ並行して高速に実行し得る。
【００１０】
【発明の実施の形態】
以下図面について、本発明の一実施の形態を詳述する。
【００１１】
（１）ペットロボットの構成
図１において、１は全体として動物の外観形状を有するペットロボットを示し、頭に相当する頭部２と、胴体に相当する本体部３と、足に相当する足部４Ａ〜４Ｄと、尻尾に相当する尻尾部５とを連結することによって構成され、本体部３に対して頭部２、足部４Ａ〜４Ｄ及び尻尾部５を動かすことによって実際の４足動物のように動作させるようになされている。
【００１２】
頭部２には、目に相当し、画像入力手段を構成するＣＣＤ（Ｃｈａｒｇｅ Ｃｏｕｐｌｅｄ Ｄｅｖｉｃｅ）カメラ１０と、耳に相当し、音声を集音するマイク１１と、口に相当し、音声を発するスピーカ１２とがそれぞれ所定位置に取り付けられている。また頭部２には、ユーザの手などが接触されたことを検出するためのタッチセンサ１４と、ペットロボット１の進行方向に対して前方に位置する障害物までの距離を検出する距離センサ１５とが取り付けられている。
【００１３】
本体部３には、腹に相当する位置にバッテリ１６が取り付けられると共に、その内部にペットロボット１全体の動作を制御するための電子回路（図示せず）等が収納されている。
【００１４】
足部４Ａ〜４Ｄの関節部分、足部４Ａ〜４Ｄと本体部３を連結する関節部分、本体部３と頭部２を連結する関節部分、本体部３と尻尾部５を連結する関節部分などは、それぞれのアクチュエータ１７１〜１７Ｎによって連結されており、本体部３内部に収納される電子回路の制御に基づいて駆動するようになされている。このようにペットロボット１は、各アクチュエータ１７１〜１７Ｎを駆動させることにより、頭部２を上下左右に振らせたり、尻尾部５を振らせたり、足部４Ａ〜４Ｄを動かして歩かせたり走らせたりして、実際の４足動物のような動作を行わせる。
【００１５】
（２）ペットロボットの回路構成
ここでペットロボット１の回路構成を図２に示す。ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）２０は、ペットロボット１全体の動作を制御するためのものであり、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ Ｍｅｍｏｒｙ）２１に格納されている制御プログラムをバスＢ１を介して必要に応じて読み出すと共に、ＰＣ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ）カードスロット（図示せず）に挿入されたメモリカード２２に格納されている制御プログラムをＰＣカードインターフェイス２３及びバスＢ１を順次介して読み出し、これら読み出した制御プログラムを記憶手段としてのＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）２４に転送して記憶するようになされている。ＣＰＵ２０は、このＤＲＡＭ２４に転送された制御プログラムを読み出して実行することによりペットロボット１の各回路を制御している。
【００１６】
信号処理回路３０は、ＣＰＵ２０の制御に基づいて各種信号処理を行うためのものであり、図３に示すように、ＣＰＵ２０（図２）に接続するためのホストインターフェイス３１と、フラッシュＲＯＭ２１（図２）に接続するためのＲＯＭインターフェイス３２と、ＤＲＡＭ２４（図２）に接続するためのＤＲＡＭインターフェイス３３とを有し、バスＢ１を介してＣＰＵ２０、フラッシュＲＯＭ２１及びＤＲＡＭ２４に接続されている。
【００１７】
信号処理回路３０は、アービトレーション（バス使用権の調停作業）を行うためのバスアービタ３４を有し、当該バスアービタ３４は、バスＢ２を介してホストインターフェイス３１、ＲＯＭインターフェイス３２及びＤＲＡＭインターフェイス３３に接続されている。
【００１８】
また図２において、ペットロボット１には、各関節部分を駆動するアクチュエータ１７１〜１７Ｎにおける駆動量を検出するためのポテンショメータ４０１〜４０Ｎがそれぞれ設けられ、アクチュエータ１７１〜１７Ｎ、ポテンショメータ４０１〜４０Ｎ、タッチセンサ１４、距離センサ１５、マイク１１及びスピーカ１２がそれぞれハブ４１１〜４１Ｘを介して信号処理回路３０のシリアルバスホストコントローラ４５（図３）にツリー状に接続されている。図３に示すように、シリアルバスホストコントローラ４５は、バスＢ３を介してバスアービタ３４に接続され、各ポテンショメータ４０１〜４０Ｎによって検出された角度情報、タッチセンサ１４によって検出された接触情報、距離センサ１５によって検出された障害物の距離情報をバスＢ３、バスアービタ３４、バスＢ２、ＤＲＡＭインターフェイス３３及びバスＢ１（図２）を順次介してＤＲＡＭ２４（図２）に転送して記憶するようになされている。
【００１９】
ＦＢＫ／ＣＤＴ（Ｆｉｌｔｅｒ Ｂａｎｋ／Ｃｏｌｏｒ Ｄｅｔｅｃｔｉｏｎ）４６は、ＣＣＤカメラ１０（図２）に接続されるためのものであり、当該ＣＣＤカメラ１０によって撮像された画像データの色認識を行いながら複数の解像度に分けて取り込み、当該取り込んだ画像データをバスアービタ３４及びＤＲＡＭインターフェイス３３を順次介してＤＲＡＭ２４（図２）に転送して記憶する。
【００２０】
ＩＰＥ（Ｉｎｎｅｒ Ｐｒｏｄｕｃｔ Ｅｎｇｉｎｅ）４７は、２次元ディジタルフィルタでなり、ＤＲＡＭ２４（図２）からＤＲＡＭインターフェイス３３及びバスアービタ３４を順次介して画像データが供給されると、当該画像データから床と壁や壁と壁の境界を強調したエッジ画像を生成し、当該生成したエッジ画像をバスアービタ３４及びＤＲＡＭインターフェイス３３を順次介してＤＲＡＭ２４（図２）に戻して記憶する。
【００２１】
ＤＭＡ（Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ）コントローラ４８は、データの転送を司るバスマスタとして機能するためのものであり、例えばＦＢＫ／ＣＤＴ４６のバッファ（図示せず）から画像データを読み出してＤＲＡＭ２４（図２）に転送したり、ＤＲＡＭ２４（図２）から画像データを読み出してＩＰＥ４７に転送し、当該ＩＰＥ４７による演算結果であるエッジ画像をＤＲＡＭ２４（図２）に転送するようになされている。
【００２２】
ＤＳＰ（Ｄｉｇｉｔａｌ Ｓｉｇｎａｌ Ｐｒｏｃｅｓｓｏｒ）４９は、マイク１１（図２）からハブ４１Ｘ〜４１Ｘ−２、シリアルバスホストコントローラ４５及びバスＢ３を順次介して例えばユーザの指令を示す音声信号が入力されると、当該音声信号に対して所定のデータ処理を施し、その処理結果でなる音声情報をバスアービタ３４及びＤＲＡＭインターフェイス３３を順次介してＤＲＡＭ２４（図２）に転送して記憶する。
【００２３】
シリアルバス５０は、パーソナルコンピュータ（ＰＣ）などのリモートコンピュータ（図示せず）に接続するためのインターフェイスであり、バスＢ３を介してバスアービタ３４に接続されている。同様にバスＢ３を介してバスアービタ３４に接続されるペリフェラルインターフェイス５１は、リモートコンピュータに接続するためのシリアルポート５２及びパラレルポート５３に接続されると共に、バッテリ１６（図２）に接続するためのバッテリマネージャ５１に接続されている。バッテリマネージャ５１は、バッテリ１６から通知されるバッテリ残量情報をペリフェラルインターフェイス５１、バスアービタ３４及びＤＲＡＭインターフェイス３３を順次介してＤＲＡＭ２４に転送して記憶する。タイマー５５は、ペットロボット１内部の時計としての役割を果たすものであり、バスＢ３を介してバスアービタ３４に接続されている。
【００２４】
ＣＰＵ２０は、ＤＲＡＭ２４に展開されている各種情報に基づいて自律的に次の動作を決定し、当該決定した動作に応じた駆動信号を生成する。そしてＣＰＵ２０は、この駆動信号を信号処理回路３０内部のホストインターフェイス３１、バスアービタ３４及びシリアルバスホストコントローラ４５並びにハブ４１１〜４１Ｎを順次介してアクチュエータ１７１〜１７Ｎに送出することにより、当該各アクチュエータ１７１〜１７Ｎを駆動して当該ペットロボット１を自律的に動作させる。
【００２５】
なおＣＰＵ２０は、ＤＲＡＭ２４に展開されている各種情報に基づいて音声情報を生成し、当該音声情報をホストインターフェイス３１及びバスアービタ３４を順次介してＤＳＰ４９に送出し、当該ＤＳＰ４９において音声信号に変換した後、当該音声信号をシリアルバスホストコントローラ４５、ハブ４１Ｘを順次介してスピーカ１２から出力する。
【００２６】
（３）画像データの転送
ここではＣＣＤカメラ１０から入力される画像データをＤＲＡＭ２４に転送する転送方法について説明する。上述した図２及び図３に示すように、ＣＣＤカメラ１０によって撮像された画像データは、信号処理回路３０のＦＢＫ／ＣＤＴ４６に入力され、当該ＦＢＫ／ＣＤＴ４６において所定の画像処理が施された後、ＤＭＡコントローラ４８の制御に基づいてバスアービタ３４及びＤＲＡＭインターフェイス３３を順次介してＤＲＡＭ２４に転送される。
【００２７】
ところでＤＭＡコントローラ４８は、バスアービタ３４及びＤＲＡＭインターフェイス３３を順次介してＤＲＡＭ２４から、ＣＰＵ２０によって生成されたＤＭＡリストを読み出し、当該ＤＭＡリストに書かれている画像データの転送元や転送先に関する情報に基づいて画像データの転送を行うようになされている。従って、ＤＭＡコントローラ４８は、ＣＰＵ２０がＤＭＡリストを書き換えることによって、ＦＢＫ／ＣＤＴ４６から出力される画像データをＤＲＡＭ２４上の任意の位置に転送することができる。このようにペットロボット１では、画像データをＤＲＡＭ２４に転送して展開することにより、ＣＰＵ２０のキャッシュ機能を有効に利用して高速なデータ処理を行うようになされている。
【００２８】
以下、画像データの転送方法についてＦＢＫ／ＣＤＴ４６の構成を示す図４を用いながら具体的に説明する。ＣＣＤカメラ１０によって撮像された画像データは、８ビットのパラレルデータとクロック信号と同期信号とからなり、ＦＢＫ／ＣＤＴ４６の入力画像インターフェイス６０に入力されて所定のフォーマットに変換された後、フィルタ演算部６１に供給される。
【００２９】
ところでＣＰＵ２０は、ＤＲＡＭ２４に記憶されている制御プログラムを基に各種フィルタ係数を決定し、当該決定したフィルタ係数をパラメータ記憶部６２に送出して記憶するようになされている。フィルタ演算部６１は、このパラメータ記憶部６２に記憶されているフィルタ係数を用いて入力画像インターフェイス６１にフィルタ演算を施すことにより、供給された画像データの色認識を行いながら複数の解像度の画像データを生成する。
【００３０】
フィルタ演算部６１の後段には１ライン分の画像データを記憶する記憶容量を有するバッファ６３Ａ及び６３Ｂがそれぞれ設けられており、フィルタ演算部６１は、生成した画像データを１ライン毎に交互にバッファ６３Ａ及び６３Ｂに送出して蓄積していく。その際、ＤＭＡインターフェイス６４は、バッファ６３Ａ及び６３Ｂのうち一方のバッファ６３に１ライン分の画像データを蓄積している間に他方のバッファ６３から１ライン分の画像データを読み出し、当該読み出した１ライン分の画像データをＤＭＡコントローラ４８の指示に基づいてＤＲＡＭ２４に転送することにより、複数の画像データを順次ＤＲＡＭ２４に転送する。なおバッファ６３Ａ及び６３Ｂは、合計して２ライン分の記憶容量を持つだけなので、記憶容量が少なく、簡易な構成のＦＢＫ／ＣＤＴ４６を実現している。
【００３１】
ところでこのような画像データの転送は、バスマスタとして機能するＤＭＡコントローラ４８によって行われる。すなわちＤＭＡインターフェイス６４は、バッファ６３Ａ及び６３Ｂのうちいずれか一方に１ライン分の画像データが蓄積されると、ＤＭＡコントローラ４８（図３）に対してＤＭＡリクエストと呼ばれる転送要求信号を送出する。
【００３２】
ＤＭＡコントローラ４８（図３）は、ＤＭＡリクエストが供給されると、まずバスＢ１〜Ｂ３の使用権を獲得し、次いでＣＰＵ２０によって通知されるＤＭＡリストのアドレスを基にＤＲＡＭ２４（図２）からＤＭＡリストを読み出す。
【００３３】
ＤＭＡコントローラ４８（図３）は、このＤＭＡリストに基づいて画像データの転送先であるＤＲＡＭ２４（図２）上のアドレスを順次生成し、バスＢ１〜Ｂ３に対して書込み信号を発行する。ＦＢＫ／ＣＤＴ４６は、このバスＢ１〜Ｂ３に対する書込み信号に同期して、バッファ６３Ａ及び６３Ｂに蓄積されている画像データを読み出してバスＢ３に順次送出する。
【００３４】
このＦＢＫ／ＣＤＴ４６から出力された画像データは、ＦＢＫ／ＣＤＴ４６から出力されると同時にＤＲＡＭ２４に書き込まれることから、画像データの転送は非常に高速に行われる。ところで、画像データの転送先に関する設定は、ＤＭＡリストによって行われることから、ＤＭＡコントローラ４８は画像データをＤＲＡＭ２４上の任意の位置に転送し得るようになされている。
【００３５】
そしてＦＢＫ／ＣＤＴ４６は、バッファ６３Ａ及び６３Ｂに蓄積されていた画像データが無くなると、ＤＭＡコントローラ４８に対するＤＭＡリクエストを取り下げて画像データの転送を打ち切る。これを受けてＤＭＡコントローラ４８は、ＤＭＡリクエストが取り下げられたタイミングまでに転送した画像データのデータ量などの情報をＤＭＡリストに書き込んで、バスＢ１〜Ｂ３を解放する。そしてＤＭＡコントローラ４８は、再びＤＭＡリクエストが供給されると、上述のＤＭＡリストをＤＲＡＭ２４から読み出して前回の続きの転送を行う。
【００３６】
ここで図５はＤＭＡリスト７０のデータ構造を示す。このＤＭＡリスト７０は、３２ビットのデータを１ワードとして１０ワードのデータから構成されている。デフォルト・ソース・スタート・アドレス（Ｄｅｆａｕｌｔ Ｓｏｕｒｃｅ Ｓｔａｒｔ Ａｄｄｒｅｓｓ）７３は、転送元の開始アドレスを示し、デフォルト・デスティネイション・スタート・アドレス（Ｄｅｆａｕｌｔ Ｄｅｓｔｉ−ｎａｔｉｏｎ Ｓｔａｒｔ Ａｄｄｒｅｓｓ）７４は、転送先の開始アドレスを示す。
【００３７】
デフォルト・トランスファー・サイズ（Ｄｅｆａｕｌｔ Ｔｒａｎｓｆｅｒ Ｓｉｚｅ）７５は、１回で転送される画像データの転送量を示す。ループイネーブル（Ｌｏｏｐｅｎ）７６は、このＤＭＡリストを繰り返し使うためのフラグを示し、バイト（Ｂｙｔｅ）７７は、転送の単位を決定するフラグを示し、アイオーメモ（Ｉｏｍｅｍ）７８は、アドレスが割り当てられていない転送元からアドレスが割り当てられている転送先に画像データを転送することを表すフラグを示す。バスアウト（Ｂｕｓｏｕｔ）７９は、画像データがＤＲＡＭ２４から転送されるのか又はＤＲＡＭ２４に転送されるのかを表すフラグを示し、イントイネーブル（Ｉｎｔｅｎ）８０は、転送が終了したときに割り込みを発生するフラグを示す。
【００３８】
ソース・アドレス・スキップ（Ｓｏｕｒｃｅ Ａｄｄｒｅｓｓ Ｓｋｉｐ）８１は、デフォルト・トランスファー・サイズ７５に記述された転送量の画像データを転送した後に転送元において読み飛ばすアドレスの大きさを示し、設定されたアドレスの大きさに応じて画像中の一部の領域のみを抽出して転送することができる。デスティネイション・アドレス・スキップ（Ｄｅｓｔｉｎａｔｉｏｎ Ａｄｄｒｅｓｓ Ｓｋｉｐ）８２は、転送先において読み飛ばすアドレスの大きさを示し、設定されたアドレスの大きさに応じて画像中の一部の領域に別の画像をはめ込むことができる。
【００３９】
ソース／デスティネイション・エンド・アドレス（Ｓｏｕｒｃｅ／Ｄｅｓ−ｔｉｎａｔｉｏｎ Ｅｎｄ Ａｄｄｒｅｓｓ）８３は、転送先又は転送元の終了アドレスを示す。ネクスト・ＤＭＡリスト・ポインタ（Ｎｅｘｔ ＤＭＡＬｉｓｔ Ｐｏｉｎｔｅｒ）８４は、次に読み出すＤＭＡリストのアドレスを記述するためのものである。
【００４０】
カレント・ソース・スタート・アドレス（Ｃｕｒｒｅｎｔ Ｓｏｕｒｃｅ Ｓｔａｒｔ Ａｄｄｒｅｓｓ）８５は、転送を途中で打ち切ったときに記述される転送元の開始アドレスを示す。カレント・デスティネイション・スタート・アドレス（Ｃｕｒｒｅｎｔ Ｄｅｓｔｉｎａｔｉｏｎ Ｓｔａｒｔ Ａｄ−ｄｒｅｓｓ）８６は、転送を途中で打ち切ったときに記述される転送先の開始アドレスを示す。
【００４１】
カレント・ステイタス（Ｃｕｒｒｅｎｔ Ｓｔａｔｕｓ）８７は、デフォルト・トランスファー・サイズ７５に記述された転送量で転送されている間に、当該転送が途中で打ち切られたときの転送量を書き込むための領域である。ビジー（Ｂｕｓｙ）８８は、転送を途中で打ち切ったときに立てられるフラグを示し、ダン・カウント（Ｄｏｎｅ Ｃｏｕｎｔ）８９は、転送が終了する毎にカウントアップするためのものである。
【００４２】
（４）ソフトウェアの構成
ここではペットロボット１の動作を制御する制御プログラム１００のソフトウェア構成を図６を用いて説明する。デバイス・ドライバ・レイヤ１０１は、この制御プログラムの最下位層に位置し、例えばＦＢＫ／ＣＤＴのデバイス・ドライバのような、ハードウェアとのインターフェイスを実現するためのソフトウェア群でなるデバイス・ドライバ・セット１０２によって構成されている。
【００４３】
ロボティック・サーバ・オブジェクト１０３は、デバイス・ドライバ・レイヤ１０１の上位層に位置し、ペットロボット１のハードウェアにアクセスするためのインターフェイスを提供するソフトウェア群でなるバーチャル・ロボット１０４、電源の切換えなどの管理をするソフトウェア群でなるパワー・マネージャ１０５、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ１０６、ペットロボット１の機構を管理するソフトウェア群でなるデザインド・ロボット１０７によって構成されている。
【００４４】
ミドル・ウェア・レイヤ１０８は、ロボティック・サーバ・オブジェクト１０３の上位層に位置し、画像処理や音声処理を行うソフトウェア群などによって構成されている。アプリケーション・レイヤ１０９は、ミドル・ウェア・レイヤ１０８を構成するソフトウェア群によって処理された処理結果に基づいてペットロボット１が行う動作を決定するソフトウェア群によって構成されている。
【００４５】
マネージャ・オブジェクト１１０は、オブジェクト・マネージャ１１１及びサービス・マネージャ１１２によって構成されており、このうちオブジェクト・マネージャ１１１は、ロボティック・サーバ・オブジェクト１０３、ミドル・ウェア・レイヤ１０８及びアプリケーション・レイヤ１０９を構成するソフトウェア群の起動や終了を管理するソフトウェア群でなり、サービス・マネージャ１１２は、メモリカード２２に記憶されているコネクションファイルに記述された各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群でなる。
【００４６】
（５）画像処理方法
ここでは例えば色検出、動き検出及び障害物検出のような複数の画像処理を並行して同時に実行する場合について、図７及び図８に示すフローチャートを用いて説明する。まずステップＳＰ１から入ったステップＳＰ２において、ＣＰＵ２０は、ＦＢＫ／ＣＤＴドライバ１０２Ａを起動してＦＢＫ／ＣＤＴ４６を初期化する。
【００４７】
次にステップＳＰ３において、ＣＰＵ２０は、ロボティック・サーバ・オブジェクト１０３を起動してバーチャル・ロボット１０４を起動する。バーチャル・ロボット１０４は、画像データを記憶するための共有メモリ１２０を複数個ＤＲＡＭ２４上に生成した後、ＦＢＫ／ＣＤＴドライバ１０２Ａに画像サイズのような画像の属性に関する情報を設定する。またＣＰＵ２０は、ロボティック・サーバ・オブジェクト１０３の起動が終了すると、ミドル・ウェア・レイヤ１０８を構成している画像処理オブジェクトを順次起動していく。因みに、生成された共有メモリ１２０の記憶容量は、バーチャル・ロボット１０４の指示に応じて容易に変更が可能である。
【００４８】
ステップＳＰ４において、バーチャル・ロボット１０４は、ＤＲＡＭ２４上に生成した複数の共有メモリ１２０のうち所望の共有メモリ１２０のアドレスをＦＢＫ／ＣＤＴドライバ１０２Ａに通知すると共に、当該通知したアドレスの共有メモリ１２０に画像データを転送することを要求するリード要求をＦＢＫ／ＣＤＴドライバ１０２Ａに発行する。
【００４９】
ステップＳＰ５において、ＦＢＫ／ＣＤＴドライバ１０２Ａは、バーチャル・ロボット１０４及びＤＭＡコントローラ４８と共にデータ転送手段を構成し、リード要求を受け取ると、指定された共有メモリ１２０に画像データを転送するためのＤＭＡリスト１２１を生成してＤＲＡＭ２４に記憶する。その際、ＦＢＫ／ＣＤＴドライバ１０２Ａは、ＤＲＡＭ２４に記憶されたＤＭＡリスト１２１のアドレスをＤＭＡコントローラ４８に通知した後、ＦＢＫ／ＣＤＴ４６に対して画像データを出力することを許可する。
【００５０】
ステップＳＰ６において、ＦＢＫ／ＣＤＴ４６は、１フィールド分の画像データを指定された共有メモリ１２０に転送すると、ＦＢＫ／ＣＤＴドライバ１０２Ａに対して割り込みを発生させ、割り込みハンドラと呼ばれるソフトウェアを起動させる。次いでステップＳＰ７において、割り込みハンドラは、バーチャル・ロボット１０４に対して画像データの転送が終了したことを通知する。
【００５１】
ステップＳＰ８において、バーチャル・ロボット１０４は、参照回数計測カウンタが０の共有メモリ領域を探索し、次にステップＳＰ９において、転送すべき共有メモリ１２０のアドレスとしてＦＢＫ／ＣＤＴドライバ１０２Ａに渡してリード要求を発行した後、ステップＳＰ５に戻って上述の動作を繰り返す。
【００５２】
一方ＣＰＵ２０は、この図７に示す処理と並行して図８に示すフローチャートに従った処理を実行する。すなわちＣＰＵ２０は、このフローチャートをステップＳＰ０において開始後、続くステップＳＰ１０において、ミドル・ウェア・レイヤ１０８を構成する画像処理オブジェクトの起動が終了したか否か判断し、その結果、画像処理オブジェクトの起動が終了したと判断した場合にはステップＳＰ１１に移行し、起動が終了していないと判断した場合には起動が終了するまで待機する。
【００５３】
ステップＳＰ１１において、マネージャ・オブジェクト１１０のサービス・マネージャ１１２は、ミドル・ウェア・レイヤ１０８の画像処理オブジェクトの起動が終わると、各画像処理オブジェクトに対して接続相手先の画像処理オブジェクトを通知し、各画像処理オブジェクト間で通信路を開く。この場合、サービス・マネージャ１１２は、色検出用画像処理オブジェクト１２５、動き検出用画像処理オブジェクト１２６及びエッジ検出用画像処理オブジェクト１２７をバーチャル・ロボット１０４に接続する。またサービス・マネージャ１１２は、重心計算用画像処理オブジェクト１２８を色検出用画像処理オブジェクト１２５に接続すると共に、重心計算用画像処理オブジェクト１２９を動き検出用画像処理オブジェクト１２６に接続する。さらにサービス・マネージャ１１２は、障害物検出用画像処理オブジェクト１３０及び座標変換用画像処理オブジェクト１３１をエッジ検出用画像処理オブジェクト１２７に階層的に接続する。因みに、このような各画像処理オブジェクト間の接続は変更が可能であり、各画像処理オブジェクトの接続関係を変更することで様々な処理を行い得る。
【００５４】
ステップＳＰ１３において、サービス・マネージャ１１２は、各画像処理オブジェクト間の接続が終了すると、当該各画像処理オブジェクトにスタート信号を送出する。これを受けて各画像処理オブジェクトは、コネクションファイルに記述された接続情報に基づいて下位層にある接続先の画像処理オブジェクトにデータ要求信号を送出する。
【００５５】
ところで色検出用画像処理オブジェクト１２５、動き検出用画像処理オブジェクト１２６及びエッジ検出用画像処理オブジェクト１２７は、ＦＢＫ／ＣＤＴ４６から順次供給される画像データを、それぞれ異なるフィールド間隔で読み出すようになされており、バーチャル・ロボット１０４は、供給される画像データのうち、各画像処理オブジェクト１２５〜１２７がそれぞれ読み出すべき画像データを把握している。
【００５６】
従ってステップＳＰ１４において、バーチャル・ロボット１０４は、各画像処理オブジェクト１２５〜１２７からデータ要求信号を受け取ると、通知手段として動作し、各画像処理オブジェクト１２５〜１２７がそれぞれ読み出すべき画像データが格納されている共有メモリ１２０に割り当てられているＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）（すなわちアドレス情報）を各画像処理オブジェクト１２５〜１２７にそれぞれ通知する。その際、バーチャル・ロボット１０４は、内部の参照回数計測カウンタを用いて、各画像処理オブジェクト１２５〜１２７に通知したＩＤそれぞれに対して、通知した画像処理オブジェクト１２５〜１２７の数をカウントしてそのカウント数を記憶しておく。
【００５７】
このときバーチャル・ロボット１０４は、転送制御手段として動作し、参照回数計測カウンタによるカウント数が０でないＩＤの共有メモリ１２０には、ＦＢＫ／ＣＤＴ４６から供給される画像データを上書きせずに、カウント数が０の共有メモリ１２０に画像データを上書きして順次記憶していくことにより、各画像処理オブジェクト１２５〜１２７が読み出す可能性のある画像データを誤って消去することを回避している。
【００５８】
ステップＳＰ１５において、各画像処理オブジェクト１２５〜１２７は、通知されたＩＤが割り当てられている共有メモリから画像データを読み出す。その際、各画像処理オブジェクト１２５〜１２６は、それぞれ同一の共有メモリ１２０に記憶されている画像データを読み出す場合もある。しかしながら共有メモリ１２０は、読出し専用のメモリであることから、各画像処理オブジェクト１２５〜１２７はぞれぞれ互いに干渉することなく画像データの読み出しを行い得る。
【００５９】
このようにして各画像処理オブジェクト１２５〜１２７は、画像データを所望の共有メモリ１２０から読み出した後、ステップＳＰ１６において、読み出した画像データに対してそれぞれ所定の画像処理を施し、その処理結果を上位層のオブジェクト１２８〜１３０に送出して、ステップＳＰ１７において、上述のデータ要求信号に対する画像処理を終了する。
【００６０】
続くステップＳＰ１８において、各画像処理オブジェクト１２５〜１２７は、コネクションファイルに記述された接続情報に基づいて、次の画像データを要求するためのデータ要求信号をそれぞれバーチャル・ロボット１０４に送出する。ステップＳＰ１９において、バーチャル・ロボット１０４は、データ要求信号を受け取ると、データ要求信号を送出した画像処理オブジェクト１２５〜１２７に通知したＩＤに対応して記憶されている参照回数計測カウンタのカウント数をデータ要求信号が供給される毎に減算する。そしてバーチャル・ロボット１０４は、そのカウント数が０になったときに、当該カウント数が０になったＩＤが割り当てられている共有メモリ１２０に記憶されている画像データの保護を解除し、ステップＳＰ１４に戻って動作を繰り返す。
【００６１】
すなわち色検出用画像処理オブジェクト１２５は、読み出した画像データから色の検出を行い、その処理結果を重心計算用画像処理オブジェクト１２８に送出して検出した色の位置を算出させる。また動き検出用画像処理オブジェクト１２６は画像データから動き領域の検出を行い、その処理結果を重心計算用画像処理オブジェクト１２９に送出して検出した動き領域の位置や大きさを算出させる。エッジ検出用画像処理オブジェクト１２７は画像データからエッジの検出を行い、その処理結果を障害物検出用画像処理オブジェクト１３０に送出して障害物の位置を算出させた後、座標変換用画像処理オブジェクト１３１において障害物の位置を座標変換させる。次にステップＳＰ１８に戻り次の処理を行う。
【００６２】
このように各画像処理オブジェクト１２５〜１２７は、ＤＲＡＭ２４上に生成された共有メモリ１２０から画像データを読み出すようになされていることから、ＣＣＤカメラ１０に依存しない汎用的な画像処理オブジェクトを実現することができ、従って複数の汎用的な画像処理オブジェクトを組み合わせることで、様々な画像処理を行うことが容易となる。
【００６３】
（６）動作及び効果
以上の構成において、バーチャル・ロボット１０４は、ＤＲＡＭ２４上に生成されている複数の共有メモリ１２０のうち書換え可能な共有メモリ１２０を順次指定し、当該指定した共有メモリ１２０のアドレスをＦＢＫ／ＣＤＴドライバ１０２Ａに送出する。
【００６４】
ＦＢＫ／ＣＤＴドライバ１０２Ａは、この指定された共有メモリ１２０のアドレスに基づいてＤＭＡリストを順次生成し、これをＤＲＡＭ２４に記憶していく。ＤＭＡコントローラ４８は、ＤＲＡＭ２４に展開されているＤＭＡリストに基づいて画像データをＦＢＫ／ＣＤＴ４６から指定された共有メモリ１２０に順次転送する。このようにＣＣＤカメラ１０から得られた画像データを、各画像処理オブジェクト１２５〜１２７が直接アクセスし得るＤＲＡＭ２４上に転送することから、画像データの転送に要する時間を削減できると共に、メモリ管理の安全性を向上し得る。
【００６５】
バーチャル・ロボット１０４は、各共有メモリ１２０にそれぞれ格納されている画像データのうち、各画像処理オブジェクト１２５〜１２７がそれぞれ読み出すべき画像データを管理している。そこでバーチャル・ロボット１０４は、各画像処理オブジェクト１２５〜１２７からそれぞれ送られてくるデータ要求信号を受け取ると、各画像処理オブジェクト１２５〜１２７に読み出し対象の画像データが格納されている共有メモリ１２０のアドレスをそれぞれ通知する。
【００６６】
各画像処理オブジェクト１２５〜１２７は、通知されたアドレスに基づいて共有メモリ１２０から画像データを読み出し、当該読み出した画像データに対してそれぞれ所定の画像処理を施す。
【００６７】
その際、バーチャル・ロボット１０４は、読み出し対象の画像データを格納している共有メモリ１２０に対して、当該共有メモリ１２０のアドレスを通知した画像処理オブジェクト１２５〜１２７を記憶しておき、当該記憶された画像処理オブジェクト１２５〜１２７全てから次のデータ要求信号が供給されるまで、当該共有メモリ１２０にＦＢＫ／ＣＤＴ４６から画像データを転送することを禁止する。
【００６８】
これにより複数の独立した画像処理オブジェクト１２５〜１２７を互いに干渉することなく並行して実行しながら、読み出し対象の画像データを確実に保護し得る。
【００６９】
以上の構成によれば、各画像処理オブジェクト１２５〜１２７からそれぞれ読み出し対象の画像データが要求されると、当該読み出し対象の画像データが格納されている共有メモリ１２０のＩＤを各画像処理オブジェクト１２５〜１２７にそれぞれ通知することにより、各画像処理オブジェクト１２５〜１２７は、通知されたＩＤに基づいてＤＲＡＭ２４上に格納されている画像データをそれぞれ直接読み出すことができ、かくして簡易な構成で複数の独立した画像処理をそれぞれ並行して高速に実行し得る。
【００７０】
（７）他の実施の形態
なお上述の実施の形態においては、本発明をペットロボット１に適用した場合について述べたが、本発明はこれに限らず、例えばゲームや展示等のエンタテインメント分野で用いられるロボット又は搬送用ロボット、工事用ロボット等の産業ロボットのように、他の種々のロボット装置に本発明を広く適用し得る。
【００７１】
また上述の実施の形態においては、本発明をペットロボット１に適用した場合について述べたが、本発明はこれに限らず、例えば複数の画像処理を施すコンピュータのように、複数の画像処理を並列的に実行する他の種々の画像処理装置に本発明を広く適用し得る。
【００７２】
【産業上の利用可能性】
本発明は、ペットロボットに適用することができる。
また本発明は、複数の処理を同時並行して行う画像処理装置に適用することができる。
【００７３】
【図面の簡単な説明】
【図１】  本発明によるペットロボットの一実施の形態を示す略線図である。
【図２】  ペットロボットの回路構成を示すブロック図である。
【図３】  信号処理回路の構成を示すブロック図である。
【図４】  ＦＢＫ／ＣＤＴの構成を示すブロック図である。
【図５】  ＤＭＡリストのデータ構造を示す略線図である。
【図６】  ソフトウェアの構成を示す略線図である。
【図７】  ペットロボットによる画像処理方法を示すフローチャートである。
【図８】  ペットロボットによる画像処理方法を示すフローチャートである。
【図９】  画像処理オブジェクトの構成を示す略線図である。
【符号の説明】
１……ペットロボット、２……頭部、３……本体部、４……足部、５……尻尾部、１０……ＣＣＤカメラ、１１……マイク、１２……スピーカ、１５……距離センサ、１６……バッテリ、１７……アクチュエータ、２０……ＣＰＵ、２１……フラッシュＲＯＭ、２２……メモリカード、２４……ＤＲＡＭ、３０……信号処理回路、３４……バスアービタ、４０……ポテンショメータ、４１……ハブ、４５……シリアルバスホストコントローラ、４６……ＦＢＫ／ＣＤＴ、４７……ＩＰＥ、４８……ＤＭＡコントローラ。
【図１】
0004759810.tif 000002
【図２】
0004759810.tif 000003
【図３】
0004759810.tif 000004
【図４】
0004759810.tif 000005
【図５】
0004759810.tif 000006
【図６】
0004759810.tif 000007
【図７】
0004759810.tif 000008
【図８】
0004759810.tif 000009
【図９】
0004759810.tif 000010
0004759810.tif 000011