(57)【特許請求の範囲】
【請求項１】
ワークに対して作業をするロボットであって、
撮影によって撮影画像を生成するカメラと、
ワークに対して作業を行う作業部と、
作業教示工程において、ワークの画像を含む撮影画像に基づいて、ユーザによるワークに対する作業内容を認識し、作業実施工程において、前記作業内容を行うように前記作業部を制御する制御部と、
を備え、
前記作業部は、ワークを把持することが可能であり、
前記制御部は、前記作業教示工程において、ユーザの指によるワークの把持位置を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持するよう前記作業部を制御することを特徴とするロボット。
【請求項２】
前記制御部は、前記作業実施工程において、ワークの画像を含む撮影画像に基づいて、ワークを認識し、認識されたワークに対応する前記作業内容を行うように前記作業部を制御することを特徴とする請求項１に記載のロボット。
【請求項３】
前記制御部は、更に、ワーク教示工程において、ワークを認識し、前記作業実施工程において、前記ワーク教示工程で認識したワークと前記作業実施工程における前記撮影画像に含まれるワークの画像とを比較することにより、ワークを認識することを特徴とする請求項２に記載のロボット。
【請求項４】
前記作業部は、ワークを移動させることが可能であり、
前記作業内容は、ワークを移動させることである
ことを特徴とする請求項１に記載のロボット。
【請求項５】
前記制御部は、前記作業実施工程において、複数のワークを、互いの位置及び姿勢の関係が所定の位置及び姿勢となるよう移動させる作業を行うように前記作業部を制御し、前記作業教示工程において、ユーザがワークを移動した後のワークの移動先の位置及び姿勢を認識し、前記移動先の位置及び姿勢は、既に移動された他のワークを基準とする位置及び姿勢であることを特徴とする請求項４に記載のロボット。
【請求項６】
前記作業部は、ワークを持ち上げて移動させることが可能であり、
前記作業内容は、ワークを持ち上げて移動させることである
ことを特徴とする請求項１に記載のロボット。
【請求項７】
前記作業内容は、ワークを把持して移動させることである
ことを特徴とする請求項１に記載のロボット。
【請求項８】
前記作業部は、２つのフィンガ部材を備え、前記２つのフィンガ部材の間の距離を変化させることで、ワークを把持するフィンガ部であり、
前記制御部は、前記作業教示工程において、ユーザの２本の指によるワークの把持位置を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持するよう前記作業部を制御することを特徴とする請求項１に記載のロボット。
【請求項９】
前記制御部は、前記作業教示工程において、ユーザの指によるワークの把持位置、ユーザがワークの把持を解除したときのワークの移動先の位置及び姿勢を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持し、ワークを前記移動先の位置まで移動させ、前記移動先の位置及び姿勢でワークの把持を解除するよう前記作業部を制御することを特徴とする請求項７に記載のロボット。
【請求項１０】
ワークに対して作業をする作業部を備えたロボットを制御するロボット制御方法であって、
撮影によって撮影画像を生成する撮影工程と、
前記ワークの画像を含む撮影画像に基づいて、ユーザによるワークに対する作業内容を認識する作業教示工程と、
前記作業内容を行うように前記作業部を制御する作業実施工程と、
を含み、
前記作業部は、ワークを把持することが可能であり、
前記作業教示工程は、ユーザの指によるワークの把持位置を認識し、
前記作業実施工程は、前記作業部が前記把持位置にてワークを把持するよう前記作業部を制御することを特徴とするロボット制御方法。
【請求項１１】
撮影によって撮影画像を生成するカメラと、ワークに対して作業を行う作業部とを備え、ワークに対して作業をするロボットのコンピュータを、
作業教示工程において、前記ワークの画像を含む撮影画像に基づいて、ユーザによるワークに対する作業内容を認識し、作業実施工程において、前記作業内容を行うように前記作業部を制御する制御部
として機能させ、
前記作業部は、ワークを把持することが可能であり、
前記制御部は、前記作業教示工程において、ユーザの指によるワークの把持位置を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持するよう前記作業部を制御することを特徴とするロボット制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークに対して作業を行うロボット、ロボット制御方法、及びロボット制御プログラムに関するものである。
【背景技術】
【０００２】
ロボットが行うべき作業をロボットに簡単に教示する手法として、ロボットの動作部材（アーム等）をユーザが直接動かして作業を教示するダイレクト教示が実用化されている（例えば、特許文献１参照）。ダイレクト教示は、ロボットが行うべき作業のプログラムをコンピュータ上でユーザが作成する等の手法と比較して、教示が簡単であり、工場などの小ロット作業で作業効率改善の効果を上げている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３４６８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、この教示手法を一般家庭で簡単なタスクの代行をする等の用途のロボットに適用すると、教示に要する時間がかかるだけでなく、わざわざロボットのアームを動かすという手間が問題になる。
【０００５】
本発明は、上記の問題に鑑みてなされたものであり、より短時間で身体的な負荷を少なくして作業内容の教示を行うことができるロボット、ロボット制御方法、及びロボット制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のロボットは、ワークに対して作業をするロボットであって、撮影によって撮影画像を生成するカメラと、ワークに対して作業を行う作業部と、作業教示工程において、ワークの画像を含む撮影画像に基づいて、ユーザによるワークに対する作業内容を認識し、作業実施工程において、前記作業内容を行うように前記作業部を制御する制御部とを備えた構成を有する。
【０００７】
この構成により、ユーザによるワークに対する作業内容をカメラで撮影して、その撮影画像を用いて作業内容がロボットに教示されるので、より短時間で、ユーザの身体的な負荷を少なくして、作業内容をロボットに教示できる。
【０００８】
前記制御部は、前記作業実施工程において、ワークの画像を含む撮影画像に基づいて、ワークを認識し、認識されたワークに対応する前記作業内容を行うように前記作業部を制御してよい。
【０００９】
この構成により、作業実施工程において、作業の対象とすべきワークを特定して、必要な作業を行うことができる。
【００１０】
前記制御部は、更に、ワーク教示工程において、ワークを認識し、前記作業実施工程において、前記ワーク教示工程で認識したワークと前記作業実施工程における前記撮影画像に含まれるワークの画像とを比較することにより、ワークを認識してよい。
【００１１】
この構成により、作業実施工程においてワークが任意の位置及び姿勢でおかれている場合にも、ワーク教示工程で教示したワークを認識して、そのワークに必要な作業を行うことができる。
【００１２】
前記作業部は、ワークを移動させることが可能であってよく、前記作業内容は、ワークを移動させることであってよい。
【００１３】
この構成により、ワークを移動させる作業を、より短時間で、ユーザの身体的な負荷を少なくして、ロボットに教示できる。
【００１４】
前記制御部は、前記作業実施工程において、複数のワークを、互いの位置及び姿勢の関係が所定の位置及び姿勢となるよう移動させる作業を行うように前記作業部を制御し、前記作業教示工程において、ユーザがワークを移動した後のワークの移動先の位置及び姿勢を認識してよい。そして、前記移動先の位置及び姿勢は、既に移動された他のワークを基準とする位置及び姿勢であってよい。
【００１５】
例えば、複数のワークを組み合わせて組み合せ物を完成させる過程において、それまでに出来上がっている組み合せ物（完成途中の組み合せ物）の位置や姿勢が変更された場合に、そのような変更後の、完成途中の組み合わせ物のロボットに対する位置及び姿勢をロボットにて認識できるのであれば、この構成により、そのような完成途中の組み合せ物の位置や姿勢の変更は許容される。
【００１６】
前記作業部は、ワークを持ち上げて移動させることが可能であってよく、前記作業内容は、ワークを持ち上げて移動させることであってよい。
【００１７】
この構成により、ワークを持ち上げて移動させる作業を、より短時間で、ユーザの身体的な負荷を少なくして、ロボットに教示できる。
【００１８】
前記作業部は、ワークを把持して移動させることが可能であってよく、前記作業内容は、ワークを把持して移動させることであってよい。
【００１９】
この構成により、ワークを把持して移動させる作業を、より短時間で、ユーザの身体的な負荷を少なくして、ロボットに教示できる。
【００２０】
前記作業部は、ワークを把持することが可能であってよく、前記制御部は、前記作業実施工程において、ユーザの指によるワークの把持位置を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持するよう前記作業部を制御してよい。
【００２１】
この構成により、ユーザがワークを把持した際の把持位置でワークを把持するように作業部を制御できる。
【００２２】
前記作業部は、２つのフィンガ部材を備え、前記２つのフィンガ部材の間の距離を変化させることで、ワークを把持するフィンガ部であってよく、前記制御部は、前記作業教示工程において、ユーザの２本の指によるワークの把持位置を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持するよう前記作業部を制御してよい。
【００２３】
この構成により、ユーザが２本の指でワークを把持した際の把持位置でワークを把持するように作業部を制御できる。
【００２４】
前記制御部は、前記作業教示工程において、ユーザの指によるワークの把持位置、ユーザがワークの把持を解除したときのワークの移動先の位置及び姿勢を認識し、前記作業実施工程において、前記作業部が前記把持位置にてワークを把持し、ワークを前記移動先の位置まで移動させ、前記移動先の位置及び姿勢でワークの把持を解除するよう前記作業部を制御してよい。
【００２５】
この構成により、ユーザがワークを把持して所望の移動先に移動させる作業を教示し、作業部がその作業を再現できる。
【００２６】
本発明のロボット制御方法は、ワークに対して作業をするロボット制御方法であって、撮影によって撮影画像を生成する撮影工程と、前記ワークの画像を含む撮影画像に基づいて、ユーザによるワークに対する作業内容を認識する作業教示工程と、前記作業内容を行うように前記作業部を制御する作業実施工程とを含む構成を有している。
【００２７】
この構成により、ユーザによるワークに対する作業内容を撮影して、その撮影画像を用いて作業内容がロボットに教示されるので、より短時間で、ユーザの身体的な負荷を少なくして、作業内容をロボットに教示できる。
【００２８】
本発明のロボット制御プログラムは、撮影によって撮影画像を生成するカメラと、ワークに対して作業を行う作業部とを備え、ワークに対して作業をするロボットのコンピュータを、作業教示工程において、前記ワークの画像を含む撮影画像に基づいて、ユーザによるワークに対する作業内容を認識し、作業実施工程において、前記作業内容を行うように前記作業部を制御する制御部として機能させる。
【００２９】
この構成により、ユーザによるワークに対する作業内容をカメラで撮影して、その撮影画像を用いて作業内容がロボットに教示されるので、より短時間で、ユーザの身体的な負荷を少なくして、作業内容をロボットに教示できる。
【発明の効果】
【００３０】
本発明によれば、ユーザによるワークに対する作業内容をカメラで撮影して、その撮影画像を用いて作業内容がロボットに教示されるので、より短時間で、ユーザの身体的な負荷を少なくして、作業内容をロボットに教示できる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態におけるアーム型ロボットの構成を示す外観図
【図２】本発明の実施の形態におけるアーム型ロボットの構成を示すブロック図
【図３】本発明の実施の形態における作業教示工程のフロー図
【図４】本発明の実施の形態における作業実施工程のフロー図
【図５】（ａ）本発明の実施の形態における記憶部にＤＢ画像が記憶されたワークおよびその座標系の一例を示す図  （ｂ）本発明の実施の形態における記憶部に記憶されたデータの例を示す図
【図６】本発明の第１の実施の形態における姿勢推定装置の構成を示すブロック図
【図７】（ａ）本発明の実施の形態における物体の撮影方向の一例を示す図  （ｂ）本発明の実施の形態における物体の撮影方向の一例を示す図
【図８】（ａ）本発明の実施の形態における第１の撮影方向から撮影したときの候補画像および第２の撮影方向から撮影したときの予測画像の例を示す図  （ｂ）本発明の実施の形態における第１の撮影方向から撮影したときの候補画像および第２の撮影方向から撮影したときの予測画像の例を示す図
【図９】本発明の第１の実施の形態における姿勢推定装置の動作を示す図
【図１０】本発明の第２の実施の形態における姿勢推定装置の構成を示すブロック図
【図１１】（ａ）カメラにて撮影した画像に映った物体の画像の例を示す図  （ｂ）画像アに係る物体の候補画像と画像イに係る物体の候補画像の組合せ可能性を示す図
【図１２】本発明の第１の実施の形態の指示対象物表示装置の構成を示す図
【図１３】（ａ）本発明の実施の形態における指差し方向が交差する物体の例を示す図  （ｂ）本発明の実施の形態における指差し方向が物体の拡張領域と交差する例を示す図
【図１４】本発明の実施の形態における指差し方向に複数の物体がある場合の、指示対象物検出部による指示対象物検出について説明するための図
【図１５】本発明の実施の形態における指差し方向が交差する位置と、発光による照射位置との関係を示す図
【図１６】本発明の第１の実施の形態の指示対象物表示装置の動作を示すフローチャート
【図１７】本発明の第２の実施の形態の指示対象物表示装置の動作を示すフローチャート
【図１８】本発明の第３の実施の形態の指示対象物表示装置の動作を示すフローチャート
【発明を実施するための形態】
【００３２】
以下、本発明の実施の形態のロボットについて、図面を参照しながら説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
【００３３】
図１は、本発明の実施の形態のアーム型ロボットの構成を示す外観図である。本実施の形態のアーム型ロボット（以下、単に「ロボット」という。）１０は、ワークＷに対して作業を行うロボットである。ロボット１０は、設置面に設置されるベース１１と、ベースに接続されるアーム部１２と、アーム部１２のベース１１とは反対側の端に設けられたハンド部１３と、ハンド部１３のアーム部１２とは反対側の端に設けられたフィンガ部１４とを備えている。アーム部１２は、第１アーム１２Ａ、及び第２アーム１２Ｂを備えている。また、フィンガ部１４は、互いの距離が可変な２つのフィンガ部材１４Ａ、１４Ｂを備えている。
【００３４】
２つのフィンガ部材１４Ａ、１４Ｂの少なくとも互いに対抗する面には、ワークを把持するための滑り止め部材が貼付されており、または、滑り止め加工がなされている。なお、アーム部１２、ハンド部１３、及びフィンガ部１４は、「作業部」に相当する。
【００３５】
ロボット１０は、設置面に垂直な軸周りに回転する第１軸２１と、第１アーム１２Ａを水平軸周りに回転する第２軸２２と、第１アーム１２Ａを軸周りに回転する第３軸２３、第１アーム１２Ａに固定され、第２アーム１２Ｂを水平方向に回転する第４軸２４と、第２アーム１２Ｂの軸周りに回転する第５軸２５、及び第２アーム１２Ｂに固定され、ハンド部１３を水平方向に回転する第６軸２６を備える６軸制御のロボットである。
【００３６】
ハンド部１３には、光軸がハンド部１３からフィンガ部１４に向かう方向を向くようにカメラ１５が設置されている。カメラ１５は、単眼のカメラである。このように、ハンド部１３にカメラ１５を備えるロボット１０は、ハンドアイロボットとも呼ばれる。なお、カメラ１５は、第１アーム１２Ａ及び第２アーム１２Ｂのいずれかに設けられていてもよいし、ロボット１０に対する位置及び姿勢の関係が既知である位置及び姿勢で、ロボット１０のアーム部１２の動きとは独立して設けられていてもよく、そのようなカメラ１５が複数設けられていてもよい。
【００３７】
以下、図２も参照して、本実施の形態のロボット１０を更に説明する。図２は、本実施の形態のロボットの構成を示すブロック図である。図２に示すように、アーム部１２及びハンド部１３には、それぞれの軸を駆動するためのアクチュエータ１２１、１３１が設けられている。また、フィンガ部１４には、フィンガ部材１４Ａ、１４Ｂを駆動するアクチュエータ１３２が設けられており、フィンガ部材１４Ａとフィンガ部材１４Ｂとの間の距離を変化させることで、ワーク（作業対象物体）を把持し、その把持を解除する。カメラ１５は、カメラ制御部１５１の制御に従って、静止画像を撮影可能であり、動画像（連続的な静止画像）も撮影可能である。
【００３８】
アーム部１２及びハンド部１３には、それぞれ、駆動状態（各軸の回転角）を検出するためのアームセンサ１２２及びハンドセンサ１３２が設けられている。アームセンサ１２２及びハンドセンサ１３２は、アーム部１２及びハンド部１３にかかるトルクを検出するためのトルクセンサも含む。
【００３９】
ロボット１０は、更に制御部１６及び記憶部１７を備えている。アーム部１２、ハンド部１３、フィンガ部１４、及びカメラ１５は、制御部１６からの指令に従って動作を行う。すなわち、制御部１６は、アクチュエータ１２１、１３１、及び１４２に駆動を指示する信号を送ることで、これらのアクチュエータを動作させて、アーム部１２、ハンド部１３、及びフィンガ部１４を駆動し、カメラ制御部１５１に撮影及び画像送信を指示する信号を送ることで、カメラ制御部１５１にカメラ１５を制御させて、カメラ１５に撮影及び画像送信を行わせる。カメラ１５で撮影された画像は、カメラ制御部１５１を介して制御部１６に送られる。アームセンサ１２２、ハンドセンサ１３２、フィンガセンサ１４２の検出値も制御部１６に送られる。
【００４０】
制御部１６は、コンピュータからなり、所定の制御プログラムに従って、カメラ１５からの撮影画像、並びにアームセンサ１２２、ハンドセンサ１３２、及びフィンガセンサ１４２の検出値に基づいて、アーム部１２、ハンド部１３、フィンガ部１４の制御を行う。記憶部１７は、以下に説明する動作に必要な情報を記憶している。特に、記憶部１７は、以下に説明するワーク教示工程において教示されたワークの情報、及び作業教示工程において教示された作業の内容を記憶している。
【００４１】
以下、ロボット１０にワークを教示する工程（ワーク教示工程）、ワークに対する作業を教示する工程（作業教示工程）、ワーク対する作業を実施する工程（作業実施工程）について説明する。本実施の形態では、特定の形状を有するワークを把持して、それを所定の場所に移動する作業を例に説明する。
【００４２】
（ワーク教示工程）
本実施の形態において、ワークの教示とは、作業の対象となるワークの情報として、ワークの立体形状を教示することである。なお、ワークの教示において、ワークの情報として、更にワーク表面のテクスチャや、ワーク表面の色を教示してもよい。
【００４３】
ロボット１０にワークを教示させる方法として、種々の既知の方法を採用できる。例えば、教示すべきワークの形状情報を３次元ＣＡＤデータ等でロボット１０に取り込んでよい。この場合、ロボット１０は、この３次元ＣＡＤデータをワークの情報として記憶部１７に記憶する。また、ワークに対して立体形状の計測を行って、この計測によって得られた立体形状データをロボット１０に取り込んでもよい。この場合、ロボット１０は、この立体形状データをワークの情報として記憶部１７に記憶する。
【００４４】
本実施の形態のロボット１０は、ハンド部１３にカメラ１５を備えているので、このカメラ１５を利用して、以下のようにしてワークの教示を行う。まず、ユーザは、教示すべきワークをロボット１０が認識できる位置に置く。ロボット１０は、制御部１６の制御によってアーム部１２、ハンド部１３、及びカメラ１５を駆動して、カメラ１５にこのワークを複数の方向からそれぞれ撮影させる。
【００４５】
制御部１６は、撮影画像からワークを認識して、そのワークの画像（ＤＢ画像）をそのときのアーム部１２の姿勢とともに記憶部１７に記憶する。なお、制御部１６は、認識されたワークの画像そのものを記憶してもよいが、認識されたワークの局所特徴量をＤＢ画像として記憶してもよい。以上により、ロボット１０では、当該ワークについて、どの方向から撮影したときにどのようなワークの画像が得られるか（すなわち、どの方向から見たときにワークがどのように見えるか）という情報が得られることになる。すなわち、記憶部１７には、ワークを各方向から撮影して得られた撮影画像が、撮影方向、および、撮影時のカメラ１５の回転角度に対応付けて記憶されている。
【００４６】
ロボット１０には、上記のようにして複数のワークを教示することができる。複数のワークを教示する場合には、記憶部１７にはワークごとにＤＢ画像が記憶される。
【００４７】
（作業教示工程）
図３は、本実施の形態における作業教示工程のフロー図である。ユーザは、ワークに対する作業の教示を行う場合には、まず、カメラ１５に向かって指を開いて手を振る。ロボット１０では、カメラ１５がこのユーザの手の動作を撮影して、制御部１６が、撮影画像を解析して、ユーザがワークに対する作業の教示の開始を指示したことを認識する。
【００４８】
ロボット１０は、ワークに対する作業教示工程を開始すると、まず、カメラ１５によってワーク及びその位置・姿勢を認識する（ステップＳ３１）。このために、ロボット１０は、アーム部１２及びハンド部１３を駆動しながらカメラ１５でワークを複数の方向から撮影する。カメラ１５は、各方向からワークの静止画像を撮影する。制御部１６は、撮影画像と、予め記憶部１７に記憶されているワークのＤＢ画像とを比較することで、撮影されたのがどのワークであるかを認識する。なお、ＤＢ画像が局所特徴量である場合は、制御部１６は撮影画像から局所特徴量を抽出して、それをＤＢ画像と比較することで、ワークを認識する。
【００４９】
また、制御部１６は、撮影画像とそのときのアーム部１２の姿勢に基づいて、ワークの位置及び姿勢を認識する。このとき、制御部１６は、ロボット１０が設置された空間の座標系（ロボット座標系）におけるワークの位置及び姿勢を認識する。制御部１６がワーク（以下、「物体」ともいう。）の位置及び姿勢を認識（推定）する技術については、後述する。
【００５０】
ロボット１０がワークを認識し、その位置及び姿勢を認識すると、ユーザは、２本の指を利用してワークを把持し、ワークを所望の位置まで移動させる。この作業がロボット１０に教示すべき作業となる。このために、ロボット１０の制御部１６は、まず、ユーザの指を認識し、それを追跡する（ステップＳ３２）。このとき、制御部１６は、カメラ１５で生成された撮影画像に基づいて、ロボット座標系における指の位置を認識する。ユーザの指の認識には、既知の手法（例えば、Ｌｅａｐ  Ｍｏｔｉｏｎ（登録商標））を採用できる。
【００５１】
制御部１６は、ユーザの２本の指（以下、ユーザ（人）の指を「指」と称し、ロボット１０のフィンガ部１４ないしフィンガ部材１４Ａ、１４Ｂと区別する。）がワークを把持したと認識した時に、その指のワーク座標系における位置を認識する（ステップＳ３３）。すなわち、制御部１６は、指の位置及びワークの位置から指がワークを把持したことを認識するとともに、そのときの指の位置をワーク座標系に変換する。制御部１６は、このときのワーク座標系における位置を把持位置情報として記憶部１７に記憶する。
【００５２】
次に、ワークを２本の指で把持したユーザは、ワークを所望の箇所に移動させて、ワークの把持を解除する（ワークから指を離す）。制御部１６は、カメラ１５からの画像に基づいて指がワークから離れたことを認識し、そのときのワークのロボット座標系における位置及び姿勢をワークの移動先の位置及び姿勢として認識し、これを記憶する（ステップＳ３４）。以上の動作により、制御部１６には、ワーク座標系でのワークの把持位置及びロボット座標系でのワークの移動先の位置及び姿勢の情報が記憶される。これによって、ワークに対して作業を指示してロボット１０にワークに対する作業を行ってもらう準備が整ったことになる。
【００５３】
なお、ワークの移動先の位置及び姿勢は、撮影画像に基づいてワークの移動が所定時間以上停止したと認識したときのワークの位置及び姿勢をもって認識してもよい。また、上記の実施の形態では、ワークを把持する際の把持位置をもってワークの把持位置を決定したが、ワークを移動先に移動した後の指の把持位置をもってワークの把持位置としてもよい。この場合には、制御部１６は、移動先におけるワークの位置及び姿勢と、指の位置から、ユーザがワークを離す直前のワーク座標系におけるワークの把持位置を認識する。ワークを把持してから移動先に置くまでワークを離さなかった場合には、把持位置を認識するのがワークの把持時でもワークを離す直前でも同じ結果となるが、ユーザが移動先にワークを置く前にワークを持ち替えた場合には、持ち替えた後の把持位置が認識されることになる。ユーザは、ワークを移動先付近まで運ぶ際には、ワークを２本指で摘まみ上げる必要はなく、任意の手の動作によって持ち上げてよい。そして、所望の場所に置く際にワークを２本指で把持するように持ち替えれば、所望の場所に置くために、ワークのどこを把持すればよいのかを教示することができる。
【００５４】
また、上記のステップＳ３４では、ロボット座標系におけるワークの位置及び姿勢をワークの移動先の位置及び姿勢として認識したが、後述する作業実施工程において、複数のワークを、互いの位置及び姿勢の関係が所定の位置及び姿勢となるよう移動させる作業を行う場合、例えば、複数のワークを組み合わせて組み合せ物を完成させるという作業を行う場合には、移動先の位置及び姿勢は、既に移動された他のワークを基準とする位置及び姿勢、例えば、複数のワークを組み合わせて組み合せ物を構成する場合における、それまでに出来上がっている組み合せ物（完成途中の組み合わせ物）を基準とする座標系（組み合わせ物座標系）で、移動先のワークの位置及び姿勢であってよい。このようにすることで、例えば、完成途中の組み合わせ物の位置や姿勢が変更されたとしても、変更後の完成途中の組み合わせ物の、ロボット１０に対する位置及び姿勢を認識できれば、完成途中の組み合わせ物の所定の位置に所定の姿勢でワークを移動させる作業を行うことが可能となる。
【００５５】
以上の作業教示工程によって、ワークの把持位置の情報（ワーク座標系）、及び移動先の位置及び姿勢の情報が取得され、これらの情報が互いに関連付けられて、作業教示情報として制御部１６に記憶される。
【００５６】
なお、ロボットに教示する作業として、材料箱に入った多数のワークから、所定のワークを取り出して、作業台に運び、作業台において、ワークを組み立てる作業を行う等の場合には、上記の各ワークについての作業のほかに、どのワークに対してどの順番で作業を行うか（組み立てプログラム）をロボットに教示する必要がある。
【００５７】
（作業実施工程）
作業実施工程では、ユーザは、作業をしてもらいたいワークをロボット１０に指示して、作業を行ってもらう。このために、ユーザは、まず、作業を行ってもらいたいワークをロボット１０に対して指示する。このとき、ユーザは、自らの１本の指を使って、まず、カメラ１５に向かってこの指を振ることで、ロボット１０に対してワークへの作業指示を行うことを認識させる。ロボット１０がワークへの作業指示の開始が指示されたことを認識したら、ユーザは、作業を行ってもらいたいワークを１本の指で指し示すことで、作業を行ってもらいたいワークを指示する。
【００５８】
図４は、ロボット１０における作業実施工程のフロー図である。カメラ１５は、ユーザの指（まっすぐ伸びた１本の指）を撮影し、カメラ制御部１５１を介して撮影画像を制御部１６に送る。制御部１６は、この撮影画像に基づいて、上述の指認識の技術を用いて、ユーザがワークへの作業の指示をしようとしていること、及びロボット座標系における指の位置及び指が差している方向を認識する。制御部１６は、指が指す先にカメラ１５を向けるようにアーム部１２の動作を制御し、カメラ１５にワークを撮影させる。
【００５９】
制御部１６は、ワークを撮影した撮影画像を画像ＤＢと照合することにより、指が指し示す方向にあるワークを特定し、撮影画像とそのときのアーム部１２の姿勢から、ワーク及びワークのロボット座標系における位置及び姿勢を認識する（ステップＳ４１）。なお、１つのワークに対して複数の作業が教示されている場合には、このステップＳ４１の後に、作業内容の指示も行う。ワークの特定やそれに対する作業の指示は、現実の空間におけるユーザの指差しのみならず、例えば、スマートホン等における仮想空間を利用したＧＵＩを利用して行ってよく、リストアップされたワークや作業をユーザが選択するものであってもよく、ユーザの音声を認識するものであってもよい。この指差し方向にあるワークを認識するための技術については、後述する。
【００６０】
ワークの位置及び姿勢が認識できたら、制御部１６は、アーム部１２、ハンド部１３、及びフィンガ部１４を制御して、フィンガ部１４にワークを把持させる（ステップＳ４２）。このとき、制御部１６は、記憶されているワークの把持位置にてワークを把持するようにアーム部１２、ハンド部１３、及びフィンガ部１４を制御する。
【００６１】
フィンガ部１４がワークを把持すると、制御部１６は、ワークが予め教示された移動先に移動して予め教示された姿勢になるように、アーム部１２及びハンド部１３を制御する。アーム部１２及びハンド部１３は、制御部１６の制御によって駆動され、予め教示された姿勢となるようにワークを教示された移動先に移動させる（ステップＳ４３）。制御部１６は、ワークが所定の位置及び姿勢となったら、フィンガ部１４をフィンガ部材１４Ａ、１４Ｂの間の距離が遠くなるように駆動して、ワークの把持を解除する（ワークをリリースする）（ステップＳ４４）。
【００６２】
なお、複数種類のワークを組み立てる作業を行う等の場合には、ユーザは、各ワークについて上記のように作業の指示をするのではなく、ロボット１０は、組み立てプログラムに従って自動的に、順にワークを認識して、必要な作業を行ってよい。
【００６３】
以上のように、本実施の形態のロボット及びロボット制御方法によれば、ユーザが実際に指を使ってワークに対する作業をすることで、ロボット１０にワークに対する作業を教示することができるので、ユーザがプログラミングをする必要はなく、また、何らかのＧＵＩを利用してコンピュータに入力する必要すらなく、さらに、ユーザがロボット１０のアーム部１２、ハンド部１３、及びフィンガ部１４を直接操作する必要もなく、簡単かつ直感的な方法でロボット１０にワークに対する作業を教示できる。
【００６４】
さらに、本実施の形態では、把持の作業を教示する際に、ワーク系座標における把持位置を記憶するので、実際に作業の指示をする際には、作業対象となるワークの位置及び姿勢が、教示した際と異なる任意の位置及び姿勢であっても、そのワークの位置と姿勢が認識できれば、教示したときと同じワークの位置をフィンガ部材１４Ａ、１４Ｂで把持できる。
【００６５】
また、フィンガ部材１４Ａ、１４Ｂを２つとし、作業の教示の際にもユーザには２本の指を使ってワークを把持させるので、３本以上のフィンガ部材及び指を使用する場合と比較して、干渉等を避けるための演算処理負荷が小さくて済む。
【００６６】
なお、上記の実施の形態では、所望のワークを所望の位置及び姿勢に移動させる作業を行う例を説明したが、本発明のロボット及びロボット制御方法の作業内容は上記の例に限られず、例えば、作業教示工程では、ユーザはワークの把持位置のみをロボットに教示するともに、作業実施工程において、ユーザがワークの移動先を指で指し示すことで、移動先が確定されてもよい。この場合に、必要であれば更に何らかの指示工程でのユーザの指示に従った姿勢となるようにワークを移動させて把持を解除してよい。
【００６７】
また、作業内容は、所望のワークを認識して把持し、所望の位置まで移動させて所望の姿勢とするように把持したままとする（リリースしない）作業であってよく、所望のワークを認識して把持し、ワークを把持したまま所定の空間内でワークに正方向及び負方向の速度を繰り返し持たせ、又は正方向及び負方向の加速度を繰り返し加える（シェイクする）作業であってもよい。
【００６８】
さらに、上記の実施の形態では、ハンド部１３の先端に２つの距離可変なフィンガ部材１４Ａ、１４Ｂを含むフィンガ部１４でワークを把持したが、これに限られず、ハンド部１３の先端に台が設けられて、作業内容は、その台にワークを載せる作業であってよく、または、ハンド部１３の先端にフックが設けられて、作業内容は、そのフックにワークを引っ掛ける作業であってよい。これらのいずれの場合にも、作業内容は台に乗せたワークやフックに掛けたワークを移動させる作業を伴ってよい。
【００６９】
さらに、上記の実施の形態では、ロボット１０がワークを持ち上げて移動させたが、本発明のロボットはこれに限らず、例えば、ワークの所定の箇所を所定の方向に押すことにより、ワークが乗せられている台の上でワークを滑らせながら移動させるものであってもよい。
【００７０】
なお、上記の実施の形態では、ユーザがワークを実際に指で摘まみ上げることで、ワークに対する作業を教示するが、これをロボット１０で再現した際に、ロボット１０のフィンガ部１４におけるフィンガ部材１４Ａ、１４Ｂ同士を近づける方向のトルクが足りず、及び／又はフィンガ部材１４Ａ、１４Ｂとワークとの間の摩擦係数が小さく、重力の大きいワークを持ち上げられないことがある。この場合には、制御部１６は、指示の際にエラーとして検出する。
【００７１】
具体的には、フィンガ部材１４Ａ、１４Ｂがワークの把持位置の間の距離より小さくなっている場合に、制御部１６は、フィンガセンサ１３３からその旨の情報を受けて、フィンガ部１４がワークを把持できていないと判断することができる。また、制御部１６は、把持してワークを持ち上げた直後にカメラ１５でフィンガ部１４付近を撮影し、把持後の移動が開始された後のアーム部１２やハンド部１３の駆動とワークの移動とが一致しないことを検知して、フィンガ部１４がワークを把持できていないと判断することもできる。
【００７２】
なお、上記の実施の形態では、ロボット１０は、ワークの把持位置及びワークの移動先の位置及び姿勢のみを教示情報として記憶しておいたが、ワークに対する作業内容を教示する際にユーザの腕の位置及び延伸方向を更に記憶して、指示を受けた場合に、アーム部１２は、教示の際のユーザの腕の位置及び延伸方向と一致するアプローチで先端に把持されたワークを移動先に移動させてよい。これにより、ワークの周囲の他のものとアーム部１２との干渉を避けてワークを所望の位置まで所望の姿勢となるように移動させることができる。
【００７３】
また、上記の実施の形態では、ロボット１０にワークの把持位置を教示する際に、ユーザが２本の指でワークを把持したときの把持位置を検出して教示情報としたが、本発明は、これに限られない。ユーザがワークを２本指でピックアップした後に、ワークとそれを把持している指との位置及び姿勢をカメラ１５で撮影し、その撮影画像に基づいて、ユーザに把持されているワークの把持位置を求めてもよい。
【００７４】
本発明のロボットは、様々な実施の形態に応用できる。本発明のロボットは、例えば、所望の物品をユーザの手元まで移動させるためのロボットであってよい。この場合には、制御部１６は、アームセンサ１２２、ハンドセンサ１３２、フィンガセンサ１４２のいずれかのトルクセンサで検知したときに、ユーザが当該物品をキャッチしたと判断して、フィンガ部１４による把持を解除してよい。また、本発明のロボットは、所望の部品を組み付けることにより製品を完成させるロボットであってよく、タブレット端末を把持してユーザに向くように保持するロボットであってもよい。
【００７５】
（位置姿勢推定装置）
次に、制御部１６がワーク（以下、「物体」ともいう。）の位置及び姿勢を認識（推定）する技術について、第１及び第２の実施の形態を説明する。図５（ａ）は記憶部１７にＤＢ画像が記憶されたワークおよびその座標系の一例を示し、図５（ｂ）は記憶部１７に記憶されたワークの情報の例を示す図である。図５（ａ）に示すような三角柱形状を有する物体をワークの例として説明する。この物体には、物体固有の座標系が設定されている。この物体固有の座標系が基準となる座標系（例えば、ロボット装置が規定する座標系）に対してどの方向にどの程度が傾いているかによって物体の姿勢を定義することができる。
【００７６】
図５（ａ）に見られるように、物体を（１，０，０）方向に向かって撮影すると長方形の画像となり、（−１，０，０）方向に向かって撮影すると同じく長方形の画像となる。また、（０，１，０）方向に向かって撮影すると、右下に直角の頂点がくる直角三角形の画像となり、（０、−１，０）方向に向かって撮影すると、左下に直角の頂点がくる直角三角形の画像となり、（０，０，１）方向および（０，０、−１）方向に向かって撮影すると長方形の画像となる。
【００７７】
図５（ｂ）に示すように、記憶部１７は、物体の撮影画像とそれを撮影した撮影方向のデータを対応付けて記憶している。図５（ｂ）では、簡単のため、６つの撮影方向からの画像を示したが、実際には、全方位から撮影した多数の画像データを記憶している。また、撮影時のカメラ１５の回転角度についても、０度の場合のみを示しているが、実際には、それぞれの撮影方向について、カメラ１５の回転角度を変えたときの撮影画像が記憶されている。
【００７８】
制御部１６は、カメラ１５にて撮影した物体の画像と記憶部１７に記憶されたＤＢ画像とを照合して、ワークの位置及び姿勢を求める位置姿勢推定装置１６０としての機能を有している。図６は、位置姿勢推定装置１６０として機能する制御部１６の構成を示すブロック図である。位置姿勢推定装置１６０は、図６に示すように、撮影画像取得部１６１と、マッチング部１６２と、予測画像抽出部１６３と、撮影方向決定部１６４と、位置姿勢計算部１６５の機能を有している。
【００７９】
撮影画像取得部１６１は、カメラ１５に対して撮影指示を出し、カメラ１５にて撮影された画像を受信して取得する機能を有する。なお、撮影画像取得部１６１からカメラ１５に対して出す撮影指示には、撮影方向やカメラの回転角度の指示も含まれる。マッチング部１６２は、カメラ１５での撮影画像と記憶部１７に記憶された画像との類似度を求め、類似度が所定の閾値以上の画像を抽出する機能を有する。画像どうしの類似度を求める方法としては、輝度勾配方向を用いたテンプレートマッチング等の公知の方法を採用することができる。
【００８０】
また、マッチング部１６２は、撮影画像と記憶部１７に記憶された画像とのマッチングを行う際の両画像の撮影条件とを同一にすべく、撮影時におけるカメラ１５から物体までの距離に基づいて撮影画像の大きさを正規化することが望ましい。例えば、記憶部１７に記憶された画像がカメラ１５から物体までの距離が１０ｃｍで撮影され、姿勢推定時にはカメラ１５から物体までの距離が２０ｃｍで撮影された場合、撮影画像における物体の大きさを２倍に拡大し、マッチングを適切に行えるようにする。なお、カメラ１５から物体までの距離を求める方法としては、光波や電波等を用いた公知の測距技術を採用することができる。また、例えば、物体が、カメラ１５との位置関係が既知の作業台に載置されている場合には、作業台の中心位置までの距離を物体までの距離とすることができる。この際に、物体が作業台上のどこにあるかを求め、作業台上の物体の位置によって距離を補正することとしてもよく、これにより、より正確な距離を求めることができる。
【００８１】
予測画像抽出部１６３は、次の撮影方向（第２の撮影方向）から物体を撮影したときに得られるであろう予測画像を、記憶部１７から抽出する機能を有する。具体的には、マッチング部１６２にて、第１の撮影方向から撮影した画像に対する類似度が所定の閾値以上の複数の画像を候補画像として求める。予測画像抽出部１６３は、候補画像のそれぞれに対応付けられた撮影方向に、第１の撮影方向から第２の撮影方向への相対的な移動量を加えた撮影方向を求め、当該撮影方向に対応付けられた画像を記憶部１７から読み出す。
【００８２】
ここで、予測画像抽出部１６３の機能について、具体例を挙げて説明する。記憶部１７には、物体の画像がその撮影方向に関連付けて記憶されているので、現在の撮影方向（第１の撮影方向）から次の撮影方向（第２の撮影方向）への移動方向および移動角度が決まれば、候補画像に対する予測画像の撮影方向を特定することができる。
【００８３】
図７（ａ）及び図７（ｂ）は、物体の撮影方向の一例を示す図である。第１の撮影方向から物体を撮影したときに、縦長の長方形の画像が撮影されたとする。この場合、マッチング部１６２によって、図５（ｂ）に示す記憶部１７に記憶された画像データとのマッチングを行うと、類似度の高い画像として、（１，０，０）方向または（−１，０，０）方向から撮影した画像が抽出され、これらが候補画像となる。つまり、縦長の長方形の画像は、図７（ａ）および図７（ｂ）に示すいずれかの方向から撮影した画像であると予想される。
【００８４】
次に、第２の撮影方向を第１の撮影方向に向かって右側からとする（つまり、撮影方向を水平に９０度回転させる）と、第１の撮影方向が図７（ａ）に示すように（１，０，０）方向であった場合には、第２の撮影方向は（１，０，０）方向となり、記憶部１７に記憶されたデータによれば、予測画像として右下を直角の頂点とする直角三角形が抽出される（図８（ａ）参照）。第１の撮影方向が図７（ｂ）に示すように（−１，０，０）方向であった場合には、第２の撮影方向は（０，−１，０）方向となり、記憶部１７に記憶されたデータによれば、予測画像として左下を直角の頂点とする直角三角形が抽出される（図８（ｂ）参照）。このように、予測画像抽出部１６３は、候補画像の撮影方向が正しいとした場合の予測画像を抽出する。
【００８５】
撮影方向決定部１６４は、複数の候補画像のそれぞれに対する予測画像どうしの類似度が低くなる撮影方向を第２の撮影方向として決定する。上に示した例では、図８（ａ）と図８（ｂ）に示す予測画像は直角三角形の向きが逆であり、類似度が低いので、このような撮影方向を第２の撮影方向とする。
【００８６】
もし、図７（ａ）及び図７（ｂ）に示すような候補画像がある場合に、例えば、第２の撮影方向を上から下への方向とすると、いずれの候補画像に対する予測画像も長方形形状の画像となり、類似度が高い画像となる。撮影方向決定部１６４は、このように予測画像の類似度が高くなるような撮影方向を第２の撮影方向として決定しないようにする。予測画像どうしの類似度が高いと、第２の撮影方向から撮影された画像と、予測画像とのマッチング結果は似たような値になり、撮影方向の候補を絞り込むことができないからである。
【００８７】
図６に戻って、位置姿勢推定装置１６０の構成について説明する。位置姿勢計算部１６５は、撮影画像から物体の撮影方向を求め、求めた撮影方向とカメラ１５の向きとから、物体の姿勢（物体の座標系の傾き）を計算する機能を有する。
【００８８】
図９は、第１の実施の形態の位置姿勢推定装置１６０の動作を示すフローチャートである。位置姿勢推定装置１６０は、まず、推定対象の物体をカメラ１５にて撮影する（ステップＳ９１）。具体的には、制御部１６の撮影画像取得部１６１がカメラ１５に対して撮影指示を行い、撮影された画像を取得する。なお、このときの撮影方向が第１の撮影方向である。
【００８９】
次に、位置姿勢推定装置１６０のマッチング部１６２は、撮影画像と、記憶部１７に記憶された画像とのマッチングを行い、類似度が所定の閾値以上の画像と、その撮影方向およびカメラ１５の回転角度を記憶部１７から抽出する（ステップＳ９２）。ここでは、記憶部１７に記憶された全ての画像とのマッチングを行い、類似度が所定の閾値以上の全ての画像を抽出する。ここで抽出される多数の画像の中に、真の撮影方向に相当する撮影方向に対応付けられた画像が含まれているが、この時点では、通常は一つの画像（及びその撮影方向）に絞り込めない。ここで抽出された画像を、候補画像という。
【００９０】
続いて、位置姿勢推定装置１６０の撮影方向決定部１６４は、次の撮影方向（第２の撮影方向）を決定する（ステップＳ９３）。この際、撮影方向決定部１６４は、予測画像抽出部１６３と連携して撮影方向を決定する。すなわち、予測画像抽出部１６３にて、第１の撮影方向から第２の撮影方向への移動方向及び移動角度に基づいて、それぞれの候補画像に対する予測画像を求め、撮影方向決定部１６４は、予測画像どうしの類似度が所定の閾値以下になる方向を第２の撮影方向として決定する。
【００９１】
位置姿勢推定装置１６０は、推定対象の物体を第２の撮影方向から撮影する（ステップＳ９４）。具体的には、制御部１６の撮影画像取得部１６１がカメラ１５に対して、カメラ１５の移動方向および移動角度を指示するとともに撮影指示を行い、撮影された画像を取得する。
【００９２】
次に、位置姿勢推定装置１６０は、撮影画像と、予測画像とのマッチングを行う（ステップＳ９５）。予測画像は、ステップＳ２で求めた候補画像のそれぞれに対応するものである。したがって、このステップでは、記憶部１７に記憶されている全ての画像とのマッチングを行うわけではない。撮影画像と複数の予測画像との類似度を求めた結果、類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像があるか否か、つまり、他よりも突出して類似度の高い予測画像があるか否かを判定する（ステップＳ９６）。類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像がある場合には（ステップＳ９６でＹＥＳ）、位置姿勢推定装置１６０の位置姿勢計算部１６５は、当該予測画像に対応付けられた撮影方向と、カメラ１５の向きとに基づいて、物体の姿勢を計算し、計算して求めた物体の姿勢のデータを出力する（ステップＳ９８）。
【００９３】
第２の撮影方向から撮影した画像と予測画像とのマッチングの結果、類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像がない場合には（ステップＳ９６でＮＯ）、類似度が所定の閾値以上の予測画像を候補画像として（ステップＳ９７）、さらに別の撮影方向（別の第２の撮影方向）を決定して物体を撮影し、予測画像とのマッチングを行って候補画像の絞り込みを行う（ステップＳ９３〜ステップＳ９６）。そして、類似度が他の予測画像の類似度よりも所定の閾値以上高い予測画像があるか否かを判定し（ステップＳ９６）、他よりも類似度が突出して高い予測画像が見つかるまで、撮影方向を変えて繰り返し処理を行う。以上、第１の実施の形態の姿勢推定装置１の構成および動作について説明した。
【００９４】
第１の実施の形態の位置姿勢推定装置１６０は、第１の撮影方向から撮影した画像と記憶部１７に記憶された画像とのマッチングにより複数の候補画像を抽出した後、それぞれの候補画像について、所定の移動方向に所定の移動角度だけ撮影方向を変えた第２の撮影方向からの撮影で得られる予測画像を求め、予測画像と撮影画像とのマッチングを行うので、効率的に候補画像の絞り込みを行い、撮影方向を決定することができる。
【００９５】
また、本実施の形態では、第２の撮影方向を決定する際に、予測画像どうしの類似度が低くなるように決定しているので、予測画像と撮影画像とのマッチング結果に有意差が生じ、少ない撮影回数で撮影方向を絞り込むことができる。
【００９６】
［第２の実施の形態］
図１０は、第２の実施の形態の位置姿勢推定装置２６０の構成を示すブロック図である。第２の実施の形態の位置姿勢推定装置２６０の基本的な構成は、第１の実施の形態と同じであるが、制御部１６が、候補画像を絞り込む制候補画像絞込部２６６を有している点が異なる。
【００９７】
制候補画像絞込部２６６は、撮影された画像に複数の物体が映っている場合に、それらの位置関係に基づいて、同時に存在し得る物体の組合せかどうかを判断することで、候補画像を絞り込む機能を有している。簡単な例を挙げると、例えば、撮影された画像に２つの物体が映っている場合に、それぞれの画像を個別に見た場合には、各辺の長さが１００ｍｍの立方体が候補として挙げられたとする。しかし、映っている画像から判断して、２つの物体の画像の距離が１００ｍｍ未満である場合には、両方ともが各辺の長さが１００ｍｍの立方体であることはあり得ず、いずれか一方または両方の候補が誤りであると分かる。制候補画像絞込部２６６は、こうした制約条件を利用して候補画像を絞り込む機能を有する。
【００９８】
図１１（ａ）は、カメラにて撮影した画像に映った物体の画像の例を示す図である。図１１（ａ）に示す例では、画像アにかかる物体と、画像イにかかる物体とが映っている。図１１（ｂ）は、画像アに係る物体の候補画像と画像イに係る物体の候補画像の組合せ可能性を示す図である。図１１（ｂ）に示す表において、縦方向には、画像アと類似度の高い候補画像に係る物体とその撮影方向とを記載している。なお、ここでは、簡単のため撮影方向を「下方向」「右方向」等と記載しているが、実際には、上述したとおり、撮影方向はベクトル等によって規定される。
【００９９】
図１１（ｂ）に示す例では、画像アの候補としては、（ｉ）「物体Ａ」を「下方向」
に見た画像、（ｉｉ）「物体Ａ」を「上方向」に見た画像、（ｉｉｉ）「物体Ｂ」を「右方向」に見た画像、（ｉｖ）「物体Ｆ」を「右下方向」に見た画像、（ｖ）「物体Ｈ」を「左方向」に見た画像、という５つの可能性がある。画像イの候補としては、（ｉ）「物体Ａ」を「右方向」に見た画像、（ｉｉ）「物体Ｃ」を「右方向」に見た画像、（ｉｉｉ）「物体Ｄ」を「左上方向」に見た画像、（ｉｖ）「物体Ｇ」を「上方向」に見た画像、という４つの可能性がある。図１１（ｂ）に示すように、画像ア、画像イを個別に分析すると、画像アについて５つ、画像イについて４つの候補が存在する。
【０１００】
制候補画像絞込部２６６は、画像ア、イから求めた各候補画像が、同時に存在し得るものかどうかを判定する。例えば、画像アが「物体Ａ」を「下方向」から撮影したものであり、画像イが「物体Ａ」を「右方向」から撮影したものであったとした場合、図１１（ａ）に示す画像ア、イの位置関係から見て両者が同時に存在し得るか否か、つまり、上に述べたように、画像アにかかる物体Ａと、画像イにかかる物体Ａとが干渉してしまうような場合には、同時に存在し得ないと判定する。図１１（ｂ）に示す例では、このような組合せは存在しないとして「×」が記載されている。なお、存在可能な組合せには「○」を記載している。制候補画像絞込部２６６は、候補画像どうしの各組合せについて、図８（ｂ）に示すように、その存在可能性を求める。なお、この組合せの存在可能性の判断は、最初に撮影を行って、候補画像を求めたときに行えばよい。撮影方向を変えて、第２の撮影方向から撮影して予測画像とのマッチングを行う際には、最初に求めた候補画像の範囲内でマッチングを行うから、新たな候補画像は出てこないからである。
【０１０１】
図１１（ｂ）に示す例では、画像アに係る候補の一つである「物体Ｂ」は、画像イのいずれの候補画像とも組合せ可能性がない。このような場合には、画像アが「物体Ｂ」であるとすると、画像イに対応する物体が存在しないことになってしまうので、制候補画像絞込部２６６は、画像アは「物体Ｂ」ではないと判断し、これを候補画像から除外する。同様に、画像イに係る候補の一つである「物体Ｇ」も候補画像から除外する。
【０１０２】
また、例えば、画像アに係る物体について、第１の実施の形態と同様に、第２の方向から撮影した画像を取得してマッチングを行い、画像アに係る物体が「物体Ｆ」であると確定したとすると、「物体Ｆ」と両立し得る画像イに係る物体は「物体Ｃ」しかないので、画像候補絞込部１９は、画像イに係る物体が「物体Ｃ」であると判断する。この場合、画像イについては、別方向から撮影した画像のマッチングを行う必要がなくなる。
【０１０３】
以上のように、第２の実施の形態の姿勢検出装置は、制候補画像絞込部２６６によって候補画像を絞り込むことにより、マッチングを行う回数を減らし、画像マッチングに必要な計算処理負担を軽減することができる。
【０１０４】
なお、第２の実施の形態では、２つの画像の同時存在可能性を例として説明したが、撮影された画像中に３つ以上の物体の画像が映っている場合には、それらの画像に係る物体の同時存在可能性に基づいて、候補画像を絞り込んでもよい。
【０１０５】
以上、本発明の姿勢推定装置および姿勢推定方法について、実施の形態を挙げて詳細に説明したが、本発明は上記した実施の形態に限定されるものではない。
【０１０６】
上記した実施の形態では、撮影方向決定部１６４は、複数の候補画像に対する予測画像どうしの類似度を考慮して第２の撮影方向を決定する例について説明したが、第２の撮影方向は、ランダムに決定してもよい。また、推定対象となる物体の形状の特徴に応じて決定することとしてもよい。例えば、９０度回転対象の物体の場合には、９０度より小さい角度だけ移動する等である。
【０１０７】
上記した実施の形態においては、第２の撮影方向からの撮影画像と予測画像との類似度を求めた結果、他よりも突出して高い類似度を有する予測画像が見つかるまで、撮影方向を変えて絞り込みを行う例について説明したが、ステップＳ９６の判定処理を行わず、第２の撮影方向からの画像との類似度が最も高い予測画像に基づいて撮影方向を決定することとしてもよい。この場合も、第１の撮影方向および第２の撮影方向からの撮影画像に基づいて物体の姿勢の推定の精度を高めることができる。
【０１０８】
上記した実施の形態において、記憶部１７には、物体の撮影画像とそれを撮影した撮影方向のデータを対応付けて記憶している例について説明したが、物体のＣＡＤデータ等がある場合には、物体を実際に撮影しなくても、物体を回転させたデータを計算して、記憶しておいてもよい。
【０１０９】
上記した実施の形態において、記憶部１７に、複数の物体の画像データを記憶することとしてもよい。この構成により、位置姿勢推定装置１６０は、複数の物体の姿勢を推定することができる。
【０１１０】
（指示対象物表示装置）
次に、作業実施工程のステップＳ４１における指差し方向にあるワークを認識するための技術について詳細に説明する。以下では、ユーザが指を指している対象にレーザ光を照射することで、ユーザ自身がどこを指しているかを認識できる指示対象物表示装置について、第１〜第３の実施の形態を説明する。この指示対象物表示装置１００は、上記のロボット１０において構成されてもよいし、ロボット１０とは別の装置として構成されてもよい。以下では、指示対象物表示装置１００がロボット１０において構成される例を説明する。
【０１１１】
［第１の実施の形態］
図１２は、実施の形態の指示対象物表示装置１００の構成を示す図である。指示対象物表示装置１００は、カメラ１５と、制御部１６と、記憶部１７と、発光部１８とを有している。即ち、上記のロボット１０に発光部１８を追加することで指示対象物表示装置１００が構成される。
【０１１２】
記憶部１７には、ユーザがいる環境、すなわち、ユーザの周囲にある物体、当該物体のある位置および姿勢などのデータを記憶する。記憶部１７に記憶するデータは、ユーザの周囲の物体が静的なもの（例えば、壁、天井、キッチン、食器棚、エアコン等）の場合にはあらかじめデータを取得して記憶しておいてもよい。ユーザの周囲にある物体が移動可能なもの（リモコン、本、コップ等）の場合には、指示対象物の表示を行う際に、カメラ１５にてユーザの周囲の環境を撮影し、撮影した画像を解析することによって物体のデータを取得して記憶することとしてもよい。また、ユーザの周囲の物体が静的なものと動的なものの組合せの場合、静的なものについてはあらかじめ記憶部１７に記憶しておき、動的なものは指示対象物の表示を行う際に記憶することとしてもよい。
【０１１３】
カメラ１５は、撮影した画像からユーザの指差し方向を検出するため、複数の方向から物体を撮影する。複数の方向から物体を撮影するために、複数台のカメラ１５を備えることとしてもよいし、カメラ１５を移動体に搭載し、カメラ１５を移動して複数の方向から撮影することとしてもよい。
【０１１４】
発光部１８は、光を照射する機能を有する。発光部１８は、例えば、レーザダイオードであり、照射方向を変更可能な構成を有している。また、発光部１８は、移動体に搭載されており、その発光の起点を変えることができる。
【０１１５】
制御部１６は、カメラ１５にて撮影した画像を取得する撮影画像取得部１６６と、撮影画像からユーザの指差し方向を求め、ユーザの指差し方向にある物体（つまり、指差し方向の延長線上にある物体）を指示対象物として検出する指示対象物検出部１６７と、指示対象物に光を照射するように発光部１８を制御する発光制御部１６８を有している。
【０１１６】
指示対象物検出部１６７は、まず、撮影画像を解析してユーザの指差し方向を求める。具体的には、ユーザの指先が空間座標内のどこにあって、どの方向を向いているかを計算する。撮影画像からユーザの指差し方向を求める方法としては、例えば、特開２００９−１５１４１９号公報に記載された方法や、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に記載された方法等の公知の方法を採用することができる。
【０１１７】
指示対象物検出部１６７は、記憶部１７から物体に関するデータを読み出し、ユーザの指差し方向と交差する物体を求め、当該物体を指示対象物として検出する。図１３（ａ）は、指差し方向が交差する物体の例を示す図である。このように指差し方向が物体に交差する場合に、その物体が指示対象物となる。
【０１１８】
指示対象物検出部１６７は、指差し方向が物体の近傍を通る場合にも、当該物体を指示対象物として検出する機能を有する。指示対象物検出部１６７は、物体に対して、その物体の実際の大きさよりも大きい拡張領域を設定する。拡張領域の大きさは、例えば、物体の実際の大きさに対して所定の倍率（例えば、１．５倍）を乗じた大きさとすることができる。拡張領域と物体の存在領域を合わせた領域が、本発明の「物体を含む所定の領域」に相当する。
【０１１９】
図１３（ｂ）は、指差し方向が物体の拡張領域と交差する例を示す図である。図１３（ｂ）に示すように指差し方向が物体の拡張領域と交差する場合にも、指示対象物検出部１６７は、当該物体を指示対象物として検出する。
【０１２０】
また、指示対象物検出部１６７は、指差し方向に複数の物体がある場合には、指差し方向との交差位置が最も中心近くにある物体を指示対象物として検出する。図１４に示すように指差し方向に物体Ａと物体Ｂがあり、ユーザの指差し方向の延長線が物体Ａの拡張領域と交差し、物体Ｂの存在領域と交差しているとする。図１４を参照すると、それぞれの交差位置と物体中心との距離を見ると、物体Ｂとの交差位置の方が物体Ａとの交差位置よりも、物体中心に近い。このような場合には、指示対象物検出部１６７は、物体Ｂを指示対象物として検出する。これにより、複数の物体がある場合に、ユーザの意図に合った物体を指示対象物として検出することができる。
【０１２１】
発光制御部１６８は、指示対象物として検出された物体に対して光を照射するように、発光部１８の発光方向を制御する機能を有する。発光制御部１６８は、指示対象物である物体の表面の視認しやすい位置に光を照射する。本実施の形態では、発光制御部１６８は、指差し方向と物体（またはその拡張領域）との交差位置に対して照射するのではなく、交差位置から物体の中心に寄った位置に対して光を照射する。これにより、ユーザは、物体を見たときに光が照射されているかどうかを容易に判断することができる。
【０１２２】
図１５は、指差し方向が交差する位置と、発光による照射位置との関係を示す図である。図１５の左側の図は拡張領域を含む所定の領域の座標系を示し、右側の図は物体の座標系を示す図である。なお、図１５では、簡単のため２次元座標で説明しているが、実際には３次元座標である。発光制御部１６８は、照射位置を物体の中心（座標系の原点）に寄せるため、指差し方向の交差位置の座標値に２／３を乗じて、照射位置の座標を計算する。本実施の形態の指示対象物表示装置１００の記憶部１７には、交差位置の座標を照射位置の座標に変換するためのテーブルが記憶されている。
【０１２３】
図１６は、実施の形態の指示対象物表示装置１００の動作を示すフローチャートである。指示対象物表示装置１００は、まず、カメラ１５にてユーザを撮影し（ステップＳ１６１）、指示対象物検出部１６７にて、撮影した画像からユーザの指差し方向を検出する（ステップＳ１６２）。続いて、指示対象物検出部１６７は、記憶部１７からユーザの周囲にある物体に関するデータを読み出し、物体に対して定めた所定の領域がユーザの指差し方向と交差する物体を指示対象物として求める（ステップＳ１６３）。次に、指示対象物表示装置１００の発光制御部１６８は、指差し方向と物体との交差位置から物体への照射位置を計算し（ステップＳ１６４）、発光部１８を制御して照射位置に向けて発光する（ステップＳ１６５）。指示対象物表示装置１００は、以上の処理を繰り返し行う。
【０１２４】
これにより、ユーザが指差し方向を動かした場合には、指示対象物表示装置１００は、ユーザの指差し方向に基づいて物体を検出し、その物体への照射位置を求めて照射を行うので、ユーザの指差し方向の変化に応じて、物体への照射位置も変化していく。したがって、ユーザは照射位置を見ながら、指差し方向を変えることによって、所望の物体を適切に指示することができる。
【０１２５】
また、図１４を用いて説明した内容から分かるように、本実施の形態では、物体の近傍の領域を指差すことにより物体の表面上に光が照射されるので、物体を指示するために指差し方向を動かしていくと、指差し方向が物体に近づいたときに照射位置が物体に吸いつくような動きをする。ユーザは、指差し方向を厳密に物体の方向に向けなくてもよいので、簡単に所望の物体を指示することができる。
【０１２６】
［第２の実施の形態］
次に、第２の実施の形態の指示対象物表示装置について説明する。第２の実施の形態の指示対象物表示装置の基本的な構成は、第１の実施の形態の指示対象物表示装置１００と同じであるが、第２の実施の形態では、ユーザの指先の震えによって照射位置が震えないような工夫を行った点が異なる。
【０１２７】
図１７は、第２の実施の形態の指示対象物表示装置の動作を示すフローチャートである。指示対象物表示装置は、まず、カメラ１５にてユーザを撮影し（ステップＳ１７１）、指示対象物検出部１６７にて、撮影した画像からユーザの指差し方向を検出し（ステップＳ１７２）、求めた指差し方向のデータを記憶部１７に記憶する（ステップＳ１７３）。
【０１２８】
次に、第２の実施の形態の指示対象物表示装置は、直前の所定時間（例えば、０．３秒）内における指差し方向のデータを記憶部１７から読み出し、指差し方向の動きの量が所定の閾値（例えば、１度）より大きいか否かを判定する（ステップＳ１７４）。その結果、指差しの動きの量が所定の閾値以内である場合には（ステップＳ１７４でＮＯ）、ユーザを撮影して（ステップＳ１７１）、ユーザの指差し方向を検出する処理（ステップＳ１７２）に戻る。
【０１２９】
指差しの動きの量が所定の閾値より大きい場合（ステップＳ１７４でＹＥＳ）、指示対象物検出部１６７は、記憶部１７からユーザの周囲にある物体に関するデータを読み出し、物体に対して定めた所定の領域がユーザの指差し方向と交差する物体を指示対象物として求める（ステップＳ１７５）。次に、指示対象物表示装置の発光制御部１６８は、指差し方向と物体との交差位置から物体への照射位置を計算し（ステップＳ１７６）、発光部１８を制御して照射位置に向けて発光する（ステップＳ１７７）。指示対象物表示装置は、以上の処理を繰り返し行う。
【０１３０】
ユーザの指先の震えは無意識に起こってしまう現象であり、この現象はユーザが物体を指示しようとしているものではない。第２の実施の形態では、所定の時間内における所定の閾値より小さい細かい動きを照射位置に反映しないようにすることにより、ユーザの意図に合った物体の指示を実現することができる。
【０１３１】
［第３の実施の形態］
次に、第３の実施の形態の指示対象物表示装置について説明する。第３の実施の形態の指示対象物表示装置の基本的な構成は、第１の実施の形態の指示対象物表示装置と同じであるが、第３の実施の形態では、ユーザが指先を素早く動かして指差し方向を変えたときには、その移動の過程においては、指差し方向と物体の拡張領域との交差位置を検出しないようにしている点が異なる。
【０１３２】
図１８は、第３の実施の形態の指示対象物表示装置の動作を示すフローチャートである。指示対象物表示装置は、まず、カメラ１５にてユーザを撮影し（ステップＳ１８１）、指示対象物検出部１６７にて、撮影した画像からユーザの指差し方向を検出する（ステップＳ１８２）。続いて、指示対象物検出部１６７は、指差し方向の移動速度を計算する（ステップＳ１８３）。移動速度の計算は、第２の実施の形態にて説明したのと同様に、求めた指差し方向のデータを記憶部１７に記憶しておき、記憶部１７に記憶された時系列データを用いて速度を計算することによって行う。
【０１３３】
指示対象物表示装置は、移動速度が所定の閾値以下か否かを判定する（ステップＳ１８４）。この結果、移動速度が所定の閾値以下の場合には（ステップＳ１８４でＹＥＳ）、第１の実施の形態と同様の処理を行う。すなわち、指示対象物表示装置は、記憶部１７からユーザの周囲にある物体に関するデータを読み出し、物体に対して定めた所定の領域がユーザの指差し方向と交差する物体を指示対象物として求める（ステップＳ１８５）。次に、指示対象物表示装置の発光制御部１６８は、指差し方向と物体との交差位置から物体への照射位置を計算し（ステップＳ１８６）、発光部１８を制御して照射位置に向けて発光する（ステップＳ１８７）。
【０１３４】
一方、ユーザの指先の移動速度が所定の閾値より大きい場合には（ステップＳ１８４でＮＯ）、指示対象物表示装置は、指差し方向と物体が交差する位置を求める（ステップＳ１８８）。このステップでは、物体に拡張領域を設定せず、物体と指差し方向とが交差する位置を求める。そして、発光部１８は、求めた交差位置に向けて発光する（ステップＳ１８９）。
【０１３５】
本実施の形態によれば、指差し方向が所定の閾値以下の速度で移動している場合には、移動中の照射位置は、第１の実施の形態で説明したように、物体に吸いつくような動きをするので、ユーザがその途中にある物体を指示することが容易である。指差し方向が所定の閾値より大きい速度で移動している場合には、照射位置は指差し方向をそのまま示し、滑らかな動きをする。指差し方向を素早く動かしている場合には、所望の物体に向けて指差し方向を移動しており、その間にある物体を指示する意図がないと考えられるから、物体に吸いつくような動き方をしないのがユーザの意図に適う。
【０１３６】
なお、本実施の形態では、指差し方向の移動速度が所定の閾値以下か否かにより、照射位置の求め方を変える例について説明したが、指差し方向の移動加速度に基づいて判断してもよいし、移動速度と移動加速度の両方を用いてもよい。
【０１３７】
また、本実施の形態では、指差し方向の移動速度が所定の閾値より大きい場合には、指差し方向をそのまま照射する例について説明したが、指差し方向の移動速度が所定の閾値より大きい場合には、指差し方向を照射するのを停止してもよい。上述したように、指差し方向を素早く動かしているときには物体を指示する意図がないと考えられるので、照射しなくても問題はなく、かつ、物体との交差位置を求める処理が不要になるので、処理が簡単になる。
【０１３８】
上記した第１〜第３の実施の形態において、物体の近傍を指したときにも物体を検出できるように物体に対して拡張領域を設定する例について説明したが、拡張領域を設定する物体とそうでない物体とを設けてもよい。例えば、大きさが所定の閾値以下の物体に対しては拡張領域を設定し、所定の閾値より大きい物体には拡張領域を設定しない構成とすることもできる。小さい物体を正確に指し示すのは難しいので拡張領域を設定することにより、小さい物体を容易に指示できるようにできる。逆に大きい物体については、拡張領域がなくとも指し示すのが簡単であるし、逆に、大きい物体に拡張領域を設定すると、他の物体を指示したいのに、大きい物体が邪魔になるような事態も考えられる。
【０１３９】
また、移動可能な物体に拡張領域を設定し、静的な物体に対しては拡張領域を設定しない構成とすることもできる。例えば、ロボットに対して指示を行う場合には、物を持って来させたり、片づけさせたりといったように、物体の移動を伴うことが多いので、動的な物体を指し示す場合が多く、壁や天井などの静的なものを指示することは少ないと考えられる。そこで、動的な物体には拡張領域を設定して、物体の指示を容易にすることが実用的である。
【０１４０】
また、拡張領域を設定する際には、物体の全周にわたって、均一に拡大した領域である必要はなく、例えば、鉛直方向より水平方向に大きく拡大した拡張領域を設定してもよい。人間は指差し方向を水平に動かす場合が多いので、拡張領域を水平方向に大きくすることにより、指差し方向にある物体を適切に捉えることができる。また、拡張領域の形状は、ユーザの指差しの癖を学習して、ユーザに合った形状としてもよい。例えば、物体の実際の位置よりも右側を指してしまいがちなユーザに対しては、右側が大きい拡張領域とすることにより、物体の指示を容易に行えるようになる。
【０１４１】
上記した第１〜第３の実施の形態では、複数の物体を検出した際には、複数の物体の中で最も中心に近いところが指示された物体を指示対象物とする例について説明したが（図１４参照）、複数の物体のうち、ユーザに最も近い物体を指示対象物としてもよい。
【０１４２】
また、別の態様として、撮影画像から指差しを行っている方のユーザの肘の角度を求め、肘が伸びている場合には、遠くにある物体を指示対象物とし、肘が曲がっている場合には近くにある物体を指示対象物としてもよい。これにより、ユーザの意図を推定して適切に指示対象物を照射することができる。
【０１４３】
また、指差し方向の移動を検出したときに、その指先の移動軌跡の曲率半径に基づいてユーザの意図を推定して、指示対象物を決定してもよい。例えば、指先の移動軌跡の曲率半径が大きいときには、肘や手首を回すのではなく、肩を回すことによって指差し方向を変えていると考えられるので、この場合は遠くの物体を指示対象物とする意図であると推定できる。この場合は、移動後の指差し方向にある物体のうちで、遠くにある物体を指示対象物として検出する。
【０１４４】
上記した第１〜第３の実施の形態においては、交差位置から照射位置を求める際に、指差し方向の交差位置の座標値に２／３を乗じて、照射位置の座標を計算する例について説明したが、交差位置から照射位置への変換方法（変換テーブル）は必ずしも等倍である必要はなく、様々なバリエーションが考えられる。例えば、拡張領域を含む所定の領域を物体の中心付近か否かで２つの領域に分け、交差位置が中心付近の領域に入っているときにはその交差位置をそのまま照射位置とし、交差位置が外側の領域に入っているときには、照射位置が中心付近の領域に入るように座標変換してもよい。また、交差位置にかかわらず、物体の中心を照射位置とするようにしてもよい。
【産業上の利用可能性】
【０１４５】
本発明は、簡単かつ直感的な方法でロボットにワークに対する作業を教示できるという効果を有し、ワークに対して作業を行うロボット及びロボット制御方法等として有用である。
【符号の説明】
【０１４６】
１０  アーム型ロボット
１１  ベース
１２  アーム部
１２Ａ  第１アーム
１２Ｂ  第２アーム
１３  ハンド部
１４  フィンガ部
１４Ａ、１４Ｂ  フィンガ部材
１５  カメラ
１６  制御部
１７  記憶部
１８  発光部
２１  第１軸
２２  第２軸
２３  第３軸
２４  第４軸
２５  第５軸
２６  第６軸
１２１  アクチュエータ
１２２  アームセンサ
１３１  アクチュエータ
１３２  ハンドセンサ
１４１  アクチュエータ
１４２  フィンガセンサ
１５１  カメラ制御部
１６０  位置姿勢推定装置
１６１  撮影画像取得部
１６２  マッチング部
１６３  予測画像抽出部
１６４  撮影方向決定部
１６５  位置姿勢計算部
１６６  撮影画像取得部
１６７  指示対象物検出部
１６８  発光制御部
２６６  制候補画像絞込部
【図１】
0006042291.tif 000002
【図２】
0006042291.tif 000003
【図３】
0006042291.tif 000004
【図４】
0006042291.tif 000005
【図５】
0006042291.tif 000006
【図６】
0006042291.tif 000007
【図７】
0006042291.tif 000008
【図８】
0006042291.tif 000009
【図９】
0006042291.tif 000010
【図１０】
0006042291.tif 000011
【図１１】
0006042291.tif 000012
【図１２】
0006042291.tif 000013
【図１３】
0006042291.tif 000014
【図１４】
0006042291.tif 000015
【図１５】
0006042291.tif 000016
【図１６】
0006042291.tif 000017
【図１７】
0006042291.tif 000018
【図１８】
0006042291.tif 000019