以下、実施形態について、図面を参照して説明する。
図1は、第1の実施形態に係るピッキングシステム1の概略的な構成例について説明する為の説明図である。
ピッキングシステム1は、かご車2に積載された仕分対象である物品3を所定の仕分先に仕分けるシステムである。
かご車2は、物品3を収容する収容部とキャスターとが組み合わされた容器である。なお、かご車2は、仕分対象の物品3が積載される容器の一例であり、荷台、またはパレットなど、物品3を積載することができるものであれば如何なるものであってもよい。
物品3の仕分先は、例えばベルトコンベア、他のカゴ車、仕分用のカゴ、作業台など、如何なるものであってもよい。
ピッキングシステム1は、ロボットアーム11、情報処理装置12、及び操作端末13を備える。また、ピッキングシステム1は、第1の距離センサ14及び第2の距離センサ15をさらに備える。また、ピッキングシステム1は、ストレージ装置16及び学習装置17をさらに備える。ロボットアーム11、情報処理装置12、操作端末13、第1の距離センサ14、第2の距離センサ15、ストレージ装置16、及び学習装置17は、ネットワーク18を介して互いに通信可能に構成されている。
まず、ロボットアーム11の構成について説明する。
ロボットアーム11は、かご車2に積載された物品3を把持し、把持した物品3を持ち上げ、物品3を仕分先に供給する装置である。ロボットアーム11は、把持機構21、アーム機構22、力覚センサ23、及びコントローラ24を備える。
把持機構21は、物品3を把持する機構である。把持機構21は、例えば、物品3に吸着する吸着パッドを備える。吸着パッドは、物品3の表面に接し、且つコントローラ24の制御によりパッド内が負圧になることにより、物品3の表面に吸着し、物品3を把持する。また、把持機構21は、2点以上の接点で物品3を挟むことにより物品3を把持する複数の指部を備えるグリッパとして構成されていてもよい。
アーム機構22は、把持機構21を移動させる機構である。アーム機構22は、複数のアームと、複数のアームを連結する関節機構とを備える。関節機構は、コントローラ24により制御されるアクチュエータ(図示せず)により可動することにより、アームを駆動する。
力覚センサ23は、把持機構21に対して加えられる応力を検知するセンサである。力覚センサ23は、例えば、把持機構21に対して鉛直方向に加わる応力を検知する。力覚センサ23は、検知結果をコントローラ24に送信する。なお、力覚センサ23は、アーム機構22に対して加えられる応力も検知する構成であってもよい。
コントローラ24は、情報処理装置12から供給される動作計画に基づいて、把持機構21及びアーム機構22の動作を制御する。コントローラ24は、例えば、メモリ(図示せず)と、メモリに記憶されたプログラムを実行することにより把持機構21及びアーム機構22の動作を制御する演算素子(図示せず)とを備える。また、コントローラ24は、シーケンサとして構成されていてもよい。
動作計画は、ピッキング位置を示すピッキング位置データと、軌跡とを含む情報である。コントローラ24は、動作計画が示す軌跡を通り、動作計画のピッキング位置データが示すピッキング位置まで把持機構21が移動するように、アーム機構22を制御する。
ピッキング位置データは、把持機構21により物品3を把持させる位置を示す情報である。例えば、ピッキング位置データは、把持機構21により物品3を把持させる場合に把持機構21を移動させる位置を示す。より具体的には、ピッキング位置データは、把持機構21の基準点の移動先の3次元空間上の座標である。なお、以下ピッキング位置データが示すピッキング位置を、単にピッキング位置と称する。
軌跡は、ロボットアーム11の把持機構21をピッキング位置まで移動させる際の経路を示す。より具体的には、軌跡は、把持機構21の基準点の移動経路を示す3次元空間上の複数の座標である。また、軌跡は、把持機構21の基準点の移動経路を示す3次元空間上の複数の座標とベクトルとの組み合わせであってもよい。なお、ピッキング位置は、軌跡に含まれていてもよい。
把持機構21が吸着パッドとして構成されている場合、把持機構21の基準点は、例えば、吸着パッドの中心(重心)であってもよいし、吸着パッドにおける任意の点であってもよい。また、把持機構21がグリッパとして構成されている場合、把持機構21の基準点は、例えば、グリッパを構成する複数の指部の中心であってもよい。
次に、第1の距離センサ14及び第2の距離センサ15の構成について説明する。
第1の距離センサ14及び第2の距離センサ15は、対象物までの距離を計測するセンサである。第1の距離センサ14及び第2の距離センサ15は、対象物との距離を示す距離情報を取得する。第1の距離センサ14及び第2の距離センサ15は、距離情報を、ネットワーク18を介して情報処理装置12に供給する。
第1の距離センサ14は、対象物との距離を示す点が、三次元空間に配列された第1の距離情報を取得する。即ち、第1の距離情報は、互いに直交するx方向、y方向、z方向からなる空間における点の集合(点群)を有する距離画像である。第1の距離情報は、二次元状に配列された複数の点毎に、第1の距離センサ14との距離を示す距離値を有するデータであると、言い換えることもできる。
第1の距離センサ14は、例えば異なる2点(瞳位置)から対象物を撮像した際の視差に基づいて対象物までの距離を計測するステレオカメラとして構成される。即ち、第1の距離センサ14は、レンズと、レンズにより結像された光を画像に変換する撮像素子とが組み合わされたカメラを2つ以上備える。このような構成によると、第1の距離センサ14は、第1の距離情報と同時に、色情報を有する座標(画素)が二次元的に配列されたラスタ画像を取得することができる。なお、ラスタ画像は、カラー画像であっても単色画像であってもよい。
第1の距離センサ14のレンズは、ロボットアーム11により持ち上げられる物品3が積載されたかご車2を含む領域を撮影することができるように画角及び光軸の向きが調整されている。例えば、第1の距離センサ14のレンズは、光軸がかご車2の底面に対向するように調整される。例えば、第1の距離センサ14のレンズは、第1の距離センサ14のレンズの光軸と、上記のz方向(鉛直方向)とが平行になるように調整される。即ち、第1の距離センサ14は、かご車2の底面に対向する方向から、かご車2を含む所定範囲を撮像し、第1の距離情報及びラスタ画像を取得する。
第1の距離センサ14は、第1の距離情報及びラスタ画像を、ネットワーク18を介して情報処理装置12に供給する。なお、物品3を含む所定範囲の画像を物品画像と称する。物品画像は、第1の距離情報とラスタ画像とのいずれであってもよいが、本実施形態では、物品画像は第1の距離情報であると仮定して説明する。
図2は、第2の距離センサ15の構成について説明する為の説明図である。第2の距離センサ15は、対象物との距離を示す点が、2次元空間に配列された第2の距離情報を取得する。例えば、第2の距離情報は、互いに直交するx方向、y方向からなる空間における点の集合(点群)を有する距離画像である。第2の距離情報は、1次元状に配列された複数の点毎に、第2の距離センサ15との距離を示す距離値を有するデータであると、言い換えることもできる。
第2の距離センサ15は、ある一点と測定対象との距離、即ち2点間の距離を測定する装置である。具体的には、第2の距離センサ15は、自身と、測定対象である点(測距点)とを結ぶ測距方向における距離を測定する装置である。第2の距離センサ15の測距方向は、x方向及びy方向と平行に調整される。即ち、第2の距離センサ15の測距方向は、水平方向と平行である。言い換えると、第2の距離センサ15の測距方向は、第1の距離センサ14のレンズの光軸と交差する方向である。即ち、第2の距離センサ15の測距方向は、第1の距離センサ14のレンズの光軸と角度を成す方向である。例えば、第2の距離センサ15の測距方向は、第1の距離センサ14のレンズの光軸と直交する方向である。第2の距離センサ15は、測距点(または測距方向)を水平方向に走査させつつ距離を測定する。
第2の距離センサ15は、例えばレーザーレンジファインダーである。第2の距離センサ15は、測定対象にレーザを照射し、反射光が入射するまでの時間に基づいて、測定対象までの距離を測定する。この場合、第2の距離センサ15は、レーザが照射された点を測距点として、レーザの反射光を受光するセンサと測距点との距離を測定する。第2の距離センサ15は、ロボットアーム11により、物品3が持ち上げられる高さで測定を行う。
上記の構成により、第2の距離センサ15は、ロボットアーム11により持ち上げられた物品3と、自身との距離を示す情報を、第2の距離情報として取得する。即ち、第2の距離センサ15は、測距点を水平方向に走査させつつ、ロボットアーム11により持ち上げられた物品3との距離を測定し、第2の距離情報を取得する。第2の距離センサ15は、取得した第2の距離情報を、ネットワーク18を介して情報処理装置12に供給する。
次に、操作端末13について説明する。
図3は、操作端末13及び情報処理装置の構成例について説明する為の説明図である。
操作端末13は、オペレータによる操作入力に基づいて、処理を行い、処理結果を情報処理装置12に供給する装置である。即ち、操作端末13は、情報処理装置12の操作インタフェースとして機能する。操作端末13は、通信インタフェース31、制御部32、及びタッチパネル33を備える。
通信インタフェース31は、他の機器と通信する為のインタフェースである。通信インタフェース31は、ネットワーク18を介してロボットアーム11、情報処理装置12、第1の距離センサ14、第2の距離センサ15、ストレージ装置16、及び学習装置17と通信する。
制御部32は、種々の処理を実行する処理部である。制御部32は、プロセッサ34及びメモリ35を備える。
プロセッサ34は、演算処理を実行する演算素子である。プロセッサ34は、例えばCPUとして構成される。プロセッサ34は、メモリ35に記憶されているプログラムに基づいて種々の処理を行う。
メモリ35は、プログラム及びデータを記憶する記憶装置である。メモリ35は、例えば、読み出し専用の不揮発性メモリであるROM、データを一時的に記憶するRAM、及びデータを記憶するストレージのいずれか、または複数を備える。
タッチパネル33は、画面の表示と、操作に基づく操作信号の生成とを行う装置である。タッチパネル33は、一体に構成されたディスプレイ36及びタッチセンサ37を備える。操作端末13は、タッチパネル33の代わりに画面を表示するディスプレイと、操作に基づき操作信号を生成する操作部とを備える構成であってもよい。操作部は、マウス、トラックボール、キーボード、トラックパッドなど如何なるものであってもよい。
ディスプレイ36は、制御部32または図示されないグラフィックコントローラから供給される表示用のデータ(画面データ)に基づいて画面を表示する。
タッチセンサ37は、ディスプレイ36に表示された画面上において操作端末13を操作するオペレータがタッチした位置を示す操作信号を生成する。
次に、情報処理装置12の構成について説明する。
情報処理装置12は、ロボットアーム11に動作計画を供給する装置である。情報処理装置12は、かご車2に搭載された物品3の画像である物品画像を取得する。情報処理装置12は、物品画像に写った物品3を認識する為のパラメータである画像認識パラメータを用いて、物品画像に対して画像認識を行い、物品画像において物品3が写った領域である物品領域を認識する。情報処理装置12は、物品領域の認識結果に基づき、ロボットアーム11により物品3を把持させる位置であるピッキング位置を決定する。情報処理装置12は、ピッキング位置と把持機構21の移動経路である軌跡とを示す動作計画を生成し、ロボットアーム11に動作計画を供給する。
また、情報処理装置12は、後述する方法によって、学習装置17に機械学習を行わせる為の学習用データを生成する。情報処理装置12は、生成した学習用データをストレージ装置16に供給する。
情報処理装置12は、パーソナルコンピュータ(PC)などの、データの処理及びデータの保存を行うことができる装置により構成される。情報処理装置12は、通信インタフェース41及び制御部42を備える。
通信インタフェース41は、情報処理装置12以外の他の機器と通信する為のインタフェースである。通信インタフェース41は、ネットワーク18を介してロボットアーム11、第1の距離センサ14、第2の距離センサ15、操作端末13、ストレージ装置16、及び学習装置17と通信する。
制御部42は、種々の処理を実行する処理部である。制御部42は、プロセッサ43及びメモリ44を備える。
プロセッサ43は、演算処理を実行する演算素子である。プロセッサ43は、例えばCPUとして構成される。プロセッサ43は、メモリ44に記憶されているプログラムに基づいて種々の処理を行う。
メモリ44は、プログラム及びデータを記憶する記憶装置である。メモリ44は、例えば、読み出し専用の不揮発性メモリであるROM、データを一時的に記憶するRAM、及びデータを記憶するストレージのいずれか、または複数を備える。例えば、メモリ44は、学習装置17から供給された画像認識パラメータを記憶する。
次に、ストレージ装置16及び学習装置17について説明する。
ストレージ装置16は、学習用データを記憶する記憶装置である。ストレージ装置16は、情報処理装置12から供給された学習用データを記憶する。ストレージ装置16は、学習装置17からの要求に応じて、学習用データを学習装置17に供給する。
学習装置17は、ストレージ装置16から学習用データを取得し、学習用データに基づいて機械学習を行うことにより画像認識パラメータを生成し、情報処理装置12に画像認識パラメータを供給する。学習装置17は、学習装置17以外の機器と通信する為の通信インタフェース、種々の処理を実行する制御部、及びメモリなどを備える。
学習装置17で用いられる学習用データは、問題と答えとを有するデータである。例えば、学習用データは、仕分対象の物品3が写った物品画像と、この物品画像において仕分対象の物品が存在する領域である物品領域を示す情報とを有する。この例では、物品画像が問題に相当し、物品画像における物品領域が答えに相当する。学習装置17は、このような学習用データに基づいて、例えばセグメーテーション用のニューラルネットワークなどにより機械学習を行うことにより、情報処理装置12が物品画像から物体領域を認識する際に用いられる画像認識パラメータを生成する。画像認識パラメータは、セグメーテーション用のニューラルネットワークにおける重み計数である。なお、学習装置17は、学習用データを取得する毎に画像認識パラメータを生成する構成であってもよいし、取得した学習用データに基づいて生成された画像認識パラメータを用いて、既に生成した画像認識パラメータを調整(更新)する構成であってもよい。また、学習装置17は、既に生成した画像認識パラメータを調整(変更)する場合、一度に調整することができる値を制限する構成であってもよい。
次に、ピッキングシステム1における各構成の動作について説明する。
まず情報処理装置12による動作計画の供給について説明する。
図4は、動作計画の生成に関する情報処理装置12の動作について説明する為のフローチャートである。
制御部42のプロセッサ43は、まず第1の距離センサ14から、図5に示される物品画像を取得する(ステップS11)。上記したように、第1の距離センサ14は、ロボットアーム11により持ち上げられる物品3が搭載されたかご車2内を、ステレオカメラにより撮像して1対の画像データを取得する。さらに、第1の距離センサ14は、1対の画像データに基づき、画像データ上の所定の領域(点)毎に第1の距離センサ14との距離を算出し、点群データとしての物品画像を生成する。第1の距離センサ14は、生成した物品画像を情報処理装置12に供給する。
図5は、物品画像51の例について説明する為の説明図である。上記したように、第1の距離センサ14は、かご車2が設置される領域を含む所定範囲が画角として設定されている。この為、物品画像51には、かご車2及び複数の物品3が写り込んでいる。物品画像51は、第1の距離センサ14との距離を示す情報を含む。即ち、第1の距離センサ14が設置されている位置、第1の距離センサ14に用いられているレンズの焦点距離、及び第1の距離センサ14に用いられている撮像素子の寸法が既知である場合、物品画像51に基づき、物品3の位置及び物品3の寸法などを算出することができる。
情報処理装置12のプロセッサ43は、物品画像51と、メモリ44に記憶された画像認識パラメータとに基づいて、画像認識を行う。これにより、プロセッサ43は、物品画像51内において物品3が存在する領域である物品領域を認識する(ステップS12)。具体的には、プロセッサ43は、物品画像51に対して、メモリ44に記憶された画像認識パラメータを用いて、物体検出またはセグメンテーション用のニューラルネットワークなどの手法を用いることにより、物品領域を認識する。例えば、プロセッサ43は、物品画像51において最も高い位置に存在する面に対応する領域を、物品領域として認識する。
図6は、物品画像51内の物品領域の認識結果の例について説明する為の説明図である。図6に示されるように、物品画像51において、最も高い位置に存在する物品3の面が物品領域52として認識されている。
プロセッサ43は、物品画像51における物品領域52の認識結果に基づいて、ピッキング位置を決定する(ステップS13)。例えば、プロセッサ43は、物品領域52の重心(若しくは中心)の座標をピッキング位置として決定する。
プロセッサ43は、決定したピッキング位置に基づいて、動作計画を生成する(ステップS14)。例えば、プロセッサ43は、ロボットアーム11の把持機構21を、初期位置からピッキング位置まで移動させる場合の把持機構21の軌跡を生成する。プロセッサ43は、生成した軌跡と、ピッキング位置とを示す動作計画を生成する。さらに、プロセッサ43は、生成した動作計画をロボットアーム11のコントローラ24に送信し(ステップS15)、処理を終了する。
次に、ロボットアーム11の動作について説明する。
図7は、ロボットアーム11の動作について説明する為のフローチャートである。
ロボットアーム11のコントローラ24は、アーム機構22及び把持機構21を第1の距離センサ14の画角外の初期位置に移動させる(ステップS21)。例えば、コントローラ24は、アーム機構22の関節機構をアクチュエータにより可動させることにより、アーム機構22を駆動し、アーム機構22及び把持機構21を撮影範囲外に移動させる。なお、第1の距離センサ14は、アーム機構22及び把持機構21を撮影範囲外に移動したタイミングで物品画像51を取得し、情報処理装置12に送信する。
コントローラ24は、アーム機構22及び把持機構21を撮影範囲外に移動させると、情報処理装置12から動作計画が供給されるのを待つ(ステップS22)。
コントローラ24は、情報処理装置12から動作計画が供給された場合(ステップS22、YES)、動作計画に基づき把持機構21を移動させる(ステップS23)。例えば、コントローラ24は、動作計画が示す軌跡に基づき、動作計画が示すピッキング位置まで把持機構21を移動させるように、アーム機構22を制御する。
コントローラ24は、把持機構21の位置を逐次確認し、動作計画が示すピッキング位置に到達したか否か判断する。コントローラ24は、把持機構21がピッキング位置に到達した場合、次のステップS24の処理に移行する。また、コントローラ24は、力覚センサ23の検知結果を逐次確認し、把持機構21がピッキング位置に到達し、且つ物品3に接触したことを検知結果が示す場合に、次のステップS24の処理に移行する構成であってもよい。
コントローラ24は、把持機構21がピッキング位置に到達したと判断した場合、把持機構21により物品3を把持させる(ステップS24)。例えば把持機構21が吸着パッドとして構成されている場合、コントローラ24は、吸着パッド内を図示されない真空ポンプなどにより負圧にさせることにより、把持機構21に物品を把持させる。また例えば、把持機構21がグリッパとして構成されている場合、コントローラ24は、グリッパの指部により物品3を挟ませることにより、把持機構21に物品3を把持させる。
コントローラ24は、把持機構21により物品3を把持させる動作を行わせた後、物品3の把持が正常に行われたか否か判断する(ステップS25)。即ち、コントローラ24は、把持機構21により物品3を把持することができたか否か判断する。例えば、把持機構21が吸着パッドとして構成されている場合、コントローラ24は、吸着パッド内が負圧にならない場合、把持機構21により物品3を把持できていないと判断する。また、例えば、把持機構21がグリッパとして構成されている場合、コントローラ24は、グリッパにより物品3を挟むことにより、グリッパの指部に加わることが推定される応力が生じない場合、把持機構21により物品3を把持できていないと判断する。
コントローラ24は、把持機構21による物品3の把持が正常に行われたと判断した場合(ステップS25、YES)、物品3を把持した把持機構21を、所定距離上昇させるように、アーム機構22を制御する(ステップS26)。コントローラ24は、第2の距離センサ15の走査位置に到達するように、物品3を把持した把持機構21を上昇させる。これにより、第2の距離センサ15は、第2の距離情報を取得することができる。第2の距離センサ15は、取得した第2の距離情報を、情報処理装置12に供給する。
また、コントローラ24は、第2の距離センサ15による第2の距離情報の取得が完了すると、把持機構21の移動を再開させる。コントローラ24は、把持機構21を仕分先に対応する位置まで移動させ、把持機構21による物品3の把持を解除するように把持機構21を制御することにより、物品3を仕分先に降ろす(ステップS27)。また、コントローラ24は、1つの物品の仕分が完了したことを示す完了通知を情報処理装置12に送信する。さらに、コントローラ24は、ステップS21の処理に移行し、アーム機構22及び把持機構21を第1の距離センサ14の画角外に移動させ、次の動作計画の受信を待つ状態になる。
また、コントローラ24は、把持機構21による物品3の把持が正常に行われなかったと判断した場合(ステップS25、NO)、把持が正常に行われなかったことを示すエラーを情報処理装置12に送信し(ステップS28)、ステップS21の処理に移行する。
なお、ロボットアーム11のコントローラ24は、情報処理装置12から終了指示が供給された場合、アーム機構22及び把持機構21を所定の位置に移動させ、図7の処理を終了する。
次に、情報処理装置12による学習用データの生成について説明する。
図8は、学習用データの生成に関する情報処理装置12の動作について説明する為のフローチャートである。例えば、プロセッサ43は、学習用データの生成に関する図8の処理を、図4のステップS15の後段の処理として実行する。
プロセッサ43は、第2の距離情報を第2の距離センサ15から受信したか否か判断する(ステップS31)。プロセッサ43は、第2の距離情報を第2の距離センサ15から受信したと判断した場合(ステップS31、YES)、ロボットアーム11により把持した物品3が落下したか否か判断する(ステップS32)。即ち、プロセッサ43は、第2の距離センサ15により第2の距離情報を取得した対象の物品3が、ロボットアーム11によって仕分先に降ろされたか否か判断する。例えば、プロセッサ43は、ロボットアーム11のコントローラ24から、完了通知を受信した場合、物品3が、ロボットアーム11によって仕分先に降ろされたと判断する。また、プロセッサ43は、ロボットアーム11のコントローラ24から、エラーを受信した場合、物品3が、ロボットアーム11によって仕分先に降ろされず、途中で落下したと判断する。プロセッサ43は、ロボットアーム11により把持した物品3が落下したと判断した場合(ステップS32、YES)、図8の処理を終了する。
プロセッサ43は、ロボットアーム11により把持した物品3が落下していないと判断した場合(ステップS32、NO)、第2の距離情報に基づいて、マスク画像を生成する(ステップS33)。
図9乃至図11は、第2の距離情報に基づいて、マスク画像を生成する処理について説明する為の説明図である。図9は、第2の距離情報61の例を示す。図10は、物品画像51上における物品領域の例を示す。第2の距離情報61の例を示す。図11は、第2の距離情報に基づいて生成されたマスク画像の例を示す。
図9における太線は、第2の距離センサ15により測距された物品3の表面形状に相当する。第2の距離センサ15は、第2の距離センサ15が配置されている基準点O(x=0,y=0)を固定し、測距方向を水平方向に走査させる。これにより、第2の距離センサ15は、対象物である物品3の二辺と第2の距離センサ15との距離を測定し、測定結果を生成する。測定結果は、二次元状に配列された座標毎の基準点O(x=0,y=0)との距離を示す情報である。
図9の例によると、第2の距離センサ15は、点P(x=sx1,y=sy1)から、点Q(x=ex1,y=ey1)に亘って、基準点O(x=0,y=0)との距離を測定する。また、第2の距離センサ15は、点R(x=sx2,y=sy2)から、点Q(x=ex1,y=ey1)に亘って、基準点O(x=0,y=0)との距離を測定する。これにより、第2の距離センサ15は、物品3の第2の距離センサ15と対向する面の表面と、第2の距離センサ15との距離を測定し、第2の距離情報61を生成することができる。
プロセッサ43は、第2の距離情報61に基づき、物品3の第2の距離センサ15と対向する面の表面形状を推定する。推定結果は、図9における太線に相当する。さらに、プロセッサ43は、物品3の第2の距離センサ15と対向する面の表面形状の推定結果に基づいて、物品3の第2の距離センサ15と対向していない面の表面形状を推定する。即ち、プロセッサ43は、第2の距離情報61に基づいて、物品3の外形寸法を算出することができる。
プロセッサ43は、点Pと点Qとの差分に基づいて、物品3の水平方向と平行なある方向(ここでは幅方向と称する)の寸法を算出する。また、プロセッサ43は、点Rと点Qとの差分に基づいて、物品3の水平方向と平行である、幅方向と直交する方向(ここでは奥行方向と称する)の寸法を算出する。プロセッサ43は、物品3の幅方向及び奥行方向の寸法と、点P及び点Qの座標とに基づいて、物品3の第2の距離センサ15と対向していない2つの面が切り替わる点である点S(x=ex2,y=ey2)の座標を算出する。
プロセッサ43は、点P、点Q、点R、及び点Sの座標に基づいて、図10に示される物品画像51上における物品領域71の位置を算出する。具体的には、プロセッサ43は、第1の距離センサ14の位置及び第2の距離センサ15の位置に基づいて、第2の距離センサ15に対する位置を示す点P、点Q、点R、及び点Sを、第1の距離センサ14により取得した物品画像51上の座標にそれぞれ変換する。プロセッサ43は、点Pを物品画像51上の座標である点P´に変換する。プロセッサ43は、点Qを物品画像51上の座標である点Q´に変換する。プロセッサ43は、点Rを物品画像51上の座標である点R´に変換する。プロセッサ43は、点Sを物品画像51上の座標である点S´に変換する。
プロセッサ43は、点P´、点Q´、点R´、及び点S´の座標に基づいて、図11に示されるマスク画像81を生成する。マスク画像81は、物品画像51における物品領域71の位置を示す画像である。即ち、マスク画像81は、物品画像51を問題とする学習用データの答えに相当する情報である。たとえば、マスク画像は、物品領域71に相当する座標の画素値が「1」であり、その他の領域の画素値が「0」である二値画像として構成されている。即ち、プロセッサ43は、第2の距離情報61に基づいて、物品3の外形寸法を算出し、算出した外形寸法に基づいて、マスク画像81を生成することができる。なお、マスク画像81は、このような構成に限定されるものではなく、物品領域71とその他の領域とを区別可能な構成であれば如何なる構成であってもよい。
プロセッサ43は、図4のステップS11で取得した物品画像51と、図8のステップS33で生成したマスク画像81とに基づいて学習用データを生成する(ステップS34)。即ち、プロセッサ43は、物品画像51を問題とし、マスク画像81を答えとした学習用データを生成する。制御部42は、生成した学習用データをストレージ装置16に送信して保存させ(ステップS35)、処理を終了する。これにより、学習装置17は、ストレージ装置16に記憶された学習用データを用いて、機械学習を行い、画像認識パラメータを更新することができる。
上記したように、情報処理装置12は、所定範囲に置かれた物品3を把持するロボットアーム11に、ピッキング位置を供給する装置であり、通信インタフェース41と、プロセッサ43とを備える。通信インタフェース41は、所定範囲に置かれた物品3の画像である物品画像と、ロボットアーム11により把持され持ち上げられた物品3との距離を示す距離情報(第2の距離情報)と、を取得する。プロセッサ43は、距離情報に基づいて、物品画像上における物品3の位置を示すマスク画像を生成する。これにより、物品画像を問題とし、マスク画像を答えとした学習用データを、人手を介さず容易に生成することができる。これにより、大量の学習用データを生成することができる。
また、プロセッサ43は、物品画像と、予め設定された画像認識パラメータとに基づいて、物品画像上において、物品3が存在する物品領域を認識し、物品領域に基づいて、ピッキング位置を生成し、ロボットアーム11にピッキング位置を動作計画として供給する。ロボットアーム11は、供給された動作計画に基づいて、物品3の把持及び持ち上げを行う。距離情報は、この時の物品3との距離を示す情報である。プロセッサ43は、この距離情報に基づいて、物品画像上における物品3の位置を示すマスク画像し、物品画像とマスク画像とを対応付けて、画像認識パラメータを更新する為の学習用データを生成する。これにより、画像認識パラメータを更新する為の大量の学習用データを生成することができる。
また、距離情報は、第2の距離センサ15が取得するものである。第2の距離センサ15は、物品画像を取得したカメラ(第1の距離センサ14)のレンズの光軸と直交する方向における、自身と物品3との距離を測定する。即ち、距離情報は、第1の距離センサ14のレンズの光軸と直交する方向における、第2の距離センサ15と物品3との距離を示す情報である。この構成によると、第2の距離センサ15は、ロボットアーム11により持ち上げられた物品3との距離を、第1の距離センサ14のレンズの光軸と直交する方向から測定することができる。これにより、マスク画像の精度を向上させることができる。
また、第2の距離センサ15は、ロボットアーム11により、物品3が、第2の距離センサ15の測距方向と角度を成す方向に移動した際に、自身と物品3との距離を測定する。具体的には、第2の距離センサ15は、ロボットアーム11により、物品3が、第1の距離センサ14のレンズの光軸と略平行な方向に持ち上げられた際に、自身と物品3との距離を測定する。これにより、距離情報に基づき、物品画像上における物品3の位置を特定することが容易になる。
また、第1の距離センサ14のレンズの光軸は、鉛直方向と平行であり、距離情報は、第2の距離センサ15と物品との水平方向における距離を示す情報である。この構成により、距離情報に基づき、物品画像上における物品3の位置を特定することが容易になる。
なお、上記の実施形態では、プロセッサ43は、物品3の第2の距離センサ15と対向する面の表面形状の推定結果に基づいて、物品3の第2の距離センサ15と対向していない面の表面形状を推定すると説明したが、この構成に限定されない。ピッキングシステム1は、第2の距離センサ15を2つ以上備える構成であってもよい。2つ以上の第2の距離センサ15は、例えば、かご車2が配置される位置を挟むように配置される。これにより、死角がなくなり、容易に物品3の表面形状及び位置を測定することができる。また、ロボットアーム11は、物品3を鉛直方向に持ち上げた後、鉛直方向を回転軸とする方向に360度把持機構21を回転させつつ、第2の距離センサ15により第2の距離情報を取得してもよい。この構成によると、1つの第2の距離センサ15によって、物品3の外周の表面形状及び位置を算出することができる。
また、上記の実施形態では、プロセッサ43は、第2の距離センサ15により取得した第2の距離情報に基づいて生成したマスク画像を、物品画像と対応付けて学習用データを生成すると説明した。しかし、プロセッサ43は、マスク画像を学習用データの生成に採用するか否かを判断してもよい。
図12は、学習用データの生成に関する情報処理装置12の動作の他の例について説明する為のフローチャートである。例えば、プロセッサ43は、学習用データの生成に関する図12の処理を、図4のステップS15の後段の処理として実行する。
プロセッサ43は、第2の距離情報を第2の距離センサ15から受信したか否か判断する(ステップS41)。プロセッサ43は、第2の距離情報を第2の距離センサ15から受信したと判断した場合(ステップS41、YES)、ロボットアーム11により把持した物品3が落下したか否か判断する(ステップS42)。即ち、プロセッサ43は、第2の距離センサ15により第2の距離情報を取得した対象の物品3が、ロボットアーム11によって仕分先に降ろされたか否か判断する。例えば、プロセッサ43は、ロボットアーム11のコントローラ24から、完了通知を受信した場合、物品3が、ロボットアーム11によって仕分先に降ろされたと判断する。また、プロセッサ43は、ロボットアーム11のコントローラ24から、エラーを受信した場合、物品3が、ロボットアーム11によって仕分先に降ろされず、途中で落下したと判断する。プロセッサ43は、ロボットアーム11により把持した物品3が落下したと判断した場合(ステップS42、YES)、図12の処理を終了する。
プロセッサ43は、ロボットアーム11により把持した物品3が落下していないと判断した場合(ステップS42、NO)、第2の距離情報に基づいて、マスク画像を生成する(ステップS43)。マスク画像の生成方法は、図9乃至図11で説明した方法と同様であるため、説明を省略する。
プロセッサ43は、図4のステップS11で取得した物品画像51と、図12のステップS43で生成したマスク画像81とに基づいて、図13に示す確認画面91を生成し、出力する(ステップS44)。
確認画面91は、操作端末13のディスプレイ36に表示される画面である。確認画面91には、マスク画像81を学習用データの生成に採用するか否かを、オペレータが判断する際に用いられる情報が表示される。即ち、確認画面91に表示される情報は、オペレータの判断の参考に用いられる参考情報である。確認画面91は、物品画像51、マスク画像81、採用ボタン92、及び不採用ボタン93などの表示を有する。
物品画像51は、図4のステップS11で取得した物品画像51である。マスク画像81は、図12のステップS43で生成したマスク画像81である。
採用ボタン92及び不採用ボタン93は、タッチセンサ37により選択可能なボタンである。オペレータは、確認画面91の参考情報を確認し、マスク画像81を採用するか否か判断し、採用ボタン92と不採用ボタン93とのいずれかを選択する。
プロセッサ43は、採用ボタン92と不採用ボタン93との選択結果に基づいて、マスク画像81を採用するか否か判断する(ステップS45)。
プロセッサ43は、オペレータにより不採用ボタン93が選択された場合(ステップS45、NO)、図12の処理を終了する。
また、プロセッサ43は、オペレータにより採用ボタン92が選択された場合(ステップS45、YES)、図4のステップS11で取得した物品画像51と、図12のステップS43で生成したマスク画像81とに基づいて学習用データを生成する(ステップS46)。即ち、プロセッサ43は、物品画像51を問題とし、マスク画像81を答えとした学習用データを生成する。制御部42は、生成した学習用データをストレージ装置16に送信して保存させ(ステップS47)、処理を終了する。
上記したように、プロセッサ43は、物品画像51とマスク画像81とを確認したオペレータによる操作入力に基づいて、マスク画像81を学習用データの生成に採用するか否か判断する。これにより、学習用データの答えとして適していないマスク画像が採用されることを防ぐことができる。
なお、上記の例では、プロセッサ43は、物品画像51とマスク画像81とをそれぞれ確認画面91に表示させると説明したが、この構成に限定されない。プロセッサ43は、物品画像51にマスク画像81を重ねた確認用の画像を生成し、確認画面91に表示させてもよい。
また、例えば、プロセッサ43は、図4のステップS12で、物品画像51に基づいて認識した物品領域の位置と、マスク画像81における物品領域の位置とを比較し、比較結果に基づく情報を確認画面91に表示させてもよい。例えば、プロセッサ43は、物品画像51に基づいて認識した物品領域の位置と、マスク画像81における物品領域の位置との差が、予め設定された閾値以上である場合、アラートを確認画面91に表示させてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。