(57)【要約】【課題】ロボットの動作効率をより向上させることができるロボット動作計算装置を提供する。【解決手段】ロボットが行う作業の情報である作業情報と、ロボットの情報である作業条件情報とに基づいて、ロボットの第１の作業の動作情報を計算する第１の計算手段と、計算された第１の作業の動作情報に基づいて、ロボットに第１の作業を実行させる第１の実行手段と、ロボットが前記第１の作業の動作を実行する間にロボットが備える撮像手段が撮像した画像情報を入力する画像入力手段と、作業情報及び作業条件情報と、画像情報とに基づいて、第１の作業に後続する第２の作業の動作情報を計算する第２の計算手段と、計算された第２の作業の動作情報に基づいて、ロボットに第２の作業を実行させる第２の実行手段と、を備える。【選択図】図１
2017030070.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが行う作業の情報を作業情報として保持し、前記ロボットの情報を作業条件情報として保持する保持手段と、
前記保持手段に保持される前記作業情報及び前記作業条件情報に基づいて、前記ロボットの第１の作業の動作情報を計算する第１の計算手段と、
前記第１の計算手段によって計算された第１の作業の動作情報に基づいて、前記ロボットに前記第１の作業を実行させる第１の実行手段と、
前記ロボットが前記第１の作業の動作を実行する間に前記ロボットが備える撮像手段が撮像した画像情報を入力する画像入力手段と、
前記作業情報及び前記作業条件情報と、前記画像情報とに基づいて、前記第１の作業に後続する第２の作業の動作情報を計算する第２の計算手段と、
前記第２の計算手段により計算された前記第２の作業の動作情報に基づいて、前記ロボットに前記第２の作業を実行させる第２の実行手段と、
を備えることを特徴とするロボット動作計算装置。
【請求項２】
前記第１の計算手段は、前記第１の作業の動作と、前記第２の作業のための前記撮像手段による撮像の動作とが、１つの動作で実行されるよう、前記ロボットの第１の作業の動作情報を計算する、
ことを特徴とする請求項１に記載のロボット動作計算装置。
【請求項３】
前記第１の計算手段は、前記保持手段が保持する前記作業情報及び前記作業条件情報に基づいて、前記ロボットの前記第１の作業の動作の開始位置姿勢から、前記ロボットの前記第１の作業の動作の終了位置姿勢までの間において、前記撮像手段の前記第２の作業のための撮像位置姿勢を経由するよう、前記ロボットの第２の作業の動作情報を計算する
ことを特徴とする請求項１又は２に記載のロボット動作計算装置。
【請求項４】
前記第１の計算手段は、前記ロボットの前記第１の作業の動作の前記開始位置姿勢から、前記ロボットの前記第１の作業の動作の前記終了位置姿勢までの間において、前記撮像手段の前記第２の作業のための前記撮像位置姿勢を経由するよう計算された第１の動作情報と、前記ロボットの前記第１の作業の動作の前記開始位置姿勢から、前記ロボットの前記第１の作業の動作の前記終了位置姿勢までの間において、前記撮像位置姿勢を経由しないよう計算された第２の動作情報と、を計算し、
前記第１の動作情報及び前記第２の動作情報を比較して、作業時間が短いいずれかの動作情報を前記第１の作業の動作情報として前記第１の実行手段に供給する、
ことを特徴とする請求項３記載のロボット動作計算装置。
【請求項５】
前記第１の実行手段及び前記第２の実行手段は、それぞれが撮像手段を備える第１のロボット及び第２のロボットに動作をそれぞれ実行させるものであり、
前記第１の計算手段は、前記第１の作業の動作と、前記第２の作業のための前記第１のロボットが備える第１の撮像手段による撮像の動作とが、１つの動作で実行されるよう、前記第１のロボットの第１の作業の動作情報を計算し、
前記第２の計算手段は、前記第２の作業の動作と、前記第２の作業のための前記第２のロボットが備える第２の撮像手段による撮像の動作とが、１つの動作で実行されるよう、前記第２のロボットの第２の作業の動作情報を計算する、
ことを特徴とする請求項１から４のいずれか１項に記載のロボット動作計算装置。
【請求項６】
前記第１のロボットが備える前記第１の撮像手段は、第１の解像度で撮像し、
前記第２のロボットが備える前記第２の撮像手段は、前記第１の解像度より高い第２の解像度で撮像する、ことを特徴とする請求項５に記載のロボット動作計算装置。
【請求項７】
前記第１のロボットは、前記第１のロボットの第１の作業の動作情報に基づき動作を実行し、
前記第２のロボットは、前記第２のロボットの第２の作業の動作情報に基づき動作を実行する、ことを特徴とする請求項５又は６に記載のロボット動作計算装置。
【請求項８】
保持手段に保持される、ロボットが行う作業の情報である作業情報と、前記ロボットの情報である作業条件情報と、に基づいて、前記ロボットの第１の作業の動作情報を計算するステップと、
計算された前記ロボットの第１の作業の動作情報に基づいて、前記ロボットに前記第１の作業を実行させるステップと、
前記ロボットが前記第１の作業の動作を実行する間に前記ロボットが備える撮像手段が撮像した画像情報を入力するステップと、
前記作業情報及び前記作業条件情報と、前記画像情報とに基づいて、前記第１の作業に後続する第２の作業の動作情報を計算するステップと、
計算された前記ロボットの第２の作業の動作情報に基づいて、前記ロボットに前記第２の作業を実行させるステップと、
を含むことを特徴とするロボット動作計算方法。
【請求項９】
前記第１の作業の動作情報を計算するステップにおいて、前記第１の作業の動作と、前記第２の作業のための前記撮像手段による撮像の動作とが、１つの動作で実行されるよう、前記ロボットの動作情報を計算する、
ことを特徴とする請求項８に記載のロボット動作計算方法。
【請求項１０】
コンピュータが読み取り実行することで、前記コンピュータを、請求項１から７のいずれか１項に記載のロボット動作計算装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作を自動で計算するためのロボット動作計算装置、ロボット動作計算方法及びそのコンピュータプログラムに関する。
【背景技術】
【０００２】
生産や組み立ての効率化を図るために、ロボットアーム等のロボットの動作を自動で計算するシステムが近年注目を集めている。このロボット動作計算において、例えば６軸アームのロボットなどに代表されるように、高い自由度を備えたロボットの場合、その動作を探索するための空間（解空間）が膨大となる。このため、その空間から最適な動作を見いだすための計算に長時間を要してしまう。
これに対して、下記特許文献１は、中間計算値をオフラインのテーブルデータとして記憶しておくことによって、ロボットの動作軌道（軌跡）の計算の高速化を図る技術を開示する。この特許文献１においては、ロボットのカメラが常に注視点方向を向いた状態での目標への円弧軌道を計算し、カメラをこの円弧軌道に沿って移動させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−４１９９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の構成では、ロボットの動作の計算を高速化することはできても、ロボットの作業の効率については考慮されていない。すなわち、特許文献１では、撮像対象物を撮像する機能を備えるロボットにおいて、撮像対象物までの距離を維持したまま、かつ、撮像するためのカメラが注視点方向を向いた状態で、移動先座標までの円弧軌道を計算する。このように特許文献１では、撮像動作に関する制御は行えるが、他のロボット作業の動作を考慮した制御ではない。
このため、特許文献１では、ロボット動作中に撮像装置による撮像動作を考慮したロボットの動作を算出することができない。その結果、ワークのピッキング作業等の動作と、撮像装置よる撮像のためにロボットの動作とを、共に実行しようとすると、ロボットの動作時間が全体として増大してしまう。したがって、ロボットを用いた作業の生産性が低下するという課題があった。
本発明は、上記の課題に鑑み、撮像を伴うロボットの動作計算において、ロボットの動作効率をより向上させることができるロボット動作計算装置、ロボット動作計算方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
（１）上記課題を解決するために、本願発明に係るロボット動作計算装置の一態様は、ロボットが行う作業の情報を作業情報として保持し、前記ロボットの情報を作業条件情報として保持する保持手段と、前記保持手段に保持される前記作業情報及び前記作業条件情報に基づいて、前記ロボットの第１の作業の動作情報を計算する第１の計算手段と、前記第１の計算手段によって計算された第１の作業の動作情報に基づいて、前記ロボットに前記第１の作業を実行させる第１の実行手段と、前記ロボットが前記第１の作業の動作を実行する間に前記ロボットが備える撮像手段が撮像した画像情報を入力する画像入力手段と、前記作業情報及び前記作業条件情報と、前記画像情報とに基づいて、前記第１の作業に後続する第２の作業の動作情報を計算する第２の計算手段と、前記第２の計算手段により計算された前記第２の作業の動作情報に基づいて、前記ロボットに前記第２の作業を実行させる第２の実行手段と、を備える。
【０００６】
（２）また、本発明の他の一態様に係るロボット動作計算方法は、保持手段に保持される、ロボットが行う作業の情報である作業情報と、前記ロボットの情報である作業条件情報と、に基づいて、前記ロボットの第１の作業の動作情報を計算するステップと、計算された前記ロボットの第１の作業の動作情報に基づいて、前記ロボットに前記第１の作業を実行させるステップと、前記ロボットが前記第１の作業の動作を実行する間に前記ロボットが備える撮像手段が撮像した画像情報を入力するステップと、前記作業情報及び前記作業条件情報と、前記画像情報と、に基づいて、前記第１の作業に後続する第２の作業の動作情報を計算するステップと、計算された前記ロボットの第２の作業の動作情報に基づいて、前記ロボットに前記第２の作業を実行させるステップと、を含む。
【発明の効果】
【０００７】
本発明によれば、撮像を伴うロボットの動作計算において、ロボットの動作効率をより向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態１及び実施形態２におけるロボット動作計算装置の全体構成の一例を示す図である。
【図２】実施形態１及び実施形態２におけるロボットの動作の動作例を説明する図である。
【図３】ロボットが行う撮像作業の情報が記載されたＸＭＬファイルの内容の一例を示す図である。
【図４】ロボットが行う作業の情報が記載されたＸＭＬファイルの内容の一例を示す図である。
【図５】ロボットの身体の情報が記載されたＸＭＬファイルの内容の一例を示す図である。
【図６】作業条件保持部が保持するロボットの身体の構成要素を説明する図である。
【図７】撮像装置の情報が記載されたＸＭＬファイルの内容の一例を示す図である。
【図８】ロボットの周囲にある障害物の情報が記載されたＸＭＬファイルの内容の一例を示す図である。
【図９】ロボットの動作の計算方法を示す図である。
【図１０】ロボットの動作の計算方法の具体的な計算の手順を説明する図である。
【図１１】ロボットの動作の情報（動作経路）の計算方法の結果を説明する図である。
【図１２】実施形態１及び実施形態２のロボット動作計算装置の動作を示すフローチャートである。
【図１３】実施形態２のロボット動作計算装置が実行するロボットの動作計算の方法を示す図である。
【図１４】実施形態３のロボット動作計算システムの全体構成を示す図である。
【図１５】実施形態３の動作例を示す図である。
【図１６】実施形態３のロボットが行う作業の情報が記載されたＸＭＬファイルの内容の一例を示す図である。
【図１７】実施形態で説明した各部のハードウエア構成の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して、本発明を実施するための形態について詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。
実施形態１
図１は、本発明の実施形態１に係るロボット動作計算装置１０１の構成図を示す。
実施形態１において、ロボット動作計算装置１０１は、作業情報保持部（保持手段）１０２と、作業条件保持部（保持手段）１０３と、作業管理部１０４と、動作計算部１０５と、動作情報保持部１０６と、第１動作実行部１０７と、第２動作実行部１０８と、第１撮像情報入力部１０９と、第１撮像情報処理部１１０と、を備える。
作業情報保持部１０２は、ロボットを動作させる作業と撮像装置を用いる作業の情報を、作業情報として保持する。
【００１０】
作業条件保持部１０３は、ロボットの情報及びロボットの周囲の環境の情報を、作業条件（作業条件情報）として保持する。
作業管理部１０４は、作業情報保持部１０２及び作業条件保持部１０３から、ロボットの動作計算に必要な情報を抽出する。
動作計算部１０５は、作業管理部１０４が抽出した情報に基づいて、ロボットの動作の情報を計算する。
動作情報保持部１０６は、動作計算部１０５が計算したロボットの動作情報を保持する。
第１動作実行部１０７は、動作情報保持部１０６から出力される撮像装置２１０での撮像を含むロボットの動作情報でロボットを動作させる。
第２動作実行部１０８は、動作情報保持部１０６が出力するロボットの動作情報でロボットを動作させる。
第１撮像情報入力部１０９は、ロボットの動作中に撮像装置からの画像を入力する。
第１撮像情報処理部１１０は、第１撮像情報入力部１０９が入力する画像を処理し、処理した情報を動作計算部１０５に対して出力する。
【００１１】
（動作例）
まず、図１に示すロボット動作計算装置１０１が、ロボットを制御してどのような動作を行わせることができるのか説明する。その後、その動作と関連づけながら、ロボット動作計算装置１０１の各部を説明していく。
本実施形態１のロボット動作計算装置１０１は、例えば、ロボットに、第１の部品を組み付ける作業と、第２の部品を組み付ける為の組み付け先を撮像する作業とを、１つのロボット動作で行えるように、当該ロボットの動作を計算して求める。
具体的には、ロボット動作計算装置１０１は、例えば、以下のような処理を実行する。
まず、第１の部品組み付け時に撮像された第２の部品の組み付け先の画像を処理し、第２の部品の組み付け先の情報を抽出する。次に、抽出した第２の部品の組み付け先の情報から、第２の部品を組み付ける動作を生成する。このような処理によって、ロボットの作業に必要な時間を短縮することができる。
【００１２】
図２は、本実施形態１のロボット動作計算装置１０１を適用してロボットに複数の動作を共に行わせた作業例について説明する図である。
図２の例においては、ロボット２０４は複数のリンクを備えたアーム型ロボットであり、先端部分にハンド２０５、及び、撮像装置２１０が備えられている。ロボット２０４は、典型的には、ハンドビジョンセンサ付きのロボットハンドでよい。また、ロボット２０４には、ロボット２０４のリンク部分に座標系２０３が定義されている。
図２の例においては、座標系２０３は、図２に向かって左方向にＸ座標軸、上方向にＺ座標軸、図面奥行き方向にＹ座標軸が設定されている。
撮像装置２１０は、撮像装置２１０を制御する撮像制御装置２０１に接続されている。同様にロボット２０４は、ロボットを制御するロボット制御装置２０２に接続されている。  
撮像制御装置２０１、ロボット制御装置２０２はそれぞれロボット動作計算装置１０１に接続されている。
撮像制御装置２０１及びロボット制御装置２０２は、ロボット動作計算装置１０１が計算して求めたロボット動作情報に基づいて、撮像装置２１０及びロボット２０４をそれぞれ動作させる。
【００１３】
図２の例においては、ロボット２０４は、部品２０６を把持しており、部品２０６を組み付ける対象である部品２１２に組み付けようとしている。組み付け対象である部品２１２は作業台２１１の上に配置されている。作業台２１１の上には、さらに、他の部品２０９が配置されている。
組み付け相手の部品２１２には部品２０６を組み付ける為の組み付け先２０７が存在する。組み付け先２０７は、部品２０６を組み付ける場所であり、凹部、孔部、穴部等の形状をなしている場合もあるが、単なる場所、部位であってもよい。以下、本文では、組み付け先とは、このような場所や部位を意味する。
また、組み付け相手の部品２１２には、さらに部品２０９を組み付ける為の組み付け先２０８も存在する。
【００１４】
ロボット２０４は、ロボット制御装置２０２の制御を受けて、ロボット動作計算装置１０１が計算して求めたロボット動作情報に基づき動作を行う。具体的には、ロボット２０４は、例えば、予め撮像装置２１０によって計測された組み付け先２０７の位置姿勢に基づき、現在ハンド２０５で把持している部品２０６を組み付ける動作を行うものとする。
このとき、ロボット２０４は、把持している部品２０６を組み付け先２０７に移動させる間に、部品２０９の組み付け先である組み付け先２０８を撮像装置２１０によって撮像する。そして、撮像装置２１０が撮像した画像は、撮像制御装置２０１を介して、ロボット動作計算装置１０１に送出される。ロボット動作計算装置１０１は、撮像画像に基づき、部品２０９の組み付け先２０８の位置姿勢を算出する。算出した組み付け先２０８の位置姿勢は、ロボット２０４が部品２０９を組み付ける動作を行う際に利用される。
ロボット２０４は、部品２０６を組み付け先２０７に組み付けた後、部品２０９を把持し、部品２０９の組み付け先２０８に部品２０９を組み付ける。この際、先に求めた組み付け先２０８の位置姿勢が利用される。
【００１５】
先に述べたように、ここで利用される組み付け先２０８の位置姿勢は、ロボット２０４が部品２０６を組み付ける動作中に撮像装置２１０が撮像した画像に基づき、事前にロボット動作計算装置１０１が算出している。
このため、ロボット２０４が、組み付け先２０８を撮像する動作を別途行わなくとも、ロボット動作計算装置１０１は、次の部品２０９の組み付け先２０８の位置姿勢を求めることができる。その結果、ロボット２０４は、部品２０９の組み付け先２０８を撮像する動作を経由する動作よりも、短い移動経路の動作によって、部品２０９を組み付け先２０８へ組み付けることができる。
このように、本実施形態１においては、部品２０６の組み付け動作中に、部品２０９の組み付け先２０８の撮像を行うことによって、部品２０９を組み付け先２０８に組み付けるまでのロボットの動作時間を短縮できる。つまり、ロボット２０４の動作の効率が向上し、例えば生産ライン等に本実施形態１を適用すれば生産性の向上が期待される。
こうして、実施形態１は、複数の作業とビジョンセンサの特性と、ロボットの特性に基づいて、ビジョンセンサの位置姿勢を考慮してロボットの動作軌道の生成を行っている。
【００１６】
次に、図２で説明したロボットの動作と関連づけながら、図１の例で示したロボット動作計算装置１０１の各部位について、詳細に説明する。
（作業情報保持部１０２）
作業情報保持部１０２は、ロボットが行う作業の情報を作業情報として保持している。
作業情報保持部１０２が保持しているロボットが行う作業情報には、作業の属性、作業の名前、作業を行う為に完了していなくてはならない先行する他の作業、及び、作業の属性に依存する各種項目が含まれてよい。
図３は、作業情報保持部１０２が保持するロボットが行う作業の情報の詳細の一例を示す。
図３の例に示すように、ロボット２０４が行う作業の情報は、例えば、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式の電子ファイルを用いて、作業情報保持部１０２において保持してよい。
図３の例に示すように、ロボット２０４が実行する１つの作業は、タグ＜ｔａｓｋ＞で囲まれる項目に記載される。具体的には、タグ＜ｔａｓｋ＞から、タグ＜／ｔａｓｋ＞の間に、１つの作業の情報が記載される。このようなＸＭＬファイル中の各タグ中の情報の記載によって、ロボット２０４が行う作業の情報が保持されている。
【００１７】
１つの作業は、作業の属性を表す項目として、タグ＜ｔｙｐｅ＞を有する。
タグ＜ｔｙｐｅ＞で囲まれる項目では、ロボット２０４を動作させる作業には「ｍａｎｉｐｕｌａｔｉｏｎ」と記載されており、また撮像を行う作業には「ｖｉｓｉｏｎ」と記載されている。これによって、ロボット２０４の作業の種類を表しているが、タグ＜ｔｙｐｅ＞で囲まれる項目には、他の種類の記述を記載してもよい。
また、ロボット２０４の１つの作業には、それぞれ名前がつけられており、タグ＜ｎａｍｅ＞で囲まれる項目に、当該名前が記載される。
それぞれの作業を行う為に完了していなくてはならない他の作業について、タグ＜ｒｅｑｕｉｒｅｍｅｎｔ＞で囲まれる項目に当該他の作業の名前が記載される。タグ＜ｒｅｑｕｉｒｅｍｅｎｔ＞の情報により、作業の依存関係が明確になり、作業の順番を決定することができる。
【００１８】
次に、作業のタグ＜ｔｙｐｅ＞で囲まれた項目に記載される作業属性ごと固有（特有）の項目について説明する。まず、図３を参照し、タグ＜ｔｙｐｅ＞に「ｖｉｓｉｏｎ」と記載された、撮像の作業特有の項目について説明する。
タグ＜ｔｙｐｅ＞に「ｖｉｓｉｏｎ」と記載されている場合は、撮像の作業を意味し、この場合、撮像する時の撮像装置の位置姿勢に関する項目が記載されている。
具体的には、この位置姿勢のうち、位置については、タグ＜ｘｙｚ＞に記載され、姿勢については、タグ＜ｒｐｙ＞に記載される。
次に、図４を参照し、図４に示されている作業の記載中に含まれる特有の項目について説明する。
図４において、作業のタグ＜ｔｙｐｅ＞に「ｍａｎｉｐｕｌａｔｉｏｎ」と記載されている。タグ＜ｔｙｐｅ＞に「ｍａｎｉｐｕｌａｔｉｏｎ」と記載された場合は、ロボット２０４を動作させる作業を意味する。
タグ＜ｓｔａｒｔ＞には、ロボット２０４の作業開始時の関節の状態と、作業開始時のハンド２０５の状態又は行うべき動作が記載されている。また、タグ＜ｊｏｉｎｔ＞はロボット２０４の各関節の名前と、その関節の角度が記載される。
【００１９】
本実施形態１においては、ロボット２０４は例えば６軸のロボットであるため、タグ＜ｊｏｉｎｔ＞は６個存在している。図４の例においては、各関節の名前はタグ＜ｎａｍｅ＞に記載され、各関節の関節角の値はタグ＜ｖａｌｕｅ＞に記載される。また、タグ＜ｈａｎｄ＞には、ハンド２０５の状態や動作の内容が記載される。
本実施形態１においては、ロボット動作計算装置１０１及びロボット制御装置２０２は、ハンド２０５がタグ＜ｈａｎｄ＞に書かれた状態（又は動作）となるように、ロボット２０４及びハンド２０５を制御する。
例えば、図４の作業名ｔａｓｋ１のタグ＜ｓｔａｒｔ＞中のタグ＜ｈａｎｄ＞に記載された、「ｇｒａｂ  ｐａｒｔｓ１」は、部品２０６の把持をする動作を意味するものとする。
【００２０】
次に、タグ＜ｅｎｄ＞には、ロボット２０４の作業終了時の関節の状態や動作と、ハンド２０５の状態や動作が記載されてよい。
図４の例における作業名ｔａｓｋ１においては、タグ＜ｅｎｄ＞中のタグ＜ｈａｎｄ＞には、「ｒｅｌｅａｓｅ  ｐａｒｔｓ１」と記載されており、これは、部品２０６（ｐａｒｔｓ１）を組み付け先２０７に組み付ける動作を意味する。ここで、組み付け先２０７の位置姿勢は、撮像装置２１０を用いた作業名ｔａｓｋ０で既に計測されている。
作業名ｔａｓｋ１では、タグ＜ｅｎｄ＞中のタグ＜ｄａｔａ  ｒｅｑｕｉｒｅｍｅｎｔ＞で作業名ｔａｓｋ０が指定されており、作業名ｔａｓｋ０で既に計測された組み付け先２０７の位置姿勢をｄａｔａとして呼び出される。
なお、作業名ｔａｓｋ１は、タグ＜ｒｅｑｕｉｒｅｍｅｎｔ＞で指定されているので、ｔａｓｋ１を実行する際には、既に実行が完了している。
このように、呼び出された組み付け先２０７の位置姿勢のデータを元にして、例えば、逆運動学に基づいて、ロボット２０４のそれぞれの関節の関節角を導出することができる。
導出されたロボット２０４の各間関節の関節角は、タグ＜ｅｎｄ＞のタグ＜ｊｏｉｎｔ＞中に記載（挿入）される。このような動作によって、組み付け先の位置姿勢のデータを取得しつつ、ロボット２０４を制御することができる。
【００２１】
（作業条件保持部１０３）
図１に戻り、次に、作業条件保持部１０３について、図５〜８を参照して詳細に説明する。
作業条件保持部１０３は、ロボット２０４が作業を行う為の環境の情報を、作業条件（作業条件情報）として保持している。具体的には、ロボット２０４の身体に関する情報と、撮像装置２１０の情報と、ロボット２０４の周囲に存在する障害物の情報であり、その他の情報が含まれていてもよい。
作業条件保持部１０３も、作業情報保持部１０２と同様に、例えば、ＸＭＬ形式の電子ファイルを用いて上記情報を保持している。以下、作業条件保持部１０３が保持する情報について説明する。
まず図５、６に基づき、作業条件保持部１０３が保持しているロボット２０４の身体の情報について説明する。図５は、ロボット２０４の身体の情報を記載しているＸＭＬ形式の電子ファイルの記載内容を示す。図５の例に示すように、ロボット２０４の身体の情報は、タグ＜ｒｏｂｏｔ＞に記載される。
タグ＜ｒｏｂｏｔ＞内のタグ＜ｎａｍｅ＞にはロボットの名前が記載される。図５の例においては、ロボットの名前が「２０４」と記載されている。また、図５の例に示すように、ロボット２０４の身体に関する情報は、リンク（タグ＜ｌｉｎｋ＞）とジョイント（タグ＜ｊｏｉｎｔ＞）で記載されてよい。
【００２２】
図６は、ロボット２０４のリンクとジョイントの関係を説明する図である。
ロボット２０４は６軸のアーム型のロボットなので、リンクが７個備えており、ジョイントは６個備えられている。
説明を簡略化するため、以下、図６中の２個のリンクと、そのリンク同士を連結する１個のジョイント１つを例として用いて説明する。
図６において、ロボット２０４は、リンク６０１と、リンク６０３と、を備えている。
また、ロボット２０４は、リンク６０１とリンク６０３とを連結するジョイント６０２を備えている。ここで、リンク６０１、リンク６０３の名前はそれぞれ例えば「ｌ１」「ｌ２」であり、ジョイント６０２の名前は例えば「ｊ１」である。本実施形態１においては、ジョイント６０２は例えば座標系２０３のＺ軸回りに回転する。
【００２３】
次に、図６で説明したリンク６０１、リンク６０３と、ジョイント６０２の関係が、作業条件（作業条件情報）としてどのように記載されるか、図５を用いて説明する。リンク６０１とリンク６０３と、ジョイント６０２とに関して、それぞれタグ＜ｌｉｎｋ＞、タグ＜ｊｏｉｎｔ＞に、それらに関する情報が記載される。
図６では、タグ＜ｌｉｎｋ＞が、主としてリンクの形状情報を記載する。また、タグ＜ｌｉｎｋ＞中には、当該タグが表すリンクの名前であるタグ＜ｎａｍｅ＞が記載される。図５の例では、名前「ｌ１」が＜ｎａｍｅ＞ｌ１＜／ｎａｍｅ＞のように記載されている。本実施形態１におけるリンク「ｌ１」（リンク６０１）は円柱形状なので、その形状がタグ＜ｃｙｌｉｎｄｅｒ＞中に記載される。
タグ＜ｃｙｌｉｎｄｅｒ＞中においては、リンクｌ１（リンク６０１）の形状である円柱の長さの情報をタグ＜ｌｅｎｇｔｈ＞に、その円柱の半径の情報をタグ＜ｒａｄｉｕｓ＞に、それぞれ記載する。図５の例では、リンクｌ１（リンク６０１）の長さの情報として「０．２」が記載され、リンクｌ１（リンク６０１）の半径の情報として「０．２」が記載されている。リンク「ｌ２」についても、同様に記載がされる。
【００２４】
図５において、ジョイント「ｊ１」の情報は、タグ＜ｊｏｉｎｔ＞に記載されている。
タグ＜ｊｏｉｎｔ＞中には、タグ＜ｔｙｐｅ＞が記載され、図５の例においては当該タグ＜ｔｙｐｅ＞にはその値として「ｒｅｖｏｌｕｔｅ」と記載されている。
これは、ジョイントｊ１（ジョイント６０２）がリンク同士を回転させるジョイントであることを表す。タグ＜ｊｏｉｎｔ＞中のタグ＜ｐａｒｅｎｔ  ｌｉｎｋ＞は親リンクを、タグ＜ｃｈｉｌｄ  ｌｉｎｋ＞は子リンクを、それぞれ表す。これらのタグによって、連結するリンク及びそれらの主従関係が表されている。
図５において、親リンクは「ｌ１」（リンク６０１）、子リンクは「ｌ２」（リンク６０３）である。
タグ＜ｊｏｉｎｔ＞中のタグ＜ａｘｉｓ＞は、ジョイントｊ１（ジョイント６０２）の回転軸を表している。
図５の例においては、＜ｊｏｉｎｔ＞ｚ＜／ｊｏｉｎｔ＞と記載することによって、ジョイント「ｊ１」がｚ軸回りに回転するものであることを表している。
また、タグ＜ｊｏｉｎｔ＞中のタグ＜ｘｙｚ＞は座標系２０３上のジョイントの位置（座標）を表している。図５の例においては、Ｘ、Ｙ、Ｚ座標値が、それぞれ、「０」、「０」、「０．３」であるとされている。
【００２５】
作業条件保持部１０３は、撮像装置２１０の情報も保持している。撮像装置２１０の情報も、上記リンク６０１等と同様に、例えばＸＭＬ形式の電子ファイルに記載することによって保持されている。
図７は、撮像装置２１０の情報の内容の一例を示す。図７の例に示すように、撮像装置２１０の情報は、タグ＜ｃａｍｅｒａ＞に、その内容が記載される。まず、撮像装置２１０の名前は、タグ＜ｃａｍｅｒａ＞中のタグ＜ｎａｍｅ＞に記載してよい。図７の例においては、撮像装置２１０の名前は「ｃａｍｅｒａ１」と記載されている。
また、タグ＜ｃａｍｅｒａ＞中のタグ＜ｔｙｐｅ＞には、撮像装置２１０が、２次元の画像を取得可能な撮像装置なのか、距離情報も含めた３次元の情報を取得可能な撮像装置なのか識別する情報が記載される。図７の例においては、当該タグ＜ｔｙｐｅ＞に「２Ｄ」と記載され、撮像装置２１０が２次元の画像を取得可能であることが記載されている。
【００２６】
以下、タグ＜ｃａｍｅｒａ＞中に記載してよい各種タグを説明する。タグ＜ｆｏｃａｌ＿ｌｅｎｇｔｈ＞には、撮像装置２１０のレンズの焦点距離（例えば５ｍｍ）が記載される。タグ＜ｆｏｒｍａｔ＞には、撮像装置２１０のＣＣＤやＣＭＯＳなどの撮像素子のサイズ（例えば、５．０ｍｍ×４．０ｍｍ）が記載される。タグ＜ｒｅｓｏｌｕｔｉｏｎ＞には撮像装置２１０の撮像素子の解像度（例えば、１０２４×７６８）が記載される。タグ＜ｆ＿ｎｕｍｂｅｒ＞には、撮像装置２１０のレンズのＦ値（例えばＦ１．４）が記載される。
タグ＜ｌｉｎｋ＞には、撮像装置２１０が取り付けられているロボット２０４の構成要素が記載されている。図７の例においては、取り付けられている構成として、ロボット２０４のリンク「ｌ６」であることが記載されている。タグ＜ｘｙｚ＞には、撮像装置２１０が取り付けられているロボット２０４の構成要素から当該撮像装置２１０までの相対位置が記載される。図７の例においては、撮像装置２１０が取り付けられているリンク「ｌ６」の座標系上における、当該撮像装置２１０までの相対位置（例えば、Ｘ座標、Ｙ座標、Ｚ座標が、「０」、「０」、「０．３」）が記載される。
同様に、タグ＜ｒｐｙ＞には、リンク「ｌ６」の座標系上における、撮像装置２１０の相対姿勢（例えば、Ｘ座標、Ｙ座標、Ｚ座標における姿勢（向き）が「０」、「０」、「０」）が記載される。
【００２７】
次に、図８に基づき、作業条件保持部１０３が保持する、ロボット２０４の周囲にある障害物に関する情報を説明する。この情報も、ＸＭＬ形式の電子ファイルに記載することによって保持されてよい。
図８は、障害物の情報が記載されたＸＭＬ形式の電子ファイルの内容を示す。図８の例においては、障害物はタグ＜ｏｂｓｔａｃｌｅ＞に１つの障害物が記載される。障害物の名前はタグ＜ｏｂｓｔａｃｌｅ＞中に記載されるタグ＜ｎａｍｅ＞に記載する。
以下、タグ＜ｏｂｓｔａｃｌｅ＞中に記載される各種タグについて説明する。障害物の形状の種類を、タグ＜ｔｙｐｅ＞に記載する。図８の例では障害物の形状の種類は箱型であり、タグ＜ｔｙｐｅ＞に「ｂｏｘ」と記載される。
【００２８】
また、タグ＜ｓｉｚｅ＞には、当該箱型の障害物の３辺の大きさを記載する。図８の例では、「０．８」「０．８」「０．４」が記載されている。また、タグ＜ｘｙｚ＞には、座標系２０３上の当該箱型の障害物の位置を記載する。図８の例では、Ｘ座標、Ｙ座標、Ｚ座標のそれぞれが、「０．３」「０．２」「０．１」と記載されている。また、タグ＜ｒｐｙ＞には、座標系２０３上における当該箱型の障害物の姿勢が記載される。図８の例では、当該障害物の姿勢が、Ｘ座標、Ｙ座標、Ｚ座標について、「０」「０」「０」と記載されている。
以上、作業条件保持部１０３は、上記の情報（作業条件情報）を保持するが、用途や条件に応じて他の様々な作業条件に関する情報（温度、湿度、気圧、照度、風速等）をさらに保持してよい。なお、本実施形態１では、各種の情報をＸＭＬ形式の電子ファイルで保持する例を説明するが、他のファイル形式で保持してもよい。以下、後述する実施形態２、３でも同様である。
【００２９】
図１に戻り、作業管理部１０４は、作業情報保持部１０２に保持されている作業情報を参照し、作業の依存関係から、優先する作業を決定し、作業の情報を動作計算部１０５に出力する。さらに、作業管理部１０４は、作業条件保持部１０３からロボット２０４の身体に関する情報と、撮像装置２１０の情報と、ロボット２０４の周囲にある障害物の情報と、を読み出し、動作計算部１０５に出力する。
図１の例において、動作計算部１０５は、作業管理部１０４から入力された作業情報と、ロボット２０４の身体に関する情報と、撮像装置２１０の情報と、ロボット２０４の周囲にある障害物の情報を取得する。動作計算部１０５は、これらの情報に基づいて、ロボット２０４の動作を計算し、動作情報保持部１０６に出力する。
また、第１撮像情報処理部１１０は、撮像装置２１０が撮像した組み付け先の位置姿勢の情報を、動作計算部１０５に対して出力する。動作計算部１０５は、第１撮像情報処理部１１０から、組み付け先の位置姿勢の情報が供給された場合は、この組み付け先の位置姿勢情報も用いてロボット２０４の動作を計算する。
【００３０】
（ロボット２０４の動作計算）
ロボット２０４の動作の計算方法について、図９〜図１２を用いて詳細に述べる。
図９は、ロボット２０４のジョイントの角度の範囲を模式的に縦軸及び横軸にとって定義した角度空間９０１、及び、角度空間９０１と関連付けられたロボット２０４の作業中の姿勢、を示す。
本実施形態１においては、ロボット２０４は６軸のロボットである為、ジョイントの角度の空間（角度空間９０１）は、本来６次元の空間になるが、ここでは説明をわかりやすくする為に２次元の空間として説明する。
図９（ａ）は、作業の開始時におけるロボット２０４の姿勢９０８を示す。ロボット２０４のジョイント９０２の角度が、角度空間９０１の縦軸に割り当てて構成されている。この際、当該ジョイント９０２の名称は、「ｊ３」である。また、同様にロボット２０４のジョイント９０３の角度が、角度空間９０１の横軸に割り当てて構成されている。この際、当該ジョイント９０３の名称は、「ｊ５」である。
【００３１】
図９（ａ）の例に示すように、ロボット２０４の作業開始時の姿勢９０８を、角度空間９０１上で表したものが点９０４（ｓｔａｒｔ点）で示される。図９（ｃ）の例に示すように、ロボット２０４の作業終了時の姿勢９１０を、角度空間９０１上で表したものが点９０５（ｅｎｄ点）で示される。
同様に、図９（ｂ）に示すように、ロボット２０４の撮像装置２１０の撮像時の姿勢９０９を、角度空間９０１上で表したものが撮像角度姿勢９０６（ｖｉｓｉｏｎ点）で示される。
また、図９の例においては、ジョイントの角度空間９０１上で、障害物９１１が示されている。この障害物９１１は、ロボット２０４が障害物又はロボット２０４自身と干渉するようなジョイントの角度範囲（姿勢）で表されている。
図９に示すように、ロボット２０４の動作を計算するということは、障害物９１１を避け撮像装置２１０が撮像する時の姿勢９０６（ｖｉｓｉｏｎ点）を経由し作業開始時の姿勢９０４（ｓｔａｒｔ点）から作業終了時の姿勢９０５（ｅｎｄ点）まで到達する動作経路９０７を導き出すことである。
【００３２】
次に、動作計算部１０５が動作経路９０７を導出する方法について、図１０、１１を用いて説明する。動作経路９０７を導く方法は、ロボット２０４の経路探索の手法として、例えばＲＲＴ（Ｒａｐｉｄｌｙ  ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅｓ）を用いて実行されてよいが、他の探索手法を用いて実行してもよい。
ＲＲＴを用いることで、複雑な経路であっても短時間で経路を探索することがきる。図１０は、図９の例で示した角度空間９０１を用いて、ＲＲＴのアルゴリズムを説明する図である。図１０の例において、ＲＲＴを実行するためには、まず図９の例で示したジョイントの角度の空間９０１中で、ランダムに点１００１を定める。
【００３３】
次に、点１００１の最も近傍である点１００３を、これまで作成した経路（木構造）上から選択する。図１０の例においては、ある程度探索が進み、始点である作業開始時の姿勢９０４から解（の候補）である木構造が構成されている様子を示す。ここで、予め設定された長さで、点１００３から、ランダムに定めた点１００１の方向に線を延ばし、延ばした線を線１００４とする。図１０の例に示すように、この延ばした線１００４の先の頂点が点１００２である。
新たに作成した線１００４及びその頂点である点１００２が、いずれかの障害物９１１と干渉していない場合は、線１００４及び点１００２を作業開始時の姿勢９０４から伸びる木構造データの一部に加える。他方、新たに作成した線１００４及びその頂点である点１００２が、いずれかの障害物９１１と干渉している場合は、木構造データは変化させない。再び、ランダムに点を定める処理からここまでの処理を繰り返す。
【００３４】
このようにして、作業開始時の姿勢９０４から、求める経路（の候補）である木構造を順次延ばしていく。
以上のような動作を、動作計算部１０５は、撮像装置２１０で撮像する時の撮像時の姿勢９０６、作業開始時の姿勢９０４、作業終了時の姿勢９０５、のそれぞれの点から繰り返し行う。動作計算部１０５は、作成している木構造データが、他のいずれかの姿勢に到達した場合、処理を終了する。
図１１は、このような処理を繰り返した結果、ぞれぞれの撮像時の姿勢９０６、作業開始時の姿勢９０４、作業終了時の姿勢９０５から延ばしていった木構造データが、他の角度姿勢の点に到達した様子を示す。図１１の例に示すように、撮像装置を用いる撮像時の姿勢９０６、作業開始時の姿勢９０４、作業終了時の姿勢９０５から延びた線が相互に連結することによって、動作計算部１０５は動作経路９０７を求めることができる。
【００３５】
図１に戻り、動作情報保持部１０６は、動作計算部１０５が計算したロボット２０４の動作情報（動作経路９０７）を保持しておく。ロボット２０４が実際に動作する前に動作の情報を予め計算し保持しておくことによって、動作の情報の計算待ちによってロボット２０４の動作を停止させる可能性を低減することができる。
ここで、動作情報保持部１０６は、動作計算部１０５が計算したロボット２０４の動作情報（動作経路９０７）が撮像装置２１０を用いる情報を含む場合は、ロボット２０４の動作の情報を第１動作実行部１０７に出力する。他方、動作計算部１０５が計算したロボット２０４の動作の情報（動作経路９０７）が撮像装置２１０を用いる情報を含まない場合は、ロボット２０４の動作の情報を第２動作実行部１０８に出力する。
第１動作実行部１０７は、動作情報保持部１０６から供給された撮像装置２１０を用いる動作を含むロボット２０４の動作情報を、ロボット制御装置２０２及び撮像制御装置２０１に出力する。
【００３６】
第１撮像情報入力部１０９は、撮像装置２１０が撮像した画像を入力する。図１、図２の例に示すように、この撮像装置２１０が撮像した画像は、撮像制御装置２０１を介して、第１撮像情報入力部１０９に供給される。第１撮像情報入力部１０９は、供給された画像を、第１撮像画像処理部１１０に出力する。
第１撮像情報処理部１１０は、撮像装置２１０が撮像した画像を第１撮像情報入力部から入力し、この撮像装置２１０が撮像した画像を処理する。図２の例に示すように、本実施形態１に係る第１撮像情報処理部１１０は、例えば、組み付け先２０８が撮像された画像から、組み付け先２０８の位置姿勢を求める処理を行う。第１撮像情報処理部１１０は、その処理結果を、動作計算部１０５に対して出力する。
第２動作実行部１０８は、動作情報保持部１０６から入力されたロボット２０４の動作情報を、ロボット制御装置２０２に出力する。
【００３７】
図１２は、本実施形態１に係るロボット動作計算装置１０１の処理を示すフローチャートであり、図１２のフローチャートを用いて、本実施形態１に係るロボット動作計算装置１０１の処理手順について説明する。
Ｓ１２０１において、作業管理部１０４は、作業情報保持部１０２の作業情報を参照し、それぞれの作業の依存関係から、優先する作業を決定し、実行すべき作業の情報を動作計算部１０５に出力する。また、作業管理部１０４は、作業条件保持部１０３からロボット２０４自身の身体に関する情報と、撮像装置２１０の情報と、ロボット２０４の周囲にある障害物の情報と、を含む作業条件（作業条件情報）を読み出し、動作計算部１０５に出力する。
Ｓ１２０２において、動作計算部１０５は、作業管理部１０４から入力された作業情報と作業条件とに基づいてロボット２０４の動作を計算する。また、第１撮像情報処理部１１０が、撮像画像に基づき算出された組み付け先の位置姿勢の情報を保持している場合には、その情報も用いてロボット２０４の動作を計算する。動作計算部１０５は、このようにして計算して求めたロボット２０４の動作の情報を、動作情報保持部１０６に出力する。
【００３８】
Ｓ１２０３において、動作情報保持部１０６は、動作計算部１０５から入力されたロボット２０４の動作の情報に撮像装置２１０を用いる情報があるか否か判断し、当該情報がある場合は、Ｓ１２０４に移行する。他方、動作情報保持部１０６は、動作計算部１０５から入力されたロボット２０４の動作の情報に撮像装置２１０を用いる情報がないと判断した場合は、Ｓ１２０６に移行する。
Ｓ１２０４において、動作情報保持部１０６は、ロボット２０４の動作情報を第１動作実行部１０７に出力する。第１動作実行部１０７は、動作情報保持部１０６から入力されたロボット２０４の動作情報を、ロボット制御装置２０２及び撮像制御装置２０１に出力する。これにより、ロボット制御装置２０２は、当該動作情報に基づきロボット２０４を制御し動作させる。撮像制御装置２０１は、撮像装置２１０を制御し、撮像等の動作を行わせる。
【００３９】
Ｓ１２０５において、第１撮像情報入力部１０９が、撮像装置２１０が撮像した画像を入力する。第１撮像情報入力部１０９は、入力した画像を第１撮像情報処理部１１０に供給する。第１撮像情報処理部１１０は、撮像装置２１０が撮像した画像を処理する。具体的には、第１撮像情報処理部１１０は、撮像画像に基づき算出された（撮像画像から得られた）組み付け先２０８等の位置姿勢等を算出し、当該該処理結果を、動作計算部１０５に出力する。
Ｓ１２０６において、動作情報保持部１０６は、ロボット２０４の動作情報を第２動作実行部１０８に出力する。第２動作実行部１０８は、動作情報保持部１０６から供給されてきたロボット２０４の動作情報を、ロボット制御装置２０２に出力する。これにより、ロボット制御装置２０２は、当該動作情報に基づきロボット２０４を制御し、動作させる。ロボット２０４が所望の動作を実行することによって、所望の作業が行われる。
Ｓ１２０７において、作業管理部１０４は、作業情報保持部１０２の作業情報を参照し、作業が完了しているかを判断する。その結果、作業が完了していると判断すれば、処理を終了させ、作業が未完了であると判断すれば、ステップＳ１２０１に戻る。
【００４０】
以上述べた構成及び動作によれば、本実施形態１に係るロボット動作計算装置１０１は、第１の部品を組み付ける作業と、第２の部品を組み付ける為の組み付け先を撮像する作業をロボットの１つの動作で行えるように動作を計算する。詳細に言えば、第１の部品である部品２０６の組み付け動作中に、第２の部品である部品２０９の組み付け先２０８の撮像を行い、組み付け先２０８の位置姿勢を算出する。そして、第１の部品（例えば、部品２０６）組み付け時に撮像された第２の部品（例えば、部品２０９）の組み付け先の画像を処理し、第２の部品の組み付け先の情報を抽出する。
その結果、抽出した第２の部品の組み付け先（例えば、組み付け先２０８）の情報から、第２の部品を組み付ける動作を生成するので、ロボット２０４の作業時間を短縮し、生産性を向上するという効果を奏する。
【００４１】
実施形態２
実施形態２に係るロボット動作計算装置は、実施形態１で説明したロボット動作計算装置の処理に加えて、ロボットの動作計算時に撮像装置を用いる作業を挿入する動作と、撮像装置を用いる作業を挿入しない動作の両方を計算する。
そして、計算した両方の動作を比較し、作業時間が短くなる動作を選択する。このように構成することで、ロボットの作業時間を短縮し、生産性をより向上させるようにしたものである。本実施形態２は、実施形態１で説明した、図１のロボット動作計算装置１０１のブロック構成図において、動作計算部１０５以外の構成は同一であり、説明を省略する。以下、本実施形態２における動作計算部１０５について、その動作を説明する。
【００４２】
図１３は、実施形態１における図９に相当する図であり、動作計算部１０５のロボット２０４の動作の計算方法を示す。以下、この図１３を用いて、本実施形態２に係る動作計算部１０５のロボット２０４の動作の計算方法について説明する。
図１３の例において、ロボット２０４のジョイントの角度の空間１３０１が示されており、この角度の空間は、実施形態１の図９に示す角度の空間９０１と同様の空間である。図１３に示すように、当該ジョイントの角度の空間１３０１には、ロボット２０４の部品組み付け作業における作業開始時の姿勢１３０２（ｓｔａｒｔ点）、作業終了時の姿勢１３０３（ｅｎｄ点）が存在する。
【００４３】
また、ロボット２０４の撮像装置２１０を用いて撮像する時の撮像時の姿勢１３０４も（ｖｉｓｉｏｎ点）存在する。図１３において、ジョイントの角度の空間１３０１上に障害物１３０５が存在する。この障害物１３０５は、ロボット２０４が障害物又はロボット２０４自身と干渉してしまう姿勢（のジョイントの角度範囲）とする。
図１３の例に示すように、実施形態２の動作計算部１０５は、実施形態１と同様、障害物１３０５を避け、撮像装置２１０を用いる撮像時の姿勢１３０４を経由し、作業開始時の姿勢１３０２から作業終了時の姿勢１３０３まで到達する動作経路１３０７を計算する。さらに、実施形態２における動作計算部１０５は、障害物１３０５を避け、撮像装置２１０を用いる撮像時の姿勢１３０４を経由せずに、作業開始時の姿勢１３０２から作業終了時の姿勢１３０３まで到達する動作経路１３０６も計算する。
【００４４】
次に、動作計算部１０５は、動作経路１３０６と動作経路１３０７の長さを比較し、より短い方の動作経路を選択し、動作情報保持部１０６に選択した動作経路を出力する。本実施形態２では、例えば動作経路１３０６を出力する。
ここで、複数の作業がある場合は、動作計算部１０５は、複数の作業全てを完了する時点までの動作時間がより短くなるような動作経路を選択して、動作情報保持部１０６に選択した動作経路を出力してよい。具体的には、動作計算部１０５が、複動作経路１３０６を選択した場合と、動作経路１３０７を選択した場合と、のそれぞれの場合について、その後の作業の動作経路も計算し、作業全てが完了する時間の総計がより短くなるような動作経路を選択すればよい。
【００４５】
つまり、作業単体では動作経路１３０６のほうが動作経路１３０７よりも短いが、その後の作業の動作経路を計算した場合に、動作経路１３０７を選択した方が、作業全てが完了する時間の総計が短くなるような複数の作業が存在する可能性がある。そのような場合は、動作計算部１０５は、動作経路１３０７を選択し、動作情報保持部１０６に出力すればよい。
以上説明したように、本実施形態２に係る構成によれば、ロボット２０４の動作計算時に、撮像装置２１０を用いる作業を挿入した場合の動作と、撮像装置２１０を用いる作業を挿入しない場合の動作の両方について動作の情報（動作経路）を計算する。そして、計算した動作を比較し、作業時間がより短くなる方の動作の情報（動作経路）を選択する。このように構成することで、ロボットの作業時間をより短縮し、生産性が向上するという効果を奏する。
【００４６】
実施形態３
本実施形態３に係るロボット動作計算装置は、複数台、例えば２台のロボットを接続して、それらを制御する構成を備える。実施形態３においては、第１のロボットには解像度の低い撮像装置が、第２のロボットには解像度の高い撮像装置が、それぞれ据え付けられている例を説明する。
図１４に示すように、実施形態３に係るロボット動作計算装置１４１０は、第１のロボットに対して、第１の部品を組み付ける作業と、第２の部品を組み付ける為の組み付け先を撮像する作業と、を第１のロボットの１つの動作で行えるように動作を計算する。
実施形態３において、ロボット動作計算装置１４１０は、例えば、第１の部品の組み付け時に、第１のロボットの解像度の低い撮像装置で撮像された第２の部品の組み付け先の画像を処理し、第２の部品の組み付け先の概略の位置姿勢を抽出する。
【００４７】
そして、ロボット動作計算装置１４１０は、抽出した第２の部品の組み付け先の概略の位置姿勢に対して、さらに第２の部品の組み付け先を撮像する作業と第２の部品を組み付ける動作を１つの動作で行えるように動作の情報（動作経路）を計算する。この動作経路の計算は、第２のロボット向けの動作経路である。ロボット動作計算装置１４１０は、上で述べた第２のロボット向けの動作経路を、第２のロボットに対して適用する。その結果、本実施形態３に係るロボット動作計算装置は、第２のロボットに対して、第２のロボットの解像度の高い撮像装置で、第２の部品の組み付け先を撮像させる。
次に、本実施形態３に係るロボット動作計算装置１４１０は、この撮像で得られた画像を処理することによって、第２の部品の組み付け先の詳細な位置姿勢を抽出する。ロボット動作計算装置１４１０は、このようにして得られた、その第２の部品の組み付け先の詳細な位置姿勢に基づいて、第２のロボットの第２の部品を組み付ける動作（動作経路）を補正する。そして、補正後の動作経路を用いて第２のロボットを制御することで、第２のロボットはより高精度で効率的に第２の部品を組み付けることができる。
【００４８】
（動作例）
図１４は、本実施形態３に係るロボット動作計算装置１４１０を用いてロボットを制御した場合の動作例を示す。図１４の動作例では、実施形態１で説明した動作例の構成に加えて、２台目のロボット１４０３が追加されている。図１４の例に示すように、ロボット１４０３は、実施形態１で既に説明したロボット２０４とほぼ同様の構成を有するロボットである。ロボット１４０３にはハンド１４０５及び撮像装置１４０４が据え付けられている。
撮像装置１４０４は、この撮像装置１４０４を制御する撮像制御装置１４０１に接続されている。同様に、ロボット１４０３は、ロボット１４０３を制御するロボット制御装置１４０２に接続されている。撮像制御装置１４０１及びロボット制御装置１４０２は、それぞれロボット動作計算装置１４１０に接続されている。
【００４９】
ロボット動作計算装置１４１０は、計算したロボット動作情報に基づき、ロボット１４０３の動作をロボット制御装置１４０２に送信する。これによって、ロボット動作計算装置１４１０は、ロボット制御装置１４０２を介して、ロボット１４０３を動作させることができる。
同様に、ロボット動作計算装置１４１０は、ロボット動作計算装置１４１０が計算したロボット動作情報に基づき、撮像装置１４０４の動作を撮像制御装置１４０１に送信する。これによって、ロボット動作計算装置１４１０は、撮像制御装置１４０１を介して、ロボット１４０３に備え付けられた撮像装置１４０４に撮像等の動作を行わせることができる。
【００５０】
本実施形態３において、ロボット１４０３は、部品２０９が例えば精密部品であって、組み付け先２０８に対して精密に組み込むという作業を行うものとする。また、ロボット１４０３に備えられている撮像装置１４０４は、撮像装置２１０よりも解像度の高い撮像装置であるものとして説明を行う。
具体的には、例えば、撮像装置２１０の解像度は１０２４×７６８であり、撮像装置１４０４の解像度は２０４８×１５３６であるとする。
ロボット２０４は、ロボット動作計算装置１４１０で計算されたロボットの動作の情報に基づいて、所定の動作を実行する。ここでは、図１４に示すように、ロボット２０４は、撮像装置２１０によって予め計測された組み付け先２０７に対して現在ハンド２０５で把持している部品２０６を組み付ける動作を行う。
このとき、ロボット２０４が、ロボット２０４のハンド２０５が把持している部品２０６を組み付け先２０７に移動させる間に、部品２０９の組み付け先である組み付け先２０８を撮像装置２１０によって撮像する。そして、ロボット動作計算装置１４１０は、撮像装置２０１が撮像した画像を入力して画像処理を行い、組み付け先２０８の概略の位置姿勢を算出する。
ロボット２０４が、部品２０６を組み付け先２０７に組み付け中に、ロボット１４０３は、そのハンド１４０５で部品２０９を把持し、概略の位置姿勢が求められた組み付け先２０８に向けて当該部品２０９を移動させる動作を実行する。
【００５１】
ここで、ロボット１４０３は、部品２０９の組み付け先２０８に向けて、部品２０９を移動させる動作中に、撮像装置１４０４を用いて組み付け先２０８を撮像する。このようにして撮像装置１４０４が撮像した画像は、撮像制御装置１４０１を経由してロボット動作計算装置１４０１に送出される。ロボット動作計算装置１４１０は、当該画像を処理することによって、部品２０９の組み付け先２０８の詳細な位置姿勢を算出する。
したがって、ロボット動作計算装置１４１０は、算出された詳細な位置姿勢に基づき、より正確なロボットの動作の情報（動作経路）を算出し直す（概略の位置姿勢を補正する）ことができる。ロボット動作計算装置１４１０は、この補正されたロボットの動作の情報に基づき、ロボット１４０３の動作を、ロボット制御装置１４０２に出力する。
このようにして、ロボット１４０３は、部品２０９の組み付け先２０８の概略の位置姿勢に基づいて決定された動作を、より詳細な位置姿勢に基づいた動作に補正することができる。その結果、ロボット１４０３は、より精密に部品２０９を組み付け先２０８に組み付けることができる。
【００５２】
このように、ロボット２０４が部品２０６の組み付け動作中に、撮像手段２１０が、部品２０９の組み付け先２０８の撮像を行い、部品２０９の組み付け先２０８の概略の位置姿勢を算出しておく。従って、ロボット動作計算装置１４１０は、組み付け先２０８の概略の位置姿勢に基づき、ロボット１４０３を、部品２０９の組み付け先２０８に向けて移動させる動作を開始させることができる。
そして、ロボット動作計算装置１４１０が、部品２０９の組み付け先２０８の詳細な位置姿勢を算出することができた後は、ロボット動作計算装置１４１０は、その詳細な位置姿勢に基づき、算出したロボットの動作の情報をより精密に補正することができる。
したがって、ロボット動作計算装置１４１０は、ロボット１４０３に、部品２０９を組み付け先２０８により精密に取り付けさせることができる。
このように、実施形態３で説明した動作例によれば、部品２０９を組み付けるまでのロボットの１４０３の動作時間を短縮することができる。つまり、ロボットの動作効率がより向上し、生産性が向上する。
【００５３】
図１５は、実施形態３に係るロボット動作計算装置１４１０の構成を示す。図１５を用いて、ロボット動作計算装置１４１０の構成について実施形態１に係るロボット動作計算装置１０１と異なる部分を中心に説明を行う。実施形態３のロボット動作計算装置１４１０は、図１記載の実施形態１のロボット動作計算装置１０１に対して、第２撮像情報入力部１５０１と、第２撮像情報処理部１５０２が追加されている。
実施形態３に係るロボット動作計算装置１４１０の作業情報保持部（保持手段）１０２は、実施形態１の撮像の作業の属性に対して、作業の要求解像度の項目が追加されている。図１６は、本実施形態３に係るロボット動作計算装置１４１０の作業情報保持部１０２が保持する作業情報の記述の一例を示す。
【００５４】
実施形態３においても、実施形態１と同様に、作業保持部１０２は、作業情報をＸＭＬ形式の電子ファイルで保持している。図１６の例に示すように、図４の例と比べて、要求解像度の項目が追加記載されている。具体的には、図６の例においては、タグ＜ｒｅｓｏｌｕｔｉｏｎ＞の部分に要求解像度の内容が記載される。
図１６では、３つの作業ｔａｓｋ０、ｔａｓｋ２、ｔａｓｋ４が記載されており、ｔａｓｋ０とｔａｓｋ２においては、要求解像度として、「１０２４×７６８」が記載されている。また、図６の例においては、ｔａｓｋ４において、要求解像度として、「２０４８×１５３６」が記載されている。
作業条件保持部（保持手段）１０３は、実施形態１の説明と同様に、ロボット２０４及びロボット１４０３自身の身体に関する情報（作業条件情報）と、撮像装置２１０及び撮像装置１４０４の情報（作業条件情報）と、を保持している。また、作業条件保持部１０３は、実施形態１の説明と同様に、ロボット２０４及びロボット１４０３及びロボットの周囲にある障害物の情報を保持している。
【００５５】
実施形態３においては、実施形態１と異なり、ロボットと撮像装置が複数存在するため、ロボット２０４とロボット１４０３の身体に関する情報と、撮像装置２１０と撮像装置１４０４の情報とを、それぞれ保持している。
作業管理部１０４は、作業情報保持部１０２の作業情報を参照し、作業の依存関係から、優先して実行する作業を決定し、決定した作業の情報を動作計算部１０５に出力する。加えて、本実施形態３においては、作業の要求解像度に応じて、その作業をロボット２０４とロボット１４０３のどちらで行うべきかを判断し、この判断した結果である情報を、動作計算部１０５に出力する。
さらに、作業管理部１０４は、作業条件保持部１０３からロボット２０４自身の身体に関する情報と、撮像装置２１０の情報と、ロボット２０４の周囲にある障害物の情報を読み出し、動作計算部１０５に出力する。作業管理部１０４は、作業条件保持部１０３からロボット１４０３自身の身体に関する情報と、撮像装置１４０４の情報と、ロボット１４０３の周囲にある障害物の情報も読み出して、動作計算部１０５に出力する。動作計算部１０５の構成や動作は実施形態１で説明したのと同様である。
【００５６】
実施形態３においては、動作情報保持部１０６は、動作計算部１０５で計算されたロボット２０４、ロボット１４０３の動作の情報（動作経路）を保持しておく。動作情報保持部１０６は、その動作情報がロボット２０４の動作の情報であれば、第１動作実行部１０７に対して出力し、その動作情報がロボット１４０３の動作の情報であれば、第２動作実行部１０８に対して出力する。
第１動作実行部１０７は、ロボット２０４の動作の情報を、ロボット制御装置２０２及び撮像制御装置２０１に対して出力する。また、第１撮像情報入力部１０９は、撮像装置２１０が撮像した画像を入力する。第１撮像情報入力部１０９は、入力した画像を、第１撮像画像処理部１１０に出力する。
第１撮像情報処理部１１０は、第１撮像情報入力部から供給された画像を処理する。実施形態３に係る第１撮像情報処理部１１０は、例えば、組み付け先２０８が撮像された画像から、組み付け先２０８の概略の位置姿勢を求める処理を行う。そして第、１撮像情報処理部１１０は、処理結果を動作計算部１０５に対して出力する。
【００５７】
第２動作実行部１０８は、ロボット１４０３の動作情報を、ロボット制御装置１４０２及び撮像制御装置２０１に対して出力する。第２撮像情報入力部１３０１は、撮像装置１４０４が撮像した画像を入力する。第２撮像情報入力部１３０１は、入力した画像を、第２撮像画像処理部１３０２に出力する。
第２撮像情報処理部１３０２は、第２撮像情報入力部１３０１から供給された画像を処理する。実施形態３に係る第２撮像情報処理部１３０２は、例えば、組み付け先２０８が撮像された画像から、組み付け先２０８の詳細な位置姿勢を求める処理を行う。そして第２撮像情報処理部１３０２は、処理結果を動作計算部１０５に対して出力する。
【００５８】
次に、図１２に示したフローチャートを用いて、実施形態３に係るロボット動作計算装置１４１０の処理の流れについて説明する。
まず、Ｓ１２０１において、作業管理部１０４は、作業情報保持部１０２の作業情報を参照し、作業の依存関係から、優先する作業を決定する。また、作業管理部１０４は、作業条件保持部１０３からロボット２０４、ロボット１４０３の身体に関する情報と、撮像装置２１０、１４０４の情報と、ロボット２０４、１４０３の周囲にある障害物の情報と、を読み出す。そして、作業管理部１０４は、読み出した情報を動作計算部１０５に対して出力する。
さらに、作業管理部１０４は、これら読み出した情報に基づき、上記決定した作業を、ロボット２０４と、ロボット１４０３どちらのロボットで行うか決定する。そして、作業管理部１０４は、作業情報保持部から読み出した作業の情報と、決定した作業を行わせるロボットとを、動作計算部１０５に出力する。さらに、作業管理部１０４は、作業条件保持部１０３から、ロボット２０４、１４０３の身体に関する情報と、撮像装置２１０、１４０４の情報と、ロボット２０４、１４０３の周囲にある障害物の情報を動作計算部１０５に出力する。
【００５９】
Ｓ１２０２において、動作計算部１０５は、作業管理部１０４から供給された作業情報と、ロボット２０４、１４０３自身の身体に関する情報と、撮像装置２１０、１４０４の情報と、ロボット２０４、１４０３の周囲にある障害物の情報とを入力する。そして、動作計算部１０５は、入力されたこれらの情報に基づいてロボット２０４又はロボット１４０４の動作を計算し、計算して求めた動作の情報を動作情報保持部１０６に出力する。
また、第１撮像情報処理部１１０が撮像画像から得られた所定の部品の組み付け先の位置姿勢の情報を保持している場合には、動作計算部１０５は、その情報も用いてロボット２０４又はロボット１４０３の動作を計算し、動作情報保持部１０６に出力する。  なお、第２撮像情報処理部１５０２が所定の部品の組み付け先の位置姿勢の情報を保持している場合も、同様に、動作計算部１０５は、その情報も用いてロボット２０４又はロボット１４０３の動作を計算して、その計算結果を動作情報保持部１０６に出力する。
【００６０】
Ｓ１２０３において、動作情報保持部１０６は、動作計算部１０５から入力されたロボットの動作情報に撮像装置を用いる情報があるか否か判断する。判断の結果、動作計算部１０５から入力されたロボットの動作の情報に撮像装置を用いる情報がある場合であれば、Ｓ１２０４に処理が進む。一方、動作計算部１０５から入力されたロボットの動作の情報に撮像装置を用いる情報がない場合、Ｓ１２０６に処理が進む。
Ｓ１２０４において、第１動作実行部１０７又は第２動作実行部１０８は、動作情報保持部１０６から入力されたロボット２０４又はロボット１４０３の動作情報を、ロボット制御装置２０２又はロボット制御装置１４０２に出力する。
加えて、第１動作実行部１０７は、動作情報保持部１０６から入力されたロボット２０４の動作情報を撮像制御装置２０１にも出力する。または、第２動作実行部１０８は、動作情報保持部１０６から入力されロボット１４０３の動作情報を撮像制御装置１４０１に出力する。その結果、ロボット２０４又はロボット１４０３が動作し作業を行う。同様に、撮像装置２１０又は撮像装置１４０４が撮像等の作業を行う。
【００６１】
Ｓ１２０５において、第１撮像情報入力部１０９又は第２撮像情報入力部１４０１が上記Ｓ１２０４において撮像した画像を、撮像装置２１０又は撮像装置１４０４から入力する。ロボット動作計算装置１４１０は、第１撮像情報入力部１０９又は第２撮像情報入力部１４０１から当該画像を入力する。
ここで、第１撮像情報入力部１０９が画像を入力した場合は、第１撮像情報処理部１１０が撮像した画像を処理する。一方、第２撮像情報入力部１５０１が画像を入力した場合は、第２撮像情報処理部１５０２が撮像した画像を処理する。いずれの画像処理の処理結果も、動作計算部１０５に出力される。
Ｓ１２０６において、第１動作実行部１０７又は第２動作実行部１０８は、動作情報保持部１０６から入力されたロボット２０４又はロボット１４０３の動作情報を、ロボット制御装置２０２又はロボット制御装置１４０２に出力する。この結果、ロボット２０４又はロボット１４０３が動作し、所望の作業を実行する。
Ｓ１２０７において、作業管理部１０４は、作業情報保持部１０２の作業情報を参照し、作業が完了しているか判断する。作業が完了していると判断されれば、処理を終了する。作業が未完了であると判断されれば、ステップＳ１２０１に戻る。
【００６２】
本実施形態３において以上説明した構成によれば、ロボット動作計算装置１４１０を、ロボット動作計算装置１４１０に複数台、例えば２台のロボットを接続した構成とする。
本実施形態３においては、まず第１のロボットには、解像度の低い撮像装置、第２のロボットには解像度の高い撮像装置が備えられている例を説明した。そして、第１のロボットに対して、第１の部品を組み付ける作業と、第２の部品を組み付ける為の組み付け先を撮像する作業をロボットの１つの動作で行えるように動作を計算する。そして、第１の部品組み付け時に第１のロボットの解像度の低い撮像装置で撮像された第２の部品の組み付け先の画像を処理し、第２の部品の組み付け先の概略の位置姿勢を抽出している。
【００６３】
このようにして抽出した第２の部品の組み付け先の概略の位置姿勢に対して、さらに第２の部品の組み付け先を撮像する作業と第２の部品を組み付ける動作を１つの動作で行うことができるように動作を計算する。そして、第２のロボットは、第２のロボットの解像度の高い撮像装置で撮像された第２の第２の部品の組み付け先の画像を処理し、第２の部品の組み付け先の詳細な位置姿勢を抽出することができる。
この第２の部品の組み付け先の詳細な位置姿勢に基づいて、第２のロボットが第２の部品を組み付ける動作を補正し、第２の部品を組み付ける。このような構成によって、本実施形態３によれば、ロボットの作業時間をより短縮し、生産性を向上するという効果を奏する。
【００６４】
なお、本実施形態３においては、説明をわかりやすくするために、２台の撮像装置の間で解像度が異なる例を説明したが、解像度が異ならない場合でも適用することができる。その場合でも、２台のロボットを協調して動作（他方のロボットの組み付け先を一方のロボットが先行して撮影する等）させることによって、ロボット群を効率的に動作させることができる。
以上説明したように、上記各実施形態では、ロボット動作中の撮像装置による撮像を考慮したロボットの動作を算出する。特にロボット動作中に撮像した画像に基づいて、ロボットの動作を計算することで、ロボットを用いた作業の生産性を向上させている。撮像以外のロボットの各種動作に関しても、本発明の原理を適用することができ、同様に作業時間の短縮等を図ることができる。
【００６５】
（他の構成例）
また、上記各実施形態は、以下の処理を実行することによっても実現される。即ち、上述した各実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給することによって実現してよい。その場合、当該システム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して処理を実行する。また、そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供してもよい。
図１７は、上記各実施形態の各部を構成することのできるコンピュータ１７２０の構成の例を示す。例えば、図１の例に示すロボット動作計算装置１０１を、コンピュータ１７２０で構成してもよい。また、ロボット動作計算装置１０１の各部を、それぞれコンピュータ（例えばコンピュータ１７２０）で構成してもよい。図１５の例に示すロボット動作計算装置１４１０についても、同様にコンピュータ１７２０で構成してよい。
ＣＰＵ１７２１は、ＲＯＭ１７２２や、ＲＡＭ１７２３、外部メモリ１７２４等に格納されたプログラムを実行することによって、上記各実施形態の各部を実現する。例えば、ロボット動作計算装置１０１の各部の機能を実現する。ＲＯＭ１７２２、ＲＡＭ１７２３、外部メモリ１７２４には、上記各実施形態で説明した各部の機能を実現するプログラムを格納することができる。
【００６６】
また、例えば、図１の例で示した作業情報保持部１０２、作業条件保持部１０３において保持される作業情報や作業条件等の情報が格納されてよい。上記実施形態では、主としてＸＭＬ形式の電子ファイルで各情報が記憶される例を示したが、他の形式でもよい。
また、入力部１７２５は、例えば、撮像装置２１０が撮像した画像を入力する第１撮像画像入力部１０９等として動作することができる。また、表示部１７２６は、操作者に対して、ロボットの制御の結果、処理の結果等を表示することができる。通信Ｉ／Ｆ１７２７は、外部と通信を行うインターフェースであり、インターネット等を通じてロボット２０４等を操作することなどを実現することができる。
外部メモリ１７２４は、ハードディスクや、半導体記憶装置等であり、プログラムや、上記実施形態で説明した各種の情報を格納することができる。コンピュータ１７２０の上記説明した各部はバス１７２８によって相互に接続されている。図１の例で示した撮像制御装置２０１や、ロボット制御装置２０２等を、このバス１７２８に接続するように構成することもできる。
【００６７】
また、上記各実施形態では、アーム型のロボットを中心に説明したが、所定の作業を行うロボットであればどのようなロボットにも応用することができる。また、撮像以外の作業を用いたロボットでも、本発明を応用することができる。また、ロボットの台数にも制限はなく、３台以上のロボットを用いてもよい。また、同種のロボットだけでなく、異種のロボット同士が協調動作するように構成することもできる。
以上、本発明の実施形態について詳細に説明したが、これら実施形態は、本発明を実施するにあたっての具体例を示したに過ぎず、本発明の技術的範囲は、上記実施形態に限定されるものではない。本発明は、その趣旨を逸脱しない範囲において種々の変更が可能であり、それらも本発明の技術的範囲に含まれる。
【符号の説明】
【００６８】
１０１・・・ロボット動作計算装置、１０２・・・作業情報保持部、１０３・・・作業条件保持部、１０４・・・作業管理部、１０５・・・動作計算部、１０６・・・動作情報保持部、１０７・・・第１動作実行部、１０８・・・第２動作実行部、１０９・・・第１撮像情報入力部、１１０・・・第１撮像情報処理部
【図１】
2017030070.tif 000003
【図２】
2017030070.tif 000004
【図３】
2017030070.tif 000005
【図４】
2017030070.tif 000006
【図５】
2017030070.tif 000007
【図６】
2017030070.tif 000008
【図７】
2017030070.tif 000009
【図８】
2017030070.tif 000010
【図９】
2017030070.tif 000011
【図１０】
2017030070.tif 000012
【図１１】
2017030070.tif 000013
【図１２】
2017030070.tif 000014
【図１３】
2017030070.tif 000015
【図１４】
2017030070.tif 000016
【図１５】
2017030070.tif 000017
【図１６】
2017030070.tif 000018
【図１７】
2017030070.tif 000019