IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社キーエンスの特許一覧

特開2024-113912携帯型のコード読取装置およびコード読取方法
<>
  • 特開-携帯型のコード読取装置およびコード読取方法 図1
  • 特開-携帯型のコード読取装置およびコード読取方法 図2
  • 特開-携帯型のコード読取装置およびコード読取方法 図3
  • 特開-携帯型のコード読取装置およびコード読取方法 図4
  • 特開-携帯型のコード読取装置およびコード読取方法 図5
  • 特開-携帯型のコード読取装置およびコード読取方法 図6
  • 特開-携帯型のコード読取装置およびコード読取方法 図7
  • 特開-携帯型のコード読取装置およびコード読取方法 図8
  • 特開-携帯型のコード読取装置およびコード読取方法 図9
  • 特開-携帯型のコード読取装置およびコード読取方法 図10
  • 特開-携帯型のコード読取装置およびコード読取方法 図11
  • 特開-携帯型のコード読取装置およびコード読取方法 図12
  • 特開-携帯型のコード読取装置およびコード読取方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024113912
(43)【公開日】2024-08-23
(54)【発明の名称】携帯型のコード読取装置およびコード読取方法
(51)【国際特許分類】
   G06K 7/10 20060101AFI20240816BHJP
   G06K 7/14 20060101ALI20240816BHJP
