IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソニー・コンピュータエンタテインメントの特許一覧

<>
  • 特許-システム、治具、および情報処理方法 図1
  • 特許-システム、治具、および情報処理方法 図2
  • 特許-システム、治具、および情報処理方法 図3
  • 特許-システム、治具、および情報処理方法 図4
  • 特許-システム、治具、および情報処理方法 図5
  • 特許-システム、治具、および情報処理方法 図6
  • 特許-システム、治具、および情報処理方法 図7
  • 特許-システム、治具、および情報処理方法 図8
  • 特許-システム、治具、および情報処理方法 図9
  • 特許-システム、治具、および情報処理方法 図10
  • 特許-システム、治具、および情報処理方法 図11
  • 特許-システム、治具、および情報処理方法 図12
  • 特許-システム、治具、および情報処理方法 図13
  • 特許-システム、治具、および情報処理方法 図14
  • 特許-システム、治具、および情報処理方法 図15
  • 特許-システム、治具、および情報処理方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-01
(45)【発行日】2022-04-11
(54)【発明の名称】システム、治具、および情報処理方法
(51)【国際特許分類】
   H04N 5/222 20060101AFI20220404BHJP
   B25J 19/04 20060101ALI20220404BHJP
   G06T 7/00 20170101ALI20220404BHJP
   G06T 7/60 20170101ALI20220404BHJP
