以下、実施形態について、図面を参照して説明する。
(第1の実施形態)
図1は、第1の実施形態に係る仕分システム1の概略的な構成例について説明する為の説明図である。
仕分システム1は、かご車2に積載された仕分対象である物品3を所定の仕分先に仕分けるシステムである。
かご車2は、物品3を収容する収容部とキャスターとが組み合わされた容器である。なお、かご車2は、仕分対象の物品3が積載される容器の一例であり、荷台、またはパレットなど、物品3を積載することができるものであれば如何なるものであってもよい。
物品3の仕分先は、例えばベルトコンベア4である。なお、仕分先は、ベルトコンベア4に限定されるものではなく、仕分用のカゴであっても良いし、作業台などであっても良い。
仕分システム1は、ロボットアーム11、情報処理装置12、及び操作端末13を備える。また、仕分システム1は、距離センサ14をさらに備える。また、仕分システム1は、ストレージ15、及び学習装置16をさらに備える。ロボットアーム11、情報処理装置12、操作端末13、距離センサ14、ストレージ15、及び学習装置16は、ネットワーク17を介して互いに通信可能に構成されている。
まず、ロボットアーム11の構成について説明する。
ロボットアーム11は、かご車2に積載された物品を把持し、把持した物品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は、把持機構21に対して鉛直方向から加わる応力を検知した場合、オン信号をコントローラ24に供給する。なお、接触センサ23は、アーム機構22に対して加えられる応力も検知する構成であってもよい。
コントローラ24は、情報処理装置12から供給される動作計画に基づいて、把持機構21及びアーム機構22の動作を制御する。コントローラ24は、例えば、メモリ(図示せず)と、メモリに記憶されたプログラムを実行することにより把持機構21及びアーム機構22の動作を制御する演算素子(図示せず)とを備える。また、コントローラ24は、シーケンサとして構成されていてもよい。
動作計画は、ピッキング位置を示すピッキング位置データと、軌跡とを含む情報である。コントローラ24は、動作計画が示す軌跡を通り、動作計画のピッキング位置データが示すピッキング位置まで把持機構21を移動させる。
ピッキング位置データは、把持機構21により物品3を把持させる位置を示す情報である。例えば、ピッキング位置データは、把持機構21により物品3を把持させる場合に把持機構21を移動させる位置を示す。より具体的には、ピッキング位置データは、把持機構21の基準点の移動先の3次元空間上の座標である。なお、以下ピッキング位置データが示すピッキング位置を、単にピッキング位置と称する。
軌跡は、ロボットアーム11の把持機構21をピッキング位置まで移動させる際の経路を示す。より具体的には、軌跡は、把持機構21の基準点の移動経路を示す3次元空間上の複数の座標である。なお、ピッキング位置は、軌跡に含まれていてもよい。
把持機構21が吸着パッドとして構成されている場合、把持機構21の基準点は、例えば、吸着パッドの中心(重心)であってもよいし、吸着パッドにおける任意の点であってもよい。また、把持機構21がグリッパとして構成されている場合、把持機構21の基準点は、例えば、グリッパを構成する複数の指部の中心であってもよい。
次に、距離センサ14の構成について説明する。
距離センサ14は、対象物までの距離を計測するセンサである。距離センサ14は、対象物と距離センサ14との距離を示す点が配列された点群により構成された距離画像を取得する。即ち、距離画像は、互いに直交するx方向、y方向、z方向からなる空間における点の集合である。または、距離画像は、画素の配列上に並んだ距離値の集合である。距離センサ14は、距離画像を、ネットワーク17を介して情報処理装置12に供給する。
距離センサ14は、例えば異なる2点(瞳位置)から対象物を撮像した際の視差に基づいて対象物までの距離を計測するステレオカメラである。即ち、距離センサ14は、レンズと、レンズにより結像された光を画像に変換する撮像素子とが組み合わされた2つ以上のカメラを備える。このような構成により、距離センサ14は、上記の距離画像と同時に、色情報を有する座標(画素)が二次元的に配列されたラスタ画像を取得する。なお、ラスタ画像は、カラー画像であっても単色画像であってもよい。距離センサ14は、ラスタ画像を、ネットワーク17を介して情報処理装置12に供給する。
距離センサ14のレンズは、ロボットアーム11により持ち上げられる物品3が積載されたかご車2を含む領域を撮影することができるように画角が調整されている。例えば、距離センサ14のレンズは、光軸がかご車2の底面に対向するように調整される。例えば、距離センサ14のレンズは、距離センサ14のレンズの光軸と、上記のz方向(鉛直方向)が平行になるように調整される。即ち、距離センサ14は、かご車2の底面に対向する方向からかご車2を含む所定範囲を撮像し、距離画像、及びラスタ画像を取得する。なお、かご車2を含む所定範囲の画像をかご車画像と称する。かご車画像は、距離画像とラスタ画像とのいずれであってもよいが、本実施形態では、かご車画像は距離画像であると仮定して説明する。
なお、距離センサ14は、対象物からの光を分光し、撮像素子の異なる位置に入射させる構成であってもよい。また、距離センサ14は、レーザによる1次元スキャナであってもよい。
次に、操作端末13について説明する。
図2は、操作端末13の構成例について説明する為の説明図である。
操作端末13は、操作に基づく情報を情報処理装置12に供給する装置である。即ち、操作端末13は、情報処理装置12の操作インタフェースとして機能する。操作端末13は、通信インタフェース31、制御部32、及びタッチパネル33を備える。
通信インタフェース31は、操作端末13以外の他の機器と通信する為のインタフェースである。通信インタフェース31は、ネットワーク17を介してロボットアーム11、情報処理装置12、及び距離センサ14と通信する為の通信規格などに対応した端子及び回路を備える。通信インタフェース31は、制御部32の制御に基づいて、ロボットアーム11、情報処理装置12、及び距離センサ14などと通信する。
制御部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の構成について説明する。
図3は、情報処理装置12の構成例について説明する為の説明図である。
情報処理装置12は、ロボットアーム11に動作計画を供給する装置である。情報処理装置12は、かご車2に搭載された物品3の画像であるかご車画像を取得する。情報処理装置12は、かご車画像に写った物品3を認識する為のパラメータである画像認識パラメータを用いて、かご車画像に対して画像認識を行い、かご車画像において物品3が写った領域である物品領域を認識する。情報処理装置12は、物品領域の認識結果に基づき、ロボットアーム11により物品3を把持させる位置であるピッキング位置を決定する。情報処理装置12は、ピッキング位置と把持機構21の移動経路である軌跡とを示す動作計画を生成し、ロボットアーム11に動作計画を供給する。
また、情報処理装置12は、後述する方法によって、学習装置16に機械学習を行わせる為の学習用データを生成する。情報処理装置12は、生成した学習用データをストレージ15に供給する。
情報処理装置12は、パーソナルコンピュータ(PC)などの、データの処理及びデータの保存を行うことができる装置により構成される。情報処理装置12は、通信インタフェース41及び制御部42を備える。
通信インタフェース41は、情報処理装置12以外の他の機器と通信する為のインタフェースである。通信インタフェース41は、ネットワーク17を介してロボットアーム11、操作端末13、及び距離センサ14と通信する為の通信規格などに対応した端子及び回路を備える。通信インタフェース41は、制御部42の制御に基づいて、ロボットアーム11、操作端末13、距離センサ14、ストレージ15、及び学習装置16などと通信する。
制御部42は、種々の処理を実行する処理部である。制御部42は、プロセッサ43及びメモリ44を備える。
プロセッサ43は、演算処理を実行する演算素子である。プロセッサ43は、例えばCPUとして構成される。プロセッサ43は、メモリ44に記憶されているプログラムに基づいて種々の処理を行う。
メモリ44は、プログラム及びデータを記憶する記憶装置である。メモリ44は、例えば、読み出し専用の不揮発性メモリであるROM、データを一時的に記憶するRAM、及びデータを記憶するストレージのいずれか、または複数を備える。例えば、メモリ44は、画像認識パラメータを記憶する。
次に、ストレージ15及び学習装置16について説明する。
ストレージ15は、学習用データを記憶する記憶装置である。ストレージ15は、情報処理装置12から供給された学習用データを記憶する。ストレージ15は、学習装置16からの要求に応じて、学習用データを学習装置16に供給する。
学習装置16は、ストレージ15から学習用データを取得し、学習用データに基づいて機械学習を行うことにより画像認識パラメータを生成し、情報処理装置12に画像認識パラメータを供給する。学習装置16は、学習装置16以外の機器と通信する為の通信インタフェース、種々の処理を実行する制御部、及びメモリなどを備える。
学習装置16で用いられる学習用データは、問題と答えとを有するデータである。例えば、学習用データは、仕分対象の物品3が写ったかご車画像と、このかご車画像において仕分対象の物品が写った領域である物品領域を示す情報とを有する。かご車画像が問題に相当し、かご車画像における物品領域が答えに相当する。学習装置16は、このような学習用データに基づいて、例えばセグメーテーション用のニューラルネットワークなどにより機械学習を行うことにより、情報処理装置12がかご車画像から物体領域を認識する際に用いられる画像認識パラメータを生成する。画像認識パラメータは、セグメーテーション用のニューラルネットワークにおける重み計数である。なお、学習装置16は、学習用データを取得する毎に画像認識パラメータを生成する構成であってもよいし、取得した学習用データに基づいて生成された画像認識パラメータを用いて、既に生成した画像認識パラメータを調整(更新)する構成であってもよい。また、学習装置16は、既に生成した画像認識パラメータを調整(変更)する場合、1度に調整することができる値を制限する構成であってもよい。
次に、ロボットアーム11の動作について説明する。
図4は、ロボットアーム11の動作について説明する為のフローチャートである。
ロボットアーム11のコントローラ24は、アーム機構22及び把持機構21を距離センサ14の画角外の初期位置に移動させる(ステップS11)。例えば、コントローラ24は、アーム機構22の関節機構をアクチュエータにより可動させることにより、アーム機構22を駆動し、アーム機構22及び把持機構21を撮影範囲外に移動させる。なお、距離センサ14は、アーム機構22及び把持機構21を撮影範囲外に移動したタイミングでかご車画像を取得し、情報処理装置12に送信する。
コントローラ24は、アーム機構22及び把持機構21を撮影範囲外に移動させると、情報処理装置12から動作計画が供給されるのを待つ(ステップS12)。
コントローラ24は、情報処理装置12から動作計画が供給された場合(ステップS12、YES)、動作計画に基づき把持機構21を移動させる(ステップS13)。例えば、コントローラ24は、動作計画が示す軌跡に基づき、動作計画が示すピッキング位置まで把持機構21を移動させるように、アーム機構22を制御する。
コントローラ24は、把持機構21の位置を逐次確認し、動作計画が示すピッキング位置に到達したか否か判断する。コントローラ24は、把持機構21がピッキング位置に到達した場合、次のステップS14の処理に移行する。また、コントローラ24は、接触センサ23の検知結果(接触検知結果)を逐次確認し、把持機構21がピッキング位置に到達し、且つ接触検知結果がオンである場合に、次のステップS14の処理に移行する構成であってもよい。
コントローラ24は、把持機構21がピッキング位置に到達したと判断した場合、把持機構21により物品3を把持させる(ステップS14)。例えば把持機構21が吸着パッドとして構成されている場合、コントローラ24は、吸着パッド内を図示されない真空ポンプなどにより負圧にさせることにより、把持機構21に物品を把持させる。また例えば、把持機構21がグリッパとして構成されている場合、コントローラ24は、グリッパの指部により物品を挟ませることにより、把持機構21に物品を把持させる。
コントローラ24は、把持機構21により物品3を把持させる動作を行わせた後、物品3の把持が正常に行われたか否か判断する(ステップS15)。即ち、コントローラ24は、把持機構21により物品3を把持することができたか否か判断する。例えば、把持機構21が吸着パッドとして構成されている場合、コントローラ24は、吸着パッド内が負圧にならない場合、把持機構21により物品3を把持できていないと判断する。また、例えば、把持機構21がグリッパとして構成されている場合、コントローラ24は、グリッパにより物品3を挟むことにより、グリッパの指部に加わることが推定される応力が生じない場合、把持機構21により物品3を把持できていないと判断する。
コントローラ24は、把持機構21による物品3の把持が正常に行われたと判断した場合(ステップS15、YES)、物品3を把持した把持機構21を仕分先に応じたベルトコンベア4に対応した位置まで移動させるように、アーム機構22を制御する(ステップS16)。
コントローラ24は、把持機構21を仕分先に応じたベルトコンベア4に対応した位置まで移動させると、把持機構21による物品3の把持を解除するように把持機構21を制御し(ステップS17)、1つの物品の仕分が完了したことを示す完了通知を情報処理装置12に送信し、ステップS11の処理に移行する。これにより、把持機構21から離れた物品3が、仕分先のベルトコンベア4に投入される。さらに、コントローラ24は、アーム機構22及び把持機構21を距離センサ14の画角外に移動させ、次の動作計画の受信を待つ状態になる。
また、コントローラ24は、把持機構21による物品3の把持が正常に行われなかったと判断した場合(ステップS15、NO)、把持が正常に行われなかったことを示すエラーを情報処理装置12に送信し(ステップS18)、ステップS11の処理に移行する。
なお、ロボットアーム11のコントローラ24は、情報処理装置12から終了指示が供給された場合、アーム機構22及び把持機構21を所定の位置に移動させ、図4の処理を終了する。
次に、情報処理装置12の動作について説明する。
図5は、情報処理装置12の動作について説明する為のフローチャートである。
情報処理装置12の制御部42は、画像認識モード、手動入力モード、及び併用モードなどのモードで動作する。自身のモードは、例えばメモリ44の所定の領域の情報によって示される。自身のモードは、通信インタフェースを介して入力される情報により切り替えられる。
画像認識モードは、画像認識によってかご車画像から物品領域を認識し、ピッキング位置を決定するモードである。
手動入力モードは、操作端末13のオペレータが、操作端末13に対して入力した操作に基づいて、ピッキング位置を決定するモードである。
併用モードは、画像認識によってかご車画像から物品領域を認識し、ピッキング位置を決定し、画像認識によってかご車画像から物品領域を認識することができなかった場合、操作端末13のオペレータが操作端末13に対して入力した操作に基づいて、ピッキング位置を決定するモードである。
まず、情報処理装置12の制御部42は、自身がどのモードで動作しているのか判断する。例えば、制御部42は、自身が画像認識モードで動作しているか否か判断する(ステップS21)。また、制御部42は、自身が手動入力モードで動作しているか否か判断する(ステップS22)。また、制御部42は、自身が併用モードで動作しているか否か判断する(ステップS23)。制御部42は、画像認識モード、手動入力モード、及び併用モードのいずれでもないと判断した場合(ステップS21乃至S23、NO)、エラーであると判断し、処理を終了する。
制御部42は、自身が画像認識モードで動作していると判断した場合(ステップS21、YES)、画像認識モードに応じた処理を行い(ステップS24)、ステップS27の処理に移行する。
また、制御部42は、自身が手動入力モードで動作していると判断した場合(ステップS22、YES)、手動入力モードに応じた処理を行い(ステップS25)、ステップS27の処理に移行する。
また、制御部42は、併用モードで動作していると判断した場合(ステップS23、YES)、併用モードに応じた処理を行い(ステップS26)、ステップS27の処理に移行する。
制御部42は、かご車2が空になったか否か判断する(ステップS27)。制御部42は、画像に基づいて、かご車2が空になったか否か判断する構成であってもよいし、他の情報に基づいて、かご車2が空になったか否か判断する構成であってもよい。例えば、制御部42は、かご車画像を取得し、かご車画像に対して画像認識を行い、物品領域の検出結果に基づいて、仕分が可能な物品が存在するか否か判断する。
図6は、画像認識モードにおける情報処理装置12の動作について説明する為のフローチャートである。即ち、図6は、図5におけるステップS24に対応するフローチャートである。
画像認識モードでは、制御部42は、まず距離センサ14からかご車画像が供給されるのを待つ(ステップS31)。上記したように、距離センサ14は、ロボットアーム11により持ち上げられる物品3が搭載されたかご車2内を、ステレオカメラにより撮像して1対の画像データを取得する。さらに、距離センサ14は、1対の画像データに基づき、画像データ上の所定の領域(点)毎に距離センサ14との距離を算出し、点群データとしてのかご車画像51を生成する。距離センサ14は、生成したかご車画像51を情報処理装置12に供給する。
図7は、かご車画像51の例について説明する為の説明図である。図7に示されるように、距離センサ14は、かご車2が設置される領域を含む所定範囲が画角として設定されている。この為、かご車画像51には、かご車2及び複数の物品3が写り込んでいる。
かご車画像51には、かご車2及びかご車2内に積載された複数の物品3の面と距離センサ14との距離を示す情報が含まれている。即ち、距離センサ14が設置されている高さ、距離センサ14に用いられているレンズの焦点距離、及び距離センサ14に用いられている撮像素子の寸法が既知である場合、かご車画像51に基づき、かご車2が設置される床から複数の物品3の面までの高さが算出可能である。
情報処理装置12の制御部42は、距離センサ14からかご車画像51を取得すると、メモリ44に記憶された画像認識パラメータを用いてかご車画像51に対して画像認識を行う。これにより、制御部42は、かご車画像51内において物品3が存在する領域である物品領域を認識する(ステップS32)。具体的には、制御部42は、かご車画像51に対して、メモリ44に記憶された画像認識パラメータを用いて、物体検出またはセグメンテーション用のニューラルネットワークなどの手法を用いることにより、物品領域を認識する。例えば、制御部42は、かご車画像51において最も高い位置に存在する面に対応する領域を、物品領域として認識する。
図8は、かご車画像51内の物品領域の認識結果の例について説明する為の説明図である。図8に示されるように、かご車画像51において、最も高い位置に存在する物品3の面が物品領域52として認識されている。これにより、制御部42は、仕分対象の物品3の形状を認識する。
制御部42は、かご車画像51における物品領域52の認識結果に基づいて、ピッキング位置を決定する(ステップS33)。例えば、制御部42は、物品領域の重心(若しくは中心)の座標をピッキング位置として決定する。
図9は、かご車画像51の物品領域52の認識結果に基づいて決定されたピッキング位置53の例について説明する為の説明図である。図9に示されるように、制御部42は、物品領域52の重心をピッキング位置53として決定する。
制御部42は、決定したピッキング位置53に基づいて、動作計画を生成する(ステップS34)。例えば、制御部42は、ロボットアーム11の把持機構21を、初期位置からピッキング位置53まで他の物品3またはかご車2などに接触しないように軌跡を生成し、ピッキング位置と軌跡とを示す動作計画を生成する。さらに、制御部42は、生成した動作計画をロボットアーム11のコントローラ24に送信し(ステップS35)、処理を終了する。これにより、制御部42は、図5のステップS27の処理に移行する。
図10は、手動入力モードにおける情報処理装置12の動作について説明する為のフローチャートである。即ち、図10は、図5におけるステップS25に対応するフローチャートである。
手動入力モードでは、制御部42は、まず距離センサ14からかご車画像が供給されるのを待つ(ステップS41)。なお、手動入力モードでは、仕分対象の物品3を把持する前の状態のかご車画像を第1かご車画像と称する。即ち、制御部42は、ステップS41において、距離センサ14から第1かご車画像を取得する。なお、第1かご車画像は、図7に示すかご車画像51と同様である。
制御部42は、第1かご車画像を取得すると、ピッキング位置の入力を促す案内を出力する(ステップS42)。図11は、ピッキング位置の入力を促す入力画面61の例を示す。制御部42は、ピッキング位置の入力を促す文字列と、第1かご車画像とを入力画面61に描画する。例えば、制御部42は、入力画面61を操作端末13に送信する。これにより、制御部42は、操作端末13のオペレータに、ピッキング位置を入力することを促す。
操作端末13の制御部32は、情報処理装置12から入力画面61を受信すると、タッチパネル33のディスプレイ36に入力画面61を表示させる。さらに、制御部32は、入力画面61の表示中のタッチセンサ37による操作入力に基づいて、ピッキング位置を示す座標情報を生成する。制御部32は、ピッキング位置の座標情報を情報処理装置12に供給する。
情報処理装置12の制御部42は、操作端末13においてピッキング位置が入力されたか否か判断する(ステップS43)。制御部42は、操作端末13からピッキング位置の座標情報を受信した場合、操作端末13においてピッキング位置が入力されたと判断する。制御部42は、操作端末13からピッキング位置の座標情報を受信するまでステップS43の判断を繰り返し行う。
制御部42は、操作端末13においてピッキング位置が入力されたと判断した場合(ステップS43、YES)、操作端末13から供給されたピッキング位置の座標情報に基づいて、動作計画を生成する(ステップS44)。さらに、制御部42は、生成した動作計画をロボットアーム11のコントローラ24に送信する(ステップS45)。
制御部42は、動作計画をロボットアーム11に送信すると、ロボットアーム11の把持機構21により、物品3の把持が正常に行われたか否か判断する(ステップS46)。例えば、制御部42は、ロボットアーム11から、1つの物品の仕分が完了したことを示す完了通知を受信した場合、物品3の把持が正常に行われたと判断する。また、例えば、制御部42は、ロボットアーム11から、把持機構21による物品3の把持が正常に行われなかったことを示すエラーを受信した場合、物品3の把持が正常に行われなかったと判断する。制御部42は、物品3の把持が正常に行われなかったと判断した場合(ステップS46、NO)、ステップS41に移行し、再度第1かご車画像を取得し、ピッキング位置の入力を促す。
制御部42は、物品3の把持が正常に行われたと判断した場合(ステップS46、YES)、距離センサ14から再度かご車画像を取得する(ステップS47)。なお、物品3の把持が正常に行われたということは、第1かご車画像に写っていた仕分対象の物品3が移動されたということを示す。このように、仕分対象の物品3が移動された後のかご車画像を第2かご車画像と称する。即ち、制御部42は、ステップS47において、第2かご車画像を取得する。
次に、制御部42は、第1かご車画像と第2かご車画像との差分を検出する(ステップS48)。例えば、制御部42は、第1かご車画像と第2かご車画像との差分に基づいて、第1かご車画像と第2かご車画像との差分が存在する領域を示すマスク画像を生成する。即ち、制御部42は、ロボットアーム11により物品3を移動させる前のかご車画像と、移動させた後のかご車画像との差分に基づいて、マスク画像を生成する。
図12は、第2かご車画像55の例について説明する為の説明図である。上記したように、第2かご車画像55の撮像時には、第1かご車画像に写っていた仕分対象の物品3がかご車2から除かれている。この為、仕分対象の物品3で隠れていた箇所が第2かご車画像55に映り込む。このように、仕分対象の物品3が除かれることにより、第1かご車画像と第2かご車画像55とで差分が生じた領域を差分領域54と称する。
図13は、マスク画像71の例について説明する為の説明図である。図13の例では、マスク画像71は、差分領域54の画素値が「1」であり、その他の領域の画素値が「0」である二値画像として構成されている。なお、マスク画像71は、このような構成に限定されるものではなく、第1かご車画像と第2かご車画像とで差分が有る領域とその他の領域とを区別可能な構成であれば如何なる構成であってもよい。また、制御部42は、第1かご車画像と第2かご車画像とで差分が有る領域の輪郭を補正してマスク画像を生成する構成であってもよい。
差分領域54は、図6のステップS32の画像認識において、物品領域52として検出すべき領域に相当する。即ち、マスク画像71は、学習用データにおいて、第1かご車画像に対する答えに相当する。
制御部42は、第1のかご車画像と、マスク画像とに基づいて学習用データを生成する(ステップS49)。即ち、制御部42は、第1のかご車画像を問題とし、第1のかご車画像における仕分対象の物品3が取り除かれた後に撮像された第2のかご車画像と、第1のかご車画像との差分を示すマスク画像を答えとして、学習用データを生成する。制御部42は、生成した学習用データをストレージ15に送信し(ステップS50)、処理を終了する。これにより、制御部42は、図5のステップS27の処理に移行する。なお、制御部42は、再度ステップS25の処理を実行する場合、前回の処理において取得した第2かご車画像を第1かご車画像として用いてもよい。
図14は、併用モードにおける情報処理装置12の動作について説明する為のフローチャートである。即ち、図14は、図5におけるステップS26に対応するフローチャートである。
併用モードでは、制御部42は、まず画像認識による動作計画の生成を試み、生成した動作計画により物品3の把持が正常に行われなかった場合、手動入力に基づく動作計画の生成を行う。
まず、制御部42は、距離センサ14からかご車画像が供給されるのを待つ(ステップS61)。なお、仕分対象の物品3を把持する前の状態のかご車画像を第1かご車画像と称する。
制御部42は、距離センサ14から第1かご車画像を取得すると、メモリ44に記憶された画像認識パラメータを用いて、第1かご車画像に対して画像認識を行う。これにより、制御部42は、第1かご車画像内において、仕分対象の物品3が存在する領域である物品領域を認識する。制御部42は、この際、物品領域を認識可能か否か判断する(ステップS62)。制御部42は、物品領域を認識不可であると判断した場合(ステップS62、NO)、後述するステップS67の処理に移行する。
制御部42は、物品領域を認識可であると判断した場合(ステップS62、YES)、第1かご車画像における物品領域の認識結果に基づいて、ピッキング位置を決定する(ステップS63)。
制御部42は、決定したピッキング位置53に基づいて、動作計画を生成する。制御部42は、この際、動作計画を生成可能か否か判断する(ステップS64)。例えば、制御部42は、ロボットアーム11の把持機構21を、初期位置からピッキング位置53まで他の物品3またはかご車2などに接触しないように軌跡を生成し、ピッキング位置と軌跡とを示す動作計画を生成する。制御部42は、このような動作計画を生成することができない場合、動作計画が生成不可であると判断する。制御部42は、動作計画が生成不可であると判断した場合(ステップS64、NO)、後述するステップS67の処理に移行する。
制御部42は、動作計画が生成可であると判断した場合(ステップS64、YES)、生成した動作計画をロボットアーム11のコントローラ24に送信する(ステップS65)。
制御部42は、動作計画をロボットアーム11に送信すると、ロボットアーム11の把持機構21により、物品3の把持が正常に行われたか否か判断する(ステップS66)。制御部42は、物品3の把持が正常に行われたと判断した場合(ステップS66、YES)、処理を終了する。これにより、制御部42は、図5のステップS27の処理に移行する。
また、制御部42は、物品3の把持が正常に行われなかったと判断した場合(ステップS66、NO)、ピッキング位置の入力を促す案内を出力する(ステップS67)。例えば、制御部42は、図11で示したピッキング位置の入力を促す入力画面61を操作端末13に送信することにより、操作端末13のオペレータに、ピッキング位置を入力することを促す。
情報処理装置12の制御部42は、操作端末13においてピッキング位置が入力されたか否か判断する(ステップS68)。制御部42は、操作端末13からピッキング位置の座標情報を受信した場合、操作端末13においてピッキング位置が入力されたと判断する。制御部42は、操作端末13からピッキング位置の座標情報を受信するまでステップS68の判断を繰り返し行う。
制御部42は、操作端末13においてピッキング位置が入力されたと判断した場合(ステップS68、YES)、操作端末13から供給されたピッキング位置の座標情報に基づいて、動作計画を生成する(ステップS69)。さらに、制御部42は、生成した動作計画をロボットアーム11のコントローラ24に送信する(ステップS70)。
制御部42は、動作計画をロボットアーム11に送信すると、ロボットアーム11の把持機構21により、物品3の把持が正常に行われたか否か判断する(ステップS71)。制御部42は、物品3の把持が正常に行われなかったと判断した場合(ステップS71、NO)、ステップS67に移行し、再度ピッキング位置の入力を促す。なお、制御部42は、ステップS67に移行する際に、再度距離センサ14から第1かご車画像を取得し、取得した第1かご車画像により入力画面61の表示を更新してもよい。
制御部42は、物品3の把持が正常に行われたと判断した場合(ステップS71、YES)、距離センサ14から再度かご車画像を取得する(ステップS72)。なお、物品3の把持が正常に行われたということは、第1かご車画像に写っていた仕分対象の物品3が移動されたということを示す。このように、仕分対象の物品3が移動された後のかご車画像を第2かご車画像と称する。即ち、制御部42は、ステップS72において、第2かご車画像を取得する。
次に、制御部42は、第1かご車画像と第2かご車画像との差分を検出する(ステップS73)。例えば、制御部42は、第1かご車画像と第2かご車画像との差分に基づいて、第1かご車画像と第2かご車画像との差分が存在する領域を示すマスク画像を生成する。なお、マスク画像の生成方法は、図10の説明と同様である。
制御部42は、第1のかご車画像と、マスク画像とに基づいて学習用データを生成する(ステップS74)。即ち、制御部42は、第1のかご車画像を問題とし、第1のかご車画像における仕分対象の物品3が取り除かれた後に撮像された第2のかご車画像と、第1のかご車画像との差分を示すマスク画像を答えとして、学習用データを生成する。制御部42は、生成した学習用データをストレージ15に送信し(ステップS75)、処理を終了する。これにより、制御部42は、図5のステップS27の処理に移行する。なお、制御部42は、再度ステップS26の処理を実行する場合、前回の処理において取得した第2かご車画像を第1かご車画像として用いてもよい。
上記の様に、仕分システム1は、ロボットアーム11と情報処理装置12とを備える。ロボットアーム11は、所定範囲に置かれた物品3を把持する把持機構21と、把持機構21を移動させるアーム機構22とを有する。情報処理装置12は、ロボットアーム11にピッキング位置を供給するとともに、所定範囲の画像から物品3を認識する為の画像認識パラメータを調整する学習装置16に、学習用データを供給する。
さらに、情報処理装置12の制御部42は、操作端末13などの操作インタフェースへの入力操作に基づいて、ロボットアーム11にピッキング位置を供給することにより、所定範囲の物品3を移動させる。さらに、制御部42は、物品3が移動する前の所定範囲の画像である第1画像(第1かご車画像)と、物品3が移動した後の所定範囲の画像である第2画像(第2かご車画像)とに基づいて、学習用データを生成する。
また、制御部42は、第1かご車画像と第2かご車画像との差分に基づいて、第1かご車画像上の物品3が存在する物品領域を示すマスク画像を生成し、第1かご車画像とマスク画像とを学習用データとして生成する。
このような構成によると、ピッキング位置を操作入力で指示することにより、確実に物品3をロボットアーム11により移動させつつ、学習用データの問題と答えとを取得することができる。即ち、実際に仕分システム1を運用しつつ、少ない労力で学習用データを収集することができる。この結果、容易に学習用データを収集可能な情報処理装置12及び仕分システム1を提供することができる。また、ピッキング位置を操作入力で指示している為、ロボットアーム11による正確な処理が行われた結果を、学習用データの生成に用いることができる。この結果、正確な収容データを収集することが容易になる。
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態に係る仕分システム1の情報処理装置12は、手動入力モードにおける動作が第1の実施形態と異なる。第2の実施形態に係る仕分システム1の各構成は、第1の実施形態と同様である為、構成についての詳細な説明を省略する。
第2の実施形態に係る仕分システム1の情報処理装置12の制御部42は、物品を移動させる前のかご車画像において、物品3が存在する物品領域を入力させる。制御部42は、入力された物品領域に基づいて、ピッキング位置を決定する。さらに、制御部42は、かご車画像を問題とし、入力された物品領域を答えとして学習用データを生成し、生成した学習用データをストレージ15に供給する。
図15は、手動入力モードにおける情報処理装置12の動作について説明する為のフローチャートである。即ち、図15は、図5におけるステップS25に対応するフローチャートである。
手動入力モードでは、制御部42は、まず距離センサ14からかご車画像が供給されるのを待つ(ステップS81)。
制御部42は、かご車画像を取得すると、かご車画像上で、仕分対象の物品3が存在している物品領域の入力を促す案内を出力する(ステップS82)。図16は、物品領域の入力を促す入力画面81の例を示す。制御部42は、物品領域の入力を促す文字列と、かご車画像とを入力画面81に描画する。例えば、制御部42は、入力画面81を操作端末13に送信する。これにより、制御部42は、操作端末13のオペレータに、物品領域を入力することを促す。
操作端末13の制御部32は、情報処理装置12から入力画面81を受信すると、タッチパネル33のディスプレイ36に入力画面81を表示させる。さらに、制御部32は、入力画面81の表示中のタッチセンサ37による操作入力に基づいて、物品領域を示す情報を生成する。物品領域の情報は、上記のマスク画像であってもよいし、かご車画像上における座標の軌跡であってもよい。制御部32は、物品領域の情報を情報処理装置12に供給する。
情報処理装置12の制御部42は、操作端末13において物品領域が入力されたか否か判断する(ステップS83)。制御部42は、操作端末13から物品領域を示す情報を受信した場合、操作端末13において物品領域が入力されたと判断する。制御部42は、操作端末13から物品領域の情報を受信するまでステップS83の判断を繰り返し行う。
制御部42は、操作端末13において物品領域が入力されたと判断した場合(ステップS83、YES)、入力された物品領域に基づいて、ピッキング位置を決定する(ステップS84)。例えば、制御部42は、物品領域の重心(若しくは中心)をピッキング位置として決定する。
制御部42は、決定したピッキング位置に基づいて、動作計画を生成する(ステップS85)。さらに、制御部42は、生成した動作計画をロボットアーム11のコントローラ24に送信する(ステップS86)。
制御部42は、動作計画をロボットアーム11に送信すると、ロボットアーム11の把持機構21により、物品3の把持が正常に行われたか否か判断する(ステップS87)。例えば、制御部42は、ロボットアーム11から、1つの物品の仕分が完了したことを示す完了通知を受信した場合、物品3の把持が正常に行われたと判断する。また、例えば、制御部42は、ロボットアーム11から、把持機構21による物品3の把持が正常に行われなかったことを示すエラーを受信した場合、物品3の把持が正常に行われなかったと判断する。制御部42は、物品3の把持が正常に行われなかったと判断した場合(ステップS87、NO)、ステップS83に移行し、再度かご車画像を取得し、物品領域の入力を促す。
制御部42は、物品3の把持が正常に行われたと判断した場合(ステップS87、YES)、かご車画像と、物品領域の情報(即ちマスク画像)とに基づいて学習用データを生成する(ステップS88)。即ち、制御部42は、仕分対象の物品3が移動される前のかご車画像を問題とし、このかご車画像において仕分対象の物品3が存在する領域である物品領域を答えとして学習用データを生成する。制御部42は、生成した学習用データをストレージ15に送信し(ステップS89)、処理を終了する。これにより、制御部42は、図5のステップS27の処理に移行する。
なお、制御部42は、上記の図10または図14の処理において、第1かご車画像と第2かご車画像との差分に基づき、マスク画像を生成し、マスク画像と第1かご車画像とに基づいて、学習用データを生成すると説明したが、この構成に限定されない。制御部42は、生成したマスク画像が信頼できるものか否かに基づいて、学習用データを生成するか否か判断する構成であってもよい。
例えば、制御部42は、第1かご車画像と第2かご車画像とに基づいて推定した差分領域(物品領域)と、操作端末13への操作入力により決定したピッキング位置とに基づいて、学習用データを生成するか否か、即ち学習装置16に学習用データを供給するか否かを判断する。より具体的には、制御部42は、物品領域の重心(若しくは中心)と、ピッキング位置との差が予め設定された閾値未満である場合、第1かご車画像とマスク画像とに基づき学習用データを生成する。また、制御部42は、物品領域の略中心(若しくは重心)と、ピッキング位置との差が予め設定された閾値以上である場合、第1かご車画像とマスク画像とに基づく学習用データの生成を行わない。
例えば、図17に示されるように、ロボットアーム11により物品3が移動されず、物品3がかご車2内に落下し、物品3の位置がずれた場合、第1かご車画像と第2かご車画像との差分が、物品領域に対応しなくなる。また、ロボットアーム11により物品3が移動されたものの、他の物品3が荷崩れを起こした場合も、第1かご車画像と第2かご車画像との差分が、物品領域に対応しなくなる。このような場合、図17で示されるように、差分領域の重心91と、入力に基づき決定されたピッキング位置53とが乖離する。制御部42は、差分領域の重心91と、入力に基づき決定されたピッキング位置53との差が予め設定された閾値以上であった場合、学習装置16における機械学習の対象から外すことにより、機械学習に用いる学習用データの正確性を担保することができる。
また、制御部42は、第1かご車画像と第2かご車画像との差分に基づいて、第1かご車画像上の仕分対象の物品3が存在する物品領域を認識し、認識した物品領域に基づいて、移動させた物品3の寸法を推定し、推定結果をメモリ44に保存する構成であってもよい。このような構成によると、ロボットアーム11毎に仕分を行った物品3の寸法の統計を取ることができる。制御部42は、物品領域の輪郭と、かご車画像の画素値を利用して寸法を算出する。例えば、制御部42は、物品領域の輪郭により、物品3の縦横サイズを推定する。また、制御部42は、第1かご車画像と第2かご車画像との物品領域における画素値の差に基づき、物品3の奥行サイズを推定する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。