以下、図面を参照しながら実施形態について説明する。
図1は、実施形態に係る商品読取システムとしての商品読取の支援システム(ロボット)1の外観構成を概略的に示す模式図である。
商品読取の支援システム(以下、単にロボットとも称する)1は、商品を特定する情報(商品特定情報)を取得(読取)するための装置である。図1に示す構成例において、ロボット1は、精算装置(レジ)2で代金を精算すべき商品を特定する情報を取得するレジ業務を支援する。たとえば、ロボット1は、利用者が利用しやすいように、人物の上半身を模した人型の外観を有する。
ロボット1は、商品の代金などを精算する精算装置2に接続する。ロボット1と精算装置2とは、商品の精算業務を行う取引システムを構成する。ロボット1および精算装置2を含む取引システムは、たとえば、コンビニエンスストアやスーバーマーケットなどの小売店などに設置される。取引システムにおいて、ロボット1は、精算装置2を設置する精算用のレジ台3の近傍に設ける。利用者は、ロボット1の手前にあるレジ台3に精算装置2で代金を精算する精算対象の商品を置く。ロボット1は、利用者がレジ台3に置いた商品から商品特定情報を読み取り、読取った商品特定情報を精算装置2へ供給する。
商品特定情報は、商品の外観から読み取れる情報であれば良い。商品特定情報は、商品のパッケージに印刷されているバーコードである。また、商品特定情報は、商品を識別可能な数字や文字などの文字列でも良いし、商品に添付されたラベルの画像でも良いし、商品全体のシルエットなどであっても良い。ロボット1は、商品の外観にあるバーコードなどの商品特定情報がスキャナやカメラで読み取れるように、レジ台3上の商品を持ち上げて動かす。また、ロボット1は、持ち上げられない商品に沿ってスキャナを動かしてバーコードなどの商品特定情報を読み取る機能も有する。
図1に示す構成例において、ロボット(本体)1は、センサ11、カメラ12、スキャナ13、第1アーム14、第2アーム15、アームスキャナ16、スピーカ17、マイク18、表示器19などを有する。
センサ11は、レジ台3に接近してきた人物、または、レジ台3に商品が置かれたことを検知するセンサである。たとえば、センサ11は、赤外線を用いて人物または商品を検知する赤外線センサである。センサ11は、人物または商品の有無を検知できるセンサであれば良い。
カメラ12は、レジ台3周辺の画像を撮影する。カメラ12は、撮影方向あるいは撮影距離などを調整することにより撮影領域を変更する機能を有する。たとえば、カメラ12は、レジ2を利用者する人物(又はレジ台3に商品を置いた人物)を撮影するための撮影領域を設定し、レジ台3の近傍にいる人物を撮影する機能を有する。また、カメラ12は、レジ台3に置かれた商品を撮影するための撮影領域を設定し、レジ台3上の画像を撮影する機能も有する。
スキャナ13は、商品の外観から商品特定情報を読み取る。本実施形態において、スキャナ13は、商品特定情報として、商品のパッケージの一部に印刷されたバーコードを読取るバーコードスキャナであるものとする。なお、スキャナ13は、商品の外観から商品特定情報であれば良く、2次元バーコードや文字列などを読み取るビデオカメラなどで構成しても良い。
第1アーム14および第2アーム15は、レジ台3に置かれた商品に対して相対的に動作する。第1アーム14および第2アーム15は、アーム部14a、15aと把持機構14b、15bとを有する。アーム部14a、15aは、ロボット1本体に取り付けられた多関節のロボットアームである。把持機構14b、15bは、商品を把持する機構である。アーム部14a、15aは、把持機構14b、15bによる把持位置を3次元的に自在に移動させるものであれば良い。たとえば、第1アーム14および第2アーム15において、把持機構14b、15bは、それぞれアーム部14a、15aの先端部分に設けられる。すなわち、第1アーム14および第2アーム15は、把持機構14b、15bで商品を把持した状態でアーム部14a、15aを動かして当該商品を持ち上げたり、回転させたりする。
把持機構14b、15bは、レジ台3上の商品を挟持したり摘まんだり吸着したりするように構成する。たとえば、把持機構14b、15bは、複数の指(2つの挟持部材、又は3〜5本の指など)で構成される。また、把持機構14b、15bは、複数の指で構成するものに限定されるものではなく、商品の一部を吸着させる機構であっても良い。また、把持機構14b、15bは、複数の指、挟持部材、および、吸着させる機構などを組み合わせて構成しても良い。
また、アームスキャナ16は、第1アーム14の動作によって読取位置が移動するスキャナである。たとえば、アームスキャナ16は、第1アーム14の先端部分に設けられ、第1アーム14の動作によって読取位置が移動する。本実施形態において、アームスキャナ16は、第1アーム14によって移動される読取位置において商品の外観から商品特定情報としてのバーコードを読み取るものとする。なお、アームスキャナ16は、第2アーム15に設けても良いし、第1アーム14および第2アーム15の両方に設けても良い。また、アームスキャナ16は、第1アーム14および第2アーム15とは別に設けても良い。
スピーカ17は、音声を出力する。スピーカ17は、利用者に対して案内などの音声を出力する。マイク18は、音声を入力する。マイク18は、利用者が発した音声を入力する。スピーカ17およびマイク18は、利用者と対話形式で音声の入出力を行う対話装置を構成するものとしても良い。表示器19は、画像を表示する。たとえば、表示器19は、画像またはテキストなどによる利用者に対する案内を表示する。スピーカ17、マイク18および表示器19は、ユーザインターフェースとして機能する。
次に、実施形態に係る商品読取装置としてのロボット1における制御系の構成について説明する。
図2は、実施形態に係る商品読取システム(商品読取の支援システム)としてのロボット1の制御系の構成例を示すブロック図である。
ロボット1は、システムコントローラ(制御装置)21、商品読取装置(商品リーダ)22、アーム装置23、対話装置(ユーザインターフェース)24、通信装置(通信モジュール)25などを有する。
システムコントローラ21は、ロボットにおける各装置を統括的に制御する。図2に示す構成例において、システムコントローラ21は、プロセッサ31、メモリ32、インターフェース(I/F)33を有する。
プロセッサ31は、プログラムを実行することにより各種の処理を実現する。プロセッサ31は、たとえば、CPUである。メモリ32は、ROM、RAMおよび書換え可能な不揮発性メモリなどのメモリで構成する。たとえば、メモリ32は、プログラムおよび制御データなどを記憶する不揮発性のメモリを含む。また、メモリ32は、データを一時的に格納するためのRAMなどのワーキングメモリを含む。
メモリ32が記憶するプログラムには、基本プログラム(OS)の他、各種のアプリケーションプログラムが含まれる。アプリケーションプログラムには、後述する各種の処理を実行するためのプログラムなどが含まれる。プロセッサ31は、メモリ32が記憶する各種のプログラムを実行することにより後述する各種の処理を実現する。
インターフェース(I/F)33は、ロボット1にける各装置と通信するためのインターフェースである。
プロセッサ31は、インターフェース33を介して各装置に制御指示を与えたり、各装置からの情報を取得したりする。たとえば、プロセッサ31は、商品読取装置22から商品特定情報の読取結果や人物の検知結果などを示す情報を取得する。また、プロセッサ31は、第1アーム14および第2アーム15を用いて商品を把持することをアーム装置23へ指示する。
次に、商品読取装置22の制御系の構成例について説明する。
商品読取装置22は、商品から商品特定情報を読み取るものである。また、商品読取装置22は、人物や商品などを検知する機能を有する。図2に示す構成例において、商品読取装置22は、プロセッサ41、メモリ42、インターフェース(I/F)43、画像メモリ44、カメラ駆動機構45、センサ11、カメラ12およびスキャナ13などを有する。
プロセッサ41は、プログラムを実行することにより各種の処理を実現する。プロセッサ41は、たとえば、CPUである。メモリ42は、ROM、RAMおよび書換え可能な不揮発性メモリなどのメモリで構成する。たとえば、メモリ42は、プログラムおよび制御データなどを記憶する不揮発性のメモリを含む。また、メモリ42は、データを一時的に格納するためのRAMなどのワーキングメモリを含む。
インターフェース(I/F)43は、システムコントローラ21と通信するためのインターフェースである。
画像メモリ44は、カメラ12が撮影した画像を記憶する。カメラ駆動機構45は、カメラ12を制御する。カメラ駆動機構45は、カメラ12の向きなどを移動させてカメラ12が撮影する領域を制御するようにしても良い。
プロセッサ41は、メモリ42の記憶領域42a〜42eに記憶するプログラムを実行することにより種々の処理を実現する。たとえば、記憶領域42aは、人物および物を特定する処理を実行するためのプログラムを格納するものとする。プロセッサ41は、記憶領域42aが記憶するプログラムを実行することにより、人物特定部あるいは物特定部として機能する。たとえば、プロセッサ41は、人物特定部として、カメラ12が撮影した画像を用いて利用者がレジ2の前(レジ台3の前)にいるかを確認する。また、プロセッサ41は、カメラ12が撮影した画像から利用者の特徴(性別、年齢など)を推測するようにしても良い。また、プロセッサ41は、物特定部として、レジ台3の上に商品があるかを確認するようにしても良い。
記憶領域42bは、物品の大きさおよび形状などを認識する処理を行うためのプログラムを格納するものとする。プロセッサ41は、記憶領域42bが記憶するプログラムを実行することにより、物の大きさおよび形状などを認識する外観認識部として機能する。たとえば、プロセッサ41は、カメラ12が撮影した画像から、レジ台3上にある商品の大きさおよび形状などの特徴を示す情報を認識する。本実施形態において、プロセッサ41は、外観認識部として、商品が袋状の商品か箱状の形状を有する商品か、筒状の形状を有する商品か、袋状の外観を有する商品かを確認する。
記憶領域42cは、位置を検出する処理を実行するためのプログラムを格納するものとする。プロセッサ41は、記憶領域42cが記憶するプログラムを実行することにより、位置を検出する位置検出部として機能する。たとえば、プロセッサ41は、カメラ12が撮影した画像に基づいてレジ台3上にある商品の位置を検出する。
記憶領域42dは、商品特定情報としてのバーコードを検出する処理を実行するためのプログラムを格納するものとする。プロセッサ41は、記憶領域42dが記憶するプログラムを実行することにより商品に付されているバーコードを検出するバーコード検出部として機能する。たとえば、プロセッサ41は、スキャナ13またはアームスキャナ16が読取る画像からレジ台3上にある商品に付されたバーコードを検出する。
記憶領域42eは、商品特定情報としての文字を認識する処理を実行するためのプログラムを格納するものとする。プロセッサ41は、記憶領域42eが記憶するプログラムを実行することにより商品に付されている文字を認識する文字認識部(OCR処理部)として機能する。たとえば、プロセッサ41は、カメラ12が撮影する画像からレジ台3上にある商品に付された商品特定情報としての文字を認識する。
次に、アーム装置23の制御系の構成例について説明する。
アーム装置23は、第1アーム14および第2アーム15を動作させるものである。図2に示す構成例において、アーム装置23は、プロセッサ51、メモリ52、インターフェース(I/F)53、アーム駆動機構54、第1アーム14、第2アーム15およびアームスキャナ16などを有する。
プロセッサ51は、プログラムを実行することにより各種の処理を実現する。プロセッサ51は、たとえば、CPUである。メモリ52は、ROM、RAMおよび書換え可能な不揮発性メモリなどのメモリで構成する。たとえば、メモリ52は、プログラムおよび制御データなどを記憶する不揮発性のメモリを含む。また、メモリ52は、データを一時的に格納するためのRAMなどのワーキングメモリを含む。
インターフェース(I/F)53は、システムコントローラ21と通信するためのインターフェースである。
アーム駆動機構54は、第1アーム14および第2アーム15の動きを制御する。たとえば、アーム駆動機構54は、システムコントローラ21からの動作指示に応じて第1アーム14および第2アーム15をそれぞれ動かす。たとえば、アーム駆動機構54は、システムコントローラ21からの指示に応じてレジ台3上にある商品を把持する。また、アーム駆動機構54は、指示に応じて把持した商品を動かす。さらに、アーム駆動機構54は、指示に応じて第1アーム14を動かしてアームスキャナ16による読取位置を移動させる。
次に、対話装置24の制御系の構成例について説明する。
対話装置24は、ユーザインターフェースとして機能する。対話装置24は、ユーザに音声や画像などで情報を提供する。また、対話装置24は、ユーザからの情報を入力し、入力した情報に対する応答としての情報を出力する。図2に示す構成例において、対話装置24は、プロセッサ61、メモリ62、インターフェース(I/F)63、スピーカ17、マイク18、表示器19などを有する。
プロセッサ61は、プログラムを実行することにより各種の処理を実現する。プロセッサ61は、たとえば、CPUである。メモリ62は、ROM、RAMおよび書換え可能な不揮発性メモリなどのメモリで構成する。インターフェース(I/F)63は、システムコントローラ21と通信するためのインターフェースである。
プロセッサ61は、システムコントローラ21からの指示などに応じてスピーカ17から音声を出力する。また、プロセッサ61は、マイク18に入力された音声情報をシステムコントローラ21へ供給する。これにより、プロセッサ61は、スピーカ17およびマイク18を用いて利用者との対話形式による音声の入出力を行う。また、プロセッサ61は、システムコントローラ21からの指示などに応じて表示器19に情報を表示する。
次に、通信装置25の制御系の構成例について説明する。
通信装置25は、外部装置と通信するための通信インターフェースである。本実施形態において、通信装置25は、精算装置2と通信する。図2に示す構成例において、通信装置25は、プロセッサ71、メモリ72、インターフェース(I/F)73、通信部74などを有する。
プロセッサ71は、プログラムを実行することにより各種の処理を実現する。プロセッサ71は、たとえば、CPUである。メモリ72は、ROM、RAMおよび書換え可能な不揮発性メモリなどのメモリで構成する。インターフェース(I/F)73は、システムコントローラ21と通信するためのインターフェースである。通信部74は、外部装置と通信するためのインターフェースである。図2に示す構成例では、通信部74は、精算装置2と通信するためのインターフェースを含む。
なお、商品読取システムとしてのロボット1は、精算装置2と一体的に構成しても良い。また、ロボット1には、商品の代金を精算する機能を具備しても良い。たとえば、ロボット1には、クレジットカードあるいは電子マネーなどでの決済機能を設けても良い。この場合、ロボット1は、商品特定情報の読取りだけでなく、商品特定情報に基づくクレジットカードあるいは電子マネー等での決済も可能となる。
次に、実施形態に係る商品読取装置としてのロボット1による商品読取業務の支援処理(商品読取処理)の動作について説明する。
図3及び図4は、実施形態に係るロボット1の動作例を説明するためのフローチャートである。
待機状態において、商品読取装置22のプロセッサ41は、レジ台3の近傍を検知範囲として人物を検知するセンサ11を用いて人物の有無を監視する(ACT11)。センサ11が人物を検知すると(ACT11、YES)、プロセッサ41は、撮影領域をレジ台3の近傍となる人物検出用の撮影領域にセットしたカメラ12で画像を撮影する(ACT12)。人物検出用の撮影領域は、センサ11が検知した人物、あるいは、商品の精算などでレジ台3の手前に現れた人物を撮影できるような撮影領域であれば良い。
たとえば、プロセッサ41は、カメラ駆動機構45によりレジ台3の手前の空間を含む領域を人物検出用の撮影範囲としてカメラ12に設定する。また、プロセッサ41は、センサ11が検知した人物の位置を推定し、推定した人物の位置に応じてカメラ12の向きや位置などを制御しても良い。なお、プロセッサ41は、カメラ12が撮影した画像を画像メモリ44に保存する。また、プロセッサ41は、連続的に複数の画像をカメラ12で撮影し、撮影した複数の画像を画像メモリ44に保存しても良い。
カメラ12によりレジ台3近傍の画像を撮影すると、プロセッサ41は、カメラ12が撮影した撮影画像に人物が存在するかを判断する(ACT13)。これにより、プロセッサ41は、カメラ12が撮影する撮影画像からレジ台3の近傍にいる人物(利用者)を検出できる。プロセッサ41は、撮影画像からの人物の検出結果に基づいてレジ台3の近傍に利用者がいるか否かを判断する。利用者がいると判断できない場合(ACT13、NO)、プロセッサ41は、ACT11へ戻り、上述の処理を再度実行する。
利用者がいると判断した場合(ACT13、YES)、プロセッサ41は、コントローラ21へ利用者を検知した旨を通知する。利用者を検知した旨の通知を受けると、システムコントローラ21は、対話装置24を用いた当該利用者に対する案内を行う(ACT14)。たとえば、システムコントローラ21は、対話装置24に対して音声指示を出力することにより、スピーカ17から「いらっしゃいませ」などの挨拶の音声を出力する。また、システムコントローラ21は、音声案内とともに表示器19に案内を表示するようにしても良い。
また、利用者を検知した場合、プロセッサ41は、撮影領域としてレジ台3上の商品配置位置を含む商品検出用の撮影領域をセットしたカメラ12で画像を撮影する(ACT15)。商品検出用の撮影領域は、レジ台3上に置かれた精算(登録)対象の商品が置かれる領域を含むものであれば良い。たとえば、商品検出用の撮影領域は、レジ台3上の商品が載置可能な領域、あるいは、レジ台3上に設けた商品の配置位置を含む領域であっても良い。ここで、プロセッサ41は、カメラ12が撮影する商品検出用の撮影領域の画像を画像メモリ44に保存するようにしても良い。
カメラ12により商品検出用の撮影領域を撮影すると、プロセッサ41は、カメラ12が撮影した画像(商品検出用の撮影画像)に商品が存在するかを判断する(ACT16)。これにより、商品読取装置22は、レジ台3上に置かれた商品を検出できる。なお、プロセッサ41は、カメラ12の撮影画像から商品を検出する手法以外の手法でレジ台3上の商品の有無を判断するようにしても良い。
レジ台3上に商品がないと判断した場合(ACT16、NO)、プロセッサ41は、ACT15へ戻り、上述の処理を再度実行する。すなわち、商品が検出できなければ、プロセッサ41は、対話装置24を用いてレジ台3に商品を置くことを促す案内を音声や表示などで行う。たとえば、プロセッサ41は、対話装置24のスピーカ17から「商品をレジ台の上に置いて下さい」と発話するようにしても良い。このような案内と共に、プロセッサ41は、レジ台3上の画像撮影と商品検出とを繰り返し実行する。
レジ台3上に商品があると判断した場合(ACT16、YES)、プロセッサ41は、レジ台3上にある商品がアーム装置23で把持すべきものであるかを判定する。すなわち、プロセッサ41は、レジ台3上にある商品の形状を特定する(ACT17)。本実施形態において、プロセッサ41は、商品の形状が、袋状、箱状、筒状の何れであるかを特定するものとする。
ここで、袋状の商品とは、所定の把持サイズ以内であれば、アーム装置23が把持できるものであり、外観の形状が変形するものとする。袋状の商品は、所定の大きさ以内であれば、アーム装置23が把持した状態で持ち上げたり回転させたりできる形状であれば良い。また、箱状の商品とは、所定の把持サイズ以内であれば、アーム装置23が把持できる形状を有する固形の物品であるものとする。箱状の商品は、6面体の形状に限定されるものではなく、所定の大きさ以内であれば、アーム装置23が把持した状態で持ち上げたり回転させたりできる形状であれば良い。
なお、袋状の商品または箱状の商品が把持できるか否かは、把持サイズではなく、当該商品の重さで判定しても良い。この場合、レジ台3上の商品の重さは、レジ台3に設けた重量センサなどで計測するようにすれば良い。
また、筒状の商品とは、袋状および箱状以外のものであり、アーム装置23で把持できない(把持すべきでない)形状を有する物品であるものとする。筒状の商品としては、円筒形状の物品に限らず、多角柱、円錐、角錐などのアーム装置23で把持できない形状の物品も含むものとする。たとえば、筒状の商品は、ペットボトル、缶、瓶、カップなどの物品を想定する。
レジ台3上にある商品の形状が袋状であると判断した場合(ACT18、YES)、プロセッサ41は、当該商品のサイズが袋の把持サイズ以内であるかを判断する(ACT19)。本実施形態において、アーム装置23は、袋の把持サイズを超えるサイズの袋状の商品を把持できない(把持すべきでない)ものとする。なお、袋状の商品が把持できるか否かは、当該商品の重さで判定するようにしても良い。
商品が袋状であると判断した場合、プロセッサ41は、当該商品を把持するか(把持できるか)どうかを当該商品の大きさで判断する。プロセッサ41は、レジ台3上を撮影した画像(商品検出用の撮影画像)における当該商品の画像領域から当該商品の大きさを特定(推定)する。本実施形態において、袋状の商品の大きさは、商品検出用の撮影画像において検出する当該商品のエッジ位置から特定する対角線の長さとする。ただし、袋状の商品の大きさは、当該商品の画像領域の画素数や当該商品の画像領域の面積の推定値などで定義しても良い。
たとえば、プロセッサ41は、商品検出用の撮影画像において当該商品の画像領域とする矩形領域のエッジとなる4点を検出する。プロセッサ41は、検出した4点からなる矩形の対角線の長さを当該商品の大きさとする。この場合、袋の把持サイズとしては、2つのアーム14,15で両端を摘まんで持ち上げられる商品の大きさ(対角線の長さ)の最大値が設定される。たとえば、袋の把持サイズを500mmすれば、プロセッサ41は、撮影画像における商品のエッジから特定する対角線の長さが500mm以内であるか否かを判定する。
袋状と判定した当該商品の大きさが袋の把持サイズを超えると判断した場合(ACT19、NO)、プロセッサ41は、当該商品をアーム装置23で把持できないと判断する。当該商品をアーム装置23で把持できないと判断した場合、プロセッサ41は、ACT24へ進み、アームスキャナ16による商品特定情報の読取処理を行う。
袋状と判定した当該商品が袋の把持サイズ以内であると判断した場合(ACT19、YES)、プロセッサ41は、当該商品をアーム装置23で把持することをシステムコントローラ21に指示する。当該商品をアーム装置23で把持することをシステムコントローラ21に指示する。プロセッサ41は、レジ台3上を撮影した撮影画像に基づき、当該商品の位置を示す位置情報と、形状、大きさ、中心、向き等の当該商品の形状を示す形状情報とを特定する。プロセッサ41は、撮影画像から特定した商品の位置情報および形状情報を当該商品が把持対象である旨とともにシステムコントローラ21へ通知する。
システムコントローラ21のプロセッサ31は、商品読取装置22からの情報に基づいて当該商品をアーム装置23で把持するための把持設定を行う(ACT20)。当該商品が袋状である場合、プロセッサ31は、袋状の商品を把持するためのアルゴリズムと当該商品の位置情報と形状情報とに基づいて当該商品に対する把持設定を行う。ここで、プロセッサ31は、2つのアーム14,15が袋状の商品の両端を摘まむように把持するようにアーム装置23に対する把持設定を行うものとする。
図5は、袋状の商品P1を2つのアーム14および15で把持する場合の動作例を説明するための図である。
アーム装置23は、各アーム部14a,15aの先端部に設けた把持機構14b,15bが袋状の商品の両端をそれぞれ摘まむように各アーム14,15を動かす。各アーム14,15は、把持機構14b、15bが商品の両端の外側から商品の中心に向かって商品と平行にレジ台3の上面をこするように動かす。アーム装置23は、一方のアーム14(15)の把持機構14b(15b)が商品の長手方向の一端を摘まんだ後、他方のアーム15(14)の把持機構15b(14b)が当該商品の長手方向の反対側の一端を摘まむように動かす。
図5に示す例では、第1アーム14が把持機構14bで商品P1の一端を摘まんだ後、第2アーム15が、把持機構15bを矢印a方向に動かす。第2アーム15は、把持機構15bの把持位置が当該商品の端部に到達すると、把持機構15bが当該商品の端部を摘まむ。これにより、把持機構14bと15bとは、商品の長手方向における両端を摘まむことができる。
システムコントローラ21のプロセッサ31は、アーム装置23を上述の動作で商品の両端を把持できるように当該商品の位置情報および形状情報に応じて把持設定を行う。
また、レジ台3上にある商品の形状が箱状であると判断した場合(ACT21、YES)、プロセッサ41は、箱状の商品のサイズが箱の把持サイズ以内であるかを判断する(ACT22)。本実施形態において、アーム装置23は、箱の把持サイズを超える幅を有する箱状の商品を把持できない(把持すべきでない)ものとする。すなわち、商品が箱状であると判断した場合、プロセッサ41は、当該商品を把持するか(把持できるか)どうかを当該商品の幅で判断する。
たとえば、プロセッサ41は、レジ台3上を撮影した画像(商品検出用の撮影画像)から当該商品の幅を特定(推定)する。商品検出用の撮影画像はレジ台3を上方から撮影した画像であるので、商品検出用の撮影画像にはレジ台3上に置かれた箱状の商品が矩形の画像として撮影される。プロセッサ41は、商品検出用の撮影画像における当該商品の矩形領域のエッジとなる4点を検出する。また、箱状と判定した商品が完全な矩形の画像として撮影されない場合、プロセッサ41は、当該商品の画像領域に外接する矩形領域のエッジとなる4点を検出しても良い。
プロセッサ41は、商品検出用の撮影画像から検出した当該商品の矩形領域のエッジとする4点から当該商品の幅を推定する。商品の幅は、把持機構14b、15bが把持する部分の幅であるものとする。この場合、箱の把持サイズとしては、アーム14、15の把持機構14b、15bが商品の側面から挟持できる商品の幅の最大値が設定される。たとえば、箱の把持サイズを100mmすれば、プロセッサ41は、商品検出用の撮影画像から検出した箱状の商品の幅が100mm以内であるか否かを判定する。なお、箱状の商品が把持できるか否かは、当該商品の重さで判定するようにしても良い。
プロセッサ41は、レジ台3上にある箱状の商品の幅が箱の把持サイズを超えると判断した場合(ACT22、NO)、当該商品をアーム装置23で把持できないと判断する。当該商品を把持できないと判断した場合、プロセッサ41は、ACT24へ進み、アームスキャナ16を用いた商品特定情報の読取処理を行う。
当該商品の幅が箱の把持サイズ以内であると判断した場合(ACT22、YES)、プロセッサ41は、当該商品をアーム装置23で把持することをシステムコントローラ21に指示する。プロセッサ41は、レジ台3上を撮影した撮影画像に基づき、当該商品の位置を示す位置情報と、形状、大きさ、中心、向き等の当該商品の形状を示す形状情報とを特定する。プロセッサ41は、当該商品の位置情報および形状情報を当該商品が把持対象である旨とともにシステムコントローラ21へ通知する。
システムコントローラ21のプロセッサ31は、商品読取装置22からの情報に基づいて、当該商品をアーム装置23で把持するための把持設定を行う(ACT22)。当該商品が箱状である場合、プロセッサ31は、箱状の商品を把持するためのアルゴリズムと当該商品の位置情報と形状情報とに基づいて当該商品に対する把持設定を行う。
図6は、箱状の商品P2を2つのアーム14および15で把持した状態の例を説明するための図である。
図6に示す例において、アーム装置23は、各アーム部14a、15aの先端部に設けた把持機構14b、15bで箱状の商品の両側を把持するものとする。たとえば、アーム装置23は、商品に対して垂直方向の上方からレジ台3に向かって各アーム部14a、15aの先端部(把持機構14b、15b)を動かして商品の両側を把持する。プロセッサ31は、アーム装置23が上述したような動作で商品の両側を把持できるように、当該商品の位置情報および形状情報に応じた把持設定を行う。
また、レジ台3上にある商品の形状が筒状であると判断した場合(ACT21、NO)、プロセッサ41は、当該商品をアーム装置23で把持できない形状であると判断する。当該商品をアーム装置23で把持できないと判断した場合、プロセッサ41は、ACT24へ進み、アームスキャナ16による商品特定情報の読取処理を行う。
システムコントローラ21による商品の把持設定が実施されると、アーム装置23のプロセッサ51は、把持設定に従って各アーム14.15を駆動させて商品を把持する(ACT30)。
たとえば、袋状の商品を把持する場合、プロセッサ51は、把持設定に従って把持機構14bを商品の外側から当該商品の中心に向かって動かして商品の一端を摘まむ。把持機構14bが商品の一端を摘まんだ後、プロセッサ51は、図5に示すように、第2アーム15を把持設定に従って動かして把持機構15bで当該商品の反対側の一端を摘まむ。これにより、アーム装置23は、2つのアーム14、15で商品の両端を摘まむように把持する。
また、箱状の商品を把持する場合、プロセッサ51は、把持設定で指定される位置に基づいてアーム14、15の先端部(把持機構)をレジ台3の上方から当該商品の両側に動かす。プロセッサ51は、アーム14で商品の一端部を上から把持し、アーム15で当該商品の他端部を把持する。これにより、アーム装置23は、図6に示すように、2つのアーム14、15で商品の両側をそれぞれ把持する。
アーム14、15が商品を把持すると、プロセッサ51は、システムコントローラ21の指示に応じて、把持した商品を持ち上げてスキャナ13の読取位置までに移動させる(ACT31)。持ち上げた商品をスキャナ13の読取位置まで移動させると、プロセッサ51は、当該商品をスキャナ13の読取位置において所定の方向および角度で回転させる(ACT32)。プロセッサ51は、システムコントローラ21が指定する回転手順でアーム14、15が把持する商品を回転させる。
たとえば、プロセッサ51は、商品を前方向(スキャナ13に向かって下方向)に90回転させた後、前方向とは逆の後方向に180℃回転させる。なお、商品が箱状であれば、システムコントローラ21は、箱の側面がスキャナ13で読み取れるように前方向及び後方向とは直交する横方向に回転させても良い。
アーム装置23により商品を回転させるとともに、システムコントローラ21のプロセッサ31は、当該商品の商品特定情報(バーコード)の読取りを商品読取装置22へ指示する。これに応じて、商品読取装置22のプロセッサ41は、スキャナ13を用いてアーム装置23が回転させる商品からバーコードを読み取る読取処理を行う(ACT33)。本実施形態では、スキャナ13が読取る商品特定情報がバーコードであるものとしている。
すなわち、プロセッサ41は、アーム装置23が商品の回転させている間、スキャナ13によるバーコードの読取処理を実行する。スキャナ13は、アーム14、15によって読取位置で回転される商品の外観からバーコードを読取る。これにより、プロセッサ41は、スキャナ13が商品特定情報としてのバーコードを読取ったか否かを判断する(ACT34)。
スキャナ13によりバーコードが読取れた場合(ACT34、YES)、プロセッサ41は、バーコードとして読取った商品特定情報を読取結果として出力する(ACT43)。たとえば、商品からバーコードが読取ると、プロセッサ41は、スキャナ13で読取ったバーコードで特定される商品を示す情報を通信装置25を介して精算装置2へ出力する。
また、スキャナ13によりバーコードが読み取れなかった場合(ACT34、NO)、プロセッサ41は、所定の条件に基づいてバーコードの読取処理をリトライするか否かを判断する(ACT35)。たとえば、プロセッサ41は、上述したアーム装置23による商品の回転を2回実行し、バーコードの読取りを試みるものとする。
スキャナ13によるバーコードの読取処理をリトライすると判断した場合(ACT35、YES)、プロセッサ41は、ACT32へ戻り、上述した処理を繰り返す。
また、リトライしないと判断した場合(ACT35、NO)、プロセッサ41は、商品のパッケージを引き伸ばした状態でスキャナ13による商品特定情報(パーコード)の読取処理(引き伸ばし状態での読取処理)を実行するか否かを判断する(ACT36)。商品のパッケージを引き伸ばした状態とは、当該商品の両端を把持している2つのアーム14、15が把持位置間を引っ張った状態である。
商品パッケージの引き伸ばしは、商品のパッケージにおける折れやしわ等が原因でパッケージに印刷されているバーコードが読取れない場合であることを想定している。つまり、パッケージの両端(2つのアームによる把持位置間)を引っ張ってバーコードが読取れる可能性がある商品が引き伸ばしの対象となる。本実施形態では、袋状の商品に対して、引き伸ばし状態でのバーコードの読取処理を実行するものとする。この場合、プロセッサ41は、当該商品が袋状あるか否かにより、当該商品に対して引き伸ばし状態での読取処理を行うか否かを判断する。
引き伸ばし状態での読取処理を実行すると判断した場合(ACT36、YES)、プロセッサ41は、システムコントローラ21に対して引き伸ばし状態での読取処理を実行する旨を指示する。引き伸ばし状態の読取処理の指示を受けると、システムコントローラ21のプロセッサ31は、アーム装置23に対して当該商品のパッケージを引き伸ばす指示を送る(ACT37)。
アーム装置23は、システムコントローラ21からの指示に応じて、両アーム14、15が把持している商品の両端を互いに引っ張るように動作させる。ここで、第1アーム14の把持機構14bと第2アーム15の把持機構15bとは、それぞれ商品の両端を把持している。このため、プロセッサ51は、把持機構14b(第1アーム14の把持位置)と把持機構15b(第2アーム15の把持位置)とを互いに反対向きに一定の動力で動かすように制御する。つまり、プロセッサ51は、各アーム14、15の把持位置間を一定の力で引っ張るように、アーム駆動機構54でアーム部14aとアーム部15aとを動作させる。把持位置間を一定の力で引っ張ると、アーム14、15は、商品のパッケージを引き伸ばした状態で当該商品の両端を把持するものとなる。
把持位置間を引っ張ると、プロセッサ51は、把持位置間を引っ張った状態(パッケージを引き伸ばした状態)のままで把持する商品をスキャナ13の読取位置で回転させる(ACT38)。たとえば、アーム装置23のプロセッサ51は、把持位置間を引っ張った状態で当該商品をスキャナ13の読取位置に持ち上げる。スキャナ13の読取位置に当該商品を持ち上げた後、プロセッサ51は、当該商品をスキャナ13の読取位置において所定の方向および角度で回転させる。アーム14、15が引っ張った状態で把持する商品を回転させる回転手順は、上記ACT32と同様な手順であっても良い。
アーム装置23に引き伸ばした状態の商品を回転させるとともに、システムコントローラ21のプロセッサ31は、当該商品のバーコード(商品特定情報)の読取りを商品読取装置22へ指示する。これに応じて、商品読取装置22のプロセッサ41は、スキャナ13を用いてアーム装置23が回転させる商品から商品特定情報としてのバーコードを読み取る処理を行う(ACT39)。
すなわち、プロセッサ41は、アーム装置23が引き伸ばした状態の商品の回転させている間、スキャナ13によるバーコードの読取処理を実行する。スキャナ13は、アーム14、15によって読取位置で回転される商品の外観からバーコードを読取る。これにより、プロセッサ41は、スキャナ13が商品特定情報としてのバーコードを読取ったか否かを判断する(ACT40)。
スキャナ13によりバーコードが読取れた場合(ACT40、YES)、プロセッサ41は、バーコードとして読取った商品特定情報を読取結果として出力する(ACT43)。たとえば、商品からバーコードを読取ると、プロセッサ41は、スキャナ13で読取ったバーコードで特定される商品を示す情報を通信装置25を介して精算装置2へ出力する。
また、スキャナ13が商品特定情報を読み取れなかった場合(ACT40、NO)、プロセッサ41は、所定の条件に基づいて引き伸ばした状態での読取処理をリトライするか否かを判断する(ACT41)。引き伸ばした状態でのバーコードの読取処理をリトライすると判断した場合(ACT35、YES)、プロセッサ41は、ACT38へ戻り、上述した処理を繰り返す。
リトライしないと判断した場合(ACT41、NO)、プロセッサ41は、カメラ12が撮影する撮影画像による商品認識処理(商品特定情報の読取処理)を実行する(ACT42)。カメラ12の撮影画像による商品認識処理は、汚れなどでバーコードが読取れなかった商品を処理対象として想定する。商品認識処理において、プロセッサ41は、アーム装置23が把持する商品をカメラ12で撮影し、カメラ12が撮影した撮影画像から商品を認識する。商品認識処理については、後で詳細説明するものとする。
プロセッサ41は、商品認識処理による認識結果を商品特定情報の読取結果として出力する(ACT43)。たとえば、商品認識処理で商品が認識できなかった場合、プロセッサ41は、通信装置25を介して商品特定情報が読取れなった旨を精算装置2へ出力する。商品認識処理で商品が認識できた場合、プロセッサ41は、通信装置25を介して認識した商品を示す情報を精算装置2へ出力する。
次に、アームスキャナ16によるバーコードの読取処理について説明する。
図7は、アームスキャナ16によるバーコードの読取処理の動作例を説明するためのフローチャートである。
上述した動作例によれば、本システムは、形状が袋状又は箱状でない商品、或は、サイズが規定値を超える商品をアームスキャナ16による読取処理の対象とする。アームスキャナ16は、アーム14の先端部に設けられ、アーム14の移動によって読取位置が動作する。アームスキャナ16による読取処理では、レジ台3に置かれた商品に沿ってアーム14の先端部を動かすことによりアームスキャナ16で商品面をスキャンする。
商品読取装置22のプロセッサ41は、商品がアームスキャナ16による読取処理の対象と判断すると、システムコントローラ21へアームスキャナ16による読取処理を要求する。また、プロセッサ41は、カメラ12が撮影した商品検出用の画像から特定した種々の情報(商品の形状、商品の中心位置、商品のエッジ位置など)をシステムコントローラ21へ供給する。アームスキャナ16による読取処理を実行する場合、システムコントローラ21のプロセッサ31は、当該商品の形状を確認する。
当該商品が袋状と判断した場合(ACT61、YES)、システムコントローラ21のプロセッサ31は、商品の上面をスキャナするようにアームスキャナ16を動かすことをアーム装置23へ指示する。たとえば、プロセッサ31は、当該商品のエッジ位置に基づいてアームスキャナ16がスキャンする位置(移動経路)を決定する。
たとえば、プロセッサ31は、当該商品の4隅と推定される4つのエッジを結ぶようにロの字型にアームスキャナ16を移動させる第1経路を設定する。さらに、プロセッサ31は、第1経路でバーコードが読取れなかった場合に4つのエッジからなる対角線に沿ってアームスキャナ16を移動させる第2経路を設定する。これにより、アームスキャナ16は、レジ台3上に置かれた商品の上面を全体的にスキャナすることが可能となる。また、第1経路と第2経路とを設定することで、アームスキャナ16は、第1経路で商品の外周付近を先にスキャナした後に第2経路で商品全体をスキャナできる。
アーム装置23のプロセッサ51は、システムコントローラ21からの指示に従ってアームスキャナ16を移動させて袋状の商品の上面をスキャンする(ACT62)。プロセッサ51は、アーム駆動機構54によりシステムコントローラ21から指示される経路をアームスキャナ16が移動するようにアーム14を駆動させる。アームスキャナ16は、アーム14によってスキャン位置を移動しながらレジ台3上に置かれた袋状の商品の上面からバーコードをスキャンする。
アーム装置23のプロセッサ51は、アームスキャナ16による読取り結果をシステムコントローラ21へ供給する。システムコントローラ21のプロセッサ31は、アーム装置23からのバーコードの読取結果を商品特定情報の読取結果として通信装置25を介して精算装置2へ出力する。
また、当該商品が箱状と判断した場合(ACT63、YES)、システムコントローラ21のプロセッサ31は、商品の上面をスキャナするようにアームスキャナ16を動かすことをアーム装置23へ指示する。たとえば、プロセッサ31は、当該商品のエッジ位置に基づいてアームスキャナ16がスキャンする位置(移動経路)を決定する。たとえば、プロセッサ31は、上述した例と同様、商品の4隅と推定される4つのエッジを結ぶロの字型の第1経路と4つのエッジの対角線に沿う第2経路とを設定する。
アーム装置23のプロセッサ51は、システムコントローラ21からの指示に従ってアームスキャナ16を移動させて箱状の商品の上面をスキャンする(ACT64)。プロセッサ51は、アーム駆動機構54によりシステムコントローラ21から指示される経路をアームスキャナ16が移動するようにアーム14を駆動させる。アームスキャナ16は、アーム14によってスキャン位置を移動しながらレジ台3上に置かれた箱状の商品の上面からバーコードをスキャンする。
アーム装置23のプロセッサ51は、アームスキャナ16によるバーコードの読取結果をシステムコントローラ21へ供給する。システムコントローラ21のプロセッサ31は、アーム装置23からの読取結果によってアームスキャナ16が当該商品の上面からバーコードを読み取れたか否かを判断する(ACT65)。商品の上面からバーコードが読取れた場合(ACT65、NO)、プロセッサ31は、バーコードの読取結果を通信装置25を介して精算装置2へ出力する。
商品の上面からバーコードが読取れなかった場合(ACT65、YES)、プロセッサ31は、当該商品の側面をアームスキャナ16でスキャンすることをアーム装置23へ指示する。たとえば、プロセッサ31は、当該商品のエッジ位置に基づいてアームスキャナ16が当該商品の側面をスキャンするための経路を設定する。
アーム装置23のプロセッサ51は、システムコントローラ21からの指示に従ってアームスキャナ16を移動させて箱状の商品の側面をスキャンする(ACT66)。プロセッサ51は、アーム駆動機構54によりアームスキャナ16をレジ台3上の商品の側面に沿って移動させながら当該商品の側面からバーコードをスキャンする。システムコントローラ21のプロセッサ31は、アーム装置23からのバーコードの読取結果を商品特定情報の読取結果として通信装置25を介して精算装置2へ出力する。
当該商品が筒状(袋状でも箱状でもない)と判断した場合(ACT63、NO)、システムコントローラ21のプロセッサ31は、レジ台3上の商品の高さが所定高(たとえば、高さ100mm)以内であるか否かを判断する(ACT70)。ここで、商品の高さとは、レジ台3の上面(商品の載置面)からレジ台3に置かれた状態の商品の最上部までの高さである。商品の高さは、たとえば、カメラ12が撮影する撮影画像から推定する。また、商品の高さを検知する高さ検知用のセンサを設けても良い。所定高は、アーム14を商品の上方で動かせるかを判断する閾値である。つまり、アーム14は、所定高よりも低い位置では自在に動くことができ、所定高以上の高さでは自在に動けないものとする。
商品の高さが所定高以内である場合(ACT70、YES)、プロセッサ31は、アーム14を商品の上方で動かすことによりアームスキャナ16で商品の周面からバーコードを読取る(ACT71)。すなわち、筒状の高さが所定高以内の商品に対しては、アーム部14aを商品の上方で円を描くように動かしてアームスキャナ16で商品の周面を読取る。
図8は、筒状の商品P3の高さが所定高以内である場合のアームスキャナ16の動作例を説明するための図である。
本実施形態において、アーム14は、所定高以内の低い位置では自在に動くことができるものとしている。このため、商品の高さが所定高以内であれば、アーム14は、商品の上方を自在に移動できる。この結果、アーム部14aを商品の上方で動かして商品の上方から延びるアーム部14aの先端部に設けたアームスキャナ16が商品の周面を自在に移動できることとなる。図8に示す例では、アーム部14aは、商品の上方を含む空間において、矢印b1で示すように動かす。アーム部14aの先端部に設けたアームスキャナ16は、矢印b2で示すように、商品の上方を含む空間を動くアーム部14aの動作に伴って商品の周面に沿って移動する。
システムコントローラ21のプロセッサ31は、アームスキャナ16を商品の周面において所定の角度分(たとえば360度)動かてばバーコードをスキャンするようアーム装置23に指示する。ただし、商品の周面においてスキャナ13に対向する面のバーコードは、スキャナ13が読取れるものとしても良い。この場合、アームスキャナ16は、商品の周面に沿って270度程度移動するものとしても良い。
アーム装置23のプロセッサ51は、システムコントローラ21からの指示に従ってアームスキャナ16が商品の周面に沿って移動するようにアーム駆動機構54によりアーム14を駆動させる。これにより、アームスキャナ16は、レジ台3上に置かれた商品の周面に沿って移動しながら商品の周面に印刷されているバーコードをスキャンする。
アーム装置23のプロセッサ51は、アームスキャナ16によるバーコードの読取結果をシステムコントローラ21へ供給する。システムコントローラ21のプロセッサ31は、アーム装置23からのバーコードの読取結果を当該商品の商品特定情報として通信装置25を介して精算装置2へ出力する。
また、商品の高さが所定高を超える場合(ACT70、YES)、プロセッサ31は、アーム14を商品の側方で動かすことによりアームスキャナ16で商品の周面からバーコードを読取る。アーム14を商品の側方で動かす場合、アームスキャナ16を360度回転させることは難しい。このため、プロセッサ31は、商品の周面を幾つかの領域ごとに分けてバーコードのスキャンを実施する。本実施形態では、商品を上部と下部とに分けて下部および上部をそれぞれ半周分ずつスキャンする動作例について説明する。
図9は、筒状の商品P4の高さが所定高を超える場合のアームスキャナ16の動作例を説明するための図である。
図9に示す例では、アーム14の先端に設けたアームスキャナ16で、筒状の商品P4の下部の周面と上部の周面とを半周分ずつスキャンする様子を示す。たとえば、アームスキャナ16は、矢印c1に示すように、商品P4の下部の初期位置から時計まわりに周面を半周してバーコードをスキャンする。これでバーコードが読取れなければ、アームスキャナ16は、矢印c2に示すように、商品P4の上部の初期位置へ移動して商品の周面を時計まわりに半周してバーコードをスキャンする。
これでもバーコードが読取れなければ、アームスキャナ16は、再度、商品P4の下部の初期位置へ移動して商品P4の周面を反時計まわり(点線の矢印c3)に半周してバーコードをスキャンする。これでもバーコードが読取れなければ、アームスキャナ16は、再度、商品P4の上部の初期位置へ移動して商品P4の周面を反時計まわりに半周してバーコードをスキャンする。これらの動作によって、アーム14は、商品P4の側方からアームスキャナ16を動かすことで、商品P4の周面全体をアームスキャナ16でスキャンする。
まず、プロセッサ31は、アームスキャナ16を商品の下部の初期位置から商品の周面に沿って時計周りに半周分移動させてバーコードをスキャンすることをアーム装置23へ指示する。アーム装置23のプロセッサ51は、アーム14を動作させてアームスキャナ16を商品の下部の初期位置へ移動させる。アームスキャナ16を商品の下部の初期位置に移動させると、プロセッサ51は、アーム14を当該商品の側方で動作させてアームスキャナ16を商品の周面に沿って時計周りに半周分移動させる(ACT72)。これにより、アームスキャナ16は、商品の下部における半周分の周面にあるバーコードをスキャンする。
商品の下部における半周分の周面からバーコードが読取れなかった場合(ACT73、YES)、プロセッサ31は、商品の上部の半周面を時計周りにスキャンすることをアーム装置23へ指示する。アーム装置23のプロセッサ51は、システムコントローラ21からの指示に応じてアーム14を動作させてアームスキャナ16を商品の上部の初期位置へ移動させる。アームスキャナ16が商品の上部の初期位置に移動すると、プロセッサ51は、アーム14を商品の側方で動作させることで、アームスキャナ16を商品の周面に沿って時計周りに半周分移動させる(ACT74)。これにより、アームスキャナ16は、商品の上部における半周分の周面にあるバーコードをスキャンする。
商品の上部における半周分の周面からバーコードが読取れなかった場合(ACT75、YES)、プロセッサ31は、商品の下部の残りの半周面をスキャンすることをアーム装置23へ指示する。アーム装置23のプロセッサ51は、システムコントローラ21からの指示に応じてアーム14を動作させてアームスキャナ16を商品の下部の初期位置へ移動させる。アームスキャナ16が商品の下部の初期位置に移動すると、プロセッサ51は、アーム14を商品の側方で動作させることで、アームスキャナ16を商品の周面に沿って反時計周りに半周分移動させる(ACT76)。これにより、アームスキャナ16は、商品の下部における残りの半周分の周面にあるバーコードをスキャンする。
商品の下部における残りの半周分の周面からもバーコードが読取れなかった場合(ACT77、YES)、プロセッサ31は、商品の上部の残りの半周面をスキャンすることをアーム装置23へ指示する。アーム装置23のプロセッサ51は、システムコントローラ21からの指示に応じてアーム14を動作させてアームスキャナ16を商品の上部の初期位置へ移動させる。アームスキャナ16が商品の上部の初期位置に移動すると、プロセッサ51は、アーム14を商品の側方で動作させることで、アームスキャナ16を商品の周面に沿って反時計周りに半周分移動させる(ACT78)。これにより、アームスキャナ16は、商品の上部における残りの半周分の周面にあるバーコードをスキャンする。
システムコントローラ21のプロセッサ31は、上記のように動作させるアーム装置23からアームスキャナ16によるバーコードの読取結果を取得する。システムコントローラ21のプロセッサ31は、アーム装置23からのバーコードの読取結果を当該商品の商品特定情報として通信装置25を介して精算装置2へ出力する。
次に、カメラ12が撮影する撮影画像に対する商品認識処理について説明する。
図10は、カメラ12が撮影する撮影画像に対する商品認識処理の動作例を説明するためのフローチャートである。
上述した図3及び図4に示す動作例において、システムコントローラ21は、スキャナ13でバーコードが読取れない場合にカメラ12の撮影画像による商品認識処理を実行する。システムコントローラ21は、カメラ12の撮影画像による商品認識処理を行う場合、カメラ12の撮影位置へ商品を移動するようにアーム装置23へ指示する。アーム装置23のプロセッサ51は、システムコントローラ21からの指示に従ってアーム14、15が把持する商品をカメラ12の撮影位置へ移動させる(ACT81)。
商品がカメラ12の撮影位置へ移動すると、システムコントローラ21は、商品特定情報を含む画像を撮影するため、アーム14、15が把持する商品を回転させる。システムコントローラ21は、アーム装置23で商品を回転させながら商品読取装置22でカメラ12が撮影する撮影画像から商品特定情報の画像を検出するものとする。
本実施形態では、商品をカメラ12に向かって前後方向(前方(手前)とその逆の後方)に所定角度(たとえば、15度)ずつ回転させてカメラ12が撮影する画像から商品特定情報の画像を検出するものとする。また、本実施形態では、汚れ等によってスキャナ13でバーコードが読取れなかった場合を想定し、バーコード領域においてバーコードの下側に付記される数字列によって商品を認識するものとする。このため、以下の処理では、商品読取装置は、商品特定情報の画像としてバーコード領域の画像(バーコード画像)を検出し、バーコード画像における数字列から商品を認識するものとする。
すなわち、システムコントローラ21は、アーム14、15が把持する商品の回転させる角度を決定し、決定した角度での商品の回転をアーム装置23へ指示する。アーム装置23は、システムコントローラ21からの指示に応じてアーム14、15が把持する商品を回転させる(ACT82)。たとえば、システムコントローラ21は、商品を前方(手前)に所定角度(たとえば、15度)ずつ回転させる。前方への回転角度が90度に達すると、システムコントローラ21は、当該商品を後方に所定角度(たとえば、15度)ずつ回転させ、後方への回転角度が180度に達するまで商品を回転させる。
アーム装置23が商品を回転させると、システムコントローラ21は、商品読取装置22にカメラ12による撮影画像からの商品特定情報の画像(バーコード画像)の検出を指示する。商品読取装置22のプロセッサ41は、システムコントローラ21からの指示に応じてカメラ12により画像を撮影する(ACT83)。カメラ12が画像を撮影すると、商品読取装置22のプロセッサ41は、カメラ12が撮影した撮影画像からバーコード画像を検出する(ACT84)。商品読取装置22のプロセッサ41は、バーコード画像の検出の有無を示す情報をシステムコントローラ21へ通知する。
カメラ12の撮影画像からバーコード画像が検出されなかった場合(ACT85、NO)、システムコントローラ21は、さらに商品を回転させてバーコード画像の検出を行うかを判断する(ACT86)。さらに商品を回転させてバーコード画像を検出すると判断した場合(ACT86、NO)、システムコントローラ21は、ACT82へ戻り、上述した処理を再度実行する。バーコード画像の検出を終了すると判断した場合(ACT86、YES)、システムコントローラ21は、カメラ12の撮影画像による商品認識が失敗したものとし、処理を終了する。
また、カメラ12の撮影画像からバーコード画像が検出できた場合(ACT85、NO)、システムコントローラ21は、商品の向きを調整して商品認識処理用の画像をカメラ12で撮影する。たとえば、システムコントローラ21は、商品をカメラ12に向かって左右方向に所定角度(たとえば、5度)ずつ回転させた(傾けた)状態でカメラ12が撮影する撮影画像を取得する。この場合、システムコントローラ21は、アーム14、15が把持する商品を右に5度ずつ回転させてカメラ12で画像を撮影させる。右への回転角が45度になると、システムコントローラ21は、商品を元の角度に戻した後、商品を左に5度ずつ回転させてカメラ12で画像を撮影させる。左への回転角が45度になると、システムコントローラ21は、各角度で撮影した撮影画像に基づく商品認識を商品読取装置22に実行させる。
すなわち、システムコントローラ21は、アーム14、15が把持する商品の向きを決定し、決定した商品の向きをアーム装置23へ指示する。アーム装置23は、システムコントローラ21からの指示に応じてアーム14、15が把持する商品の向きを調整させる(ACT87)。たとえば、システムコントローラ21は、右への回転角度が45度に達するまで、商品を右に5度回転させることをアーム装置23に指示する。また、システムコントローラ21は、右への回転角度が45度に達すると、商品を元の角度に戻した後に商品を左に5度回転させることをアーム装置23に指示する。
アーム装置23が商品の向きを調整すると、システムコントローラ21は、商品読取装置22に商品認識用の画像の撮影を指示する。商品読取装置22は、システムコントローラ21からの指示に応じてカメラ12により画像を撮影する(ACT88)。商品読取装置22は、カメラ12が撮影した撮影画像を商品認識用の画像として画像メモリ44に保存する(ACT89)。
カメラ12で撮影した画像を商品認識用の画像として保存すると、システムコントローラ21は、カメラ12による商品認識用の画像の撮影を終了するか否かを判断する(ACT90)。カメラ12による撮影を終了しないと判断した場合(ACT90、NO)、システムコントローラ21は、ACT87へ戻り、上述した処理を再度実行する。
カメラ12による撮影を終了すると判断した場合(ACT90、NO)、システムコントローラ21は、画像処理による商品認識を商品読取装置22へ指示する。商品読取装置22のプロセッサ41は、画像メモリ44に保存したカメラ12の撮影画像(商品認識処理用の画像)に基づいて商品認識処理を実行する(ACT91)。商品読取装置22のプロセッサ41は、文字認識用のプログラムを実行することにより、カメラ12による複数の撮影画像を元にバーコード下にある数字を認識する。
たとえば、プロセッサ41は、各撮影画像からバーコード画像を抽出し、バーコード画像からバーコードの下にある数字を検出する。バーコードの下にある全ての数字を検出すると、プロセッサ41は、検出した数字を認識し、認識した数字を並べた数字情報を商品認識結果とする。プロセッサ41は、商品認識結果をシステムコントローラ21へ通知する。システムコントローラ21は、商品認識装置からの商品認識結果を通信装置25を介して精算装置2へ送信する。精算装置2は、バーコードの下の数字情報から当該商品を識別し、当該商品の精算処理を実行する。
以上のように、本実施形態に係る商品読取システムは、カメラ、アーム装置、バーコードを読取るスキャナ、プロセッサ、および、コントローラなどを有する。カメラは、レジ台に置かれた商品を撮影する。プロセッサはカメラが撮影した画像から当該商品が袋状であるか否かを判定する。コントローラは、商品が袋状である場合、前記第1アームの把持機構と前記第2アームの把持機構とにそれぞれ前記商品の両端を把持させ、前記第1アームの把持位置と前記第2アームの把持位置とを互いに引っ張った状態で前記商品を前記スキャナの読取位置に移動させる。アーム装置は、前記第1アームの把持機構と前記第2アームの把持機構とで商品の両端を把持し、2つの把持機構が把持する商品の両端を互いに引っ張った状態で当該商品をスキャナの読取位置に掲げる。スキャナは、アーム装置が両端を引っ張った状態で把持する商品から商品特定情報としてのバーコードを読取る。
これにより、本実施形態に係る商品読取システムは、商品のパッケージを両端方向に張った状態でバーコードを読取ることができる。この結果、パッケージにしわや折れなどがある商品であっても、スキャナがパッケージに印刷されたバーコードを読取り易い状態にすることができ、スキャナによるバーコードの読取りを確実に行うことができる。
また、本実施形態に係る商品読取システムのコントローラは、第1アームの把持位置と前記第2アームの把持位置とを互いに引っ張った状態で把持する商品を前記スキャナの読取位置において回転させる。これにより、本実施形態に係る商品読取システムは、パッケージにしわや折れなどがある商品であっても、パッケージに印刷されたバーコードを確実にスキャナに読み取らせることができる。
また、本実施形態に係る商品読取システムのコントローラは、スキャナが商品のバーコードを読み取れない場合、前記アームが把持する前記商品を前記カメラの撮影領域において回転させてカメラに画像を撮影させる。プロセッサは、回転する商品をカメラで撮影した画像に対する画像認識によって商品特定情報を認識する。これにより、商品読取システムは、両端を引っ張った状態でもバーコードが読取れない商品に対してはアームが把持する商品を動かしながらカメラで撮影する画像に対する画像認識によって商品特定情報を特定することができる。
また、本実施形態に係る商品読取システムのコントローラは、前記スキャナが商品特定情報としてバーコードを読取り、前記プロセッサが、前記カメラが撮影した画像からバーコード画像を抽出し、バーコードの下に記された数字の文字認識によって商品特定情報を認識する。これにより、商品読取システムは、両端を引っ張った状態でもバーコードが読取れない商品に対してはアームが把持する当該商品を動かしながらカメラで撮影する画像においてバーコードの下に記された数字の文字認識によって商品特定情報を特定することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。