【FI】
G06K7/10 376
G06K7/10 436
G06K7/14 060
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023019186
(22)【出願日】2023-02-10
(71)【出願人】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】100105935
【弁理士】
【氏名又は名称】振角 正一
(74)【代理人】
【識別番号】100136836
【弁理士】
【氏名又は名称】大西 一正
(72)【発明者】
【氏名】大木 秀祐
(57)【要約】
【課題】簡単なコードのデコードの高速性と、難しいコードのデコードの安定性とを両立する。
【解決手段】4種類の照明モードのうちの1種類(N1=1)の照明モード(偏光照明モード)を照明部2に実行させつつ撮像部3にコード画像を生成させる高速撮像制御(第1撮像制御)によって生成されたコード画像Icは、コアC1によってデコードされる(高速デコード)。一方、4種類の照明モードのうちの全4種類(N2=4)の照明モードを照明部2に実行させつつ撮像部3にコード画像を生成させる難読撮像制御(第2撮像制御)によって生成されたコード画像IcがコアC2~C4によってデコードされる(難読デコード)。
【選択図】図4
【特許請求の範囲】
【請求項1】
読取対象のコードが設けられたワークに対して、互いに異なるモードで光を照射する複数種類の照明モードを切り換えて順番に実行可能な照明部と、
前記照明部から照射されて前記ワークで反射された光を受光して、コード画像を生成する撮像部と、
コード画像のデコードを並行して実行可能な第1コアおよび第2コアを有し、前記複数種類の照明モードのうちの一の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させ、当該生成されたコード画像のデコードを、前記第1コアあるいは前記第2コアに実行させる制御部と、
を備え、
前記制御部は、前記複数種類の照明モードのうちのN1種類(N1は1以上の整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第1撮像制御と、前記複数種類の照明モードのうちN2種類(N2はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第2撮像制御とを実行し、
前記第1コアは、前記第1撮像制御で生成されたコード画像のデコードを実行し、
前記第2コアは、前記第1コアによるデコードと並行して、前記第2撮像制御で生成されたコード画像のデコードを実行する、
ことを特徴とするコード読取装置。
【請求項2】
前記第2撮像制御で実行される前記N2種類の照明モードは、拡散照明、偏光照明、リング照明、またはローアングル照明により光を照射する照明モードの内の少なくともいずれか1つを含む、
請求項1に記載のコード読取装置。
【請求項3】
前記N2種類の照明モードは、さらに、非拡散照明により光を照射する照明モードを含み、当該照明モードは、前記第1撮像制御で実行される前記N1種類の照明モードにも含まれる、
請求項2に記載のコード読取装置。
【請求項4】
前記照明部は、光源から射出された光を拡散部材によって拡散した拡散光を前記ワークに照射する拡散照明と、前記光源から射出された光を前記拡散部材によって拡散せずに前記ワークに照射する非拡散照明とを有し、
前記第2撮像制御で実行される前記N2種類の照明モードは、前記拡散照明により光を照射する照明モードと、前記非拡散照明により光を照射する照明モードを含む、
請求項1に記載のコード読取装置。
【請求項5】
前記第1撮像制御で実行される前記N1種類の照明モードは前記非拡散照明により光を照射し、
前記第2コアが前記拡散照明に基づき生成されたコード画像のデコードおよび前記非拡散照明に基づき生成されたコード画像のデコードを実行する間に、前記第1コアが前記非拡散照明に基づき生成された複数のコード画像のデコードを実行する、
請求項4に記載のコード読取装置。
【請求項6】
前記照明部は、互いに異なる複数の照射角度から前記ワークに対して前記拡散照明によって光を照射可能であり、前記複数の照射角度のうち光を照射する照射角度の組み合わせが互いに異なる複数の拡散照明モードのそれぞれによって光を照射可能であり、
前記複数種類の照明モードは、前記複数の拡散照明モードを含み、
前記第1コアが前記非拡散照明に基づき生成された複数のコード画像のデコードを実行する間に、前記第2コアが前記複数の拡散照明モードに基づきそれぞれ生成された複数のコード画像のデコードを実行する、
請求項4に記載のコード読取装置。
【請求項7】
前記制御部は、前記第1コアおよび前記第2コアと並行してコード画像のデコードを実行可能な第3コアをさらに有し、前記複数種類の照明モードのうちN3種類(N3はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第3撮像制御を実行し、
前記第3コアは、前記第3撮像制御で生成されたコード画像のデコードを実行し、
前記第3撮像制御で実行される前記N3種類の照明モードは、前記拡散照明、偏光照明、リング照明、またはローアングル照明により光を照射する照明モードの内の少なくともいずれか1つを含み、
前記第2コアが前記拡散照明、偏光照明、リング照明、またはローアングル照明のうちの第1照明に基づき生成されたコード画像のデコードを実行する間に、前記第3コアが前記拡散照明、偏光照明、リング照明、またはローアングル照明のうちの前記第1照明と異なる第2照明に基づき生成されたコード画像のデコードを実行する、
請求項2に記載のコード読取装置。
【請求項8】
前記照明部は、互いに異なる複数の照射角度から前記ワークに対して前記拡散照明によって光を照射可能であり、前記複数の照射角度のうちから光を照射する照射角度の組み合わせが互いに異なる第1拡散照明および第2拡散照明のそれぞれで光を照射可能であり、
前記複数種類の照明モードは、前記第1拡散照明により光を照射する照明モードと、前記第2拡散照明により光を照射する照明モードとを含み、
前記制御部は、前記第1コアおよび前記第2コアと並行してコード画像のデコードを実行可能な第3コアと、前記第1コア、前記第2コアおよび前記第3コアと並行してコード画像のデコードを実行可能な第4コアとをさらに有し、前記複数種類の照明モードのうちN3種類(N3はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記前記撮像部にコード画像を生成させる第3撮像制御を実行し、前記複数種類の照明モードのうちN4種類(N4はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記前記撮像部にコード画像を生成させる第4撮像制御を実行し、
前記第3コアは、前記第3撮像制御で生成されたコード画像のデコードを実行し、
前記第4コアは、前記第4撮像制御で生成されたコード画像のデコードを実行し、
前記第2コア、前記第3コアおよび前記第4コアは、前記非拡散照明、前記第1拡散照明および前記第2拡散照明のうちの互いに異なる照明に基づき生成されたコード画像のデコードを実行する、
請求項4に記載のコード読取装置。
【請求項9】
前記撮像部は、第1カメラと、前記第1カメラより高分解能の第2カメラとを有し、
前記第1カメラおよび前記第2カメラのそれぞれは、前記ワークで反射された光を受光してコード画像を生成可能であり、
前記第1撮像制御では、前記第1カメラおよび前記第2カメラのうち前記第1カメラのみがコード画像の生成に使用され、
前記第2撮像制御では、前記第1カメラおよび前記第2カメラのうちでコード画像の生成に使用するカメラを切り換えることで、前記第1カメラおよび前記第2カメラの両方がコード画像の生成に使用される、
請求項1に記載のコード読取装置。
【請求項10】
前記照明部は、光源から射出された光を拡散部材によって拡散した拡散光を前記ワークに照射する拡散照明と、前記光源から射出された光を前記拡散部材によって拡散せずに前記ワークに照射する非拡散照明とを有し、
前記撮像部は、第1カメラと、前記第1カメラより高分解能の第2カメラとを有し、
前記第1カメラおよび前記第2カメラのそれぞれは、前記ワークで反射された光を受光してコード画像を生成可能であり、
前記制御部は、前記第1コアおよび前記第2コアと並行してコード画像のデコードを実行可能な第3コアをさらに有し、前記複数種類の照明モードのうちN3種類(N3はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第3撮像制御を実行し、
前記第3コアは、前記第3撮像制御で生成されたコード画像のデコードを実行し、
前記拡散照明および前記非拡散照明のうちの一の照明と、前記第1カメラおよび前記第2カメラのうちの一のカメラとの組み合わせが互いに異なる複数の生成条件のうち、前記第2コアおよび前記第3コアは、互いに異なる前記生成条件に基づき生成されたコード画像のデコードを並行して実行する、
請求項1に記載のコード読取装置。
【請求項11】
前記照明部は、光源から射出された光を拡散部材によって拡散した拡散光を前記ワークに照射する拡散照明と、前記光源から射出された光を前記拡散部材によって拡散せずに前記ワークに照射する非拡散照明とを有し、互いに異なる複数の照射角度から前記ワークに対して前記拡散照明によって光を照射可能であり、前記複数の照射角度のうちから光を照射する照射角度の組み合わせが互いに異なる第1拡散照明および第2拡散照明のそれぞれで光を照射可能であり、
前記撮像部は、第1カメラと、前記第1カメラより高分解能の第2カメラとを有し、
前記第1カメラおよび前記第2カメラのそれぞれは、前記ワークで反射された光を受光してコード画像を生成可能であり、
前記制御部は、前記第1コアおよび前記第2コアと並行してコード画像のデコードを実行可能な第3コアと、前記第1コア、前記第2コアおよび前記第3コアと並行してコード画像のデコードを実行可能な第4コアとをさらに有し、前記複数種類の照明モードのうちN3種類(N3はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第3撮像制御を実行し、前記複数種類の照明モードのうちN4種類(N4はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第4撮像制御を実行し、
前記第3コアは、前記第3撮像制御で生成されたコード画像のデコードを実行し、
前記第4コアは、前記第4撮像制御で生成されたコード画像のデコードを実行し、
前記第1拡散照明、前記第2拡散照明および前記非拡散照明のうちの一の照明と、前記第1カメラおよび前記第2カメラのうちの一のカメラとの組み合わせが互いに異なる複数の生成条件のうち、前記第2コア、前記第3コアおよび前記第4コアは、互いに異なる前記生成条件に基づき生成されたコード画像のデコードを並行して実行する、
請求項1に記載のコード読取装置。
【請求項12】
前記第2コアは、前記撮像部により生成されたコード画像に含まれる、デコードに不適切な部分を修復するように学習させた機械学習モデルを用いた画像処理を実行し、当該画像処理を実行したコード画像のデコードを実行し、
前記第1コアは、当該機械学習モデルを用いた画像処理を実行することなく、コード画像のデコードを実行する請求項1に記載のコード読取装置。
【請求項13】
前記照明部が光を照射するための照明条件と、前記撮像部がコード画像を生成するための撮像条件と、前記制御部がデコードを行うためのデコード条件との組み合わせをそれぞれ示す複数のバンクを記憶する記憶部をさらに備え、
前記複数のバンクは、前記照明条件、前記撮像条件および前記デコード条件の少なくとも一つが互いに異なる組み合わせを含み、
前記制御部は、前記第1コアおよび前記第2コアと並行してコード画像のデコードを実行可能な第3コアをさらに有し、前記複数種類の照明モードのうちN3種類(N3はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる第3撮像制御を実行し、
前記第3コアは、前記第3撮像制御で生成されたコード画像のデコードを実行し、
前記第2撮像制御を実行して前記第2コアでデコードする処理と、前記第3撮像制御を実行して前記第3コアでデコードする処理とが互いに異なるバンクを使用して実行される、
請求項1に記載のコード読取装置。
【請求項14】
前記照明条件および前記撮像条件がデコードに適した条件となるように設定するチューニング実行部をさらに備え、
前記複数のバンクは、前記チューニング実行部に設定された前記照明条件および前記撮像条件を示す複数のカスタムバンクを含み、
前記第2撮像制御を実行して前記第2コアでデコードする処理と、前記第3撮像制御を実行して前記第3コアでデコードする処理とが互いに異なるカスタムバンクを使用して実行される、
請求項13に記載のコード読取装置。
【請求項15】
読取対象のコードが設けられたワークに対して、互いに異なるモードで光を照射する複数種類の照明モードを実行可能な照明部によって実行する照明モードを切り換えつつ、撮像部が前記ワークで反射された光を受光してコード画像を生成するコード読取方法であって、
前記複数種類の照明モードのうちの一の照明モードを前記照明部に実行させつつ前記撮像部にコード画像を生成させる工程と、
前記コード画像のデコードを、第1コアあるいは第2コアに実行させる工程と、
を備え、
前記第1コアは、前記複数種類の照明モードのうちのN1種類(N1は1以上の整数)の照明モードを前記照明部に実行させつつ前記撮像部に生成されたコード画像をデコードし、
前記第2コアは、前記複数種類の照明モードのうちN2種類(N2はN1より大きい整数)の照明モードを前記照明部に実行させつつ前記撮像部に生成されたコード画像をデコードし、
前記第1コアによるデコードに並行して、前記第2コアによるデコードが実行される、
ことを特徴とするコード読取方法。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ワークで反射された光に基づきコード画像を生成して、このコード画像をデコードすることで、ワークに付されたコードを読み取る技術に関する。
【背景技術】
【0002】
コードをカメラによって撮像することで生成されたコード画像をデコードして、コードを読み取る技術が知られている。この際、コード画像のデコードに要する時間は、コードの種類に依存する。つまり、ラベルに印刷されたコードのようにデコードが簡単であるコードは短時間でデコードができる一方、DPM(Direct Part Marking)により形成されたコード等のようにデコードが難しいコードのデコードには長時間を要する。これに対して、特許文献1では、第1コアおよび第2コアを用いることでデコードの効率化を図る技術が提案されている。この技術によれば、第1コアでのデコードのタイムアウトがコードの撮像周期よりも短く設定される一方、第2コアでのデコードのタイムアウトがコードの撮像周期より長く設定される。これによって、簡単なコードを第1コアで素早くデコードできるとともに、難しいコードを第2コアで時間をかけて確実にデコードできるようになる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】US7852519
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、デコードに時間をかけたとしても、コード画像を生成するための条件が不適切であると、コード画像のデコードには失敗する。特にワークへの光の照射が不適切であると、良好なコード画像を生成できずに、コード画像のデコードに失敗する場合が多い。また、難しいコードよりも簡単なコードが多い環境においては、特許文献1のように撮像周期が決まっていると、第1コアが撮像周期の間隔よりも短時間でデコードできたとしても、次の撮像周期まで第1コアが待機状態となることも考えられる。
【0005】
この発明は上記課題に鑑みなされたものであり、簡単なコードのデコードの高速性と、難しいコードのデコードの安定性とを両立することを目的の一とする。
【課題を解決するための手段】
【0006】
本発明に係る携帯型のコード読取装置は、読取対象のコードが設けられたワークに対して、互いに異なるモードで光を照射する複数種類の照明モードを切り換えて順番に実行可能な照明部と、照明部から照射されてワークで反射された光を受光して、コード画像を生成する撮像部と、コード画像のデコードを並行して実行可能な第1コアおよび第2コアを有し、複数種類の照明モードのうちの一の照明モードを照明部に実行させつつ撮像部にコード画像を生成させ、当該生成されたコード画像のデコードを、第1コアあるいは第2コアに実行させる制御部と、を備え、制御部は、複数種類の照明モードのうちのN1種類(N1は1以上の整数)の照明モードを照明部に実行させつつ撮像部にコード画像を生成させる第1撮像制御と、複数種類の照明モードのうちN2種類(N2はN1より大きい整数)の照明モードを照明部に実行させつつ撮像部にコード画像を生成させる第2撮像制御とを実行し、第1コアは、第1撮像制御で生成されたコード画像のデコードを実行し、第2コアは、第1コアによるデコードと並行して、第2撮像制御で生成されたコード画像のデコードを実行する。
【0007】
本発明に係るコード画像読取方法は、読取対象のコードが設けられたワークに対して、互いに異なるモードで光を照射する複数種類の照明モードを実行可能な照明部によって実行する照明モードを切り換えつつ、撮像部がワークで反射された光を受光してコード画像を生成するコード読取方法であって、複数種類の照明モードのうちの一の照明モードを照明部に実行させつつ撮像部にコード画像を生成させる工程と、コード画像のデコードを、第1コアあるいは第2コアに実行させる工程と、を備え、第1コアは、複数種類の照明モードのうちのN1種類(N1は1以上の整数)の照明モードを照明部に実行させつつ撮像部に生成されたコード画像をデコードし、第2コアは、複数種類の照明モードのうちN2種類(N2はN1より大きい整数)の照明モードを照明部に実行させつつ撮像部に生成されたコード画像をデコードし、第1コアによるデコードに並行して、第2コアによるデコードが実行される。
【0008】
このように構成された本発明では、第1コアに関しては、高速性を重視して照明モードの切り換えを少なくする(なお、N1が1の場合には、照明モードは固定される)。一方、第2コアに関しては、確実な読み取りを重視して照明モードの切り換えを多くする。その結果、簡単なコードのデコードの高速性と、難しいコードのデコードの安定性との両立が可能となる。
【0009】
本発明の別態様に係るコード読取装置は、読取対象のコードが設けられたワークに対して、光を照射する照明部と、照明部から照射されてワークで反射された光を受光して、コード画像を生成する撮像部と、コード画像のデコードを並行して実行可能な第1コア、第2コアおよび第3コアを有し、照明部に光を照射させて撮像部にコード画像を生成させ、当該生成されたコード画像のデコードを、第1コア、第2コアあるいは第3コアに実行させる制御部と、を備え、第1コアおよび第2コアがデコードに使用できるタイムアウト期間は、第3コアがデコードに使用できるタイムアウト期間より短く、制御部は、第1コアおよび第2コアのうちの一のコアが、実行中のデコードに要した時間と、当該一のコアに対するタイムアウト期間との差が所定時間未満となると、照明部に光を照射させて撮像部に当該一のコアでデコードを実行予定のコード画像を生成させるように携帯型のコード読取装置を構成してもよい。
【0010】
このように構成された本発明(コード読取装置)では、実行中のデコードのタイムアウト期間の経過を待たずに、次に実行予定のデコードのためのコード画像が生成される。その結果、簡単なコードのデコードの高速性と、難しいコードのデコードの安定性との両立が可能となる。
【発明の効果】
【0011】
このように構成された本発明では、簡単なコードのデコードの高速性と、難しいコードのデコードの安定性との両立が可能となっている。
【図面の簡単な説明】
【0012】
図1】コード読取装置の構成を模式的に示す側面図。
図2図1のコード読取装置が備える電気的構成の概略を示すブロック図。
図3】ヘッド部に設けられた拡散部材と当該拡散部材の後ろ側に設けられた照明基板とを模式的に示す正面図。
図4】複数のコアによって実行されるシーケンスの一例を示すタイミングチャート。
図5】バンクの一例を模式的に示す図。
図6】チューニングの一例を示すフローチャート。
図7】チューニングで実行される明るさ粗調整の一例を示すフローチャート。
図8】デコード管理の一例を示すフローチャート。
図9】デコード管理の変形例を示すフローチャート。
図10】コード種に応じたデコード制御の一例を示すフローチャート。
図11図10のフローチャートで実行される動作を模式的に示す図。
図12】デコード制御の変形例で実行される動作を模式的に示す図。
図13】複数のコアによって実行されるシーケンスの一例を示すタイミングチャート。
【発明を実施するための形態】
【0013】
図1はコード読取装置の構成を模式的に示す側面図であり、図2図1のコード読取装置が備える電気的構成の概略を示すブロック図である。ここでは、ワークWの表面Wfに付されたコードをコード読取装置1によって読み取るためにワークWの表面Wfにコード読取装置1が対向した状態において、コード読取装置1に対してワークW側を前側Sfとし、コード読取装置1に対してワークWの反対側を後ろ側Sbとする前後方向Dfsを適宜示す。なお、本実施形態では、携帯型のコード読取装置を例にしているが、携帯型に限るものではなく、固定式のコード読取装置であっても良い。
【0014】
図1に示すように、コード読取装置1は、ヘッド部11、グリップ部12およびグリップエンド部13を備える。グリップ部12は、ヘッド部11とグリップエンド部13との間で、前後方向Dfsに交差する軸方向Daに延設されている。換言すれば、ヘッド部11はグリップ部12の一端に対して設けられ、グリップエンド部13はグリップ部12の他端(一端の逆の端)に対して設けられる。ヘッド部11はヘッド本体111を有し、グリップ部12はグリップ本体121を有し、グリップエンド部13はグリップエンド本体131を有し、ヘッド本体111、グリップ本体121およびグリップエンド本体131は、コード読取装置1に内蔵される各部を収納するハウジング14を構成する。ユーザは。コード読取装置1のグリップ本体121を把持することで、コード読取装置1を携帯することができる。
【0015】
ヘッド部11のヘッド本体111は、前側Sfに開いた開口112を有し、開口112の後ろ側Sb(換言すれば奥側)の端には配置パネル113が設けられている。コードの読み取りの際には、開口112がワークWの表面Wfに対向するとともに、配置パネル113が開口112を介してワークWの表面Wfに対向する。また、ヘッド部11は、図2に示す照明部2、撮像部3、距離計測部4およびディスプレイSPを有する。これら照明部2、撮像部3、距離計測部4およびディスプレイSPは、ヘッド部11に収納される。特に、照明部2の一部、撮像部3および距離計測部4は、配置パネル113に設けられている。
【0016】
照明部2は、ワークWの表面Wfに照明光Liを照射し、撮像部3は、ワークWの表面Wfからの反射光Lrをカメラ31Aあるいは31Bにより撮像してコード画像Icを生成する。照明光Liは、照明部2から開口112を介してワークWの表面Wfに照射され、反射光Lrは、ワークWの表面Wfで照明光Liを反射することで生成され、反射光Lrは、ワークWの表面Wfから開口112を介して撮像部3のカメラ31Aあるいは31Bに入射する。
【0017】
照明部2は、拡散照明部27、直接照明部28および偏光照明部29を有する。拡散照明部27は光源Eを有し、光源Eから射出された光を拡散してからワークWの表面Wfに照射する。直接照明部28は光源281を有し、光源281から射出された光を拡散せずにワークWの表面Wfに直接照射する。偏光照明部29は光源291を有し、光源291から射出された光を偏光してからワークWの表面Wfに照射する。かかる照明部2の詳細は後述する。
【0018】
撮像部3は、2個のカメラ31A、31Bを有する。カメラ31A、31Bのそれぞれは、ワークWの表面Wfに対向する対物レンズである集光レンズによって反射光Lrを個体撮像素子に集光する。個体撮像素子は、集光レンズによって集光された反射光Lrを受光することで、コード画像Icを生成する。カメラ31A、31Bそれぞれの光軸Ac(すなわち、カメラ31A、31Bそれぞれの集光レンズの光軸Ac)は、上述の前後方向Dfsに平行である。
【0019】
距離計測部4は、当該距離計測部4から開口112を介してワークWの表面Wfに照射した光が、ワークWの表面Wfで反射されて、開口112を介して当該距離計測部4に戻るまでの時間を計測することで、ワークWの表面Wfまでの距離を計測する。
【0020】
ディスプレイSPはユーザに対して情報を表示する。また、ディスプレイSPは、ユーザによる入力操作を受け付ける。
【0021】
グリップ部12は、グリップ本体121の前側Sfに設けられたトリガスイッチ122を有する。ユーザは、グリップ本体121を手で握りながら、トリガスイッチ122を指で操作することができる。
【0022】
また、コード読取装置1は、当該コード読取装置1の各部を制御するコントローラ6と、当該コード読取装置1において使用されるデータや生成されたデータを記憶する記憶部7とを備える。コントローラ6および記憶部7は、ハウジング14内に収納される。コントローラ6はプロセッサ、すなわちCPU(Central Processing Unit)である。記憶部7はROM(Read
Only Memory)やRAM(Random Access Memory)等の記憶装置である。
【0023】
コントローラ6は、ワークWの表面Wfに照明光Liを照射する照明動作を照明部2に実行させるとともに、反射光Lrを固体撮像素子により受光してコード画像Icを生成する撮像動作を撮像部3に実行させる。こうして、照明部2よる照明動作と撮像部3による撮像動作によって「コード画像生成処理」が実行される。さらに、コントローラ6は、コード画像生成処理によって生成されたコード画像Icをデコードする。こうして、照明部2による照明動作および撮像部3による撮像動作からなるコード画像生成処理と、コントローラ6によるデコードといった一連の動作によってコード読取が実行される。例えば、コントローラ6は、ユーザによるトリガスイッチ122の操作を検知すると、コード読取を実行する。コード読取の結果、すなわちコントローラ6がコード画像Icをデコードした結果であるデコード結果Rdは、記憶部7に記憶される。
【0024】
続いては、ヘッド部11の構成、特にヘッド部11に設けられた照明部2の構成について詳述する。図3はヘッド部に設けられた拡散部材と当該拡散部材の後ろ側に設けられた照明基板とを模式的に示す正面図である。図3では、長さ方向Dlおよび幅方向Dwが示されている。ここで、長さ方向Dlおよび幅方向Dwは互いに直交するとともに、それぞれ前後方向Dfsに直交する。また、長さ方向Dlの一方側Dl1(グリップエンド部13からヘッド部11に向かう側)と、長さ方向Dlの他方側Dl2(一方側Dl1の逆側)とが示され、幅方向Dwの一方側Dw1と、幅方向Dwの他方側Dw2(一方側Dw1の逆側)とが示されている。
【0025】
照明部2は、拡散部材21と、前後方向Dfsにおいて拡散部材21の後ろ側Sbに配置された照明基板25とを有する。拡散部材21は、上述のヘッド本体111の一部を構成する。なお、図3では、前後方向Dfsの前側Sfからの正面視において拡散部材21に隠れる照明基板25が破線で示されている。
【0026】
拡散部材21は、前側Sfに開いた上記の開口112を囲む壁面である開口規定部211を有する。開口規定部211は、長さ方向Dlにおいて、開口112の一方側Dl1に設けられたトップ拡散プレート212と、開口112の他方側Dl2に設けられたボトムプレート213とを有する。さらに、開口規定部211は、幅方向Dwにおいて、開口112の一方側Dl1に設けられた右拡散プレート214と、開口112の他方側Dl2に設けられた左拡散プレート215とを有する。幅方向Dwにおいてトップ拡散プレート212の両側の端部は、右拡散プレート214および左拡散プレート215に向かって他方側Dl2に屈曲する。また、長さ方向Dlにおいて、右拡散プレート214の他方側Dl2の端部は、ボトムプレート213に向かって他方側Dw2に屈曲し、左拡散プレート215の他方側Dl2の端は、ボトムプレート213に向かって一方側Dw1に屈曲する。
【0027】
トップ拡散プレート212、右拡散プレート214および左拡散プレート215は、後ろ側Sbから前側Sfへそれぞれを透過する光を拡散して、前側Sfへ射出する。具体的には、トップ拡散プレート212、右拡散プレート214および左拡散プレート215それぞれの後ろ側Sbの背面(光の入射面)にはシボ加工が施され、このシボ加工が施された背面によって光が拡散される。ただし、トップ拡散プレート212、右拡散プレート214および左拡散プレート215に光拡散機能を持たせる構成はシボ加工に限られず、例えばこれらを乳白色に加工することで光拡散機能を持たせてもよい。
【0028】
前後方向Dfsの前側Sfに向かうに連れて、カメラ31Aの集光レンズ311A(図1)の光軸Acに直交する断面における開口112の面積が広くなるように、開口112を規定する各プレート212、213、214、215は前後方向Dfsに対して傾斜するテーパー形状を有する。換言すれば、前後方向Dfs(光軸方向)の前側Sfに向かうに連れて光軸Acから離間するように各プレート212、213、214、215は前後方向Dfsに対して傾斜するテーパー形状を有する。
【0029】
照明基板25は、このようにテーパー形状を有するプレート212、213、214、215より後ろ側Sbに配置される。この照明基板25は、基板251と、基板251の前側Sfの面に配列された複数の光源Eを有する。基板251は、幅方向Dwに延設されたメイン基板部252と、メイン基板部252の一方側Dw1の端部から長さ方向Dlの他方側Dl2に延設された右基板部254と、メイン基板部252の他方側Dw2の端部から長さ方向Dlの他方側Dl2に延設された左基板部255とを有する。
【0030】
メイン基板部252には、幅方向Dwに所定幅で設けられたトップ光源領域Btと、トップ光源領域Btより長さ方向Dlの他方側Dl2で幅方向Dwに所定幅で設けられたセンタ光源領域Bcとが設けられている。トップ光源領域Btでは、複数の光源Eが所定のピッチ(トップピッチ)で幅方向Dwに配列されており、センタ光源領域Bcでは、複数の光源Eがトップピッチより長いセンタピッチで幅方向Dwに配列されている。このようなピッチの違いから、トップ光源領域Btに配列される光源Eの個数は、センタ光源領域Bcに配列される光源Eの個数より多い。ここの例では、センタピッチはトップピッチの2倍であるが、これらのピッチの具体的な比率はこれに限られない。
【0031】
右基板部254の他方側Dl2の端部は、幅方向Dwの他方側Dw2に屈曲する。また、右基板部254には、当該右基板部254の形状に沿った右光源領域Brが設けられており、当該右光源領域Brに複数の光源Eが配列されている。右光源領域Brに配列される光源Eの個数は、トップ光源領域Btに配列される光源Eの個数よりも少なく、センタ光源領域Bcに配列される光源Eの個数よりも少ない。
【0032】
左基板部255の他方側Dl2の端部は、幅方向Dwの一方側Dw1に屈曲する。また、左基板部255には、当該左基板部255の形状に沿った左光源領域Blが設けられており、当該左光源領域Blに複数の光源Eが配列されている。左光源領域Blに配列される光源Eの個数は、右光源領域Brに配列される光源Eの個数と等しい。
【0033】
光源Eは、例えばLED(Light Emitting Diode)であり、トップ拡散プレート212、右拡散プレート214あるいは左拡散プレート215に向けて前側Sfに光を射出する。光源Eから射出されてトップ拡散プレート212、右拡散プレート214あるいは左拡散プレート215に後ろ側Sbから入射した光は、当該拡散プレート212、214あるいは215の通過に伴って拡散されて、当該拡散プレート212、214あるいは215から前側Sfに射出される。
【0034】
トップ光源領域Btの光源Eから射出された光は、主としてトップ拡散プレート212によって拡散された後に、トップ拡散プレート212からワークWの表面Wfに向けて照明光Liとして射出される。センタ光源領域Bcの光源Eから射出された光は、主としてトップ拡散プレート212によって拡散された後に、トップ拡散プレート212からワークWの表面Wfに向けて照明光Liとして射出される。右光源領域Brの光源Eから射出された光は、主として右拡散プレート214によって拡散された後に、右拡散プレート214からワークWの表面Wfに向けて照明光Liとして射出される。左光源領域Blの光源Eから射出された光は、主として左拡散プレート215によって拡散された後に、左拡散プレート215からワークWの表面Wfに向けて照明光Liとして射出される。こうして光源Eからの光は、拡散部材21を通過するのに伴って、拡散部材21により拡散される。また、拡散部材21で光を拡散することで生成される拡散光は、均一な面状の照明光LiとしてワークWの表面Wfに照射される。
【0035】
このように、拡散部材21のトップ光源領域Bt、センタ光源領域Bc、右光源領域Brおよび左光源領域Blは、互いに異なる角度で拡散部材21からワークWの表面Wfへ向けて照射される照明光Liを生成する。これに対して、照明部2を制御するコントローラ6は、トップ光源領域Bt、センタ光源領域Bc、右光源領域Brおよび左光源領域Blのうち、光源Eから光を射出する点灯領域を変更することができる。こうして、点灯領域を変更することで、拡散光を照明光LiとしてワークWの表面Wfに入射させる角度を変更することができる。
【0036】
このように、拡散部材21、反射部材23および照明基板25によって上述の拡散照明部27(図2)が構成されている。さらに、上述の通り、照明部2は、光源281からの光を拡散せずにワークWの表面Wfに向けて直接照射する直接照明部28と、光源291からの光を偏光させた偏光光(P波あるいはS波)をワークWの表面Wfに向けて照射する偏光照明部29とを有する。図3に示すように、これら直接照明部28および偏光照明部29は、配置パネル113に配置されている。
【0037】
したがって、コントローラ6は、拡散照明部27の光源Eを点灯させることで生成される拡散照明をワークWに照射する「拡散照明モード」と、直接照明部28の光源281を点灯させることで生成される直接照明をワークWに照射する「直接照明モード」と、偏光照明部29の光源291を点灯させることで生成される偏光照明をワークWに照射する「偏光照明モード」とを選択的に実行することができる。
【0038】
特に、「拡散照明モード」に関しては、互いに異なる照射角度からワークWの表面Wfに拡散光を照射するトップ光源領域Bt、センタ光源領域Bc、右光源領域Brおよび左光源領域Blのうち、光源Eから光を射出する点灯領域の組み合わせが互いに異なる複数の拡散照明モードが実行可能となっている。例えば、トップ光源領域Bt、センタ光源領域Bc、右光源領域Brおよび左光源領域Blのうち、トップ光源領域Btおよびセンタ光源領域Bcのみの光源Eから光を射出することで生成される部分拡散照明をワークWに照射する「部分拡散照明モード」と、トップ光源領域Bt、センタ光源領域Bc、右光源領域Brおよび左光源領域Blの全ての光源Eから光を射出することで生成される全体拡散照明(ドーム照明)をワークWに照射する「全体拡散照明モード」とが複数の拡散照明モードに含まれる。
【0039】
上述の通り、撮像部3は、2台のカメラ31A、31Bを有し、これらカメラ31A、31Bは配置パネル113に設けられている。具体的には、図3に示すように、カメラ31Aおよびカメラ31Bそれぞれの集光レンズ311A、311B(対物レンズ)が配置パネル113に嵌め込まれている。カメラ31Aは、ワークWの表面Wfからの反射光Lrを集光レンズ311Aによって固体撮像素子に集光して、当該固体撮像素子にコード画像Icを生成させる。同様に、カメラ31Bは、ワークWの表面Wfからの反射光Lrを集光レンズ311Bによって固体撮像素子に集光して、当該固体撮像素子にコード画像Icを生成させる。カメラ31Aは高分解能カメラであるのに対して、カメラ31Bは標準分解能カメラであり、カメラ31Aの分解能はカメラ31Bの分解能より高い。そのため、カメラ31Aが撮像するコード画像Icの解像度は、カメラ31Bが撮像するコード画像Icの解像度よりも高い。例えば、各カメラが備えるイメージセンサの画素数が等しい場合、カメラ31Aの視野をカメラ31Bの視野よりも狭くすることで、カメラ31Aの分解能をカメラ31Bの分解能より高くすることができる。
【0040】
また、配置パネル113には、距離計測部4が設けられている。距離計測部4は、TOF(Time of Fight)カメラである距離センサ41を有し、距離センサ41は、カメラ31A、31Bの視野に向けて光を射出する発光部42と、カメラ31A、31Bの視野から戻ってきた光を検出する受光部43とを有し、発光部42が光を射出してから受光部43が光を受光するまでの時間に基づき、カメラ31A、31Bの視野に存在する物体(ワークWを含む)までの距離を計測する。
【0041】
ところで、上述の通り、照明部2による照明動作および撮像部3による撮像動作からなるコード画像生成処理と、コントローラ6によるデコードといった一連の動作によってコード読取が実行される。また、コントローラ6は、それぞれ演算を実行可能なプロセッサである複数のコアC0~C4(図4)を有する。複数のコアC0~C4のうち、コアC0は、照明部2および撮像部3を制御することで、コード画像Icを生成するためのコード画像生成処理を照明部2および撮像部3に実行させる。また、コアC1~C4は、コード画像生成処理によって生成されたコード画像Icをデコードする。
【0042】
コアC1~C4は並行してデコードを実行可能である(つまり、並列処理を実行可能である)。コアC1は、デコードが簡単なコードを高速にデコードするための画像処理(高速デコード)を実行し、コアC2~C4は、デコードが難しいコードをデコードするための画像処理(難読デコード)を実行する。コアC1が高速デコードの実行に要する演算量は、コアC2~C4のそれぞれが難読デコードの実行に要する演算量より少なく、コアC1が高速デコードの実行に要する時間は、コアC2~C4のそれぞれが難読デコードの実行に要する時間より短い。特に、コアC2~C4によって実行される難読デコードは、機械学習モデル(例えば、深層学習モデル)を用いた画像処理を実行する。この機械学習モデルは、コード画像Icに含まれる、デコードに不適切な部分を修復するように学習済みである。したがって、難読デコードは、機械学習モデルを用いた画像処理を実行して、当該画像処理を実行したコード画像Icにデコードを実行する。一方、コアC1によって実行される高速デコードは、当該機械学習モデルを用いた画像処理を実行することなく、コード画像Icのデコードを実行する。
【0043】
図4は複数のコアによって実行されるシーケンスの一例を示すタイミングチャートである。同図において、「タイミング」の行は、時間経過をタイミングT1~T28の順に示す。「カメラ」の行は、コード画像生成処理の撮像動作で使用されるカメラの種類を示し、「標準」は、標準分解能のカメラ31Bを示し、「高分」は、高分解能のカメラ31Aを示す。「コアC0」の行は、コアC0が照明部2および撮像部3に対して実行する制御の内容を示し、「撮像偏光」は、照明部2に偏光照明モードによる照明動作を実行させつつ撮像部3に撮像動作を実行させる制御を示し、「撮像直接」は、照明部2に直接照明モードによる照明動作を実行させつつ撮像部3に撮像動作を実行させる制御を示し、「撮像部分拡散」は、照明部2に部分拡散照明モードによる照明動作を実行させつつ撮像部3に撮像動作を実行させる制御を示し、「撮像全体拡散」は、照明部2に全体拡散照明モードによる照明動作を実行させつつ撮像部3に撮像動作を実行させる制御を示す。さらに、「コアC1」~「コアC4」それぞれの行は、コアC1~C4が実行するデコードの種類を示す。
【0044】
タイミングT1でコアC0が標準分解能のカメラ31Bを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT1に続くタイミングT2~T3において、コアC1が当該コード画像Icに対して高速デコードを実行する。
【0045】
タイミングT2でコアC0が標準分解能のカメラ31Bを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT2に続くタイミングT3~T8において、コアC2が当該コード画像Icに対して難読デコードを実行する。
【0046】
タイミングT3でコアC0が標準分解能のカメラ31Bを用いた「撮像部分拡散」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT3に続くタイミングT4~T9において、コアC3が当該コード画像Icに対して難読デコードを実行する。
【0047】
タイミングT4でコアC0が標準分解能のカメラ31Bを用いた「撮像直接」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT4に続くタイミングT5~T10において、コアC3が当該コード画像Icに対して難読デコードを実行する。
【0048】
タイミングT5でコアC0が標準分解能のカメラ31Bを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT5に続くタイミングT6~T7において、コアC1が当該コード画像Icに対して高速デコードを実行する。
【0049】
タイミングT8でコアC0が高分解能のカメラ31Aを用いた「撮像直接」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT8に続くタイミングT9~T14において、コアC2が当該コード画像Icに対して難読デコードを実行する。
【0050】
タイミングT9でコアC0が標準分解能のカメラ31Bを用いた「撮像全体拡散」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT9に続くタイミングT10~T15において、コアC3が当該コード画像Icに対して難読デコードを実行する。
【0051】
タイミングT10でコアC0が標準分解能のカメラ31Bを用いた「撮像部分拡散」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT10に続くタイミングT11~T16において、コアC4が当該コード画像Icに対して難読デコードを実行する。
【0052】
タイミングT11でコアC0が標準分解能のカメラ31Bを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT11に続くタイミングT12~T13において、コアC1が当該コード画像Icに対して高速デコードを実行する。
【0053】
タイミングT14でコアC0が標準分解能のカメラ31Bを用いた「撮像部分拡散」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT14に続くタイミングT15~T20において、コアC2が当該コード画像Icに対して難読デコードを実行する。
【0054】
タイミングT15でコアC0が高分解能のカメラ31Aを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT15に続くタイミングT16~T21において、コアC3が当該コード画像Icに対して難読デコードを実行する。
【0055】
タイミングT16でコアC0が標準分解能のカメラ31Bを用いた「撮像全体拡散」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT16に続くタイミングT17~T22において、コアC4が当該コード画像Icに対して難読デコードを実行する。
【0056】
タイミングT17でコアC0が標準分解能のカメラ31Bを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT17に続くタイミングT18~T19において、コアC1が当該コード画像Icに対して高速デコードを実行する。
【0057】
タイミングT20でコアC0が標準分解能のカメラ31Bを用いた「撮像全体拡散」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT20に続くタイミングT21~T26において、コアC2が当該コード画像Icに対して難読デコードを実行する。
【0058】
タイミングT21でコアC0が標準分解能のカメラ31Bを用いた「撮像直接」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT21に続くタイミングT22~T27において、コアC3が当該コード画像Icに対して難読デコードを実行する。
【0059】
タイミングT22でコアC0が高分解能のカメラ31Aを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT22に続くタイミングT23~T28において、コアC4が当該コード画像Icに対して難読デコードを実行する。
【0060】
タイミングT23でコアC0が標準分解能のカメラ31Bを用いた「撮像偏光」によるコード画像生成処理を実行してコード画像Icを生成すると、タイミングT23に続くタイミングT24~T25において、コアC1が当該コード画像Icに対して高速デコードを実行する。
【0061】
なお、図4のシーケンスは、コアC1~C4のいずれかがデコードに成功した、すなわちコードの読み取りに成功した時点で終了する。したがって、図4に示された全ての動作が常に実行されるわけではない。
【0062】
以上に説明する実施形態では、読取対象のコードが設けられたワークWに対して、互いに異なるモードで光を照射する4種類の照明モード(直接照明モード、偏光照明モード、部分拡散照明モードおよび全体拡散照明モード)が実行可能である。また、複数種類の照明モードのうちの一の照明モードを照明部2に実行させつつ撮像部3にコード画像を生成させるコード画像生成処理を実行し、コード画像生成処理の完了の度に、完了したコード画像生成処理で生成されたコード画像Icのデコードが実行される。特に、コアC1(第1コア)およびコアC2~C4(第2コア)が設けられ、これらが次のように使い分けられる。
【0063】
4種類の照明モードのうちの1種類(N1=1)の照明モード(偏光照明モード)を照明部2に実行させつつコード画像生成処理を実行する高速撮像制御(第1撮像制御)によって生成されたコード画像Icは、コアC1によってデコードされる(高速デコード)。一方、4種類の照明モードのうちの全4種類(N2=4)の照明モードを照明部2に実行させてコード画像生成処理を実行する難読撮像制御(第2撮像制御)によって生成されたコード画像IcがコアC2~C4によってデコードされる(難読デコード)。つまり、コアC1は、1種類の照明モードを実行して生成されたコード画像Icをデコードし、コアC2~C4は、4種類の照明モードを切り換えて実行して生成されたコード画像Icをデコードする。このように、コアC1に関しては、高速性を重視して照明モードの切り換えを少なくする(ここでは、照明モードが固定される)。一方、コアC2~C4に関しては、確実な読み取りを重視して照明モードの切り換えを多くする。その結果、簡単なコードのデコードの高速性を保ちつつ、難しいコードのデコードの成功率の向上が可能となる。
【0064】
また、照明部2は、光源Eから射出された光を拡散部材21によって拡散した拡散光をワークWに照射する拡散照明と、光源Eから射出された光を拡散部材21によって拡散せずにワークに照射する非拡散照明(直接照明、偏光照明)とを有する。そして、上記の難読撮像制御で実行される4種類の照明モードは、拡散照明により光を照射する照明モード(拡散照明モード)と、非拡散照明により光を照射する照明モード(直接照明モード、偏光照明モード)を含む。このように、拡散照明と非拡散照明とを切り換えつつコード画像Icを生成して、このコード画像Icをデコードすることで、適切な照明によって良好なコード画像Icを生成して、デコードの成功率を向上させることができる。また、難読撮像制御(第2撮像制御)で実行される照明モードは、上記で例示した拡散照明と非拡散照明との切り替えに限るものではない。つまり、難読撮像制御においては、難読コードに適していると考えられる照明として、例えば、拡散照明、偏光照明、リング照明、またはローアングル照明により光を照射する照明モードの内の少なくともいずれか1つを含んでいれば良い。リング照明およびローアングル照明は、暗視野照明とも呼ばれる。本実施形態においては、例えば、ヘッド部11の開口112付近に開口規定部211を囲むようなリング照明(ローアングル照明)を設けて、ワークWに対して斜めから光を照射することで暗視野照明を実現できる。また、本実施形態のように光源からの光を透過型の拡散部材で拡散させる拡散照明だけでなく、反射型の拡散部材で拡散させる拡散照明を用いても良い。
【0065】
上記のように、高速撮像制御は、コアC1(第1コア)によってデコードされるコード画像Icを生成するコード画像生成処理を複数回実行する。一方、難読撮像制御は、コアC2(第2コア)によってデコードされるコード画像Icを生成するコード画像生成処理を、照明モードを切り換えつつ複数回実行する。この際、高速撮像制御で実行される1種類の照明モードは、非拡散照明(偏光照明)により光を照射する。そして、コアC2が拡散照明に基づき生成されたコード画像Icのデコードおよび非拡散照明に基づき生成されたコード画像Icのデコードを実行する間に、コアC1が非拡散照明に基づき生成された複数のコード画像Icのデコードを実行する。例えば、コアC2が、直接照明(非拡散照明)に基づき生成されたコード画像Icの難読デコードをタイミングT9~T14において実行し、拡散照明に基づき生成されたコード画像Icの難読デコードをタイミングT15~T20において実行する期間(T9~T20)に、コアC1が偏光照明(非拡散照明)に基づき生成された複数のコード画像Icのデコードを実行する(タイミングT12~T13、T18~T19)。かかる構成では、コアC1に対しては非拡散照明により光を照射して生成されたコード画像をデコードさせる一方、コアC2に対しては非拡散照明と拡散照明とを切り換えつつ光を照射して生成された各コード画像をデコードさせる。これにより、読取対象が簡単なコードであった場合は、高速デコード用のコアC1で高速にデコードが可能となる。一方で、読取対象が難読コードであった場合は、複数種類の照明で生成された複数のコード画像のうち、当該難読コードをデコードできる程度に良好なコード画像が生成される可能性が高くなるため、結果として当該難読コードをデコードできる可能性も高くなる。しかも、コアC2が拡散照明に基づき生成されたコード画像Icのデコードおよび非拡散照明に基づき生成されたコード画像Icのデコードを実行する間に、コアC1が非拡散照明に基づき生成された複数のコード画像Icのデコードを実行する。これによって、簡単なコードのデコードの高速性を保ちつつ、難しいコードのデコードの成功率の向上が可能となる。
【0066】
また、照明部2の拡散照明部27は、互いに異なる複数の照射角度からワークWに対して拡散照明によって光を照射可能であり、複数の照射角度のうち光を照射する照射角度の組み合わせが互いに異なる複数の拡散照明モード(部分拡散照明モード、全体拡散照明モード)のそれぞれによって光を照射可能である。そして、コアC1(第1コア)が非拡散照明(偏光照明)に基づき生成された複数のコード画像Icのデコードを実行する間に、コアC4(第2コア)が複数の拡散照明モードに基づきそれぞれ生成された複数のコード画像Icのデコードおよび非拡散照明に基づき生成されたコード画像Icのデコードを実行する。例えば、コアC1が偏光照明に基づき生成された複数のコード画像Icのデコードを実行する期間(T2~T25)において、コアC4が、直接照明(非拡散照明)に基づき生成されたコード画像Icのデコード(T5~T10)と、複数の拡散照明モード(部分拡散照明モード、全体拡散照明モード)に基づきそれぞれ生成された複数のコード画像Icのデコード(T11~T16、T17~T22)を実行する。かかる構成では、非拡散照明と拡散照明との切り換えのみならず、拡散照明の角度を切り換えるため、難しいコードのデコードの成功率のさらなる向上が可能となる。
【0067】
また、コアC2(第2コア)が非拡散照明および拡散照明のうちの一方に基づき生成されたコード画像Icのデコードを実行する間に、コアC3(第3コア)が非拡散照明および拡散照明のうちの一方と異なる他方に基づき生成されたコード画像Icのデコードを実行する。例えば、コアC2が直接照明(非拡散照明)に基づき生成されたコード画像Icのデコードを実行する期間(T9~T14)に並行して、コアC3が拡散照明に基づき生成されたコード画像Icのデコードを実行する(T10~T15)。あるいは、コアC2が拡散照明に基づき生成されたコード画像Icのデコードを実行する期間(T15~T20)に並行して、コアC3が偏光照明(非拡散照明)に基づき生成されたコード画像Icのデコードを実行する(T16~T21)。かかる構成では、非拡散照明および拡散照明のうちの一方に基づき生成されたコード画像IcのコアC2によるデコードと、非拡散照明および拡散照明のうちの他方に基づき生成されたコード画像IcのコアC3によるデコードとを並行して実行できる。その結果、難しいコードを確実かつ高速に読み取ることが可能となる。
【0068】
また、コアC2(第2コア)、コアC3(第3コア)およびコアC4(第4コア)は、非拡散照明(直接照明あるいは偏光照明)、部分拡散照明(第1拡散照明)および全体拡散照明(第2拡散照明)のうちの互いに異なる照明に基づき生成されたコード画像Icのデコードを実行する。例えば、タイミングT11~T14においては、コアC2は、直接照明によって生成されたコード画像Icのデコードを実行し、コアC3は、全体拡散照明によって生成されたコード画像Icのデコードを実行し、コアC4が、部分拡散照明によって生成されたコード画像Icのデコードを実行する。かかる構成では、コアC2、コアC3およびコアC4は、非拡散照明(直接照明あるいは偏光照明)、部分拡散照明および全体拡散照明のうちの互いに異なる照明に基づき生成されたコード画像Icのデコードを並行して実行できる。つまり、非拡散照明および拡散照明を異ならせるだけでなく、拡散照明の角度も異ならせて生成された3種類のコード画像Icを、コアC2、コアC3およびコアC4のそれぞれが並行してデコードできる。その結果、難しいコードを確実かつ高速に読み取ることが可能となる。
【0069】
また、撮像部3は、カメラ31B(第1カメラ)と、カメラ31Bより高分解能のカメラ31A(第2カメラ)とを有する。そして、コアC1(第1コア)によってデコードされるコード画像Icを生成するコード画像生成処理を複数回実行する高速撮像制御(第1撮像制御)では、カメラ31Aおよびカメラ31Bのうち、カメラ31Bのみがコード画像Icの生成に使用される。一方、コアC2(第2コア)によってデコードされるコード画像Icを生成するコード画像生成処理を、照明モードを切り換えつつ複数回実行する難読撮像制御(第2撮像制御)では、カメラ31Aおよびカメラ31Bのうちでコード画像Icの生成に使用するカメラを切り換えることで、カメラ31Aおよびカメラ31Bの両方がコード画像Icの生成に使用される。かかる構成では、標準的なセルサイズのコードに対しては、標準分解能(広視野)のカメラ31Bによってコード画像Icを生成して、このコード画像Icをデコードする。一方で、セルサイズが小さい(読取が相対的に難しい)コードに対しては、高分解能のカメラ31Aによってコード画像Icを生成することで、このコード画像Icのデコードの成功率を向上させられる。その結果、簡単なコードのデコードの高速性と、難しいコードのデコードの安定性の両立が可能となる。
【0070】
また、拡散照明および非拡散照明のうちの一の照明と、カメラ31Aおよびカメラ31Bのうちの一のカメラとの組み合わせが互いに異なる複数の生成条件のうち、コアC2およびコアC3は、互いに異なる生成条件に基づき生成されたコード画像Icのデコードを並行して実行する。例えば、タイミングT10~T14では、高分解能のカメラ31Aおよび直接照明(非拡散照明)に基づき生成されたコード画像IcのコアC2によるデコードと、標準分解能のカメラ31Bおよび拡散照明に基づき生成されたコード画像IcのコアC3によるデコードとが並行して実行される。また、タイミングT16~T20では、標準分解能のカメラ31Bおよび拡散照明に基づき生成されたコード画像IcのコアC2によるデコードと、高分解能のカメラ31Aおよび偏光照明(非拡散照明)に基づき生成されたコード画像IcのコアC3によるデコードとが並行して実行される。かかる構成では、コアC2およびコアC3が、互いに異なる生成条件に基づき生成されたコード画像Icのデコードを並行して実行する。その結果、難しいコードを確実かつ高速に読み取ることが可能となる。
【0071】
また、部分拡散照明(第1拡散照明)、全体拡散照明(第2拡散照明)および非拡散照明のうちの一の照明と、カメラ31Aおよびカメラ31Bのうちの一のカメラとの組み合わせが互いに異なる複数の生成条件のうち、コアC2(第2コア)、コアC3(第3コア)およびコアC4(第4コア)は、互いに異なる生成条件に基づき生成されたコード画像Icのデコードを並行して実行する。例えば、タイミングT11~T14においては、高分解能のカメラ31Aおよび直接照明に基づき生成されたコード画像IcのコアC2によるデコードと、標準分解能のカメラ31Bおよび全体拡散照明に基づき生成されたコード画像IcのコアC3によるデコードと、標準分解能のカメラ31Bおよび部分拡散照明に基づき生成されたコード画像IcのコアC4によるデコードとが並行して実行される。また、タイミングT17~T20においては、標準分解能のカメラ31Bおよび部分拡散照明に基づき生成されたコード画像ICのコアC2によるデコードと、高分解能のカメラ31Aおよび偏光照明に基づき生成されたコード画像IcのコアC3によるデコードと、標準分解能のカメラ31Bおよび全体拡散照明に基づき生成されたコード画像IcのコアC4によるデコードとが並行して実行される。かかる構成では、コアC2、コアC3およびコアC4は、互いに異なる生成条件に基づき生成されたコード画像Icのデコードを並行して実行する。その結果、難しいコードを確実かつ高速に読み取ることが可能となる。
【0072】
また、コアC2は、撮像部3により生成されたコード画像Icに含まれる、デコードに不適切な部分を修復するように学習させた機械学習モデルを用いた画像処理を実行し、当該画像処理を実行したコード画像Icのデコードを実行する。一方、コアC1は、当該機械学習モデルを用いた画像処理を実行することなく、コード画像Icのデコードを実行する。かかる構成では、難しいコードのデコードにのみ機械学習モデルを使用し、簡単なコードのデコードには機械学習モデルを使用しない。これによって、簡単なコードのデコードの高速性を保ちつつ、難しいコードのデコードの成功率の向上が可能となる。
【0073】
また、照明部2は、複数の光源Eから射出された光を拡散部材21によって拡散した拡散光をワークに照射する拡散照明部27を有し、複数の光源Eのうち、光を射出する光源Eを変更することで拡散光をワークWに照射する角度を変更可能である(図2図3)。かかる構成では、適切な角度から拡散照明を照射することができ、難しいコードのデコードの成功率の向上が可能となる。
【0074】
ところで、上記の実施形態では、カメラ、照明およびデコードの組み合わせを切り換えつつコード読取が繰り返し実行される。つまり、高分解能のカメラ31Aおよび標準分解能のカメラ31Bのうちで使用する一のカメラが切り換えられ、偏光照明、直接照明、部分拡散照明および全体拡散照明のうちで使用する一の照明が切換られ、高速デコードおよび難読デコードのうちで使用する一のデコードが切り換えられる。すなわち、コアC0~C4を含むコントローラ6は、コード読取で使用するカメラ、照明およびデコードの組み合わせを切り換えつつ、コード読取を繰り返し実行する。この際、コントローラ6は、次に説明するバンクを用いた制御により、かかる組み合わせの切り換えを簡便に実行できる。
【0075】
図5はバンクの一例を模式的に示す図である。つまり、コアC0は、複数のバンクB(N)を記憶部7に保存することができる(N=1、2、3、…)。バンクBは、コード読取で使用するカメラ、照明およびデコードの組み合わせを示し、複数のバンクB(N)のそれぞれは互いに異なる組み合わせを示す。例えば、コントローラ6は、バンクB(1)を選択することで、バンクB(1)が示す組み合わせに従って、すなわち標準分解能のカメラ31B、偏光照明および高速デコードを用いてコード読取を実行することができる。かかる構成では、照明の種類(照明条件)やカメラの種類(撮像条件)のみならず、デコードの種類(デコード条件)も含むバンクBを使い分けて、コアC2およびコアC3でデコードを並行して実行できるため、効率的なコードの読み取りが可能となる。
【0076】
ところで、照明部2がワークWに照明光Liを照射するための照明条件、撮像部3がワークWを撮像するための撮像条件およびコード画像Icをデコードするためのデコード条件は、次に示すチューニングによって調整することができる。続いては、このチューニングについて説明する。
【0077】
図6はチューニングの一例を示すフローチャートであり、図7はチューニングで実行される明るさ粗調整の一例を示すフローチャートである。ステップS101では、コントローラ4(チューニング部)はコードを探索する。具体的には、コントローラ4は、照明部2に照明動作を実行させつつ撮像部3に撮像動作を実行させて、コード画像Icを生成する。さらに、コントローラ4は、このコード画像Icをデコードすることでコードを探索する。このコードの探索は、その時点でコントローラ4に設定されている照明条件、撮像条件およびデコード条件を用いて実行される。すなわち、ステップS101では、その時点で設定されている照明条件、撮像条件およびデコード条件を用いてコード読取が実行される。
【0078】
ステップS102では、コントローラ4は、照明部2が照射する照明光Liの明るさの粗調整を実行する(図7)。図7に示すように、ステップS201では、コントローラ4は、コード探索で用いた照明モードとは異なる照明モードを照明部2に設定することで、照明モードを切り換える。そして、コントローラ4は切り換えられた照明モードで読取テストを実行する(ステップS202)。この読取テストは、照明条件、撮像条件あるいはデコード条件の調整のために実行されるコード読取であり、読取テストは、コード読取と同様に照明動作、撮像動作およびデコードを順番に実行する。
【0079】
ステップS203では、コントローラ4は、ステップS202の読取テストに成功したかを判定する。読取テストに成功した場合(ステップS203で「YES」の場合)には、コントローラ4は、切り換え前の照明モードおよび切り換え後の照明モードのそれぞれで、照明光Liの明るさを段階的に変更しつつ、各明るさで読取テストを実行する(ステップS204)。ステップS205では、コントローラ4は、切り換え前の照明モードと切り換え後の照明モードのうち、読取結果の優れた照明モードを決定する。例えば、照明光Liの明るさを変えながら複数回の読取テストを、各照明モードについて実行した結果、読取テストの成功回数が多い照明モードが、読取結果の優れた照明モードに決定される。続くステップS206では、コントローラ4は、読取結果の優れた照明モードについて実行された複数回の読取テストのうち成功した読取テストそれぞれでの明るさの中央値を、明るさ粗調整の結果として決定する。そして、図7の明るさ粗調整が終了する。
【0080】
ステップS203において、ステップS202の読取テストに失敗したと判定された場合(ステップS203で「NO」の場合)には、コントローラ4は、切り換え前の照明モードで、照明光Liの明るさを段階的に変更しつつ、各明るさで読取テストを実行する(ステップS207)。続くステップS206では、コントローラ4は、切り換え前の照明モードについて実行された複数の読取テストのうち成功した読取テストそれぞれでの明るさの中央値を、明るさ粗調整の結果として決定する。そして、図7の明るさ粗調整が終了する。
【0081】
こうして、図7の明るさ粗調整(すなわち、図6のステップS102)では、切り換え前の照明モードおよび切り換え後の照明モードのうち、適切な一の照明モードと、当該照明モードにおける適切な明るさとが決定される。この明るさ粗調整(ステップS102)が終了すると、コントローラ4は、明るさ微調整を実行する(ステップS103)。具体的には、適切な一の照明モードで照射される照明光Liの明るさを、適切な明るさを中心とする所定範囲で変更しつつ、読取テストが実行される。例えば、同一の明るさについて複数回の読取テストが実行されて、当該明るさにおける読取テストの成功回数が求められる。こうして各明るさについて成功回数を求めたうえで、成功回数が最多となる明るさが最適な明るさとして求められる。
【0082】
ステップS104では、コントローラ4は、適切な一の照明モードで照射される照明光Liの明るさを、ステップS103で求められた最適な明るさに設定しつつ、複数回の読取テストを実行する。ステップS105では、コントローラ4は、ステップS104の複数回の読取テストにおいて読取テストに成功した成功率が所定の閾値以上であるかを判定する。読取テストの成功率が閾値未満である場合(ステップS105で「NO」の場合)には、コントローラ4は、照明条件以外の条件、すなわち撮像条件あるいはデコード条件を変更して(ステップS106)、ステップS101に戻る。一方、読取テストの成功率が閾値以上である場合(ステップS105で「YES」)には、コントローラ4は、その時点で設定されている照明条件、撮像条件およびデコード条件を、チューニング結果として出力する(ステップS107)。
【0083】
コントローラ6は、上記のチューニングを例えばユーザの要求に応じて実行する。なお、ユーザは、例えばディスプレイSPを操作することで、コントローラ6にチューニングの実行を要求できる。そして、コントローラ6は、チューニングを実行した結果、すなわち照明条件、撮像条件およびデコード条件の組み合わせを記憶部7に保存する。この際、コントローラ6は、新たなバンクBをカスタムバンクBとして記憶部7に生成して、このカスタムバンクBにチューニング結果を保存する。したがって、図4に示す制御では、コントローラ6は、このカスタムバンクに設定された照明条件、撮像条件およびデコード条件を用いてコード読取を実行することができる。また、チューニングを複数回実行することで、複数のカスタムバンクBを記憶部7に生成することができる。
【0084】
つまり、図6および図7の例では、コントローラ6(チューニング実行部)は、照明条件および撮像条件がデコードに適した条件となるように設定する。そして、記憶部7に設定される複数のバンクBは、コントローラ6によるチューニングによって設定された照明条件および撮像条件を示す複数のカスタムバンクを含む。この際、コアC2によりデコードされるコード画像Icを生成するコード画像生成処理を実行してコアC2でデコードするコード読取と、コアC3によりデコードされるコード画像Icを生成するコード画像生成処理を実行してコアC3でデコードするコード読取とを、互いに異なるカスタムバンクBに設定される各条件で実行することができる。かかる構成では、ユーザが特殊なワークWを扱う場合に、照明条件および撮像条件を当該ワークWに応じてチューニングすることができ、確実なコードの読み取りが可能となる。
【0085】
以上に説明するように本実施形態では、コード読取装置1が本発明の「コード読取装置」の一例に相当し、照明部2が本発明の「照明部」の一例に相当し、撮像部3が本発明の「撮像部」の一例に相当し、コントローラ6が本発明の「制御部」の一例に相当し、コアC1が本発明の「第1コア」の一例に相当し、コアC2~C4が本発明の「第2コア」の一例に相当し、コアC3が本発明の「第3コア」の一例に相当し、コアC4が本発明の「第4コア」の一例に相当する。
【0086】
なお、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したものに対して種々の変更を加えることが可能である。例えば、撮像部3が備える2台のカメラ31A、31Bを、分解能ではなく焦点距離に応じて使い分けられるように構成してもよい。この変形例では、カメラ31Aの集光レンズ311Aと、カメラ31Bの集光レンズ311Bとは互いに異なる焦点距離を有し、例えば、集光レンズ311Aの焦点距離は、集光レンズ311Bの焦点距離より短い。換言すれば、カメラ31Aは、カメラ31Bよりも近い距離を撮像する近距離用カメラであり、逆にカメラ31Bは、カメラ31Aより遠い距離を撮像する遠距離用カメラである。
【0087】
そして、コントローラ6は、距離計測部4の距離センサ41が検出したワークWまでの距離に応じて、カメラ31A、31Bのうちから、撮像動作に用いる一のカメラを選択する。具体的には、コントローラ6は、ワークWまでの距離が閾距離未満であれば、近距離用のカメラ31Aを撮像動作に使用する一のカメラに選択し、ワークWまでの距離が閾距離以上であれば、遠距離用のカメラ31Bを撮像動作に使用する一のカメラに選択する。コード画像生成処理では、こうして選択された一のカメラによって、コード画像Icが生成される。かかる構成では、適切な焦点距離を有するカメラによってコード画像Icを撮像することができ、コードのデコードの成功率の向上が可能となる。
【0088】
ところで、上述の通り、高速デコードに要する時間と難読デコードに要する時間とは異なる。このようなデコードに要する時間の違いに応じて、デコードの失敗を判定するためのタイムアウト期間は、高速デコードと難読デコードとで異なる。つまり、高速デコードには、高速用のタイムアウト期間が設定され、難読デコードには、高速用のタイムアウト期間より長い難読用のタイムアウト期間が設定される。また、このようなタイムアウト期間を用いたデコード管理は、次のようにして実行することができる。
【0089】
図8はデコード管理の一例を示すフローチャートである。図8のフローチャートは、コントローラ6によって実行される。コントローラ6は、コード画像Icのデコードを開始すると(ステップS301)、ステップS302で、デコード開始からタイムアウト期間が経過したかを判定する。タイムアウト期間が経過した場合(ステップS302で「YES」の場合)には、コントローラ6は、デコードを終了する(ステップS304)。
【0090】
一方、タイムアウト期間が経過していない場合(ステップS302で「NO」の場合)には、コントローラ6はデコードに成功、すなわちコードの読み取りに成功したかを確認する(ステップS303)。コードの読み取りの成功が確認できた場合(ステップS303で「YES」の場合)には、コントローラ6はデコードを終了する(ステップS304)。
【0091】
ステップS303で、コードの読み取りの成功が確認できない場合(ステップS303で「NO」の場合)には、コントローラ6は、コード画像Icにコードが含まれていないと判定されたか、すなわちコード無し判定がなされたかを確認する(ステップS305)。コード無し判定がなされていない場合(ステップS305で「NO」の場合)には、コントローラ6は、ステップS302に戻る。一方。コード無し判定がなされた場合(ステップS305で「YES」の場合)には、コントローラ6はデコードを終了する(ステップS304)。
【0092】
図4に示すシーケンスにおいて図8のデコード管理を実行した場合には、次のような制御が実行される。つまり、1種類の照明モード(偏光照明モード)を照明部2に実行させつつコード画像生成処理を実行する高速撮像制御(第1撮像制御)では、照明部2は、当該1種類の照明モードを繰り返して実行する。そして、コントローラ6は、コアC1(第1コア)によるコード画像Icのデコードに成功した場合(ステップS303で「YES」)、あるいはコアC1がデコードを実行したコード画像Icにコードが含まれていないと判断した場合(ステップS305で「YES」の場合)には、照明部2に1種類の照明モードにより光を照射させるコード画像生成処理を新たに実行して、コアC1によるデコードの対象となるコード画像Icを生成する。一方、コアC2(第2コア)によるコード画像Icのデコードに成功した場合(ステップS303で「YES」の場合)、あるいはコアC2がデコードを実行したコード画像Icにコードが含まれていないと判断した場合(ステップS305で「YES」の場合)には、照明部2に実行させる照明モードを4種類の照明モードのうちで変更してコード画像生成処理を新たに実行して、コアC2によるデコードの対象となるコード画像Icを生成する。かかる構成では、デコードに成功した場合や、コードが含まれていないと判断した場合には、新たなコードの読み取りを速やかに開始することができる。
【0093】
また、コアC1は、コード画像Icのデコードの開始から高速用のタイムアウト期間(第1タイムアウト期間)が経過してもコード画像Icのデコードに成功しない場合(ステップS302で「YES」の場合)には、デコードを終了する(ステップS304)。また、コアC2は、コード画像Icのデコードの開始から高速用のタイムアウト期間より長い難読用のタイムアウト期間(第2タイムアウト期間)が経過してもコード画像Icのデコードに成功しない場合(ステップS302で「YES」)の場合)には、デコードを終了する(ステップS304)。かかる構成では、簡単なコードの読み取りのためのタイムアウトを短く設定し、難しいコードの読み取りのためのタイムアウトを長く設定することができ、簡単なコードのデコードの高速性を保ちつつ、難しいコードのデコードの成功率の向上を図ることができる。
【0094】
ところで、上記の例では、高速デコードを実行するコアC1の数は、難読デコードを実行するコアC2~C4の数より少ない。しかしながら、高速デコードを実行するコアの数を、難読デコードを実行するコアの数より多くしてもよい。例えば、コアC1、C2で高速デコードを実行し、コアC3で難読デコードを実行することができる。かかる構成では、読み取りが簡単なコードに対するコード読取を多くのコアC1、C2を用いて実行でき、当該コードの読み取りを素早く行うことができる。さらに、読み取りが簡単なコードをさらに素早く読み取るために、次の図9のデコード管理を実行してもよい。
【0095】
図9はデコード管理の変形例を示すフローチャートである。図9のフローチャートは、コントローラ6によって実行される。また、図9のデコード管理は、高速デコードを実行するコアC1、C2に共通して実行されるために、ここでは、コアC1に対するデコード管理について説明する。
【0096】
コントローラ6は、コアC1によるデコード(高速デコード)を開始すると(ステップS401)、ステップS402において、コアC1によるデコードが成功したかを確認する。コアC1によるデコードの成功が確認できると(ステップS402で「YES」)、コントローラ6はデコードを終了する(ステップS406)。一方、コアC1によるデコードの成功が確認できない場合(ステップS402で「NO」の場合)には、コントローラ6は、デコードを開始してからタイムアウト期間が経過したかを確認する(ステップS403)。タイムアウト期間の経過が確認されると(ステップS403で「YES」)、コントローラ6はデコードを終了する(ステップS406)。
【0097】
一方、タイムアウト期間が経過していない場合(ステップS403で「NO」の場合)、コントローラ6は、タイムアウト直前であるかの判定を行う(ステップS404)。具体的には、コントローラ6は、コアC1が実行中のデコードに要した時間と、当該コアC1に設定されているタイムアウト期間との差が所定時間未満であるか否かを判定する。そして、当該差が所定時間以上である場合には、コントローラ6はタイムアウト直前ではないと判定して(ステップS404で「NO」)、ステップS402に戻る。
【0098】
一方、当該差が所定時間未満である場合には、コントローラ6はタイムアウト直前であると判定して(ステップS404で「YES」)、ステップS405を実行してからステップS402に戻る。ステップS405では、コントローラ6は、コアC1がデコードを実行中のコード画像Icの次にデコードを実行すべきコード画像Icを生成するコード画像生成処理を開始するように、コアC0に指令を出す。そして、コアC0は、コントローラ6による指令を受けて、当該コード画像生成処理を開始する。
【0099】
つまり、この例では、コード画像Icのデコードを並行して実行可能なコアC1(第1コア)、コアC2(第2コア)およびコアC3(第3コア)が設けられている。また、コアC1、C2がデコードに使用できるタイムアウト期間は、コアC3がデコードに使用できるタイムアウト期間より短い。そして、コントローラ6は、コアC1およびコアC2のうちの一のコアが、実行中のデコードに要した時間と、当該一のコアに対するタイムアウト期間との差が所定時間未満となると(ステップS404で「YES」)、当該一のコアでデコードを実行予定のコード画像Icを生成するためのコード画像生成処理を開始する(ステップS405)。
【0100】
つまり、実行中のデコードの完了を待たずに、次に実行予定のデコードのためのコード画像生成処理が開始される。その結果、簡単なコードのデコードの高速性を保ちつつ、難しいコードのデコードの成功率の向上が可能となる。
【0101】
ところで、上記実施形態とは別の実施形態に係るコード読取装置1は、図13に示すように、例えば、難読読取性能よりも高速読取性能を重視して、コアC1~C3を高速デコード用のコアとし、コアC4を難読デコード用のコアとし、コアC1~C3がデコードに使用できるタイムアウト期間を、コアC4がデコードに使用できるタイムアウト期間よりも短く設定しても良い。コントローラ6は、コアC1~C3のうちの一のコアが、実行中のデコードに要した時間と、当該一のコアに対するタイムアウト期間との差が所定時間未満(タイムアウト直前)となると、当該一のコアでデコードを実行予定のコード画像Icを生成するためのコード画像生成処理を開始しても良い。コントローラ6は、デコードを即時に実行可能なコア(待機状態のコア)があれば、当該コアにデコードを実行予定のコード画像Icを生成するためのコード画像生成処理を開始しても良い。これにより、難しいコードよりも簡単なコードが多い環境においても、各コアの待機時間を減らすことができる一方で、難読コアに対してはデコード時間を相対的に長くすることで、デコード成功率を維持することができるため、簡単なコードのデコードの高速性と難しいコードのデコードの安定性との両立が可能となる。なお、上記別の実施形態においては、上記の例に限らず、高速デコード用のコア数が、難読デコード用のコア数よりも多ければ良い(例えば、コアC1およびC2が高速デコード用で、コアC3が難読デコード用でも良い)。また、距離計測部4の計測結果(距離)に応じて、複数のカメラ(例えば、標準距離用のカメラと遠方用のカメラ)のうち一方を選択するように構成しても良い。
【0102】
また、上記別の実施形態に係るコード読取装置1においては、読取対象となるコードの種類に応じて最適化されたデコード(換言すれば、画像処理)を、コアC1等に実行させることができる。例えば、デコードを実行する画像処理で使用されるフィルタの係数をコードの種類に応じて最適化しておき、当該係数をデコード条件に含めてバンクBに保存できる。特に、複数の種類のコードのそれぞれについて、最適化されたフィルタ係数を求めてバンクBに保存しても良い。このような場合には、複数のコード種それぞれに応じたデコードの制御が実行できる。ちなみに、例えばラベルに付されたコードと、DPMにより形成されたコードとは異なる種類のコードと取り扱われる。
【0103】
図10はコード種に応じたデコード制御の一例を示すフローチャートであり、図11図10のフローチャートで実行される動作を模式的に示す図である。図10のフローチャートは、コントローラ6によって実行される。ステップS501では、コントローラ6は、複数のコード種のうちから一のコード種がユーザにより選択されたかを判定する。ユーザは、例えばディスプレイSPを操作することでコード種を選択できる。一のコード種Ksが選択された場合(ステップS501で「YES」の場合)、コントローラ6は、コアC1、C2、C3の全てにおいて、当該一のコード種Ksに応じたデコード(画像処理を)をコード画像Icに対して実行すると決定する。その結果、コアC1、C2、C3は、同一のコード種Ksに対応するデコードを、コード画像生成処理で生成されたコード画像Icに並行して実行する。
【0104】
つまり、図10および図11の例では、コントローラ6(制御部)が読取対象のコードの種別の指定をユーザから受け付ける(ステップS501)。そして、コアC1、C2、およびC3は、コントローラ6が受け付けた一つのコード種Ksのコードに対応するデコードを実行する(ステップS502)。このようにコード種を1つに固定することで、当該コード種を読み取るための撮像頻度が最大化し、コードが撮像部3の視野に含まれている期間に当該コードを撮像できる確率が向上する。
【0105】
つまり、コード読取装置1の前を次々とワークWが通過するような場合、コード読取装置1の前をワークWが通過する周期に対して、当該ワークWを撮像する周期が長いと、撮像できないワークWが発生する。そこで、上記のように撮像頻度を最大化することで、ワークWを確実に撮像することができる。
【0106】
また、図10のフローチャートにおいて、ユーザによりコード種が選択されなかった場合(ステップS501で「NO」の場合)、図12のように、コード種に応じたデコード制御を実行することもできる(ステップS503)。図12はデコード制御の変形例で実行される動作を模式的に示す図である。この例では、複数種類のコード種Ka、Kb、Kcそれぞれに対応する複数種類のデコードが実行される。つまり、コード種Kaのコードに対して最適化されたデコードと、コード種Kbのコードに対して最適化されたデコードと、コード種Kcのコードに対して最適化されたデコードとが実行される。また、コアC1、C2、C3のそれぞれは並行して、複数のコード種Ka、Kb、Kcそれぞれに対応する複数種類のデコードを順番に実行する。この際、コアC1、C2、C3は互いに異なる順番で、複数種類のデコードを実行する。
【0107】
つまり、図12の例では、コアC1(第1コア)、コアC2(第2コア)およびコアC3(第3コア)は、共通の複数の種類Ka、Kb、Kcのコードに対してデコードを実行可能である。そして、コアC1、コアC2およびコアC3は、複数の種類Ka、Kb、Kcのコードのデコードを互いに異なる順序で実行する。かかる構成では、読取対象のコード種が複数ある場合において、コアC1、コアC2およびコアC3で優先的にデコードするコード種を異ならせて、コードの読み取りに成功する確率を向上できる。
【0108】
また、図4のシーケンスでは、コアC1(第1コア)によってデコードされるコード画像Icを生成するコード画像生成処理を複数回実行する高速撮像制御においては、照明が偏光照明に固定されている。しかしながら、高速撮像制御で使用される照明は、偏光照明に限られず、他の種類の照明でもよい。また、高速撮像制御で使用される照明の種類は1種類である必要はなく、2種類以上でもよい。
【産業上の利用可能性】
【0109】
この発明は、ワークで反射された光に基づきコード画像を生成して、このコード画像をデコードすることで、ワークに付されたコードを読み取る技術全般に適用可能である。
【符号の説明】
【0110】
1…コード読取装置
2…照明部
3…撮像部
C1…コア
C2…コア
C3…コア
C4…コア

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13