以下、本発明の実施の形態のロボットについて、図面を参照しながら説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
図1は、本発明の実施の形態のアーム型ロボットの構成を示す外観図である。本実施の形態のアーム型ロボット(以下、単に「ロボット」という。)10は、ワークWに対して作業を行うロボットである。ロボット10は、設置面に設置されるベース11と、ベースに接続されるアーム部12と、アーム部12のベース11とは反対側の端に設けられたハンド部13と、ハンド部13のアーム部12とは反対側の端に設けられたフィンガ部14とを備えている。アーム部12は、第1アーム12A、及び第2アーム12Bを備えている。また、フィンガ部14は、互いの距離が可変な2つのフィンガ部材14A、14Bを備えている。
2つのフィンガ部材14A、14Bの少なくとも互いに対抗する面には、ワークを把持するための滑り止め部材が貼付されており、または、滑り止め加工がなされている。なお、アーム部12、ハンド部13、及びフィンガ部14は、「作業部」に相当する。
ロボット10は、設置面に垂直な軸周りに回転する第1軸21と、第1アーム12Aを水平軸周りに回転する第2軸22と、第1アーム12Aを軸周りに回転する第3軸23、第1アーム12Aに固定され、第2アーム12Bを水平方向に回転する第4軸24と、第2アーム12Bの軸周りに回転する第5軸25、及び第2アーム12Bに固定され、ハンド部13を水平方向に回転する第6軸26を備える6軸制御のロボットである。
ハンド部13には、光軸がハンド部13からフィンガ部14に向かう方向を向くようにカメラ15が設置されている。カメラ15は、単眼のカメラである。このように、ハンド部13にカメラ15を備えるロボット10は、ハンドアイロボットとも呼ばれる。なお、カメラ15は、第1アーム12A及び第2アーム12Bのいずれかに設けられていてもよいし、ロボット10に対する位置及び姿勢の関係が既知である位置及び姿勢で、ロボット10のアーム部12の動きとは独立して設けられていてもよく、そのようなカメラ15が複数設けられていてもよい。
以下、図2も参照して、本実施の形態のロボット10を更に説明する。図2は、本実施の形態のロボットの構成を示すブロック図である。図2に示すように、アーム部12及びハンド部13には、それぞれの軸を駆動するためのアクチュエータ121、131が設けられている。また、フィンガ部14には、フィンガ部材14A、14Bを駆動するアクチュエータ132が設けられており、フィンガ部材14Aとフィンガ部材14Bとの間の距離を変化させることで、ワーク(作業対象物体)を把持し、その把持を解除する。カメラ15は、カメラ制御部151の制御に従って、静止画像を撮影可能であり、動画像(連続的な静止画像)も撮影可能である。
アーム部12及びハンド部13には、それぞれ、駆動状態(各軸の回転角)を検出するためのアームセンサ122及びハンドセンサ132が設けられている。アームセンサ122及びハンドセンサ132は、アーム部12及びハンド部13にかかるトルクを検出するためのトルクセンサも含む。
ロボット10は、更に制御部16及び記憶部17を備えている。アーム部12、ハンド部13、フィンガ部14、及びカメラ15は、制御部16からの指令に従って動作を行う。すなわち、制御部16は、アクチュエータ121、131、及び142に駆動を指示する信号を送ることで、これらのアクチュエータを動作させて、アーム部12、ハンド部13、及びフィンガ部14を駆動し、カメラ制御部151に撮影及び画像送信を指示する信号を送ることで、カメラ制御部151にカメラ15を制御させて、カメラ15に撮影及び画像送信を行わせる。カメラ15で撮影された画像は、カメラ制御部151を介して制御部16に送られる。アームセンサ122、ハンドセンサ132、フィンガセンサ142の検出値も制御部16に送られる。
制御部16は、コンピュータからなり、所定の制御プログラムに従って、カメラ15からの撮影画像、並びにアームセンサ122、ハンドセンサ132、及びフィンガセンサ142の検出値に基づいて、アーム部12、ハンド部13、フィンガ部14の制御を行う。記憶部17は、以下に説明する動作に必要な情報を記憶している。特に、記憶部17は、以下に説明するワーク教示工程において教示されたワークの情報、及び作業教示工程において教示された作業の内容を記憶している。
以下、ロボット10にワークを教示する工程(ワーク教示工程)、ワークに対する作業を教示する工程(作業教示工程)、ワーク対する作業を実施する工程(作業実施工程)について説明する。本実施の形態では、特定の形状を有するワークを把持して、それを所定の場所に移動する作業を例に説明する。
(ワーク教示工程)
本実施の形態において、ワークの教示とは、作業の対象となるワークの情報として、ワークの立体形状を教示することである。なお、ワークの教示において、ワークの情報として、更にワーク表面のテクスチャや、ワーク表面の色を教示してもよい。
ロボット10にワークを教示させる方法として、種々の既知の方法を採用できる。例えば、教示すべきワークの形状情報を3次元CADデータ等でロボット10に取り込んでよい。この場合、ロボット10は、この3次元CADデータをワークの情報として記憶部17に記憶する。また、ワークに対して立体形状の計測を行って、この計測によって得られた立体形状データをロボット10に取り込んでもよい。この場合、ロボット10は、この立体形状データをワークの情報として記憶部17に記憶する。
本実施の形態のロボット10は、ハンド部13にカメラ15を備えているので、このカメラ15を利用して、以下のようにしてワークの教示を行う。まず、ユーザは、教示すべきワークをロボット10が認識できる位置に置く。ロボット10は、制御部16の制御によってアーム部12、ハンド部13、及びカメラ15を駆動して、カメラ15にこのワークを複数の方向からそれぞれ撮影させる。
制御部16は、撮影画像からワークを認識して、そのワークの画像(DB画像)をそのときのアーム部12の姿勢とともに記憶部17に記憶する。なお、制御部16は、認識されたワークの画像そのものを記憶してもよいが、認識されたワークの局所特徴量をDB画像として記憶してもよい。以上により、ロボット10では、当該ワークについて、どの方向から撮影したときにどのようなワークの画像が得られるか(すなわち、どの方向から見たときにワークがどのように見えるか)という情報が得られることになる。すなわち、記憶部17には、ワークを各方向から撮影して得られた撮影画像が、撮影方向、および、撮影時のカメラ15の回転角度に対応付けて記憶されている。
ロボット10には、上記のようにして複数のワークを教示することができる。複数のワークを教示する場合には、記憶部17にはワークごとにDB画像が記憶される。
(作業教示工程)
図3は、本実施の形態における作業教示工程のフロー図である。ユーザは、ワークに対する作業の教示を行う場合には、まず、カメラ15に向かって指を開いて手を振る。ロボット10では、カメラ15がこのユーザの手の動作を撮影して、制御部16が、撮影画像を解析して、ユーザがワークに対する作業の教示の開始を指示したことを認識する。
ロボット10は、ワークに対する作業教示工程を開始すると、まず、カメラ15によってワーク及びその位置・姿勢を認識する(ステップS31)。このために、ロボット10は、アーム部12及びハンド部13を駆動しながらカメラ15でワークを複数の方向から撮影する。カメラ15は、各方向からワークの静止画像を撮影する。制御部16は、撮影画像と、予め記憶部17に記憶されているワークのDB画像とを比較することで、撮影されたのがどのワークであるかを認識する。なお、DB画像が局所特徴量である場合は、制御部16は撮影画像から局所特徴量を抽出して、それをDB画像と比較することで、ワークを認識する。
また、制御部16は、撮影画像とそのときのアーム部12の姿勢に基づいて、ワークの位置及び姿勢を認識する。このとき、制御部16は、ロボット10が設置された空間の座標系(ロボット座標系)におけるワークの位置及び姿勢を認識する。制御部16がワーク(以下、「物体」ともいう。)の位置及び姿勢を認識(推定)する技術については、後述する。
ロボット10がワークを認識し、その位置及び姿勢を認識すると、ユーザは、2本の指を利用してワークを把持し、ワークを所望の位置まで移動させる。この作業がロボット10に教示すべき作業となる。このために、ロボット10の制御部16は、まず、ユーザの指を認識し、それを追跡する(ステップS32)。このとき、制御部16は、カメラ15で生成された撮影画像に基づいて、ロボット座標系における指の位置を認識する。ユーザの指の認識には、既知の手法(例えば、Leap Motion(登録商標))を採用できる。
制御部16は、ユーザの2本の指(以下、ユーザ(人)の指を「指」と称し、ロボット10のフィンガ部14ないしフィンガ部材14A、14Bと区別する。)がワークを把持したと認識した時に、その指のワーク座標系における位置を認識する(ステップS33)。すなわち、制御部16は、指の位置及びワークの位置から指がワークを把持したことを認識するとともに、そのときの指の位置をワーク座標系に変換する。制御部16は、このときのワーク座標系における位置を把持位置情報として記憶部17に記憶する。
次に、ワークを2本の指で把持したユーザは、ワークを所望の箇所に移動させて、ワークの把持を解除する(ワークから指を離す)。制御部16は、カメラ15からの画像に基づいて指がワークから離れたことを認識し、そのときのワークのロボット座標系における位置及び姿勢をワークの移動先の位置及び姿勢として認識し、これを記憶する(ステップS34)。以上の動作により、制御部16には、ワーク座標系でのワークの把持位置及びロボット座標系でのワークの移動先の位置及び姿勢の情報が記憶される。これによって、ワークに対して作業を指示してロボット10にワークに対する作業を行ってもらう準備が整ったことになる。
なお、ワークの移動先の位置及び姿勢は、撮影画像に基づいてワークの移動が所定時間以上停止したと認識したときのワークの位置及び姿勢をもって認識してもよい。また、上記の実施の形態では、ワークを把持する際の把持位置をもってワークの把持位置を決定したが、ワークを移動先に移動した後の指の把持位置をもってワークの把持位置としてもよい。この場合には、制御部16は、移動先におけるワークの位置及び姿勢と、指の位置から、ユーザがワークを離す直前のワーク座標系におけるワークの把持位置を認識する。ワークを把持してから移動先に置くまでワークを離さなかった場合には、把持位置を認識するのがワークの把持時でもワークを離す直前でも同じ結果となるが、ユーザが移動先にワークを置く前にワークを持ち替えた場合には、持ち替えた後の把持位置が認識されることになる。ユーザは、ワークを移動先付近まで運ぶ際には、ワークを2本指で摘まみ上げる必要はなく、任意の手の動作によって持ち上げてよい。そして、所望の場所に置く際にワークを2本指で把持するように持ち替えれば、所望の場所に置くために、ワークのどこを把持すればよいのかを教示することができる。
また、上記のステップS34では、ロボット座標系におけるワークの位置及び姿勢をワークの移動先の位置及び姿勢として認識したが、後述する作業実施工程において、複数のワークを、互いの位置及び姿勢の関係が所定の位置及び姿勢となるよう移動させる作業を行う場合、例えば、複数のワークを組み合わせて組み合せ物を完成させるという作業を行う場合には、移動先の位置及び姿勢は、既に移動された他のワークを基準とする位置及び姿勢、例えば、複数のワークを組み合わせて組み合せ物を構成する場合における、それまでに出来上がっている組み合せ物(完成途中の組み合わせ物)を基準とする座標系(組み合わせ物座標系)で、移動先のワークの位置及び姿勢であってよい。このようにすることで、例えば、完成途中の組み合わせ物の位置や姿勢が変更されたとしても、変更後の完成途中の組み合わせ物の、ロボット10に対する位置及び姿勢を認識できれば、完成途中の組み合わせ物の所定の位置に所定の姿勢でワークを移動させる作業を行うことが可能となる。
以上の作業教示工程によって、ワークの把持位置の情報(ワーク座標系)、及び移動先の位置及び姿勢の情報が取得され、これらの情報が互いに関連付けられて、作業教示情報として制御部16に記憶される。
なお、ロボットに教示する作業として、材料箱に入った多数のワークから、所定のワークを取り出して、作業台に運び、作業台において、ワークを組み立てる作業を行う等の場合には、上記の各ワークについての作業のほかに、どのワークに対してどの順番で作業を行うか(組み立てプログラム)をロボットに教示する必要がある。
(作業実施工程)
作業実施工程では、ユーザは、作業をしてもらいたいワークをロボット10に指示して、作業を行ってもらう。このために、ユーザは、まず、作業を行ってもらいたいワークをロボット10に対して指示する。このとき、ユーザは、自らの1本の指を使って、まず、カメラ15に向かってこの指を振ることで、ロボット10に対してワークへの作業指示を行うことを認識させる。ロボット10がワークへの作業指示の開始が指示されたことを認識したら、ユーザは、作業を行ってもらいたいワークを1本の指で指し示すことで、作業を行ってもらいたいワークを指示する。
図4は、ロボット10における作業実施工程のフロー図である。カメラ15は、ユーザの指(まっすぐ伸びた1本の指)を撮影し、カメラ制御部151を介して撮影画像を制御部16に送る。制御部16は、この撮影画像に基づいて、上述の指認識の技術を用いて、ユーザがワークへの作業の指示をしようとしていること、及びロボット座標系における指の位置及び指が差している方向を認識する。制御部16は、指が指す先にカメラ15を向けるようにアーム部12の動作を制御し、カメラ15にワークを撮影させる。
制御部16は、ワークを撮影した撮影画像を画像DBと照合することにより、指が指し示す方向にあるワークを特定し、撮影画像とそのときのアーム部12の姿勢から、ワーク及びワークのロボット座標系における位置及び姿勢を認識する(ステップS41)。なお、1つのワークに対して複数の作業が教示されている場合には、このステップS41の後に、作業内容の指示も行う。ワークの特定やそれに対する作業の指示は、現実の空間におけるユーザの指差しのみならず、例えば、スマートホン等における仮想空間を利用したGUIを利用して行ってよく、リストアップされたワークや作業をユーザが選択するものであってもよく、ユーザの音声を認識するものであってもよい。この指差し方向にあるワークを認識するための技術については、後述する。
ワークの位置及び姿勢が認識できたら、制御部16は、アーム部12、ハンド部13、及びフィンガ部14を制御して、フィンガ部14にワークを把持させる(ステップS42)。このとき、制御部16は、記憶されているワークの把持位置にてワークを把持するようにアーム部12、ハンド部13、及びフィンガ部14を制御する。
フィンガ部14がワークを把持すると、制御部16は、ワークが予め教示された移動先に移動して予め教示された姿勢になるように、アーム部12及びハンド部13を制御する。アーム部12及びハンド部13は、制御部16の制御によって駆動され、予め教示された姿勢となるようにワークを教示された移動先に移動させる(ステップS43)。制御部16は、ワークが所定の位置及び姿勢となったら、フィンガ部14をフィンガ部材14A、14Bの間の距離が遠くなるように駆動して、ワークの把持を解除する(ワークをリリースする)(ステップS44)。
なお、複数種類のワークを組み立てる作業を行う等の場合には、ユーザは、各ワークについて上記のように作業の指示をするのではなく、ロボット10は、組み立てプログラムに従って自動的に、順にワークを認識して、必要な作業を行ってよい。
以上のように、本実施の形態のロボット及びロボット制御方法によれば、ユーザが実際に指を使ってワークに対する作業をすることで、ロボット10にワークに対する作業を教示することができるので、ユーザがプログラミングをする必要はなく、また、何らかのGUIを利用してコンピュータに入力する必要すらなく、さらに、ユーザがロボット10のアーム部12、ハンド部13、及びフィンガ部14を直接操作する必要もなく、簡単かつ直感的な方法でロボット10にワークに対する作業を教示できる。
さらに、本実施の形態では、把持の作業を教示する際に、ワーク系座標における把持位置を記憶するので、実際に作業の指示をする際には、作業対象となるワークの位置及び姿勢が、教示した際と異なる任意の位置及び姿勢であっても、そのワークの位置と姿勢が認識できれば、教示したときと同じワークの位置をフィンガ部材14A、14Bで把持できる。
また、フィンガ部材14A、14Bを2つとし、作業の教示の際にもユーザには2本の指を使ってワークを把持させるので、3本以上のフィンガ部材及び指を使用する場合と比較して、干渉等を避けるための演算処理負荷が小さくて済む。
なお、上記の実施の形態では、所望のワークを所望の位置及び姿勢に移動させる作業を行う例を説明したが、本発明のロボット及びロボット制御方法の作業内容は上記の例に限られず、例えば、作業教示工程では、ユーザはワークの把持位置のみをロボットに教示するともに、作業実施工程において、ユーザがワークの移動先を指で指し示すことで、移動先が確定されてもよい。この場合に、必要であれば更に何らかの指示工程でのユーザの指示に従った姿勢となるようにワークを移動させて把持を解除してよい。
また、作業内容は、所望のワークを認識して把持し、所望の位置まで移動させて所望の姿勢とするように把持したままとする(リリースしない)作業であってよく、所望のワークを認識して把持し、ワークを把持したまま所定の空間内でワークに正方向及び負方向の速度を繰り返し持たせ、又は正方向及び負方向の加速度を繰り返し加える(シェイクする)作業であってもよい。
さらに、上記の実施の形態では、ハンド部13の先端に2つの距離可変なフィンガ部材14A、14Bを含むフィンガ部14でワークを把持したが、これに限られず、ハンド部13の先端に台が設けられて、作業内容は、その台にワークを載せる作業であってよく、または、ハンド部13の先端にフックが設けられて、作業内容は、そのフックにワークを引っ掛ける作業であってよい。これらのいずれの場合にも、作業内容は台に乗せたワークやフックに掛けたワークを移動させる作業を伴ってよい。
さらに、上記の実施の形態では、ロボット10がワークを持ち上げて移動させたが、本発明のロボットはこれに限らず、例えば、ワークの所定の箇所を所定の方向に押すことにより、ワークが乗せられている台の上でワークを滑らせながら移動させるものであってもよい。
なお、上記の実施の形態では、ユーザがワークを実際に指で摘まみ上げることで、ワークに対する作業を教示するが、これをロボット10で再現した際に、ロボット10のフィンガ部14におけるフィンガ部材14A、14B同士を近づける方向のトルクが足りず、及び/又はフィンガ部材14A、14Bとワークとの間の摩擦係数が小さく、重力の大きいワークを持ち上げられないことがある。この場合には、制御部16は、指示の際にエラーとして検出する。
具体的には、フィンガ部材14A、14Bがワークの把持位置の間の距離より小さくなっている場合に、制御部16は、フィンガセンサ133からその旨の情報を受けて、フィンガ部14がワークを把持できていないと判断することができる。また、制御部16は、把持してワークを持ち上げた直後にカメラ15でフィンガ部14付近を撮影し、把持後の移動が開始された後のアーム部12やハンド部13の駆動とワークの移動とが一致しないことを検知して、フィンガ部14がワークを把持できていないと判断することもできる。
なお、上記の実施の形態では、ロボット10は、ワークの把持位置及びワークの移動先の位置及び姿勢のみを教示情報として記憶しておいたが、ワークに対する作業内容を教示する際にユーザの腕の位置及び延伸方向を更に記憶して、指示を受けた場合に、アーム部12は、教示の際のユーザの腕の位置及び延伸方向と一致するアプローチで先端に把持されたワークを移動先に移動させてよい。これにより、ワークの周囲の他のものとアーム部12との干渉を避けてワークを所望の位置まで所望の姿勢となるように移動させることができる。
また、上記の実施の形態では、ロボット10にワークの把持位置を教示する際に、ユーザが2本の指でワークを把持したときの把持位置を検出して教示情報としたが、本発明は、これに限られない。ユーザがワークを2本指でピックアップした後に、ワークとそれを把持している指との位置及び姿勢をカメラ15で撮影し、その撮影画像に基づいて、ユーザに把持されているワークの把持位置を求めてもよい。
本発明のロボットは、様々な実施の形態に応用できる。本発明のロボットは、例えば、所望の物品をユーザの手元まで移動させるためのロボットであってよい。この場合には、制御部16は、アームセンサ122、ハンドセンサ132、フィンガセンサ142のいずれかのトルクセンサで検知したときに、ユーザが当該物品をキャッチしたと判断して、フィンガ部14による把持を解除してよい。また、本発明のロボットは、所望の部品を組み付けることにより製品を完成させるロボットであってよく、タブレット端末を把持してユーザに向くように保持するロボットであってもよい。
(位置姿勢推定装置)
次に、制御部16がワーク(以下、「物体」ともいう。)の位置及び姿勢を認識(推定)する技術について、第1及び第2の実施の形態を説明する。図5(a)は記憶部17にDB画像が記憶されたワークおよびその座標系の一例を示し、図5(b)は記憶部17に記憶されたワークの情報の例を示す図である。図5(a)に示すような三角柱形状を有する物体をワークの例として説明する。この物体には、物体固有の座標系が設定されている。この物体固有の座標系が基準となる座標系(例えば、ロボット装置が規定する座標系)に対してどの方向にどの程度が傾いているかによって物体の姿勢を定義することができる。
図5(a)に見られるように、物体を(1,0,0)方向に向かって撮影すると長方形の画像となり、(−1,0,0)方向に向かって撮影すると同じく長方形の画像となる。また、(0,1,0)方向に向かって撮影すると、右下に直角の頂点がくる直角三角形の画像となり、(0、−1,0)方向に向かって撮影すると、左下に直角の頂点がくる直角三角形の画像となり、(0,0,1)方向および(0,0、−1)方向に向かって撮影すると長方形の画像となる。
図5(b)に示すように、記憶部17は、物体の撮影画像とそれを撮影した撮影方向のデータを対応付けて記憶している。図5(b)では、簡単のため、6つの撮影方向からの画像を示したが、実際には、全方位から撮影した多数の画像データを記憶している。また、撮影時のカメラ15の回転角度についても、0度の場合のみを示しているが、実際には、それぞれの撮影方向について、カメラ15の回転角度を変えたときの撮影画像が記憶されている。
制御部16は、カメラ15にて撮影した物体の画像と記憶部17に記憶されたDB画像とを照合して、ワークの位置及び姿勢を求める位置姿勢推定装置160としての機能を有している。図6は、位置姿勢推定装置160として機能する制御部16の構成を示すブロック図である。位置姿勢推定装置160は、図6に示すように、撮影画像取得部161と、マッチング部162と、予測画像抽出部163と、撮影方向決定部164と、位置姿勢計算部165の機能を有している。
撮影画像取得部161は、カメラ15に対して撮影指示を出し、カメラ15にて撮影された画像を受信して取得する機能を有する。なお、撮影画像取得部161からカメラ15に対して出す撮影指示には、撮影方向やカメラの回転角度の指示も含まれる。マッチング部162は、カメラ15での撮影画像と記憶部17に記憶された画像との類似度を求め、類似度が所定の閾値以上の画像を抽出する機能を有する。画像どうしの類似度を求める方法としては、輝度勾配方向を用いたテンプレートマッチング等の公知の方法を採用することができる。
また、マッチング部162は、撮影画像と記憶部17に記憶された画像とのマッチングを行う際の両画像の撮影条件とを同一にすべく、撮影時におけるカメラ15から物体までの距離に基づいて撮影画像の大きさを正規化することが望ましい。例えば、記憶部17に記憶された画像がカメラ15から物体までの距離が10cmで撮影され、姿勢推定時にはカメラ15から物体までの距離が20cmで撮影された場合、撮影画像における物体の大きさを2倍に拡大し、マッチングを適切に行えるようにする。なお、カメラ15から物体までの距離を求める方法としては、光波や電波等を用いた公知の測距技術を採用することができる。また、例えば、物体が、カメラ15との位置関係が既知の作業台に載置されている場合には、作業台の中心位置までの距離を物体までの距離とすることができる。この際に、物体が作業台上のどこにあるかを求め、作業台上の物体の位置によって距離を補正することとしてもよく、これにより、より正確な距離を求めることができる。
予測画像抽出部163は、次の撮影方向(第2の撮影方向)から物体を撮影したときに得られるであろう予測画像を、記憶部17から抽出する機能を有する。具体的には、マッチング部162にて、第1の撮影方向から撮影した画像に対する類似度が所定の閾値以上の複数の画像を候補画像として求める。予測画像抽出部163は、候補画像のそれぞれに対応付けられた撮影方向に、第1の撮影方向から第2の撮影方向への相対的な移動量を加えた撮影方向を求め、当該撮影方向に対応付けられた画像を記憶部17から読み出す。
ここで、予測画像抽出部163の機能について、具体例を挙げて説明する。記憶部17には、物体の画像がその撮影方向に関連付けて記憶されているので、現在の撮影方向(第1の撮影方向)から次の撮影方向(第2の撮影方向)への移動方向および移動角度が決まれば、候補画像に対する予測画像の撮影方向を特定することができる。
図7(a)及び図7(b)は、物体の撮影方向の一例を示す図である。第1の撮影方向から物体を撮影したときに、縦長の長方形の画像が撮影されたとする。この場合、マッチング部162によって、図5(b)に示す記憶部17に記憶された画像データとのマッチングを行うと、類似度の高い画像として、(1,0,0)方向または(−1,0,0)方向から撮影した画像が抽出され、これらが候補画像となる。つまり、縦長の長方形の画像は、図7(a)および図7(b)に示すいずれかの方向から撮影した画像であると予想される。
次に、第2の撮影方向を第1の撮影方向に向かって右側からとする(つまり、撮影方向を水平に90度回転させる)と、第1の撮影方向が図7(a)に示すように(1,0,0)方向であった場合には、第2の撮影方向は(1,0,0)方向となり、記憶部17に記憶されたデータによれば、予測画像として右下を直角の頂点とする直角三角形が抽出される(図8(a)参照)。第1の撮影方向が図7(b)に示すように(−1,0,0)方向であった場合には、第2の撮影方向は(0,−1,0)方向となり、記憶部17に記憶されたデータによれば、予測画像として左下を直角の頂点とする直角三角形が抽出される(図8(b)参照)。このように、予測画像抽出部163は、候補画像の撮影方向が正しいとした場合の予測画像を抽出する。
撮影方向決定部164は、複数の候補画像のそれぞれに対する予測画像どうしの類似度が低くなる撮影方向を第2の撮影方向として決定する。上に示した例では、図8(a)と図8(b)に示す予測画像は直角三角形の向きが逆であり、類似度が低いので、このような撮影方向を第2の撮影方向とする。
もし、図7(a)及び図7(b)に示すような候補画像がある場合に、例えば、第2の撮影方向を上から下への方向とすると、いずれの候補画像に対する予測画像も長方形形状の画像となり、類似度が高い画像となる。撮影方向決定部164は、このように予測画像の類似度が高くなるような撮影方向を第2の撮影方向として決定しないようにする。予測画像どうしの類似度が高いと、第2の撮影方向から撮影された画像と、予測画像とのマッチング結果は似たような値になり、撮影方向の候補を絞り込むことができないからである。
図6に戻って、位置姿勢推定装置160の構成について説明する。位置姿勢計算部165は、撮影画像から物体の撮影方向を求め、求めた撮影方向とカメラ15の向きとから、物体の姿勢(物体の座標系の傾き)を計算する機能を有する。
図9は、第1の実施の形態の位置姿勢推定装置160の動作を示すフローチャートである。位置姿勢推定装置160は、まず、推定対象の物体をカメラ15にて撮影する(ステップS91)。具体的には、制御部16の撮影画像取得部161がカメラ15に対して撮影指示を行い、撮影された画像を取得する。なお、このときの撮影方向が第1の撮影方向である。
次に、位置姿勢推定装置160のマッチング部162は、撮影画像と、記憶部17に記憶された画像とのマッチングを行い、類似度が所定の閾値以上の画像と、その撮影方向およびカメラ15の回転角度を記憶部17から抽出する(ステップS92)。ここでは、記憶部17に記憶された全ての画像とのマッチングを行い、類似度が所定の閾値以上の全ての画像を抽出する。ここで抽出される多数の画像の中に、真の撮影方向に相当する撮影方向に対応付けられた画像が含まれているが、この時点では、通常は一つの画像(及びその撮影方向)に絞り込めない。ここで抽出された画像を、候補画像という。
続いて、位置姿勢推定装置160の撮影方向決定部164は、次の撮影方向(第2の撮影方向)を決定する(ステップS93)。この際、撮影方向決定部164は、予測画像抽出部163と連携して撮影方向を決定する。すなわち、予測画像抽出部163にて、第1の撮影方向から第2の撮影方向への移動方向及び移動角度に基づいて、それぞれの候補画像に対する予測画像を求め、撮影方向決定部164は、予測画像どうしの類似度が所定の閾値以下になる方向を第2の撮影方向として決定する。
位置姿勢推定装置160は、推定対象の物体を第2の撮影方向から撮影する(ステップS94)。具体的には、制御部16の撮影画像取得部161がカメラ15に対して、カメラ15の移動方向および移動角度を指示するとともに撮影指示を行い、撮影された画像を取得する。
次に、位置姿勢推定装置160は、撮影画像と、予測画像とのマッチングを行う(ステップS95)。予測画像は、ステップS2で求めた候補画像のそれぞれに対応するものである。したがって、このステップでは、記憶部17に記憶されている全ての画像とのマッチングを行うわけではない。撮影画像と複数の予測画像との類似度を求めた結果、類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像があるか否か、つまり、他よりも突出して類似度の高い予測画像があるか否かを判定する(ステップS96)。類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像がある場合には(ステップS96でYES)、位置姿勢推定装置160の位置姿勢計算部165は、当該予測画像に対応付けられた撮影方向と、カメラ15の向きとに基づいて、物体の姿勢を計算し、計算して求めた物体の姿勢のデータを出力する(ステップS98)。
第2の撮影方向から撮影した画像と予測画像とのマッチングの結果、類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像がない場合には(ステップS96でNO)、類似度が所定の閾値以上の予測画像を候補画像として(ステップS97)、さらに別の撮影方向(別の第2の撮影方向)を決定して物体を撮影し、予測画像とのマッチングを行って候補画像の絞り込みを行う(ステップS93〜ステップS96)。そして、類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像があるか否かを判定し(ステップS96)、他よりも類似度が突出して高い予測画像が見つかるまで、撮影方向を変えて繰り返し処理を行う。以上、第1の実施の形態の姿勢推定装置1の構成および動作について説明した。
第1の実施の形態の位置姿勢推定装置160は、第1の撮影方向から撮影した画像と記憶部17に記憶された画像とのマッチングにより複数の候補画像を抽出した後、それぞれの候補画像について、所定の移動方向に所定の移動角度だけ撮影方向を変えた第2の撮影方向からの撮影で得られる予測画像を求め、予測画像と撮影画像とのマッチングを行うので、効率的に候補画像の絞り込みを行い、撮影方向を決定することができる。
また、本実施の形態では、第2の撮影方向を決定する際に、予測画像どうしの類似度が低くなるように決定しているので、予測画像と撮影画像とのマッチング結果に有意差が生じ、少ない撮影回数で撮影方向を絞り込むことができる。
[第2の実施の形態]
図10は、第2の実施の形態の位置姿勢推定装置260の構成を示すブロック図である。第2の実施の形態の位置姿勢推定装置260の基本的な構成は、第1の実施の形態と同じであるが、制御部16が、候補画像を絞り込む制候補画像絞込部266を有している点が異なる。
制候補画像絞込部266は、撮影された画像に複数の物体が映っている場合に、それらの位置関係に基づいて、同時に存在し得る物体の組合せかどうかを判断することで、候補画像を絞り込む機能を有している。簡単な例を挙げると、例えば、撮影された画像に2つの物体が映っている場合に、それぞれの画像を個別に見た場合には、各辺の長さが100mmの立方体が候補として挙げられたとする。しかし、映っている画像から判断して、2つの物体の画像の距離が100mm未満である場合には、両方ともが各辺の長さが100mmの立方体であることはあり得ず、いずれか一方または両方の候補が誤りであると分かる。制候補画像絞込部266は、こうした制約条件を利用して候補画像を絞り込む機能を有する。
図11(a)は、カメラにて撮影した画像に映った物体の画像の例を示す図である。図11(a)に示す例では、画像アにかかる物体と、画像イにかかる物体とが映っている。図11(b)は、画像アに係る物体の候補画像と画像イに係る物体の候補画像の組合せ可能性を示す図である。図11(b)に示す表において、縦方向には、画像アと類似度の高い候補画像に係る物体とその撮影方向とを記載している。なお、ここでは、簡単のため撮影方向を「下方向」「右方向」等と記載しているが、実際には、上述したとおり、撮影方向はベクトル等によって規定される。
図11(b)に示す例では、画像アの候補としては、(i)「物体A」を「下方向」
に見た画像、(ii)「物体A」を「上方向」に見た画像、(iii)「物体B」を「右方向」に見た画像、(iv)「物体F」を「右下方向」に見た画像、(v)「物体H」を「左方向」に見た画像、という5つの可能性がある。画像イの候補としては、(i)「物体A」を「右方向」に見た画像、(ii)「物体C」を「右方向」に見た画像、(iii)「物体D」を「左上方向」に見た画像、(iv)「物体G」を「上方向」に見た画像、という4つの可能性がある。図11(b)に示すように、画像ア、画像イを個別に分析すると、画像アについて5つ、画像イについて4つの候補が存在する。
制候補画像絞込部266は、画像ア、イから求めた各候補画像が、同時に存在し得るものかどうかを判定する。例えば、画像アが「物体A」を「下方向」から撮影したものであり、画像イが「物体A」を「右方向」から撮影したものであったとした場合、図11(a)に示す画像ア、イの位置関係から見て両者が同時に存在し得るか否か、つまり、上に述べたように、画像アにかかる物体Aと、画像イにかかる物体Aとが干渉してしまうような場合には、同時に存在し得ないと判定する。図11(b)に示す例では、このような組合せは存在しないとして「×」が記載されている。なお、存在可能な組合せには「○」を記載している。制候補画像絞込部266は、候補画像どうしの各組合せについて、図8(b)に示すように、その存在可能性を求める。なお、この組合せの存在可能性の判断は、最初に撮影を行って、候補画像を求めたときに行えばよい。撮影方向を変えて、第2の撮影方向から撮影して予測画像とのマッチングを行う際には、最初に求めた候補画像の範囲内でマッチングを行うから、新たな候補画像は出てこないからである。
図11(b)に示す例では、画像アに係る候補の一つである「物体B」は、画像イのいずれの候補画像とも組合せ可能性がない。このような場合には、画像アが「物体B」であるとすると、画像イに対応する物体が存在しないことになってしまうので、制候補画像絞込部266は、画像アは「物体B」ではないと判断し、これを候補画像から除外する。同様に、画像イに係る候補の一つである「物体G」も候補画像から除外する。
また、例えば、画像アに係る物体について、第1の実施の形態と同様に、第2の方向から撮影した画像を取得してマッチングを行い、画像アに係る物体が「物体F」であると確定したとすると、「物体F」と両立し得る画像イに係る物体は「物体C」しかないので、画像候補絞込部19は、画像イに係る物体が「物体C」であると判断する。この場合、画像イについては、別方向から撮影した画像のマッチングを行う必要がなくなる。
以上のように、第2の実施の形態の姿勢検出装置は、制候補画像絞込部266によって候補画像を絞り込むことにより、マッチングを行う回数を減らし、画像マッチングに必要な計算処理負担を軽減することができる。
なお、第2の実施の形態では、2つの画像の同時存在可能性を例として説明したが、撮影された画像中に3つ以上の物体の画像が映っている場合には、それらの画像に係る物体の同時存在可能性に基づいて、候補画像を絞り込んでもよい。
以上、本発明の姿勢推定装置および姿勢推定方法について、実施の形態を挙げて詳細に説明したが、本発明は上記した実施の形態に限定されるものではない。
上記した実施の形態では、撮影方向決定部164は、複数の候補画像に対する予測画像どうしの類似度を考慮して第2の撮影方向を決定する例について説明したが、第2の撮影方向は、ランダムに決定してもよい。また、推定対象となる物体の形状の特徴に応じて決定することとしてもよい。例えば、90度回転対象の物体の場合には、90度より小さい角度だけ移動する等である。
上記した実施の形態においては、第2の撮影方向からの撮影画像と予測画像との類似度を求めた結果、他よりも突出して高い類似度を有する予測画像が見つかるまで、撮影方向を変えて絞り込みを行う例について説明したが、ステップS96の判定処理を行わず、第2の撮影方向からの画像との類似度が最も高い予測画像に基づいて撮影方向を決定することとしてもよい。この場合も、第1の撮影方向および第2の撮影方向からの撮影画像に基づいて物体の姿勢の推定の精度を高めることができる。
上記した実施の形態において、記憶部17には、物体の撮影画像とそれを撮影した撮影方向のデータを対応付けて記憶している例について説明したが、物体のCADデータ等がある場合には、物体を実際に撮影しなくても、物体を回転させたデータを計算して、記憶しておいてもよい。
上記した実施の形態において、記憶部17に、複数の物体の画像データを記憶することとしてもよい。この構成により、位置姿勢推定装置160は、複数の物体の姿勢を推定することができる。
(指示対象物表示装置)
次に、作業実施工程のステップS41における指差し方向にあるワークを認識するための技術について詳細に説明する。以下では、ユーザが指を指している対象にレーザ光を照射することで、ユーザ自身がどこを指しているかを認識できる指示対象物表示装置について、第1〜第3の実施の形態を説明する。この指示対象物表示装置100は、上記のロボット10において構成されてもよいし、ロボット10とは別の装置として構成されてもよい。以下では、指示対象物表示装置100がロボット10において構成される例を説明する。
[第1の実施の形態]
図12は、実施の形態の指示対象物表示装置100の構成を示す図である。指示対象物表示装置100は、カメラ15と、制御部16と、記憶部17と、発光部18とを有している。即ち、上記のロボット10に発光部18を追加することで指示対象物表示装置100が構成される。
記憶部17には、ユーザがいる環境、すなわち、ユーザの周囲にある物体、当該物体のある位置および姿勢などのデータを記憶する。記憶部17に記憶するデータは、ユーザの周囲の物体が静的なもの(例えば、壁、天井、キッチン、食器棚、エアコン等)の場合にはあらかじめデータを取得して記憶しておいてもよい。ユーザの周囲にある物体が移動可能なもの(リモコン、本、コップ等)の場合には、指示対象物の表示を行う際に、カメラ15にてユーザの周囲の環境を撮影し、撮影した画像を解析することによって物体のデータを取得して記憶することとしてもよい。また、ユーザの周囲の物体が静的なものと動的なものの組合せの場合、静的なものについてはあらかじめ記憶部17に記憶しておき、動的なものは指示対象物の表示を行う際に記憶することとしてもよい。
カメラ15は、撮影した画像からユーザの指差し方向を検出するため、複数の方向から物体を撮影する。複数の方向から物体を撮影するために、複数台のカメラ15を備えることとしてもよいし、カメラ15を移動体に搭載し、カメラ15を移動して複数の方向から撮影することとしてもよい。
発光部18は、光を照射する機能を有する。発光部18は、例えば、レーザダイオードであり、照射方向を変更可能な構成を有している。また、発光部18は、移動体に搭載されており、その発光の起点を変えることができる。
制御部16は、カメラ15にて撮影した画像を取得する撮影画像取得部166と、撮影画像からユーザの指差し方向を求め、ユーザの指差し方向にある物体(つまり、指差し方向の延長線上にある物体)を指示対象物として検出する指示対象物検出部167と、指示対象物に光を照射するように発光部18を制御する発光制御部168を有している。
指示対象物検出部167は、まず、撮影画像を解析してユーザの指差し方向を求める。具体的には、ユーザの指先が空間座標内のどこにあって、どの方向を向いているかを計算する。撮影画像からユーザの指差し方向を求める方法としては、例えば、特開2009−151419号公報に記載された方法や、Kaoning Hu, et al. "Hand Pointing Estimation for Human Computer Interaction Based on Two Orthogonal-Views" ICPR '10 Proceeding of the 2010 20th International Conference on Pattern Recognitionに記載された方法等の公知の方法を採用することができる。
指示対象物検出部167は、記憶部17から物体に関するデータを読み出し、ユーザの指差し方向と交差する物体を求め、当該物体を指示対象物として検出する。図13(a)は、指差し方向が交差する物体の例を示す図である。このように指差し方向が物体に交差する場合に、その物体が指示対象物となる。
指示対象物検出部167は、指差し方向が物体の近傍を通る場合にも、当該物体を指示対象物として検出する機能を有する。指示対象物検出部167は、物体に対して、その物体の実際の大きさよりも大きい拡張領域を設定する。拡張領域の大きさは、例えば、物体の実際の大きさに対して所定の倍率(例えば、1.5倍)を乗じた大きさとすることができる。拡張領域と物体の存在領域を合わせた領域が、本発明の「物体を含む所定の領域」に相当する。
図13(b)は、指差し方向が物体の拡張領域と交差する例を示す図である。図13(b)に示すように指差し方向が物体の拡張領域と交差する場合にも、指示対象物検出部167は、当該物体を指示対象物として検出する。
また、指示対象物検出部167は、指差し方向に複数の物体がある場合には、指差し方向との交差位置が最も中心近くにある物体を指示対象物として検出する。図14に示すように指差し方向に物体Aと物体Bがあり、ユーザの指差し方向の延長線が物体Aの拡張領域と交差し、物体Bの存在領域と交差しているとする。図14を参照すると、それぞれの交差位置と物体中心との距離を見ると、物体Bとの交差位置の方が物体Aとの交差位置よりも、物体中心に近い。このような場合には、指示対象物検出部167は、物体Bを指示対象物として検出する。これにより、複数の物体がある場合に、ユーザの意図に合った物体を指示対象物として検出することができる。
発光制御部168は、指示対象物として検出された物体に対して光を照射するように、発光部18の発光方向を制御する機能を有する。発光制御部168は、指示対象物である物体の表面の視認しやすい位置に光を照射する。本実施の形態では、発光制御部168は、指差し方向と物体(またはその拡張領域)との交差位置に対して照射するのではなく、交差位置から物体の中心に寄った位置に対して光を照射する。これにより、ユーザは、物体を見たときに光が照射されているかどうかを容易に判断することができる。
図15は、指差し方向が交差する位置と、発光による照射位置との関係を示す図である。図15の左側の図は拡張領域を含む所定の領域の座標系を示し、右側の図は物体の座標系を示す図である。なお、図15では、簡単のため2次元座標で説明しているが、実際には3次元座標である。発光制御部168は、照射位置を物体の中心(座標系の原点)に寄せるため、指差し方向の交差位置の座標値に2/3を乗じて、照射位置の座標を計算する。本実施の形態の指示対象物表示装置100の記憶部17には、交差位置の座標を照射位置の座標に変換するためのテーブルが記憶されている。
図16は、実施の形態の指示対象物表示装置100の動作を示すフローチャートである。指示対象物表示装置100は、まず、カメラ15にてユーザを撮影し(ステップS161)、指示対象物検出部167にて、撮影した画像からユーザの指差し方向を検出する(ステップS162)。続いて、指示対象物検出部167は、記憶部17からユーザの周囲にある物体に関するデータを読み出し、物体に対して定めた所定の領域がユーザの指差し方向と交差する物体を指示対象物として求める(ステップS163)。次に、指示対象物表示装置100の発光制御部168は、指差し方向と物体との交差位置から物体への照射位置を計算し(ステップS164)、発光部18を制御して照射位置に向けて発光する(ステップS165)。指示対象物表示装置100は、以上の処理を繰り返し行う。
これにより、ユーザが指差し方向を動かした場合には、指示対象物表示装置100は、ユーザの指差し方向に基づいて物体を検出し、その物体への照射位置を求めて照射を行うので、ユーザの指差し方向の変化に応じて、物体への照射位置も変化していく。したがって、ユーザは照射位置を見ながら、指差し方向を変えることによって、所望の物体を適切に指示することができる。
また、図14を用いて説明した内容から分かるように、本実施の形態では、物体の近傍の領域を指差すことにより物体の表面上に光が照射されるので、物体を指示するために指差し方向を動かしていくと、指差し方向が物体に近づいたときに照射位置が物体に吸いつくような動きをする。ユーザは、指差し方向を厳密に物体の方向に向けなくてもよいので、簡単に所望の物体を指示することができる。
[第2の実施の形態]
次に、第2の実施の形態の指示対象物表示装置について説明する。第2の実施の形態の指示対象物表示装置の基本的な構成は、第1の実施の形態の指示対象物表示装置100と同じであるが、第2の実施の形態では、ユーザの指先の震えによって照射位置が震えないような工夫を行った点が異なる。
図17は、第2の実施の形態の指示対象物表示装置の動作を示すフローチャートである。指示対象物表示装置は、まず、カメラ15にてユーザを撮影し(ステップS171)、指示対象物検出部167にて、撮影した画像からユーザの指差し方向を検出し(ステップS172)、求めた指差し方向のデータを記憶部17に記憶する(ステップS173)。
次に、第2の実施の形態の指示対象物表示装置は、直前の所定時間(例えば、0.3秒)内における指差し方向のデータを記憶部17から読み出し、指差し方向の動きの量が所定の閾値(例えば、1度)より大きいか否かを判定する(ステップS174)。その結果、指差しの動きの量が所定の閾値以内である場合には(ステップS174でNO)、ユーザを撮影して(ステップS171)、ユーザの指差し方向を検出する処理(ステップS172)に戻る。
指差しの動きの量が所定の閾値より大きい場合(ステップS174でYES)、指示対象物検出部167は、記憶部17からユーザの周囲にある物体に関するデータを読み出し、物体に対して定めた所定の領域がユーザの指差し方向と交差する物体を指示対象物として求める(ステップS175)。次に、指示対象物表示装置の発光制御部168は、指差し方向と物体との交差位置から物体への照射位置を計算し(ステップS176)、発光部18を制御して照射位置に向けて発光する(ステップS177)。指示対象物表示装置は、以上の処理を繰り返し行う。
ユーザの指先の震えは無意識に起こってしまう現象であり、この現象はユーザが物体を指示しようとしているものではない。第2の実施の形態では、所定の時間内における所定の閾値より小さい細かい動きを照射位置に反映しないようにすることにより、ユーザの意図に合った物体の指示を実現することができる。
[第3の実施の形態]
次に、第3の実施の形態の指示対象物表示装置について説明する。第3の実施の形態の指示対象物表示装置の基本的な構成は、第1の実施の形態の指示対象物表示装置と同じであるが、第3の実施の形態では、ユーザが指先を素早く動かして指差し方向を変えたときには、その移動の過程においては、指差し方向と物体の拡張領域との交差位置を検出しないようにしている点が異なる。
図18は、第3の実施の形態の指示対象物表示装置の動作を示すフローチャートである。指示対象物表示装置は、まず、カメラ15にてユーザを撮影し(ステップS181)、指示対象物検出部167にて、撮影した画像からユーザの指差し方向を検出する(ステップS182)。続いて、指示対象物検出部167は、指差し方向の移動速度を計算する(ステップS183)。移動速度の計算は、第2の実施の形態にて説明したのと同様に、求めた指差し方向のデータを記憶部17に記憶しておき、記憶部17に記憶された時系列データを用いて速度を計算することによって行う。
指示対象物表示装置は、移動速度が所定の閾値以下か否かを判定する(ステップS184)。この結果、移動速度が所定の閾値以下の場合には(ステップS184でYES)、第1の実施の形態と同様の処理を行う。すなわち、指示対象物表示装置は、記憶部17からユーザの周囲にある物体に関するデータを読み出し、物体に対して定めた所定の領域がユーザの指差し方向と交差する物体を指示対象物として求める(ステップS185)。次に、指示対象物表示装置の発光制御部168は、指差し方向と物体との交差位置から物体への照射位置を計算し(ステップS186)、発光部18を制御して照射位置に向けて発光する(ステップS187)。
一方、ユーザの指先の移動速度が所定の閾値より大きい場合には(ステップS184でNO)、指示対象物表示装置は、指差し方向と物体が交差する位置を求める(ステップS188)。このステップでは、物体に拡張領域を設定せず、物体と指差し方向とが交差する位置を求める。そして、発光部18は、求めた交差位置に向けて発光する(ステップS189)。
本実施の形態によれば、指差し方向が所定の閾値以下の速度で移動している場合には、移動中の照射位置は、第1の実施の形態で説明したように、物体に吸いつくような動きをするので、ユーザがその途中にある物体を指示することが容易である。指差し方向が所定の閾値より大きい速度で移動している場合には、照射位置は指差し方向をそのまま示し、滑らかな動きをする。指差し方向を素早く動かしている場合には、所望の物体に向けて指差し方向を移動しており、その間にある物体を指示する意図がないと考えられるから、物体に吸いつくような動き方をしないのがユーザの意図に適う。
なお、本実施の形態では、指差し方向の移動速度が所定の閾値以下か否かにより、照射位置の求め方を変える例について説明したが、指差し方向の移動加速度に基づいて判断してもよいし、移動速度と移動加速度の両方を用いてもよい。
また、本実施の形態では、指差し方向の移動速度が所定の閾値より大きい場合には、指差し方向をそのまま照射する例について説明したが、指差し方向の移動速度が所定の閾値より大きい場合には、指差し方向を照射するのを停止してもよい。上述したように、指差し方向を素早く動かしているときには物体を指示する意図がないと考えられるので、照射しなくても問題はなく、かつ、物体との交差位置を求める処理が不要になるので、処理が簡単になる。
上記した第1〜第3の実施の形態において、物体の近傍を指したときにも物体を検出できるように物体に対して拡張領域を設定する例について説明したが、拡張領域を設定する物体とそうでない物体とを設けてもよい。例えば、大きさが所定の閾値以下の物体に対しては拡張領域を設定し、所定の閾値より大きい物体には拡張領域を設定しない構成とすることもできる。小さい物体を正確に指し示すのは難しいので拡張領域を設定することにより、小さい物体を容易に指示できるようにできる。逆に大きい物体については、拡張領域がなくとも指し示すのが簡単であるし、逆に、大きい物体に拡張領域を設定すると、他の物体を指示したいのに、大きい物体が邪魔になるような事態も考えられる。
また、移動可能な物体に拡張領域を設定し、静的な物体に対しては拡張領域を設定しない構成とすることもできる。例えば、ロボットに対して指示を行う場合には、物を持って来させたり、片づけさせたりといったように、物体の移動を伴うことが多いので、動的な物体を指し示す場合が多く、壁や天井などの静的なものを指示することは少ないと考えられる。そこで、動的な物体には拡張領域を設定して、物体の指示を容易にすることが実用的である。
また、拡張領域を設定する際には、物体の全周にわたって、均一に拡大した領域である必要はなく、例えば、鉛直方向より水平方向に大きく拡大した拡張領域を設定してもよい。人間は指差し方向を水平に動かす場合が多いので、拡張領域を水平方向に大きくすることにより、指差し方向にある物体を適切に捉えることができる。また、拡張領域の形状は、ユーザの指差しの癖を学習して、ユーザに合った形状としてもよい。例えば、物体の実際の位置よりも右側を指してしまいがちなユーザに対しては、右側が大きい拡張領域とすることにより、物体の指示を容易に行えるようになる。
上記した第1〜第3の実施の形態では、複数の物体を検出した際には、複数の物体の中で最も中心に近いところが指示された物体を指示対象物とする例について説明したが(図14参照)、複数の物体のうち、ユーザに最も近い物体を指示対象物としてもよい。
また、別の態様として、撮影画像から指差しを行っている方のユーザの肘の角度を求め、肘が伸びている場合には、遠くにある物体を指示対象物とし、肘が曲がっている場合には近くにある物体を指示対象物としてもよい。これにより、ユーザの意図を推定して適切に指示対象物を照射することができる。
また、指差し方向の移動を検出したときに、その指先の移動軌跡の曲率半径に基づいてユーザの意図を推定して、指示対象物を決定してもよい。例えば、指先の移動軌跡の曲率半径が大きいときには、肘や手首を回すのではなく、肩を回すことによって指差し方向を変えていると考えられるので、この場合は遠くの物体を指示対象物とする意図であると推定できる。この場合は、移動後の指差し方向にある物体のうちで、遠くにある物体を指示対象物として検出する。
上記した第1〜第3の実施の形態においては、交差位置から照射位置を求める際に、指差し方向の交差位置の座標値に2/3を乗じて、照射位置の座標を計算する例について説明したが、交差位置から照射位置への変換方法(変換テーブル)は必ずしも等倍である必要はなく、様々なバリエーションが考えられる。例えば、拡張領域を含む所定の領域を物体の中心付近か否かで2つの領域に分け、交差位置が中心付近の領域に入っているときにはその交差位置をそのまま照射位置とし、交差位置が外側の領域に入っているときには、照射位置が中心付近の領域に入るように座標変換してもよい。また、交差位置にかかわらず、物体の中心を照射位置とするようにしてもよい。