以下、情報処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態)
図1は、本実施の形態における情報処理システム1000のブロック図である。
図2は、本実施の形態における情報処理システム1000のカメラ2が取り付けられたフォークリフトの、フォークを下げた状態を示す図(図2(a))及びそのフォークの下面側を示す図(図2(b))である。
情報処理システム1000は、情報処理装置1及び1または2以上のカメラ2を備える。情報処理装置1及びカメラ2は、有線接続または無線接続により接続されている。情報処理装置1とカメラ2とは、有線または無線のネットワークや通信回線を介して接続されていても良い。また、情報処理システム1000は、複数のカメラ2を備えていても良い。ここでは、情報処理システム1000が、複数のカメラ2として、第一のカメラ2a、第二のカメラ2b、および第三のカメラ2cを備えている場合を例に挙げて説明する。
なお、情報処理システム1000は、カメラ2が設置されたフォークリフト3を備えていると考えてもよい。
情報処理装置1は、撮影画像受付部101、対象物識別子格納部102、場所識別子格納部103、識別子取得部104、および出力部105を備える。
カメラ2は、一以上のコードが配置された領域を撮影した撮影画像を取得し、情報処理装置1に対して出力する。コードについては後述する。撮影画像は、カメラ2が撮影した画像である。撮影画像は、通常、1または2以上のフレーム画像で構成される動画像であるが、予め指定された時間間隔を隔てて撮影された連続した複数の静止画像であっても良い。また、撮影画像は、動画像を構成する一または二以上のフレーム画像と考えてもよい。カメラ2は、例えば、CCDやCMOS等の撮像素子を備えたカメラである。カメラは動画像を撮影するカメラであっても良く、静止画像を撮影するカメラであっても良い。カメラ2は、例えば、撮影した画像である撮影画像を、情報処理装置1に対して送信するための送信部(図示せず)等を有している。無線通信により撮影画像等を送信する場合、送信部は、図示しない無線通信手段等を備えていても良い。カメラ2が送信する撮影画像のファイル形式や、圧縮方式等は問わない。
カメラ2が、画像を撮影するタイミングはどのようなタイミングであっても良い。例えば、カメラ2は、常時、画像を撮影しても良い。また、カメラ2は、フォークリフト3のフォーク3aを上昇させる際や、下降させる際に画像を撮影しても良い。フォークリフト3のフォークは、例えば、爪と呼ばれる場合もある。フォーク3aを上昇させる際や、下降させる際とは、例えば、フォークリフト3に対して、フォークリフト3のユーザが、フォークを上昇させる操作や、フォーク3aを下降させる操作を行なった時点以降の予め指定された期間等である。例えば、フォークリフト3の図示しない操作受付部が、操作レバーやボタン、ハンドル等を介して、フォークを上昇、あるいは下降させる操作を受け付けた場合に、情報処理装置1の図示しない受付部等に、フォーク3aを上昇、あるいは下降させる操作を受け付けたことを示す情報を送信するようにし、受付部がこの情報を受け付けた場合に、カメラ2が画像を撮影するようにしても良い。あるいは、操作受付部は、フォークを上昇、あるいは下降させる操作を受け付けた場合に、カメラ2に撮影を行なう指示を送信してもよい。あるいは、フォークリフト3のフォークを昇降させる制御部(図示せず)等が、フォーク3aを上昇、あるいは下降させる際に、フォーク3aを上昇、あるいは下降させることを示す情報を情報処理装置1に送信するようにし、この情報を図示しない受付部が受け付けた場合に、カメラ2が画像を撮影するようにしても良く、この情報の代わりに撮影を行なう指示を情報処理装置1に送信するようにし、この指示を図示しない受付部が受け付けた場合に、カメラ2が画像を撮影するようにしてもよい。
また、カメラ2が撮影画像を情報処理装置1に送信するタイミング等は問わない。例えば、カメラ2が撮影する画像が動画像である場合、撮影により得られた動画像や1または2以上のフレーム画像を、リアルタイムに、順次、情報処理装置1に送信してもよく、一旦、図示しない格納部に蓄積した動画像やフレーム画像を、予め指定されたタイミング等に、まとめて情報処理装置1に送信しても良い。
カメラ2は、フォークリフト3に取り付けられている。フォークリフト3は、情報処理装置1に対して撮影画像を出力する1または2以上のカメラを備えている。ここでの出力は、通常は送信である。フォークリフト3は、例えば、油圧等によって上下・傾斜できる荷受け用のフォーク3aを前面に備えた荷役自動車である。1台のフォークリフト3に対して、例えば、1または2以上のカメラ2が取り付けられている。フォークリフト3に取り付けられた1以上のカメラ2は、例えば、フォークリフト3の前方方向が撮影領域となるよう設置されている
1台のフォークリフト3に対して複数のカメラ2が、異なる領域が撮影領域となるよう設置されていても良い。例えば、フォークリフト3に取り付けられたカメラ2の一つを、上述したように第一のカメラ2aとすると、図2に示すように、第一のカメラ2aはフォークリフト3の上方(例えば屋根31等)に、その撮影領域32がフォークリフト3の前方正面の領域となるよう設置されていてもよい。例えば、第一のカメラ2aは、パレット等に載置された商品をフォークリフト3に載置する際に、積載する商品やパレットの少なくともコードが配置された領域が撮影可能となるよう設置されている。また、図2に示すように、他のカメラ2として第二のカメラ2bが、フォークリフト3の屋根31の上に、フォークリフトの前方上方の領域が撮影領域33となるよう設置されていてもよい。また、他のカメラ2として、第三のカメラ2cが、フォークリフト3のフォーク3aの下面等に、フォーク3aの下方方向が撮影領域34となるよう設置されていてもよい。
情報処理システム1000が複数のカメラ2を備えている場合、各カメラ2にはカメラ2の識別子を対応づけておくようにし、各カメラ2が送信する撮影画像等には、送信元のカメラ2が特定可能となるよう、送信元のカメラ2の識別子が含まれるようにしても良い。
情報処理装置1は、例えば、コンピュータや携帯情報端末等により実現される。情報処理装置1は、カメラ2と同じフォークリフト3に設置されていても良く、フォークリフト3に設置されていなくてもよい。例えば、情報処理装置1は、ユーザが携帯していたもよく、任意の場所にカメラ2等と通信可能となるよう設置されていても良い。
撮影画像受付部101は、フォークリフト3に設置された一以上のカメラ2が撮影した撮影画像であって、一または二以上のコードが配置された領域を撮影した撮影画像を受け付ける。例えば、撮影画像受付部101は、カメラ2が無線通信や有線通信により送信する撮影画像を受信する。
コードとは、バーコード、二次元バーコード、QRコード(登録商標)、カメレオンコード、文字列、数字列等、識別できるものであれば何でも良い。コードは、カメレオンコード等の、色の配列を識別情報として有する二次元コードであることは好適である。コードは、例えば、移動対象物や移動対象物が設置される場所やその近傍等に配置されている。コードは、移動対象物に直接印刷されていても良い。また、シートやシール等に印刷されたコードが、移動対象物や場所に添付されていても良い。
コードは、例えば、移動対象物や、場所等の、コードを用いて認識する対象と対応づけられている。具体的には、コードは、例えば、移動対象物の識別子や、場所の識別子等の、コードを用いて認識する対象の識別子と対応づけられている。移動対象物とは、例えば、フォークリフト3で移動させる対象物である。場所とは、移動対象物を移動させる際の、移動先や移動元の場所である。例えば、この場所は、倉庫や、工場の敷地内の複数の場所である。
コードが、コードを用いて認識する対象の識別子と対応づけられているということは、例えば、コードから読み出される情報が、移動対象物や場所等の認識対象の識別子と対応づけられていることであってもよい。例えば、コードから読み出される情報(例えば、コードの識別子)と、認識対象の識別子とを対応づけて有する情報を図示しない格納部等に予め格納しておくことで、コードと、認識対象の識別子とを対応づけて管理するようにしても良い。また、コードから読み出される情報自身が、認識対象の識別子であっても良い。例えば、コードから読み出される識別子が、認識対象の識別子であっても良い。
撮影画像受付部101は、一または二以上のコードが配置された領域を撮影した撮影画像として、例えば、移動対象物と対応づけられた一以上のコードが配置された領域を撮影した撮影画像を受け付ける。移動対象物と対応づけられたコードとは、このコードから読み取られる識別子が、移動対象物の識別子と対応づけられているコードであっても良く、コードから読み取られる識別子自体が、移動対象物の識別子であるコードであっても良い。ここでは、移動対象物と対応づけられたコードを、以下、対象物コードと称す。また、移動対象物の識別子を、以下、対象物識別子と称す。対象物識別子は、例えば、商品番号や、商品コード、商品の管理番号、商品名等である。また、コードから読み取られる識別子を、以下、コード識別子と呼ぶ。コード識別子は、コードと対応づけられた識別子の一つである。
また、撮影画像受付部101は、一以上のコードが配置された領域を撮影した撮影画像として、例えば、場所と対応づけられた一以上のコードが配置された領域を撮影した撮影画像を受け付けてもよい。場所と対応づけられたコードとは、コードから読み取られる識別子であるコード識別子が、場所の識別子と対応づけられているコードであっても良く、コードから読み取られる識別子自体が、場所の識別子であるコードであっても良い。場所と対応づけられたコードを、以下、場所コードと称す。また、場所の識別子を、以下、場所識別子と称す。場所識別子は、例えば、場所名や、エリアに割り当てられたエリアコード等である。
対象物コードと場所コードとは、通常は、同じ体系を有するコードであるが、異なる体系を有するコードであっても良い。同じ体系を有するコードは、例えば、同じ種類のコードや、同じ属性を有するコードである。同じ種類のコードとは、例えば、カラーコードやバーコード等の、コードを読み出す際の仕組みやアルゴリズム等が同じであるコードである。同じ属性を有するコードは、例えば、コードがカラーコードである場合、利用可能な色の種類や、配列されている色の列数や行数が同じカラーコードである。
なお、以下においては、説明の便宜上、コード識別子が、移動対象物の識別子や場所猪識別子と対応づけられたものである場合について、例を挙げて説明する。具体的には、対象物コードと対応づけられたコード識別子が、移動対象物の識別子と対応づけられたものであり、場所コードと対応づけられたコード識別子が、移動対象物の識別子と対応づけられたものである場合を例に挙げて説明する。
なお、撮影画像受付部101は、二以上のコードが配置された領域を一のカメラ2で撮影した撮影画像を受け付けてもよい。例えば、撮影画像受付部101は、二以上のコードが配置された領域を撮影した撮影画像として、例えば、一以上の対象物コードと、一以上の場所コードとが配置された領域を撮影した撮影画像を受け付けてもよい。また、撮影画像に撮影される二以上のコードは、体系が異なるコードであっても良く、同じ体系のコードであっても良い。
また、撮影画像受付部101は、二以上のカメラ2がそれぞれ撮影した二以上の撮影画像を受け付けてもよい。例えば、撮影画像受付部101は、複数のカメラ2が同時に撮影した撮影画像を受信してもよい。複数のカメラ2は、異なる領域を撮影しても良く、少なくとも一部が重複した領域を撮影しても良い。二以上のカメラ2が撮影する撮影画像を受け付ける場合、撮影画像受付部101は、各撮影画像を撮影したカメラ2の識別子が対応づけられた撮影画像を受け付けるようにしてもよい。
また、撮影画像受付部101は、例えば、対象物コードが撮影されたフレーム画像と、場所コードが撮影されたフレーム画像と、対象コードと場所コードとが撮影されたフレーム画像と、のうち少なくとも二以上のフレーム画像を含む動画像を受け付けても良い。
例えば、撮影画像受付部101は、フォークリフト3の正面に設けられた第一のカメラ2aが対象物コードを撮影した撮影画像と、フォークリフト3のフォーク3aの下面に設置された第三のカメラ2cが場所コードを撮影した撮影画像と、をそれぞれ受け付けてもよい。
なお、撮影画像受付部101は、一の場所識別子と対応づけられた二以上の異なるコードが配置された領域を撮影した撮影画像を受け付けても良い。このような場合の各コードも場所コードと考えてよい。例えば、撮影画像受付部101は、二以上の異なるコードであって、この二以上のコードの組み合わせが、一の場所識別子と対応づけられているコードを撮影した撮影画像を受け付けても良い。
例えば、2つのコードにそれぞれ対応づけられた情報(例えば、コードから読み出される識別子)が、行と列とを有するマトリクス状に配置された複数の場所識別子の行番号と列番号とを示す場合、これらの二つの異なるコードに対応する行と列で特定される一の場所識別子が、この二つのコードの組み合わせに対応づけられた一の場所識別子である。
また、第一のコードに対応づけられた情報が、場所の上位の分類を示す識別子(例えば、一階、二階等)であり、第二のコードに対応づけられた情報が、場所の下位の分類を示す識別子(例えば、保管エリアA,保管エリアB等)である場合、この第一のコードと第二のコードとの組み合わせが示す一の場所識別子(例えば、一階保管エリアB等)が、二以上の異なるコードと対応づけられた場所識別子である。
また、一の場所識別子と対応づけられた二以上の異なるコードは、フォークリフト3に設けられた二以上のカメラ2でそれぞれ撮影されたものであってもよい。例えば、フォークリフト3に設けられたフォークリフト3の前方上方を撮影する第二のカメラ2bと、フォークリフト3のフォーク3aの下面に設置された第三のカメラ2cとがそれぞれ撮影した撮影画像からそれぞれ取得された一の場所識別子と対応づけられた二以上の異なるコードを、撮影画像受付部101が受け付けても良い。
なお、撮影画像受付部101は、上記と同様に、一の対象識別子と対応づけられた二以上の異なるコードが配置された領域を撮影した撮影画像を受け付けても良い。
撮影画像受付部101が、撮影画像を受け付けるタイミングはどのようなタイミングであっても良い。例えば、カメラ2が、撮影画像を送信した場合に、送信された撮影画像を受信してもよい。また、カメラ2が常時、画像を撮影している場合、フォークリフト3のフォーク3aを上昇させる際や、下降させる際に撮影画像を受信してもよい。このフォークを上昇させる際や、下降させる際に撮影画像を受信するための構成や、上述したカメラ2がフォークリフト3のフォーク3aを上昇させる際や、下降させる際に撮影画像を撮影するようにするための構成と同様である。例えば、フォークリフト3の図示しない操作受付部や制御部は、カメラ2に撮影を開始する指示を送信する代わりに、撮影画像受付部101に対して撮影画像を受け付ける指示を送信したり、図示しない受付部等に、フォークの昇降が行なわれることを示す情報等を出力すればよい。
また、撮影画像受付部101は、コードが配置されていない領域を撮影した撮影画像も受け付けても良いことはいうまでもない。
ここでの受け付けとは、一以上のカメラ2が撮影して出力する撮影画像の受け付け、一以上のカメラ2等から有線もしくは無線の通信回線を介して送信された情報の受信、カメラ2が撮影して蓄積した撮影画像の半導体メモリなどの記録媒体からの読み出しなどを含む概念である。
撮影画像受付部101は、無線や有線の通信手段や、入力インターフェース等により実現可能である。撮影画像受付部101は、例えば、通信手段のデバイスドライバー等で実現され得る。
対象物識別子格納部102には、対象物コードに対応づけられたコード識別子と、対象物識別子との一以上の組が格納される。
対象物識別子格納部102は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。かかることは、他の格納部についても同様である。
場所識別子格納部103には、場所コードに対応づけられたコード識別子と、場所識別子との一以上の組が格納される。なお、二以上の場所コードの組み合わせが、一の場所識別子と対応づけられている場合、場所識別子格納部103に格納されるコード識別子と、場所識別子との一以上の組は、二以上のコード識別子と、一の場所識別子との一以上の組であっても良い。
識別子取得部104は、撮影画像受付部101が受け付けた撮影画像を用いて、撮影画像内の一以上のコードにそれぞれ対応づけられた一以上の対象物識別子を取得する。以下、対象物識別子を取得する処理の一例を簡単に説明する。
まず、識別子取得部104は、例えば、撮影画像受付部101が受け付けた撮影画像内において、一または二以上のコードを検出する。ここでのコードの検出は、コードの画像や、コードの領域を検出することと考えてもよい。例えば、撮影画像が動画像である場合、識別子取得部104は、撮影画像受付部101が受け付けたフレーム画像を二値化して、パターンマッチングや特徴量を検出する処理等により、コードの外枠等の形状を認識して、撮影画像内のコードが配置されている領域を検出する。そして、検出したコードの画像を取得する。撮影画像が静止画像である場合においても同様である。
識別子取得部104は、取得したコードの画像を用いて、コードを読み取って、コードに対応づけられたコード識別子を取得する。コードを読み取るということは、例えば、コードの画像から、コードの文字や、コードを構成する色や形状の配列パターン等を認識して、その認識結果に対応した識別子等の情報を取得することである。なお、撮影画像から、コードを検出してコード識別子を取得する処理等は、公知技術であるため、ここでは詳細な説明は省略する。また、識別子取得部104は、取得したコードの画像の形状を、適宜補正して、補正した画像からコード識別子を取得してもよい。
識別子取得部104は、対象物識別子格納部102に格納されている対象物コードと対応づけられたコード識別子において、取得したコード識別子と一致するコード識別子を検出する。ここでの一致は通常は、完全一致であるが部分一致であっても良い。一致するコード識別子が検出された場合、検出されたコード識別子と組をなしている対象物識別子を取得する。また、一致するコード識別子が検出されなかった場合、対象物識別子を取得しない。一致するコード識別子が検出されない場合とは、例えば、撮影画像から検出されたコードが、対象物コードでない場合や、検出されたコードが対象物識別子格納部102に格納されていない場合である。
なお、識別子取得部104は、一の撮影画像から、複数のコードの画像を検出して、各コードの画像を取得しても良い。複数のコードの画像が検出された場合、例えば、各コードの画像についてコード識別子を取得して、各コード識別子に対応する対象物識別子を取得するようにすればよい。
また、識別子取得部104は、撮影画像受付部101が受け付けた撮影画像を用いて、撮影画像内の一以上のコードにそれぞれ対応づけられた一以上の場所識別子を更に取得してもよい。この処理は、例えば、上述した撮影画像を用いて対象物識別子を取得する処理と同様の処理において、対象物識別子格納部102に格納されている対象物コードと対応づけられたコード識別子において一致するコード識別子を検出する処理の代わりに、場所識別子格納部103に格納されている場所コードと対応づけられたコード識別子において一致するコード識別子を検出し、検出したコード識別子と組をなす場所識別子を、場所識別子格納部103を取得することにより実現可能である。
なお、同じ撮影画像について、対象物識別子を取得する処理と、場所識別子を取得する処理とを行なう場合、撮影画像からコードを検出してコード識別子を取得する処理は、まとめて一度だけ行なうようにしてよく、例えば、取得したコード識別子を用いて、このコード識別子に対応する対象物識別子を取得する処理と、このコード識別子に対応する場所識別子を取得する処理とを、予め指定された順番で行なうようにしても良い。
識別子取得部104は、撮影画像内の一以上のコードに対応づけられた場所の識別子であって、フォークリフト3が積載していた一以上の移動対象物を下ろした移動後の場所を示す識別子である移動後場所識別子を取得するようにしてもよい。移動後場所識別子は、例えば、移動対象物を移動先の場所に下ろす際に取得した場所識別子である。移動後場所識別子は、場所識別子と同様の識別子である。撮影画像から移動後場所識別子を取得する処理は、例えば、上述した場所識別子を取得する処理と同様の処理により行なわれる。移動対象物や、通常、移動先の場所に下ろされるため、移動対象物を下ろした場所を移動先の場所とみなしてもよい。
移動対象物を下ろす際とは、例えば、フォークリフト3が移動対象物を下ろす時点の、直前や直後の予め指定された期間も含む概念である。予め指定された期間は、通常は数10秒以内であるが、その時間は、移動対象物や、移動が行なわれる場所等に応じて適宜設定してもよい。フォークリフト3が、積載していた一以上の移動対象物を下ろす時点とは、例えば、フォークリフト3が、積載していた一以上の移動対象物を下ろすと見なされる時点と考えてもよい。フォークリフト3が、積載していた一以上の移動対象物を下ろす時点とは、例えば、フォークリフト3が、フォーク3aを下降させた時点と考えても良く、フォークリフト3がフォークを上昇させた直後に、フォーク3aを下降させた時点や、識別子取得部104が一旦、対象物識別子を取得した後に、フォーク3aを下降させた時点と考えてもよい。あるいは、ユーザが、積載していた一以上の移動対象物を下ろしたことを示す情報を情報処理装置1の図示しない受付部等に入力した時点を、フォークリフト3が、積載していた一以上の移動対象物を下ろす時点と考えてもよい。どのような状況を、フォークリフト3が、積載していた一以上の移動対象物を下ろす時点として扱うかは、適宜変更可能である。
識別子取得部104は、結果的に、フォークリフト3が積載していた一以上の移動対象物を下ろした移動先の場所の移動後場所識別子を取得できればよい。例えば、識別子取得部104は、フォークリフト3が積載していた一以上の移動対象物を移動先の場所で下ろす際に、場所識別子を取得する処理と同様の処理を行なって移動後場所識別子を取得しても良い。また、識別子取得部104が、予め指定された一定または不定の時間間隔で繰り返し実行するコードを撮影画像から読み取る処理により取得した場所識別子のうちの、フォークリフト3が積載していた一以上の移動対象物を移動先の場所で下ろす際に取得された場所識別子を、識別子取得部104が取得した移動後場所識別子と考えてもよい。
識別子取得部104は、例えば、フォークリフト3が積載していた一以上の移動対象物を移動先の場所で下ろしたか否かを判断して、下ろした場合に、移動後場所識別子を取得するようにしてもよく、フォークリフト3が積載していた一以上の移動対象物を移動先の場所で下ろしたか否かを判断せずに、移動後場所識別子を取得するようにしてもよい。
識別子取得部104が、どのようにしてフォークリフト3が積載していた一以上の移動対象物を下ろす場所について移動後場所識別子を取得するかは問わない。
例えば、識別子取得部104は、図示しない受付部が、フォークリフト3の図示しない操作受付部や制御部等からフォーク3aを下げる操作や制御が行なわれたことを示す情報を受け付けたか否かを判断し、受け付けた場合に、場所識別子を取得する処理と同様の処理を行なうことにより、移動後場所識別子を取得しても良い。
また、例えば、図示しない受付部が、フォークリフト3からフォーク3aを下げる操作や制御が行なわれたことを示す情報等を受け付けた場合において、更に、その時点で、対象物識別子を取得しているか否かを判断し、取得していると判断された場合にだけ、移動後場所識別子を取得しても良い。
また、例えば、識別子取得部104は、図示しない受付部が、ユーザから、積載していた移動対象物を下ろしたことを示す情報を受け付けたか否かを判断し、受け付けた場合に、移動後場所識別子を取得しても良い。
また、例えば、コードを撮影するカメラ2が、フォークリフト3がフォーク3aを下降させる際や、ユーザから積載していた移動対象物を下ろしたことを示す情報を受け付けた場合にだけ、撮影画像を取得して出力するものである場合、識別子取得部104は、撮影画像受付部101が受け付けた場合にだけ、この撮影画像から移動後場所識別子を取得しても良い。
あるいは、撮影画像受付部101がフォークリフト3のフォーク3aを下降させる際にだけ撮影画像を受け付けるようにした場合、この撮影画像を受け付けた場合に、移動後場所識別子を取得しても良い。
なお、識別子取得部104が撮影画像を用いて順次繰り返し取得する場所識別子のうちの、フォークリフト3やユーザから積載していた移動対象物を下ろしたこと等を示す上記のような情報を受け付けた際に取得した場所識別子(例えば、フォークリフト3やユーザから情報を受け付けた時点の直前または直後に取得された場所識別子等)を、識別子取得部104が取得した移動後場所識別子と考えてもよい。
なお、識別子取得部104は、フォークリフト3のフォーク3a等に図示しないモーションセンサー等を設置し、このモーションセンサーがフォーク3aが下降する動きを検出した場合に移動後場所識別子を取得しても良い。
あるいは、フォークリフト3に、フォーク3aにかかった荷重を測定する図示しない重量センサ等を設け、この重量センサが検出して情報処理装置1の図示しない受付部等に出力した重量が、閾値以上の値から、閾値未満の値に変化した場合に、移動後場所識別子を取得しても良い。
あるいは、フォークリフト3のフォーク3aに、配置される移動対象物を検出する近接センサ等の図示しないセンサを設け、このセンサが検出して情報処理装置1に出力する図示しない情報が、近接した物体があることを示す値から、ないことを示す値に変化した場合に、移動後場所識別子を取得しても良い。
識別子取得部104は、撮影画像内の一以上のコードに対応づけられた場所の識別子であって、フォークリフト3が一以上の移動対象物を積載した移動前の場所を示す識別子である移動前場所識別子を取得するようにしてもよい。移動前場所識別子は、例えば、移動対象物を移動元の場所においてフォークリフト3に積載する際に取得した場所識別子である。移動前場所識別子は、場所識別子と同様の識別子である。撮影画像から移動前場所識別子を取得する処理は、例えば、上述した場所識別子を取得する処理と同様の処理により行なわれる。移動対象物や、通常、移動前の場所において積載されるため、移動対象物を積載した場所を移動前の場所とみなしてもよい。
移動対象物を積載する際とは、例えば、フォークリフト3が移動対象物を積載した時点の、直前や直後の予め指定された期間も含む概念である。予め指定された期間は、通常は数10秒以内であるが、その時間は、移動対象物や、移動が行なわれる場所等に応じて適宜設定してもよい。フォークリフト3が、一以上の移動対象物を積載した時点とは、例えば、フォークリフト3が、一以上の移動対象物を積載すると見なされる時点と考えてもよい。フォークリフト3が、一以上の移動対象物を積載する時点とは、例えば、フォークリフト3が、フォーク3aを上昇させた時点と考えても良く、フォークリフト3がフォーク3aを下降させた直後に、フォーク3aを上昇させた時点や、識別子取得部104が一旦、対象物識別子を取得した後に、フォーク3aを上昇させた時点と考えてもよい。あるいは、ユーザが、一以上の移動対象物を積載したことを示す情報を情報処理装置1の図示しない受付部等に入力した時点を、フォークリフト3が、一以上の移動対象物を積載した時点と考えてもよい。どのような状況を、フォークリフト3が、一以上の移動対象物を積載した時点として扱うかは、適宜変更可能である。
識別子取得部104は、結果的に、フォークリフト3が一以上の移動対象物を積載した移動前の場所の移動前場所識別子を取得できればよい。例えば、識別子取得部104は、フォークリフト3が一以上の移動対象物を移動前の場所で積載する際に、場所識別子を取得する処理と同様の処理を行なって移動前場所識別子を取得しても良い。また、識別子取得部104が、予め指定された一定または不定の時間間隔で繰り返し実行されるコードを撮影画像から読み取る処理により取得した場所識別子のうちの、フォークリフト3が一以上の移動対象物を移動先の場所で積載する際に取得された場所識別子を、識別子取得部104が取得した移動前場所識別子と考えてもよい。
識別子取得部104は、例えば、フォークリフト3が一以上の移動対象物を移動前の場所で積載したか否かを判断して、積載した場合に、移動前場所識別子を取得するようにしてもよく、フォークリフト3が一以上の移動対象物を移動前の場所で積載したか否かを判断せずに、移動前場所識別子を取得するようにしてもよい。
識別子取得部104が、どのようにしてフォークリフト3が一以上の移動対象物を積載する場所について移動前場所識別子を取得するかは問わない。
例えば、識別子取得部104は、図示しない受付部が、フォークリフト3の図示しない操作受付部や制御部等からフォーク3aを上昇させる操作や制御が行なわれたことを示す情報を受け付けたか否かを判断し、受け付けた場合に、場所識別子を取得する処理と同様の処理を行なうことにより、移動前場所識別子を取得しても良い。
また、例えば、図示しない受付部が、フォークリフト3からフォーク3aを上昇させる操作や制御が行なわれたことを示す情報等を受け付けた場合において、更に、その時点で、対象物識別子を取得しているか否かを判断し、取得していると判断された場合にだけ、移動前場所識別子を取得しても良い。
また、例えば、識別子取得部104は、図示しない受付部が、ユーザから、移動対象物を積載することを示す情報を受け付けたか否かを判断し、受け付けた場合に、移動前場所識別子を取得しても良い。
また、例えば、コードを撮影するカメラ2が、フォークリフト3がフォーク3aを上昇させる際や、ユーザから移動対象物を積載することを示す情報を受け付けた場合にだけ、撮影画像を取得して出力するものである場合、識別子取得部104は、撮影画像受付部101が受け付けた場合にだけ、この撮影画像から移動前場所識別子を取得しても良い。
あるいは、撮影画像受付部101がフォークリフト3のフォーク3aを上昇させる際にだけ撮影画像を受け付けるようにした場合、この撮影画像を受け付けた場合に、この撮影画像から移動前場所識別子を取得しても良い。
なお、識別子取得部104が撮影画像を用いて順次繰り返し取得する場所識別子のうちの、フォークリフト3やユーザから移動対象物を積載したこと等を示す上記のような情報を受け付けた際に取得した場所識別子(例えば、フォークリフト3やユーザから情報を受け付けた時点の直前または直後に取得された場所識別子等)を、識別子取得部104が取得した移動前場所識別子と考えてもよい。
なお、識別子取得部104は、フォークリフト3のフォーク3a等に図示しないモーションセンサー等を設置し、このモーションセンサーがフォークが上昇する動きを検出した場合に移動前場所識別子を取得しても良い。
あるいは、フォークリフト3に、フォーク3aにかかった荷重を測定する図示しない重量センサ等を設け、この重量センサが検出して情報処理装置1の図示しない受付部等に出力した重量が、閾値以上の値から、閾値未満の値に変化した場合に、移動前場所識別子を取得しても良い。
あるいは、フォークリフト3のフォーク3aに配置される移動対象物を検出する図示しない近接センサ等のセンサが検出して情報処理装置1に出力する情報が、近接した物体があることを示す値から、ないことを示す値に変化した場合に、移動前場所識別子を取得しても良い。
識別子取得部104は、撮影画像内の二以上のコードを用いて一の場所識別子を取得するようにしてもよい。例えば、一の場所識別子が、異なる二以上のコード(具体的には場所コード)の組み合わせと対応づけられている場合、識別子取得部104は、撮影画像内の二以上のコードの組み合わせに対応づけられた一の場所識別子を取得するようにしてもよい。この場所識別子は、移動前場所識別子や移動後場所識別子であってもよい。例えば、一または二以上の撮影画像から複数のコードにそれぞれ対応する複数のコード識別子を取得し、この複数のコード識別子と一致する複数のコード識別子を有する組を、場所識別子格納部103に格納されている一の場所識別子と複数のコード識別子との組の中から検出し、検出した組の場所識別子を取得することで、二以上の場所コードの組み合わせと対応づけられた場所識別子を取得することができる。なお、二以上の場所コードには、通常、組み合わせる順序等が予め指定されており、識別子取得部104は、この順序で組み合わせた組み合わせに応じて一の場所識別子を取得する。この組み合わせ順序を示す情報は、例えば、予め、各場所コードに対応する識別子コードに含まれているようにすればよい。
なお、識別子取得部104は、撮影画像受付部101が受け付けた二以上の撮影画像内の二以上のコードを用いて一の場所識別子を取得するようにしてもよい。例えば、識別子取得部104は、撮影画像受付部101が受け付けた二以上の撮影画像からそれぞれ一つずつ検出した合計二以上のコードを用いて、このコードの組み合わせにより特定される一の場所識別子を取得するようにしてもよい。例えば、撮影画像受付部101が受け付ける二以上の撮影画像は、異なるカメラ2が撮影した画像である。例えば、ここでの二以上の撮影画像は、上述したようなフォークリフト3の屋根に、フォークリフト3の前方上方が撮影領域となるよう設置された第二のカメラ2bと、フォーク3aの下面に設置された第三のカメラ2cとがそれぞれ撮影した撮影画像である。各カメラ2が一の場所識別子と対応づけられた複数のコードのうちの、どのコードを撮影するカメラ2であるのかが予め決められている場合、撮影画像を撮影した複数のカメラ2に予め対応づけられた順番に応じて、各カメラ2が撮影した撮影画像から取得されたコード識別子を組み合わせる順序を決定するようにすればよい。
なお、フォークリフト3が複数のカメラ2を備えている場合等においては、識別子取得部104は、特定の一のカメラ2が撮影した撮影画像については、上記の対象物識別子を取得する処理だけを行なうようにしてもよい。同様に、特定の一のカメラ2が撮影した撮影画像については、上記の場所識別子を取得する処理だけを行なうようにしてもよい。
なお、識別子取得部104は、撮影画像受付部101が受付けた撮影画像からコードを読み取って対象物識別子や場所識別子を取得した場合に、対象物識別子や場所識別子を取得したことを示す情報を通知する通知手段(図示せず)等を有していても良い。ここでの通知とは、例えば、対象物識別子や場所識別子を取得したことを示す音等の出力や、ライト等の点灯、取得したことを示す情報のモニタ等への表示である。なお、通知手段は、識別子取得部104が対象物識別子を取得した場合と、場所識別子を取得した場合とで、ユーザが識別可能な異なる通知、例えば異なる音の出力等を行なうようにしても良い。さらに、識別子取得部104が移動前場所識別子を取得した場合と、移動後場所識別子を取得した場合とで、ユーザが識別可能な異なる通知を行なうようにしても良い。これにより、対象物識別子や場所識別子を取得できたか否か等をユーザが確認することができる。
さらに、この図示しない通知手段は、識別子取得部104が対象物識別子を取得した時点や、その時点の後の予め指定された時間内に、場所識別子を取得していない場合や、識別子取得部104が場所識別子を取得した時点や、その時点の後の予め指定された時間内に、対象物識別子を取得していない場合等に、場所識別子や対象物識別子がまだ取得されていないことを示す通知等を行なっても良い。
識別子取得部104は、通常、MPUやメモリ等から実現され得る。識別子取得部104の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
出力部105は、識別子取得部104が取得した対象物識別子を出力する。出力部105は、例えば、識別子取得部104が取得した対象物識別子と場所識別子とを出力する。出力部105は、例えば、識別子取得部104が取得した対象物識別子と、場所識別子とを対応づけて出力する。例えば、出力部105は、対象物識別子と、この対象物識別子を取得する前後の予め指定された時間内に取得された場所識別子とを対応づけて出力する。対応づけて出力する、ということは、例えば、同時に出力することや、同じファイルとして出力することや、データベース等の同じレコードに蓄積すること等である。
例えば、出力部105は、識別子取得部104が取得した移動後場所識別子と対象物識別子とを対応づけて出力する。なお、移動後場所識別子と対象物識別子とを対応づけた出力は、対象物識別子と、場所識別子と、この場所識別子が移動後場所識別子であることを示す情報とを対応づけて有する情報の出力であっても良い。また、出力部105は、例えば、識別子取得部104が取得した移動前場所識別子と対象物識別子とを対応づけて出力する。なお、移動前場所識別子と対象物識別子とを対応づけた出力は、対象物識別子と、場所識別子と、この場所識別子が移動前場所識別子であることを示す情報とを対応づけて有する情報の出力であっても良い。
ここでの出力とは、モニタへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
なお、出力部105が図示しない格納部等に蓄積した対象物識別子や、出力部105が対応づけて蓄積した対象物識別子と場所識別子との組等の情報は、出力部105等により適宜読み出して、図示しないモニタ等に表示したり、図示しない他の処理部や装置等に出力することで、移動対象物の管理等に適宜利用してよい。移動対象物の管理とは、例えば、倉庫等における物品の在庫や物流の管理等である。
また、出力部105が、対象物識別子や、対象物識別子と場所識別子との組等を、図示しない他の装置に送信した場合、この他の装置において、これらの情報を受信して蓄積し、蓄積した情報を、図示しないモニタ等に表示したり、図示しない他の処理部や装置等に出力することで、移動対象物の管理等に適宜利用してよい。
出力部105は、モニタや通信手段等の出力デバイスを含むと考えても含まないと考えても良い。出力部105は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、情報処理システム1000の情報処理装置1の動作の一例について図3のフローチャートを用いて説明する。
(ステップS101)撮影画像受付部101は、一以上のカメラ2が順次撮影した撮影画像の受付を開始する。ここでは、カメラ2として、対象物コードを撮影するためのカメラ2と場所コードを撮影するためのカメラ2とがそれぞれフォークリフト3に設けられているものとする。このステップ以降、撮影画像受付部101は、他の処理と並列して、あるいは、他の処理の間に、順次撮影画像を受け付ける。ここでは、各カメラ2は、動画像を撮影するカメラであるとする。各カメラ2が撮影した撮影画像は、例えば、個別に、図示しない格納部等に一時記憶され、予め指定された時間等が経過したフレーム画像等から順次削除されるものとする。
(ステップS102)識別子取得部104は、フォークリフト3に、一以上の移動対象物が積載済であるか否かを判断する。例えば、識別子取得部104は、図示しない格納部に、対象物識別子が格納されている場合に、移動対象物が積載済であると判断し、格納されていない場合、移動対象物が積載されていないと判断する。なお、図示しない格納部等に、移動対象物が積載されたことを示すフラグ等の情報が格納されているか否かを判断し、格納されている場合、積載済であると判断し、格納されていない場合、積載されていないと判断してもよい。積載済である場合、ステップS103に進み、積載されていない場合、ステップS112に進む。
(ステップS103)識別子取得部104は、撮影画像受付部101が受け付けた撮影画像であって、対象物コードを撮影するためのカメラ2が撮影した撮影画像から、コード識別子を取得する処理を行なう。撮影画像からコード識別子を取得する処理は、公知技術であるため、ここでは詳細な説明は省略する。ここで用いられる撮影画像は、例えば、撮影画像受付部101が受け付けた最新のフレーム画像、もしくは、その直前のフレーム画像等である。
(ステップS104)識別子取得部104は、一以上のコード識別子が取得できたか否かを判断する。取得できた場合、ステップS105に進み、できなかった場合、ステップS103に戻る。
(ステップS105)識別子取得部104は、ステップS104で取得した一以上のコード識別子に対応する一以上の対象物識別子を取得する。例えば、ステップS104で取得した一以上のコード識別子と一致するコード識別子が、対象物識別子格納部102に格納されているか否かを判断し、格納されている場合、一致すると判断されたコード識別子と組をなす対象物識別子を取得し、図示しない格納部等に蓄積する。一致するコード識別子がない場合、対象物識別子を取得しない。既に、対象物識別子が図示しない格納部に蓄積されている場合、例えば、新たな対象物識別子で更新する。なお、複数のコード識別子がステップS104で取得された場合、例えば、各コード識別子について対象物識別子を検出する処理を順次行なうようにする。
(ステップS106)識別子取得部104は、撮影画像受付部101が受け付けた撮影画像であって、場所コードを撮影するためのカメラ2が撮影した撮影画像から、コード識別子を取得する処理を行なう。ここで用いられる撮影画像は、例えば、最新のフレーム画像、もしくは、その直前のフレーム画像等である。
(ステップS107)識別子取得部104は、一以上のコード識別子が取得できたか否かを判断する。取得できた場合、ステップS108に進み、できなかった場合、ステップS109に進む。
(ステップS108)識別子取得部104は、ステップS107で取得した一以上のコード識別子に対応する場所識別子を場所識別子格納部103から取得する。例えば、ステップS107で取得した一以上のコード識別子と一致するコード識別子が、場所識別子格納部103に格納されているか否かを判断し、格納されている場合、一致すると判断されたコード識別子と組をなす場所識別子を取得し、図示しない格納部等に蓄積する。既に場所識別子が蓄積されている場合、例えば、新たな場所識別子で更新する。一致するものが検出されなかった場合、場所識別子は取得しない。なお、複数のコード識別子が、一の場所識別子と対応づけられている場合、複数のコード識別子の両者に対してそれぞれ一致する複数のコード識別子が、場所識別子格納部103に格納されているか否かを判断し、格納されている場合、この複数のコード識別子と対応づけられた一の場所識別子を取得する。
(ステップS109)識別子取得部104は、フォークリフト3に移動対象物の積載が行なわれるか否かを判断する。例えば、情報処理装置1の図示しない受付部が、フォークリフト3から、フォーク3aを上昇させる操作を行なうことを示す情報を受信したか否かを判断し、受信した場合、積載が行なわれると判断する。受信していない場合、積載が行なわれないと判断する。積載が行なわれると判断した場合、ステップS110に進み、積載が行なわれないと判断した場合、ステップS103に戻る。
(ステップS110)出力部105は、対象物識別子と、場所識別子が図示しない格納部に格納されているか否かを判断する。格納されている場合、ステップS111に進み、格納されていない場合、ステップS103に戻る。
(ステップS111)出力部105は、ステップS105において蓄積、あるいは更新した一以上の対象物識別子と、ステップS108で取得された場所識別子のうちの最新の場所識別子である移動前場所識別子とを対応づけて出力する。ここでの出力は、通常は、図示しない格納部等への蓄積であるが、図示しない他の装置等への送信等であっても良い。そして、ステップS102に戻る。なお、出力部105は、移動対象物が積載されたことを示すフラグ等の情報を、更に、図示しない格納部等に蓄積してもよい。
(ステップS112)識別子取得部104は、撮影画像受付部101が受け付けた撮影画像であって、場所コードを撮影するためのカメラ2が撮影した撮影画像から、コード識別子を取得する処理を行なう。ここで用いられる撮影画像は、例えば、最新のフレーム画像、もしくは、その直前のフレーム画像等である。
(ステップS113)識別子取得部104は、ステップS112で取得した一以上のコード識別子に対応する場所識別子を場所識別子格納部103から取得する。この処理は、ステップS108と同様の処理である。
(ステップS114)識別子取得部104は、フォークリフト3から積載された移動対象物を下ろされるか否かを判断する。例えば、情報処理装置1の図示しない受付部が、フォークリフト3から、フォーク3aを下降させる操作を行なうことを示す情報を受信したか否かを判断し、受信した場合、移動対象物が下ろされると判断する。受信していない場合、下ろされないと判断する。下ろされると判断した場合、ステップS115に進み、下ろされないと判断した場合、ステップS112に戻る。
(ステップS115)出力部105は、場所識別子が図示しない格納部に格納されているか否かを判断する。格納されている場合、ステップS115に進み、格納されていない場合、ステップS112に戻る。
(ステップS116)出力部105は、ステップS105において蓄積、あるいは更新した一以上の対象物識別子と、ステップS113で取得された場所識別子のうちの最新の場所識別子である移動後場所識別子とを対応づけて出力する。ここでの出力は、通常は、図示しない格納部等への蓄積であるが、図示しない他の装置等への送信等であっても良い。そして、ステップS102に戻る。そして、ステップS102に戻る。なお、上記の出力の後、出力部105は、ステップS105において蓄積、あるいは更新した一以上の対象物識別子を削除してもよい。また、出力部105は、更に、図示しない格納部に格納されている上述したような移動対象物が積載されたことを示すフラグ等の情報を、積載されていないことを示す情報に更新してもよい。
なお、図3のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
以下、本実施の形態における情報処理システム1000の具体的な動作について説明する。ここでは、コードがカラーコードである場合を例に挙げて説明する。
図4は、情報処理システム1000が利用される状況の一例を示す図(図4(a))、および情報処理システム1000で用いられるコードであるカラーコードの一例を示す図(図4(b))である。
図4(a)は、ある倉庫内の移動対象物が配置されている一のエリア近傍を示す図である。図において、複数の移動対象物30が、パレット40上に載置されている。移動対象物30は、例えば、箱に梱包された商品であるとする。各移動対象物30の正面側には、それぞれ、対象物コード10が配置されている。移動対象物30が配置される各エリアは、例えば、白線50で区切られている。移動対象物30が配置されているエリアの、背後の壁面には、第一の場所コード21が配置されている。また、このエリアのパレット40が配置される前面の床上には、第二の場所コード22が配置されている。対象物コード10のコード識別子は、対象物識別子と対応づけられている。ここでは、例えば、パレット40上には同じ移動対象物30が複数配置されているため、各移動対象物30には、同じ対象物コード10が配置されているものとする。第一の場所コード21のコード識別子と、第二の場所22のコード識別子との組み合わせが、このエリアの場所識別子と対応づけられているものとする。
図4(b)は、対象物コード10の一例を示す図である。対象物コード10は、上述したようにカラーコードである。このカラーコードは、複数の色が、マトリクス上に配列されたコードである。例えば、このカラーコードは、カメレオンコードとも呼ばれる。なお、ここでは、第一の場所コード21、および第二の場所コード22も同様のカラーコードであるとする。ただし、各コードの色の配列等は異なっていて良い。また、各コードの大きさも異なる大きさであって良い。
図5は、対象物識別子格納部102に格納されている対象物識別子を管理する対象物識別子管理情報である。対象物識別子管理情報は、「コードID」と「対象物ID」という属性を有している。「コードID」は、コード識別子であり、ここでは、対象物コードから読み取られるコード識別子であるとする。「対象物ID」は、対象物識別子であり、ここでは、例えば、商品識別子であるとする。
図6は、場所識別子格納部103に格納されている場所識別子を管理する場所識別子管理情報である。場所識別子管理情報は、「第一コードID」と、「第二コードID」と、「場所ID」という属性を有している。「第一コードID」は、第一のコード識別子であり、第一の場所コード21から読み取られるコード識別子である。「第二コードID」は、第二のコード識別子であり、第二の場所コード22から読み取られるコード識別子である。「場所ID」は、場所識別子であり、ここでは、倉庫内の場所の名称を、フロアの階数と、エリアの名称との組み合わせで示している。
この具体例においては、図3に示すようなカメラ2a−2cを備えたフォークリフト3が用いられるものとする。情報処理装置1は、ここでは図示していないが、例えば、タブレット型の情報処理端末であり、フォークリフト3に設置されているものとする。ただし、情報処理装置1は、カメラ2等が撮影した画像等を、無線通信等を介して受信可能なサーバ装置等であってもよい。また、情報処理装置1は、眼鏡型コンピュータ等の、ウェアラブルコンピュータであってもよい。なお、フォークリフト3の第一のカメラ2aは、フォークリフト3の正面が、一のパレット40上に配置された移動対象物30の正面に対向して位置した場合に、その撮影領域が、一のパレット40上の全ての移動対象物30が位置する領域となるように、向き等が適宜設定されているものとする。また、第二のカメラ2bは、フォークリフト3が一のパレット40上に配置された移動対象物30の正面に対向して位置した場合に、その撮影領域に第一の場所コード21が含まれ、他のコードが含まれないように、その向き等が適宜設定されているものとする。また、第三のカメラ2cは、フォークリフト3が、一のパレットに向かって移動する際や、一のパレットから離れるよう移動する際に、床上の第二の場所コード22が撮影領域に含まれるよう、フォーク3aの下面側に設けられているものとする。
フォークリフト3のユーザが情報処理装置1を起動させると、カメラ2a−2cは、それぞれ画像の撮影を開始し、撮影した撮影画像を一または二以上のフレーム画像毎に、情報処理装置1に送信する。
撮影画像受付部101は、カメラ2a−2cから送信される撮影画像をそれぞれ受け付ける。また、ここでは、フォークリフト3が、移動対象物を積載しておらず、積載した移動対象物の対象物識別子を取得していないとすると、識別子取得部104は、撮影画像受付部101がカメラ2a−2cからそれぞれ受信した撮影画像について、コード識別子等を取得する処理を行なう。ただし、ここでは、例えば、いずれの撮影画像にもコードが撮影されておらず、コード識別子が取得できないものとする。このため、情報処理装置1は、カメラ2a−2cから順次送信される撮影画像について、同様の処理を順次行なう。
次に、ユーザが、パレット40上に配置された移動対象物30をフォークリフト3に積載するため、フォークリフト3の正面が、パレット40上に配置された移動対象物30の正面に対向するよう、フォークリフト3を移動させたとする。
図7は、フォークリフト3を、パレット40上に配置された移動対象物30の正面に移動させた状態を示す模式図(図7(a))、およびこの状態で第一のカメラ2aが撮影した撮影画像を示す図(図7(b))である。図7において、矢印200aは、第一のカメラ2aの撮影方向を示し、矢印200bは、第二のカメラ2bの撮影方向を示し、矢印200cは、第三のカメラ2cの撮影方向を示している。
フォークリフト3が、上記の位置に移動すると、第一のカメラ2aの撮影領域には、パレット40上に配置された複数の移動対象物30が位置するようになり、第一のカメラ2aは、複数の移動対象物30を撮影する。そして、撮影した図7(b)に示すような撮影画像を情報処理装置1に対して送信する。
情報処理装置1の撮影画像受付部101が第一のカメラ2aから撮影画像を受信すると、識別子取得部104は、撮影画像からコード識別子等を取得する処理を行なう。ここでは、第一のカメラ2aは、撮影領域が対象物コード10を撮影可能な領域に設定されていることから、識別子取得部104は、予め、第一のカメラ2aが撮影した撮影画像については、対象物識別子を取得する処理だけを行なうよう設定されているとすると、識別子取得部104は、まず、図7(b)に示す撮影画像において、画像処理等を利用して、一以上のコードを検出する。具体的には各コードの画像の領域を検出する。ここでは、図7(b)に示すように、4つのコードの画像10aが検出されたとする。
識別子取得部104は、検出した複数のコードの画像のうちの一のコードの画像から、コード識別子を読み取る。読み取られたコード識別子が「P10003]であったとする。そして、図5に示した対象物識別子管理情報において、「コードID」の属性値が、「P10003」であるレコード(行)を検索し、検出されたレコードの「対象物ID」の属性値である「KWR5001R」を取得する。ここで取得された対象物識別子が、移動対象物30の対象物識別子である。そして、ここでは、取得した「対象物ID」の属性値「KWR500R」を、図示しない格納部等に一時記憶する。なお、既に他の対象物識別子が格納されている場合は、例えば上書きする。
ここで、この倉庫においては、パレット40上には、予め同じ移動対象物30が、同じ数、例えば8つだけ配置されることが、移動対象物30を配置する際のルールとして予め決まっていたとすると、撮影画像において検出された他のコードの画像について、対象物識別子を取得する必要がないため、ここでは、対象物識別子を取得する処理を終える。
ただし、上記と同様に、識別子取得部104が、検出された他の3つのコードについても、同様に対象物識別子を取得するようにしてもよい。また、検出したコード数等も取得して良い。
また、第二のカメラ2bの撮影領域には、第一の場所コード21が位置するようになるため、第二のカメラ2bは、第一の場所コード21を撮影した撮影画像を取得し、情報処理装置1に送信する。
図8は、フォークリフト3の第二のカメラ2bが撮影した撮影画像を示す図(図8(a))、および第三のカメラ2cが撮影した撮影画像を示す図(図8(b))である。
情報処理装置1の撮影画像受付部101がカメラ2bから撮影画像を受信すると、識別子取得部104は、撮影画像からコード識別子等を取得する処理を行なう。ここでは、カメラ2bは、撮影領域が第一の場所コード21を撮影可能な領域に設定されていることから、識別子取得部104は、予め、カメラ2bが撮影した撮影画像については、第一の場所コードの画像を検出して、第一のコード識別子を取得する処理を行なうよう設定されているとすると、識別子取得部104は、まず、図8(a)に示す撮影画像において、画像処理等を利用して、コードを検出する。具体的にはコードの画像の領域を検出する。ここでは、図8(b)に示すように、第一の場所コードの画像21aが検出されたとする。
識別子取得部104は、検出した第一の場所コードの画像21aを読み取って、コード識別子「A201」を取得する。ここでは、カメラ2bが撮影した撮影画像を用いて得られたものであるため、コード識別子「A201」を第一のコード識別子として取得する。取得した第一のコード識別子は、図示しない格納部等に一時記憶する。
また、ここでは、第三のカメラ2cの撮影領域には、第二の場所コード22が位置していないとすると、第三のカメラ2cが送信する撮影画像には、コードが検出されず、第二のコード識別子が取得できないため、場所識別子の取得は行なわない。
続いて、ユーザがフォークリフト3を、パレット40に近づける方向に移動させた結果、第三のカメラ2cの撮影領域には、第二の場所コード22が位置するようになったとすると、カメラ2bは、第二の場所コード22を撮影した撮影画像を取得し、情報処理装置1に送信する。送信した撮影画像は、図8(b)に示すような画像であったとする。
情報処理装置1の撮影画像受付部101が第三のカメラ2cから撮影画像を受信すると、識別子取得部104は、撮影画像からコード識別子等を取得する処理を行なう。ここでは、第三のカメラ2cは、撮影領域が第二の場所コード22を撮影可能な領域に設定されていることから、識別子取得部104は、予め、第三のカメラ2cが撮影した撮影画像については、第二の場所コードの画像を検出して、第二のコード識別子を取得する処理を行なうよう設定されているとすると、識別子取得部104は、図8(b)に示す撮影画像において、画像処理等を利用して、コードを検出する。具体的にはコードの画像の領域を検出する。ここでは、図8(b)に示すように、第二の場所コードの画像22aが検出されたとする。
識別子取得部104は、検出した第一の場所コードの画像22aを読み取って、コード識別子「B10002」を取得する。ここでは、カメラ2cが撮影した撮影画像を用いて得られたものであるため、コード識別子「B10002」を、第二のコード識別子として取得する。取得した第二のコード識別子は、図示しない格納部等に一時記憶する。
ここで、識別子取得部104は、第一のコード識別子「A201」と、第二のコード識別子「B10002」とを取得することができたため、このコード識別子の組み合わせに対応した場所識別子を取得する。具体的には、図6に示した場所識別子管理情報において、「第一コードID」の属性値が第一のコード識別子「A201」と一致し、かつ「第二コードID」の属性値が第二のコード識別子「B10002」と一致するレコード(行)を検出し、検出したレコードの「場所ID」の値である「2階第2エリア」という情報を、場所識別子として取得する。そして、取得した場所識別子を、図示しない格納部等に一時記憶する。なお、既に場所識別子が格納されている場合は、例えば、上書きする。
ここで、ユーザが、フォークリフト3のフォークを、パレット40の側面の開口部に挿入し、パレット40に配置された移動対象物30をパレット40ごとフォークリフト3に積載するために、フォークを上昇させる操作を、フォークリフト3に対して行なったとすると、パレット40に配置された移動対象物30は、パレット40ごとフォーク3aによって持ち上げられるともに、フォーク3aを持ち上げる操作を行なったことを示す情報が、フォークリフト3の図示しない制御部から、情報処理装置1の図示しない受付部に送信されたとする。
情報処理装置1の図示しない受付部が、フォーク3aを持ち上げる操作、即ち上昇させる操作を行なったことを示す情報を受信すると、出力部105は、受信した時点で図示しない格納部に格納されている対象物識別子「KWR5001R」と、場所識別子「2階第2エリア」とを読み出す。この時点で図示しない格納部に格納されている場所識別子「2階第2エリア」が、識別子取得部104が取得した移動前場所識別子であり、出力部105は、フォーク3aを上昇させる操作に応じてこの場所識別子を、移動前場所識別子として読み出す。そして、出力部105は、読み出した対象物識別子「KWR5001R」と、移動前場所識別子「2階第2エリア」との組を、図示しない格納部等に蓄積する。このようにして、移動させた移動対象物の対象物識別子と、移動前の場所を示す移動前場所識別子との組を取得することができる。
その後、移動対象物30を積載した状態で、ユーザがフォークリフト3を予め指定された移動先となるエリアに移動させたとする。移動先のエリアにも、図4と同様に第一の場所コード21と、第二の場所コード22とが配置されているものとする。
情報処理装置1は、既に対象物識別子が図示しない格納部に格納されているため、移動対象物30が積載済であると判断する。このため、カメラ2bが撮影した撮影画像から第一のコード識別子を取得する処理と、第三のカメラ2cが撮影した撮影画像から第二のコード識別子とを取得する処理をくり返し行なう。
そして、フォークリフト3が、移動対象物30の移動先のエリアに近づき、第二のカメラ2bが、移動先のエリアの第一の場所コード21を撮影し、第三のカメラ2cが、移動先のエリアの第二の場所コード22を撮影したとする。
識別子取得部104は、上記と同様に、第二のカメラ2bが撮影した撮影画像から第一のコード識別子を取得し、第三のカメラ2cが撮影した撮影画像から第二のコード識別子を取得し、これらに対応する「場所ID」を、図6に示した場所識別子管理情報から取得する。取得した場所識別子は「1階第4エリア」であったとする。識別子取得部104は、取得した場所識別子「1階第4エリア」で、直前に格納されていた場所識別子を上書きする。
そして、ユーザが積載していた対象物識別子が「KWR5001R」である移動対象物30を、移動先のエリアに下ろすために、パレット40ごと移動対象物30を持ち上げていたフォーク3aを下ろす操作を行なったとする。これにより、フォークリフト3は、フォーク3aを下降させるとともに、フォークを下ろす操作を行なったことを示す情報が、フォークリフト3の図示しない制御部から、情報処理装置1の図示しない受付部に送信される。
情報処理装置1の図示しない受付部が、フォーク3aを下ろす操作を行なったことを示す情報を受信すると、出力部105は、受信した時点で図示しない格納部に格納されている対象物識別子「KWR5001R」と、直前に取得した場所識別子「1階第4エリア」とを読み出す。この時点で図示しない格納部に格納されている場所識別子「1階第4エリア」が、識別子取得部104が取得した移動後場所識別子であり、出力部105は、フォークを下ろす操作に応じて、この場所識別子を、移動後場所識別子として読み出す。そして、出力部105は、読み出した対象物識別子「KWR5001R」と、移動後場所識別子「1階第4エリア」との組を、図示しない格納部等に蓄積する。このようにして、移動させた移動対象物の対象物識別子と、移動後の場所を示す移動後場所識別子との組が取得することができる。
そして、図示しない格納部に格納されていた対象物識別子「KWR5001R」を削除する。なお、場所識別子も削除して良い。
なお、出力部105は、蓄積した対象物識別子と移動前場所識別子の組と、対象物識別子と移動後場所識別子の組とを、組み合わせた情報等を、モニタ等に表示しても良い。
図9は、出力部105による出力例を示す図である。
以上、本実施の形態によれば、フォークリフトに設けられたカメラにより撮影した画像を用いて移動対象物のコードを読み取ることで、フォークリフトにより移動する移動対象物を自動検出することができ、移動対象物を低コストで適切に把握することができる。
例えば、カメラは、画角等により撮影範囲が限られているため、フォークリフトで移動させる移動対象物だけを、フォークリフトに設けられたカメラで撮影して、移動対象物のコードだけを選択的に読み出して、移動させる移動対象物だけを識別することが可能となり、正確に移動対象物を把握することができる。
また、例えば、コードは、ICタグ等と比べて安価に製造でき、また、カメラ2としては汎用性のある通常のカメラが利用可能であるため、ICタグのリーダライタ等と比べて安価に入手可能であるため、情報処理システム1000を安価に提供することができる。
また、移動前の場所のコードを読み取ることで、移動させた移動対象物と、この移動対象物の移動前の場所とを示す情報を、自動的に対応づけて取得することができ、移動対象物の移動前の移動を低コストで把握することができる。
また、移動後の場所のコードを読み取ることで、移動させた移動対象物と、この移動対象物の移動後の場所とを示す情報を、自動的に対応づけて取得することができ、移動対象物の移動後の場所を低コストで把握することができる。
また、複数のコードの組み合わせで複数の場所を示すことができ、予め準備するコードの数を削減することができる。
また、異なるカメラで場所を示す複数のコードをそれぞれ撮影することにより、コードが誤って認識されることを防ぐことができる。また、撮影したカメラによって、撮影画像から取得されたコードの組み合わせかた、例えば組み合わせ順序が特定できるため、コードの組み合わせから場所識別子を取得する際の処理速度を向上させることができる。
また、コードを、移動対象物に印刷することにより、移動対象物に配置されるコードが示す移動対象物と、このコードが配置された移動対象物との不一致を防ぐことができる。
なお、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、上記各実施の形態では、情報処理装置がスタンドアロンである場合について説明したが、情報処理装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部(例えば、ハードディスクやメモリ等の記録媒体)にアクセスしながらプログラムを実行してもよい。
なお、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、フォークリフトに設置された一以上のカメラが撮影した画像である撮影画像であって、一以上のコードが配置された領域を撮影した撮影画像を受け付ける撮影画像受付部と、撮影画像を用いて、撮影画像内の一以上のコードに対応づけられた移動対象物の識別子である一以上の対象物識別子を取得する識別子取得部と、識別子取得部が取得した対象物識別子を出力する出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図10は、上記プログラムを実行して、上記実施の形態による情報処理装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図10において、コンピュータシステム900は、CD−ROM(Compact Disk Read Only Memory)ドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図11は、コンピュータシステム900の内部構成を示す図である。図11において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM(Random Access Memory)913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANへの接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による情報処理装置等の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、上記実施の形態による情報処理装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。