【FI】
H04N5/222
B25J19/04
G06T7/00 300D
G06T7/60 150Z
【請求項の数】 5
(21)【出願番号】P 2016236279
(22)【出願日】2016-12-05
(65)【公開番号】P2018092449
(43)【公開日】2018-06-14
【審査請求日】2019-12-04
【前置審査】
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】110000637
【氏名又は名称】特許業務法人樹之下知的財産事務所
(72)【発明者】
【氏名】永塚 仁夫
(72)【発明者】
【氏名】山岸 建
【審査官】吉川 康男
(56)【参考文献】
【文献】特開2000-288968(JP,A)
【文献】特表2011-523718(JP,A)
【文献】特開2015-169515(JP,A)
【文献】特開2000-293695(JP,A)
【文献】特開2006-026790(JP,A)
【文献】特開2007-245283(JP,A)
【文献】国際公開第2011/086889(WO,A1)
【文献】米国特許出願公開第2003/144765(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 5/222
B25J 19/04
G06T 7/00
G06T 7/60
(57)【特許請求の範囲】
【請求項1】
オブジェクトの第1の画像を取得する第1の画像取得機能と、
前記第1の画像における前記オブジェクトの角度を示す角度情報を取得する角度情報取得機能と、
前記第1の画像および前記角度情報に基づいて辞書データを生成する辞書データ生成機能と、
前記オブジェクトの、前記第1の画像とは異なる第2の画像を取得する第2の画像取得機能と、
前記第2の画像および前記辞書データに基づいて、前記第2の画像における前記オブジェクトの角度を推定する角度推定機能と
を単独で、または協働して実現する、1または複数の情報処理装置、および
前記オブジェクトを保持する保持手段
を含み、
前記辞書データは、前記オブジェクトの互いに異なる複数の画像と、前記複数の画像に共通する前記角度情報とに基づいて生成される要素を含み、
前記角度情報取得機能は、前記保持手段から、前記保持手段が前記オブジェクトを保持している角度を示す前記角度情報を取得し、
前記保持手段は、
前記第1の画像をキャプチャする撮像装置の光軸に直交する第1の軸の回りに回動する基部、
前記基部上で前記第1の軸に対して対称な位置に固定される1対の支柱、
前記基部とは反対側で、前記第1の軸に直交する第2の軸の回りに枢動可能であるように前記1対の支柱にそれぞれ連結される1対のアーム、
前記1対の支柱とは反対側で、前記1対のアームの端部同士の間に固定されるホルダ、ならびに
前記基部が前記第1の軸の回りに回動する角度、および前記1対のアームが前記第2の軸の回りに枢動する角度を設定する制御部
を有する雲台装置と、
前記雲台装置の前記ホルダに取り付け可能な取付部材、
前記オブジェクトを取り付け可能なオブジェクトホルダ、および
前記取付部材と前記オブジェクトホルダとを連結し、前記取付部材が前記雲台装置の前記ホルダに取り付けられたときに、前記オブジェクトホルダに取り付けられた前記オブジェクトが前記第1の軸と前記第2の軸との交点の近傍に位置するように前記取付部材と前記オブジェクトホルダとの位置関係を規定する、連結部材
を有する治具と
を含み、
前記角度情報取得機能は、前記雲台装置の制御部から前記角度情報を取得するシステム。
【請求項2】
第1の軸の回りに回動する基部、前記基部上で前記第1の軸に対して対称な位置に固定される1対の支柱、前記基部とは反対側で、前記第1の軸に直交する第2の軸の回りに枢動可能であるように前記1対の支柱にそれぞれ連結される1対のアーム、前記1対の支柱とは反対側で、前記1対のアームの端部同士の間に固定されるホルダ、ならびに前記基部が前記第1の軸の回りに回動する角度、および前記1対のアームが前記第2の軸の回りに枢動する角度を設定する制御部を有する雲台装置に取り付け可能な治具であって、
前記雲台装置の前記ホルダに取り付け可能な取付部材と、
オブジェクトを取り付け可能なオブジェクトホルダと、
前記取付部材と前記オブジェクトホルダとを連結し、前記取付部材が前記雲台装置の前記ホルダに取り付けられたときに、前記オブジェクトホルダに取り付けられた前記オブジェクトが前記第1の軸と前記第2の軸との交点の近傍に位置するように前記取付部材と前記オブジェクトホルダとの位置関係を規定する、連結部材と
を備える治具。
【請求項3】
前記連結部材は、前記取付部材が前記雲台装置の前記ホルダに取り付けられたときに前記雲台装置の前記1対のアームに沿って延び、前記1対のアームに沿った方向の長さを調節可能な構造を有する、請求項に記載の治具。
【請求項4】
前記オブジェクトホルダに取り付けられた前記オブジェクトの交換可能な背景を提供する背景板をさらに備える、請求項またはに記載の治具。
【請求項5】
オブジェクトの互いに異なる複数の画像を取得するステップと、
前記複数の画像に共通する前記オブジェクトの角度を示す角度情報を取得するステップと、
プロセッサが、前記複数の画像、および前記複数の画像に共通する前記角度情報に基づいて辞書データを生成するステップと
を含み、
前記角度情報を取得するステップでは、前記オブジェクトを保持する保持手段から、前記保持手段が前記オブジェクトを保持している角度を示す前記角度情報を取得し、
前記保持手段は、
前記複数の画像をキャプチャする撮像装置の光軸に直交する第1の軸の回りに回動する基部、
前記基部上で前記第1の軸に対して対称な位置に固定される1対の支柱、
前記基部とは反対側で、前記第1の軸に直交する第2の軸の回りに枢動可能であるように前記1対の支柱にそれぞれ連結される1対のアーム、
前記1対の支柱とは反対側で、前記1対のアームの端部同士の間に固定されるホルダ、ならびに
前記基部が前記第1の軸の回りに回動する角度、および前記1対のアームが前記第2の軸の回りに枢動する角度を設定する制御部
を有する雲台装置と、
前記雲台装置の前記ホルダに取り付け可能な取付部材、
前記オブジェクトを取り付け可能なオブジェクトホルダ、および
前記取付部材と前記オブジェクトホルダとを連結し、前記取付部材が前記雲台装置の前記ホルダに取り付けられたときに、前記オブジェクトホルダに取り付けられた前記オブジェクトが前記第1の軸と前記第2の軸との交点の近傍に位置するように前記取付部材と前記オブジェクトホルダとの位置関係を規定する、連結部材
を有する治具と
を含み、
前記角度情報を取得するステップでは、前記雲台装置の制御部から前記角度情報を取得する情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム、治具、および情報処理方法に関する。
【背景技術】
【0002】
画像ベースのオブジェクト認識は、近年では一般的な技術である。画像ベースのオブジェクト認識では、例えば、撮像装置によってキャプチャされた画像の特徴量を抽出し、その特徴量を辞書データとしてあらかじめ登録された特徴量とマッチングすることによって、画像に写っているオブジェクトが認識される。ここで、画像に写っているオブジェクトの角度が変化すると特徴量も変化するため、オブジェクト認識の可用性を高めるためには、オブジェクトの角度ごとに辞書データを用意する必要がある。
【0003】
特許文献1,2は、画像ベースのオブジェクト認識において、オブジェクトの角度ごとに辞書データを用意するための技術の例である。特許文献1には、オブジェクトを45度間隔で回転させて得られる8枚の画像に基づいてオブジェクトを認識する技術が記載されている。特許文献2には、オブジェクトを水平角方向および天頂角方向に5度単位などで回転させて得られる多数の画像から共通部分を認識することによってオブジェクトのモデルを学習する技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2003-346152号公報
【文献】米国特許出願公開第2013/0202212号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のような技術は、画像に写っているオブジェクトを認識する、すなわち画像に写っているオブジェクトが何であるかを推定するための技術であり、画像からそれ以上の追加的な情報を引き出すことは意図されていない。しかしながら、近年ではオブジェクト認識の技術が利用される分野が多様化していることに鑑みれば、画像に基づいてオブジェクトに関する追加的な情報を提供することには利点があると考えられる。
【0006】
そこで、本発明は、画像に基づいてオブジェクトの角度を推定することを可能にする、新規かつ改良されたシステム、治具、情報処理装置、情報処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明のある観点によれば、オブジェクトの第1の画像を取得する第1の画像取得機能と、第1の画像におけるオブジェクトの角度を示す角度情報を取得する角度情報取得機能と、第1の画像および角度情報に基づいて辞書データを生成する辞書データ生成機能と、オブジェクトの、第1の画像とは異なる第2の画像を取得する第2の画像取得機能と、第2の画像および辞書データに基づいて、第2の画像におけるオブジェクトの角度を推定する角度推定機能とを単独で、または協働して実現する、1または複数の情報処理装置を含むシステムが提供される。
【0008】
また、本発明の別の観点によれば、第1の軸の回りに回動する基部、基部上で第1の軸に対して対称な位置に固定される1対の支柱、基部とは反対側で、第1の軸に直交する第2の軸の回りに枢動可能であるように1対の支柱にそれぞれ連結される1対のアーム、1対の支柱とは反対側で、1対のアームの端部同士の間に固定されるホルダ、ならびに基部が第1の軸の回りに回動する角度、および1対のアームが第2の軸の回りに枢動する角度を設定する制御部を有する雲台装置に取り付け可能な治具が提供される。治具は、雲台装置のホルダに取り付け可能な取付部材と、オブジェクトを取り付け可能なオブジェクトホルダと、取付部材とオブジェクトホルダとを連結し、取付部材が雲台装置のホルダに取り付けられたときに、オブジェクトホルダに取り付けられたオブジェクトが第1の軸と第2の軸との交点の近傍に位置するように取付部材とオブジェクトホルダとの位置関係を規定する、連結部材とを備える。
【0009】
また、本発明のさらに別の観点によれば、オブジェクトの互いに異なる複数の画像を取得する画像取得機能と、複数の画像に共通するオブジェクトの角度を示す角度情報を取得する角度情報取得機能と、複数の画像、および複数の画像に共通する角度情報に基づいて辞書データを生成する辞書データ生成機能とを実現するプロセッサを備える情報処理装置が提供される。
【0010】
また、本発明のさらに別の観点によれば、オブジェクトの第1の画像、および第1の画像におけるオブジェクトの角度を示す角度情報に基づいて生成された辞書データを取得する辞書データ取得機能と、オブジェクトの、第1の画像とは異なる第2の画像を取得する画像取得機能と、第2の画像および辞書データに基づいて、第2の画像におけるオブジェクトの角度を推定する角度推定機能とを実現するプロセッサを備える情報処理装置が提供される。
【0011】
また、本発明のさらに別の観点によれば、オブジェクトの互いに異なる複数の画像を取得するステップと、複数の画像に共通するオブジェクトの角度を示す角度情報を取得するステップと、プロセッサが、複数の画像、および複数の画像に共通する角度情報に基づいて辞書データを生成するステップとを含む情報処理方法が提供される。
【0012】
また、本発明のさらに別の観点によれば、オブジェクトの第1の画像、および第1の画像におけるオブジェクトの角度を示す角度情報に基づいて生成された辞書データを取得するステップと、オブジェクトの、第1の画像とは異なる第2の画像を取得するステップと、プロセッサが、第2の画像および辞書データに基づいて、第2の画像におけるオブジェクトの角度を推定するステップとを含む情報処理方法が提供される。
【0013】
また、本発明のさらに別の観点によれば、オブジェクトの互いに異なる複数の画像を取得する画像取得機能と、複数の画像に共通するオブジェクトの角度を示す角度情報を取得する角度情報取得機能と、複数の画像、および複数の画像に共通する角度情報に基づいて辞書データを生成する辞書データ生成機能とをプロセッサに実現させるためのプログラムが提供される。
【0014】
また、本発明のさらに別の観点によれば、オブジェクトの第1の画像、および第1の画像におけるオブジェクトの角度を示す角度情報に基づいて生成された辞書データを取得する辞書データ取得機能と、オブジェクトの、第1の画像とは異なる第2の画像を取得する第2の画像取得機能と、第2の画像および辞書データに基づいて、第2の画像におけるオブジェクトの角度を推定する角度推定機能とをプロセッサに実現させるためのプログラムが提供される。
【図面の簡単な説明】
【0015】
図1】本発明の第1の実施形態に係るシステムを概略的に示す図である。
図2図1に示すシステムにおける端末の機能構成を示すブロック図である。
図3図1に示すシステムで用いられる雲台装置および治具の構成を示す概略的な斜視図である。
図4図3のI-I線断面図である。
図5】本発明の第1の実施形態において生成される辞書データについて概念的に説明するための図である。
図6図1に示すシステムにおけるロボットの概略的な構成について説明するための図である。
図7図1に示すシステムにおけるロボットの機能構成を示すブロック図である。
図8】本発明の第1の実施形態における辞書データ生成処理の例を示すフローチャートである。
図9】本発明の第1の実施形態における認識処理の例を示すフローチャートである。
図10】本発明の第1の実施形態における枝狩り処理の例を示すフローチャートである。
図11図10に示す枝狩り処理について概念的に説明するための図である。
図12】本発明の第1の実施形態における辞書データ更新処理の例を示すフローチャートである。
図13】本発明の第2の実施形態に係るロボットの機能構成を示すブロック図である。
図14】本発明の第3の実施形態について概略的に説明するための図である。
図15】本発明の第3の実施形態に係るロボットの機能構成を示すブロック図である。
図16】本発明の実施形態における情報処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、添付図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0017】
(第1の実施形態)
図1は、本発明の第1の実施形態に係るシステム10を概略的に示す図である。図1を参照すると、システム10は、ネットワークNWによって互いに接続された、端末100と、データベース200と、ロボット300とを含む。端末100には、カメラ150と、雲台装置(platform device)160とが接続されている。ロボット300は、カメラ310と、マニピュレータ320とを有する。
【0018】
上記のようなシステム10において、カメラ150は、後述する治具170を介して雲台装置160に取り付けられたオブジェクトobjの画像をキャプチャする。端末100は、カメラ150から画像を取得するとともに、雲台装置160からオブジェクトobjの角度を示す角度情報を取得する。なお、以下の説明では、別途の言及がない限り、オブジェクトobjの角度は、3次元空間における角度、例えば直交座標系における3つの軸の回りの回転量によって表される角度である。端末100は、取得した画像および角度情報(、ならびにオブジェクトobjの識別情報)に基づいて辞書データを生成する。生成された辞書データは、データベース200に格納される。
【0019】
一方、ロボット300は、マニピュレータ320によってオブジェクトobjを把持した状態で、カメラ310を用いてオブジェクトobjの画像をキャプチャする。ロボット300は、キャプチャされた画像と、データベース200から取得した辞書データとに基づいて、画像に写っているオブジェクトobjを認識し、さらに画像におけるオブジェクトobjの角度を推定する。
【0020】
これによって、ロボット300は、オブジェクトobjを認識したうえで、さらに、マニピュレータ320によって把持されているオブジェクトobjの角度を推定することができる。この角度は、例えば、オブジェクトobjが基準姿勢に対してどの程度回転しているのかを示す。ロボット300は、例えば、角度の推定結果に基づいてマニピュレータ320を制御することによってオブジェクトobjを回転させ、それによってオブジェクトobjを所望の姿勢にすることができる。
【0021】
上記のようなシステム10は、例えば、ロボット300を用いて物品を配列または整頓する作業を自動化するときに有用である。また、システム10は、例えば、オブジェクトobjの所定の部位に配置された情報(印刷されたコード、RFID(radio frequency identifier)など)を読み取るために、オブジェクトobjをどのように回転させればよいかを特定するためにも有用である。なお、システム10の用途は上記の例には限られず、他にも様々な用途が可能でありうる。
【0022】
(辞書データを生成するための構成)
図2は、図1に示すシステムにおける端末100の機能構成を示すブロック図である。図2を参照すると、端末100は、画像取得部110と、角度情報取得部120と、辞書データ生成部130とを含む。端末100は、例えばパーソナルコンピュータ、タブレット、またはスマートフォンなどであり、各部の機能は後述する情報処理装置のハードウェア構成によって実現される。具体的には、例えば、画像取得部110、角度情報取得部120、および辞書データ生成部130の機能は、情報処理装置に含まれるプロセッサによって実現される。辞書データ生成部130によって生成された辞書データ210は、ネットワークを介して端末100に接続されたデータベース200に格納される。データベース200の機能は、ネットワークに接続された1または複数の情報処理装置のストレージによって実現される。なお、端末100が複数のプロセッサを含む場合、複数のプロセッサが協働して上記の各部の機能を実現してもよい。また、後述するように、端末100のプロセッサが実現する機能の一部、または全部は、サーバにおいて実現することも可能である。以下、各部の機能について説明する。
【0023】
画像取得部110は、カメラ150がキャプチャしたオブジェクトobjの画像を取得する。ここで、カメラ150は、オブジェクトの画像をキャプチャする撮像装置の例である。具体的には、カメラ150は、例えばイメージセンサを有するデジタルカメラであり、画像取得部110はカメラ150によって生成された画像データを受信する。図示された例において、カメラ150は、USB(Universal Serial Bus)などの有線通信インターフェースを介して端末100に接続されるが、他の例において、カメラ150は、Bluetooth(登録商標)などの無線通信インターフェースを介して端末100に接続されてもよい。あるいは、カメラ150は端末100に内蔵され、バスを介して画像取得部110に画像データを送信してもよい。
【0024】
角度情報取得部120は、雲台装置160からオブジェクトobjの角度を示す角度情報を取得する。ここで、本実施形態において、端末100の角度情報取得部120が取得する角度情報は、雲台装置160の座標系を基準にしたオブジェクトobjの角度を示す。なお、角度情報取得部120自身がオブジェクトobjの角度情報を生成し、その角度情報を雲台装置160に送信するとともに辞書データ生成部130に提供する場合も、「角度情報取得部120が角度情報を取得する」場合に含まれる。この場合、雲台装置160は、角度情報取得部120から受信した角度情報に従ってオブジェクトobjを保持する角度を設定する。本実施形態において、雲台装置160は、オブジェクトobjを保持する保持手段の例である。カメラ150と同様に、雲台装置160も、有線通信インターフェースを介して端末100に接続されてもよく、無線通信インターフェースを介して端末100に接続されてもよい。
【0025】
上述の通り、オブジェクトobjの角度は3次元空間における角度、例えば直交座標系における3つの軸の回りの回転量によって表される角度である。それゆえ、角度情報取得部120は、例えば、角度情報を、オブジェクトobjの現在の姿勢と基準姿勢との差分に相当する回転量によって表現する。ここで、基準姿勢は、例えば雲台装置160がリセットされたときのオブジェクトobjの姿勢である。あるいは、基準姿勢は、画像取得部110が辞書データ210の生成のために最初にオブジェクトobjの画像を取得したときのオブジェクトobjの姿勢であってもよい。
【0026】
辞書データ生成部130は、画像取得部110が取得した画像と、オブジェクトobjの識別情報と、角度情報取得部120が取得した角度情報とに基づいて辞書データ210を生成する。ここで、オブジェクトobjの識別情報は、どのような手段で特定されてもよい。例えば、オブジェクトobjの識別情報は、ユーザが端末100に入力する情報に基づいて特定されてもよい。また、オブジェクトobjの識別情報は、画像取得部110が取得した画像を、画像ベースのオブジェクト認識のために別途提供される辞書データとマッチングさせることによって特定されてもよい。あるいは、辞書データ生成部130は、画像取得部110が取得した複数の画像に共通して含まれるオブジェクトobjに対して識別情報を割り当ててもよい。
【0027】
なお、本実施形態における辞書データ210の生成に用いられる情報のうち、画像とオブジェクトobjの識別情報との組み合わせに関しては、既に知られている画像ベースのオブジェクト認識における技術を適宜利用することができる。例えば、辞書データ生成部130は、画像ベースのオブジェクト認識で利用される適切な手法で画像から特徴量を抽出し、抽出された特徴量をオブジェクトobjの識別情報および角度情報と対応付けてもよい。また、例えば、辞書データ生成部130は、画像ベースのオブジェクト認識で利用される適切な手法で分類およびラベリングされたオブジェクトobjの識別情報を利用してもよい。
【0028】
また、本実施形態では辞書データ210をオブジェクトobjの識別情報に基づいて生成されるものとして説明しているが、辞書データ210は、必ずしもオブジェクトobjの識別情報に基づいて生成されなくてもよい。例えば、システム10が単一の種類のオブジェクトobjのために提供される場合、辞書データ210はオブジェクトobjの識別情報を含まなくてもよい。一方、本実施形態のように辞書データ210がオブジェクトobjの識別情報を含む場合、複数の種類のオブジェクトobjについて、そのオブジェクトobjを認識したうえで、さらにオブジェクトobjの角度を推定することができる。
【0029】
(雲台装置および治具の構成)
以下、本実施形態に係るシステム10において上記の端末100とともに用いられる雲台装置160、および雲台装置160にオブジェクトobjを取り付けるための治具170の構成について、さらに説明する。
【0030】
図3は、図1に示すシステムで用いられる雲台装置160および治具170の構成を示す概略的な斜視図である。図4は、図3のI-I線断面図である。図3および図4を参照すると、雲台装置160は、基台161と、1対の支柱162と、1対のアーム163と、1対のピン164と、ホルダ165と、梁166と、制御部167とを含む。治具170は、取付部材171と、連結部材172と、オブジェクトホルダ173と、背景板174とを含む。なお、図3では背景板174の図示が省略されている。以下、各部について説明する。
【0031】
雲台装置160において、基台161は、例えば回転テーブルであり、制御部167によって制御されるモータ(図示せず)の駆動によって、軸Aの回りに回動する。ここで、軸Aは、カメラ150の光軸(図4に軸Aとして示す)に直交する。1対の支柱162は、基台161上で、軸Aに対して対称な位置に固定される。従って、1対の支柱162の中点は軸Aにほぼ一致する。1対のアーム163は、基台161とは反対側で、1対の支柱162のそれぞれにピン164を用いて連結される。ピン164は、軸Aに直交する軸A上に位置する。1対のアーム163は、それぞれ、軸Aの回りに枢動可能である。具体的には、1対の支柱162とピン164との間、またはピン164と1対のアーム163との間はギアを介して連結され、このギアに制御部167によって制御されるモータ(図示せず)が接続されることによって、1対のアーム163が軸Aの回りに枢動する。
【0032】
ホルダ165は、1対の支柱162とは反対側で、1対のアーム163の端部同士の間に、梁166を介して固定される。ホルダ165は、例えば雲台装置160がカメラ用の自動雲台として用いられる場合にはカメラが取り付けられる部材であるが、後述するように本実施形態では治具170の取付部材171がホルダ165に取り付けられる。上記のように1対のアーム163が軸Aの回りに枢動すると、ホルダ165は軸Aの回りに旋回する。ここで、上述したような1対のアーム163の構成によって、ホルダ165が軸A2の回りに旋回する間、ホルダ165の取付面165sは軸Aに向いた状態に維持される。
【0033】
制御部167は、例えば雲台装置160に組み込まれるマイクロコントローラであり、上述のようにモータを制御することによって基台161の回動および1対のアーム163の枢動を制御する。制御部167は、例えば予め定められた手順に従って、または端末100からの指示に従ってモータを制御する。このようにして、制御部167は、基台161が軸Aの回りに回動する角度、および1対のアーム163が軸Aの回りに枢動する角度を設定する。端末100の角度情報取得部120は、例えばこのような制御部167による角度の設定値を示す情報を、角度情報として取得する。
【0034】
以上のような雲台装置160は、本来、ホルダ165に取り付けられたカメラのパン(軸Aの回りの回転)およびチルト(軸Aの回りのスイング)を自動化する装置として流通している。本実施形態では、かかる雲台装置160を利用してオブジェクトobjの角度の設定を自動化することによって、さまざまな角度を網羅した辞書データ210を効率的に生成することが意図されている。ただし、雲台装置160のホルダ165に直接オブジェクトobjを取り付けた場合、1対のアーム163を枢動するとホルダ165が軸Aの回りにスイングし、結果としてオブジェクトobjの位置がカメラ150の光軸(図4に軸Aとして示す)から大きく外れてしまう。そこで、本実施形態では、以下で説明するような治具170を介してオブジェクトobjを雲台装置160に取り付ける。
【0035】
治具170において、取付部材171は、雲台装置160のホルダ165に取り付け可能な部材である。例えば、取付部材171には、ホルダ165に設けられているカメラの固定のための構造に対応した取り付け構造が設けられる。具体的には、ホルダ165にカメラの固定のためのネジが設けられている場合、取付部材171にはネジ穴が設けられる。あるいは、取付部材171は、ホルダ165の構造にかかわらず利用可能な取り付け構造が設けられてもよい。具体的には、取付部材171には、ホルダ165を挟持するクリップ、またはホルダ165に巻回されるベルトなどが設けられてもよい。
【0036】
オブジェクトホルダ173は、オブジェクトobjを取り付け可能な部材である。例えば、オブジェクトホルダ173には、オブジェクトobjとの接触面積を可能な限り少なくしつつオブジェクトobjを固定することが可能な取り付け構造が設けられる。これは、取り付け構造とオブジェクトobjとの接触面積は、カメラ150がキャプチャするオブジェクトobjの画像におけるオクルージョン領域になりうるためである。具体的には、オブジェクトホルダ173には、オブジェクトobjを挟持するクリップ、オブジェクトobjを掴持するフック、オブジェクトobjが貼着される粘着面などが設けられてもよい。また、磁性体であるオブジェクトobjのために、オブジェクトホルダ173には磁石が設けられてもよい。
【0037】
連結部材172は、取付部材171とオブジェクトホルダ173とを連結する。また、連結部材172は、取付部材171が雲台装置160のホルダ165に取り付けられたときに、オブジェクトホルダ173に取り付けられたオブジェクトobjが軸Aと軸Aとの交点の近傍に位置するように、取付部材171とオブジェクトホルダ173との位置関係を規定する。例えば、連結部材172は、取付部材171がホルダ165に取り付けられたときに1対のアーム163に沿って延びるように取付部材171に連結される。このとき、連結部材172の1対のアーム163に沿った方向の長さは、ホルダ165と軸Aとの間の距離から、取付部材171およびオブジェクトホルダ173の厚さと、オブジェクトobjの厚さの半分とを除いたものにほぼ等しい。連結部材172は、アーム163に沿った方向の長さを調節可能な構造を有してもよい。これによって、オブジェクトobjのサイズに合わせて連結部材172の長さを調節し、オブジェクトobjの中心を軸A1と軸A2との交点に近づけることができる。
【0038】
以上のような治具170を介して雲台装置160に取り付けられたオブジェクトobjは、軸Aと軸Aとの交点の近傍に位置する。それゆえ、雲台装置160の基台161が軸Aの回りに回動したときも、1対のアーム163が軸Aの回りに枢動したときも、オブジェクトobjの位置はほぼ変化せず、カメラ150の光軸(図4に軸Aとして示す)から大きく外れることがない。従って、本実施形態では、雲台装置160の制御部167が基台161が軸Aの回りに回動する角度、および1対のアーム163が軸Aの回りに枢動する角度を設定したときに、これらの角度をオブジェクトobjの軸Aおよび軸Aの回りの回転量とみなすことができる。
【0039】
なお、上記のような雲台装置160および治具170を用いた場合、軸Aおよび軸Aに直交する軸A、すなわちカメラ150の光軸の回りにはオブジェクトobjが回転させられないが、軸Aの回りの回転については、カメラ150がキャプチャした画像を平面回転させることによって精度よく補完することが可能である。また、上記の説明では簡単のためにオブジェクトobjがカメラ150の光軸上にあるものとしたが、オブジェクトobjは必ずしもカメラ150の光軸上になくてもよい。
【0040】
背景板174は、連結部材172またはオブジェクトホルダ173に取り付けられ、オブジェクトobjの背景を提供する。例えば、背景板174には、スクリーンを選択的に取り付けるための取り付け構造が設けられてもよい。スクリーンは、例えば、互いに異なる材質で形成される複数のスクリーンを含みうる。材質は、例えば紙、布、またはフィルムを含みうる。また、スクリーンは、互いに異なる色、または互いに異なる反射特性を有する複数のスクリーンを含んでもよい。スクリーンを交換することによって、材質、色、または反射特性などが異なるオブジェクトobjの複数の背景を、交換可能に提供することができる。また、例えば、背景板174は、連結部材172またはオブジェクトホルダ173に着脱可能に取り付けられてもよい。この場合、複数の背景板174を選択的に取り付けることによって、材質、色、または反射特性などが異なるオブジェクトobjの複数の背景を、交換可能に提供することができる。具体的には、例えば、背景板174は、オブジェクトobjに向けられる面が互いに異なる材質で形成される複数の背景板174を含みうる。材質は、例えば紙、布、またはフィルムを含みうる。また、背景板174は、オブジェクトobjに向けられる面が互いに異なる色、または互いに異なる反射特性を有する複数の背景板174を含んでもよい。
【0041】
(辞書データの概念的な説明)
図5は、本発明の第1の実施形態において生成される辞書データについて概念的に説明するための図である。図5には、ある識別情報によって特定されるオブジェクトobj(図示された例ではコネクタ)に対応付けられる辞書データ210が例示されている。図示された例において、オブジェクトobjの角度は、3次元空間における直交座標系の3つの軸(X軸、Y軸、Z軸)の回りの回転量によって表されるベクトル量である。辞書データ210は、オブジェクトobjの角度について、X軸の回りの回転量(rot_X)について全周をN個に分割し、Y軸の回りの回転量(rot_Y)について全周をN個に分割し、Z軸の回りの回転量(rot_Z)について全周をN個に分割することによって定義されるN×N×N個の要素を少なくとも含む。それぞれの要素は、少なくとも1つの、オブジェクトobjの画像に対応する情報に対応付けられる。ここで、オブジェクトobjの画像に対応する情報は、例えば、オブジェクトobjが回転量(rot_X,rot_Y,rot_Z)で表される角度であるときにカメラ150がキャプチャした画像から抽出された特徴量でありうる。
【0042】
なお、上記の例において、それぞれの軸の回りの回転量(rot_X,rot_Y,rot_Z)の分割幅は、異なっていてもよい(つまり、N,N,Nの少なくともいずれかが他と異なっていてもよい)。また、回転量は、必ずしも均等に分割されなくてもよい。例えば、後述するオブジェクトobjの角度の推定において、信頼度の高い推定がされにくい角度があった場合、当該角度に対応する回転量の近傍では、回転量の分割幅が他の部分よりも小さく設定されてもよい。
【0043】
例えば、ロボット300のカメラ310が、角度が未知のオブジェクトobjの画像をキャプチャした場合、キャプチャされた画像から抽出された特徴量と、上記のような辞書データ210の要素に対応付けられた特徴量とをマッチングすることで、オブジェクトobjの角度を推定することができる。
【0044】
ここで、辞書データ210では、同じオブジェクトobjの角度情報と、複数の異なる画像とに基づいて生成される複数の要素を含んでもよい。この場合、辞書データ210の要素は、N×N×N個よりも多くなる。同じ角度情報に対応付けられる複数の画像の間では、例えばキャプチャされたときの環境条件が異なっていてもよい。環境条件は、例えば背景または光の配置などでありうる。複数の異なる環境条件で辞書データ210を生成することで、様々な環境条件でオブジェクトobjの角度を推定可能な辞書データ210を提供することができる。
【0045】
上記の場合において、端末100の画像取得部110は、オブジェクトobjの互いに異なる複数の画像を取得する。例えば、画像取得部110は、治具170の背景板174を用いてオブジェクトobjの背景を交換する前後で、雲台装置160の制御部167が同じ角度を設定したときのオブジェクトobjの画像をそれぞれ取得してもよい。この場合、辞書データ生成部130は、背景が異なる複数の画像、これらの複数の画像に共通するオブジェクトobjの識別情報、およびこれらの複数の画像に共通するオブジェクトobjの角度を示す角度情報に基づいて、辞書データ210の複数の要素を生成する。
【0046】
(ロボットの構成)
図6は、図1に示すシステムにおけるロボット300の概略的な構成について説明するための図である。図6を参照すると、ロボット300は、カメラ310と、マニピュレータ320と、制御部330と、センサ340と、モータ350とを含む。ロボット300は、制御部330の制御に従って、例えばマニピュレータ320を用いてオブジェクトobjを把持し、カメラ310を用いてオブジェクトobjの画像をキャプチャすることができる。本実施形態では、マニピュレータ320も、上述した雲台装置160と同様に、オブジェクトobjを保持する保持手段の例である。制御部330は、例えば後述する情報処理装置のハードウェア構成によって実現される。
【0047】
センサ340は、ロボット300で利用される、またはロボット300から他の装置に送信される、各種の測定値を取得するためのセンサを含む。具体的には、センサ340は、加速度センサ、角速度センサ、地磁気センサ、および/またはGNSS(Global Navigation Satellite System)受信機などを含んでもよい。また、センサ340は、深度センサ、またはLIDAR(Laser Imaging Detection and Ranging)のようなレーザーレンジスキャナを含んでもよい。
【0048】
モータ350は、制御部330の制御に従って、ロボット300の各部を動作させる。モータ350は、例えば、関節構造(図示せず)を動作させてロボット300の姿勢を変更したり、ロボット300を移動させたりするためのモータ(アクチュエータ)を含みうる。また、モータ350は車輪を回転させてロボット300を移動させるためのモータを含んでもよい。なお、モータ350を含むロボット300の各部の構成は、既に知られているロボットの設計手法に基づいて適切に構成することができる。ここで、ロボット300は、必ずしも姿勢を変更しなくてもよく、また移動しなくてもよい。同様に、ロボット300は必ずしも(マニピュレータ320以外の)関節構造を含まなくてもよく、また車輪を含まなくてもよい。
【0049】
(オブジェクトの角度を推定するための構成)
図7は、図1に示すシステムにおけるロボット300の機能構成を示すブロック図である。図7を参照すると、ロボット300は、カメラ310およびマニピュレータ320に加えて、画像取得部331と、辞書データ取得部332と、オブジェクト認識/角度推定部333と、結果出力部334と、辞書データ更新部335と、マニピュレータ制御部336と、角度情報取得/角度推定部337とを含む。カメラ310およびマニピュレータ320以外の各部は、例えば上述したロボット300の制御部330を実現する情報処理装置のプロセッサによって実現される。なお、制御部330が複数のプロセッサを含む場合、複数のプロセッサが協働して上記の各部の機能を実現してもよい。また、後述するように、制御部330のプロセッサが実現する機能の一部、または全部をサーバにおいて実現することも可能である。以下、各部の機能について説明する。なお、辞書データの更新に関する機能については、後にフローチャートを参照して詳述するため、ここでは簡潔な記載にとどめる。
【0050】
画像取得部331は、カメラ310がキャプチャしたオブジェクトobjの画像を取得する。ここで、本実施形態では、カメラ310も、上述したカメラ150と同様に、オブジェクトの画像をキャプチャする撮像装置の例である。カメラ150がキャプチャする画像と、カメラ310がキャプチャする画像とは、同じ種類のオブジェクトobjを含むものの、互いに異なる画像である。具体的には、カメラ310は、例えばイメージセンサを有するデジタルカメラであり、画像取得部331はカメラ310によって生成された画像データを受信する。例えば、ロボット300は、マニピュレータ320を用いてオブジェクトobjを把持している。この場合、画像取得部331が取得する画像には、マニピュレータ320に把持されたオブジェクトobjが含まれる。あるいは、画像取得部331には、マニピュレータ320に把持されず、テーブルまたは床などに置かれたオブジェクトobjが含まれてもよい。図示された例において、カメラ310はロボット300に内蔵され、バスを介して画像取得部331に画像データを送信するが、カメラ310が有線通信インターフェース、または無線通信インターフェースを介してロボット300に外部接続されてもよい。
【0051】
辞書データ取得部332は、ネットワークを介してロボット300に接続されたデータベース200から辞書データ210を取得する。上述の通り、辞書データ210は、オブジェクトobjの画像および角度情報(ならびにオブジェクトobjの識別情報)に基づいて生成される。ロボット300は、この辞書データ210を、マニピュレータ320によって把持されているオブジェクトobjの角度を推定するために利用する。なお、辞書データ取得部332は、必ずしも辞書データ210の全体を取得しなくてもよい。例えば、辞書データ210が複数の種類のオブジェクトについて生成され、かつ画像取得部331が取得した画像に含まれるオブジェクトobjが既に識別されている場合、辞書データ取得部332は、辞書データ210のうちオブジェクトobjの識別情報に対応付けられた要素を選択的に取得する。
【0052】
オブジェクト認識/角度推定部333は、画像取得部331が取得したオブジェクトobjの画像と、辞書データ取得部332が取得した辞書データ210とに基づいて、画像におけるオブジェクトobjの角度を推定する。辞書データ210が複数の種類のオブジェクトについて生成され、かつ画像取得部331が取得した画像に含まれるオブジェクトobjが識別されていない場合、オブジェクト認識/角度推定部333は画像ベースのオブジェクト認識によってオブジェクトobjの識別情報を特定する。画像ベースのオブジェクト認識については、既に知られている技術を応用可能であるため、詳細な説明は省略する。例えば辞書データ210が単一の種類のオブジェクトについて生成されている場合、または画像取得部331が取得した画像に含まれるオブジェクトobjが既に識別されている場合、オブジェクト認識/角度推定部333はオブジェクト認識を実行しない。
【0053】
一方、オブジェクト認識/角度推定部333によるオブジェクトobjの角度の推定は、例えば画像取得部331が取得した画像と辞書データ210の要素とのマッチングによって実行される。この場合、マッチングのスコアが最も高かった辞書データ210の要素に対応付けられた角度が、画像におけるオブジェクトobjの角度として推定される。後述するように、オブジェクトobjの角度を推定するための辞書データ210は多数の要素を含みうる。そこで、オブジェクト認識/角度推定部333は、画像取得部331が取得した画像に基づいて辞書データ210を枝狩りし、枝狩りされた辞書データ210と画像とのマッチングを実行してもよい。ここで、本実施形態において、枝狩り(pruning)は、オブジェクトobjの角度を推定するためのマッチングよりも処理負荷の軽い処理によって、マッチングの対象にしない辞書データ210を決定する処理である。
【0054】
結果出力部334は、オブジェクト認識/角度推定部333による認識の結果を出力する。上述のように、ロボット300はオブジェクトobjの角度の推定結果をロボット300自身の動作、例えばマニピュレータ320の制御のために利用してもよいが、必要に応じて、推定結果を何らかの形で出力してもよい。より具体的には、例えば、推定結果は、ロボット300のディスプレイにおいて画像として表示されてもよく、スピーカから音声として出力されてもよい。また、推定結果は、ロボット300が有する通信装置からネットワークを介してさらに別の装置に送信されてもよい。結果出力部334は、上記のような推定結果の出力を制御する。なお、推定結果を出力する必要がない場合には、結果出力部334は設けられない。
【0055】
辞書データ更新部335は、オブジェクト認識/角度推定部333によるオブジェクトobjの角度の推定の結果、および後述する角度情報取得/角度推定部337による角度の再推定の結果に応じて、辞書データ210を更新する。より具体的には、辞書データ更新部335は、オブジェクト認識/角度推定部333によって推定された角度の信頼度が閾値を超えない場合に、角度情報取得/角度推定部337による角度の再推定の結果に基づいて辞書データ210を更新する。なお、以下の説明では、オブジェクト認識/角度推定部333による角度の推定機能を「第1の角度推定機能」、角度情報取得/角度推定部337による角度の再推定機能を「第2の角度推定機能」ともいう。これらの角度推定機能は、必ずしも互いに独立して実施されるものではない。例えば、後述するように、角度情報取得/角度推定部337は、角度の再推定にあたって、オブジェクト認識/角度推定部333による角度の推定結果を利用する。つまり、「第1の角度推定機能」が単独で実行される場合もあり、「第2の角度推定機能」が「第1の角度推定機能」を呼び出す場合もある。
【0056】
マニピュレータ制御部336は、オブジェクトobjを把持しているロボット300のマニピュレータ320を制御する。辞書データ更新部335が辞書データ210の更新を実行するとき、マニピュレータ制御部336は、マニピュレータ320を制御することによってオブジェクトobjを回転させる。なお、ここでいう回転は、オブジェクトobjの角度の変更を意味する。オブジェクトobjの回転は、オブジェクトobjの角度の再推定にあたって実行される、オブジェクトobjに関する物理的な操作の例である。
【0057】
角度情報取得/角度推定部337は、マニピュレータ制御部336からオブジェクトobjの角度を示す角度情報を取得する。ここで、本実施形態において、ロボット300の角度情報取得/角度推定部337が取得する角度情報は、ロボット300、またはマニピュレータ320の座標系を基準にしたオブジェクトobjの角度を示す。従って、本実施形態では、マニピュレータ制御部336から取得される角度情報は、辞書データ210の角度情報と必ずしも直接的に対応付けられない。そこで、本実施形態において、角度情報取得/角度推定部337は、マニピュレータ制御部336がマニピュレータ320を制御してオブジェクトobjを回転させる前後の角度情報からオブジェクトobjの回転量Δθを算出し、この回転量Δθを後述する角度の再推定に利用する。
【0058】
さらに、角度情報取得/角度推定部337は、オブジェクト認識/角度推定部333がオブジェクトobjの回転後の画像(第2の画像)および辞書データ210に基づいて推定したオブジェクトobjの角度θと、回転量Δθとに基づいて、オブジェクトobjの回転前の画像(第1の画像)におけるオブジェクトobjの角度θを再推定する(簡単に表すと、θ=θ-Δθ)。ここで、回転量Δθは、オブジェクトobjに関する物理的な操作の量の例である。なお、角度θ、角度θ、および回転量Δθは、いずれも、例えば座標系のそれぞれの軸の回りの回転(図5の例におけるrot_X,rot_Y,rot_Z)の要素を含むベクトル量でありうる。
【0059】
辞書データ更新部335は、上記のようにオブジェクト認識/角度推定部333がオブジェクトobjの回転後の画像(第2の画像)および辞書データ210に基づいて推定したオブジェクトobjの角度θの信頼度が閾値を超える場合、角度情報取得/角度推定部337がこれに基づいて再推定した角度θを示す角度情報と、オブジェクトobjの回転前の画像(第1の画像)とに基づいて辞書データ210を更新する。
【0060】
一方、オブジェクト認識/角度推定部333がオブジェクトobjの回転後の画像(第2の画像)および辞書データ210に基づいて推定したオブジェクトobjの角度θの信頼度が閾値を超えない場合、マニピュレータ制御部336がマニピュレータ320を制御することによってオブジェクトobjをさらに回転量Δθ’だけ回転させ、オブジェクト認識/角度推定部333がオブジェクトobjの回転後の画像(第3の画像)および辞書データ210に基づいてオブジェクトobjの角度θを推定する。角度θの信頼度が閾値を超える場合、角度情報取得/角度推定部337は角度θと、回転の合計量(Δθ+Δθ’)とに基づいて角度θを再推定し、この結果に基づいて辞書データ更新部335が辞書データ210を更新する。
【0061】
このようにして、辞書データ更新部335は、十分な信頼度で角度θが再推定されたところで、角度θと、オブジェクトobjの回転前の画像(第1の画像)とに基づいて辞書データ210を更新する。具体的には、辞書データ更新部335は、辞書データ210の要素を追加または置換する。これによって、その後、カメラ310が同様の環境条件で角度θのオブジェクトobjの画像をキャプチャしたときに、再推定によらずとも、角度θを高い信頼度で推定できる可能性が高くなる。
【0062】
(処理フローの例)
以下、本実施形態に係るシステム10における処理フローの例について、図8図12を参照しながら説明する。
【0063】
図8は、本発明の第1の実施形態における辞書データ生成処理の例を示すフローチャートである。図8を参照すると、登録処理では、まず、端末100の画像取得部110が画像を取得するとともに(ステップS101)、角度情報取得部120が角度情報を取得する(ステップS103)。ステップS101,S103は、どちらが先に実行されてもよく、また並行して実行されてもよい。例えば、カメラ150がキャプチャした画像を画像取得部110がリアルタイムで取得したことをトリガとして、角度情報取得部120が雲台装置160から角度情報を取得してもよい。また、角度情報取得部120が雲台装置160に角度情報を送信したことをトリガとして、カメラ150がキャプチャした画像を画像取得部110がリアルタイムで取得してもよい。あるいは、画像取得部110はカメラ150がキャプチャした画像を時系列で連続的に取得し、角度情報取得部120は雲台装置160に設定されている角度情報を時系列で連続的に取得してもよい。
【0064】
次に、端末100の辞書データ生成部130が、ステップS101で画像とステップS103で取得された角度情報とを対応付ける。例えば、画像と角度情報とがいずれもリアルタイムで取得される場合、辞書データ生成部130は、実質的に同時に取得された画像と角度情報とを対応付ける。一方、画像と角度情報とが時間差をもって、または事後的に取得される場合、辞書データ生成部130は、共通するキーを有する画像と角度情報とを対応付ける。この場合のキーは、例えばタイムスタンプであってもよいし、タイムスタンプとは別に割り振られたシーケンス番号などであってもよい。
【0065】
次に、辞書データ生成部130は、ステップS105で互いに対応付けられた画像および角度情報に基づいて、辞書データ210を生成する(ステップS107)。ここで、既に説明したように、辞書データ生成部130は、既に知られている画像ベースのオブジェクト認識の技術を応用して辞書データ210を生成してもよい。また、例えば、辞書データ生成部130は、実質的に同一の画像と角度情報との組が連続して取得されたような場合には、冗長な情報であると判断して辞書データ210の生成を省略してもよい。
【0066】
図9は、本発明の第1の実施形態における認識処理の例を示すフローチャートである。図9を参照すると、認識処理では、まず、ロボット300の画像取得部331が画像を取得する(ステップS301)。上述のように、画像取得部331は、カメラ310がキャプチャした画像を取得し、この画像には例えばマニピュレータ320によって把持されたオブジェクトobjが含まれる。次に、辞書データ取得部332が、データベース200から辞書データ210を取得する(ステップS303)。
【0067】
次に、オブジェクト認識/角度推定部333が、ステップS301で取得された画像と、ステップS302で取得された辞書データ210とに基づいて、オブジェクトobjを認識する(ステップS305)。なお、画像ベースのオブジェクト認識については、既に知られている技術を応用可能であるため、詳細な説明は省略する。また、上述のように、例えば辞書データ210が単一の種類のオブジェクトについて生成されている場合、または画像に含まれるオブジェクトobjが既に識別されている場合、ステップS305のオブジェクト認識は省略される。
【0068】
次に、オブジェクト認識/角度推定部333は、辞書データ210の枝狩りを実行する(ステップS307)。例えば、図5に示したような辞書データ210を、各軸の回りの回転量(rot_X,rot_Y,rot_Z)について全周を52個に分割することによって生成した場合(つまり、N=N=N=52)、少なくとも52=140,608の要素を有する辞書データ210が生成されることになる。上述のように、同じ角度に複数の異なる画像を対応付けることによって辞書データ210を生成した場合、要素の数はさらに多くなる。このような辞書データ210の全要素とのマッチングを実行するための処理負荷は膨大であるため、辞書データ210の枝狩りによる利益が大きい。
【0069】
図10は、本発明の第1の実施形態における枝狩り処理の例を示すフローチャートである。図11は、図10に示す枝狩り処理について概念的に説明するための図である。図10を参照すると、オブジェクト認識/角度推定部333は、まず、オブジェクトobjに対応する枝狩り手順を決定する(ステップS331)。オブジェクトobjに対応する枝狩り手順は、例えば予め定められて、辞書データ210とともにデータベース200に格納されている。上記の図9に示したステップS305が実行される場合、オブジェクト認識/角度推定部333は、ステップS305でのオブジェクトの認識結果に従って枝狩り手順を決定する。
【0070】
続くステップS333,S335は、図11に示された例において、オブジェクトobjに対応する枝狩り手順に従って実行される処理の例である。オブジェクトの種類によってここで実行される処理は異なりうる。上記の例において、オブジェクト認識/角度推定部333は、画像をマスクし(ステップS333)、さらに画像を減色する(ステップS335)。次に、オブジェクト認識/角度推定部333は、枝狩りを実行する(ステップS337)。図示された例では、例えば、上記のようにマスクおよび減色された画像から複数の特徴部分が抽出され、辞書データ210のうち、同様に抽出された複数の特徴部分の位置関係が画像と共通しない要素が、マッチングの対象から除外される。
【0071】
図11に示された例において、オブジェクトobjはコネクタである。図示された例では、ケーブル(cable1~cable3)の色に着目した枝狩り手順が設定されている。図10に示されたステップS333では、画像のケーブル以外の部分がマスクされる(mask)。これによって、マスクされる部分に存在する端子カバーの陰影の影響が除去される。さらに、図では表現されないが、ステップS335では、両端のケーブル(cable1およびcable3)の色の違いが表現されるような条件で、画像が減色される。これによって、画像および辞書データ210の各要素において、両端のケーブル(cable1およびcable3)を2つの特徴部分として抽出することが容易になる。
【0072】
さらに、図10に示されたステップS337では、上述のようにマスクおよび減色された画像に基づいて、辞書データ210の枝狩りが実行される。具体的には、例えば、画像において、cable1はcable3からみて右上に位置する。これに対して、辞書データ210の要素群210b(コネクタが視点軸の回りに回転しているもの)ではcable1がcable3からみて左上に位置する。また、要素群210c(コネクタが裏返しになっているもの)では、cable1がcable3からみて左下に位置する。従って、ステップS337では、要素群210b,210cがマッチングの対象から除外される。この結果、マッチングは、要素群210a(画像と同じく、cable1からみてcable1が右上に位置する)だけを対象にして実行される。
【0073】
図9に戻って、ステップS307における辞書データ210の枝狩りの後、オブジェクト認識/角度推定部333は、画像と辞書データ210とのマッチングを実行する(ステップS309)。マッチングは、例えばテンプレートマッチングでありうる。なお、画像のマッチングについては、既に知られている技術を応用可能であるため、詳細な説明は省略する。なお、既に知られている画像ベースのオブジェクト認識では、マッチングの結果としてオブジェクト単位のスコアが算出されるが、ステップS307ではオブジェクトの角度単位のスコアが算出される。
【0074】
次に、オブジェクト認識/角度推定部333は、ステップS309におけるマッチングの結果に基づいて、オブジェクトobjの角度を推定する(ステップS311)。ステップS311における推定結果は、例えばステップS309におけるマッチングにおいて最も高いスコアが算出された辞書データ210の要素に対応付けられた角度情報によって示される角度でありうる。
【0075】
次に、オブジェクト認識/角度推定部333は、ステップS309におけるマッチングで算出されたスコアが閾値を超える否かを判定する(ステップS313)。ここで閾値と比較されるスコアは、例えば最も高いマッチングスコアである。あるいは、マッチングスコアの上位何%か(例えば10%)が閾値を超えるか否かが判定されてもよい。ステップS313の判定においてマッチングスコアが閾値を超えない場合(NO)、辞書データ更新部335が辞書データ210を更新する(S315)。一方、ステップS313の判定においてマッチングスコアが閾値を超える場合(YES)、辞書データ210を更新する処理は実行されなくてもよい。ステップS311における推定の結果は、必要に応じて結果出力部334によって出力される。
【0076】
図12は、本発明の第1の実施形態における辞書データ更新処理の例を示すフローチャートである。図12を参照すると、更新処理では、まず、ロボット300の角度情報取得/角度推定部337が、マニピュレータ制御部336から提供されるオブジェクトobjの角度情報を記憶する(ステップS351)。ここで、ステップS351で記憶される角度は、例えばマニピュレータ320を基準にした座標系におけるオブジェクトobjの角度を示す。次に、マニピュレータ制御部336が、マニピュレータ320を制御することによってオブジェクトobjを回転させる(ステップS353)。
【0077】
オブジェクトobjが回転させられた後、オブジェクトobjの角度が推定される(ステップS355)。ステップS355の処理は、例えば図9に示すステップS301~S311の処理に対応する。具体的には、画像取得部331がオブジェクトobjの回転後の画像(第2の画像)を取得し、オブジェクト認識/角度推定部333が回転後の画像(第2の画像)におけるオブジェクトobjの角度を推定する。なお、辞書データ210については先に実行されたステップS303で取得されたものが利用されてもよく、オブジェクトobjは先に実行されたステップS305で既に認識されているものとして扱われてもよい。
【0078】
次に、辞書データ更新部335は、ステップS355の推定におけるマッチングスコアが閾値を超える否かを判定する(ステップS357)。この判定は、例えば図9に示すステップS309と同様に実行されうる。ステップS357の判定においてマッチングスコアが閾値を超えない場合(NO)、ステップS353およびステップS355の処理が再実行される。つまり、マニピュレータ制御部336がマニピュレータ320を制御することによってオブジェクトobjをさらに回転させ(ステップS353)、オブジェクト認識/角度推定部333が回転後の画像(第3の画像)におけるオブジェクトobjの角度を推定する(ステップS355)。
【0079】
一方、ステップS357の判定においてマッチングスコアが閾値を超える場合(YES)、角度情報取得/角度推定部337は、ステップS355において推定された角度θ、およびオブジェクトobjの回転量Δθから、初期角度θを再推定する(ステップS359)。ここで、初期角度θは、オブジェクトobjの回転前の角度であり、オブジェクト認識/角度推定部333が十分な信頼度で推定することができなかった角度である。一方、角度θは、オブジェクト認識/角度推定部333がオブジェクトobjの回転後の画像(第2の画像)および辞書データ210に基づいて推定したオブジェクトobjの角度であり、ステップS357の判定によって十分な信頼度で推定されていることが判明している。また、回転量Δθは、ステップS351で記憶されたオブジェクトobjの角度情報と、ステップS357の時点でマニピュレータ制御部336から提供されるオブジェクトobjの角度情報とに基づいて算出される。
【0080】
なお、ステップS357の判定の結果、ステップS353およびステップS355の処理がN回繰り返された場合、角度情報取得/角度推定部337は、最後に実行されたステップS355において推定された角度θN+1、およびN回実行されたステップS353におけるオブジェクトobjの回転の合計量ΔθTTLから、初期角度θを再推定する。回転の合計量ΔθTTLは、ステップS351で記憶されたオブジェクトobjの角度情報と、ステップS357の時点でマニピュレータ制御部336から提供されるオブジェクトobjの角度情報とに基づいて算出される。
【0081】
次に、辞書データ更新部335は、ステップS359で再推定された初期角度θに対応する角度情報と、図9に示すステップS301で取得されたオブジェクトobjの回転前の画像(第1の画像)とを対応付ける(ステップS361)。さらに、辞書データ更新部335は、ステップS361で互いに対応付けられた画像および角度情報に基づいて、辞書データ210を更新する(ステップS363)。ここで、辞書データ210の更新は、辞書データ210の要素の追加、および/または辞書データ210の要素の置き換えを含む。
【0082】
上記のステップS363において、辞書データ更新部335は、画像および角度情報に基づいて辞書データ210の要素を追加する。これによって、その後、ロボット300のカメラ310が同様の環境条件で角度θのオブジェクトobjの画像をキャプチャしたときに、角度θを高い信頼度で推定できる可能性が高くなる。なお、例えば、辞書データ210がロボット300専用であり、かつカメラ310がオブジェクトobjの画像をキャプチャするときの環境条件が変化しないことが予想される場合、辞書データ更新部335は、画像および角度情報に基づいて辞書データ210の要素を置き換えてもよい。
【0083】
以上で説明したように辞書データ210が更新されることによって、最初に生成された辞書データ210では信頼度の高い推定が困難なオブジェクトobjの角度または環境条件について、追加の辞書データ210を蓄積することができる。このように、辞書データ210を用いてオブジェクトobjの角度を推定するロボット300が自律的に辞書データ210を強化することによって、推定のロバスト性を向上させることができる。
【0084】
(更新前の検証処理の例)
ここで、上記で図12を参照して説明した辞書データ更新処理は、追加の処理として、辞書データ210の更新前の検証処理を含んでもよい。第1の例として、図12に示したステップS351の前に、辞書データ更新処理を実行するか否かを検証する処理が実行されてもよい(ステップS371「検証処理1」として図示されている)。第1の例に係る検証処理において、画像取得部331は、ステップS353でオブジェクトobjが回転させられるよりも前に、オブジェクトobjの画像を再取得する。オブジェクト認識/角度推定部333は、再取得された画像におけるオブジェクトobjの角度を推定する。この推定におけるマッチングスコアが(図9に示したステップS311での推定とは異なり)閾値を超えている場合、辞書データ更新処理は中止され、少なくともステップS363の辞書データの更新は実行されない。
【0085】
上記の第1の例は、例えば、上記の図9に示したステップS301で画像取得部331が取得した画像において、カメラ310のフォーカスの遅れ、または(例えば雷もしくはフラッシュ光などによる)瞬間的な照明条件の変化のような偶発的な要因のために画像に予期しない変化がもたらされ、それによって推定の信頼度が低下することがありうる。上記の第1の例のような検証の処理は、偶発的な要因のために辞書データ210が再現性の低い情報に基づいて更新されてしまうのを防ぐために有効である。
【0086】
また、第2の例として、図12に示したステップS361の後に、用意された角度情報および画像に基づいて辞書データの更新を実行するか否かを検証する処理が実行されてもよい(ステップS373「検証処理2」として図示されている)。第2の例に係る検証処理において、辞書データ更新部335は、ステップS361で対応付けられた角度情報と画像とに基づく仮の辞書データを生成する。次に、マニピュレータ制御部336がマニピュレータ320を制御し、ステップS353とは逆にオブジェクトobjを回転させる。これによって、オブジェクトobjは元の角度θに戻される。さらに、画像取得部331が、元の角度θに戻されたオブジェクトobjの画像を新たに取得し、オブジェクト認識/角度推定部333が、画像取得部331が新たに取得した画像におけるオブジェクトobjの角度を、辞書データ更新部335が生成した仮の辞書データに基づいて推定する。ここで元の角度θを推定することができ、またマッチングスコアが閾値を超えている場合、辞書データ更新部335はステップS363の辞書データ210の更新を実行する。そうではない場合、ステップS363の辞書データ210の更新は実行されない。
【0087】
上記の第2の例は、例えば、角度推定の信頼度向上に寄与しない辞書データ210の更新を防ぐために有効である。カメラ310がオブジェクトobjの画像をキャプチャするときの環境条件によっては、画像取得部331が取得した画像に基づいて辞書データ210を更新しても、その後に取得される同様の画像における角度の推定の信頼度が必ずしも向上しないことがありうる。上記の第2の例のような検証の処理は、角度推定の信頼度向上に必ずしも寄与しない不要な要素によって辞書データ210の容量が増大するのを防ぐために有効である。
【0088】
(他の変形例)
なお、上記の例では、角度情報取得/角度推定部337はオブジェクトobjが回転させられた後に角度を再推定したが、他の例において、角度情報取得/角度推定部337はロボット300がモータ350によってオブジェクトobjとともに移動させられた後で角度を再推定してもよい。ロボット300が移動したことによって、カメラ310が画像をキャプチャするときの環境条件が変化し、オブジェクトobjを回転させなくても信頼度の高い角度の推定ができる可能性がある。なお、ロボット300を移動させるための構成については、後述する第3の実施形態でより詳しく説明されている。
【0089】
また、上記のようなロボット300の移動を、オブジェクトobjの回転と組み合わせてもよい。例えば、角度情報取得/角度推定部337は、オブジェクトobjを回転させた後の角度の再推定でも十分な信頼度が得られない場合に、ロボット300をオブジェクトobjとともに移動させた後で角度を再推定してもよい。例えば、カメラ310がオブジェクトobjの画像をキャプチャするときの環境条件が、辞書データ210の生成時のカメラ150の環境条件とは大きく異なるような場合、上記のような再推定の処理が有効でありうる。
【0090】
本実施形態に係るシステム10の機能は、図1,2,7に示した例では端末100、データベース200、およびロボット300に分散して実現される。他の例では、システム10の機能の大部分が、サーバにおいて実現されてもよい。つまり、上記の例において端末100およびロボット300のプロセッサによって実現されるものとして説明された機能は、データベース200を含むサーバのプロセッサによって実現されてもよい。この場合、端末100が、カメラ150がキャプチャしたオブジェクトobjの画像と、雲台装置160から取得したオブジェクトobjの角度情報とをサーバに送信し、サーバがこれらを関連付けて辞書データ210を生成する。一方、ロボット300は、カメラ310がキャプチャしたオブジェクトobjの画像をサーバに送信し、サーバがこの画像に基づいてオブジェクトobjの角度を推定する。ロボット300は、サーバから角度の推定結果を受信する。サーバは、推定された角度の信頼度が閾値を超えない場合に、角度の再推定のためのオブジェクトobjの回転と、回転後のオブジェクトobjの画像の取得とを、ロボット300に依頼してもよい。なお、これらの機能を実現するサーバは1つでなくてもよく、ネットワーク上に分散した複数のサーバによって上記の機能が実現されてもよい。また、上記の機能を実現するサーバは、データベース200を含むストレージとは別の装置であってもよい。
【0091】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。なお、上述の第1の実施形態と同様に構成される部分については、共通した符号を付することによって重複した説明を省略する場合がある。
【0092】
図13は、本発明の第2の実施形態に係るロボット300aの機能構成を示すブロック図である。図13を参照すると、本実施形態では、辞書データ210の生成、および辞書データ210を用いたオブジェクトobjの角度の推定に関する機能の全体が、ロボット300aにおいて実現される。具体的には、ロボット300aの制御部330のプロセッサは、画像取得部110,331と、角度情報取得/角度推定部120,337と、辞書データ生成/更新部130,335と、辞書データ取得部332と、オブジェクト認識/角度推定部333と、結果出力部334と、マニピュレータ制御部336とを実現する。なお、制御部330が複数のプロセッサを含む場合、複数のプロセッサが協働して上記の各部の機能を実現してもよい。また、後述するように、制御部330のプロセッサが実現する機能の一部、または全部は、サーバにおいて実現することも可能である。また、データベース200は、ロボット300aの制御部330のストレージに格納される。以下、各部についてさらに説明する。
【0093】
画像取得部110,331は、上記で図2を参照して説明した画像取得部110と、図7を参照して説明した画像取得部331との両方の機能を有する。つまり、画像取得部110,331は、カメラ310がキャプチャしたオブジェクトobjの画像を、辞書データ210を生成するときには辞書データ生成/更新部130,335に、辞書データ210を用いてオブジェクトobjの角度を推定するときにはオブジェクト認識/角度推定部333に、それぞれ提供する。
【0094】
角度情報取得/角度推定部120,337は、上記で図2を参照して説明した角度情報取得部120と、図7を参照して説明した角度情報取得/角度推定部337との両方の機能を有する。つまり、角度情報取得/角度推定部120,337は、辞書データ210を生成するときには、マニピュレータ制御部336から取得した角度情報を辞書データ生成/更新部130,335に提供する。また、角度情報取得/角度推定部120,337は、辞書データ210を更新するときには、マニピュレータ制御部336から取得した角度情報に基づいてオブジェクトobjの回転量Δθを算出し、さらに回転量Δθとオブジェクト認識/角度推定部333が推定した角度θとに基づいて初期角度θを推定する。
【0095】
なお、本実施形態において、ロボット300の角度情報取得/角度推定部337が取得する角度情報は、マニピュレータ320の座標系を基準にしたオブジェクトobjの角度を示しうる。この場合、角度情報取得/角度推定部337が取得する角度情報によって示されるオブジェクトobjの角度は、マニピュレータ制御部336が設定するマニピュレータ320の回転量だけではなく、アームなど、マニピュレータ320に連結されるロボット300の他の構成要素の動作量によっても変化しうる。また、マニピュレータ320がオブジェクトobjのどの面を把持するかも、その時々によって異なりうる。従って、たとえ辞書データ210を生成したときと同じマニピュレータ320がオブジェクトobjを把持しているとしても、辞書データ210を用いて画像におけるオブジェクトobjの角度を推定することは有益でありうる。
【0096】
辞書データ生成/更新部130,335は、上記で図2を参照して説明した辞書データ生成部130と、図7を参照して説明した辞書データ更新部335との両方の機能を有する。つまり、辞書データ生成/更新部130,335は、辞書データ210を生成するときには画像取得部110,331が取得した画像と角度情報取得/角度推定部120,337が取得した角度情報とに基づいて辞書データ210を生成する。また、辞書データ生成/更新部130,335は、辞書データ210を用いてオブジェクトobjの角度を推定するときには、オブジェクト認識/角度推定部333によるオブジェクトobjの角度の推定の結果、および角度情報取得/角度推定部120,337による角度の再推定の結果に応じて辞書データ210を更新する。
【0097】
上記の第2の実施形態によって示されるように、第1の実施形態に係るシステム10の機能は、単一の装置、例えばロボット300aにおいて実現することができる。この場合、システム10が、単一の装置によって実現されるともいえる。同様に、システム10の構成は、さまざまな装置構成で実現できる。例えば、システム10は複数のロボット300を含み、それぞれのロボット300が辞書データ210の生成と、辞書データ210を用いたオブジェクトの角度の推定とを実行してもよい。この場合、データベース200に格納された辞書データ210は、複数のロボット300によって共有される。
【0098】
また、例えば、システム10の機能は、その大部分がサーバにおいて実現されてもよい。この場合、データベース200を含むサーバが、上記の第2の実施形態においてロボット300aの制御部330によって実現されたような機能を実現する。この場合、端末100が、カメラ150がキャプチャしたオブジェクトobjの画像と、雲台装置160から取得したオブジェクトobjの角度情報とをサーバに送信し、サーバがこれらを関連付けて辞書データ210を生成する。一方、ロボット300は、カメラ310がキャプチャしたオブジェクトobjの画像をサーバに送信し、サーバがこの画像に基づいてオブジェクトobjの角度を推定する。ロボット300は、サーバから角度の推定結果を受信する。サーバは、推定された角度の信頼度が閾値を超えない場合に、角度の再推定のためのオブジェクトobjの回転と、回転後のオブジェクトobjの画像の取得とを、ロボット300に依頼してもよい。
【0099】
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。なお、上述した第2の実施形態と同様に構成される部分については、共通した符号を付することによって重複した説明を省略する。
【0100】
図14は、本発明の第3の実施形態について概略的に説明するための図である。図14を参照すると、本実施形態では、ロボット300bが、マニピュレータを用いてオブジェクトを把持する代わりに、オブジェクトobjに対して相対的に移動する。図示された例において、ロボット300bの移動は、オブジェクトを中心にした旋回移動(revolution)を含む。このとき、カメラ310によってキャプチャされる画像では、オブジェクトobjが軸Aの回りに回転する。また、ロボット300bの移動は、カメラ310のオブジェクトobjに対する傾動(tilt)を含む。このとき、カメラ310によってキャプチャされる画像では、オブジェクトobjが軸Aの回りに回転する。
【0101】
図15は、本発明の第3の実施形態に係るロボット300bの機能構成を示すブロック図である。本実施形態に係るロボット300bは、図13に示したロボット300aと比較して、マニピュレータ320を制御するマニピュレータ制御部336に代えて、モータ350を制御するモータ制御部339が含まれる点で異なる。
【0102】
モータ制御部339は、ロボット300のモータ350を制御する。上記で図6を参照して説明したように、モータ350は、ロボット300の関節構造を動作させたり、ロボット300bの車輪を回転させたりすることによって、ロボット300bを移動させたり、ロボット300bの姿勢を変更したりするためのモータを含む。モータ制御部339は、上記で図14を参照して説明したように、ロボット300bのオブジェクトobjを中心にした旋回移動、および/またはロボット300bのカメラ310のオブジェクトobjに対する傾動が実行されるように、モータ350を制御する。
【0103】
角度情報取得/角度推定部120,337bは、オブジェクトobjの角度を示す角度情報を取得する。ここで、角度情報は、例えば、ロボット300およびカメラ310の移動中に画像取得部331が取得した時系列の複数の画像を用いて画像ベースのSLAM(Simultaneous Localization and Mapping)を実行することによって取得される。なお、SLAMは、深度センサまたはレーザーレンジスキャナなど、ロボット300aが有する他のセンサ340の測定結果を利用して実行されてもよい。この場合、角度情報取得/角度推定部120,337bは、SLAMによってカメラ310の移動量を特定した上で、別途特定されるカメラ310とオブジェクトobjとの位置関係に基づいて、オブジェクトobjの角度情報を取得する。あるいは、角度情報取得/角度推定部120,337bは、モータ制御部339によるモータ350の制御値に基づいて、カメラ310の移動量を特定してもよい。
【0104】
本実施形態は、上記のようにして取得された角度情報を用いて、辞書データ210を生成することができる。また、オブジェクト認識/角度推定部333が辞書データ210に基づいて十分な信頼度で角度を推定することができなかった場合に、モータ制御部339がモータ350を制御することによって画像内でオブジェクトobjを回転させ、角度の再推定および辞書データ210の更新を実行することができる。本実施形態において、カメラ310のオブジェクトobjに対する相対的な移動は、オブジェクトobjの角度の再推定にあたって実行される、オブジェクトobjに関する物理的な操作の例である。
【0105】
以上のような本発明の第3の実施形態の構成によれば、オブジェクトobjが大きい場合や、小さくても動かすことができないような場合にも、オブジェクトobjの角度を推定するための辞書データ210を生成することができる。ここで、ロボット300bは、図7を参照して説明したようなマニピュレータ320およびマニピュレータ制御部336をも有し、オブジェクトobjが把持可能である場合には上記の第1および第2の実施形態と同様に、マニピュレータ320を用いてオブジェクトobjを回転させてもよい。
【0106】
なお、上記で説明された第3の実施形態の例では、第2の実施形態と同様に、辞書データ210の生成、および辞書データ210を用いたオブジェクトobjの角度の推定に関する機能の全体がロボット300bにおいて実現されていたが、他の例も可能である。例えば、第1の実施形態に係るシステム10において、ロボット300がマニピュレータ制御部336に代えて、またはマニピュレータ制御部336とともに、モータ制御部339を含んでもよい。
【0107】
例えば、辞書データ210を生成するときに用いられる雲台装置160(またはロボット300)と、辞書データ210を用いてオブジェクトobjの角度を推定するロボット300とのサイズが異なる場合、辞書データ210を生成するときには雲台装置160またはマニピュレータ320を用いてオブジェクトobjを回転させることが可能である一方で、辞書データ210を更新するときにはオブジェクトobjを回転させることが困難である場合、またはその逆の場合が生じうる。
【0108】
また、例えば、上記のようにロボット300がマニピュレータ制御部336とともにモータ制御部339を含む場合、モータ制御部339は、カメラ310がオブジェクトobjとともに移動するようにモータ350を制御してもよい。この場合、マニピュレータ制御部336は、画像におけるオブジェクトobjの角度が変化しないようにマニピュレータ320を制御する。具体的には、マニピュレータ制御部336は、モータ制御部339がモータ350を制御してロボット300が移動している間、マニピュレータ320とカメラ310との位置関係およびマニピュレータ320がオブジェクトobjを把持する角度を保持する。
【0109】
このように、カメラ310をオブジェクトobjとともに移動させることによって、例えば、画像におけるオブジェクトobjの角度を変えずに、カメラ310が画像をキャプチャするときの環境条件を変化させることができる。これによって、例えば、ある環境条件では辞書データ210に基づくオブジェクトobjの角度の信頼度の高い推定が困難であった場合に、環境条件を変化させることによって、信頼度の高い推定が可能になる可能性がある。また、辞書データ210を生成するときに、異なる環境条件で取得された複数の画像を共通の角度情報に対応付けた複数の要素を辞書データ210に含めることによって、角度の推定のロバスト性を向上させることができる。
【0110】
上記の例において、辞書データ210の更新処理では、まず、モータ制御部339が、モータ350を制御することによってカメラ310をオブジェクトobjとともに移動させる。カメラ310およびオブジェクトobjが移動させられた後、画像取得部331がオブジェクトobjの移動後の画像(第2の画像)を取得し、オブジェクト認識/角度推定部333が移動後の画像(第2の画像)におけるオブジェクトobjの角度を再推定する。この推定におけるマッチングスコアが閾値を超える場合、辞書データ更新部335は、再推定されたオブジェクトobjの角度に対応する角度情報と、画像取得部331がオブジェクトobjの移動前に取得した画像(第1の画像)とに基づいて辞書データを更新する。この例では、カメラ310がオブジェクトobjとともに移動することが、オブジェクトobjの角度の再推定にあたって実行されるオブジェクトobjに関する物理的な操作にあたる。また、この例では、オブジェクト認識/角度推定部333が、上述した「第1の角度推定機能」および「第2の角度推定機能」の両方の機能を果たす。
【0111】
(情報処理装置のハードウェア構成例)
次に、図16を参照して、本発明の実施形態における情報処理装置のハードウェア構成例について説明する。図16は、本発明の実施形態における情報処理装置のハードウェア構成例を示すブロック図である。
【0112】
情報処理装置900は、プロセッサ901、メモリ903、入力装置905、出力装置907、およびバス909を含む。情報処理装置900は、さらに、ストレージ911、ドライブ913、接続ポート915、および通信装置917を含んでもよい。
【0113】
プロセッサ901は、例えば、CPU(Central Processing unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、および/またはFPGA(Field-Programmable Gate Array)などの処理回路によって構成される。プロセッサ901は、演算処理装置および制御装置として機能し、メモリ903、ストレージ911、またはリムーバブル記録媒体919に記録されたプログラムに従って情報処理装置900の動作を制御する。
【0114】
メモリ903は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む。ROMは、例えばプロセッサ901のためのプログラム、および演算パラメータなどを記憶する。RAMは、例えばプロセッサ901の実行時に展開されたプログラム、およびプログラムの実行時のパラメータなどを一次記憶する。
【0115】
入力装置905は、例えば、マウス、キーボード、タッチパネル、ボタン、または各種のスイッチなど、ユーザによって操作される装置である。入力装置905は、必ずしも情報処理装置900と一体化していなくてもよく、例えば、無線通信によって制御信号を送信するリモートコントローラであってもよい。入力装置905は、ユーザが入力した情報に基づいて入力信号を生成してプロセッサ901に出力する入力制御回路を含む。
【0116】
出力装置907は、視覚や聴覚、触覚などの感覚を用いてユーザに向けて情報を出力することが可能な装置で構成される。出力装置907は、例えば、LCD(Liquid Crystal Display)または有機EL(Electro-Luminescence)ディスプレイなどの表示装置、スピーカまたはヘッドフォンなどの音声出力装置、もしくはバイブレータなどを含みうる。出力装置907は、情報処理装置900の処理により得られた結果を、テキストもしくは画像などの映像、音声もしくは音響などの音声、またはバイブレーションなどとして出力する。
【0117】
ストレージ911は、例えば、HDD(Hard Disk Drive)などの磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。ストレージ911は、例えばプロセッサ901のためのプログラム、プログラムの実行時に読み出される、またはプログラムの実行によって生成された各種のデータ、および外部から取得した各種のデータなどを格納する。
【0118】
ドライブ913は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体919のためのリーダライタである。ドライブ913は、装着されているリムーバブル記録媒体919に記録されている情報を読み出して、メモリ903に出力する。また、ドライブ913は、装着されているリムーバブル記録媒体919に各種のデータを書き込む。
【0119】
接続ポート915は、外部接続機器921を情報処理装置900に接続するためのポートである。接続ポート915は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)ポートなどを含みうる。また、接続ポート915は、RS-232Cポート、光オーディオ端子、HDMI(登録商標)(High-Definition Multimedia Interface)ポートなどを含んでもよい。接続ポート915に外部接続機器921を接続することで、情報処理装置900と外部接続機器921との間で各種のデータを交換することができる。
【0120】
通信装置917は、ネットワーク923に接続される。なお、ネットワーク923は、例えばインターネットのような不特定多数の装置が接続される開かれた通信ネットワークであってもよく、例えばBluetooth(登録商標)のような限られた装置、例えば2つの装置が接続される閉じられた通信ネットワークであってもよい。通信装置917は、例えば、LAN(Local Area Network)、Bluetooth(登録商標)、Wi-Fi、またはWUSB(Wireless USB)用の通信カードを含みうる。通信装置917は、ネットワーク923に応じた所定のプロトコルを用いて、他の情報処理装置との間で信号またはデータなどを送受信する。
【0121】
以上、情報処理装置900のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、当業者は、上述したような情報処理装置900の構成を、実施する時々の技術レベルに応じて適宜変更することができる。
【0122】
本発明の実施形態は、例えば、上記で説明したようなシステム、治具、情報処理装置、情報処理装置で実行される情報処理方法、情報処理装置を機能させるためのプログラム、およびプログラムが記録された一時的でない有形の媒体を含みうる。
【0123】
以上、添付図面を参照しながら本発明のいくつかの実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0124】
10…システム、100…端末、110…画像取得部、120…角度情報取得部、130…辞書データ生成部、150…カメラ、160…雲台装置、161…基台、162…支柱、163…アーム、164…ピン、165…ホルダ、167…制御部、170…治具、171…取付部材、172…連結部材、173…オブジェクトホルダ、174…背景板、200…データベース、210…辞書データ、300,300a,300b…ロボット、310…カメラ、320…マニピュレータ、330…制御部、331…画像取得部、332…辞書データ取得部、333…オブジェクト認識/角度推定部、334…結果出力部、335…辞書データ更新部、336…マニピュレータ制御部、337…角度情報取得/角度推定部、339…モータ制御部、340…センサ、350…モータ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16