【文献】
K.Kawamoto et al.,Visual vehicle tracking based on an appearance generative model,SCIS-ISIS 2012,IEEE,2012年11月20日,p.711-714
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。ただし、以下の説明において特に断らない限り、方向や向きに関する記述は、当該説明の便宜上、図面に対応するものであり、例えば実施品、製品または権利範囲等を限定するものではない。
【0017】
<1. 実施の形態>
図1は、姿勢推定システム1を示す図である。姿勢推定システム1は、制御装置2および運搬ロボット3とを備えている。
【0018】
基準物体7は、計測に用いる基準となる物体であり、
図1に示すように、ここではミニカーを例に挙げる。また、物体8は、基準物体7によって代表される物体(ワーク)であり、運搬ロボット3による作業の対象となる物体である。基準物体7と物体8とは必ずしも同一の物体である必要はない。例えば、素材や物性は異なってもよい。また、基準物体7と物体8とは同一形状かつ同一配色の物体であることが好ましい。しかし、両者の間に外観上の多少の違いがあっても許容される場合がある。すなわち、基準物体7と物体8は、外観において物理的な完全同一までは要求されない。なお、
図1において、物体8が載置される台(ベルトコンベアや作業台など)は省略している。
【0019】
また、ネットワーク9は、製造工場内に敷設された構内LANであるが、特に構内LANに限定されるものではない。ネットワーク9は、インターネットや公衆網、WANなどであってもよい。
【0020】
図2は、制御装置2のブロック図である。制御装置2は、CPU20、記憶装置21、操作部22、表示部23、計測台24、ステッピングモータ25、計測部26および通信部27を備える。詳細は後述するが、制御装置2は、ネットワーク9を介して運搬ロボット3を制御する機能を有している。
【0021】
CPU20は、記憶装置21に格納されているプログラム210を読み取りつつ実行し、各種データの演算や制御信号の生成等を行う。これにより、CPU20は、制御装置2が備える各構成を制御するとともに、各種データを演算し作成する機能を有している。すなわち、制御装置2は、一般的なコンピュータとして構成されている。なお、CPU20によって実現される機能については後述する。
【0022】
記憶装置21は、制御装置2において各種データを記憶する機能を提供する。言い換えれば、記憶装置21が制御装置2において電子的に固定された情報を保存する。
【0023】
記憶装置21としては、CPU20の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)、比較的大容量のデータを記憶するハードディスク、専用の読み取り装置に装着された可搬性の記憶媒体(CD−ROM、PCカード、SDカード、USBメモリなど)等が該当する。
図2においては、記憶装置21を、あたかも1つの構造物であるかのように図示している。しかし、通常、記憶装置21は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、記憶装置21は、データを記憶する機能を有する装置群の総称である。
【0024】
また、現実のCPU20は高速にアクセス可能なRAMを内部に備えた電子回路である。しかし、このようなCPU20が備える記憶装置も、説明の都合上、記憶装置21に含めて説明する。すなわち、以下の説明では、一時的にCPU20自体が記憶するデータも、記憶装置21が記憶するとして説明する。
図2に示すように、記憶装置21は、プログラム210、三次元形状情報211、二次元画像情報212および見え方生成情報213等を記憶するために使用される。
【0025】
三次元形状情報211は、計測部26によって作成される情報である。三次元形状情報211は、一の計測方向から基準物体7を捉えた情報であって、一の計測方向に限定されているとはいえ、当該基準物体7を三次元で表現した情報である。姿勢推定システム1では、制御装置2は、基準物体7の全周にわたる三次元の情報は取得しない。
【0026】
二次元画像情報212は、計測部26により取得された三次元形状情報211に基づいて作成される複数の画像情報である。二次元画像情報212のそれぞれは識別番号と、画像情報と、観測方向とを含んでいる。すなわち、二次元画像情報212において、識別情報と、画像情報と、観測方向とが互いに関連づけられている。なお、「観測方向」とは、対応する画像情報に関する、視点からの方向(視線方向)である。
【0027】
二次元画像情報212に格納される画像情報は、基準物体7を観測方向から擬似的に捉えた二次元の画像情報である。複数の二次元画像情報212は、互いに異なる複数の観測方向のそれぞれについて作成されている。すなわち、1つ(1回の計測)の三次元形状情報211から、複数の画像情報が作成される。そして、これらの複数の画像情報は、観測方向をずらしながら基準物体7を捉えた画像情報である。以下、1つ(1回の計測)の三次元形状情報211から作成される一連の画像情報を、「1セットの画像情報」と呼ぶ場合がある。
【0028】
なお、見え方生成情報213については、後述する。
【0029】
操作部22は、制御装置2に対してオペレータ等が指示を入力するために操作するハードウエアである。操作部22としては、例えば、各種キーやボタン類、スイッチ、タッチパネル、ポインティングデバイス、あるいは、ジョグダイヤルなどが該当する。
【0030】
表示部23は、各種データを表示することによりオペレータ等に対して出力する機能を有するハードウェアである。表示部23としては、例えば、ランプやLED、CRT、液晶ディスプレイや液晶パネルなどが該当する。
【0031】
計測台24は、計測部26によって基準物体7を計測する際に、当該基準物体7を載置するために設けられている台である。計測台24は、基準物体7が載置される載置板240を備えている。載置板240はステッピングモータ25からの駆動力により回転させることが可能である。
【0032】
ステッピングモータ25は、計測台24の載置板240を水平面内で回転させる機能を有している。なお、ステッピングモータ25は、CPU20からの制御信号により、回転方向および回転角(回転量)を制御することが可能である。これにより、制御装置2は、計測部26に対する基準物体7の向きを調整し、計測部26がどの方向から基準物体7を計測するのかを決定する。
【0033】
計測部26は、いわゆる三次元ビジョンセンサであり、計測方向から被写体を計測することにより、被写体の輝度や色だけでなく、距離(計測部26からの距離)も計測できる装置である。計測部26は、計測台24の載置板241上に載置された基準物体7を計測して、三次元形状情報211を作成する。すなわち、計測部26は、一の計測方向から基準物体7を測定することにより基準物体7の当該一の計測方向に対応する三次元形状情報211を取得する。計測部26による対象物(基準物体7)の計測の方式等については、従来より様々な方式のものが提案されているが、ここでは詳細な説明を省略する。
【0034】
通信部27は、制御装置2をネットワーク9にデータ通信が可能な状態で接続する機能を提供する。これにより、制御装置2は、ネットワーク9を介して、運搬ロボット3との間でデータ通信を行うことができる。
【0035】
図3は、制御装置2が備える機能ブロックをデータの流れとともに示す図である。
図3に示す計測制御部200、疑似画像作成部201、モデル作成部202、推定部203および評価部204は、CPU20がプログラム210に従って動作することにより実現される機能ブロックである。
【0036】
計測制御部200は、操作部22からの指示または評価情報215に応じて、計測部26を制御して、計測部26に基準物体7の計測を実行させる。また、計測制御部200は、計測部26による計測に先立って、ステッピングモータ25を制御し、載置板240を回転させる。これにより、基準物体7の計測部26に対する向き(すなわち、基準物体7の計測方向)が決定される。
【0037】
疑似画像作成部201は、計測部26が基準物体7を計測することにより取得された三次元形状情報211に基づいて、基準物体7を観測方向から擬似的に捉えた二次元画像情報212を、互いに異なる複数の観測方向のそれぞれについて作成する。より詳細には、1つの三次元形状情報211から、1セットの画像情報が作成され、それぞれが二次元画像情報212となる。
【0038】
なお、複数の観測方向の定義の仕方として、例えば、基準となる観測方向を1つ定義した後、当該基準となる観測方向からθ(数度程度)ずつずらしながら1つ1つの観測方向を定義し、全周にわたって複数の観測方向を定義することが想定される。ただし、複数の観測方向は、このようにして定義されたものに限定されるものではない。物体の三次元の情報から、このような二次元の画像情報を作成する手法としては、従来から様々な技術が提案されており、それらを適宜採用することができる。
【0039】
また、本実施の形態における疑似画像作成部201は、二次元画像情報212を作成すると、その元となった三次元形状情報211を削除する。すなわち、本実施の形態における姿勢推定システム1では、同一の三次元形状情報211から二次元画像情報212が複数回作成されることはない。ただし、三次元形状情報211を削除せずに、記録しておいてもよい。
【0040】
モデル作成部202は、疑似画像作成部201により作成された二次元画像情報212を学習素材として見え方生成情報213を作成する。姿勢推定システム1は、モデル作成部202を実現する技術として、例えば、「"Visual vehicl tracking based on an appearance generative model", Kazuhiko Kawamoto, Tatsuya Yonekawa, Kazushi Okamoto, SCIS-ISIS 2012, Kobe, Japan, November 20-24, 2012」(以下、「非特許文献」と称する。)に記載されている技術を用いる。
【0041】
なお、本実施の形態におけるモデル作成部202は、学習画像として二次元画像情報212を用いて見え方生成情報213を作成すると、その元となったすべての二次元画像情報212を削除する。すなわち、本実施の形態における姿勢推定システム1では、同一の1セットの画像情報(複数の二次元画像情報212)から見え方生成情報213を複数回作成することはない。ただし、二次元画像情報212を削除せずに、記録しておいてもよい。
【0042】
詳細は後述するが、すでに作成した見え方生成情報213を採用したとしても、推定部203が物体8の姿勢を推定することに失敗した場合(そのような場合が判定情報312に示される。)、計測部26は、再度、基準物体7の計測をおこない、新たな三次元形状情報211を取得する。そして、その場合には、疑似画像作成部201が新たに作成された三次元形状情報211に基づいて新たな二次元画像情報212(新たな1セットの画像情報)を作成する。このように、判定部301による判定結果に応じて、計測部26および疑似画像作成部201が三次元形状情報211および二次元画像情報212を順次作成する。
【0043】
このようにして新たな1セットの画像情報が作成されると、モデル作成部202は新たに作成された1セット分の二次元の画像情報に基づいて新たな見え方生成情報213を作成する。すなわち、モデル作成部202は、判定部301による判定結果(判定情報312)に応じて、新たな見え方生成情報213を作成する。そして、作成された見え方生成情報213は、それぞれ保存される。
【0044】
推定部203は、記憶装置21により記憶された見え方生成情報213と撮像部36により取得された撮像情報311とに基づいて、物体8の姿勢を推定して、推定情報214を作成する機能を有している。すなわち、確率モデルである見え方生成情報213と、観測値である撮像情報311とによって、尤度評価することにより、前提条件としての物体8の姿勢(観測方向)を推定する。なお、推定部203による推定の詳細については、上記非特許文献に記載されている技術を用いるため、ここでは詳細な説明を省略する。
【0045】
また、推定部203は、複数の見え方生成情報213が作成されており、各見え方生成情報213に重み付けがされている場合には、当該重み付けに応じた順序で物体8の姿勢を推定する(詳細は後述する。)。すなわち、推定部203は、重み付けに応じて、複数の見え方生成情報213の中から推定に用いる見え方生成情報213を選択する。
【0046】
評価部204は、モデル作成部202により作成された複数の見え方生成情報213のそれぞれに重み付けを行う。より具体的には、評価部204は、判定部301による作成された判定情報312に応じて重み付けを行う。
【0047】
図4は、運搬ロボット3のブロック図である。運搬ロボット3は、CPU30、記憶装置31、操作部32、表示部33、アーム部34、対物センサ35、撮像部36および通信部37を備える。詳細は後述するが、運搬ロボット3は、物体8を把持して所定の位置まで運ぶ機能を有している。
【0048】
CPU30は、記憶装置31に格納されているプログラム310を読み取りつつ実行し、各種データの演算や制御信号の生成等を行う。これにより、CPU30は、運搬ロボット3が備える各構成を制御するとともに、各種データを演算し作成する機能を有している。すなわち、運搬ロボット3は、一般的なコンピュータとして構成されている。なお、CPU30によって実現される機能については後述する。
【0049】
記憶装置31は、運搬ロボット3において各種データを記憶する機能を提供する。言い換えれば、記憶装置31が運搬ロボット3において電子的に固定された情報を保存する。
【0050】
記憶装置31としては、CPU30の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)、比較的大容量のデータを記憶するハードディスク、専用の読み取り装置に装着された可搬性の記憶媒体(CD−ROM、PCカード、SDカード、USBメモリなど)等が該当する。
図4においては、記憶装置31を、あたかも1つの構造物であるかのように図示している。しかし、通常、記憶装置31は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、記憶装置31は、データを記憶する機能を有する装置群の総称である。
【0051】
また、現実のCPU30は高速にアクセス可能なRAMを内部に備えた電子回路である。しかし、このようなCPU30が備える記憶装置も、説明の都合上、記憶装置31に含めて説明する。すなわち、以下の説明では、一時的にCPU30自体が記憶するデータも、記憶装置31が記憶するとして説明する。
図4に示すように、記憶装置31は、プログラム310、撮像情報311、判定情報312および推定情報214等を記憶するために使用される。
【0052】
操作部32は、オペレータなどによって操作されるハードウェアである。操作部32は、オペレータ等が運搬ロボット3に対して指示を入力するために使用される。
【0053】
表示部33は、オペレータ等に運搬ロボット3の状態などに関する情報を提供する出力装置である。表示部33としては、例えば、ランプやLED、液晶パネルなどが該当する。
【0054】
アーム部34は、CPU30からの制御信号に応じて駆動され、当該物体8を把持して、指示された位置に向けて搬送する。
【0055】
対物センサ35は、所定の方向に検出光(レザー光や赤外線など)を照射し、反射光を読み取ることにより、当該所定の方向に物体が存在するか否かを検出する装置である。対物センサ35は、アーム部34により把持された物体8を検出することができるように設置されている。逆に言えば、対物センサ35によって物体8が検出されていなければ、アーム部34は物体8を把持していないものとみなせる。
【0056】
撮像部36は、一般的なデジタルカメラであって、詳細は省略するが、光学レンズやレンズ駆動部、光電変換素子、画像処理部などを備えている。撮像部36は、CPU30からの制御信号に応じて、被写体を撮像して静止画像を取得する機能を有しており、物体8を撮像して撮像情報311を作成する。
【0057】
通信部37は、運搬ロボット3をネットワーク9にデータ通信が可能な状態で接続する機能を提供する。これにより、運搬ロボット3は、ネットワーク9を介して、制御装置2との間でデータ通信を行うことができる。通信部37は、撮像情報311や判定情報312などを制御装置2に向けて送信する一方で、制御情報(図示せず)や推定情報214などを制御装置2から受信する。
【0058】
図5は、運搬ロボット3が備える機能ブロックをデータの流れとともに示す図である。
図5に示すアーム制御部300および判定部301は、CPU30がプログラム310に従って動作することにより実現される機能ブロックである。
【0059】
アーム制御部300は、物体8について推定された姿勢を示す推定情報214に基づいて、物体8を把持するようにアーム部34を制御する。また、アーム制御部300は、アーム部34に物体8を把持させたタイミングに応じて、対物センサ35に物体8を検出するように対物センサ35を制御する。さらに、アーム制御部300は、アーム部34が物体8を正常に把持することができた場合(対物センサ35が物体8を検出した場合)、把持した物体8を所定の位置に搬送するようにアーム部34を制御する。
【0060】
判定部301は、対物センサ35が物体8を検出したか否かに応じて、推定結果の適否を示す判定情報312を作成する。すなわち、判定部301は、アーム部34により物体8を把持することができたか否かに応じて、推定情報214に示されている推定結果(物体8の姿勢)の適否を判定する。
【0061】
以上が、姿勢推定システム1の構成および機能の説明である。次に、姿勢推定システム1を用いて物体8の姿勢を推定する方法について説明する。
【0062】
図6ないし
図8は、姿勢推定方法における、主に制御装置2において実行される工程を示す流れ図である。制御装置2は、オペレータによって電源が投入されると、図示しない所定の初期設定を実行する。初期設定では、例えば、これから運搬ロボット3によって運搬する物体8を選択する処理(ワーク決定処理)なども実行されるものとする。所定の初期設定が終了すると、制御装置2は、ステップS1を実行する。
【0063】
ステップS1において、CPU20は、物体8に対する見え方生成情報213がすでに作成され、記憶装置21上に存在しているか否かを判定する。
【0064】
見え方生成情報213が1つも存在していない状態では、制御装置2(推定部203)は、物体8の姿勢を推定することはできない。したがって、ステップS1においてNoと判定された場合には、制御装置2は、まず、見え方生成情報213を作成する必要がある。そこで、制御装置2は、ステップS2ないしS7の処理を実行する。
【0065】
まず、CPU20は、表示部23にメッセージを表示させ、オペレータに基準物体7を準備するように促す。例えば、「三次元計測を実行します。計測台の載置板上に、計測する基準となる物体を載置してください。」などのメッセージを表示する。
【0066】
表示部23に表示されたメッセージを確認することにより、オペレータは、基準物体7を準備し、計測台24の載置板240に基準物体7を載置する(ステップS2)。なお、基準物体7が載置板240に載置されたか否かは、オペレータが操作部22を操作して、載置完了を制御装置2に知らせるものとする。ただし、様々なセンサにより、自動的に検出するようにしてもよい。
【0067】
次に、CPU20は、再び表示部23にメッセージを表示させ、オペレータに計測方向を決定するように促す。例えば、「計測する向きを選択してください。」などのメッセージと、選択可能な計測方向の一覧などを表示する。
【0068】
このメッセージに従って、オペレータが操作部22を操作して計測方向を選択し入力すると、計測制御部200は、オペレータによって選択された計測方向となるように、ステッピングモータ25を制御する。これにより、ステッピングモータ25が載置板240を回転させて、基準物体7の計測部26に対する向きがオペレータが所望した向きとなるように調整し、計測方向が決定される(ステップS3)。
【0069】
なお、ステップS3が繰り返され、同一の基準物体7に対する2つ目以降の見え方生成情報213が作成される場合には、計測方向は、それまでに採用したものと異なるものとして決定する必要がある。同一の計測方向(同一条件)での計測を繰り返して見え方生成情報213を作成しても、原則として推定精度は向上しないからである。したがって、見え方生成情報213が存在している状態で、ステップS3が実行される場合には、表示部23は、選択可能な計測方向の一覧から、すでに採用された計測方向を除外(あるいは選択不能の状態で表示)する。
【0070】
また、ステップS3における計測方向の決定は、必ずしもオペレータによって決定されなければならないわけではなく、制御装置2により自動的に行われてもよい。例えば、載置板240に載置されるときの基準物体7の向きを指定しておき、ステップS2においてはこの向きとなるようにオペレータに基準物体7を載置させる。そして、計測回数に応じて、計測方向を予め設定しておき、見え方生成情報213の個数から計測回数を判定して、計測方向を決定してもよい。
【0071】
基準物体7が準備され、計測方向が決定されると、計測制御部200は、計測部26に計測を実行するように制御する。これにより、計測部26が計測を行い(ステップS4)、新しい三次元形状情報211が作成される(ステップS5)。すでに、説明したように、ステップS4では、ステップS3において決定された一の計測方向についてのみ、基準物体7に対する三次元の計測が行われる。
【0072】
このようにして作成される三次元形状情報211は、全周にわたる詳細な三次元の情報に比べて、簡易に取得することができる。したがって、姿勢推定システム1は、物体8が頻繁に変更されたとしても、従来の技術に比べて、準備に要する負担が軽く、すばやく適応することができる。
【0073】
ステップS5が実行されると、疑似画像作成部201は、新たに作成された三次元形状情報211に基づいて、観測方向の異なる複数の二次元画像情報212(1セットの画像情報)を新たに作成する(ステップS6)。
【0074】
次に、モデル作成部202は、ステップS6において新たに作成された複数の二次元画像情報212に基づいて、新たな見え方生成情報213を作成する(ステップS7)。
【0075】
なお、見え方生成情報213のそれぞれには、物体8を識別する情報と、ステップS3において決定された計測方向を識別する情報と、推定部203による推定に使用された回数(以下、「使用回数」と称する。)と、当該推定において正しく推定された回数(以下、「成功回数」と称する。)とが関連づけられる。当然のことながら、使用回数および成功回数は、見え方生成情報213が作成されたときには、いずれも初期値としての「0」である。
【0076】
ステップS7が実行されるか、または、ステップS1においてYesと判定されると、制御装置2は、ステップS11を実行しつつ、撮像情報311の受信を監視しつづける状態(以下、「監視状態」と称する。)に移行する。なお、後述するステップS18が実行されたときにも、制御装置2は、監視状態に移行する。
【0077】
監視状態において、通信部27により撮像情報311が受信されると、CPU20は、ステップS11においてYesと判定する。そして、ステップS11においてYesと判定されると、推定部203は、記憶装置21に記憶されている見え方生成情報213から、推定に使用する見え方生成情報213を選択する(ステップS12)。
【0078】
ステップS12において、推定部203は、物体8を識別する情報に基づいて、記憶装置21に記憶されている見え方生成情報213から、物体8について作成された見え方生成情報213を抽出する。
【0079】
なお、物体8を識別するための情報は、予めオペレータにより特定されていてもよい。すなわち、運搬ロボット3のワーク(物体8)が特定されていてもよい。しかし、例えば、受信した撮像情報311に対して画像認識処理を施し、撮像されている物体8を認識することにより特定してもよい。このように構成することにより、運搬ロボット3のワーク(物体8)について様々な物体が混在する状況(運搬ロボット3のところにどの物体がどのタイミングで来るか不定の場合)にも対応することができる。
【0080】
ここで、抽出された見え方生成情報213が1つの場合は、当該見え方生成情報213を選択する。
【0081】
一方、抽出した見え方生成情報213が複数である場合には、当該抽出した見え方生成情報213に関連づけられている使用回数および成功回数を取得して、各見え方生成情報213の「重み」を演算する。重みは、例えば、成功回数/使用回数で求めることができる。抽出されたすべての見え方生成情報213について「重み」が求まると、推定部203は「重み」が最大の見え方生成情報213を選択する。すなわち、推定部203は、重み付けに応じて、複数の見え方生成情報213の中から推定に用いる見え方生成情報213を選択する。
【0082】
推定に使用する見え方生成情報213が選択されると、推定部203は、受信した撮像情報311を観測値として、見え方生成情報213に基づいて、当該撮像情報311が撮像されたときの物体8の姿勢を推定し(ステップS13)、推定情報214を作成する(ステップS14)。
【0083】
推定情報214が作成されると、通信部27は、当該推定情報214を運搬ロボット3に向けて送信する(ステップS15)。すなわち、制御装置2は、運搬ロボット3からの撮像情報311に対するレスポンスとして、推定情報214を作成して運搬ロボット3に向けて送信する。言い換えれば、運搬ロボット3が撮像情報311を送信することにより、当該撮像情報311に撮像されている物体8の姿勢を制御装置2に問い合わせ、当該問い合わせに対して、制御装置2が当該物体8の姿勢を推定して、回答としての推定情報214を運搬ロボット3に送信するのである。
【0084】
推定情報214を送信すると、CPU20は、判定情報312を受信したか否かを判定し(ステップS16)、判定情報312を受信するまでステップS16を繰り返しつつ待機する。判定情報312は、推定情報214に対するレスポンスとして、運搬ロボット3から制御装置2に向けて送信される情報である。
【0085】
判定情報312が受信されると(ステップS16においてYes。)、評価部204は、受信された判定情報312において判定結果が「0」となっているか否かを判定する(ステップS17)。
【0086】
判定結果が「0」の場合とは、制御装置2から送信された推定情報214によって推定された姿勢に基づいてアーム部34を制御した結果、物体8を正常に把持することができたことを表している。姿勢推定システム1は、物体8を正常に把持できたか否かによって、推定部203による推定結果(推定情報214)の適否を判定する。
【0087】
判定結果が「0」の場合(ステップS17においてYes。)、評価部204は、ステップS12において選択された見え方生成情報213(推定に使用された見え方生成情報213)の使用回数と、成功回数とをそれぞれインクリメントすることにより、当該見え方生成情報213の重み付けを行う(ステップS18)。
【0088】
このように、評価部204は、モデル作成部202により作成された複数の見え方生成情報213のそれぞれに重み付けを行う。これにより、推定した姿勢により物体8の把持に成功し、判定結果が「0」となった場合には、当該推定に使用された見え方生成情報213の「重み」の値が大きくなり、以後、優先的にステップS12において選択されるようになる。
【0089】
なお、ステップS18が実行されると、すでに説明したように、制御装置2は、監視状態に戻る。
【0090】
一方、判定結果が「1」の場合(ステップS17においてNo。)、評価部204は、ステップS12において選択された見え方生成情報213の使用回数のみをインクリメントすることにより、当該見え方生成情報213の重み付けを行う(ステップS21)。
【0091】
これにより、推定した姿勢により物体8の把持に失敗し、判定結果が「1」となった場合には、当該推定に使用された見え方生成情報213の「重み」の値が小さくなり、以後、ステップS12において選択される確率は低下する。
【0092】
次に、推定部203は、同じ物体8について準備されている見え方生成情報213が他に存在しているか否か(ステップS12において、物体8を識別する情報によって抽出されたすべての見え方生成情報213による推定が終了したか否か)を判定する(ステップS22)。
【0093】
そして、未だ終了していない見え方生成情報213が存在する場合(ステップS22においてNo。)、これらの見え方生成情報213について「重み」を演算し、「重み」の値が最も大きい見え方生成情報213に変更して(ステップS23)、ステップS13からの処理を繰り返す。
【0094】
一方、すべての見え方生成情報213による推定が終了している場合(ステップS22においてYes。)、当該物体8について準備されている見え方生成情報213では、正常に姿勢を推定することができないとみなして、ステップS2からの処理を繰り返す。
【0095】
ステップS22においてYesと判定した場合、評価部204は、見え方生成情報213を再度生成するように指示する評価情報215を作成する。これにより、計測制御部200は、ステップS2ないしS7の処理を実行する。
【0096】
すでに説明したように、ステップS2ないしS7の処理が実行されると、物体8について新たな見え方生成情報213が作成され、記憶装置21に格納される。そして、物体8について新たな見え方生成情報213が作成されると、制御装置2は、当該見え方生成情報213によってステップS13からの処理を繰り返す。
【0097】
以上が、主に、制御装置2において実行される工程である。次に、運搬ロボット3において実行される工程について説明する。
【0098】
図9および
図10は、姿勢推定方法における、主に運搬ロボット3において実行される工程を示す流れ図である。なお、運搬ロボット3は、電源が投入されると、所定の初期設定を実行した後、運搬すべき物体8の到着を待つ状態となる。運搬ロボット3のこの状態を待機状態と称する。
【0099】
待機状態において、物体8を検出すると、CPU30は、ステップS31においてYesと判定し、検出した物体8を撮像するように撮像部36を制御する。これにより、撮像部36は、到着した物体8を撮像し(ステップS32)、撮像情報311を作成する(ステップS33)。
【0100】
撮像情報311が作成されると、通信部37は、当該撮像情報311を制御装置2に向けて送信する(ステップS34)。これにより、制御装置2に対して、物体8についての姿勢推定依頼がされたことになる。
【0101】
撮像情報311が送信されると、CPU30は、ステップS35を実行することにより、推定情報214を受信するまで待機する。言い換えれば、ステップS35は、運搬ロボット3が姿勢推定依頼に対するレスポンスを待っている状態である。
【0102】
推定情報214を受信すると(ステップS35においてYes。)、アーム制御部300は、当該推定情報214に基づいて、物体8を把持するようにアーム部34を制御する。これにより、アーム部34は、物体8を把持する動作を実行する(ステップS41)。
【0103】
アーム部34が把持動作を完了すると、アーム制御部300は、物体8を検出するように対物センサ35を制御する。これにより、対物センサ35が物体8の検出を行う(ステップS42)。
【0104】
対物センサ35は、物体8がアーム部34によって正常に把持されているときに、当該物体8を検出するように設置されている。したがって、対物センサ35によって物体8が検出されたか否かを判定することによって、アーム部34が物体8を正常に把持できたか否かを判定することができる。そこで、CPU30は、対物センサ35によって物体8を検出できたか否かを判定する(ステップS43)。
【0105】
対物センサ35が物体8を検出した場合(ステップS43においてYes。)、アーム制御部300は、物体8を所定の位置に搬送するようにアーム部34を制御する。これにより、アーム部34は、把持した物体8を所定の位置に搬送する(ステップS44)。
【0106】
ステップS44と並行して、判定部301は、判定結果として「0(把持完了)」を含む判定情報312を作成する(ステップS45)。そして、通信部37は、作成された判定情報312を制御装置2に向けて送信する(ステップS46)。なお、ステップS46の処理を終了すると、運搬ロボット3はステップS31に戻って処理を繰り返す。
【0107】
一方、対物センサ35が物体8を検出しなかった場合(ステップS43においてNo。)、判定部301は、判定結果として「1(把持失敗)」を含む判定情報312を作成する(ステップS47)。そして、通信部37は、作成された判定情報312を制御装置2に向けて送信する(ステップS48)。
【0108】
ステップS48の処理を終了すると、運搬ロボット3はステップS35に戻って処理を繰り返す。すなわち、ステップS35によって新たな推定情報214が受信されるのを待ってから、再び、ステップS41ないし43の処理を実行する。
【0109】
なお、アーム部34が物体8の把持に失敗した場合、把持を試みたアーム部34により物体8の姿勢は撮像時から変化していることも想定される。したがって、把持に失敗した場合において、運搬ロボット3は、ステップS32,S33に相当する工程を実行し、新たに撮像しなおした撮像情報311を判定情報312とともに送信してもよい。
【0110】
以上のように、姿勢推定システム1は、一の計測方向から基準物体7を測定することにより基準物体7の当該一の計測方向に対応する三次元形状情報211を取得する計測部26と、計測部26により取得された三次元形状情報211に基づいて、基準物体7を観測方向から擬似的に捉えた二次元画像情報212を、互いに異なる複数の観測方向のそれぞれについて作成する疑似画像作成部201と、疑似画像作成部201により作成された二次元画像情報212を学習素材として見え方生成情報213を作成するモデル作成部202と、モデル作成部202により作成された見え方生成情報213を予め記憶する記憶装置21と、物体8を撮像して撮像情報311を取得する撮像部36と、記憶装置21により記憶された見え方生成情報213と撮像部36により取得された撮像情報311とに基づいて、物体8の姿勢を推定する推定部203とを備える。
【0111】
これにより、正確な三次元の形状情報(例えばCAD情報)がなくても、簡単な計測で物体8の姿勢を推定できる。セル生産に従事するセル型ロボット(運搬ロボット3)において、ワークが様々に変化したとしても、学習に時間を要することなく、柔軟に対応することができる。
【0112】
また、推定部203による推定情報214の適否を判定する判定部301をさらに備え、モデル作成部202は、判定部301による判定情報312に応じて、新たな見え方生成情報213を作成する。これにより、失敗した場合においても、短い時間で復帰が可能となる。
【0113】
また、物体8を把持するアーム部34をさらに備え、判定部301は、アーム部34により物体8を把持することができたか否かに応じて、推定情報214の適否を判定する。このように、要求された作業が達成できたか否かで推定された姿勢の適否を判定することにより、実際の要求精度に応じて判定することができる。
【0114】
また、モデル作成部202により作成された複数の見え方生成情報213のそれぞれに重み付けを行う評価部204をさらに備え、推定部203は、評価部204による重み付けに応じて、複数の見え方生成情報213の中から推定に用いる見え方生成情報213を選択する。そして、評価部204は、判定部301による判定情報312に応じて当該重み付けを行う。これにより、推定情報214の成績に応じて優先的に用いる見え方生成情報213を選択することができる。
【0115】
<2. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0116】
例えば、上記実施の形態に示した各工程は、あくまでも例示であって、上記に示した順序や内容に限定されるものではない。すなわち、同様の効果が得られるならば、適宜、順序や内容が変更されてもよい。
【0117】
また、上記実施の形態に示した機能ブロック(例えば、推定部203や評価部204、判定部301など)は、CPU20,30がプログラム210,310に従って動作することにより、ソフトウェア的に実現されると説明した。しかし、これらの機能ブロックの一部または全部を専用の論理回路で構成し、ハードウェア的に実現してもよい。
【0118】
また、アーム部34によって物体8が把持されているか否かを検出する手法は、対物センサ35による手法に限定されるものではない。例えば、撮像部36がアーム部34を撮像し、撮像情報311を画像解析して物体8が正常に把持されているか否かを判定してもよい。あるいは、アーム部34に接触センサを設けて、アーム部34が物体8に接触し続けているか否かを検出することにより物体8が把持されているか否かを判定することも可能である。また、物体8が正常に把持されていれば、物体8はアーム部34によって移動され、当該場所に物体8は存在しなくなる。したがって、物体8が載置されていた場所に物体8が存在し続けているか否かによってアーム部34が物体8を把持することができたか否かを判定してもよい。
【0119】
また、運搬ロボット3が物体8を支持する方法は、把持に限定されるものではない。例えば、吸着であってもよい。吸着は、アーム部34の先端付近に吸着口を形成し、コンプレッサー等で空気を吸着口から内部に吸い込むことにより物体8を支持する方法である。吸着の場合は、吸着に適した部分を探索するために姿勢推定が必要であるものの、把持に比べて姿勢の自由度は高く、姿勢推定の精度が低くても適用可能である。
【0120】
また、上記実施の形態では、詳細な三次元の情報であるCADデータは必要ないと説明したが、すでに基準物体7に関するCADデータが存在するのであれば、これを三次元形状情報211の代わりに用いてもよい。
【0121】
また、上記実施の形態では、制御装置2と運搬ロボット3とが別々の装置を構成しており、互いにネットワーク9によって接続されていた。しかし、制御装置2と運搬ロボット3とが一体的な装置を構成していてもよい。あるいは、制御装置2が2以上のコンピュータによって構成されていてもよい。
【0122】
また、上記実施の形態では、一度、二次元画像情報212の作成に用いられた三次元形状情報211を削除せずに記録しておくこともできると説明した。このように過去の三次元形状情報211を記録している場合には、これを再利用してもよい。例えば、運搬ロボット3が物体8を正常に把持できなかった場合において、計測により新たな三次元形状情報211を取得するのではなく、記録されている過去の三次元形状情報211に基づいて、従来に比べて観測方向を増やして(観測方向のずれ角θを小さくして)二次元画像情報212を作成してもよい。これにより、1セットの画像情報に含まれる二次元画像情報212の数が増え、観測方向に関するピッチが細かくなる。このようにして作成された1セットの画像情報(二次元画像情報212)から新たな見え方生成情報213を作成して、再度、姿勢推定を行ってもよい。