以下、本発明に係る移載対象ワーク向き認識システムの一実施形態を、図面を参照して具体的に説明する。なお、以下の説明において、上下左右の方向を示す場合は、図示正面から見た場合の上下左右をいうものとする。
<移載対象ワーク向き認識システムの説明>
図1に示すように、移載対象ワーク向き認識システム1は、パレットPa上に積まれた複数の箱Wの一つをロボット2に備えた吸着ハンド20を用いてコンベアCへ移載する装置である。
ここで、この移載対象ワーク向き認識システム1の動作について、より詳しく説明すると、移載対象ワーク向き認識システム1は、まず、撮像部3を用いて、パレットPa上に積まれた複数の箱Wを撮像する。次いで、撮像した画像から情報処理装置4を用いて、箱Wの位置を認識する。この情報処理装置4は、認識したパレットPa上に積まれた箱Wの位置をプログラマブルロジックコントローラ5(以下、PLC5と呼ぶ)経由で、ロボットコントローラ6へ送信する。そして、このロボットコントローラ6は、ロボット2を制御し、パレットPa上に積まれた複数の箱Wの中から一つの箱Wをピックし、コンベアCへ移載することとなる。
次に、図1の各部について詳細に説明することとする。
ロボット2は、例えば、4自由度の垂直多関節型ロボットである。より詳しく説明すると、このロボット2は、パレットPa上に積まれた複数の箱Wを、吸着ハンド20を用いてパレットPaからコンベアCへ移載する為のロボットアームである。なお、本実施形態においては、ロボット2として、4自由度の垂直多関節型ロボットを例示したが、これに限らず、6自由度であってもよいし、直角座標型ロボット、極座標型ロボット、水平多関節型(スカラ型)ロボット、パラレルリンク型ロボットであってもよい。すなわち、パレットPa上に積まれた複数の箱WをコンベアCへ移載可能であれば、どのような形式であってもよい。
ところで、吸着ハンド20は、ロボット2のフランジに重量センサ21を介して装着するものである。より詳しく説明すると、この吸着ハンド20は、コンプレッサ7から送られる圧縮エアを吸着ハンド20内に内蔵している真空発生装置を用いて、真空を発生させパレットPa上に積まれた複数の箱Wを吸着するものである。なお、本実施形態においては、吸着することにより、複数の箱Wを移載する例を示したが、それに限らず、パレットPa上に積まれた複数の箱Wをグリッパーで挟み込むようなハンドであっても良く、パレットPa上に積まれた複数の箱Wを移載可能であれば、どのような形式のハンドでも良い。
一方、重量センサ21は、吸着ハンド20で吸着したパレットPa上に積まれた複数の箱Wの重量を計測するための静電容量型力覚センサであり、ロボット2のフランジと吸着ハンド20の間に設置される。なお、重量センサ21は、計測した値をPLC5に出力する。
撮像部3は、パレットPa上に積まれた複数の箱Wを撮影するものであって、三次元点群情報を出力可能な三次元点群計測装置である。この撮像部3は、カメラとプロジェクタを備えており、カメラとプロジェクタによるアクティブステレオ法により被写体の三次元点群情報を算出するものである。なお、カメラとプロジェクタを用いたアクティブステレオ法は、一般的な技術であるため、詳細な説明は省略する。
情報処理装置4は、図1に示すように、CPU40と、RAM41と、ROM42と、補助記憶装置43と、入出力インタフェース44と、通信インタフェース45と、表示装置46と、バス47と、入力コントローラ48と、入力装置49と、を有している。CPU40は、情報処理装置4が備える各機能を実行、制御するもので、RAM41は、外部装置などから供給されるプログラムやデータを一時記憶するものである。
一方、ROM42は、変更を必要としないプログラムや各種パラメータを格納し、補助記憶装置43は、各種情報を記憶するものである。そして、入出力インタフェース44は、外部の機器とデータの送受信を行い、通信インタフェース45は、ネットワークに接続するための装置であり、ネットワークを介して外部の機器とデータの送受信を行うものである。
一方、表示装置46は、CPU40で描画されたグラフィックスを表示し、バス47は、システムバスであり、CPU40、RAM41、ROM42、補助記憶装置43、入出力インタフェース44、通信インタフェース45、表示装置46、入力コントローラ48を接続するものである。そして、入力コントローラ48は、入力装置49からの入力信号を制御するコントローラであり、入力装置49は、ユーザからの操作指示を受け付けるための外部入力装置であり、例えば、キーボード、マウスなどである。なお、後述する情報処理装置4の機能や処理は、CPU40がROM42等に格納されているプログラムを読み出し、このプログラムを実行することにより実現することとなる。
PLC5は、情報処理装置4とロボットコントローラ6の間の命令を受け渡し、重量センサ21から重量の計測値を入力し、PLC5内臓のメモリに書き込む。そしてさらにPLC5は、コンベアCを制御し、コンベアC上に乗せた箱Wを移動するものである。
ロボットコントローラ6は、サーボアンプや基板などが収納された制御装置であり、ロボット2の動きを総合的にコントロールする装置である。また、ロボットコントローラ6は、あらかじめ作成したロボット2を制御するプログラムを記憶し、実行することができる。
コンプレッサ7は、空気を圧縮し供給する空気圧縮機であり、吸着ハンド20へ圧縮エアを供給するものである。
箱Wは、段ボールであり、パレットPa上に複数積層されているものである。なお、本実施形態においては、段ボールを例に説明するが、パレットPa上に積層可能であれば、材質は段ボール以外でも良く、例えば、プラスチックや木製であっても良く、箱形状に近似できれば袋状の物であっても良い。
パレットPaは、物流に用いる荷物を載せるための荷役台であり、パレットPaの脚と脚の間にフォークリフトやハンドリフトの爪を差し込んで持ち上げることができるものである。なお、本実施形態においては、パレットPa上に複数の箱Wを積載しているが、もちろんパレットではなくカゴ台車であってもよい。
コンベアCは、ローラーコンベアであり、ロボット2がコンベアC上へ移載した箱Wをロボット2近辺から所望の位置まで搬送するものである。なお、コンベアCは必ずしもローラ―コンベアである必要はなく、ベルトコンベアでも良い。また、コンベアCは、パレット上に積まれた複数の箱Wをロボット2の近傍から移動できれば良い。例えば、無人搬送車の上にパレットPa上に積まれた複数の箱Wを移載することで、パレットPa上に積まれた箱Wを移動してもよい。
図1に示す符号SKは、倉庫管理システムであり、倉庫管理システムSKは、倉庫の入出庫管理、在庫管理を行うシステムである。この倉庫管理システムSKは、情報処理装置4に対して、パレットPa上に積まれた複数の箱Wを何個デパレタイズするかを指示する。また、パレットPa上に積まれた複数の箱Wの種類を一意に特定するためのITFコードを情報処理装置4へ出力する。なお、情報処理装置4へのデパレタイズ指示は、必ずしも倉庫管理システムSKから指示する必要はなく、情報処理装置4の入力装置49がタッチパネルであれば、タッチパネル用いて指示してもよい。
<情報処理装置の説明>
次に、図2を用いて、本実施形態に係る情報処理装置4の機能構成について説明する。図2に示すように、情報処理装置4の機能構成としては、情報処理装置4は、判断部400と、箱情報保持部401と、設定保持部402と、箱認識部403と、ずらし判定部404と、サイズ推定部405と、箱の高さ推定部406と、移載順決定部407と、箱の向き決定部408と、コンベア上での置き位置姿勢決定部409と、ハンドの位置姿勢決定部410と、重量計測部411と、移載速度決定部412と、で構成されている。以下、各構成について説明することとする。
判断部400は、判断部400が保持する状態または、各機能ブロックが保持する状態に基づいて、各機能ブロック間との情報をやり取りし、さらに、外部機器とのやり取りも行い、倉庫管理システムSK、撮像部3、PLC5経由で、ロボット2、コンベアを制御するものである。
箱情報保持部401は、図4に示す箱情報テーブルTBLAのようにテーブル形式で情報を保持している。この箱情報テーブルTBLAのカラムは、ITFコードTBLAa、重量TBLAb、LサイズTBLAc、WサイズTBLAd、HサイズTBLAeである。ITFコードTBLAaのITFとは、Interleaved Two of Fiveの略であり、ITFコードTBLAaは、ITF-14規格のバーコードを表す値であり、箱情報テーブルTBLAはITFコードTBLAaが主キーであり、ITFコードを用いて任意のレコードを呼び出すことができる。
一方、重量TBLAbは、ITFコードTBLAa毎の箱の重量を示す値であり、単位はKgである。例えば、レコードTBLAhの箱の重さは3kgである。パレットPa上に積まれた複数の箱Wには個体差があるが、箱Wの重さは最初に計測した重量を保持する。なお、レコードTBLAf、レコードTBLAgは、まだ重量未計測のレコードである。
他方、LサイズTBLAcは、パレットPa上に積まれた箱Wの長さの値が保持されるカラムであり、長さの単位は、ミリメートルである。なお、LサイズTBLAcには最初に計測した値を保持する。同様にWサイズTBLAdは、パレットPa上に積まれた箱Wの幅の値を保持するカラムであり、HサイズTBLAeは、パレットPa上に積まれた箱Wの高さの値を保持するカラムである。なお、箱情報テーブルTBLAにおけるサイズ未計測および重量未計測のレコードには、NULLが格納されている。
設定保持部402は、処理に必要な設定値を保持するものである。この設定保持部402で保持する設定は、図5に示すような設定項目テーブルTBLBを保持している。この設定項目テーブルTBLBのカラムは、設定項目TBLBaと値TBLBbである。設定項目TBLBaは、設定項目を表す名称であり、値TBLBbは、各設定項目の値である。例えば、レコードTBLBcは、境界の明瞭度の閾値を表しており、その値は100である。
かくして、図2に示す設定保持部402は、図5に示す設定項目テーブルTBLBの設定項目TBLBaの名称をキーにして値TBLBbを呼び出すこととなる。
箱認識部403は、撮像部3から出力された距離画像に基づいて、パレットPa上に積まれた複数の箱Wの位置姿勢を認識するものである。この箱認識部403における箱認識の方法について、図6を用いて詳細に説明する。
図6(a)は、撮像部3(図2参照)が撮影した距離画像GAである。距離画像とは撮像部3からの対象までの距離を輝度に置き換えた画像であり、撮像部3に近いほど大きい値をとる画像である。なお、図6(a)に示す距離画像GAは、パレットPa上に積まれた複数の箱Wを示している。
次いで、箱認識部403は、図6(a)に示す距離画像GAについてエッジ抽出処理を行い、図6(b)に示すように、エッジ抽出処理画像GBを生成する。なお、エッジ抽出処理には、Canny法を用いる。
次いで、箱認識部403は、図6(b)に示すエッジ抽出処理画像GBについてハフ変換を用いて直線検出を行う。この直線検出した結果が、図6(c)に示す画像GCである。この画像GCのうち、図6(c)に示す符号GCaは、検出した直線である。なお、図6(c)に示すように、直線は、直線GCa以外にも存在しているが、全てに記号を付すことは省略することとする。
次いで、箱認識部403は、図6(c)に示すように、直線同士の交点を検出する。検出した交点は、例えば、GCbである。なお、図6(c)に示すように、交点は、交点GCb以外にも存在しているが、全てに記号を付すことは省略することとする。
次いで、箱認識部403は、図6(c)に示すように、検出した全ての交点に対して閉領域を検出する。検出した閉領域は、例えば、GCcである。しかして、箱認識部403は、この閉領域GCcを一つの箱Wとして認識することとなる。なお、図6(c)に示すように、閉領域は、閉領域GCc以外も検出しているが、全てに記号を付すことは省略することとする。
ずらし判定部404は、撮像部3から入力した距離画像GA(図6(a)参照)に基づいて、パレットPa上に積まれた箱Wをずらすかどうかを判定するものである。実際に、ずらし判定部404にて、パレットPa上に積まれた箱Wをずらすと判定した場合、判断部400は、PLC5経由でロボット2を制御し、パレットPa上に積まれた箱Wの一部を吸着し、パレットPa上に積まれた箱Wをずらすこととなる。
ここで、パレットPa上に積まれた箱Wをずらす必要がある理由について、図7を用いて説明する。図7(a)は、境界抽出結果である。この抽出された境界抽出結果のうち、図7(a)に示す境界Kaは、明瞭な境界であり、境界Kbは、不明瞭な境界を示している。この不明瞭な境界Kbが箱認識部403にて認識されなかった場合、図7(a)に示すように、実際の箱W(右下の箱W、右中の箱W)は別々であるが、右下の箱Wと右中の箱Wが合わさったサイズを箱WAとして認識してしまうこととなる。しかして、このように、図7(a)に示すように、箱WAと認識してしまうと、実際の吸着ハンド20(図1参照)は、箱WAの中央部分を吸着することとなる。これにより、右下の箱W、右中の箱Wを二つ一度に移載することになり、もって、箱Wを途中で落下させてしまう可能性がある。そこで、図7(b)に示すように、箱Wの端の部分Waを、吸着ハンド20で吸着して箱Wの位置を箱Wが存在しない方向へずらすようにする。これによって、箱Wの周りに明瞭な境界が出現し、箱Wを認識する確率が向上するという効果がある。なお、箱Wの端の部分Waのサイズは、ロボット2を設置した倉庫で取り扱う最小サイズの箱のサイズである。これにより、2つの箱を同時にずらしてしまう確率が減少するという効果がある。
ここで、ずらし判定の方法について説明する。
ずらし判定部404は、撮像部3から入力した距離画像GA(図6(a)参照)に対して、ラプラシアンフィルターをかける。そして、ずらし判定部404は、ラプラシアンフィルターをかけた距離画像GA(図6(a)参照)の画素値の分散を計算し、その値が閾値以下であれば、境界が不明瞭であると判定し、ずらし動作を行う。ここで用いる設定の閾値は、図5に示す、設定保持部402にて保持している設定項目テーブルTBLBの境界の明瞭度の値を読み出すことで得ることとなる。
なお、本実施形態においては、ラプラシアンフィルターを用いて、境界が不明瞭であることを判定したが、他のフィルターを用いてもよい。例えばソーベルフィルタを用いても良く、境界が不明瞭であることを判定可能であればどのようなフィルターを用いてもよい。
サイズ推定部405は、図6(c)に示す直線GCaの交点GCbに基づいて箱のサイズを推定するものである。この箱のサイズの推定は、4角形を構成する直線GCaの交点GCb間の距離を求める事で推定するものである。なお、推定する箱のサイズは、箱の上面の長さと幅であり、推定した箱のサイズの情報は、箱情報保持部401にて保持される。
箱の高さ推定部406は、パレットPa上に積まれた箱Wの高さを推定するものである。この箱の高さ推定部406にて、パレットPa上に積まれた箱Wの高さの推定方法について、図8を用いて説明する。
まず、箱の高さ推定部406は、図8(a)に示すように、パレットPa上の最上段に積まれた箱Wの上面の高さを求める。ここで、箱の高さ推定部406は、パレットPa上の最上段に積まれた箱Wの上面の高さH1を求める為に、箱認識部403にて認識した箱の認識情報を用いる。そして、箱の高さ推定部406は、箱の認識情報に基づいて、パレットPa上の最上段に積まれた箱W上面の三次元点群を抽出し、三次元点群における撮像部3に設定した座標系30のZ軸方向の値の平均を、パレットPa上の最上段に積まれた箱Wの上面の高さH1とする。
次いで、図8(b)に示すように、パレットPa上の左最上段に積まれた箱Wをロボット2により、撮像部3の撮影範囲外へ移動した状態で、座標系30において箱Wの上面を構成する四角形のXYの座標が略同一でかつZ軸方向の位置がプラス方向に存在する三次元点群を抽出する。そして、同様に抽出した三次元点群における座標系30におけるZ軸方向の値の平均をパレットPa上の左最上段に積まれた箱Wの底面の高さH2とする。これにより、図8(b)に示す高さH1から高さH2を差し引けば、箱Wの高さHAの値が算出されることとなる。しかして、このように箱の高さを推定することにより、撮像部3以外のセンサを用いることなく、箱の高さが推定できるため、装置が簡略になるという効果がある。
移載順決定部407は、箱認識部403で認識した箱の移載順番を決めるものである。この移載順決定部407で決定する箱の移載順の決定方法について、図9を用いて説明する。
図9は、パレットPa上に積まれた複数の箱Wを撮像部3の座標系30のZ軸プラス方向から見た図である。移載順決定部407は、コンベアCと箱認識部403で認識した箱の座標系30におけるXY平面上の距離に基づいて移載順番を決定する。コンベアCと箱認識部403で認識した箱の距離とは、コンベアC上に定義したプレース位置Caと、認識した箱の中心、例えばO1、O2である。ここで、プレース位置Caと箱の中心O1、O2との距離は、それぞれ距離L1,L2である。距離L1と距離L2を比べた時、距離L1の方が短いため、移載順番は、中心O1を有する箱Wが先になる。同様に、パレットPa上に積まれた複数の箱Wの他の箱Wの移載順番もプレース位置Caとの距離によって決定する。しかして、このように、プレース位置Caと箱Wの中心との距離により移載順番を決定することで、ロボット2の移載時間を削減することができるという効果がある。また、ロボット2の移載時間を削減することで、箱Wを移載する時に箱Wが落下する可能性が減少するという効果もある。
箱の向き決定部408は、サイズ推定部405で推定した箱のサイズに基づいて箱Wの向きを決定するものである。ここで、箱の向きの決定とは、箱Wに対して箱座標系を対応付ける事である。この箱Wの向きは、箱Wの上面の長辺と短辺の長さに基づいて決定する。この箱の向き推定について、図10(a)を用いて説明する。
図10(a)に示す箱Wにおいて、この箱Wの長辺はWLa、短辺はWHaである。そして、箱Wの向きは、箱座標系WZaによって定義する。箱座標系WZaのX軸は箱Wにおける長辺WLaと平行に設定し、箱座標系WZaのY軸は、箱Wの短辺WHaと平行に設定する。そして、箱座標系WZaのZ軸は、箱Wの内側の方向に定義する。また、箱座標系WZaの原点は、箱Wの上面の四角形の重心に設定する。
しかして、このように、箱Wの向きを箱のサイズに基づいて決定することで、ITFコードが印刷された箱であれば、少なくとも、長辺に属する面にバーコードがある場合が多いため、箱WをコンベアCに配置するときに箱Wの向きを毎回同じ向きに置くことで複数のバーコードリーダを置く必要がなくなり、もって、機器の構成が単純になるという効果がある。
コンベア上での置き位置姿勢決定部409は、箱の高さ推定部406で推定した箱の高さの値、箱の向き決定部408で決定した箱Wの箱座標系WZa(図10(a)参照)の情報に基づいて、箱WのコンベアC上での置き位置を決定する。ここで、箱WのコンベアC上での置き位置の決定とは、コンベアC上に定義されたコンベア座標系に対して、箱の向き決定部408で決定した、箱Wの箱座標系WZa(図10(a)参照)の位置姿勢を決定することである。この点、図10(b)を用いて、コンベア上での置き位置姿勢決定部409による、箱WのコンベアC上での置き位置の決定方法について説明する。
図10(b)に示す符号CZaは、コンベアC上に定義したコンベア座標系である。コンベア座標系CZaは、コンベアC上の表面の位置に定義する。このコンベア座標系CZaは、右手系の座標系であり、コンベアCの長辺方向は、コンベア座標系CZaのX軸と平行に設定し、コンベアCの短辺方向は、コンベア座標系CZaのY軸と平行に設定し、コンベアCの重力方向は、コンベア座標系CZaのZ軸と平行に設定する。これにより、箱WのコンベアC上での置き姿勢は、コンベア座標系CZaに対して箱座標系WZaはコンベア座標系CZaと同一となる。それゆえ、箱WのコンベアC上での置き位置は、コンベア座標系CZaのZ軸マイナス方向に箱の高さ推定部406で推定した箱Wの高さの値分だけ平行移動した位置となる。なお、この際、箱WのコンベアC上での置き位置は箱の高さ推定部406で推定した箱Wの高さに加えて誤差の値を考慮しあらかじめ計算した誤差の分散に基づいて箱WのコンベアC上での置き位置を決定すると良い。しかして、このようにすることで、箱Wの箱の高さを低く推定してしまった場合に、箱W配置時に箱Wを吸着ハンド20(図1参照)によって押しつぶすリスクを低減するという効果がある。
ハンドの位置姿勢決定部410は、図10に示す箱Wの箱座標系WZaに対して、吸着ハンド20(図1参照)に定義されているハンド座標系の位置を決定するものである。ここで、図10(c)を用いて、ハンドの位置姿勢決定部410による、箱座標系WZaに対して、吸着ハンド20に定義されているハンド座標系20Zaの位置姿勢を決定する方法について説明する。
図10(c)に示すハンド座標系20Zaは、箱座標系WZaと同様、右手系の座標系である。このハンド座標系20Zaは、吸着ハンド20の上面の重心に定義されており、吸着ハンド20の上面の四角形の長辺がX軸と平行に設定され、短辺がY軸に平行に設定されている。そして、吸着ハンド20の箱Wと吸着する側に対して、Z軸方向に設定されている。ここで、箱Wに対する吸着ハンド20の姿勢は、箱座標系WZaに対してハンド座標系20Zaと同一となるから、箱Wに対する吸着ハンド20の位置は、箱座標系WZaのZ軸マイナス方向に吸着ハンド20の厚み20aの距離だけ平行移動した位置となる。
重量計測部411は、吸着ハンド20とロボット2のフランジ間に設置した重量センサ21(図1参照)が出力した値をPLC5(図1参照)経由で読み取り吸着ハンド20で吸着している箱の重量を推定し出力するものである。この重量センサ21が出力する値は、吸着ハンド20の重量も含む為、あらかじめ設定保持部402に吸着ハンド20の重量を保持して置き、重量センサ21の出力値から差し引いて出力する。
ここで、図11を用いて、重量計測部411の重量推定方法について説明する。重量計測部411は、箱Wが、吸着ハンド20に吸着した状態で、重量を計測する。また、重量計測部411は、ロボット2が静止した状態で、且つ、箱Wが静止した状態で重量を計測し、箱Wが振動している場合は、振動が収まるまで待ってから計測することとなる。しかして、このようにロボット2、及び、箱Wが静止した状態において、箱Wの重量を計測することで、箱Wの振動が箱の重量計測に与える影響を削減する事ができ、もって、重量の計測精度が向上するという効果がある。なお、重量センサ21が出力する値は、吸着ハンド20の重量も含む為、あらかじめ設定保持部402に吸着ハンド20の重量を保持して置き、重量センサ21の出力値から差し引いて出力することとなる。
移載速度決定部412は、ロボット2の吸着ハンド20の加減速度を決定するものである。決定するロボット2の加減速度は、ロボット2のフランジ部分の加減速度を表すものである。この加減速度は、ロボット2が移載する箱Wの重さに基づいて数式1によって求められることとなる。
この数1において、xは箱の重量であり単位はkgである。そして、f(x)は加減速度を表し、単位はm/s2である。
図12は、数1のグラフを表す図であり、横軸は箱Wの重量を表し、縦軸は加減速度を表している。図12に示すように、箱Wの重量の増加とともに、ロボット2の加減速度は減少し、箱Wの重量が30kgの時に、ロボット2の加減速度は、0.5 m/s2になり、箱の重量が30kg以上である場合は、ロボット2の加減速度は、 0.5m/s2固定となる。
ところで、ロボット2の移載速度の設定に加減速度を用いている理由は、加減速の大きさに応じて箱Wと吸着ハンド20との間に力が生じ、箱Wが搬送時に落下する可能性があるからである。それゆえ、箱Wの重量が重い場合にロボット2の加減速度を減少させることによって、箱Wの移載時の落下する確率が減少するという効果がある。
<情報処理装置の処理内容の説明>
次に、図3に示すフローチャートも参照し、本実施形態に示す情報処理装置4の処理内容について説明する。
まず、図2に示す判断部400は、ロボット2の姿勢をホームポジションへ戻す処理を行う(ステップS1)。
次いで、判断部400は、倉庫管理システムSKからデパレタイズの指示があった場合(ステップS2:YES)に、S3へ進み、デパレタイズの指示がない場合(ステップS2:NO)は、再度S2の処理へ戻り、倉庫管理システムSKからデパレタイズの指示を待ち続ける。
次いで、判断部400は、倉庫管理システムSKからピック対象に紐づいているITFコードと必要ピック数を入力する(ステップS3)。ここで必要ピック数とは、パレットPa上に積まれた複数の箱Wに対して、ロボット2で移載する箱の数である。
次いで、判断部400は、必要ピック数として入力した箱の数を移載したかどうかチェックする(ステップS4)。もし、必要ピック数として入力した箱の数を移載完了していた場合(ステップS4:YES)、ステップS1の処理へ戻り、そうでなければ(ステップS4:NO)、ステップS5の処理へ進む。
次いで、判断部400は、撮像部3を制御し、パレットPa上に積まれた複数の箱Wを撮影する(ステップS5)。
次いで、判断部400は、撮像部3から入力した距離画像(例えば、図6(a)に示す距離画像GA参照)を箱認識部403へ出力する。これを受けて、箱認識部403は、図6(b),(c)に示すような箱認識処理を行う(ステップS6)。
次いで、ずらし判定部404は、上記説明したように、ずらし動作を行うかどうか判断する(ステップS7)。ずらし動作を行うと判断した場合(ステップS7:YES)、ステップS8へ進み、ずらし動作を行わないと判断した場合(ステップS7:NO)、ステップS11へ進む。
次いで、判断部400は、ずらし判定部404がずらし動作を行うと判断した場合(ステップS7:YES)、ロボット2を制御し、ずらし動作を行うこととなる。
次いで、判断部400は、撮像部3を制御し、ずらし動作を行った後に、パレットPa上に積まれた複数の箱Wを再撮影する(ステップS9)。
次いで、判断部400は、撮像部3から入力した距離画像(例えば、図6(a)に示す距離画像GA参照)を箱認識部403へ出力する。これを受けて、箱認識部403は、図6(b),(c)に示すような箱認識処理を行う(ステップS10)。
次いで、サイズ推定部405は、上記説明したように、箱Wのサイズを推定し、推定した箱Wのサイズの情報を箱情報保持部401で保持する処理を行う(ステップS11)。
次いで、箱の向き決定部408は、上記説明したように、箱Wの向きを推定する処理を行う(ステップS12)。
次いで、移載順決定部407は、上記説明したように、箱認識部403で認識した箱Wの位置情報に基づいて、箱の移載順を決定する処理を行う(ステップS13)。
次いで、判断部400は、移載順決定部407で決定した移載順の最初に吸着すべき箱Wに対して、ハンドの位置姿勢決定部410の吸着ハンド20の位置姿勢情報に基づいてロボット2を制御する。これにより、ロボット2は、吸着ハンド20にて箱Wを吸着することとなる(ステップS14)。
次いで、判断部400は、箱情報保持部401を参照し、倉庫管理システムSKから入力したITFコードに対して、箱Wの高さの情報が存在するか否かを確かめる。箱の高さの情報が存在すれば(ステップS15:YES)、ステップS19へ進み、存在しなければ(ステップS15:NO)、ステップS16へ進む。
次いで、判断部400は、箱の高さの情報が存在しなければ(ステップS15:NO)、ロボット2を制御し、パレットPa上に積まれた複数の箱Wが撮影可能な位置にロボット2を退避させる(ステップS16)。
次いで、判断部400は、撮像部3を制御し、パレットPa上に積まれた複数の箱Wを撮影する(ステップS17)。
次いで、箱の高さ推定部406は、撮像部3から入力した2つの距離画像に基づいて箱の高さを算出し、算出した箱の高さを、箱情報保持部401に格納されている図4に示す箱情報テーブルTBLAの対応するITFコードTBLAaのレコードに保存する処理を行う(ステップS18)。
次いで、判断部400は、箱情報保持部401を参照し、倉庫管理システムSKから入力したITFコードに対して重量の情報が存在するか否かを確かめる(ステップS19)。重量の情報が存在すれば(ステップS19:YES)、ステップS22へ進み、存在しなければ(ステップS19:NO)、ステップS20へ進む。
次いで、判断部400は、重量の情報が存在しなければ(ステップS19:NO)、ロボット2を制御し、吸着している箱Wを、あらかじめ設定した重量計測位置で静止させる(ステップS20)。
次いで、重量計測部411は、重量センサ21の箱の重量の情報を、PLC5経由で読み取り、箱情報保持部401に格納されている図4に示す箱情報テーブルTBLAの対応するITFコードTBLAaのレコードに保存する(ステップS21)。
次いで、移載速度決定部412は、上記説明したように、箱情報保持部401より箱の重量の情報を読み出し、箱の重量に基づいて移載時の加減速度を決定する(ステップS22)。
次いで、コンベア上での置き位置姿勢決定部409は、上記説明したように、コンベアC上での箱Wの置き位置を決定し、その決定した情報を、判断部400へ出力する(ステップS23)。
次いで、判断部400は、ロボット2を制御し、コンベア上での置き位置姿勢決定部409で決定したコンベアCの上での箱Wの置き位置に対して、移載速度決定部412で決定した加減速度で箱Wを移載し、もって、ピック数を1つ減少させる(ステップS24)。
次いで、判断部400は、PLC5を介して、コンベアCを制御し、コンベアC上に置かれた箱Wを倉庫へ移送することとなる(ステップS25)。そして、この処理を終えた後、ステップS4の処理へ戻ることとなる。
<箱の向き認識に関する説明>
ここで、本実施形態の特徴とするところは、箱の向き決定部408の処理内容に関するところであるため、この点、以下、詳しく説明することとする。
上記説明したように、箱の向き決定部408は、図3に示すステップS12にて、箱Wの上面の長辺と短辺の長さに基づいて、箱Wの向きを決定するものである。この際、箱Wの長辺側と短辺側の向きを正しく認識する必要がある。この点、以下、詳しく説明する。
通常、図13に示すように、ITFコードが印刷された箱Wの場合、長辺WLaに属する面に箱の識別情報を表すバーコードBCが付与されている。そして、このバーコードBCは、図13(a)に示すように、矢印Y10方向に移動するコンベアCの長手方向一方の側面(図示では、上側)に設けられているバーコードリーダBRにて読み取られるか、又は、図13(b)に示すように、矢印Y10方向に移動するコンベアCの長手方向両側面(図示では、上下側)に設けられているバーコードリーダBRにて読み取られることとなる。
かくして、バーコードリーダBRにてバーコードBCを読み取れるようにするため、箱WをコンベアCに配置する際、コンベアCの長手方向側面に、箱Wの長辺WLaが位置するように配置する必要がある。
しかしながら、箱Wの上面が正方形に近い形状の場合、測定誤差などにより、箱Wの長辺WLa、短辺WHaを誤って認識してしまうと、図13(a),図13(b)に示す右から2番目の箱Wのように、コンベアCの長手方向側面に、箱Wの短辺WHaが位置するように配置してしまう可能性がある。これにより、バーコードリーダBRにてバーコードBCを読み取ることができなくなるという問題があった。
そこで、本実施形態においては、上記のような問題を解決すべく、箱の向き決定部408にて、以下のような処理を行っている。
まず、箱Wの形について、図14を用いて詳しく説明する。箱Wは、図14に示すように、底部W1が有底で、上部W2が開放された六面体形状(直方体形状又は立方体形状)からなる。そして、その箱Wの上部W2は、幅面W4の上部に連なって設けられている内フラップW5を内方向に折り畳み、さらに、長さ面W6の上部に連なって設けられている外フラップW7を内方向に折り畳むことにより閉止されるようになっている。
かくして、このように内フラップW5及び外フラップW7にて上部W2が閉止された箱Wの上面は、三次元点群情報を出力可能な撮像部3にて図15に示すように撮像されることとなる。すなわち、図15(a)に示すように、テープが貼着されていない場合、箱Wの上面WTは、一対の外フラップW7の境界線W7aが見えることとなる。また、図15(b)に示すように、一対の外フラップW7の境界線W7aに沿って、非透明テープTPaが貼着されていた場合、箱Wの上面WTは、非透明テープTPaのエッジTPa1が見えることとなる。さらに、図15(c)に示すように、一対の外フラップW7の境界線W7aに沿って、透明テープTPbが貼着されていた場合、箱Wの上面WTは、一対の外フラップW7の境界線W7a、及び、透明テープTPbのエッジTPb1が見えることとなる。そしてさらに、図15(d)に示すように、一対の外フラップW7の境界線W7aに沿って、非透明テープTPaが貼着され、一対の外フラップW7の境界線W7aと直交する箱Wの上面WTの両側面にそれぞれ、非透明テープTPcが貼着されていた場合、箱Wの上面WTは、非透明テープTPaのエッジTPa1、及び、非透明テープTPcのエッジTPc1が見えることとなる。なお、図示はしないが、図15(d)に示すような状態にテープを貼着する場合、非透明テープに代えて透明テープにすることも可能である。その場合、箱Wの上面WTは、一対の外フラップW7の境界線W7a、及び、透明テープのエッジが見えることとなる。
しかして、本実施形態においては、箱の向き決定部408にて、上記のような箱Wの上面WTの状態を認識することにより、箱Wの長辺と短辺の向きを正確に認識するようにしている。この点、主として、図21~図27に示すフローチャート図を参照して具体的に説明する。なお、この処理内容を説明するにあたり、図15(d)に示す箱Wの上面WTの状態を用いて説明することとする。
図21に示すように、箱の向き決定部408は、まず、撮像部3にて出力された三次元点群情報に基づいて、箱Wの外形Lx,Lyを計測する(ステップS120)。より詳しく説明すると、図16に示す箱Wの上面WTは、一対の外フラップW7の境界線W7aに沿って、非透明テープTPaが貼着され、一対の外フラップW7の境界線W7aと直交する箱Wの上面WTの両側面にそれぞれ、非透明テープTPcが貼着されているもので、このような箱Wの上面WTの外形として、図示右側に向かってX軸方向をとり、図示下側に向かってY軸方向をとり、X軸方向に沿う辺をLx、Y軸方向に沿う辺をLyとした際、箱の向き決定部408は、このLx,Lyを、撮像部3にて出力された三次元点群情報に基づいて、計測することとなる。
次いで、箱の向き決定部408は、計測したLxから計測したLyを減算(Lx-Ly)し、その減算した値が予め設定しておいた閾値より大きいか否かを確認する(ステップS121)。予め設定しておいた閾値より大きければ(ステップS121:YES)、計測したLxを長辺と判定し(ステップS122)、処理を終える。
一方、予め設定しておいた閾値より小さければ(ステップS121:NO)、箱の向き決定部408は、計測したLxから計測したLyを減算(Lx-Ly)した値が予め設定しておいた閾値より小さいか否かを確認する(ステップS123)。予め設定しておいた閾値より小さければ(ステップS123:YES)、計測したLyを長辺と判定し(ステップS124)、処理を終える。
一方、予め設定しておいた閾値より大きければ(ステップS123:NO)、箱の向き決定部408は、箱Wの上面WTが正方形に近い形状であると判定し、一対の外フラップW7の境界線W7a(図15参照)の方向を認識する処理を行う(ステップS125)。なお、このステップS125の処理の詳細については、後述することとする。
次いで、箱の向き決定部408は、一対の外フラップW7の境界線W7aの方向がX軸方向であると認識したか否かを確認する(ステップS126)。X軸方向と認識していれば(ステップS126:YES)、計測したLxを長辺と判定し(ステップS127)、処理を終える。
一方、X軸方向と認識していなければ(ステップS126:NO)、箱の向き決定部408は、一対の外フラップW7の境界線W7aの方向がY軸方向であると認識したか否かを確認する(ステップS128)。Y軸方向と認識していれば(ステップS128:YES)、計測したLyを長辺と判定し(ステップS129)、処理を終える。
一方、Y軸方向と認識していなければ(ステップS128:NO)、箱の向き決定部408は、異常が発生したことを表示装置46(図1参照)に報知し(ステップS130)、処理を終える。これにより、箱Wの長辺側と短辺側の向きを正しく認識できていなことを早期に知らせることができる。
<外フラップ方向認識処理の説明>
ここで、図22を参照して、図21に示すステップS125の処理の詳細を説明することとする。
図22に示すように、箱の向き決定部408は、まず、テープのエッジを検出することによって外フラップの境界線の方向を認識する第1認識処理を行う(ステップS140)。具体的には、図23に示す処理を行う。
<第1認識処理の説明>
図23に示すように、箱の向き決定部408は、Y方向エッジ検出領域を設定する処理を行う(ステップS200)。具体的には、図17(a-1)に示すように、箱Wの上面WT中央部分に、非透明テープTPcを含まないようにX軸方向の幅AR1、非透明テープTPaのY軸方向の幅より広くなるようにY軸方向の幅AR2としたY方向エッジ検出領域を設定する。
次いで、箱の向き決定部408は、ソーベルフィルタ等を用いて、図17(a―1)に示すY方向エッジ検出領域のエッジ抽出処理を行う(ステップS201)。
次いで、箱の向き決定部408は、上記エッジ抽出処理結果に基づき、下記、数2を用いて、図17(a-2)に示すようなヒストグラムを作成する(ステップS202)。
次いで、箱の向き決定部408は、上記作成したヒストグラム(hx(y))に基づき、最大値を取得(hx_max)する(ステップS203)。
次いで、箱の向き決定部408は、X方向エッジ検出領域を設定する処理を行う(ステップS204)。具体的には、図17(b-1)に示すように、図17(a-1)に示す領域を90度回転させたものをX方向エッジ検出領域として設定する。
次いで、箱の向き決定部408は、ソーベルフィルタ等を用いて、図17(b-2)に示すX方向エッジ検出領域のエッジ抽出処理を行う(ステップS205)。
次いで、箱の向き決定部408は、上記エッジ抽出処理結果に基づき、下記、数3を用いて、図17(b-2)に示すようなヒストグラムを作成する(ステップS206)。
次いで、箱の向き決定部408は、上記作成したヒストグラム(hy(x))に基づき、最大値を取得(hy_max)する(ステップS207)。
次いで、箱の向き決定部408は、ステップS203にて取得した最大値(hx_max)と、ステップS207にて取得した最大値(hy_max)とを比較する処理を行う(ステップS208)。ステップS203にて取得した最大値(hx_max)がステップS207にて取得した最大値(hy_max)より大きければ(ステップS208:YES)、非透明テープTPaがX軸方向に沿って貼着されている可能性が高いことから、一対の外フラップW7の境界線W7aがX軸方向である可能性があると判断し、下記数4に示すように、第1変数(r1)にステップS203にて取得した最大値(hx_max)に係数(k1)を乗算した値を設定し(ステップS209)、処理を終える。
なお、この係数(k1)は、後述する第2認識処理、後述する第3認識処理、後述する第4認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
一方、ステップS203にて取得した最大値(hx_max)がステップS207にて取得した最大値(hy_max)より大きくなければ(ステップS208:NO)、非透明テープTPaがY軸方向に沿って貼着されている可能性が高いことから、一対の外フラップW7の境界線W7aがY軸方向である可能性があると判断し、下記数5に示すように、第1変数(r1)にステップS207にて取得した最大値(hy_max)の負の値に係数(k1)を乗算した値を設定し(ステップS210)、処理を終える。
なお、この係数(k1)は、後述する第2認識処理、後述する第3認識処理、後述する第4認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
<外フラップ方向認識処理の説明>
次いで、箱の向き決定部408は、上記のような第1認識処理を終えた後、輝度値を用いることで、外フラップの境界線の方向を認識する第2認識処理を行う(ステップS141)。具体的には、図24に示す処理を行う。なお、輝度値を用いる理由としては、箱Wの上面WTに光が当たると、テープ部分の反射率が、テープが貼着されてない部分の反射率に比べて高くなる性質があることから、これを利用すれば、テープが貼着されている位置が分かるため、第2認識処理では、輝度値を用いるようにしている。
<第2認識処理の説明>
図24に示すように、箱の向き決定部408は、X軸方向テープ認識領域を設定する処理を行う(ステップS300)。具体的には、図18(a)に示すように、箱Wの上面WT中央部分に、Lx,Lyより小さいX軸方向の幅AR3、非透明テープTPaのY軸方向の幅より小さくなるようにY軸方向の幅AR4としたX軸方向テープ認識領域を設定する。
次いで、箱の向き決定部408は、上記設定したX軸方向テープ認識領域にて、予め設定しておいた閾値より高い(明るい)輝度値の画素数(Sx)を取得する(ステップS301)。
次いで、箱の向き決定部408は、Y軸方向テープ認識領域を設定する処理を行う(ステップS302)。具体的には、図18(b)に示すように、図18(a)に示す領域を90度回転させたものをY軸方向テープ認識領域として設定する。
次いで、箱の向き決定部408は、上記設定したY軸方向テープ認識領域にて、予め設定しておいた閾値より高い(明るい)輝度値の画素数(Sy)を取得する(ステップS303)。
次いで、箱の向き決定部408は、下記、数6を用いて、正規化を行う(ステップS304)。
次いで、箱の向き決定部408は、上記正規化したSxと、Syと、を比較する処理を行う(ステップS305)。SxがSyより大きければ(ステップS305:YES)、非透明テープTPaがX軸方向に沿って貼着されている可能性が高いことから、一対の外フラップW7の境界線W7aがX軸方向である可能性があると判断し、下記数7に示すように、第2変数(r2)にSxに係数(k2)を乗算した値を設定し(ステップS306)、処理を終える。
なお、この係数(k2)は、第1認識処理、後述する第3認識処理、後述する第4認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
一方、SxがSyより小さければ(ステップS305:NO)、非透明テープTPaがY軸方向に沿って貼着されている可能性が高いことから、一対の外フラップW7の境界線W7aがY軸方向である可能性があると判断し、下記数8に示すように、第2変数(r2)にSyの負の値に係数(k2)を乗算した値を設定し(ステップS307)、処理を終える。
なお、この係数(k2)は、第1認識処理、後述する第3認識処理、後述する第4認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
<外フラップ方向認識処理の説明>
次いで、箱の向き決定部408は、上記のような第2認識処理を終えた後、輝度値差を用いることで、外フラップの境界線の方向を認識する第3認識処理を行う(ステップS142)。具体的には、図25に示す処理を行う。なお、輝度値差を用いる理由は、以下の理由によるものである。すなわち、撮像部3として2台の撮像部3を用いて三次元点群計測を行っていた場合、2台の撮像部3は、設置角度が異なっていることから、箱Wの上面WTの同じ領域を撮像していても、見え方が異なるため、輝度値差が生じることとなる。それゆえ、第3認識処理では、その輝度値差を用いるようにしている。
<第3認識処理の説明>
図25に示すように、箱の向き決定部408は、2つの撮像部3を用いて、X軸方向テープ認識領域をそれぞれ設定する処理を行う(ステップS400)。具体的には、図18(a)に示すように、箱Wの上面WT中央部分に、Lx,Lyより小さいX軸方向の幅AR3、非透明テープTPaのY軸方向の幅より小さくなるようにY軸方向の幅AR4としたX軸方向テープ認識領域を設定する。
次いで、箱の向き決定部408は、上記設定したX軸方向テープ認識領域にて、2つの撮像部3それぞれにて撮像した輝度値の差が予め設定しておいた閾値以上である画素数(Sx)を取得する(ステップS401)。
次いで、箱の向き決定部408は、Y軸方向テープ認識領域を設定する処理を行う(ステップS402)。具体的には、図18(b)に示すように、図18(a)に示す領域を90度回転させたものをY軸方向テープ認識領域として設定する。
次いで、箱の向き決定部408は、上記設定したY軸方向テープ認識領域にて、2つの撮像部3それぞれにて撮像した輝度値の差が予め設定しておいた閾値以上である画素数(Sy)を取得する(ステップS403)。
次いで、箱の向き決定部408は、下記、数9を用いて、正規化を行う(ステップS304)。
次いで、箱の向き決定部408は、Sxと、Syとを比較する処理を行う(ステップS405)。SxがSyより大きければ(ステップS405:YES)、非透明テープTPaがX軸方向に沿って貼着されている可能性が高いことから、一対の外フラップW7の境界線W7aがX軸方向である可能性があると判断し、下記数10に示すように、第3変数(r3)にSxに係数(k3)を乗算した値を設定し(ステップS406)、処理を終える。
なお、この係数(k3)は、第1認識処理、第2認識処理、後述する第4認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
一方、SxがSyより小さければ(ステップS405:NO)、非透明テープTPaがY軸方向に沿って貼着されている可能性が高いことから、一対の外フラップW7の境界線W7aがY軸方向である可能性があると判断し、下記数11に示すように、第3変数(r3)にSyの負の値に係数(k3)を乗算した値を設定し(ステップS407)、処理を終える。
なお、この係数(k3)は、第1認識処理、第2認識処理、後述する第4認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
しかして、このように、複数の撮像部3を用いた場合であっても、同じ領域の輝度値を抽出し、抽出した輝度値の差を用いることにより、箱Wの上面WTにあるテープの位置を認識することができ、もって、一対の外フラップW7の境界線W7aの方向を認識することが可能となる。
<外フラップ方向認識処理の説明>
次いで、箱の向き決定部408は、上記のような第3認識処理を終えた後、一対の外フラップW7の境界線W7aに生じる境界高さを用いることで、外フラップの境界線の方向を認識する第4認識処理を行う(ステップS143)。具体的には、図26に示す処理を行う。なお、一対の外フラップW7の境界線W7aに生じる境界高さを用いる理由としては、以下の理由によるものである。図15(a)に示すように、箱Wの上面WTにテープが貼着されていない場合で一対の外フラップW7の裏面に糊をつけ封をするような場合、一対の外フラップW7間の隙間に段差が生じることとなる。或いは、図15(a)に示すように、箱Wの上面WTにテープが貼着されていない場合で一対の外フラップW7の裏面に糊をつけ封をしないような場合、一対の外フラップW7の何れか一方が僅かに浮き上がり、そこに段差が生じることとなる。それゆえ、このような段差を利用して、第4認識処理では、一対の外フラップW7の境界線W7aに生じる境界高さを用いるようにしている。
<第4認識処理の説明>
図26に示すように、箱の向き決定部408は、撮像部3にて出力された三次元点群情報に基づいて、箱Wの上面WTの高さ(Z軸)を取得する(ステップS500)。
次いで、箱の向き決定部408は、X軸方向フラップ認識領域を設定する処理を行う。具体的には、図19(a)に示すように、箱Wの上面WT中央部分に、Lx,Lyより小さいX軸方向の幅AR5、一対の外フラップW7の境界線W7aが入る程度のY軸方向の幅AR6としたX軸方向フラップ認識領域を設定する。そしてさらに、箱の向き決定部408は、変数(Nx)に0を設定する(ステップS501)。
次いで、箱の向き決定部408は、上記設定したX軸方向フラップ認識領域内のX座標を固定し、図19(b)に示すように、Y軸方向の幅AR6の範囲で、上記ステップS500にて取得したZ座標の最大最小差H(x)を取得する(ステップS502)。
次いで、箱の向き決定部408は、上記ステップS502にて取得したH(x)と予め設定しておいた閾値を比較する(ステップS503)。H(x)が予め設定しておいた閾値より大きければ(ステップS503:YES)、変数(Nx)をインクリメント(+1)し(ステップS504)、ステップS505の処理に進む。
一方、H(x)が閾値より小さければ(ステップS503:NO)、ステップS505の処理に進む。
かくして、箱の向き決定部408は、ステップS505の処理にて、固定したX座標位置がX軸方向の幅AR5の最大にまで達したか否かを確認する(ステップS505)。最大にまで達していなければ(ステップS505:NO)、固定したX座標位置を移動させ(ステップS506)、ステップS502の処理に戻る。
一方、最大にまで達していれば(ステップS505:YES)、箱の向き決定部408は、Y軸方向フラップ認識領域を設定する処理を行う。具体的には、図20(a)に示すように、図19(a)に示す領域を90度回転させたものをY軸方向フラップ認識領域として設定する。そしてさらに、箱の向き決定部408は、変数(Ny)に0を設定する(ステップS507)。
次いで、箱の向き決定部408は、上記設定したY軸方向フラップ認識領域内のY座標を固定し、図20(b)に示すように、X軸方向のAR6の範囲で、上記ステップS500にて取得したZ座標の最大最小差H(y)を取得する(ステップS508)。
次いで、箱の向き決定部408は、上記ステップS508にて取得したH(y)と予め設定しておいた閾値を比較する(ステップS509)。H(y)が閾値より大きければ(ステップS509:YES)、変数(Ny)をインクリメント(+1)し(ステップS510)、ステップS511の処理に進む。
一方、H(y)が閾値より小さければ(ステップS509:NO)、ステップS511の処理に進む。
かくして、箱の向き決定部408は、ステップS511の処理にて、固定したY座標位置がY軸方向の幅AR5の最大にまで達したか否かを確認する(ステップS511)。最大にまで達していなければ(ステップS511:NO)、固定したY座標位置を移動させ(ステップS512)、ステップS508の処理に戻る。
一方、最大にまで達していれば(ステップS511:YES)、箱の向き決定部408は、下記、数12を用いて、正規化を行う(ステップS513)。
次いで、箱の向き決定部408は、Nxと、Nyとを比較する処理を行う(ステップS514)。NxがNyより大きければ(ステップS514:YES)、一対の外フラップW7の境界線W7aがX軸方向である可能性があると判断し、下記数13に示すように、第4変数(r4)にNxに係数(k4)を乗算した値を設定し(ステップS515)、処理を終える。
なお、この係数(k4)は、第1認識処理、第2認識処理、第3認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
一方、NxがNyより小さければ(ステップS514:NO)、一対の外フラップW7の境界線W7aがY軸方向である可能性があると判断し、下記数14に示すように、第4変数(r4)にNyの負の値に係数(k4)を乗算した値を設定し(ステップS516)、処理を終える。
なお、この係数(k4)は、第1認識処理、第2認識処理、第3認識処理にて行う処理方法がそれぞれ異なるため、その調整のためのものである。
<外フラップ方向認識処理の説明>
次いで、箱の向き決定部408は、上記のような第4認識処理を終えた後、第0変数(r0)に、ステップS140で算出した第1変数(r1)と、ステップS141で算出した第2変数(r2)と、ステップS142で算出した第3変数(r3)と、ステップS143で算出した第4変数(r4)とを加算した値を設定する(ステップS144)。
次いで、箱の向き決定部408は、第0変数(r0)の値と予め設定しておいた閾値を比較する(ステップS145)。第0変数(r0)の値が予め設定しておいた閾値より大きければ(ステップS145:YES)、一対の外フラップW7の境界線W7aの方向がX軸方向であると判定し(ステップS146)、処理を終える。
一方、第0変数(r0)の値が予め設定しておいた閾値より小さければ(ステップS145:NO)、箱の向き決定部408は、第0変数(r0)の値と予め設定しておいた閾値の負の値を比較する(ステップS147)。第0変数(r0)の値が予め設定しておいた閾値の負の値より小さければ(ステップS147:YES)、一対の外フラップW7の境界線W7aの方向がY軸方向であると判定し(ステップS148)、処理を終える。
一方、第0変数(r0)の値が予め設定しておいた閾値の負の値より大きければ(ステップS147:NO)、箱の向き決定部408は、一対の外フラップW7の境界線W7aがないと判定し(ステップS149)、処理を終える。
かくして、このようにして、箱の向き決定部408は、図21に示すステップS125の処理にて、一対の外フラップW7の境界線W7aの方向を認識する処理を行うこととなる。
しかして、このように、一対の外フラップW7の境界線W7aの方向を認識する処理を行うにあたって、複数の認識処理(本実施形態では、第1認識処理~第4認識処理を例示)を行うようにすれば、様々な箱Wの上面WTの状態(図15参照)に対応することができ、もって、箱Wの長辺側と短辺側の向きをより正確に認識することができる。
しかして、以上説明した本実施形態によれば、箱Wの上面WTが正方形に近い形状の場合であっても、箱Wの長辺側と短辺側の向きを正確に認識することができる。
また、本実施形態によれば、箱Wの外形サイズをデータベースに予め登録することなく、画像認識のみで箱Wの外形サイズ、外フラップW7の方向を認識することができるため、データベースに登録する手間を省くことができる。
なお、本実施形態にて例示した内容は、あくまで一例であり、特許請求の範囲に記載された本発明の要旨の範囲内において種々の変形・変更が可能である。
例えば、本実施形態においては、複数の認識処理として、第1認識処理~第4認識処理を例示したが、それに限らず、第1認識処理と第4認識処理のみを行なったり、第2認識処理~第4認識処理を行なったり、或いは、第1認識処理~第4認識処理に加え、第5認識処理(例えば、図15(a)に示すように、箱Wの上面WTにテープが貼着されていない場合、上述したように、外フラップW7の境界線W7aの部分に段差が生じることから、三次元点群情報から隣接点との奥行き値の差分が大きい点群を抽出し、デプスエッジ等の特徴が明確に出ている箇所を認識するようにしても良い)を行なったりしても良い。すなわち、複数の認識処理として、2つ以上の認識処理を行なえばどのようなものでも良い。
一方、本実施形態においては、図21に示すステップS125における外フラップ方向認識処理として、図22に示すフローチャート図を例示したが、それに限らず、図27に示すフローチャート図のように処理しても良い。以下、この点について説明することとする。なお、図22で示した処理内容と同一の処理内容については、同一の符号を付し、説明は省略することとする。
図27に示すように、箱の向き決定部408は、まず、テープのエッジを検出することによって外フラップの境界線の方向を認識する第1認識処理を行う(ステップS140)。
次いで、箱の向き決定部408は、第1変数(r1)の値と予め設定しておいた第1変数(r1)に対する閾値を比較する(ステップS1400)。第1変数(r1)の値が予め設定しておいた第1変数(r1)に対する閾値より大きければ(ステップS1400:YES)、一対の外フラップW7の境界線W7aの方向がX軸方向であると判定し(ステップS1401)、処理を終える。
一方、第1変数(r1)の値が予め設定しておいた第1変数(r1)に対する閾値より小さければ(ステップS1400:NO)、箱の向き決定部408は、第1変数(r1)の値と予め設定しておいた第1変数(r1)に対する閾値の負の値を比較する(ステップS1402)。第1変数(r1)の値が予め設定しておいた第1変数(r1)に対する閾値の負の値より小さければ(ステップS1402:YES)、一対の外フラップW7の境界線W7aの方向がY軸方向であると判定し(ステップS1403)、処理を終える。
一方、第1変数(r1)の値が予め設定しておいた第1変数(r1)に対する閾値の負の値より大きければ(ステップS1402:NO)、箱の向き決定部408は、輝度値を用いることで、外フラップの境界線の方向を認識する第2認識処理を行う(ステップS141)。
次いで、箱の向き決定部408は、第2変数(r2)の値と予め設定しておいた第2変数(r2)に対する閾値を比較する(ステップS1404)。第2変数(r2)の値が予め設定しておいた第2変数(r2)に対する閾値より大きければ(ステップS1404:YES)、一対の外フラップW7の境界線W7aの方向がX軸方向であると判定し(ステップS1405)、処理を終える。
一方、第2変数(r2)の値が予め設定しておいた第2変数(r2)に対する閾値より小さければ(ステップS1404:NO)、箱の向き決定部408は、第2変数(r2)の値と予め設定しておいた第2変数(r2)に対する閾値の負の値を比較する(ステップS1406)。第2変数(r2)の値が予め設定しておいた第2変数(r2)に対する閾値の負の値より小さければ(ステップS1406:YES)、一対の外フラップW7の境界線W7aの方向がY軸方向であると判定し(ステップS1407)、処理を終える。
一方、第2変数(r2)の値が予め設定しておいた第2変数(r2)に対する閾値の負の値より大きければ(ステップS1406:NO)、箱の向き決定部408は、輝度値差を用いることで、外フラップの境界線の方向を認識する第3認識処理を行う(ステップS142)。
次いで、箱の向き決定部408は、第3変数(r3)の値と予め設定しておいた第3変数(r3)に対する閾値を比較する(ステップS1408)。第3変数(r3)の値が予め設定しておいた第3変数(r3)に対する閾値より大きければ(ステップS1408:YES)、一対の外フラップW7の境界線W7aの方向がX軸方向であると判定し(ステップS1409)、処理を終える。
一方、第3変数(r3)の値が予め設定しておいた第3変数(r3)に対する閾値より小さければ(ステップS1408:NO)、箱の向き決定部408は、第3変数(r3)の値と予め設定しておいた第3変数(r3)に対する閾値の負の値を比較する(ステップS1410)。第3変数(r3)の値が予め設定しておいた第3変数(r3)に対する閾値の負の値より小さければ(ステップS1410:YES)、一対の外フラップW7の境界線W7aの方向がY軸方向であると判定し(ステップS1410)、処理を終える。
一方、第3変数(r3)の値が予め設定しておいた第3変数(r3)に対する閾値の負の値より大きければ(ステップS1410:NO)、箱の向き決定部408は、一対の外フラップW7の境界線W7aに生じる境界高さを用いることで、外フラップの境界線の方向を認識する第4認識処理を行う(ステップS143)。
次いで、箱の向き決定部408は、第4変数(r4)の値と予め設定しておいた第4変数(r4)に対する閾値を比較する(ステップS1412)。第4変数(r4)の値が予め設定しておいた第4変数(r4)に対する閾値より大きければ(ステップS1412:YES)、一対の外フラップW7の境界線W7aの方向がX軸方向であると判定し(ステップS1413)、処理を終える。
一方、第4変数(r4)の値が予め設定しておいた第4変数(r4)に対する閾値より小さければ(ステップS1412:NO)、箱の向き決定部408は、第4変数(r4)の値と予め設定しておいた第4変数(r4)に対する閾値の負の値を比較する(ステップS1414)。第4変数(r4)の値が予め設定しておいた第4変数(r4)に対する閾値の負の値より小さければ(ステップS1414:YES)、一対の外フラップW7の境界線W7aの方向がY軸方向であると判定し(ステップS1415)、処理を終える。
一方、第4変数(r4)の値が予め設定しておいた第4変数(r4)に対する閾値の負の値より大きければ(ステップS1414:NO)、箱の向き決定部408は、一対の外フラップW7の境界線W7aがないと判定し(ステップS149)、処理を終える。
かくして、このようにしても、一対の外フラップW7の境界線W7aの方向を認識する処理を行うことができることとなる。