(57)【特許請求の範囲】
【請求項１】
生産装置の設置環境から３Ｄデータ取得装置によって取得した３Ｄデータを用いて制御装置が前記設置環境に設置された物体の３Ｄモデルを生成して前記生産装置の設置環境に対応する３Ｄ仮想環境に配置する仮想環境作成方法において、
前記制御装置が、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記設置環境に配置される物体の形状情報を含む第１の辞書データと、を照合する第１の照合工程と、
前記制御装置が、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記設置環境に配置される物体へ接続される柔軟物に関する情報を含む第２の辞書データと、を照合する第２の照合工程と、
前記制御装置が、前記第１または第２の照合工程に基づき、前記設置環境に配置されている物体の３Ｄモデルを生成して前記３Ｄ仮想環境に配置する出力処理工程と、を含み、
前記第２の辞書データは、前記設置環境に配置される物体に対して前記柔軟物が接続される位置または方向の少なくとも一つを有する接続特性情報を含み、前記制御装置は、前記第２の照合工程において、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記接続特性情報と、を照合することを特徴とする仮想環境作成方法。
【請求項２】
請求項１に記載の仮想環境作成方法において、前記第１の辞書データに、前記生産装置の設計情報に基づき作成されたデータが含まれることを特徴とする仮想環境作成方法。
【請求項３】
請求項１または２に記載の仮想環境作成方法において、前記制御装置は、前記出力処理工程において、前記設置環境に前記柔軟物に対応する３Ｄモデルを生成する場合、その変形の前後において前記柔軟物が占有している空間を統合して得た占有空間の３Ｄモデルを生成し、前記３Ｄ仮想環境に配置することを特徴とする仮想環境作成方法。
【請求項４】
請求項１または２に記載の仮想環境作成方法において、前記第２の辞書データに、前記設置環境に配置される可能性のある物体、または物体どうしを接続する前記柔軟物に関して、前記物体または前記柔軟物の体積または、アスペクト比、あるいは、これらに関する許容誤差情報が含まれることを特徴とする仮想環境作成方法。
【請求項５】
請求項１から４のいずれか１項に記載の仮想環境作成方法において、前記第１の辞書データに含まれている物体が前記３Ｄデータ取得装置によって取得した３Ｄデータ中に存在しなかった場合、前記制御装置がユーザにその旨を警告する警告情報を通知することを特徴とする仮想環境作成方法。
【請求項６】
請求項１から５のいずれか１項に記載の仮想環境作成方法において、前記３Ｄデータ取得装置によって取得した３Ｄデータに、前記第１および第２の照合工程において、前記３Ｄデータに前記第１および第２の辞書データのいずれにも該当しない未照合の物体が含まれている場合、前記制御装置がユーザにその旨を警告する警告情報を通知することを特徴とする仮想環境作成方法。
【請求項７】
請求項６に記載の仮想環境作成方法において、前記警告情報の通知の後、前記制御装置が、前記未照合の物体の３Ｄモデルを生成して前記３Ｄ仮想環境へ配置するか否かをユーザに問い合せるユーザーインターフェース工程を含むことを特徴とする仮想環境作成方法。
【請求項８】
請求項１から７のいずれか１項に記載の仮想環境作成方法おいて、前記生産装置が多関節のロボット装置であり、前記ロボット装置の設置環境から３Ｄデータ取得装置によって取得した３Ｄデータを用いて前記制御装置が前記設置環境に設置された物体の３Ｄモデルを生成して前記ロボット装置の設置環境に対応する３Ｄ仮想環境に配置することを特徴とする仮想環境作成方法。
【請求項９】
請求項１から８のいずれか１項に記載の仮想環境作成方法において、前記柔軟物がケーブルであることを特徴とする仮想環境作成方法。
【請求項１０】
請求項１から９のいずれか１項に記載の仮想環境作成方法において、前記出力処理工程では、表示装置に前記３Ｄ仮想環境を出力することを特徴とする仮想環境作成方法。
【請求項１１】
請求項１から１０に記載の仮想環境作成方法によって作成された前記３Ｄ仮想環境を用いてロボット装置のロボット制御プログラムを作成することを特徴とするロボット装置の制御方法。
【請求項１２】
請求項１１に記載のロボット装置の制御方法において、前記ロボット制御プログラムに従って、前記ロボット装置の設置環境において前記ロボット装置を動作させることを特徴とするロボット装置の制御方法。
【請求項１３】
請求項１１に記載の前記ロボット制御プログラムに従って、前記ロボット装置の設置環境において前記ロボット装置を動作させ、前記ロボット装置により物品を製造することを特徴とする物品の製造方法。
【請求項１４】
請求項１１から１３のいずれか１項に記載の前記ロボット装置および前記制御装置を含むことを特徴とするロボットシステム。
【請求項１５】
請求項１から１０のいずれか１項に記載のロボット装置の制御方法の前記各工程を前記制御装置に実行させることを特徴とする仮想環境作成プログラム。
【請求項１６】
請求項１５に記載の仮想環境作成プログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１７】
生産装置の設置環境に対応する３Ｄ仮想環境を生成して表示装置に表示させる情報処理装置であって、
前記生産装置の設置環境から３Ｄデータ取得装置によって３Ｄデータを取得する取得手段と、
取得された前記３Ｄデータと、前記設置環境に配置される物体の形状情報を含む第１の辞書データと、を照合する第１の照合手段と、
前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記設置環境に配置される物体へ接続される柔軟物に関する情報を含む第２の辞書データと、を照合する第２の照合手段と、
前記第１または第２の照合手段による照合結果に基づき、前記設置環境に配置されている物体の配置を示す３Ｄ仮想環境を前記表示装置に出力する出力手段と、を含み、
前記第２の辞書データは、前記設置環境に配置される物体に対して前記柔軟物が接続される位置または方向の少なくとも一つを有する接続特性情報を含み、前記第２の照合手段は、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記接続特性情報と、を照合することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生産装置の設置環境に設置された物体の３Ｄモデルを生成して３Ｄ仮想環境に配置する仮想環境作成方法、ロボット装置の制御方法、ロボットシステム、および情報処理装置に関する。
【背景技術】
【０００２】
近年、工業生産の分野で、人間の手のように複雑で高速な物品の製造作業を実現できる多関節のロボット装置（以下ロボット装置という）を利用した生産（製造）装置が普及しつつある。この種のロボット装置で組立を行う場合、ロボットの動作プログラムを作成する必要がある。この際、コンピュータグラフィックを用いた３Ｄ仮想環境を用いて動作プログラムを作成することがある。
【０００３】
このようなロボットプログラミング（教示）のための３Ｄ仮想環境は、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  ａｉｄｅｄ  ｄｅｓｉｇｎ）ツールで作成したロボット装置や被作業物（ワーク）などの仮想的な３Ｄモデルを配置して構築される。このような３Ｄ仮想環境をディスプレイに表示し、例えばＧＵＩ（Ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）上で動作を確認しながら動作プログラム作成を行うことができる。３Ｄ仮想環境をＧＵＩで操作するよう構成されたロボットプログラミング環境は、直感的な操作が可能である利点がある。
【０００４】
上記のような３Ｄ仮想環境を構築する場合、通常、ロボット装置および被作業物（ワーク）に関しては、予め設計情報（サイズ、形状、ジオメトリ）が既知であることが多い。従って、仮想環境中に配置する空間情報として、設計情報に基きＣＡＤ処理などによって構築された３Ｄモデルを用意できることが多い。
【０００５】
しかしながら、設計情報のみを用いてＣＡＤ上で作成した空間情報は、実環境上の物体とサイズや設置位置が微妙に異なる場合がある。実環境上の物体（ロボット装置や被作業物）には、公差や部品製作誤差が存在するためである。
【０００６】
このため、従来では、仮想環境上で作成したロボット装置の動作プログラムは、実環境で用いる前に実環境上での動作確認などを経て調整する作業が行われる。例えば、実環境に設置されたロボット装置、あるいはさらに被作業物を用いて１ステップずつ確認動作を行わせる。そして、例えば実環境と整合しない部分をティーチングペンダントのような操作端末を用いて修正する。しかしながら、近年ではロボット装置を用いた組立工程が複雑化しつつあり、このような実環境で行う調整作業の工数や所要時間が膨大になる傾向がある。
【０００７】
上記のような事情に鑑み、カメラなどの撮像装置を用いて実環境を撮影し、仮想環境上に反映させる技術が提案されている。例えば、ロボット装置の先端に撮像装置を設け、ワークを撮像することで実環境上の空間情報を取得し、取得した被作業物の空間情報を仮想環境上にする技術が提案されている（例えば下記の特許文献１）。また、ＣＴスキャナのような撮像装置により得られた空間情報と、設計情報から得た空間情報を比較し、寸法補正などを行う技術も提案されている（例えば下記の特許文献２）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−２４５７９１号公報
【特許文献２】特開２００４−２７１２２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記特許文献１では、撮像対象は被作業物に限定されており、被作業物以外を撮像して空間情報を取得するようなことは行っていない。また、ＣＡＤ等で予め設計情報から作成した空間情報が存在する場合や、そのような空間情報の取り扱いには言及されていない。また、上記特許文献２では、予め作成した空間情報と撮像により得られた空間情報との比較を行うものの、両空間情報に存在する物体に差異がある場合や、物体が両空間情報の一方のみに存在している場合などの取り扱いには言及されていない。
【００１０】
実際には、撮像装置などを用いて環境認識によって得られた空間情報と、予め作成した空間情報に差分があることは稀ではない。例えば、ケーブルのような柔軟物は実環境でどのように配置されるか、設計情報ないしはそれに基づきＣＡＤ処理された３Ｄモデル上では予め決定することが困難である。
【００１１】
例えば、ケーブルのような柔軟物がロボット装置の設置環境に配置されることは決して珍しくない。例えば、ロボット装置と制御装置を接続したり、被作業物（ワーク）どうしがケーブルで接続されていることがある。このような場合、ロボットアームやその先端のエンドエフェクタがケーブルと緩衝しないようにロボット装置の動作プログラムを作成する必要がある。しかしながら、従来では、ケーブルのような柔軟物の場合は、実際の占有領域と比べ大きめの空間を配置領域として仮想環境上に登録し、ロボットの侵入禁止領域とするような取り扱いが行われていた。このため、ロボット装置を必ずしも効率的に動作させることができない場合があり、実工程のタクトタイムが増大する問題があった。
【００１２】
また、ロボット装置の設置現場では、ケーブルのような物体は必要に応じて増設されたり、取り回しが変更されたりする可能性がある。このため、ロボット装置の設置環境を３Ｄ撮像装置などにより撮像した時、ケーブルのような物体は、予め設計情報から作成した仮想環境中には対応する空間情報が存在しない状態となっていることもある。このような場合、撮像された物体の空間情報を新たに仮想環境に反映させるか否かを自動で判断することが難しいという問題があった。
【００１３】
本発明の課題は、３Ｄデータ取得装置によって得られた空間情報（３Ｄデータ）から、実環境に近い状態を適切に３Ｄ仮想環境上に再現できるようにすることにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するため、本発明においては、生産装置の設置環境から３Ｄデータ取得装置によって取得した３Ｄデータを用いて制御装置が前記設置環境に設置された物体の３Ｄモデルを生成して前記生産装置の設置環境に対応する３Ｄ仮想環境に配置する仮想環境作成方法において、
前記制御装置が、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記設置環境に配置される物体の形状情報を含む第１の辞書データと、を照合する第１の照合工程と、前記制御装置が、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記設置環境に配置される物体へ接続される柔軟物に関する情報を含む第２の辞書データと、を照合する第２の照合工程と、前記制御装置が、前記第１または第２の照合工程に基づき、前記設置環境に配置されている物体の３Ｄモデルを生成して前記３Ｄ仮想環境に配置する出力処理工程と、を含み、前記第２の辞書データは、前記設置環境に配置される物体に対して前記柔軟物が接続される位置または方向の少なくとも一つを有する接続特性情報を含み、前記制御装置は、前記第２の照合工程において、前記３Ｄデータ取得装置によって取得した３Ｄデータと、前記接続特性情報と、を照合する構成を特徴とする。
【発明の効果】
【００１５】
本発明によれば、生産装置の設置環境から３Ｄデータ取得装置によって得られた空間情報（３Ｄデータ）と、設置環境に配置される物体の形状情報から予め生成された第１の辞書データと、を照合する。また、設置環境に配置される可能性のある物体の特徴情報から予め生成された第２の辞書データと、を照合する。そして、３Ｄデータ中で第１または第２の辞書データに該当する物体の３Ｄモデルを生成して３Ｄ仮想環境に配置する。例えば、生産装置（ロボット装置など）それ自体や、被作業物（ワーク）などのように設置環境に配置される物体は第１の辞書データと照合することにより同定される。また、例えばケーブルのように変形する可能性があり設置環境に配置される可能性のある物体は、第２の辞書データと照合することにより同定される。従って、例えばケーブルのように変形する可能性があって、第１の辞書データに形状データを用意できない物体についても第２の辞書データとの照合によって同定できる。このため、実環境から３Ｄデータ取得装置によって得られた空間情報（３Ｄデータ）を用いて、その実環境に存在する各物体の３Ｄデータを適切に３Ｄ仮想環境上に再現することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施例１に係るロボットシステム全体の概略構成を示す説明図である。
【図２】ロボット装置の概略構成を示す説明図である。
【図３】ロボット制御装置の機能構成を示したブロック図である。
【図４】環境認識装置の説明図である。
【図５】ロボット動作プログラム作成装置の説明図である。
【図６】組立環境の実環境を示す模式図である。
【図７】予め作成された空間情報を示す模式図である。
【図８】環境認識した空間情報を示す模式図である。
【図９】（ａ）は予め作成した空間情報を上から俯瞰した模式図、（ｂ）は接続リストを示した模式図である。
【図１０】本発明の実施例１における環境認識処理の流れを示したフローチャート図である。
【図１１】（ａ）は環境認識結果入力処理の模式図、（ｂ）は平面上物体抽出処理後の模式図、（ｃ）は物体分離および照合処理後の模式図である。
【図１２】（ａ）は物体分離および照合処理を示す模式図、（ｂ）は物体分離および照合処理のマッチングを示した模式図である。
【図１３】（ａ）は物体分離および照合処理時に物体群をグリッド上に配置した模式図、（ｂ）は（ａ）に物体が存在してよい領域を追加で示した模式図である。
【図１４】（ａ）は従来の仮想環境上で設定される仮想障害物を示した模式図、（ｂ）は実施例１における仮想障害物を示した模式図、（ｃ）は仮想障害物を環境認識した結果を変形した場合の模式図である。
【図１５】実施例１の環境認識の効果を示した説明図である。
【図１６】本発明の実施例２に関し、（ａ）および（ｂ）は被作業物の距離の変化によって生じる接続物の変形を示した模式図、（ｃ）は進入禁止領域の統合を示す模式図である。
【図１７】本発明の実施例３に係る環境認識した空間情報を示す模式図である。
【図１８】実施例３の環境認識処理の流れを示したフローチャート図である。
【図１９】本発明の実施例４に係る環境認識した空間情報を示す模式図である。
【図２０】実施例４の環境認識処理の流れを示したフローチャート図である。
【図２１】本発明の実施例５に係る環境認識した空間情報を示す模式図である。
【図２２】本発明の実施例６に係る（ａ）は環境認識した空間情報を俯瞰状態で示した模式図、（ｂ）は拡張した接続リストを示した模式図である。
【発明を実施するための形態】
【００１７】
以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。なお、以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、以下の説明で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【実施例１】
【００１８】
図１は、本発明を適用可能なロボットシステム全体の概略的な機能構成を示している。図１において、環境認識装置５００は、本実施例の仮想環境の作成方法を実施できるよう構成されている。環境認識装置５００は、記録ディスク５２２から予め作成した空間情報５２０を入力する。この空間情報５２０は、後述の空間情報７００（第１の辞書データ：図７）に相当する。環境認識装置５００は、ロボット動作プログラム作成装置５５０で利用可能な仮想環境用空間情報５３０（３Ｄ仮想環境）を後述する手法によって作成し、記録ディスク５３２に出力する。
【００１９】
ロボット動作プログラム作成装置５５０は、環境認識装置５００で作成された仮想環境用空間情報５３０（３Ｄ仮想環境）を入力として、ロボット動作プログラム５７０を作成し、記録ディスク５８０に出力する。ロボット装置１００は記録ディスク５８０のロボット動作プログラム５７０を入力し、ロボットアームを動作させる。
【００２０】
図２は、本発明の実施例１に係るロボット装置の概略構成を示している。図２のロボット装置１００は、例えば多関節構成のロボットアーム２００と、このロボットアーム２００を制御するロボット制御装置３００と、を備えている。
【００２１】
また、ロボット装置１００は、ロボット制御装置３００に複数の教示点のデータを送信する教示装置としてのティーチングペンダント４００を備えている。このティーチングペンダント４００は、作業者によって操作され、ロボットアーム２００やロボット制御装置３００の動作を指定するのに用いられる。
【００２２】
ロボットアーム２００は、本実施例１では、６関節（６軸）のロボットアームである。ロボットアーム２００は、各関節Ｊ１〜Ｊ６を各関節軸Ａ１〜Ａ６廻りにそれぞれ回転駆動する複数（６つ）のアクチュエータ２０１〜２０６を有している。
【００２３】
ロボットアーム２００は、可動範囲の中であれば任意の３次元位置で任意の３方向の姿勢に手先（ロボットアーム２００の先端）を向けることができる。一般に、ロボットアーム２００の位置と姿勢は、３次元（ＸＹＺ）座標系で表現することができる。
【００２４】
図２中の符号Ｔｏは、ロボットアーム２００の台座を基準（原点）として配置された３次元座標系を、また、Ｔｅはロボットアーム２００の手先の所定部位を基準（原点）として配置された３次元座標系を示している。
【００２５】
本実施例１では、アクチュエータ２０１〜２０６は、電動モータ２１１〜２１６と電動モータ２１１〜２１６に接続された減速機２２１〜２２６とから構成される。なお、これらアクチュエータ２０１〜２０６の構成は、上記の構成に限定されるものではなく、例えば人工筋肉等であってもよい。
【００２６】
本実施例１では、各関節Ｊ１〜Ｊ６が回転関節である場合について説明する。この場合、「関節の位置」とは、当該関節に定められた基準角度からの関節軸の回転角度を意味する。なお、各関節が直動関節の場合であってよい。その場合、「関節の位置」とは、直動関節の当該関節に定められた基準位置からの位置情報である。
【００２７】
ロボットアーム２００は、更に、アクチュエータ２０１〜２０６の電動モータ２１１〜２１６を駆動制御する駆動制御部としてのサーボ制御装置２３０を有している。
【００２８】
サーボ制御装置２３０は、入力した位置指令（目標位置）に基づき、各関節Ｊ１〜Ｊ６の位置が位置指令に追従するよう、各電動モータ２１１〜２１６に電流を出力し、各電動モータ２１１〜２１６の動作を制御する。
【００２９】
ロボット制御装置３００は、ティーチングペンダント４００から複数の教示点（教示点列）の入力を受ける。
【００３０】
ロボット制御装置３００は、ロボットアーム２００の各関節Ｊ１〜Ｊ６が、複数の教示点を順次辿って動作するよう、教示点に基づき、サーボ制御装置２３０に所定時間間隔で出力する位置指令を生成し、所定時間間隔で位置指令を出力する。
【００３１】
教示点は、各関節（６つの関節）Ｊ１〜Ｊ６の教示位置をベクトル成分として含むベクトル（教示点ベクトル）である。また、ロボット制御装置３００において最終的に求められる位置指令は、各関節（６つの関節）Ｊ１〜Ｊ６の目標位置をベクトル成分として含むベクトルである。即ち、ロボット制御装置３００は、入力した教示点から軌道の計算をして軌道に沿った多数の位置指令を生成し、これら位置指令を所定時間間隔でサーボ制御装置２３０に出力する。
【００３２】
ここで、教示によるロボットアーム２００の位置姿勢を制御する制御方式として、主に次の２種類が考えられる。
【００３３】
（１）関節空間移動（Ｍｏｔｉｏｎ  ｉｎ  ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｓｐａｃｅ）
ロボットの関節角度を変位とする座標系を関節空間という。この関節空間移動方式は、上記関節空間でロボットアーム２００の教示点を指定し、指定した教示点で決定される軌道に沿ってロボットを動かす方式である。
【００３４】
（２）タスク空間移動（Ｍｏｔｉｏｎ  ｉｎ  ｔａｓｋ  ｓｐａｃｅ）
三次元的な位置と姿勢で表す座標系をタスク空間という。このタスク空間移動方式は、上記タスク空間で教示点を指定し、指定した教示点とロボットアーム２００の手先で決定される軌道に沿ってロボットアーム２００を動かす方式である。
【００３５】
図２では、４つの教示点ｐ１，ｐ２，ｐ３，ｐ４を模式的に図示している。いずれの場合でもロボットアーム２００は、教示点で決まる軌道に沿って動くよう制御される。なお、教示点ｐ１，ｐ２，ｐ３，ｐ４とともに示される矢印は、ロボットアーム２００の手先に配置された上述の３次元座標系Ｔｅに相当する。
【００３６】
図２の教示点ｐ１，ｐ２，ｐ３，ｐ４のデータ表現は、必ずしも３次元空間内の座標情報であるとは限らない。例えば上記の関節空間移動（１）の場合では、教示点は全関節Ｊ１〜Ｊ６の関節角度（各モータの回転角度）によって表現される。
【００３７】
一方、上記のタスク空間移動（２）の場合では、教示点は、ロボットアーム２００の手先部位の３次元空間の位置、姿勢に相当し、これは図２のように、ｐ１，ｐ２，ｐ３，ｐ４を座標系として表現される。
【００３８】
本明細書の各実施例では、ロボットプログラミング（教示）において、上記の（１）、（２）のいずれの位置姿勢制御方式を用いても構わない。
【００３９】
図３は、ロボット制御装置３００の構成を示している。本実施例１では、ロボット制御装置３００は、図３に示すように、演算部としてのＣＰＵ３０１を備えたコンピュータ装置として構成されている。
【００４０】
図３において、ロボット制御装置３００は、記憶部としてＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４を備えている。また、ロボット制御装置３００は、記録ディスクドライブｆおよび各種のインターフェース３０６〜３０９を備えている。
【００４１】
図３において、ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５および各種のインターフェース３０６〜３０９が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。
【００４２】
ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果を一時的に記憶する記憶部である。ＨＤＤ３０４は、演算処理結果である各種のデータを記憶するための記憶部であると共に、プログラム３３０が格納されている。
【００４３】
このプログラム３３０は、ＣＰＵ３０１に各種演算処理を実行させるためのプログラムである。ＣＰＵ３０１は、ＨＤＤ３０４に格納されたプログラム３３０に基づいて各種演算処理を実行する。
【００４４】
ティーチングペンダント４００はインターフェース３０６に接続されており、ＣＰＵ３０１はインターフェース３０６およびバス３１０を介してティーチングペンダント４００からの教示点のデータや補間方法の指定の入力を受ける。
【００４５】
ＨＤＤ３０４には、ＣＰＵ３０１による演算結果を示すデータ（位置指令のデータ）等がＣＰＵ３０１の指令の下で記憶される。
【００４６】
ロボットアーム２００のサーボ制御装置２３０は、インターフェース３０９に接続されており、ＣＰＵ３０１は、位置指令のデータを所定時間間隔でバス３１０およびインターフェース３０９を介してサーボ制御装置２３０に出力する。
【００４７】
インターフェース３０７には、モニタ３２１が接続されている（図２では不図示）。モニタ３２１は、ロボットアーム２００の現在の状態などを表現する各種画像やテキストデータの表示に用いられる。
【００４８】
インターフェース３０８には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３２２を接続できるよう構成されている。記録ディスクドライブ３０５は、記録ディスク５８０に対して、各種データやプログラム等の読み出し、あるいは書き込みを行うことができる。
【００４９】
図４は、本実施例１に係る環境認識装置５００の概略図である。この環境認識装置５００は、環境入力装置５０１と環境認識処理装置５０２からなり、予めロボットアーム２００およびワークなどの設計情報に基づき作成された空間情報５２０を記録ディスク５２２から入力する。
【００５０】
環境入力装置５０１は、ロボットアーム２００の設置環境の３次元の空間情報を取得するための３Ｄカメラのような３Ｄデータ取得装置から構成される。３Ｄカメラの撮影方式はステレオ撮影方式に限らず、任意の撮影方式で構成してよい。また、機構的に可能であれば、多数のプローブ（触針）を配置した形状測定装置などを用いることも考えられる。環境入力装置５０１は、環境認識処理装置５０２に対して、各種パラレル（あるいはシリアル）インターフェースなどを介して接続される。環境入力装置５０１によって、ロボットアーム２００の設置環境から取得された３次元空間情報は環境認識処理装置５０２に入力される。
【００５１】
環境認識処理装置５０２は、設計情報に基づき作成された空間情報５２０と、環境入力装置５０１によりロボットアーム２００の設置環境から取得された３次元空間情報は環境認識処理装置５０２を用いて仮想環境用空間情報５３０を作成する。仮想環境用空間情報５３０は、例えば記録ディスク５３２に対して出力することができる。
【００５２】
環境認識処理装置５０２は、環境入力装置５０１から得られた空間情報を処理するコンピュータでありモニタ、キーボード、記録ドライブを備えている。環境認識処理装置５０２は、図４にノートパソコン様の形状で図示してある通り、（ロボット制御装置３００と同様に）例えば既成のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のハードウェアを利用して成るコンピュータ装置である。
【００５３】
環境認識処理装置５０２の具体的な構成は、例えば図３の構成からロボットアーム関係のブロック、例えばティーチングペンダント４００、サーボ制御装置２３０、電動モータ２１１〜２１６、インターフェース３０６、３０９などを除く部分とほぼ同等である。以下では、環境認識処理装置５０２の（同等の）構成部材として図３中のＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３やＨＤＤ３０４などに言及することがある。
【００５４】
図４において、環境認識処理装置５０２の機能として、環境認識部５１０が示されている。環境認識部５１０は、コンピュータ（図３のＣＰＵ３０１）のハードウェアおよびそのソフトウェアにより実装される。特に、後述するコンピュータ（ＣＰＵ３０１）が実行する制御手順に相当する仮想環境作成プログラムは、例えば図３中のＲＯＭ３０２やＨＤＤ３０４に格納される。これらのＲＯＭ３０２やＨＤＤ３０４のような記憶手段は、当然ながらコンピュータ読み取り可能な記録媒体である。これらの例えばＲＯＭ３０２やＨＤＤ３０４のようなコンピュータ読み取り可能な記録媒体（の一部）は、着脱可能なフラッシュメモリデバイスや磁気／光ディスクによって構成されていてもよい。また、環境認識処理装置５０２のソフトウェアは、ネットワークなどを経由してダウンロードされ、例えばＨＤＤ３０４のような記録媒体に導入したり、あるいは導入済みのソフトウェアを更新するような構成も考えられる。なお、ロボット動作プログラム作成装置５５０のソフトウェアや、ロボット制御装置３００のソフトウェア（ロボット制御プログラム）の格納先や、導入、更新などのための構成についても、上記と同様である。
【００５５】
環境認識部５１０は、環境認識情報入力部５１１、平面抽出部５１２、物体分離部５１３、照合部５１４、空間情報作成部５１５の各機能ブロックを含む。
【００５６】
予め作成した空間情報５２０は、ロボットアーム２００やそれにより操作されるワークなどの設計情報からＣＡＤ等で作成した空間情報であり、例えば記録ディスク５２２を介して環境認識処理装置５０２に入力される。
【００５７】
環境認識処理装置５０２の環境認識部５１０は、後述する認識処理によって、環境入力装置５０１で得られた３次元空間情報、および予め設計情報から作成された空間情報５２０に基づき、仮想環境用空間情報５３０を作成する。作成された仮想環境用空間情報５３０は、記録ディスク５３２に格納される。
【００５８】
環境認識処理装置５０２の環境認識部５１０は、例えばロボット設置環境から環境入力装置５０１により得た３次元空間情報と、予め設計情報から作成されたロボットアーム２００やワークに相当する３Ｄモデルである空間情報５２０を照合する。そして、環境入力装置５０１により得た３次元空間情報中の物体で、空間情報５２０に該当する空間情報を仮想環境用空間情報５３０に配置（登録）する。
【００５９】
予め設計情報から作成  されたロボットアーム２００やワークに相当する空間情報５２０は、環境認識部５１０が用いる、環境認識のための第１の辞書データ、と考えてよい。
【００６０】
しかしながら、実際のロボット設置環境から環境入力装置５０１で得られた３次元空間情報中には、予め設計情報から作成された空間情報５２０（第１の辞書データ）と照合しても該当しない物体の空間情報が含まれていることがある。また、予め設計情報から作成された空間情報５２０（第１の辞書データ）の中には、実際のロボット設置環境に配置されるべき必須の物体が含まれることがある。そして、例えば配置忘れなどによって、実際のロボット設置環境に配置されるべき必須の該当の物体の空間情報が環境入力装置５０１で得られた３次元空間情報中に含まれていない可能性もある。
【００６１】
また、特に、ケーブルのような柔軟物は実環境でどのように配置されるか、設計情報ないしはそれに基づきＣＡＤ処理された３Ｄモデル上では予め決定することが困難である。
【００６２】
本実施例１では、ケーブルのような柔軟物を介して接続された物体（例えばワーク：被作業物）が配置されているようなケースに対処するため、後述の処理では、空間情報５２０（第１の辞書データ）とは異なる第２の辞書データを用いる。
【００６３】
図５は、本実施例１のロボット動作プログラム作成装置５５０の概略構成を示している。
【００６４】
ロボット動作プログラム作成装置５５０は、記録ディスク５３２に格納された仮想環境用空間情報５３０を入力するコンピュータであり、モニタ、キーボード、記録ドライブを備えている。このロボット動作プログラム作成装置５５０も、環境認識処理装置５０２と同様、例えば既成のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のハードウェアを利用して成るコンピュータ装置である。
【００６５】
ロボット動作プログラム作成装置５５０の具体的な構成は、例えば図３の構成とほぼ同等である。ただし、ロボット動作プログラム作成装置５５０の場合、ロボットアーム関係のブロック、例えばティーチングペンダント４００、サーボ制御装置２３０、電動モータ２１１〜２１６、インターフェース３０６、３０９などは不要である。以下では、ロボット動作プログラム作成装置５５０の構成部材についても、図３中のＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３やＨＤＤ３０４などに言及することがある。
【００６６】
なお、ロボット動作プログラム作成装置５５０と、環境認識処理装置５０２は、同一のＰＣハードウェア上にそれぞれのためのソフトウェアをインストールすることによって実装することも可能である。その場合、仮想環境用空間情報５３０は、同一のＰＣハードウェア上で授受すればよく、記録ディスク５３２は用いず、コンピュータ上のメモリやＨＤＤなどを介して仮想環境用空間情報５３０を授受すればよい。
【００６７】
ロボット動作プログラム作成装置５５０の機能ブロックは、図５の右側に示す通り、ロボット動作プログラム作成用シミュレータ部５６０から成る。ロボット動作プログラム作成用シミュレータ部５６０は、仮想環境表示部５６１およびロボット動作作成部５６２からなる。これらの機能ブロック（５６０：５６１、５６２）は、コンピュータ（図３のＣＰＵ３０１）のハードウェアおよびそのソフトウェア（予め作成され、図３のＲＯＭ３０２やＨＤＤ３０４に格納される）により実装される。
【００６８】
ロボット動作プログラム作成用シミュレータ部５６０は、具体的には、ＰＣのモニタ上に構築されたＧＵＩ上で動作する。このＧＵＩには、環境認識処理装置５０２から受信した仮想環境用空間情報５３０を用いて、ロボットアーム２００およびその設置環境内の物体を表現した仮想環境を表示する（仮想環境表示部５６１）。また、ロボット動作作成部５６２は、ポインティングデバイスやキーボードといったユーザーインターフェース手段を介して仮想環境（仮想環境表示部５６１）内に表示された物体の仮想表現を操作できるよう構成される。ユーザーインターフェースのポインティングデバイスには、例えば、マウスやトラックパッド、トラックボールなどを利用できる他、モニタ上に配置されたタッチパネルなどから構成することもできる。このようなユーザ操作を介して、例えばロボットアーム２００に所望の位置姿勢を取るよう動作させるための動作プログラムを作成することができる（ロボット動作作成部５６２）。
【００６９】
ロボット動作プログラム作成装置５５０上でユーザが作成したロボット動作プログラム５７０をロボット制御装置３００に送り、このロボット動作プログラム５７０に応じてロボットアーム２００を動作させることができる。ロボット動作プログラム５７０は、例えば記録ディスク５８０に格納し、ロボット制御装置３００の記録ディスクドライブ３０５を介してロボット制御装置３００に送ることができる。なお、ロボット動作プログラム作成装置５５０から、ロボット制御装置３００へロボット動作プログラム５７０を転送するには、記録ディスクドライブ３０５を用いる他、ネットワーク通信を利用しても構わない。
【００７０】
以下、ロボットアーム２００、およびその設置環境をより具体的に示しながら本実施例１について説明する。
【００７１】
図６は、実際の設置環境６００に配置されたロボットアーム２００、被作業物６１０、治工具６１１〜６１２を示している。被作業物６１０は、例えばロボットアーム２００が組立に用いるフィクスチャ、治工具６１１〜６１２は、ロボットアーム２００が組立に用いる用具である。また、図６において、接続物６２０〜６２１は、ケーブルであり、被作業物６１０〜６１２やロボットアーム２００と接続されている。設置面６５０は、被作業物６１０〜６１２やロボットアーム２００などの組立に必要な物体を設置する平面である。
【００７２】
一方、図７は、予め作成された空間情報７００（第１の辞書データ）を模式的に表している。この空間情報７００（第１の辞書データ）は、ロボット設置環境に配置される物体の設計情報に基づき、ＣＡＤツールなどによって、３Ｄデータの形で形状データを予め作成される。また、図７の空間情報７００（第１の辞書データ）は、図１、図４の空間情報５２０に相当し、記録ディスク５２２などを介して環境認識装置５００に入力される。
【００７３】
図７において、ロボットアーム７０１は、実環境上のロボットアーム２００に対応した空間情報（３Ｄモデル）、また、被作業物７１０〜７１２は実環境上の被作業物６１０〜６１２に対応する空間情報（３Ｄモデル）である。また、平面７５０は実環境上の設置面６５０に対応した空間情報（３Ｄモデル）である。これらの空間情報（３Ｄモデル）については、各部の形状や寸法などに関する数値化された設計情報が存在し、ＣＡＤツールなどを用いて予め自動的に生成することができる。
【００７４】
図６の実環境と異なり、図７の空間情報７００では、ケーブルなどの接続物６２０〜６２１はどのように配置するか事前に決めることが困難であるため、図７には対応する空間情報が存在しない。
【００７５】
さらに、図８は環境認識装置５００で環境認識した空間情報８００を模式的に示している。図８は、環境入力装置５０１により図６の設置環境６００（実環境）から取得した３Ｄデータと、図７の空間情報７００および後述の接続リスト９００（第２の辞書データ）と、を用いて環境認識処理装置５０２が空間環境認識した結果を示している。
【００７６】
図８において、被作業物８１０〜８１２は図６の実環境の被作業物６１０〜６１２の環境認識結果である。ロボットアーム８０１は、図６の実環境のロボットアーム２００の環境認識結果である。また、接続物８２０〜８２１は、図６の実環境の接続物６２０〜６２１の環境認識結果、平面８５０は、実環境の設置面６５０の環境認識結果に相当する。
【００７７】
以下、図９〜図１４を参照して、図８に示すように生成された仮想環境（空間情報８００）を取得するための情報処理につき詳細に説明する。
【００７８】
図９（ａ）は、図７の設計情報から得た空間情報７００を上方から俯瞰した状態で示している。図９（ａ）では、簡略化のため高さ情報は省略し、ＸＹ平面のみを示している。同図において、物体Ａ，Ｂ（９０１、９０２）およびＣ（９０３）が図７の被作業物７１０〜７１２に対応し、Ｄ（９０４）がロボットアーム７０１に対応している。これらＡ、Ｂ、Ｃ、Ｄ…は、便宜上の物体のＩＤで、本実施例では主に空間情報中における各物体を識別するのに用いる。
【００７９】
図９（ａ）において、物体ＡとＢ、ＣとＤをそれぞれ結ぶ曲線（破線）は、ケーブル（図６の６２０、６２１）による物体間の接続を概念的に表現したものである。この例では、ケーブル（図６の６２０、６２１）は、実際はどのように配置されるか不明な接続物であり、図７の設計情報から得た空間情報７００には直接含まれていない。
【００８０】
しかしながら、本実施例１では、設置平面（６５０）に配置された被作業物６１０や治工具６１１〜６１２（図６）が、図６や図９（ａ）のようにケーブル（図６の６２０、６２１）によって接続される（可能性が高い）ことが予め判明しているものとする。即ち、ケーブルのような柔軟物によって「接続」される物体Ａ、Ｂ、Ｃ、Ｄが用いられることが予め判明している。
【００８１】
このような場合、図９（ｂ）に示すような、接続リスト９００（第２の辞書データ）を用意しておくことにより、環境認識処理装置５０２により高速かつ確実に図８のような空間情報８００（環境認識結果）を生成することができる。
【００８２】
図９（ｂ）の接続リスト９００（第２の辞書データ）は、ケーブルのような柔軟物によって「接続」される物体Ａ、Ｂ、Ｃ、Ｄの特徴情報をリスト化したものである。この接続リスト９００（第２の辞書データ）は、例えば、環境認識処理装置５０２が用いるメモリ領域（例えばＲＯＭ３０２やＲＡＭ３０３）に配置される。あるいは、接続リスト９００は、メモリ領域（ＲＯＭ３０２やＲＡＭ３０３）に展開される前はＨＤＤ３０４などに格納されていてもよい。接続リスト９００（第２の辞書データ）の記録形式は任意であり、例えばメモリ領域ではテーブルメモリや配列などの格納形式を用いることができる。また、ＨＤＤ３０４上では、テーブルメモリや配列などの形式に展開可能なフォーマットで任意のファイル形式を用いて接続リスト９００（第２の辞書データ）を格納してよい。
【００８３】
ケーブルのような物体（柔軟物）の場合、予め判明している形状や寸法情報は、せいぜい直径や全長程度であることが多い。また、ケーブルのような柔軟物は、配置された時の形状なども予め予測することができない。
【００８４】
このため、本実施例の接続リスト９００（第２の辞書データ）は、ケーブルのような柔軟物によって「接続」される物体Ａ、Ｂ、Ｃ、Ｄの「接続」が生じる位置および方向、のような特徴情報をリスト（テーブルメモリ）化している。
【００８５】
即ち、ロボットアーム２００（７０１）や被作業物にケーブルを接続する場合、通常、その接続のためのコネクタ（あるいはケーブルが直出しされる透孔）の位置は判明している。あるいは、そのようなケーブルの接続位置を意図して設計することは可能である。
【００８６】
図９（ａ）の物体Ａ、Ｂで言えば、物体Ａからはケーブルは右（ｒｉｇｈｔ）出し、物体Ｂからはケーブルは左（ｌｅｆｔ）出し、となっている。物体Ｃ、Ｄの場合は、物体からはケーブルは上（ｔｏｐ）出し、物体Ｂからはケーブルは下（ｂｏｔｔｏｍ）出し、となっている。なお、右（ｒｉｇｈｔ）、左（ｌｅｆｔ）、上（ｔｏｐ）、下（ｂｏｔｔｏｍ）の接続方向は、図９の平面表示上に便宜的に選んだ表示に過ぎず、接続リスト９００（第２の辞書データ）のメモリ上の表現形式は任意である。また、ここでは簡略化のために４方向のみの分類で済ませているが、接続リスト９００（第２の辞書データ）で、更に細分化して方向を表現できるような表現形式を用意しておくことができる。
【００８７】
また、図９（ａ）では、ケーブルの接続位置は、設置面６５０に相当する平面をａ×ｂのグリッドに区切っている。そして、本実施例の接続リスト９００（第２の辞書データ：図９（ｂ））では、各物体Ａ〜Ｄをこのグリッド上にマッピングし、その位置によって各物体のケーブル接続位置を定義している。なお、ここでａとｂは任意の整数であり、図９（ａ）では６×４のグリッドを用いている。
【００８８】
このように、空間認識を行う空間をグリッドで（粗く）区切って取り扱うことにより、ＣＰＵ（３０１）による演算（の一部）が簡略化され、処理の負荷を軽減することができる。
【００８９】
本実施例では、以上のように構成した接続リスト９００（第２の辞書データ：図９（ｂ））を用意しておく。そして、環境認識処理装置５０２の照合部５１４（図４）によって、環境入力装置５０１で図６のような設置環境６００から得た空間情報と、接続リスト９００（第２の辞書データ：図９（ｂ））を照合する。
【００９０】
そして、照合部５１４による照合の結果、該当する物体の空間情報（３Ｄモデル）を配置することにより、図８の空間情報８００のような環境認識結果を得ることができる。この時、環境認識装置５００は、例えば、照合部５１４によって接続リスト９００に該当すると判定した物体の空間情報（３Ｄモデル）を生成する。そして、図７の設計情報などに基づき予め作成された空間情報７００と組み合わせる（または空間情報７００に追加する）ことにより、図８の空間情報８００のような環境認識結果を得ることができる。
【００９１】
本実施例の接続リスト９００（第２の辞書データ：図９（ｂ））は、例えば上記のケーブルのように公差や部品製作誤差といった要因により実環境と認識した空間情報の位置や形状は厳密には一致しない物体（接続媒体）の特徴情報を利用して構成している。この特徴情報は、例えば上記のケーブルのような物体の場合、上記のように接続方向や接続位置である。また、接続リスト９００（第２の辞書データ：図９（ｂ））の特徴情報は、設置空間のグリッド分割上の接続位置や、接続方向のような表現を用いているため、設置時の位置や形状の誤差を吸収して照合部５１４での照合を行うことができる。
【００９２】
なお、前述のように、図９（ａ）、（ｂ）の特徴情報の例では簡易化のため高さ情報を省略しているが、接続リスト９００（第２の辞書データ：図９（ｂ））では、高さ情報を加味して、ａ×ｂ×ｃの３次元グリッドを用いて接続位置を定義することができる。
【００９３】
図９（ｂ）のように、接続リスト９００には、各物体のＩＤ（Ａ、Ｂ、Ｃ、Ｄ）に関連づけて、接続位置情報（９０５）、および接続方向に関する情報（９０６）などの特徴情報が記録される。これらの特徴情報は（９０５、９０６）は、例えば、ロボット設置環境に配置され接続物を介して相互に接続される可能性のある物体に関しては、当該物体と前記接続媒体との接続位置、および接続方向を表現した接続特性情報となっている。
【００９４】
本実施例における接続リスト９００（第２の辞書データ）における特徴情報（特に接続物で接続される物体に関しては接続特性情報）は、設計情報から作成した空間情報７００（第１の辞書データ）のように、３Ｄデータのような形状情報を含まない。
【００９５】
この点で、これら特徴情報ないし接続特性情報は、環境入力装置５０１で設置環境６００から得た空間情報と、照合する場合、ＣＰＵ（３０１）の演算のための負荷は小さくて済む。周知のように、実環境から得た空間情報（３Ｄデータ）と、空間情報７００（第１の辞書データ）の３Ｄデータ（例えばＣＡＤデータ）のような空間情報との照合の場合は、複雑なマッチング過程を行わなければならない場合がある。ところが、本実施例の接続リスト９００（第２の辞書データ）の特徴情報は、例えば接続位置や接続方向で記述された接続特性情報であって、実環境から得た空間情報（３Ｄデータ）との照合は小さな演算コストで実行できる。また、本実施例の接続リスト９００（第２の辞書データ）の特徴情報は、例えば接続位置や接続方向のような緩やかな特性定義で構成されている。このため、ケーブルのような柔軟物の物体と照合する場合に、変形があっても確実にその物体を捉えることができる。
【００９６】
図９（ｂ）の接続リスト９００の接続位置情報（９０５）には、位置Ｘ、位置Ｙが含まれ、これらは図９（ａ）中のグリッドの番号によって表現されている。なお、図９（ｂ）でも上記のように高さ方向（Ｚ）の位置は簡略化のため省略しているが、接続位置情報（９０５）に高さ方向（Ｚ）の情報を記録して照合するためには、例えば位置Ｚのフィールドが追加される。この高さ方向（Ｚ）の情報も、Ｚ座標により表現される空間を粗くグリッドで区切ったセルの番号により表現すればよい。
【００９７】
また、接続リスト９００の接続方向に関する情報（９０６）は、上記の通り右（ｒｉｇｈｔ）、左（ｌｅｆｔ）、上（ｔｏｐ）、下（ｂｏｔｔｏｍ）のようなニーモニックにより表現されている。接続方向に関する情報（９０６）には、その他に、東（Ｅ）、西（Ｗ）、南（Ｎ）、北（Ｎ）のような任意のニーモニックを用いることも考えられる。
【００９８】
図１０は、本実施例において、仮想環境に係る情報処理を用いてロボット装置１００の動作を教示（プログラミング）する処理の全体の流れを示している。図１０の制御手順は、環境認識装置５００、およびロボット動作プログラム作成装置５５０によって実行される。この処理では、環境認識装置５００によって作成された仮想環境を用いて、ロボット動作プログラム作成装置５５０を介してロボット動作の教示を行うことができる。
【００９９】
特に環境認識装置５００による仮想環境の認識処理においては、予め設計情報から作成した空間情報７００（図７：第１の辞書データ）、および接続リスト９００（図９（ａ）、（ｂ）：第２の辞書データ）が用いられる。
【０１００】
図１０のステップＳ９０１では、環境認識結果入力処理を行う。ここでは、ロボット装置１００の設置環境６００（図６）から環境入力装置５０１を介して得られた空間情報を環境認識情報入力部５１１に入力する。環境入力装置５０１が例えば３Ｄ（ステレオ）カメラのように３Ｄ画像を取得する装置であれば、空間情報は３Ｄ画像データの形式である。
【０１０１】
ここで、ロボット装置１００の設置環境６００には、図６に示すように、ロボットアーム２００の他、被作業物６１０や治工具６１１〜６１２（図６）が配置されているものとする。また、被作業物６１０と治工具６１１、ロボットアーム２００と治工具６１２は、ケーブル（６２０、６２１）によって接続されているものとする。
【０１０２】
ステップＳ９０２では、環境入力装置５０１から入力された空間情報に対して平面上物体抽出処理を実行する。この平面上物体抽出処理は、平面抽出部５１２で行う。この処理は、環境入力装置５０１から入力された空間情報からロボット装置１００の設置平面上に存在する物体を抽出する処理である。この処理は、物体の抽出処理であるが、一面においては平面の除去処理であるといってもよい。
【０１０３】
次に、ステップＳ９０３で物体分離および照合処理を行う。このうち物体分離処理は物体分離部５１３で行う。この物体分離処理は、環境入力装置５０１から入力された空間情報の輪郭検出や、画素値の連続性を解析するなどの公知の手法によって行われる。この物体分離処理が終了した段階では、分離された物体は、例えばそれがロボット装置であるかワークであるかなどはまだ同定されていない。しかしながら、さらにステップＳ９０３において、予め設計情報から作成した空間情報７００（図７：第１の辞書データ）との照合（マッチング）を行う。これにより、環境入力装置５０１から取得した空間情報中で、空間情報７００（図７：第１の辞書データ）に含まれている物体が同定される。
【０１０４】
図７の例では、ロボットアーム７０１、被作業物７１０、治工具７１１、７１２が含まれており、これらは予め設計情報から作成した空間情報７００（図７：第１の辞書データ）とステップＳ９０３の照合で該当判定され、同定される。
【０１０５】
また、ステップＳ９０３において用いられる設計情報から作成した空間情報７００（第１の辞書データ）には、図７のようにロボットアーム７０１、被作業物７１０、治工具７１１、７１２が含まれているが、ケーブルの情報は含まれていない。しかしながらケーブルに関しては、図９（ａ）、（ｂ）で説明した接続リスト９００（第２の辞書データ）が用意されている。
【０１０６】
ステップＳ９０３で、分離後の物体群には、ケーブル（６２０、６２１）の空間情報が含まれている。ケーブル（６２０、６２１）の空間情報は、予め作成した空間情報７００に存在しない物体に相当する。
【０１０７】
このように、予め作成した空間情報７００に存在しない物体が抽出されている場合を想定して、ステップＳ９０４の接続リスト照合処理を実行する。この接続リスト照合処理は照合部５１４で行う。ステップＳ９０４の接続リスト照合処理では、設計情報から作成した空間情報７００に存在しない物体（ケーブルのような接続物６２０、６２１など）と、接続リスト９００（第２の辞書データ：図９（ｂ））と、が照合される。そして、接続位置や方向に相当する接続特性情報（９０５、９０６）が一致した物体（接続物）がこの照合で該当判定され、同定される。
【０１０８】
続くステップＳ９０５（仮想環境用空間情報出力処理：出力処理工程）では、ステップＳ９０３、Ｓ９０４の照合（それぞれ第１の照合処理、第２の照合処理）で該当判定され、同定された物体の３Ｄモデルを生成する。そして、仮想環境用空間情報５３０（３Ｄ仮想環境）に登録する。
【０１０９】
即ち、ステップＳ９０３で空間情報７００（図７：第１の辞書データ）に該当した物体については、それらの物体に相当する３Ｄモデルを生成して仮想環境用空間情報５３０に登録する。この場合、空間情報７００（図７：第１の辞書データ）は、設計情報などから生成されたＣＡＤ情報などであるから、例えば空間情報７００中の当該物体に相当するＣＡＤ情報を仮想環境用空間情報５３０に配置することで、３Ｄ仮想環境への登録が完了する。
【０１１０】
また、ステップＳ９０４の照合の結果、環境入力装置５０１から入力された空間情報中で、接続リスト９００（第２の辞書データ：図９（ｂ））に該当する物体については、その物体の空間情報（３Ｄモデル）を生成して仮想環境用空間情報５３０に登録する。
【０１１１】
ここで、接続リスト９００（第２の辞書データ：図９（ｂ））の作成ポリシーの１つとしては、例えば次のようなものがある。接続リスト９００の作成ポリシーの１つは、接続リスト９００（第２の辞書データ：図９（ｂ））が、例えばロボット動作プログラム作成時に用いられる可能性があり仮想環境用空間情報５３０中に存在すべき物体（のみ）を含むよう構成するものである。この場合は、上記のように接続リスト９００（第２の辞書データ：図９（ｂ））に該当する物体が存在する場合は、その全ての物体の空間情報を生成して仮想環境用空間情報５３０に登録すればよい。
【０１１２】
また、接続リスト９００（第２の辞書データ：図９（ｂ））の異なる作成ポリシーとしては、仮想環境用空間情報５３０中に存在すべき物体と、存在すべきではない物体の双方を含むよう構成するものがある。この場合は、仮想環境用空間情報５３０中に存在すべき物体と、存在すべきではない物体は、両者を識別するフラグ（不図示）とともに接続リスト９００に登録する。このようなポリシーで接続リスト９００が構成されている場合には、接続リスト９００中のフラグを参照して仮想環境用空間情報５３０中に存在すべき物体のみについて空間情報を生成して仮想環境用空間情報５３０に登録すればよい。
【０１１３】
なお、ケーブル（６２０、６２１）のような物体は、例えば仮想環境用空間情報５３０中に存在すべき物体として取り扱う必要がある。例えば、仮想環境を用いたロボット動作プログラム作成時には、ケーブル（６２０、６２１）のような柔軟物は、形状が不定である。従って、ケーブル（６２０、６２１）のような柔軟物が占有する可能性のある空間は、仮想環境用空間情報５３０をディスプレイ上に表示する時、ロボットアームの侵入禁止領域として明示的に表示する必要がある。このようにケーブル（６２０、６２１）のような柔軟物が占める空間を生成し、仮想環境へ登録する手法の詳細については、後で別途、説明する。
【０１１４】
以上のようにして、環境入力装置５０１から入力された空間情報に存在する物体のうち、設計情報から予め作成した空間情報７００（第１の辞書データ）との照合の結果、該当する物体が仮想環境用空間情報５３０に登録される。また、環境入力装置５０１から入力された空間情報に存在する物体のうち、接続リスト９００（第２の辞書データ：図９（ｂ））との照合の結果、該当する物体が仮想環境用空間情報５３０に登録される。
【０１１５】
図１０の制御手順は、環境入力装置５０１から入力された３Ｄデータと、空間情報７００（第１の辞書データ）および接続リスト９００（第２の辞書データ）との照合を行う第１および第２の照合処理（Ｓ９０３、Ｓ９０４）を含む。そして、第１および第２の照合処理（Ｓ９０３、Ｓ９０４）で、空間情報７００（第１の辞書データ）および接続リスト９００（第２の辞書データ）に該当する物体については、入力３Ｄデータから３Ｄモデルを生成して３Ｄ仮想環境に登録する。即ち、図１０の仮想環境用空間情報出力処理（Ｓ９０５）において、この３Ｄモデルの生成および、３Ｄ仮想環境（仮想環境用空間情報５３０）への配置を行う。この仮想環境用空間情報出力処理（Ｓ９０５）は空間情報作成部５１５で行うことができる。
【０１１６】
さらに、図１０のステップＳ９０６において、上記のようにして生成した仮想環境用空間情報５３０をロボット動作プログラム作成装置５５０に入力する。そして、ロボット動作プログラム作成装置５５０では、仮想環境用空間情報５３０に基づき、仮想環境表示部５６１（図５）によってモニタに環境認識した仮想環境を表示することができる。
【０１１７】
ここで、ユーザは、ロボット動作作成部５６２のユーザーインターフェースを用いて、仮想環境表示部５６１の仮想環境表示（図８の空間情報８００と同等）を操作できる。この時、上述のように各種のポインティングデバイス、タッチパネルなどから構成されたロボット動作作成部５６２のユーザーインターフェースを用いることができる。これにより、仮想環境表示（図８の空間情報８００と同等）中の物体を直接操作するかのような直観的なユーザーインターフェース提供できる。
【０１１８】
このようにして、仮想環境表示部５６１に例えば３Ｄ表示された仮想環境を用いてロボット動作プログラム５７０の作成のためのユーザーインターフェースを提供できる。ユーザは、仮想環境中の物体を直接操作する（例えばロボットアーム８０１を曲げる、など）直観的なユーザーインターフェースを介して、容易かつ手早くロボット装置１００の動作をプログラム（教示）することができる。
【０１１９】
図１０のステップＳ９０７では、以上のようにして作成したロボット動作プログラム５７０を、ロボット制御装置３００に入力し、ロボット動作プログラム５７０に従ってロボットアーム２００を動作させる（実機動作処理）。
【０１２０】
以下、図１０の制御手順によって行われる情報処理につき、図１１〜図１４を参照して説明する。以下では、各ステップの情報処理の詳細な構成ないし変形例についても併せて説明する。
【０１２１】
図１１（ａ）、（ｂ）、（ｃ）は、図１０の環境認識結果入力処理（Ｓ９０１）、平面上物体抽出処理（Ｓ９０２）、物体分離および照合処理（Ｓ９０３）のそれぞれのステップで処理される空間情報を模式的に示している。ここで、図１１（ａ）〜（ｃ）の処理対象は、主に環境入力装置５０１から入力された空間情報である。
【０１２２】
図１１（ａ）は、環境認識結果入力処理（図１０のＳ９０１）時に環境入力装置５０１から入力された空間情報（８００）で、同図では便宜上、図８の空間情報（８００：環境認識結果）と同じ参照符号（８００）を用いている。同図の平面８５０は、実環境の設置面６５０の環境認識結果である。
【０１２３】
図１１（ｂ）は、図１１（ａ）の空間情報８００に平面上物体抽出処理（図１０のＳ９０２）を加えた後の空間情報８００ａを示しており、図１１（ａ）と比較すると平面８５０が除去されていることが判る。また、図１１（ｂ）の空間情報８００ａでは、複数の物体が点線（８６０）で囲んで示す認識物体群のように、１つの塊として認識されている。
【０１２４】
図１１（ｃ）は、図１１（ｂ）の空間情報８００ａに物体分離および照合処理（図１０の９０３）を加えた後の空間情報８００ｂを示しており、点線で囲まれている単位で分離した物体（８７０〜８７５）として分離されている。なお、図１１（ｃ）において各物体の距離が離れているのは説明の簡略化のためであり、実際に各空間情報が移動したわけではない。
【０１２５】
図１２（ａ）、（ｂ）は、物体分離および照合処理（図１０のＳ９０３）の詳細を模式的に示している。図１２（ａ）では、設計情報から予め作成した空間情報７００（第１の辞書データ）に存在する物体（７０１、７１０〜７１２）が破線で示されている。物体分離および照合処理（図１０のＳ９０３）において、空間情報７００（第１の辞書データ）と照合することにより、これらの物体（７０１、７１０〜７１２）が分離される。
【０１２６】
ただし、この例では、実線で示す２本のケーブルと、被作業物７１０から成る認識物体群８６０が空間情報７００（第１の辞書データ）との照合で該当せず、まだ認識されていない。例えば被作業物７１０が、空間情報７００（第１の辞書データ）上の設置位置と多少ずれた位置に置かれているような場合には、単純に空間情報７００（第１の辞書データ）と照合するだけではヒットしない。
【０１２７】
このような場合を想定して、空間情報７００（第１の辞書データ）との照合を行う場合には、図１２（ｂ）に示すように許容範囲を含めたマッチング（照合）処理を行うことができる。図１２（ｂ）は、空間情報８００中の被作業物７１０と認識物体群８６０のＸＹ平面における形状を示している。
【０１２８】
図１２（ｂ）では、被作業物７１０および認識物体群８６０は、矢印で示すようにＸＹ方向の位置がずれている。このような場合でも、例えば、空間情報７００（第１の辞書データ）と輪郭で比較を行い、輪郭の法線方向の距離が予め定めた閾値以下の場合は、予め作成された空間情報に存在する物体と判断することができる。もちろん、空間情報７００（第１の辞書データ）中に対応する物体が存在しない場合は、該当なし、と判断する。なお、上記のような許容範囲を含めた輪郭比較によるマッチング（照合）処理の閾値は、ユーザが予め数値入力などにより指定しておくことができる。
【０１２９】
なお、図１２（ｂ）では、ＸＹ平面における輪郭比較によるマッチング（照合）処理を示しているが、もちろん同様のマッチング（照合）処理はＺＸ平面、ＺＹ平面などについても実施できる。その場合、上記同様に許容範囲を含んでのマッチング（照合）処理を行うことができるのはいうまでもない。
【０１３０】
図１３（ａ）、（ｂ）は、接続リスト照合処理（図１０のＳ９０４）の詳細例を示している。接続リスト照合処理（図１０のＳ９０４）は、物体分離および照合処理（同Ｓ９０３）後に、接続リスト９００（第２の辞書データ：図９（ｂ））を用いて行う環境認識処理である。上述のように、接続リスト９００（第２の辞書データ：図９（ｂ））は、図８の接続物（ケーブル：８２０、８２１）のように空間情報７００（第１の辞書データ）に含まれない物体を環境認識することを想定して作成されている。
【０１３１】
図１３（ａ）は図９（ａ）と同様に、物体分離および照合処理（Ｓ９０３）において、空間情報８００中の物体群（８２０、８２１）を示している。空間情報８００中の環境認識すべき領域は６×４のグリッドに区画されている。
【０１３２】
一方、図１３（ｂ）の８２０ａ、８２１ａは、図９（ｂ）に例示した接続リスト９００（第２の辞書データ：図９（ｂ））中で接続位置（９０５）および接続方向（９０６）の定義に該当する接続物（ケーブル：８２０、８２１）の配置領域である。配置領域８２０ａおよび８２１ａは、接続位置および接続方向（９０５、９０６）の定義に応じて接続物（ケーブル：８２０、８２１）が存在しうるグリッド中の領域となっている。
【０１３３】
具体的には、配置領域８２０ａおよび８２１ａは、接続位置（９０５）のセルの、接続方向（９０６）に関して隣接するセルの並びとなっている。例えば、図９（ｂ）の物体Ａ〜Ｂを結ぶ接続物（ケーブル）の場合、セル（２、３）の左側、およびセル（４、２）の右側に並んだセル（３、３）およびセル（３、２）が配置領域８２０ａとなる。
【０１３４】
このような接続物（ケーブル：８２０、８２１）が存在しうる配置領域８２０ａおよび８２１ａは、接続位置および接続方向（９０５、９０６）の定義に応じてＣＰＵ（３０１）が予め計算によって作成しておくことができる。あるいは、ＣＰＵ（３０１）の処理能力が充分あれば、接続リスト９００（第２の辞書データ：図９（ｂ））との照合を行う際にリアルタイムで配置領域８２０ａおよび８２１ａを生成してもよい。
【０１３５】
そして、空間情報８００中の物体と、接続リスト９００（第２の辞書データ）とを照合（Ｓ９０４）する際、接続位置（９０５）および接続方向（９０６）だけではなく、配置領域８２０ａおよび８２１ａにおける物体の存在およびその連続性を判断する。これにより、その物体（８２０、８２１）が仮想環境用空間情報５３０に登録すべき空間情報か否かを自動的かつ確実に判定することができる。
【０１３６】
なお、図１３では、ＸＹ平面における配置領域８２０ａおよび８２１ａしか示していないが、例えば、ＹＺ、ＸＺのような平面についても、ケーブルのような物体の配置領域を定義できる。例えば、図９に関連して述べたように、接続リスト９００に接続位置情報（９０５）に高さ方向（Ｚ）の情報を記録しておく。そして、この高さ方向（Ｚ）の情報を利用して上記同様に高さ方向（Ｚ）を含んだ空間におけるケーブルのような物体の配置領域を定義し、仮想環境用空間情報５３０に登録することができる。
【０１３７】
このように、本実施例の接続リスト９００（第２の辞書データ：図９（ｂ））を用いることにより、ケーブルのような物体の配置領域の定義を３次元（ＸＹＺ）の空間として定義できる。なお、３次元（ＸＹＺ）の空間の配置領域を例えば侵入禁止領域として定義する例については、後に図１４で説明する。
【０１３８】
図１３の例では、物体（８２０、８２１）は接続リスト９００（第２の辞書データ：図９（ｂ））に含まれた接続物（ケーブル）であると判定され、接続物（ケーブル）を確実に仮想環境用空間情報５３０に登録することができる。
【０１３９】
以上のように、本実施例によれば、環境入力装置５０１で図６のような設置環境６００から得た空間情報において、予め設計情報から作成した空間情報７００（図７：第１の辞書データ）に該当した物体を仮想環境用空間情報５３０に登録することができる。のみならず、例えばケーブルのような接続物を対象として用意した接続リスト９００（第２の辞書データ：図９（ｂ））に該当した物体も仮想環境用空間情報５３０に登録することができる。
【０１４０】
そして、ロボット動作プログラム作成装置５５０により、仮想環境用空間情報５３０を用いて仮想環境をＧＵＩ表示し、ＧＵＩを介してロボットアームやワークを操作させ、その操作を介してロボット教示を行わせることができる。このため、ユーザは、仮想環境中の物体を直接操作するかのような快適かつ直観的なユーザーインターフェースを介して、迅速かつ確実にロボット装置１００の動作をプログラム（教示）することができる。
【０１４１】
このロボット教示時に用いられる仮想環境は、実際に環境入力装置５０１を用いて設置環境（図６の６００）から得た空間情報に基づいて作成される。このため、実際に動作させるロボット装置およびその設置環境に即して正確に再現された仮想環境のＧＵＩ表示を生成することができ、誤差の少ない、正確な仮想環境を利用したロボットプログラミングを行うことができる。
【０１４２】
ただし、仮想環境用空間情報５３０は、上記のようなユーザのインタラクティブな操作を介したロボットプログラミングのみに利用するものである必要はない。例えば、仮想環境用空間情報５３０を用いたロボット動作プログラム作成処理は、ユーザ操作を行うことなく、ＣＰＵによる何らかのアルゴリズムに基づき自動的に行われてもよい。
【０１４３】
以上のように、本実施例１によれば、予め設計情報から作成した空間情報７００（図７：第１の辞書データ）と、の照合処理のみならず、接続リスト９００（第２の辞書データ：図９（ｂ））との照合処理（接続リスト照合処理：図１０のＳ９０４）も行なう。
【０１４４】
即ち、環境入力装置５０１で得た空間情報１３００（３Ｄデータ）と、空間情報７００（第１の辞書データ）、接続リスト９００（第２の辞書データ）との照合をそれぞれ試行する第１および第２の照合工程（Ｓ９０３、Ｓ９０４）を含む。そして、これら第１ないし第２の照合工程において、３Ｄデータ中で第１または第２の辞書データに該当する物体の３Ｄモデルを生成して３Ｄ仮想環境に配置する（出力処理工程：仮想環境用空間情報出力処理（Ｓ９０５））。
【０１４５】
このため、予め作成した空間情報７００（図７）に存在せず、環境認識した空間情報８００（図８）に存在するケーブルのような接続物があった場合でも、その物体はＣＰＵの自動的な処理によって、仮想環境用空間情報５３０に登録することができる。
【０１４６】
ここで、図１４を用いて本実施例１の作用効果の一例を説明する。図１４（ａ）〜（ｃ）は、ロボットアーム２００が設置された実環境の設置面６５０を示している。
【０１４７】
従来技術では、本実施例の接続リスト９００（第２の辞書データ：図９（ｂ））は用いられておらず、設計情報に基づき、ＣＡＤ処理などにより、ロボットプログラミングのための仮想環境を作成していた。
【０１４８】
上述のように、ケーブル等の接続物は、実際の配置形状などの予測が困難であり、ＣＡＤなどによって空間情報を生成するのが難しい。このため、従来では、接続物（ケーブルなど）の物体については、ユーザが仮想環境上に図１４（ａ）に示すように、仮想的障害物１０００のような大きめの侵入禁止領域を登録することが行われていた。
【０１４９】
ここで、図１４（ａ）の仮想的障害物１０００のような大きめの侵入禁止領域を登録すると、教示点ｐ１からｐ２にロボットの手先を移動させる場合を考える。これら教示点は、例えばロボットアーム２００の手先などに設定された基準位置（部位）の位置姿勢として定義される。
【０１５０】
図１４（ａ）に対応する仮想環境をＧＵＩ表示してロボット教示を行う場合、教示点ｐ１からｐ２の間には、大きめに取られた仮想的障害物１０００がある。仮想的障害物１０００を回避させるためには、ユーザは教示点ｐ１からｐ２の間に、教示点ｐ３のような高い位置にある教示点を置く必要がある。教示点ｐ１からｐ２の間に、教示点ｐ３をプログラムすることにより、同図に１００１で示すような手先の軌道が生成される。
【０１５１】
これに対して、本実施例１では、図１４（ｂ）のような実環境に近い空間情報をユーザに提示できる。本実施例の接続リスト９００（第２の辞書データ：図９（ｂ））を用いる構成によれば、上述のようにケーブルのような物体の配置領域の定義を３次元（ＸＹＺ）の空間として定義できる。この３次元空間の配置領域を侵入禁止領域として仮想環境用空間情報５３０に登録することができる。
【０１５２】
上述のように、接続リスト９００（第２の辞書データ：図９（ｂ））は、例えばケーブルの引き出し位置やコネクタ位置に基づき生成されている。このため、図１３などに示したセル単位の空間演算によって、ごく現実的な最小の体積の３次元空間の配置領域を侵入禁止領域として仮想環境用空間情報５３０に登録することができる。
【０１５３】
図１４（ｂ）の仮想的障害物１００２は、上記のようにして接続リスト９００（第２の辞書データ：図９（ｂ））を用いて生成したものである。図１４（ｂ）の仮想的障害物１００２は、図１４（ａ）の仮想的障害物１０００よりも小さな空間を占めるものとして生成できる。このため、ロボットアーム２００の回避動作を定義する教示点ｐ３は、図１４（ａ）に比べて低い位置に設定することが可能となり、その結果として１００３のような手先の軌道を得る。
【０１５４】
このように、本実施例によれば、ロボットアーム２００の手先を移動させるために、従来よりも短い軌道を作成することが可能となるため、ロボットの動作時間を短縮することができる。もし、本実施例のロボット装置が物品の製造（生産）環境に利用される場合には、本実施例の仮想環境プログラミングを利用することにより、タクトタイムの短縮が可能となり、効率的に工業製品などの物品の製造（生産）が可能となる。本実施例は、ケーブルのような物体が長く、どのように配置されるか不明で、特にロボットアーム２００の進入禁止領域を大きく設定しなければいけないケースでの効果が高い、と考えられる。
【０１５５】
例えば、図１４（ａ）と図１４（ｂ）の比較では、設計での想定より実際はケーブルが低い位置に配置されたため、ロボットの動作時間は図１５のように約８％程度、短縮できると考えられる。図１５において、縦軸は特定のロボット動作に要する時間で、１５０１は従来（図１４（ａ））方式による動作時間、１５０２は本実施例（図１４（ｂ））方式による動作時間に相当する。
【０１５６】
なお、図１４（ｂ）では、侵入禁止領域を直方体で記述しているが、認識した接続物を太らせて、図１４（ｃ）の仮想障害物１００４のような侵入禁止領域を生成することが考えられる。仮想障害物１００４は、例えば環境入力装置５０１を用いて設置環境（図６の６００）から得た空間情報中の物体（ケーブルのような接続物６２０）の輪郭を増幅（太く）することによって生成することができる。
【実施例２】
【０１５７】
上記実施例１の図１４（ｂ）において、仮想的障害物１００２は、接続リスト９００（第２の辞書データ：図９（ｂ））を用いて生成するものとして説明した。
【０１５８】
しかしながら、環境入力装置５０１が３Ｄカメラなどから構成されている場合、実際に設置環境（図６の６００）から得た空間情報を用いて、３Ｄモデルを生成することができる。例えばこの３Ｄモデルの生成は、物体分離および照合処理（Ｓ９０３）によって分離した物体の空間情報を用いて行うことができる。
【０１５９】
これにより、環境入力装置５０１で実際に設置環境（図６の６００）から得た空間情報を用いて、接続物（例えばケーブル：図６の６２０、６２１）のような物体の現状の３Ｄモデルを生成できる。ここで、接続物（例えばケーブル）は接続リスト９００（第２の辞書データ）のみに登録されており、形状情報は接続リスト９００（第２の辞書データ）には含まれていない。
【０１６０】
一方、ロボットアームや被作業物や治工具（図７の７１０〜７１２）については、設計情報（ＣＡＤデータなど）から作成した空間情報７００（図７：第１の辞書データ）を用いて物体の現状の３Ｄモデルを生成できる。
【０１６１】
その場合、特に問題となるのは、被作業物や治工具（図７の７１０〜７１２）の位置が、作業規約や設計仕様と多少、異なる位置に配置されることに伴って、変形するケーブル（図６の６２０、６２１）に関する処理である。
【０１６２】
本実施例２では、変形するケーブルのような物体の配置空間を仮想的障害物として取り扱う場合の処理例を示す。
【０１６３】
図１６（ａ）、（ｂ）は、実環境のロボットアームの設置面６５０において、それぞれ異なる位置に配置された被作業物１１００と、被作業物１１０１、および接続物（例えばケーブル）１１０２を示している。図１６（ａ）、（ｂ）では、被作業物１１００がそれぞれ異なる位置に配置されており、これに伴なって接続物（例えばケーブル）１１０２が異なる形状に変形している。これに伴ない、仮想的障害物１１０３、１１０４として取り扱うべき、例えば直方体の接続物１１０２の配置空間の形状が異なったものとなっている。
【０１６４】
このように、２つの異なるケースが生じる例としては、次のような状況が考えられる。例えば、図１６（ａ）、（ｂ）の仮想的障害物１１０３、１１０４の一方、例えば仮想的障害物１１０３（図１６（ａ））が接続リスト９００（第２の辞書データ：図９（ｂ））を用いて図示のような形状で生成されているとする。
【０１６５】
ところが、環境入力装置５０１で実際に得た空間情報を用いて、接続物（例えばケーブル）１１０２の３Ｄデータを生成すると、図１６（ｂ）のような形状であり、これに応じて仮想的障害物１１０４を図示のような形状で生成される。
【０１６６】
また、何らかの事情で、２回（以上）、環境入力装置５０１で実際に得た空間情報を用いて、接続物（例えばケーブル）１１０２の３Ｄデータを生成し、その間に被作業物１１００が移動されている場合にも、上記のような齟齬が生じる。
【０１６７】
これら仮想的障害物１１０３、１１０４は、接続物（例えばケーブル）１１０２の占有空間であって、いずれも例えばケーブルの配置空間のＸＹＺ方向の大きさを有する直方体形状として生成することができる。このような接続物（ケーブル）１１０２の占有空間、即ちロボット制御に関しては仮想的障害物（１１０３ないし１１０４）に相当する空間の３Ｄモデル生成は、図１０の仮想環境用空間情報出力処理（Ｓ９０５）で実行することができる。
【０１６８】
そして、もし、上記のように仮想環境用空間情報出力処理（Ｓ９０５）で、接続物（ケーブル）１１０２の変形の前後で、異なる占有空間（仮想的障害物１１０３ないし１１０４）が生成されていた場合、ＣＰＵ（３０１）は、さらに次のような処理を行う。
【０１６９】
図１６（ｃ）は、上記のようにして生成された接続物（例えばケーブル）１１０２の異なる仮想的障害物１１０３、１１０４を統合して新たな仮想的障害物１１０５を生成する処理の一例を示している。ここでは、ＣＰＵ（３０１）は、接続物１１０２の変形の前後において接続物１１０２が占有している空間（１１０３、１１０４）を統合して得た占有空間の３Ｄモデルを生成する。そして、この統合により得た空間仮想的障害物１１０５として３Ｄ仮想環境（仮想環境用空間情報５３０）に配置する。
【０１７０】
図１６（ｃ）の３次元形状に係る処理では、直方体形状の仮想的障害物１１０３、１１０４のＸ、Ｙ、Ｚ軸方向の（最大）サイズの最大値を用いて仮想的障害物１１０５の形状（直方体）を生成している。同様の形状演算による統合処理はＣＰＵ（３０１）によって、対象の仮想的障害物が３つ以上存在する場合にも適用することができる。
【０１７１】
以上のように、接続物（例えばケーブル）１１０２の配置空間から複数の仮想的障害物１１０３、１１０４が生成された場合、例えば上記の３次元サイズの最大値演算などを利用して、それらを統合し仮想的障害物１１０５を生成することができる。生成した仮想的障害物１１０５は、侵入禁止領域として、仮想環境用空間情報５３０に登録することができる。このため、経時的に、あるいは接続リスト９００（第２の辞書データ：図９（ｂ））の作成時との状況の違いによって、接続物が変形する（可能性がある）場合にも対応できる。これにより、ロボットアームの侵入禁止領域を適切に設定することが可能となる。すなわち、本実施例によれば、環境入力装置５０１で実際に得た空間情報を統合することによって、より信頼性の高い仮想環境用空間情報５３０を生成して、ロボットプログラミングに用いることができる。本実施例２によれば、妥当性の高い仮想環境用空間情報５３０を生成することができ、ロボットアームの干渉などを生じることなく、信頼性の高いロボット制御を行える。
【実施例３】
【０１７２】
実施例１の図６に実環境のロボットアームの設置環境６００の一例を示した。配置は、図７のように設計情報に基づき生成された空間情報７００（図７：第１の辞書データ）と（接続物６２０、６２１を除き）一致している。図６では、ロボットアーム２００の他、被作業物６１０や治工具６１１〜６１２（図６）がほぼ空間情報７００（図７：第１の辞書データ）を照合すれば該当する位置に配置されている。
【０１７３】
ところが、実際の設置環境（１２００）では、図１７に示すように、置き忘れ、作業ミスなどによって、図７の空間情報７００（図７：第１の辞書データ）に存在する物体が欠けていることがある。このような置き忘れ、作業ミスは、被作業物が多い場合に設置忘れなどで起きがちである。
【０１７４】
図１７は、図８と同様に、環境入力装置５０１で実際に得た空間情報から環境認識した空間情報１２００を示している。図８との違いは、被作業物８１２（図８）に対応する物体が存在しないことである。被作業物（８１２）は、置き忘れ、作業ミスなどによって、配置されておらず、空間情報１２００には欠落している。図１７では環境認識で測定されなかったこの物体を被作業物１２１２（破線）として示している。
【０１７５】
また、図１７のように環境認識された空間情報１２００は、図７の空間情報７００（図７：第１の辞書データ）に基づき、生成されたものである。また、図１７では、接続リスト９００（第２の辞書データ）により処理されるケーブルは不図示の状態である。
【０１７６】
本実施例３は、図１７のように、図７の空間情報７００（図７：第１の辞書データ）を用いて環境認識を行なった場合に、生成された空間情報１２００で、空間情報７００にある物体が欠落していた場合の情報処理に関するものである。
【０１７７】
図１７の状態は、図７の空間情報７００に存在する被作業物７１２が、実環境に配置されておらず、欠落している状態である。このような状態を想定して、図１８に示すような制御手順が考えられる。
【０１７８】
図１８は、実施例１の図１０の制御手順の変形例に相当し、図８との違いは設置漏れ判定（Ｓ９０８）、設置漏れ警告処理（Ｓ９０９）が、物体分離および照合処理（Ｓ９０３）と接続リスト照合処理（Ｓ９０４）の間に挿入してある点である。この設置漏れ判定（Ｓ９０８）および設置漏れ警告処理（Ｓ９０９）以外のステップは図１０と同様であるため、以下では詳細な説明は省略する。
【０１７９】
図１８のステップＳ９０１〜Ｓ９０３では、図１０と同様に環境入力装置５０１で実際に得た空間情報に対する環境認識を行う。特に、物体分離および照合処理（Ｓ９０３）では、環境入力装置５０１で実際に得た空間情報の物体分離を行い、さらに空間情報７００（第１の辞書データ）を用いて、ロボットアームの設置面６５０に現状で設置されている物体の空間情報が生成される。
【０１８０】
図１８の設置漏れ判定（Ｓ９０８）では、物体分離および照合処理（Ｓ９０３）の結果を評価する。ここでは、物体分離および照合処理（Ｓ９０３）によって、空間情報７００（第１の辞書データ）に含まれている物体が全て同定されているか否かを判定する。具体的には、物体分離および照合処理（Ｓ９０３）で物体毎に分離、照合し、環境認識（同定）した結果である空間情報１２００（図１７）と、予め作成した空間情報７００を比較する。そして、予め作成した空間情報７００に存在し、環境認識した空間情報１２００に存在しない物体があるか否かを判定する。
【０１８１】
図７の状態では、空間情報７００に存在する被作業物７１２が、実環境に配置されていないため、設置漏れ警告処理（Ｓ９０９）実行されることになる。空間情報７００に存在する被作業物７１２が、実環境に漏れなく配置されている場合には、ステップＳ９０８からＳ９０４へそのまま移行する。
【０１８２】
設置漏れ警告処理（Ｓ９０９）では、文字情報表示や、音声表示によって、空間情報７００（図７：第１の辞書データ）に存在し、環境認識した空間情報１２００に存在しない物体がある、即ち設置漏れがある旨の警告情報をユーザに通知する。この時、例えば環境認識装置５００に設けられているモニタ（ディスプレイ）などの表示出力装置や、音声出力装置を用いることができる。この時の表示ないし音声による警告メッセージとしては「被作業物ｘｘｘが設置されていません。ご確認願います」などが考えられる。また、この時、警告メッセージと同時に当該の物体近傍の画像や、空間情報から生成した当該の物体の３Ｄ画像などを表示してもよい。このようなダイアログを実行することにより、ユーザは置き忘れの被作業物や工具などを除去する、といった作業を行うことができる。
【０１８３】
以上のように、本実施例３によれば、予め作成した空間情報７００（図７：第１の辞書データ）に存在し、環境認識した空間情報１２００に存在しない物体があった場合に、ユーザに警告を与えることによって、設置漏れを回避することができる。即ち、予め作成した空間情報７００（図７：第１の辞書データ）に含まれている物体が３Ｄデータ取得装置によって取得した３Ｄデータ中に存在しなかった場合、ユーザにその旨を警告する警告情報を通知する。これにより、仮想環境用空間情報５３０への登録漏れが回避され、プログラミング時に存在すべき物体を欠いたまま、実用できないロボット教示データが作成されてしまう、などの障害を回避することができる。
【実施例４】
【０１８４】
本実施例４では、実施例３とは逆に、作成した空間情報７００（図７：第１の辞書データ）に存在しない物体が環境認識した空間情報に存在している場合の処理につき述べる。
【０１８５】
図１９は、図８と同様に、環境入力装置５０１で実際に得た空間情報から環境認識した空間情報１３００を示している。図８との違いは、（ハンマーのような）物体１３１３が存在することである。
【０１８６】
ここで、図７の空間情報７００（図７：第１の辞書データ）には、物体１３１３は含まれていないものとする。一方、図１９の空間情報１３００は、図７の空間情報７００（図７：第１の辞書データ）との照合により、設置面１３５０に配置されたロボットアーム１３０１、被作業物１３１０〜１３１２の３Ｄデータが生成されている。同時に、図１９の空間情報１３００では、物体分離処理（図１０のＳ９０３）で分離された物体のうち未照合の（照合により同定できなかった）物体１３１３の空間情報が含まれている。
【０１８７】
また、この図１９の（ハンマーのような）物体１３１３は、実施例１の接続物（ケーブルなど）とは異なり、接続リスト９００（第２の辞書データ）にも含まれていない。このようなケースは組立環境に置き忘れの工具があった場合や、もしくは事前の設計では想定していない新しい被作業物が追加された場合などで生じることがある。
【０１８８】
本実施例４は、図１９のように、空間情報７００（図７：第１の辞書データ）、および接続リスト９００（図９：第２の辞書データ）のいずれにも含まれていない物体が存在する場合の情報処理に関するものである。このような状態を想定して、図２０に示すような制御手順が考えられる。
【０１８９】
図２０は、実施例１の図１０の制御手順の変形例に相当し、図８との違いは障害物判定（Ｓ９１０）および障害物警告処理（Ｓ９１１）が接続リスト照合処理（Ｓ９０４）と仮想環境用空間情報出力処理（Ｓ９０５）の間に挿入してある点である。この接続リスト照合処理（Ｓ９０４）と仮想環境用空間情報出力処理（Ｓ９０５）以外のステップは図１０と同様であるため、以下では詳細な説明は省略する。
【０１９０】
図１０に関して述べたように、図２０のステップＳ９０１〜Ｓ９０４では、ＣＰＵ（３０１）は、環境入力装置５０１で実際に得た空間情報を空間情報７００（図７：第１の辞書データ）、および接続リスト９００（図９：第２の辞書データ）と照合する。
【０１９１】
そして、障害物判定（Ｓ９１０）では、環境入力装置５０１で得た空間情報（１３００）に、空間情報７００（図７：第１の辞書データ）、接続リスト９００（図９：第２の辞書データ）のいずれにも含まれていない物体（障害物）が存在するか否かを判定する。もし、環境入力装置５０１で得た空間情報１３００にこのような物体が存在する場合には、それは障害物であるとして障害物警告処理（Ｓ９１１）に移行し、存在しない場合にはそのまま仮想環境用空間情報出力処理（Ｓ９０５）に移行する。
【０１９２】
障害物警告処理（Ｓ９１１）では、文字情報表示や、音声表示によって、空間情報７００にも、接続リスト９００にも存在しない物体が環境認識した空間情報１３００に存在する、即ち障害物がある旨の警告情報をユーザに通知する。この時、例えば環境認識装置５００に設けられているモニタ（ディスプレイ）などの表示出力装置や、音声出力装置を用いることができる。この時の表示ないし音声による警告メッセージとしては「未確認の物体（環境認識できない物体）があります。ご確認願います」などが考えられる。また、より明示的に「障害物があります」、あるいはさらに「障害物があります。除去して下さい」といった作業指示を含む警告メッセージを発生してもよい。これに応じて、ユーザは、表示された障害物が組み立て環境に不要な物であれば取り除く、などの作業を行うことができる。
【０１９３】
なお、本実施例の処理は、上記実施例３の設置忘れの処理と両立できる。即ち、図１８と図２０のフローは組合せることができ、ステップＳ９０８、Ｓ９０９およびＳ９１０、Ｓ９１１の両方を同じ制御手順の中に実装することができる。
【０１９４】
以上のように、本実施例４によれば、空間情報７００にも、接続リスト９００にも存在しない物体１３１３が環境入力装置５０１で得た空間情報１３００に存在する、即ち障害物がある場合には、その旨の警告情報を発生できる。
【０１９５】
即ち、本実施例４によれば、環境入力装置５０１で得た空間情報１３００（３Ｄデータ）と、空間情報７００（第１の辞書データ）、接続リスト９００（第２の辞書データ）と、の照合をそれぞれ試行する第１および第２の照合工程を含む。そして、これらの工程で、環境入力装置５０１で得た空間情報１３００（３Ｄデータ）中に前記第１および第２の辞書データのいずれにも該当しない未照合の物体が含まれている場合、ユーザにその旨を警告する警告情報を通知する。
【０１９６】
これにより、ユーザに（おそらくは）障害物である物体を現場から除去させることができ、仮想環境用空間情報５３０に登録した空間情報のみを用いてロボット教示を行っても、ロボットアームと当該の物体が干渉する、などの障害を回避できる。
【実施例５】
【０１９７】
上記の実施例４では、設計情報などから作成された空間情報７００にも、接続リスト９００にも存在しない物体が環境入力装置５０１で得た空間情報１３００に存在する、即ち障害物がある場合には、警告情報を発生する例を示した。
【０１９８】
実施例４の制御は、空間情報７００にも、接続リスト９００にも存在しない物体は障害物である、という認識に基づく。しかしながら、作業規約の変更や仕様変更などによって、事前の設計では想定していない新しい被作業物が追加される場合などがあり、一方、そのような変更に対応して空間情報７００（あるいは接続リスト９００）が更新されていない場合もあり得る。
【０１９９】
このような事態まで想定すると、空間情報７００にも、接続リスト９００にも存在しない物体を直ちに（除去すべき）障害物である、と判定して警告するだけでは、充分ではない場合もあり得る。
【０２００】
そこで、作業規約の変更や仕様変更などによる被作業物などの物体の追加と、空間情報７００（あるいは接続リスト９００）の更新が同期していないようなケースまで想定すると、そのような場合にはユーザへ問い合せるのが望ましい場合も考えられる。その場合、例えば、少なくともその物体を仮想環境用空間情報５３０に登録するか否かをユーザに問い合せる制御を行う。
【０２０１】
図２１は、図１９と同様に環境認識した空間情報１４００を示している。図１９との違いは、物体１３１３の代わりに物体１４１４が存在することである。本実施例の物体１４１４は（置き忘れのハンマーのような）物体１３１３ではなく、例えば作業規約の変更や仕様変更などによって追加された被作業物（ワークなど）である。
【０２０２】
ここで、図７の空間情報７００（図７：第１の辞書データ）は、例えば物体１４１４の追加に伴う更新が追いついておらず、空間情報７００には物体１４１４は含まれていないものとする。一方、図２１の空間情報１４００は、図７の空間情報７００（図７：第１の辞書データ）との照合により、設置面１４５０に配置されたロボットアーム１４０１、被作業物１４１０〜１４１２の３Ｄデータが生成されている。同時に、図２１の空間情報１４００では、物体分離処理（図１０のＳ９０３）で分離された物体のうち未照合の物体１４１４の空間情報が含まれている。
【０２０３】
また、この図２１の物体１４１４は、実施例１の接続物（ケーブルなど）とは異なり、接続リスト９００（第２の辞書データ）にも含まれていない。
【０２０４】
しかしながら、物体１４１４は、単なる置き忘れの工具などではなく、上記のようにロボットアーム１４０１で行う作業工程で必要な被作業物である場合も想定される。従って、そのような場合も想定すれば、物体１４１４の空間情報が認識された場合には、ユーザへ問い合せるのが望ましい。
【０２０５】
このような物体１４１４に関するユーザへの問い合せを行うには、例えば上記実施例４の図２０の制御手順を次のように修正すればよい（以下で説明する以外のステップについては、上述同様であるから、それらについては上記実施例４を参照されたい）。
【０２０６】
上記のような物体１４１４は、空間情報７００にも、接続リスト９００にも存在しない物体であるから、図２０のステップＳ９１０の判定は「障害物有」の結果となり、ステップＳ９１１への分岐が生じる。
【０２０７】
本実施例５の場合には、ステップＳ９１１の障害物警告処理では、単に障害物の存在（あるいはその除去の示唆など）を警告するに留まることなく、例えば仮想環境用空間情報５３０への登録を行うか否かを問い合せる。その場合、例えば環境認識装置５００のモニタ（ディスプレイ）などの表示出力装置や、音声出力装置を用いて、仮想環境用空間情報５３０への登録を行うか否かを問い合せるダイアログを実行し、ユーザ応答を取得する。その場合のダイアログメッセージとしては、「未確認の物体（環境認識できない物体）があります。ロボット教示のための仮想環境に登録しますか？」のようなものが考えられる。
【０２０８】
また、「ロボット教示のための仮想環境に登録する場合はＯＫボタンを、登録せず物体を除去する場合はＮＯボタンを操作してください」のようなダイアログメッセージを用いてもよい。その場合、マウスなどのポインティングデバイス（あるいはキーボード）によりユーザに応答操作を行わせることになる。
【０２０９】
ステップＳ９１１において、以上のようなユーザーインターフェースを実施することにより、ユーザはダイアログ応答によって、物体１４１４を仮想環境用空間情報５３０への登録を行うか否かを決定できる。その他の制御、および変形例などについては上記実施例４と同様であり、ここでは説明を省略する。
【０２１０】
以上のように、本実施例５によれば、空間情報７００にも、接続リスト９００にも存在しない物体１４１４が環境入力装置５０１で得た空間情報１４００（３Ｄデータ）に存在する場合、問い合せを行うことができる。この問い合せでは、例えば、仮想環境用空間情報５３０への登録を行うか否かを問い合せる。
【０２１１】
即ち、本実施例５によれば、空間情報７００（第１の辞書データ）、接続リスト９００（第２の辞書データ）との照合をそれぞれ試行する第１および第２の３Ｄモデル生成工程を含む。そして、これらの工程で、環境入力装置５０１で得た空間情報１４００（３Ｄデータ）中に前記第１および第２の辞書データのいずれにも該当しない未照合の物体が含まれている場合、ユーザに問い合せのユーザーインターフェース工程を実行する。このユーザーインターフェース工程では、未照合の物体の３Ｄモデルを生成して３Ｄ仮想環境（仮想環境用空間情報５３０）へ配置するか否かをユーザに問い合せる。
【０２１２】
これにより、未照合の物体１４１４がロボット作業に必要な、例えば被作業物であれば、ユーザは仮想環境用空間情報５３０に物体１４１４の空間情報を追加し、それを用いて必要なロボット教示を行える。また、物体１４１４が例えば置き忘れの工具などであれば、上記実施例４と同様に、例えば設置面１４５０から除去させる作業を促すことができる。
【０２１３】
なお、以上では、ステップＳ９１１において実施するダイアログは、仮想環境用空間情報５３０への登録を行うか否かを問い合せるものとして説明した。これに加えて、あるいはさらに環境入力装置５０１で得た物体１４１４の空間情報から必要な情報を抽出して、空間情報７００（あるいは接続リスト９００）に追加登録する制御を行うことも考えられる。そのような追加登録を実施するか否かを問い合せるユーザーインターフェースは上記と同様に実施することができる。
【実施例６】
【０２１４】
本実施例では、上記実施例１の図９（ｂ）で説明した接続リスト９００の異なる構成（図２２（ｂ）の９００ａ）を示す。
【０２１５】
図２２（ａ）、（ｂ）は、実施例１の図９（ａ）、（ｂ）と同等の様式の図示である。図２２（ａ）は、図９（ａ）と同等で、図７の設計情報から得た空間情報７００を上方から俯瞰した状態で示したものである。図２２（ａ）の物体Ａ〜Ｄ（９０１〜９０４）は、図９（ａ）と同等で、物体Ａ，Ｂ（９０１、９０２）およびＣ（９０３）が図７の被作業物７１０〜７１２に対応し、Ｄ（９０４）がロボットアーム７０１に対応している。また、破線で示すように、物体Ａ，Ｂ（９０１、９０２）間、および物体Ｃ，Ｄ（９０３、９０４）間を接続するケーブルの接続態様も図９（ａ）と同等である。
【０２１６】
上記のようなロボット設置環境において、図２２（ａ）では、さらに（ハンマー様の）障害物１５００が配置されている状態が図示されている。図２２（ａ）の障害物１５００は、図示のように物体Ｃ，Ｄ（９０３、９０４）間を接続するケーブル上に重ねて配置されている。
【０２１７】
実施例１で説明した接続リスト９００（図９（ｂ））は、上述のように、主として接続位置情報（９０５）、および接続方向に関する情報（９０６）によって構成されており、接続物（ケーブルなど）の形状ないしサイズに関する情報を含まない。
【０２１８】
このため、図２２（ａ）の障害物１５００のように、物体の伸びる方向や姿勢が接続位置情報（９０５）や接続方向に関する情報（９０６）に類似していると、誤認識の可能性は否めない。
【０２１９】
例えば図２２（ａ）のような姿勢で障害物１５００が接続物（破線：ケーブル）と重なっているような場合を考える。その場合、図９（ｂ）の接続位置情報（９０５）および接続方向に関する情報（９０６）と照合すると、同図の２ライン目の物体Ｃ、Ｄを接続する接続物に該当してしまう可能性がある。
【０２２０】
このようなケースを考慮して、図２２（ｂ）のような接続リスト９００ａの構成が考えられる。図２２（ｂ）の接続リスト９００ａは、図９（ｂ）の接続位置情報（９０５）および接続方向に関する情報（９０６）に加えて物体の体積に関する情報９０７、および物体のアスペクト比に関する情報９０８が追加されている。
【０２２１】
図２２（ｂ）の接続リスト９００ａは、図２２（ａ）の接続物（ケーブル）を定義したもので、接続位置情報（９０５）および接続方向に関する情報（９０６）の値は図９（ｂ）のものと同等である。
【０２２２】
物体の体積に関する情報９０７、および物体のアスペクト比に関する情報９０８は、設置環境に配置される接続物（ケーブル）の寸法やサイズに応じて決定されている。物体の体積に関する情報９０７は、同図中の左側のフィールドにｍ３（メートル３乗）の単位で定義されている。また、物体のアスペクト比に関する情報９０８は、同図中の左側の３つのフィールドに例えば各座標軸方向のサイズの比率（Ｘ／Ｙ、Ｘ／Ｚ、Ｙ／Ｚ：単位なし）によって定義されている。また、これらの情報９０７、９０８の右側のフィールドには、体積値およびサイズ比率に関する許容誤差が定義されている。
【０２２３】
図２２（ｂ）の物体の体積に関する情報９０７、および物体のアスペクト比に関する情報９０８の各フィールドの値は、接続物（ケーブル）のような物体の表現である。これらの情報９０７、９０８の値は、接続物（ケーブル）のような物体を同定でき、一方、例えば（ハンマー様の）障害物１５００とは一致（照合該当）しないよう考慮されている。
【０２２４】
図２２（ｂ）の接続リスト９００ａとの照合は、図１０（実施例１）または図２０（実施例４、５）の接続リスト照合処理（Ｓ９０４）で行うことができる。その場合、照合には、物体分離処理（図１０のＳ９０３）で分離されたもののうち未照合の物体（１５００）の空間情報（３Ｄデータ）が用いられる。接続位置（９０５）、および接続方向（９０６）の情報との照合は、ＣＰＵ（３０１）によって、実施例１で述べたのと同様に実行される。
【０２２５】
また、同様に物体（１５００）の空間情報（３Ｄデータ）から、ＣＰＵ（３０１）は、その物体の体積および各軸方向のアスペクト比を計算する。そして、算出された物体（１５００）の体積および各軸方向のアスペクト比と、物体の体積に関する情報９０７、および物体のアスペクト比に関する情報９０８を比較する。この比較では、情報９０７、９０８に定義されている許容範囲内の差異は許容される。
【０２２６】
そして、情報（９０５、９０６、９０７および９０８）の照合が全て該当している場合に、接続リスト照合処理（Ｓ９０４）は検索成功（ヒット：該当）と判断する。なお、図１０（実施例１）または図２０（実施例４、５）における他のステップは、前述同様に実行することができる。
【０２２７】
上記の通り、図２２（ｂ）のように接続リスト９００ａを構成しておき、上記のような照合処理（図１０、図２０のＳ９０４）を行う。これにより図２２（ａ）のように接続物（ケーブル）の中央に重なって配置されているような障害物１５００が誤認識されてしまうのを防止できる。従って、接続リスト９００ａによって、意図したケーブルのような接続物のみを照合該当あり、として仮想環境用空間情報５３０に登録させることができる。
【０２２８】
また、接続リスト９００ａとの照合（Ｓ９０４）で該当なし、と判定された場合は、実施例４、５の構成であれば、上述の障害物に関する警告ないし問い合せ処理を確実に実行することができる。
【０２２９】
以上のようにして、本実施例６によれば、接続リスト９００ａ（第２の辞書データ）に、設置環境に配置される可能性のある接続物のような物体に関して、その物体の形状ないしサイズ情報を含めている。特に、設置環境に配置される可能性のある接続物のような物体に関して、その物体の体積または、アスペクト比、あるいは、これらに関する許容誤差情報を含めている。このため、接続物（ケーブル）の中央に重なって配置されているような障害物（１５００）が誤認識されてしまうのを防止できる。従って、接続リスト９００ａ（第２の辞書データ）によって、意図したケーブルのような接続物のみを照合該当あり、として仮想環境用空間情報５３０に登録させることができる。
【０２３０】
このため、本実施例６によれば、実際のロボット設置環境を高信頼度で再現した仮想環境用空間情報５３０を得ることができ、これを用いて正確かつ確実なロボット教示（プログラミング）を行うことができる。
【０２３１】
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０２３２】
１００…ロボット装置、２００…ロボットアーム（多関節ロボット）、２０１〜２０６…アクチュエータ、２１１〜２１６…電動モータ、２２１〜２２６…減速機、２３０…サーボ制御装置（駆動制御部）、３００…ロボット制御装置、３３０…プログラム、５００…環境認識装置、５０１…環境入力装置、５２０…空間情報、５２２…記録ディスク（記録媒体）、５３０…仮想環境用空間情報、５３２…記録ディスク（記録媒体）、５５０…ロボット動作プログラム作成装置、５７０…ロボット動作プログラム、５８０…記録ディスク（記録媒体）。
【図１】
0006643000.tif 000002
【図２】
0006643000.tif 000003
【図３】
0006643000.tif 000004
【図４】
0006643000.tif 000005
【図５】
0006643000.tif 000006
【図６】
0006643000.tif 000007
【図７】
0006643000.tif 000008
【図８】
0006643000.tif 000009
【図９】
0006643000.tif 000010
【図１０】
0006643000.tif 000011
【図１１】
0006643000.tif 000012
【図１２】
0006643000.tif 000013
【図１３】
0006643000.tif 000014
【図１４】
0006643000.tif 000015
【図１５】
0006643000.tif 000016
【図１６】
0006643000.tif 000017
【図１７】
0006643000.tif 000018
【図１８】
0006643000.tif 000019
【図１９】
0006643000.tif 000020
【図２０】
0006643000.tif 000021
【図２１】
0006643000.tif 000022
【図２２】
0006643000.tif 000023