(57)【要約】【課題】画像に基づいてオブジェクトの角度を推定し、かつ推定のためのデータを自律的に更新する。【解決手段】本発明のある観点によれば、オブジェクトに関する辞書データを取得する辞書データ取得機能と、オブジェクトの第１の画像を取得する画像取得機能と、第１の画像および辞書データに基づいて第１の画像におけるオブジェクトの角度を推定する第１の角度推定機能と、オブジェクトに関する物理的な操作の後に第１の画像におけるオブジェクトの角度を再推定する第２の角度推定機能と、第１の角度推定機能による推定および第２の角度推定機能による再推定の結果に応じて辞書データを更新する辞書データ更新機能とを実現するプロセッサを備える情報処理装置が提供される。【選択図】図７
2018092448.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトに関する辞書データを取得する辞書データ取得機能と、
前記オブジェクトの第１の画像を取得する画像取得機能と、
前記第１の画像および前記辞書データに基づいて前記第１の画像における前記オブジェクトの角度を推定する第１の角度推定機能と、
前記オブジェクトに関する物理的な操作の後に前記第１の画像における前記オブジェクトの角度を再推定する第２の角度推定機能と、
前記第１の角度推定機能による推定および前記第２の角度推定機能による再推定の結果に応じて前記辞書データを更新する辞書データ更新機能と
を実現するプロセッサを備える情報処理装置。
【請求項２】
前記辞書データ更新機能は、前記第１の画像と、前記第２の角度推定機能によって再推定された前記オブジェクトの角度を示す角度情報とに基づいて前記辞書データを更新する、請求項１に記載の情報処理装置。
【請求項３】
前記辞書データ更新機能は、前記第１の角度推定機能によって推定された前記オブジェクトの角度の信頼度が閾値を超えない場合に、前記第２の角度推定機能による再推定の結果に基づいて前記辞書データを更新する、請求項１または２に記載の情報処理装置。
【請求項４】
前記画像取得機能は、前記オブジェクトに関する物理的な操作の後に前記オブジェクトの第２の画像を取得し、
前記第１の角度推定機能は、前記第２の画像および前記辞書データに基づいて前記第２の画像における前記オブジェクトの角度を推定し、
前記第２の角度推定機能は、前記第１の角度推定機能が前記第２の画像および前記辞書データに基づいて推定した前記オブジェクトの角度、および前記オブジェクトに関する物理的な操作の量に基づいて、前記第１の画像における前記オブジェクトの角度を再推定する、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記画像取得機能は、前記第１の角度推定機能が前記第２の画像および前記辞書データに基づいて推定した前記オブジェクトの角度の信頼度が閾値を超えない場合、前記オブジェクトに関する物理的な操作の再実行の後に前記オブジェクトの第３の画像を取得し、
前記第１の角度推定機能は、前記第３の画像および前記辞書データに基づいて前記第３の画像における前記オブジェクトの角度を推定し、
前記第２の角度推定機能は、前記第１の角度推定機能が前記第３の画像および前記辞書データに基づいて推定した前記オブジェクトの角度の信頼度が前記閾値を超える場合、前記第１の角度推定機能が前記第３の画像および前記辞書データに基づいて推定した前記オブジェクトの角度、および前記オブジェクトに関する物理的な操作の合計量に基づいて前記第１の画像における前記オブジェクトの角度を再推定する、請求項４に記載の情報処理装置。
【請求項６】
前記オブジェクトに関する物理的な操作は、前記オブジェクトを保持する保持手段による前記オブジェクトの回転を含み、
前記第２の角度推定機能は、前記保持手段から提供される前記オブジェクトの回転量に基づいて前記第１の画像における前記オブジェクトの角度を再推定する、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記オブジェクトに関する物理的な操作は、前記画像取得機能に画像を提供する撮像装置の前記オブジェクトに対する相対的な移動を含み、
前記第２の角度推定機能は、前記撮像装置の移動量に基づいて前記第１の画像における前記オブジェクトの角度を再推定する、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項８】
前記撮像装置の移動は、前記オブジェクトを中心にした旋回移動を含む、請求項７に記載の情報処理装置。
【請求項９】
前記画像取得機能は、前記撮像装置の移動中に時系列で複数の画像を取得し、
前記第２の角度推定機能は、前記複数の画像に基づいて前記撮像装置の移動量を特定する、請求項７または８に記載の情報処理装置。
【請求項１０】
前記オブジェクトに関する物理的な操作は、前記画像取得機能に画像を提供する撮像装置が前記オブジェクトとともに移動することを含む、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項１１】
オブジェクトに関する辞書データを取得するステップと、
前記オブジェクトの第１の画像を取得するステップと、
前記第１の画像および前記辞書データに基づいて前記第１の画像における前記オブジェクトの角度を推定するステップと、
前記オブジェクトに関する物理的な操作の後に前記第１の画像における前記オブジェクトの角度を再推定するステップと、
プロセッサが、前記推定および前記再推定の結果に応じて前記辞書データを更新するステップと
を含む情報処理方法。
【請求項１２】
オブジェクトに関する辞書データを取得する辞書データ取得機能と、
前記オブジェクトの第１の画像を取得する画像取得機能と、
前記第１の画像および前記辞書データに基づいて前記第１の画像における前記オブジェクトの角度を推定する第１の角度推定機能と、
前記オブジェクトに関する物理的な操作の後に前記第１の画像における前記オブジェクトの角度を再推定する第２の角度推定機能と、
前記第１の角度推定機能による推定および前記第２の角度推定機能による再推定の結果に応じて前記辞書データを更新する辞書データ更新機能と
をプロセッサに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
画像ベースのオブジェクト認識は、近年では一般的な技術である。画像ベースのオブジェクト認識では、例えば、撮像装置によってキャプチャされた画像の特徴量を抽出し、その特徴量を辞書データとしてあらかじめ登録された特徴量とマッチングすることによって、画像に写っているオブジェクトが認識される。ここで、画像に写っているオブジェクトの角度が変化すると特徴量も変化するため、オブジェクト認識の可用性を高めるためには、オブジェクトの角度ごとに辞書データを用意する必要がある。
【０００３】
特許文献１，２は、画像ベースのオブジェクト認識において、オブジェクトの角度ごとに辞書データを用意するための技術の例である。特許文献１には、オブジェクトを４５度間隔で回転させて得られる８枚の画像に基づいてオブジェクトを認識する技術が記載されている。特許文献２には、オブジェクトを水平角方向および天頂角方向に５度単位などで回転させて得られる多数の画像から共通部分を認識することによってオブジェクトのモデルを学習する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３４６１５２号公報
【特許文献２】米国特許出願公開第２０１３／０２０２２１２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような技術は、画像に写っているオブジェクトを認識する、すなわち画像に写っているオブジェクトが何であるかを推定するための技術であり、画像からそれ以上の追加的な情報を引き出すことは意図されていない。しかしながら、近年ではオブジェクト認識の技術が利用される分野が多様化していることに鑑みれば、画像に基づいてオブジェクトに関する追加的な情報を提供することには利点があると考えられる。
【０００６】
そこで、本発明は、画像に基づいてオブジェクトの角度を推定し、かつ推定のためのデータを自律的に更新することを可能にする、新規かつ改良された情報処理装置、情報処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のある観点によれば、オブジェクトに関する辞書データを取得する辞書データ取得機能と、オブジェクトの第１の画像を取得する画像取得機能と、第１の画像および辞書データに基づいて第１の画像におけるオブジェクトの角度を推定する第１の角度推定機能と、オブジェクトに関する物理的な操作の後に第１の画像におけるオブジェクトの角度を再推定する第２の角度推定機能と、第１の角度推定機能による推定および第２の角度推定機能による再推定の結果に応じて辞書データを更新する辞書データ更新機能とを実現するプロセッサを備える情報処理装置が提供される。
【０００８】
また、本発明の別の観点によれば、オブジェクトに関する辞書データを取得するステップと、オブジェクトの第１の画像を取得するステップと、第１の画像および辞書データに基づいて第１の画像におけるオブジェクトの角度を推定するステップと、オブジェクトに関する物理的な操作の後に第１の画像におけるオブジェクトの角度を再推定するステップと、プロセッサが、推定および再推定の結果に応じて辞書データを更新するステップとを含む情報処理方法が提供される。
【０００９】
また、本発明のさらに別の観点によれば、オブジェクトに関する辞書データを取得する辞書データ取得機能と、オブジェクトの第１の画像を取得する画像取得機能と、第１の画像および辞書データに基づいて第１の画像におけるオブジェクトの角度を推定する第１の角度推定機能と、オブジェクトに関する物理的な操作の後に第１の画像におけるオブジェクトの角度を再推定する第２の角度推定機能と、第１の角度推定機能による推定および第２の角度推定機能による再推定の結果に応じて辞書データを更新する辞書データ更新機能とをプロセッサに実現させるためのプログラムが提供される。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係るシステムを概略的に示す図である。
【図２】図１に示すシステムにおける端末の機能構成を示すブロック図である。
【図３】図１に示すシステムで用いられる雲台装置および治具の構成を示す概略的な斜視図である。
【図４】図３のＩ−Ｉ線断面図である。
【図５】本発明の第１の実施形態において生成される辞書データについて概念的に説明するための図である。
【図６】図１に示すシステムにおけるロボットの概略的な構成について説明するための図である。
【図７】図１に示すシステムにおけるロボットの機能構成を示すブロック図である。
【図８】本発明の第１の実施形態における辞書データ生成処理の例を示すフローチャートである。
【図９】本発明の第１の実施形態における認識処理の例を示すフローチャートである。
【図１０】本発明の第１の実施形態における枝狩り処理の例を示すフローチャートである。
【図１１】図１０に示す枝狩り処理について概念的に説明するための図である。
【図１２】本発明の第１の実施形態における辞書データ更新処理の例を示すフローチャートである。
【図１３】本発明の第２の実施形態に係るロボットの機能構成を示すブロック図である。
【図１４】本発明の第３の実施形態について概略的に説明するための図である。
【図１５】本発明の第３の実施形態に係るロボットの機能構成を示すブロック図である。
【図１６】本発明の実施形態における情報処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１２】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るシステム１０を概略的に示す図である。図１を参照すると、システム１０は、ネットワークＮＷによって互いに接続された、端末１００と、データベース２００と、ロボット３００とを含む。端末１００には、カメラ１５０と、雲台装置１６０とが接続されている。ロボット３００は、カメラ３１０と、マニピュレータ３２０とを有する。
【００１３】
上記のようなシステム１０において、カメラ１５０は、後述する治具１７０を介して雲台装置１６０に取り付けられたオブジェクトｏｂｊの画像をキャプチャする。端末１００は、カメラ１５０から画像を取得するとともに、雲台装置１６０からオブジェクトｏｂｊの角度を示す角度情報を取得する。なお、以下の説明では、別途の言及がない限り、オブジェクトｏｂｊの角度は、３次元空間における角度、例えば直交座標系における３つの軸の回りの回転量によって表される角度である。端末１００は、取得した画像および角度情報（、ならびにオブジェクトｏｂｊの識別情報）に基づいて辞書データを生成する。生成された辞書データは、データベース２００に格納される。
【００１４】
一方、ロボット３００は、マニピュレータ３２０によってオブジェクトｏｂｊを把持した状態で、カメラ３１０を用いてオブジェクトｏｂｊの画像をキャプチャする。ロボット３００は、キャプチャされた画像と、データベース２００から取得した辞書データとに基づいて、画像に写っているオブジェクトｏｂｊを認識し、さらに画像におけるオブジェクトｏｂｊの角度を推定する。
【００１５】
これによって、ロボット３００は、オブジェクトｏｂｊを認識したうえで、さらに、マニピュレータ３２０によって把持されているオブジェクトｏｂｊの角度を推定することができる。この角度は、例えば、オブジェクトｏｂｊが基準姿勢に対してどの程度回転しているのかを示す。ロボット３００は、例えば、角度の推定結果に基づいてマニピュレータ３２０を制御することによってオブジェクトｏｂｊを回転させ、それによってオブジェクトｏｂｊを所望の姿勢にすることができる。
【００１６】
上記のようなシステム１０は、例えば、ロボット３００を用いて物品を配列または整頓する作業を自動化するときに有用である。また、システム１０は、例えば、オブジェクトｏｂｊの所定の部位に配置された情報（印刷されたコード、ＲＦＩＤ（radio  frequency  identifier）など）を読み取るために、オブジェクトｏｂｊをどのように回転させればよいかを特定するためにも有用である。なお、システム１０の用途は上記の例には限られず、他にも様々な用途が可能でありうる。
【００１７】
（辞書データを生成するための構成）
図２は、図１に示すシステムにおける端末１００の機能構成を示すブロック図である。図２を参照すると、端末１００は、画像取得部１１０と、角度情報取得部１２０と、辞書データ生成部１３０とを含む。端末１００は、例えばパーソナルコンピュータ、タブレット、またはスマートフォンなどであり、各部の機能は後述する情報処理装置のハードウェア構成によって実現される。具体的には、例えば、画像取得部１１０、角度情報取得部１２０、および辞書データ生成部１３０の機能は、情報処理装置に含まれるプロセッサによって実現される。辞書データ生成部１３０によって生成された辞書データ２１０は、ネットワークを介して端末１００に接続されたデータベース２００に格納される。データベース２００の機能は、ネットワークに接続された１または複数の情報処理装置のストレージによって実現される。なお、端末１００が複数のプロセッサを含む場合、複数のプロセッサが協働して上記の各部の機能を実現してもよい。また、後述するように、端末１００のプロセッサが実現する機能の一部、または全部は、サーバにおいて実現することも可能である。以下、各部の機能について説明する。
【００１８】
画像取得部１１０は、カメラ１５０がキャプチャしたオブジェクトｏｂｊの画像を取得する。ここで、カメラ１５０は、オブジェクトの画像をキャプチャする撮像装置の例である。具体的には、カメラ１５０は、例えばイメージセンサを有するデジタルカメラであり、画像取得部１１０はカメラ１５０によって生成された画像データを受信する。図示された例において、カメラ１５０は、ＵＳＢ（Universal  Serial  Bus）などの有線通信インターフェースを介して端末１００に接続されるが、他の例において、カメラ１５０は、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線通信インターフェースを介して端末１００に接続されてもよい。あるいは、カメラ１５０は端末１００に内蔵され、バスを介して画像取得部１１０に画像データを送信してもよい。
【００１９】
角度情報取得部１２０は、雲台装置１６０からオブジェクトｏｂｊの角度を示す角度情報を取得する。ここで、本実施形態において、端末１００の角度情報取得部１２０が取得する角度情報は、雲台装置１６０の座標系を基準にしたオブジェクトｏｂｊの角度を示す。なお、角度情報取得部１２０自身がオブジェクトｏｂｊの角度情報を生成し、その角度情報を雲台装置１６０に送信するとともに辞書データ生成部１３０に提供する場合も、「角度情報取得部１２０が角度情報を取得する」場合に含まれる。この場合、雲台装置１６０は、角度情報取得部１２０から受信した角度情報に従ってオブジェクトｏｂｊを保持する角度を設定する。本実施形態において、雲台装置１６０は、オブジェクトｏｂｊを保持する保持手段の例である。カメラ１５０と同様に、雲台装置１６０も、有線通信インターフェースを介して端末１００に接続されてもよく、無線通信インターフェースを介して端末１００に接続されてもよい。
【００２０】
上述の通り、オブジェクトｏｂｊの角度は３次元空間における角度、例えば直交座標系における３つの軸の回りの回転量によって表される角度である。それゆえ、角度情報取得部１２０は、例えば、角度情報を、オブジェクトｏｂｊの現在の姿勢と基準姿勢との差分に相当する回転量によって表現する。ここで、基準姿勢は、例えば雲台装置１６０がリセットされたときのオブジェクトｏｂｊの姿勢である。あるいは、基準姿勢は、画像取得部１１０が辞書データ２１０の生成のために最初にオブジェクトｏｂｊの画像を取得したときのオブジェクトｏｂｊの姿勢であってもよい。
【００２１】
辞書データ生成部１３０は、画像取得部１１０が取得した画像と、オブジェクトｏｂｊの識別情報と、角度情報取得部１２０が取得した角度情報とに基づいて辞書データ２１０を生成する。ここで、オブジェクトｏｂｊの識別情報は、どのような手段で特定されてもよい。例えば、オブジェクトｏｂｊの識別情報は、ユーザが端末１００に入力する情報に基づいて特定されてもよい。また、オブジェクトｏｂｊの識別情報は、画像取得部１１０が取得した画像を、画像ベースのオブジェクト認識のために別途提供される辞書データとマッチングさせることによって特定されてもよい。あるいは、辞書データ生成部１３０は、画像取得部１１０が取得した複数の画像に共通して含まれるオブジェクトｏｂｊに対して識別情報を割り当ててもよい。
【００２２】
なお、本実施形態における辞書データ２１０の生成に用いられる情報のうち、画像とオブジェクトｏｂｊの識別情報との組み合わせに関しては、既に知られている画像ベースのオブジェクト認識における技術を適宜利用することができる。例えば、辞書データ生成部１３０は、画像ベースのオブジェクト認識で利用される適切な手法で画像から特徴量を抽出し、抽出された特徴量をオブジェクトｏｂｊの識別情報および角度情報と対応付けてもよい。また、例えば、辞書データ生成部１３０は、画像ベースのオブジェクト認識で利用される適切な手法で分類およびラベリングされたオブジェクトｏｂｊの識別情報を利用してもよい。
【００２３】
また、本実施形態では辞書データ２１０をオブジェクトｏｂｊの識別情報に基づいて生成されるものとして説明しているが、辞書データ２１０は、必ずしもオブジェクトｏｂｊの識別情報に基づいて生成されなくてもよい。例えば、システム１０が単一の種類のオブジェクトｏｂｊのために提供される場合、辞書データ２１０はオブジェクトｏｂｊの識別情報を含まなくてもよい。一方、本実施形態のように辞書データ２１０がオブジェクトｏｂｊの識別情報を含む場合、複数の種類のオブジェクトｏｂｊについて、そのオブジェクトｏｂｊを認識したうえで、さらにオブジェクトｏｂｊの角度を推定することができる。
【００２４】
（雲台装置および治具の構成）
以下、本実施形態に係るシステム１０において上記の端末１００とともに用いられる雲台装置１６０、および雲台装置１６０にオブジェクトｏｂｊを取り付けるための治具１７０の構成について、さらに説明する。
【００２５】
図３は、図１に示すシステムで用いられる雲台装置１６０および治具１７０の構成を示す概略的な斜視図である。図４は、図３のＩ−Ｉ線断面図である。図３および図４を参照すると、雲台装置１６０は、基台１６１と、１対の支柱１６２と、１対のアーム１６３と、１対のピン１６４と、ホルダ１６５と、梁１６６と、制御部１６７とを含む。治具１７０は、取付部材１７１と、連結部材１７２と、オブジェクトホルダ１７３と、背景板１７４とを含む。なお、図３では背景板１７４の図示が省略されている。以下、各部について説明する。
【００２６】
雲台装置１６０において、基台１６１は、例えば回転テーブルであり、制御部１６７によって制御されるモータ（図示せず）の駆動によって、軸Ａ１の回りに回動する。ここで、軸Ａ１は、カメラ１５０の光軸（図４に軸Ａ３として示す）に直交する。１対の支柱１６２は、基台１６１上で、軸Ａ１に対して対称な位置に固定される。従って、１対の支柱１６２の中点は軸Ａ１にほぼ一致する。１対のアーム１６３は、基台１６１とは反対側で、１対の支柱１６２のそれぞれにピン１６４を用いて連結される。ピン１６４は、軸Ａ１に直交する軸Ａ２上に位置する。１対のアーム１６３は、それぞれ、軸Ａ２の回りに枢動可能である。具体的には、１対の支柱１６２とピン１６４との間、またはピン１６４と１対のアーム１６３との間はギアを介して連結され、このギアに制御部１６７によって制御されるモータ（図示せず）が接続されることによって、１対のアーム１６３が軸Ａ２の回りに枢動する。
【００２７】
ホルダ１６５は、１対の支柱１６２とは反対側で、１対のアーム１６３の端部同士の間に、梁１６６を介して固定される。ホルダ１６５は、例えば雲台装置１６０がカメラ用の自動雲台として用いられる場合にはカメラが取り付けられる部材であるが、後述するように本実施形態では治具１７０の取付部材１７１がホルダ１６５に取り付けられる。上記のように１対のアーム１６３が軸Ａ２の回りに枢動すると、ホルダ１６５は軸Ａ２の回りに旋回する。ここで、上述したような１対のアーム１６３の構成によって、ホルダ１６５が軸Ａ２の回りに旋回する間、ホルダ１６５の取付面１６５ｓは軸Ａ２に向いた状態に維持される。
【００２８】
制御部１６７は、例えば雲台装置１６０に組み込まれるマイクロコントローラであり、上述のようにモータを制御することによって基台１６１の回動および１対のアーム１６３の枢動を制御する。制御部１６７は、例えば予め定められた手順に従って、または端末１００からの指示に従ってモータを制御する。このようにして、制御部１６７は、基台１６１が軸Ａ１の回りに回動する角度、および１対のアーム１６３が軸Ａ２の回りに枢動する角度を設定する。端末１００の角度情報取得部１２０は、例えばこのような制御部１６７による角度の設定値を示す情報を、角度情報として取得する。
【００２９】
以上のような雲台装置１６０は、本来、ホルダ１６５に取り付けられたカメラのパン（軸Ａ１の回りの回転）およびチルト（軸Ａ２の回りのスイング）を自動化する装置として流通している。本実施形態では、かかる雲台装置１６０を利用してオブジェクトｏｂｊの角度の設定を自動化することによって、さまざまな角度を網羅した辞書データ２１０を効率的に生成することが意図されている。ただし、雲台装置１６０のホルダ１６５に直接オブジェクトｏｂｊを取り付けた場合、１対のアーム１６３を枢動するとホルダ１６５が軸Ａ２の回りにスイングし、結果としてオブジェクトｏｂｊの位置がカメラ１５０の光軸（図４に軸Ａ３として示す）から大きく外れてしまう。そこで、本実施形態では、以下で説明するような治具１７０を介してオブジェクトｏｂｊを雲台装置１６０に取り付ける。
【００３０】
治具１７０において、取付部材１７１は、雲台装置１６０のホルダ１６５に取り付け可能な部材である。例えば、取付部材１７１には、ホルダ１６５に設けられているカメラの固定のための構造に対応した取り付け構造が設けられる。具体的には、ホルダ１６５にカメラの固定のためのネジが設けられている場合、取付部材１７１にはネジ穴が設けられる。あるいは、取付部材１７１は、ホルダ１６５の構造にかかわらず利用可能な取り付け構造が設けられてもよい。具体的には、取付部材１７１には、ホルダ１６５を挟持するクリップ、またはホルダ１６５に巻回されるベルトなどが設けられてもよい。
【００３１】
オブジェクトホルダ１７３は、オブジェクトｏｂｊを取り付け可能な部材である。例えば、オブジェクトホルダ１７３には、オブジェクトｏｂｊとの接触面積を可能な限り少なくしつつオブジェクトｏｂｊを固定することが可能な取り付け構造が設けられる。これは、取り付け構造とオブジェクトｏｂｊとの接触面積は、カメラ１５０がキャプチャするオブジェクトｏｂｊの画像におけるオクルージョン領域になりうるためである。具体的には、オブジェクトホルダ１７３には、オブジェクトｏｂｊを挟持するクリップ、オブジェクトｏｂｊを掴持するフック、オブジェクトｏｂｊが貼着される粘着面などが設けられてもよい。また、磁性体であるオブジェクトｏｂｊのために、オブジェクトホルダ１７３には磁石が設けられてもよい。
【００３２】
連結部材１７２は、取付部材１７１とオブジェクトホルダ１７３とを連結する。また、連結部材１７２は、取付部材１７１が雲台装置１６０のホルダ１６５に取り付けられたときに、オブジェクトホルダ１７３に取り付けられたオブジェクトｏｂｊが軸Ａ１と軸Ａ２との交点の近傍に位置するように、取付部材１７１とオブジェクトホルダ１７３との位置関係を規定する。例えば、連結部材１７２は、取付部材１７１がホルダ１６５に取り付けられたときに１対のアーム１６３に沿って延びるように取付部材１７１に連結される。このとき、連結部材１７２の１対のアーム１６３に沿った方向の長さは、ホルダ１６５と軸Ａ２との間の距離から、取付部材１７１およびオブジェクトホルダ１７３の厚さと、オブジェクトｏｂｊの厚さの半分とを除いたものにほぼ等しい。連結部材１７２は、アーム１６３に沿った方向の長さを調節可能な構造を有してもよい。これによって、オブジェクトｏｂｊのサイズに合わせて連結部材１７２の長さを調節し、オブジェクトｏｂｊの中心を軸Ａ１と軸Ａ２との交点に近づけることができる。
【００３３】
以上のような治具１７０を介して雲台装置１６０に取り付けられたオブジェクトｏｂｊは、軸Ａ１と軸Ａ２との交点の近傍に位置する。それゆえ、雲台装置１６０の基台１６１が軸Ａ１の回りに回動したときも、１対のアーム１６３が軸Ａ２の回りに枢動したときも、オブジェクトｏｂｊの位置はほぼ変化せず、カメラ１５０の光軸（図４に軸Ａ３として示す）から大きく外れることがない。従って、本実施形態では、雲台装置１６０の制御部１６７が基台１６１が軸Ａ１の回りに回動する角度、および１対のアーム１６３が軸Ａ２の回りに枢動する角度を設定したときに、これらの角度をオブジェクトｏｂｊの軸Ａ１および軸Ａ２の回りの回転量とみなすことができる。
【００３４】
なお、上記のような雲台装置１６０および治具１７０を用いた場合、軸Ａ１および軸Ａ２に直交する軸Ａ３、すなわちカメラ１５０の光軸の回りにはオブジェクトｏｂｊが回転させられないが、軸Ａ３の回りの回転については、カメラ１５０がキャプチャした画像を平面回転させることによって精度よく補完することが可能である。また、上記の説明では簡単のためにオブジェクトｏｂｊがカメラ１５０の光軸上にあるものとしたが、オブジェクトｏｂｊは必ずしもカメラ１５０の光軸上になくてもよい。
【００３５】
背景板１７４は、連結部材１７２またはオブジェクトホルダ１７３に取り付けられ、オブジェクトｏｂｊの背景を提供する。例えば、背景板１７４には、スクリーンを選択的に取り付けるための取り付け構造が設けられてもよい。スクリーンは、例えば、互いに異なる材質で形成される複数のスクリーンを含みうる。材質は、例えば紙、布、またはフィルムを含みうる。また、スクリーンは、互いに異なる色、または互いに異なる反射特性を有する複数のスクリーンを含んでもよい。スクリーンを交換することによって、材質、色、または反射特性などが異なるオブジェクトｏｂｊの複数の背景を、交換可能に提供することができる。また、例えば、背景板１７４は、連結部材１７２またはオブジェクトホルダ１７３に着脱可能に取り付けられてもよい。この場合、複数の背景板１７４を選択的に取り付けることによって、材質、色、または反射特性などが異なるオブジェクトｏｂｊの複数の背景を、交換可能に提供することができる。具体的には、例えば、背景板１７４は、オブジェクトｏｂｊに向けられる面が互いに異なる材質で形成される複数の背景板１７４を含みうる。材質は、例えば紙、布、またはフィルムを含みうる。また、背景板１７４は、オブジェクトｏｂｊに向けられる面が互いに異なる色、または互いに異なる反射特性を有する複数の背景板１７４を含んでもよい。
【００３６】
（辞書データの概念的な説明）
図５は、本発明の第１の実施形態において生成される辞書データについて概念的に説明するための図である。図５には、ある識別情報によって特定されるオブジェクトｏｂｊ（図示された例ではコネクタ）に対応付けられる辞書データ２１０が例示されている。図示された例において、オブジェクトｏｂｊの角度は、３次元空間における直交座標系の３つの軸（Ｘ軸、Ｙ軸、Ｚ軸）の回りの回転量によって表されるベクトル量である。辞書データ２１０は、オブジェクトｏｂｊの角度について、Ｘ軸の回りの回転量（ｒｏｔ＿Ｘ）について全周をＮＸ個に分割し、Ｙ軸の回りの回転量（ｒｏｔ＿Ｙ）について全周をＮＹ個に分割し、Ｚ軸の回りの回転量（ｒｏｔ＿Ｚ）について全周をＮＺ個に分割することによって定義されるＮＸ×ＮＹ×ＮＺ個の要素を少なくとも含む。それぞれの要素は、少なくとも１つの、オブジェクトｏｂｊの画像に対応する情報に対応付けられる。ここで、オブジェクトｏｂｊの画像に対応する情報は、例えば、オブジェクトｏｂｊが回転量（ｒｏｔ＿Ｘ，ｒｏｔ＿Ｙ，ｒｏｔ＿Ｚ）で表される角度であるときにカメラ１５０がキャプチャした画像から抽出された特徴量でありうる。
【００３７】
なお、上記の例において、それぞれの軸の回りの回転量（ｒｏｔ＿Ｘ，ｒｏｔ＿Ｙ，ｒｏｔ＿Ｚ）の分割幅は、異なっていてもよい（つまり、ＮＸ，ＮＹ，ＮＺの少なくともいずれかが他と異なっていてもよい）。また、回転量は、必ずしも均等に分割されなくてもよい。例えば、後述するオブジェクトｏｂｊの角度の推定において、信頼度の高い推定がされにくい角度があった場合、当該角度に対応する回転量の近傍では、回転量の分割幅が他の部分よりも小さく設定されてもよい。
【００３８】
例えば、ロボット３００のカメラ３１０が、角度が未知のオブジェクトｏｂｊの画像をキャプチャした場合、キャプチャされた画像から抽出された特徴量と、上記のような辞書データ２１０の要素に対応付けられた特徴量とをマッチングすることで、オブジェクトｏｂｊの角度を推定することができる。
【００３９】
ここで、辞書データ２１０では、同じオブジェクトｏｂｊの角度情報と、複数の異なる画像とに基づいて生成される複数の要素を含んでもよい。この場合、辞書データ２１０の要素は、ＮＸ×ＮＹ×ＮＺ個よりも多くなる。同じ角度情報に対応付けられる複数の画像の間では、例えばキャプチャされたときの環境条件が異なっていてもよい。環境条件は、例えば背景または光の配置などでありうる。複数の異なる環境条件で辞書データ２１０を生成することで、様々な環境条件でオブジェクトｏｂｊの角度を推定可能な辞書データ２１０を提供することができる。
【００４０】
上記の場合において、端末１００の画像取得部１１０は、オブジェクトｏｂｊの互いに異なる複数の画像を取得する。例えば、画像取得部１１０は、治具１７０の背景板１７４を用いてオブジェクトｏｂｊの背景を交換する前後で、雲台装置１６０の制御部１６７が同じ角度を設定したときのオブジェクトｏｂｊの画像をそれぞれ取得してもよい。この場合、辞書データ生成部１３０は、背景が異なる複数の画像、これらの複数の画像に共通するオブジェクトｏｂｊの識別情報、およびこれらの複数の画像に共通するオブジェクトｏｂｊの角度を示す角度情報に基づいて、辞書データ２１０の複数の要素を生成する。
【００４１】
（ロボットの構成）
図６は、図１に示すシステムにおけるロボット３００の概略的な構成について説明するための図である。図６を参照すると、ロボット３００は、カメラ３１０と、マニピュレータ３２０と、制御部３３０と、センサ３４０と、モータ３５０とを含む。ロボット３００は、制御部３３０の制御に従って、例えばマニピュレータ３２０を用いてオブジェクトｏｂｊを把持し、カメラ３１０を用いてオブジェクトｏｂｊの画像をキャプチャすることができる。本実施形態では、マニピュレータ３２０も、上述した雲台装置１６０と同様に、オブジェクトｏｂｊを保持する保持手段の例である。制御部３３０は、例えば後述する情報処理装置のハードウェア構成によって実現される。
【００４２】
センサ３４０は、ロボット３００で利用される、またはロボット３００から他の装置に送信される、各種の測定値を取得するためのセンサを含む。具体的には、センサ３４０は、加速度センサ、角速度センサ、地磁気センサ、および／またはＧＮＳＳ（Global  Navigation  Satellite  System）受信機などを含んでもよい。また、センサ３４０は、深度センサ、またはＬＩＤＡＲ（Laser  Imaging  Detection  and  Ranging）のようなレーザーレンジスキャナを含んでもよい。
【００４３】
モータ３５０は、制御部３３０の制御に従って、ロボット３００の各部を動作させる。モータ３５０は、例えば、関節構造（図示せず）を動作させてロボット３００の姿勢を変更したり、ロボット３００を移動させたりするためのモータ（アクチュエータ）を含みうる。また、モータ３５０は車輪を回転させてロボット３００を移動させるためのモータを含んでもよい。なお、モータ３５０を含むロボット３００の各部の構成は、既に知られているロボットの設計手法に基づいて適切に構成することができる。ここで、ロボット３００は、必ずしも姿勢を変更しなくてもよく、また移動しなくてもよい。同様に、ロボット３００は必ずしも（マニピュレータ３２０以外の）関節構造を含まなくてもよく、また車輪を含まなくてもよい。
【００４４】
（オブジェクトの角度を推定するための構成）
図７は、図１に示すシステムにおけるロボット３００の機能構成を示すブロック図である。図７を参照すると、ロボット３００は、カメラ３１０およびマニピュレータ３２０に加えて、画像取得部３３１と、辞書データ取得部３３２と、オブジェクト認識／角度推定部３３３と、結果出力部３３４と、辞書データ更新部３３５と、マニピュレータ制御部３３６と、角度情報取得／角度推定部３３７とを含む。カメラ３１０およびマニピュレータ３２０以外の各部は、例えば上述したロボット３００の制御部３３０を実現する情報処理装置のプロセッサによって実現される。なお、制御部３３０が複数のプロセッサを含む場合、複数のプロセッサが協働して上記の各部の機能を実現してもよい。また、後述するように、制御部３３０のプロセッサが実現する機能の一部、または全部をサーバにおいて実現することも可能である。以下、各部の機能について説明する。なお、辞書データの更新に関する機能については、後にフローチャートを参照して詳述するため、ここでは簡潔な記載にとどめる。
【００４５】
画像取得部３３１は、カメラ３１０がキャプチャしたオブジェクトｏｂｊの画像を取得する。ここで、本実施形態では、カメラ３１０も、上述したカメラ１５０と同様に、オブジェクトの画像をキャプチャする撮像装置の例である。カメラ１５０がキャプチャする画像と、カメラ３１０がキャプチャする画像とは、同じ種類のオブジェクトｏｂｊを含むものの、互いに異なる画像である。具体的には、カメラ３１０は、例えばイメージセンサを有するデジタルカメラであり、画像取得部３３１はカメラ３１０によって生成された画像データを受信する。例えば、ロボット３００は、マニピュレータ３２０を用いてオブジェクトｏｂｊを把持している。この場合、画像取得部３３１が取得する画像には、マニピュレータ３２０に把持されたオブジェクトｏｂｊが含まれる。あるいは、画像取得部３３１には、マニピュレータ３２０に把持されず、テーブルまたは床などに置かれたオブジェクトｏｂｊが含まれてもよい。図示された例において、カメラ３１０はロボット３００に内蔵され、バスを介して画像取得部３３１に画像データを送信するが、カメラ３１０が有線通信インターフェース、または無線通信インターフェースを介してロボット３００に外部接続されてもよい。
【００４６】
辞書データ取得部３３２は、ネットワークを介してロボット３００に接続されたデータベース２００から辞書データ２１０を取得する。上述の通り、辞書データ２１０は、オブジェクトｏｂｊの画像および角度情報（ならびにオブジェクトｏｂｊの識別情報）に基づいて生成される。ロボット３００は、この辞書データ２１０を、マニピュレータ３２０によって把持されているオブジェクトｏｂｊの角度を推定するために利用する。なお、辞書データ取得部３３２は、必ずしも辞書データ２１０の全体を取得しなくてもよい。例えば、辞書データ２１０が複数の種類のオブジェクトについて生成され、かつ画像取得部３３１が取得した画像に含まれるオブジェクトｏｂｊが既に識別されている場合、辞書データ取得部３３２は、辞書データ２１０のうちオブジェクトｏｂｊの識別情報に対応付けられた要素を選択的に取得する。
【００４７】
オブジェクト認識／角度推定部３３３は、画像取得部３３１が取得したオブジェクトｏｂｊの画像と、辞書データ取得部３３２が取得した辞書データ２１０とに基づいて、画像におけるオブジェクトｏｂｊの角度を推定する。辞書データ２１０が複数の種類のオブジェクトについて生成され、かつ画像取得部３３１が取得した画像に含まれるオブジェクトｏｂｊが識別されていない場合、オブジェクト認識／角度推定部３３３は画像ベースのオブジェクト認識によってオブジェクトｏｂｊの識別情報を特定する。画像ベースのオブジェクト認識については、既に知られている技術を応用可能であるため、詳細な説明は省略する。例えば辞書データ２１０が単一の種類のオブジェクトについて生成されている場合、または画像取得部３３１が取得した画像に含まれるオブジェクトｏｂｊが既に識別されている場合、オブジェクト認識／角度推定部３３３はオブジェクト認識を実行しない。
【００４８】
一方、オブジェクト認識／角度推定部３３３によるオブジェクトｏｂｊの角度の推定は、例えば画像取得部３３１が取得した画像と辞書データ２１０の要素とのマッチングによって実行される。この場合、マッチングのスコアが最も高かった辞書データ２１０の要素に対応付けられた角度が、画像におけるオブジェクトｏｂｊの角度として推定される。後述するように、オブジェクトｏｂｊの角度を推定するための辞書データ２１０は多数の要素を含みうる。そこで、オブジェクト認識／角度推定部３３３は、画像取得部３３１が取得した画像に基づいて辞書データ２１０を枝狩りし、枝狩りされた辞書データ２１０と画像とのマッチングを実行してもよい。ここで、本実施形態において、枝狩り（pruning）は、オブジェクトｏｂｊの角度を推定するためのマッチングよりも処理負荷の軽い処理によって、マッチングの対象にしない辞書データ２１０を決定する処理である。
【００４９】
結果出力部３３４は、オブジェクト認識／角度推定部３３３による認識の結果を出力する。上述のように、ロボット３００はオブジェクトｏｂｊの角度の推定結果をロボット３００自身の動作、例えばマニピュレータ３２０の制御のために利用してもよいが、必要に応じて、推定結果を何らかの形で出力してもよい。より具体的には、例えば、推定結果は、ロボット３００のディスプレイにおいて画像として表示されてもよく、スピーカから音声として出力されてもよい。また、推定結果は、ロボット３００が有する通信装置からネットワークを介してさらに別の装置に送信されてもよい。結果出力部３３４は、上記のような推定結果の出力を制御する。なお、推定結果を出力する必要がない場合には、結果出力部３３４は設けられない。
【００５０】
辞書データ更新部３３５は、オブジェクト認識／角度推定部３３３によるオブジェクトｏｂｊの角度の推定の結果、および後述する角度情報取得／角度推定部３３７による角度の再推定の結果に応じて、辞書データ２１０を更新する。より具体的には、辞書データ更新部３３５は、オブジェクト認識／角度推定部３３３によって推定された角度の信頼度が閾値を超えない場合に、角度情報取得／角度推定部３３７による角度の再推定の結果に基づいて辞書データ２１０を更新する。なお、以下の説明では、オブジェクト認識／角度推定部３３３による角度の推定機能を「第１の角度推定機能」、角度情報取得／角度推定部３３７による角度の再推定機能を「第２の角度推定機能」ともいう。これらの角度推定機能は、必ずしも互いに独立して実施されるものではない。例えば、後述するように、角度情報取得／角度推定部３３７は、角度の再推定にあたって、オブジェクト認識／角度推定部３３３による角度の推定結果を利用する。つまり、「第１の角度推定機能」が単独で実行される場合もあり、「第２の角度推定機能」が「第１の角度推定機能」を呼び出す場合もある。
【００５１】
マニピュレータ制御部３３６は、オブジェクトｏｂｊを把持しているロボット３００のマニピュレータ３２０を制御する。辞書データ更新部３３５が辞書データ２１０の更新を実行するとき、マニピュレータ制御部３３６は、マニピュレータ３２０を制御することによってオブジェクトｏｂｊを回転させる。なお、ここでいう回転は、オブジェクトｏｂｊの角度の変更を意味する。オブジェクトｏｂｊの回転は、オブジェクトｏｂｊの角度の再推定にあたって実行される、オブジェクトｏｂｊに関する物理的な操作の例である。
【００５２】
角度情報取得／角度推定部３３７は、マニピュレータ制御部３３６からオブジェクトｏｂｊの角度を示す角度情報を取得する。ここで、本実施形態において、ロボット３００の角度情報取得／角度推定部３３７が取得する角度情報は、ロボット３００、またはマニピュレータ３２０の座標系を基準にしたオブジェクトｏｂｊの角度を示す。従って、本実施形態では、マニピュレータ制御部３３６から取得される角度情報は、辞書データ２１０の角度情報と必ずしも直接的に対応付けられない。そこで、本実施形態において、角度情報取得／角度推定部３３７は、マニピュレータ制御部３３６がマニピュレータ３２０を制御してオブジェクトｏｂｊを回転させる前後の角度情報からオブジェクトｏｂｊの回転量Δθを算出し、この回転量Δθを後述する角度の再推定に利用する。
【００５３】
さらに、角度情報取得／角度推定部３３７は、オブジェクト認識／角度推定部３３３がオブジェクトｏｂｊの回転後の画像（第２の画像）および辞書データ２１０に基づいて推定したオブジェクトｏｂｊの角度θ２と、回転量Δθとに基づいて、オブジェクトｏｂｊの回転前の画像（第１の画像）におけるオブジェクトｏｂｊの角度θ１を再推定する（簡単に表すと、θ１＝θ２−Δθ）。ここで、回転量Δθは、オブジェクトｏｂｊに関する物理的な操作の量の例である。なお、角度θ１、角度θ２、および回転量Δθは、いずれも、例えば座標系のそれぞれの軸の回りの回転（図５の例におけるｒｏｔ＿Ｘ，ｒｏｔ＿Ｙ，ｒｏｔ＿Ｚ）の要素を含むベクトル量でありうる。
【００５４】
辞書データ更新部３３５は、上記のようにオブジェクト認識／角度推定部３３３がオブジェクトｏｂｊの回転後の画像（第２の画像）および辞書データ２１０に基づいて推定したオブジェクトｏｂｊの角度θ２の信頼度が閾値を超える場合、角度情報取得／角度推定部３３７がこれに基づいて再推定した角度θ１を示す角度情報と、オブジェクトｏｂｊの回転前の画像（第１の画像）とに基づいて辞書データ２１０を更新する。
【００５５】
一方、オブジェクト認識／角度推定部３３３がオブジェクトｏｂｊの回転後の画像（第２の画像）および辞書データ２１０に基づいて推定したオブジェクトｏｂｊの角度θ２の信頼度が閾値を超えない場合、マニピュレータ制御部３３６がマニピュレータ３２０を制御することによってオブジェクトｏｂｊをさらに回転量Δθ’だけ回転させ、オブジェクト認識／角度推定部３３３がオブジェクトｏｂｊの回転後の画像（第３の画像）および辞書データ２１０に基づいてオブジェクトｏｂｊの角度θ３を推定する。角度θ３の信頼度が閾値を超える場合、角度情報取得／角度推定部３３７は角度θ３と、回転の合計量（Δθ＋Δθ’）とに基づいて角度θ１を再推定し、この結果に基づいて辞書データ更新部３３５が辞書データ２１０を更新する。
【００５６】
このようにして、辞書データ更新部３３５は、十分な信頼度で角度θ１が再推定されたところで、角度θ１と、オブジェクトｏｂｊの回転前の画像（第１の画像）とに基づいて辞書データ２１０を更新する。具体的には、辞書データ更新部３３５は、辞書データ２１０の要素を追加または置換する。これによって、その後、カメラ３１０が同様の環境条件で角度θ１のオブジェクトｏｂｊの画像をキャプチャしたときに、再推定によらずとも、角度θ１を高い信頼度で推定できる可能性が高くなる。
【００５７】
（処理フローの例）
以下、本実施形態に係るシステム１０における処理フローの例について、図８〜図１２を参照しながら説明する。
【００５８】
図８は、本発明の第１の実施形態における辞書データ生成処理の例を示すフローチャートである。図８を参照すると、登録処理では、まず、端末１００の画像取得部１１０が画像を取得するとともに（ステップＳ１０１）、角度情報取得部１２０が角度情報を取得する（ステップＳ１０３）。ステップＳ１０１，Ｓ１０３は、どちらが先に実行されてもよく、また並行して実行されてもよい。例えば、カメラ１５０がキャプチャした画像を画像取得部１１０がリアルタイムで取得したことをトリガとして、角度情報取得部１２０が雲台装置１６０から角度情報を取得してもよい。また、角度情報取得部１２０が雲台装置１６０に角度情報を送信したことをトリガとして、カメラ１５０がキャプチャした画像を画像取得部１１０がリアルタイムで取得してもよい。あるいは、画像取得部１１０はカメラ１５０がキャプチャした画像を時系列で連続的に取得し、角度情報取得部１２０は雲台装置１６０に設定されている角度情報を時系列で連続的に取得してもよい。
【００５９】
次に、端末１００の辞書データ生成部１３０が、ステップＳ１０１で画像とステップＳ１０３で取得された角度情報とを対応付ける。例えば、画像と角度情報とがいずれもリアルタイムで取得される場合、辞書データ生成部１３０は、実質的に同時に取得された画像と角度情報とを対応付ける。一方、画像と角度情報とが時間差をもって、または事後的に取得される場合、辞書データ生成部１３０は、共通するキーを有する画像と角度情報とを対応付ける。この場合のキーは、例えばタイムスタンプであってもよいし、タイムスタンプとは別に割り振られたシーケンス番号などであってもよい。
【００６０】
次に、辞書データ生成部１３０は、ステップＳ１０５で互いに対応付けられた画像および角度情報に基づいて、辞書データ２１０を生成する（ステップＳ１０７）。ここで、既に説明したように、辞書データ生成部１３０は、既に知られている画像ベースのオブジェクト認識の技術を応用して辞書データ２１０を生成してもよい。また、例えば、辞書データ生成部１３０は、実質的に同一の画像と角度情報との組が連続して取得されたような場合には、冗長な情報であると判断して辞書データ２１０の生成を省略してもよい。
【００６１】
図９は、本発明の第１の実施形態における認識処理の例を示すフローチャートである。図９を参照すると、認識処理では、まず、ロボット３００の画像取得部３３１が画像を取得する（ステップＳ３０１）。上述のように、画像取得部３３１は、カメラ３１０がキャプチャした画像を取得し、この画像には例えばマニピュレータ３２０によって把持されたオブジェクトｏｂｊが含まれる。次に、辞書データ取得部３３２が、データベース２００から辞書データ２１０を取得する（ステップＳ３０３）。
【００６２】
次に、オブジェクト認識／角度推定部３３３が、ステップＳ３０１で取得された画像と、ステップＳ３０２で取得された辞書データ２１０とに基づいて、オブジェクトｏｂｊを認識する（ステップＳ３０５）。なお、画像ベースのオブジェクト認識については、既に知られている技術を応用可能であるため、詳細な説明は省略する。また、上述のように、例えば辞書データ２１０が単一の種類のオブジェクトについて生成されている場合、または画像に含まれるオブジェクトｏｂｊが既に識別されている場合、ステップＳ３０５のオブジェクト認識は省略される。
【００６３】
次に、オブジェクト認識／角度推定部３３３は、辞書データ２１０の枝狩りを実行する（ステップＳ３０７）。例えば、図５に示したような辞書データ２１０を、各軸の回りの回転量（ｒｏｔ＿Ｘ，ｒｏｔ＿Ｙ，ｒｏｔ＿Ｚ）について全周を５２個に分割することによって生成した場合（つまり、ＮＸ＝ＮＹ＝ＮＺ＝５２）、少なくとも５２３＝１４０，６０８の要素を有する辞書データ２１０が生成されることになる。上述のように、同じ角度に複数の異なる画像を対応付けることによって辞書データ２１０を生成した場合、要素の数はさらに多くなる。このような辞書データ２１０の全要素とのマッチングを実行するための処理負荷は膨大であるため、辞書データ２１０の枝狩りによる利益が大きい。
【００６４】
図１０は、本発明の第１の実施形態における枝狩り処理の例を示すフローチャートである。図１１は、図１０に示す枝狩り処理について概念的に説明するための図である。図１０を参照すると、オブジェクト認識／角度推定部３３３は、まず、オブジェクトｏｂｊに対応する枝狩り手順を決定する（ステップＳ３３１）。オブジェクトｏｂｊに対応する枝狩り手順は、例えば予め定められて、辞書データ２１０とともにデータベース２００に格納されている。上記の図９に示したステップＳ３０５が実行される場合、オブジェクト認識／角度推定部３３３は、ステップＳ３０５でのオブジェクトの認識結果に従って枝狩り手順を決定する。
【００６５】
続くステップＳ３３３，Ｓ３３５は、図１１に示された例において、オブジェクトｏｂｊに対応する枝狩り手順に従って実行される処理の例である。オブジェクトの種類によってここで実行される処理は異なりうる。上記の例において、オブジェクト認識／角度推定部３３３は、画像をマスクし（ステップＳ３３３）、さらに画像を減色する（ステップＳ３３５）。次に、オブジェクト認識／角度推定部３３３は、枝狩りを実行する（ステップＳ３３７）。図示された例では、例えば、上記のようにマスクおよび減色された画像から複数の特徴部分が抽出され、辞書データ２１０のうち、同様に抽出された複数の特徴部分の位置関係が画像と共通しない要素が、マッチングの対象から除外される。
【００６６】
図１１に示された例において、オブジェクトｏｂｊはコネクタである。図示された例では、ケーブル（ｃａｂｌｅ１〜ｃａｂｌｅ３）の色に着目した枝狩り手順が設定されている。図１０に示されたステップＳ３３３では、画像のケーブル以外の部分がマスクされる（ｍａｓｋ）。これによって、マスクされる部分に存在する端子カバーの陰影の影響が除去される。さらに、図では表現されないが、ステップＳ３３５では、両端のケーブル（ｃａｂｌｅ１およびｃａｂｌｅ３）の色の違いが表現されるような条件で、画像が減色される。これによって、画像および辞書データ２１０の各要素において、両端のケーブル（ｃａｂｌｅ１およびｃａｂｌｅ３）を２つの特徴部分として抽出することが容易になる。
【００６７】
さらに、図１０に示されたステップＳ３３７では、上述のようにマスクおよび減色された画像に基づいて、辞書データ２１０の枝狩りが実行される。具体的には、例えば、画像において、ｃａｂｌｅ１はｃａｂｌｅ３からみて右上に位置する。これに対して、辞書データ２１０の要素群２１０ｂ（コネクタが視点軸の回りに回転しているもの）ではｃａｂｌｅ１がｃａｂｌｅ３からみて左上に位置する。また、要素群２１０ｃ（コネクタが裏返しになっているもの）では、ｃａｂｌｅ１がｃａｂｌｅ３からみて左下に位置する。従って、ステップＳ３３７では、要素群２１０ｂ，２１０ｃがマッチングの対象から除外される。この結果、マッチングは、要素群２１０ａ（画像と同じく、ｃａｂｌｅ１からみてｃａｂｌｅ１が右上に位置する）だけを対象にして実行される。
【００６８】
図９に戻って、ステップＳ３０７における辞書データ２１０の枝狩りの後、オブジェクト認識／角度推定部３３３は、画像と辞書データ２１０とのマッチングを実行する（ステップＳ３０９）。マッチングは、例えばテンプレートマッチングでありうる。なお、画像のマッチングについては、既に知られている技術を応用可能であるため、詳細な説明は省略する。なお、既に知られている画像ベースのオブジェクト認識では、マッチングの結果としてオブジェクト単位のスコアが算出されるが、ステップＳ３０７ではオブジェクトの角度単位のスコアが算出される。
【００６９】
次に、オブジェクト認識／角度推定部３３３は、ステップＳ３０９におけるマッチングの結果に基づいて、オブジェクトｏｂｊの角度を推定する（ステップＳ３１１）。ステップＳ３１１における推定結果は、例えばステップＳ３０９におけるマッチングにおいて最も高いスコアが算出された辞書データ２１０の要素に対応付けられた角度情報によって示される角度でありうる。
【００７０】
次に、オブジェクト認識／角度推定部３３３は、ステップＳ３０９におけるマッチングで算出されたスコアが閾値を超える否かを判定する（ステップＳ３１３）。ここで閾値と比較されるスコアは、例えば最も高いマッチングスコアである。あるいは、マッチングスコアの上位何％か（例えば１０％）が閾値を超えるか否かが判定されてもよい。ステップＳ３１３の判定においてマッチングスコアが閾値を超えない場合（ＮＯ）、辞書データ更新部３３５が辞書データ２１０を更新する（Ｓ３１５）。一方、ステップＳ３１３の判定においてマッチングスコアが閾値を超える場合（ＹＥＳ）、辞書データ２１０を更新する処理は実行されなくてもよい。ステップＳ３１１における推定の結果は、必要に応じて結果出力部３３４によって出力される。
【００７１】
図１２は、本発明の第１の実施形態における辞書データ更新処理の例を示すフローチャートである。図１２を参照すると、更新処理では、まず、ロボット３００の角度情報取得／角度推定部３３７が、マニピュレータ制御部３３６から提供されるオブジェクトｏｂｊの角度情報を記憶する（ステップＳ３５１）。ここで、ステップＳ３５１で記憶される角度は、例えばマニピュレータ３２０を基準にした座標系におけるオブジェクトｏｂｊの角度を示す。次に、マニピュレータ制御部３３６が、マニピュレータ３２０を制御することによってオブジェクトｏｂｊを回転させる（ステップＳ３５３）。
【００７２】
オブジェクトｏｂｊが回転させられた後、オブジェクトｏｂｊの角度が推定される（ステップＳ３５５）。ステップＳ３５５の処理は、例えば図９に示すステップＳ３０１〜Ｓ３１１の処理に対応する。具体的には、画像取得部３３１がオブジェクトｏｂｊの回転後の画像（第２の画像）を取得し、オブジェクト認識／角度推定部３３３が回転後の画像（第２の画像）におけるオブジェクトｏｂｊの角度を推定する。なお、辞書データ２１０については先に実行されたステップＳ３０３で取得されたものが利用されてもよく、オブジェクトｏｂｊは先に実行されたステップＳ３０５で既に認識されているものとして扱われてもよい。
【００７３】
次に、辞書データ更新部３３５は、ステップＳ３５５の推定におけるマッチングスコアが閾値を超える否かを判定する（ステップＳ３５７）。この判定は、例えば図９に示すステップＳ３０９と同様に実行されうる。ステップＳ３５７の判定においてマッチングスコアが閾値を超えない場合（ＮＯ）、ステップＳ３５３およびステップＳ３５５の処理が再実行される。つまり、マニピュレータ制御部３３６がマニピュレータ３２０を制御することによってオブジェクトｏｂｊをさらに回転させ（ステップＳ３５３）、オブジェクト認識／角度推定部３３３が回転後の画像（第３の画像）におけるオブジェクトｏｂｊの角度を推定する（ステップＳ３５５）。
【００７４】
一方、ステップＳ３５７の判定においてマッチングスコアが閾値を超える場合（ＹＥＳ）、角度情報取得／角度推定部３３７は、ステップＳ３５５において推定された角度θ２、およびオブジェクトｏｂｊの回転量Δθから、初期角度θ１を再推定する（ステップＳ３５９）。ここで、初期角度θ１は、オブジェクトｏｂｊの回転前の角度であり、オブジェクト認識／角度推定部３３３が十分な信頼度で推定することができなかった角度である。一方、角度θ２は、オブジェクト認識／角度推定部３３３がオブジェクトｏｂｊの回転後の画像（第２の画像）および辞書データ２１０に基づいて推定したオブジェクトｏｂｊの角度であり、ステップＳ３５７の判定によって十分な信頼度で推定されていることが判明している。また、回転量Δθは、ステップＳ３５１で記憶されたオブジェクトｏｂｊの角度情報と、ステップＳ３５７の時点でマニピュレータ制御部３３６から提供されるオブジェクトｏｂｊの角度情報とに基づいて算出される。
【００７５】
なお、ステップＳ３５７の判定の結果、ステップＳ３５３およびステップＳ３５５の処理がＮ回繰り返された場合、角度情報取得／角度推定部３３７は、最後に実行されたステップＳ３５５において推定された角度θＮ＋１、およびＮ回実行されたステップＳ３５３におけるオブジェクトｏｂｊの回転の合計量ΔθＴＴＬから、初期角度θ１を再推定する。回転の合計量ΔθＴＴＬは、ステップＳ３５１で記憶されたオブジェクトｏｂｊの角度情報と、ステップＳ３５７の時点でマニピュレータ制御部３３６から提供されるオブジェクトｏｂｊの角度情報とに基づいて算出される。
【００７６】
次に、辞書データ更新部３３５は、ステップＳ３５９で再推定された初期角度θ１に対応する角度情報と、図９に示すステップＳ３０１で取得されたオブジェクトｏｂｊの回転前の画像（第１の画像）とを対応付ける（ステップＳ３６１）。さらに、辞書データ更新部３３５は、ステップＳ３６１で互いに対応付けられた画像および角度情報に基づいて、辞書データ２１０を更新する（ステップＳ３６３）。ここで、辞書データ２１０の更新は、辞書データ２１０の要素の追加、および／または辞書データ２１０の要素の置き換えを含む。
【００７７】
上記のステップＳ３６３において、辞書データ更新部３３５は、画像および角度情報に基づいて辞書データ２１０の要素を追加する。これによって、その後、ロボット３００のカメラ３１０が同様の環境条件で角度θ１のオブジェクトｏｂｊの画像をキャプチャしたときに、角度θ１を高い信頼度で推定できる可能性が高くなる。なお、例えば、辞書データ２１０がロボット３００専用であり、かつカメラ３１０がオブジェクトｏｂｊの画像をキャプチャするときの環境条件が変化しないことが予想される場合、辞書データ更新部３３５は、画像および角度情報に基づいて辞書データ２１０の要素を置き換えてもよい。
【００７８】
以上で説明したように辞書データ２１０が更新されることによって、最初に生成された辞書データ２１０では信頼度の高い推定が困難なオブジェクトｏｂｊの角度または環境条件について、追加の辞書データ２１０を蓄積することができる。このように、辞書データ２１０を用いてオブジェクトｏｂｊの角度を推定するロボット３００が自律的に辞書データ２１０を強化することによって、推定のロバスト性を向上させることができる。
【００７９】
（更新前の検証処理の例）
ここで、上記で図１２を参照して説明した辞書データ更新処理は、追加の処理として、辞書データ２１０の更新前の検証処理を含んでもよい。第１の例として、図１２に示したステップＳ３５１の前に、辞書データ更新処理を実行するか否かを検証する処理が実行されてもよい（ステップＳ３７１「検証処理１」として図示されている）。第１の例に係る検証処理において、画像取得部３３１は、ステップＳ３５３でオブジェクトｏｂｊが回転させられるよりも前に、オブジェクトｏｂｊの画像を再取得する。オブジェクト認識／角度推定部３３３は、再取得された画像におけるオブジェクトｏｂｊの角度を推定する。この推定におけるマッチングスコアが（図９に示したステップＳ３１１での推定とは異なり）閾値を超えている場合、辞書データ更新処理は中止され、少なくともステップＳ３６３の辞書データの更新は実行されない。
【００８０】
上記の第１の例は、例えば、上記の図９に示したステップＳ３０１で画像取得部３３１が取得した画像において、カメラ３１０のフォーカスの遅れ、または（例えば雷もしくはフラッシュ光などによる）瞬間的な照明条件の変化のような偶発的な要因のために画像に予期しない変化がもたらされ、それによって推定の信頼度が低下することがありうる。上記の第１の例のような検証の処理は、偶発的な要因のために辞書データ２１０が再現性の低い情報に基づいて更新されてしまうのを防ぐために有効である。
【００８１】
また、第２の例として、図１２に示したステップＳ３６１の後に、用意された角度情報および画像に基づいて辞書データの更新を実行するか否かを検証する処理が実行されてもよい（ステップＳ３７３「検証処理２」として図示されている）。第２の例に係る検証処理において、辞書データ更新部３３５は、ステップＳ３６１で対応付けられた角度情報と画像とに基づく仮の辞書データを生成する。次に、マニピュレータ制御部３３６がマニピュレータ３２０を制御し、ステップＳ３５３とは逆にオブジェクトｏｂｊを回転させる。これによって、オブジェクトｏｂｊは元の角度θ１に戻される。さらに、画像取得部３３１が、元の角度θ１に戻されたオブジェクトｏｂｊの画像を新たに取得し、オブジェクト認識／角度推定部３３３が、画像取得部３３１が新たに取得した画像におけるオブジェクトｏｂｊの角度を、辞書データ更新部３３５が生成した仮の辞書データに基づいて推定する。ここで元の角度θ１を推定することができ、またマッチングスコアが閾値を超えている場合、辞書データ更新部３３５はステップＳ３６３の辞書データ２１０の更新を実行する。そうではない場合、ステップＳ３６３の辞書データ２１０の更新は実行されない。
【００８２】
上記の第２の例は、例えば、角度推定の信頼度向上に寄与しない辞書データ２１０の更新を防ぐために有効である。カメラ３１０がオブジェクトｏｂｊの画像をキャプチャするときの環境条件によっては、画像取得部３３１が取得した画像に基づいて辞書データ２１０を更新しても、その後に取得される同様の画像における角度の推定の信頼度が必ずしも向上しないことがありうる。上記の第２の例のような検証の処理は、角度推定の信頼度向上に必ずしも寄与しない不要な要素によって辞書データ２１０の容量が増大するのを防ぐために有効である。
【００８３】
（他の変形例）
なお、上記の例では、角度情報取得／角度推定部３３７はオブジェクトｏｂｊが回転させられた後に角度を再推定したが、他の例において、角度情報取得／角度推定部３３７はロボット３００がモータ３５０によってオブジェクトｏｂｊとともに移動させられた後で角度を再推定してもよい。ロボット３００が移動したことによって、カメラ３１０が画像をキャプチャするときの環境条件が変化し、オブジェクトｏｂｊを回転させなくても信頼度の高い角度の推定ができる可能性がある。なお、ロボット３００を移動させるための構成については、後述する第３の実施形態でより詳しく説明されている。
【００８４】
また、上記のようなロボット３００の移動を、オブジェクトｏｂｊの回転と組み合わせてもよい。例えば、角度情報取得／角度推定部３３７は、オブジェクトｏｂｊを回転させた後の角度の再推定でも十分な信頼度が得られない場合に、ロボット３００をオブジェクトｏｂｊとともに移動させた後で角度を再推定してもよい。例えば、カメラ３１０がオブジェクトｏｂｊの画像をキャプチャするときの環境条件が、辞書データ２１０の生成時のカメラ１５０の環境条件とは大きく異なるような場合、上記のような再推定の処理が有効でありうる。
【００８５】
本実施形態に係るシステム１０の機能は、図１，２，７に示した例では端末１００、データベース２００、およびロボット３００に分散して実現される。他の例では、システム１０の機能の大部分が、サーバにおいて実現されてもよい。つまり、上記の例において端末１００およびロボット３００のプロセッサによって実現されるものとして説明された機能は、データベース２００を含むサーバのプロセッサによって実現されてもよい。この場合、端末１００が、カメラ１５０がキャプチャしたオブジェクトｏｂｊの画像と、雲台装置１６０から取得したオブジェクトｏｂｊの角度情報とをサーバに送信し、サーバがこれらを関連付けて辞書データ２１０を生成する。一方、ロボット３００は、カメラ３１０がキャプチャしたオブジェクトｏｂｊの画像をサーバに送信し、サーバがこの画像に基づいてオブジェクトｏｂｊの角度を推定する。ロボット３００は、サーバから角度の推定結果を受信する。サーバは、推定された角度の信頼度が閾値を超えない場合に、角度の再推定のためのオブジェクトｏｂｊの回転と、回転後のオブジェクトｏｂｊの画像の取得とを、ロボット３００に依頼してもよい。なお、これらの機能を実現するサーバは１つでなくてもよく、ネットワーク上に分散した複数のサーバによって上記の機能が実現されてもよい。また、上記の機能を実現するサーバは、データベース２００を含むストレージとは別の装置であってもよい。
【００８６】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。なお、上述の第１の実施形態と同様に構成される部分については、共通した符号を付することによって重複した説明を省略する場合がある。
【００８７】
図１３は、本発明の第２の実施形態に係るロボット３００ａの機能構成を示すブロック図である。図１３を参照すると、本実施形態では、辞書データ２１０の生成、および辞書データ２１０を用いたオブジェクトｏｂｊの角度の推定に関する機能の全体が、ロボット３００ａにおいて実現される。具体的には、ロボット３００ａの制御部３３０のプロセッサは、画像取得部１１０，３３１と、角度情報取得／角度推定部１２０，３３７と、辞書データ生成／更新部１３０，３３５と、辞書データ取得部３３２と、オブジェクト認識／角度推定部３３３と、結果出力部３３４と、マニピュレータ制御部３３６とを実現する。なお、制御部３３０が複数のプロセッサを含む場合、複数のプロセッサが協働して上記の各部の機能を実現してもよい。また、後述するように、制御部３３０のプロセッサが実現する機能の一部、または全部は、サーバにおいて実現することも可能である。また、データベース２００は、ロボット３００ａの制御部３３０のストレージに格納される。以下、各部についてさらに説明する。
【００８８】
画像取得部１１０，３３１は、上記で図２を参照して説明した画像取得部１１０と、図７を参照して説明した画像取得部３３１との両方の機能を有する。つまり、画像取得部１１０，３３１は、カメラ３１０がキャプチャしたオブジェクトｏｂｊの画像を、辞書データ２１０を生成するときには辞書データ生成／更新部１３０，３３５に、辞書データ２１０を用いてオブジェクトｏｂｊの角度を推定するときにはオブジェクト認識／角度推定部３３３に、それぞれ提供する。
【００８９】
角度情報取得／角度推定部１２０，３３７は、上記で図２を参照して説明した角度情報取得部１２０と、図７を参照して説明した角度情報取得／角度推定部３３７との両方の機能を有する。つまり、角度情報取得／角度推定部１２０，３３７は、辞書データ２１０を生成するときには、マニピュレータ制御部３３６から取得した角度情報を辞書データ生成／更新部１３０，３３５に提供する。また、角度情報取得／角度推定部１２０，３３７は、辞書データ２１０を更新するときには、マニピュレータ制御部３３６から取得した角度情報に基づいてオブジェクトｏｂｊの回転量Δθを算出し、さらに回転量Δθとオブジェクト認識／角度推定部３３３が推定した角度θ２とに基づいて初期角度θ１を推定する。
【００９０】
なお、本実施形態において、ロボット３００の角度情報取得／角度推定部３３７が取得する角度情報は、マニピュレータ３２０の座標系を基準にしたオブジェクトｏｂｊの角度を示しうる。この場合、角度情報取得／角度推定部３３７が取得する角度情報によって示されるオブジェクトｏｂｊの角度は、マニピュレータ制御部３３６が設定するマニピュレータ３２０の回転量だけではなく、アームなど、マニピュレータ３２０に連結されるロボット３００の他の構成要素の動作量によっても変化しうる。また、マニピュレータ３２０がオブジェクトｏｂｊのどの面を把持するかも、その時々によって異なりうる。従って、たとえ辞書データ２１０を生成したときと同じマニピュレータ３２０がオブジェクトｏｂｊを把持しているとしても、辞書データ２１０を用いて画像におけるオブジェクトｏｂｊの角度を推定することは有益でありうる。
【００９１】
辞書データ生成／更新部１３０，３３５は、上記で図２を参照して説明した辞書データ生成部１３０と、図７を参照して説明した辞書データ更新部３３５との両方の機能を有する。つまり、辞書データ生成／更新部１３０，３３５は、辞書データ２１０を生成するときには画像取得部１１０，３３１が取得した画像と角度情報取得／角度推定部１２０，３３７が取得した角度情報とに基づいて辞書データ２１０を生成する。また、辞書データ生成／更新部１３０，３３５は、辞書データ２１０を用いてオブジェクトｏｂｊの角度を推定するときには、オブジェクト認識／角度推定部３３３によるオブジェクトｏｂｊの角度の推定の結果、および角度情報取得／角度推定部１２０，３３７による角度の再推定の結果に応じて辞書データ２１０を更新する。
【００９２】
上記の第２の実施形態によって示されるように、第１の実施形態に係るシステム１０の機能は、単一の装置、例えばロボット３００ａにおいて実現することができる。この場合、システム１０が、単一の装置によって実現されるともいえる。同様に、システム１０の構成は、さまざまな装置構成で実現できる。例えば、システム１０は複数のロボット３００を含み、それぞれのロボット３００が辞書データ２１０の生成と、辞書データ２１０を用いたオブジェクトの角度の推定とを実行してもよい。この場合、データベース２００に格納された辞書データ２１０は、複数のロボット３００によって共有される。
【００９３】
また、例えば、システム１０の機能は、その大部分がサーバにおいて実現されてもよい。この場合、データベース２００を含むサーバが、上記の第２の実施形態においてロボット３００ａの制御部３３０によって実現されたような機能を実現する。この場合、端末１００が、カメラ１５０がキャプチャしたオブジェクトｏｂｊの画像と、雲台装置１６０から取得したオブジェクトｏｂｊの角度情報とをサーバに送信し、サーバがこれらを関連付けて辞書データ２１０を生成する。一方、ロボット３００は、カメラ３１０がキャプチャしたオブジェクトｏｂｊの画像をサーバに送信し、サーバがこの画像に基づいてオブジェクトｏｂｊの角度を推定する。ロボット３００は、サーバから角度の推定結果を受信する。サーバは、推定された角度の信頼度が閾値を超えない場合に、角度の再推定のためのオブジェクトｏｂｊの回転と、回転後のオブジェクトｏｂｊの画像の取得とを、ロボット３００に依頼してもよい。
【００９４】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。なお、上述した第２の実施形態と同様に構成される部分については、共通した符号を付することによって重複した説明を省略する。
【００９５】
図１４は、本発明の第３の実施形態について概略的に説明するための図である。図１４を参照すると、本実施形態では、ロボット３００ｂが、マニピュレータを用いてオブジェクトを把持する代わりに、オブジェクトｏｂｊに対して相対的に移動する。図示された例において、ロボット３００ｂの移動は、オブジェクトを中心にした旋回移動（ｒｅｖｏｌｕｔｉｏｎ）を含む。このとき、カメラ３１０によってキャプチャされる画像では、オブジェクトｏｂｊが軸Ａ１の回りに回転する。また、ロボット３００ｂの移動は、カメラ３１０のオブジェクトｏｂｊに対する傾動（ｔｉｌｔ）を含む。このとき、カメラ３１０によってキャプチャされる画像では、オブジェクトｏｂｊが軸Ａ２の回りに回転する。
【００９６】
図１５は、本発明の第３の実施形態に係るロボット３００ｂの機能構成を示すブロック図である。本実施形態に係るロボット３００ｂは、図１３に示したロボット３００ａと比較して、マニピュレータ３２０を制御するマニピュレータ制御部３３６に代えて、モータ３５０を制御するモータ制御部３３９が含まれる点で異なる。
【００９７】
モータ制御部３３９は、ロボット３００のモータ３５０を制御する。上記で図６を参照して説明したように、モータ３５０は、ロボット３００の関節構造を動作させたり、ロボット３００ｂの車輪を回転させたりすることによって、ロボット３００ｂを移動させたり、ロボット３００ｂの姿勢を変更したりするためのモータを含む。モータ制御部３３９は、上記で図１４を参照して説明したように、ロボット３００ｂのオブジェクトｏｂｊを中心にした旋回移動、および／またはロボット３００ｂのカメラ３１０のオブジェクトｏｂｊに対する傾動が実行されるように、モータ３５０を制御する。
【００９８】
角度情報取得／角度推定部１２０，３３７ｂは、オブジェクトｏｂｊの角度を示す角度情報を取得する。ここで、角度情報は、例えば、ロボット３００およびカメラ３１０の移動中に画像取得部３３１が取得した時系列の複数の画像を用いて画像ベースのＳＬＡＭ（Simultaneous  Localization  and  Mapping）を実行することによって取得される。なお、ＳＬＡＭは、深度センサまたはレーザーレンジスキャナなど、ロボット３００ａが有する他のセンサ３４０の測定結果を利用して実行されてもよい。この場合、角度情報取得／角度推定部１２０，３３７ｂは、ＳＬＡＭによってカメラ３１０の移動量を特定した上で、別途特定されるカメラ３１０とオブジェクトｏｂｊとの位置関係に基づいて、オブジェクトｏｂｊの角度情報を取得する。あるいは、角度情報取得／角度推定部１２０，３３７ｂは、モータ制御部３３９によるモータ３５０の制御値に基づいて、カメラ３１０の移動量を特定してもよい。
【００９９】
本実施形態は、上記のようにして取得された角度情報を用いて、辞書データ２１０を生成することができる。また、オブジェクト認識／角度推定部３３３が辞書データ２１０に基づいて十分な信頼度で角度を推定することができなかった場合に、モータ制御部３３９がモータ３５０を制御することによって画像内でオブジェクトｏｂｊを回転させ、角度の再推定および辞書データ２１０の更新を実行することができる。本実施形態において、カメラ３１０のオブジェクトｏｂｊに対する相対的な移動は、オブジェクトｏｂｊの角度の再推定にあたって実行される、オブジェクトｏｂｊに関する物理的な操作の例である。
【０１００】
以上のような本発明の第３の実施形態の構成によれば、オブジェクトｏｂｊが大きい場合や、小さくても動かすことができないような場合にも、オブジェクトｏｂｊの角度を推定するための辞書データ２１０を生成することができる。ここで、ロボット３００ｂは、図７を参照して説明したようなマニピュレータ３２０およびマニピュレータ制御部３３６をも有し、オブジェクトｏｂｊが把持可能である場合には上記の第１および第２の実施形態と同様に、マニピュレータ３２０を用いてオブジェクトｏｂｊを回転させてもよい。
【０１０１】
なお、上記で説明された第３の実施形態の例では、第２の実施形態と同様に、辞書データ２１０の生成、および辞書データ２１０を用いたオブジェクトｏｂｊの角度の推定に関する機能の全体がロボット３００ｂにおいて実現されていたが、他の例も可能である。例えば、第１の実施形態に係るシステム１０において、ロボット３００がマニピュレータ制御部３３６に代えて、またはマニピュレータ制御部３３６とともに、モータ制御部３３９を含んでもよい。
【０１０２】
例えば、辞書データ２１０を生成するときに用いられる雲台装置１６０（またはロボット３００）と、辞書データ２１０を用いてオブジェクトｏｂｊの角度を推定するロボット３００とのサイズが異なる場合、辞書データ２１０を生成するときには雲台装置１６０またはマニピュレータ３２０を用いてオブジェクトｏｂｊを回転させることが可能である一方で、辞書データ２１０を更新するときにはオブジェクトｏｂｊを回転させることが困難である場合、またはその逆の場合が生じうる。
【０１０３】
また、例えば、上記のようにロボット３００がマニピュレータ制御部３３６とともにモータ制御部３３９を含む場合、モータ制御部３３９は、カメラ３１０がオブジェクトｏｂｊとともに移動するようにモータ３５０を制御してもよい。この場合、マニピュレータ制御部３３６は、画像におけるオブジェクトｏｂｊの角度が変化しないようにマニピュレータ３２０を制御する。具体的には、マニピュレータ制御部３３６は、モータ制御部３３９がモータ３５０を制御してロボット３００が移動している間、マニピュレータ３２０とカメラ３１０との位置関係およびマニピュレータ３２０がオブジェクトｏｂｊを把持する角度を保持する。
【０１０４】
このように、カメラ３１０をオブジェクトｏｂｊとともに移動させることによって、例えば、画像におけるオブジェクトｏｂｊの角度を変えずに、カメラ３１０が画像をキャプチャするときの環境条件を変化させることができる。これによって、例えば、ある環境条件では辞書データ２１０に基づくオブジェクトｏｂｊの角度の信頼度の高い推定が困難であった場合に、環境条件を変化させることによって、信頼度の高い推定が可能になる可能性がある。また、辞書データ２１０を生成するときに、異なる環境条件で取得された複数の画像を共通の角度情報に対応付けた複数の要素を辞書データ２１０に含めることによって、角度の推定のロバスト性を向上させることができる。
【０１０５】
上記の例において、辞書データ２１０の更新処理では、まず、モータ制御部３３９が、モータ３５０を制御することによってカメラ３１０をオブジェクトｏｂｊとともに移動させる。カメラ３１０およびオブジェクトｏｂｊが移動させられた後、画像取得部３３１がオブジェクトｏｂｊの移動後の画像（第２の画像）を取得し、オブジェクト認識／角度推定部３３３が移動後の画像（第２の画像）におけるオブジェクトｏｂｊの角度を再推定する。この推定におけるマッチングスコアが閾値を超える場合、辞書データ更新部３３５は、再推定されたオブジェクトｏｂｊの角度に対応する角度情報と、画像取得部３３１がオブジェクトｏｂｊの移動前に取得した画像（第１の画像）とに基づいて辞書データを更新する。この例では、カメラ３１０がオブジェクトｏｂｊとともに移動することが、オブジェクトｏｂｊの角度の再推定にあたって実行されるオブジェクトｏｂｊに関する物理的な操作にあたる。また、この例では、オブジェクト認識／角度推定部３３３が、上述した「第１の角度推定機能」および「第２の角度推定機能」の両方の機能を果たす。
【０１０６】
（情報処理装置のハードウェア構成例）
次に、図１６を参照して、本発明の実施形態における情報処理装置のハードウェア構成例について説明する。図１６は、本発明の実施形態における情報処理装置のハードウェア構成例を示すブロック図である。
【０１０７】
情報処理装置９００は、プロセッサ９０１、メモリ９０３、入力装置９０５、出力装置９０７、およびバス９０９を含む。情報処理装置９００は、さらに、ストレージ９１１、ドライブ９１３、接続ポート９１５、および通信装置９１７を含んでもよい。
【０１０８】
プロセッサ９０１は、例えば、ＣＰＵ（Central  Processing  unit）、ＤＳＰ（Digital  Signal  Processor）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、および／またはＦＰＧＡ（Field-Programmable  Gate  Array）などの処理回路によって構成される。プロセッサ９０１は、演算処理装置および制御装置として機能し、メモリ９０３、ストレージ９１１、またはリムーバブル記録媒体９１９に記録されたプログラムに従って情報処理装置９００の動作を制御する。
【０１０９】
メモリ９０３は、例えば、ＲＯＭ（Read  Only  Memory）およびＲＡＭ（Random  Access  Memory）を含む。ＲＯＭは、例えばプロセッサ９０１のためのプログラム、および演算パラメータなどを記憶する。ＲＡＭは、例えばプロセッサ９０１の実行時に展開されたプログラム、およびプログラムの実行時のパラメータなどを一次記憶する。
【０１１０】
入力装置９０５は、例えば、マウス、キーボード、タッチパネル、ボタン、または各種のスイッチなど、ユーザによって操作される装置である。入力装置９０５は、必ずしも情報処理装置９００と一体化していなくてもよく、例えば、無線通信によって制御信号を送信するリモートコントローラであってもよい。入力装置９０５は、ユーザが入力した情報に基づいて入力信号を生成してプロセッサ９０１に出力する入力制御回路を含む。
【０１１１】
出力装置９０７は、視覚や聴覚、触覚などの感覚を用いてユーザに向けて情報を出力することが可能な装置で構成される。出力装置９０７は、例えば、ＬＣＤ（Liquid  Crystal  Display）または有機ＥＬ（Electro-Luminescence）ディスプレイなどの表示装置、スピーカまたはヘッドフォンなどの音声出力装置、もしくはバイブレータなどを含みうる。出力装置９０７は、情報処理装置９００の処理により得られた結果を、テキストもしくは画像などの映像、音声もしくは音響などの音声、またはバイブレーションなどとして出力する。
【０１１２】
ストレージ９１１は、例えば、ＨＤＤ（Hard  Disk  Drive）などの磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。ストレージ９１１は、例えばプロセッサ９０１のためのプログラム、プログラムの実行時に読み出される、またはプログラムの実行によって生成された各種のデータ、および外部から取得した各種のデータなどを格納する。
【０１１３】
ドライブ９１３は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体９１９のためのリーダライタである。ドライブ９１３は、装着されているリムーバブル記録媒体９１９に記録されている情報を読み出して、メモリ９０３に出力する。また、ドライブ９１３は、装着されているリムーバブル記録媒体９１９に各種のデータを書き込む。
【０１１４】
接続ポート９１５は、外部接続機器９２１を情報処理装置９００に接続するためのポートである。接続ポート９１５は、例えば、ＵＳＢ（Universal  Serial  Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small  Computer  System  Interface）ポートなどを含みうる。また、接続ポート９１５は、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）ポートなどを含んでもよい。接続ポート９１５に外部接続機器９２１を接続することで、情報処理装置９００と外部接続機器９２１との間で各種のデータを交換することができる。
【０１１５】
通信装置９１７は、ネットワーク９２３に接続される。なお、ネットワーク９２３は、例えばインターネットのような不特定多数の装置が接続される開かれた通信ネットワークであってもよく、例えばＢｌｕｅｔｏｏｔｈ（登録商標）のような限られた装置、例えば２つの装置が接続される閉じられた通信ネットワークであってもよい。通信装置９１７は、例えば、ＬＡＮ（Local  Area  Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ、またはＷＵＳＢ（Wireless  USB）用の通信カードを含みうる。通信装置９１７は、ネットワーク９２３に応じた所定のプロトコルを用いて、他の情報処理装置との間で信号またはデータなどを送受信する。
【０１１６】
以上、情報処理装置９００のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、当業者は、上述したような情報処理装置９００の構成を、実施する時々の技術レベルに応じて適宜変更することができる。
【０１１７】
本発明の実施形態は、例えば、上記で説明したようなシステム、治具、情報処理装置、情報処理装置で実行される情報処理方法、情報処理装置を機能させるためのプログラム、およびプログラムが記録された一時的でない有形の媒体を含みうる。
【０１１８】
以上、添付図面を参照しながら本発明のいくつかの実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【０１１９】
１０…システム、１００…端末、１１０…画像取得部、１２０…角度情報取得部、１３０…辞書データ生成部、１５０…カメラ、１６０…雲台装置、１６１…基台、１６２…支柱、１６３…アーム、１６４…ピン、１６５…ホルダ、１６７…制御部、１７０…治具、１７１…取付部材、１７２…連結部材、１７３…オブジェクトホルダ、１７４…背景板、２００…データベース、２１０…辞書データ、３００，３００ａ，３００ｂ…ロボット、３１０…カメラ、３２０…マニピュレータ、３３０…制御部、３３１…画像取得部、３３２…辞書データ取得部、３３３…オブジェクト認識／角度推定部、３３４…結果出力部、３３５…辞書データ更新部、３３６…マニピュレータ制御部、３３７…角度情報取得／角度推定部、３３９…モータ制御部、３４０…センサ、３５０…モータ。
【図１】
2018092448.tif 000003
【図２】
2018092448.tif 000004
【図３】
2018092448.tif 000005
【図４】
2018092448.tif 000006
【図５】
2018092448.tif 000007
【図６】
2018092448.tif 000008
【図７】
2018092448.tif 000009
【図８】
2018092448.tif 000010
【図９】
2018092448.tif 000011
【図１０】
2018092448.tif 000012
【図１１】
2018092448.tif 000013
【図１２】
2018092448.tif 000014
【図１３】
2018092448.tif 000015
【図１４】
2018092448.tif 000016
【図１５】
2018092448.tif 000017
【図１６】
2018092448.tif 000018