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

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

▶ キヤノン株式会社の特許一覧

特許7490483システム、情報処理方法、物品の製造方法、プログラム及び記録媒体
<>
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図1
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図2
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図3
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図4
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図5
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図6
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図7
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図8
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図9
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図10
  • 特許-システム、情報処理方法、物品の製造方法、プログラム及び記録媒体 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-17
(45)【発行日】2024-05-27
(54)【発明の名称】システム、情報処理方法、物品の製造方法、プログラム及び記録媒体
(51)【国際特許分類】
   G01B 11/245 20060101AFI20240520BHJP
【FI】
G01B11/245 H
【請求項の数】 15
(21)【出願番号】P 2020124856
(22)【出願日】2020-07-22
(65)【公開番号】P2022021367
(43)【公開日】2022-02-03
【審査請求日】2023-07-20
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003133
【氏名又は名称】弁理士法人近島国際特許事務所
(72)【発明者】
【氏名】溝花 弘登
(72)【発明者】
【氏名】檀 慶太
(72)【発明者】
【氏名】山本 健吉
(72)【発明者】
【氏名】渡辺 慶
【審査官】櫻井 仁
(56)【参考文献】
【文献】米国特許第06340991(US,B1)
【文献】特開2020-098562(JP,A)
【文献】特開2019-128274(JP,A)
【文献】米国特許出願公開第2019/0225430(US,A1)
【文献】特開2012-178789(JP,A)
【文献】特開2014-186004(JP,A)
【文献】特開2016-031701(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01B 11/00-11/30
(57)【特許請求の範囲】
【請求項1】
情報処理装置を備え、
前記情報処理装置は、複数のカメラのうちの第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも3つの第1画像を、前記第1カメラから取得し、
前記情報処理装置は、前記複数のカメラのうちの第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、
前記情報処理装置は、前記3つの第1画像間の前記物体の2つの第1移動量を計算し、
前記情報処理装置は、前記2つの第2画像間の前記物体の第2移動量を計算し、
前記情報処理装置は、前記2つの第1移動量、前記第2移動量、及び前記所定周期の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、
ことを特徴とするシステム。
【請求項2】
情報処理装置と、
物体の位置姿勢を時刻と対応付けて計測する計測部と、を備え、
前記情報処理装置は、複数のカメラのうちの第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第1画像を、前記第1カメラから取得し、
前記情報処理装置は、前記複数のカメラのうちの第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、
前記情報処理装置は、前記2つの第1画像間の前記第1カメラに対する相対的な前記物体の第1移動量を計算し、
前記情報処理装置は、前記2つの第2画像間の前記第2カメラに対する相対的な前記物体の第2移動量を計算し、
前記情報処理装置は、前記第1移動量、前記第2移動量、及び前記計測部の測定結果の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、
ことを特徴とするシステム。
【請求項3】
前記複数のカメラ及び前記物体の一方を支持し、前記複数のカメラ及び前記物体の一方を移動させることが可能な駆動装置を備えた、
ことを特徴とする請求項1又は2に記載のシステム。
【請求項4】
前記駆動装置は、前記複数のカメラが前記物体を撮像する際に、前記複数のカメラ及び前記物体の一方を他方に対して非直線的に移動させる、
ことを特徴とする請求項に記載のシステム。
【請求項5】
前記駆動装置は、ロボットアームと、前記ロボットアームに設けられたエンドエフェクタと、を有する、
ことを特徴とする請求項又はに記載のシステム。
【請求項6】
前記情報処理装置は、前記複数のカメラの撮像タイミングのずれ量を小さくするように、前記複数のカメラのうちの少なくとも1つのカメラを制御する、
ことを特徴とする請求項1乃至のいずれか1項に記載のシステム。
【請求項7】
前記複数のカメラと前記情報処理装置との通信を行う通信インターフェースを備えた、
ことを特徴とする請求項1乃至のいずれか1項に記載のシステム。
【請求項8】
前記複数のカメラを備えた、
ことを特徴とする請求項1乃至のいずれか1項に記載のシステム。
【請求項9】
情報処理方法であって、
情報処理可能な処理部は、第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも3つの第1画像を、前記第1カメラから取得し、
前記処理部は、第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、
前記処理部は、前記3つの第1画像間の前記物体の2つの第1移動量を計算し、
前記処理部は、前記2つの第2画像間の前記物体の第2移動量を計算し、
前記処理部は、前記2つの第1移動量、前記第2移動量、及び前記所定周期の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、
ことを特徴とする情報処理方法。
【請求項10】
情報処理方法であって、
計測部は、物体の位置姿勢を時刻と対応付けて計測し、
情報処理可能な処理部は、第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第1画像を、前記第1カメラから取得し、
前記処理部は、第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、
前記処理部は、前記2つの第1画像間の前記第1カメラに対する相対的な前記物体の第1移動量を計算し、
前記処理部は、前記2つの第2画像間の前記第2カメラに対する相対的な前記物体の第2移動量を計算し、
前記処理部は、前記第1移動量、前記第2移動量、及び前記計測部の測定結果の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、
ことを特徴とする情報処理方法。
【請求項11】
前記処理部は、前記第1カメラおよび前記第2カメラに対して相対的に非直線的に移動する前記物体を、前記第1カメラおよび前記第2カメラの各々に前記所定周期で撮像させることにより、前記少なくとも3つの第1画像および前記少なくとも2つの第2画像を得る、
ことを特徴とする請求項9に記載の情報処理方法。
【請求項12】
前記処理部は、前記第1カメラおよび前記第2カメラに対して相対的に非直線的に移動する前記物体を、前記第1カメラおよび前記第2カメラの各々に前記所定周期で撮像させることにより、前記少なくとも2つの第1画像および前記少なくとも2つの第2画像を得る、
ことを特徴とする請求項10に記載の情報処理方法。
【請求項13】
請求項に記載のシステムを用い、検出された前記ずれ量が所定値以下であれば、前記複数のカメラによりワークを撮像して前記ワークの3次元計測を行い、前記ロボットアームと前記エンドエフェクタとを用いて前記ワークを制御し物品を製造する、
ことを特徴とする物品の製造方法。
【請求項14】
請求項乃至12のいずれか1項に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【請求項15】
請求項乃至12のいずれか1項に記載の情報処理方法をコンピュータに実行させるためのプログラムを記録した、前記コンピュータにより読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のカメラの同期に関する。
【背景技術】
【0002】
製品を生産する生産ラインにおいて、人手による作業に代わって、ロボット装置などを含む生産装置による作業が行われている。
【0003】
このような生産装置において、作業に必要なワークの計測や検査を行うために、ワークを2次元計測又は3次元計測するためのカメラおよび画像処理装置が用いられることがある。例えば、対象物の計測や検査に奥行き方向の情報が必要な場合には、複数のカメラを用いて、三角測量の原理によって対象物の3次元計測を行う。この種の3次元計測では、複数のカメラで対象物を撮像することにより得られた複数の画像の各々に写り込んだ物体の位置の違い、即ち視差を計算し、この視差を奥行き量に変換することにより、対象物の3次元情報が取得される。
【0004】
この種の3次元計測では、対象物を精密に計測することを要求されることがある。しかし、カメラ又は対象物が相対的に移動又は振動するような場合、複数のカメラ間で撮像タイミングがずれると、視差を正確に計算できなくなり、対象物の3次元情報を正確に計測ことが困難となる。このため、複数のカメラ間で撮像タイミングを正確に同期させることが要求される。
【0005】
特許文献1には、複数のカメラ間で撮像タイミングを同期させるために、カメラが他のカメラを制御するための通信手段を備えた構成が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2011-239379号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1に開示されている構成では、複数のカメラの各々にトリガ信号を送受信するための通信手段を設ける必要があり、各カメラが大型及び高価になる。具体的に説明すると、各カメラにおいて、トリガ信号を送信する送信回路、及びトリガ信号を受信する受信回路が別途必要となり、またトリガ信号の伝送路となる各カメラ間をつなぐケーブルも、別途必要となっている。そのため、このような通信手段を設けなくてもよい構成で、複数のカメラの撮像タイミングのずれを正確に検出することが求められていた。
【0008】
本発明は、複数のカメラの撮像タイミングのずれを正確に検出することを目的とする。
【課題を解決するための手段】
【0009】
本開示の第態様は、情報処理装置を備え、前記情報処理装置は、複数のカメラのうちの第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも3つの第1画像を、前記第1カメラから取得し、前記情報処理装置は、前記複数のカメラのうちの第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、前記情報処理装置は、前記3つの第1画像間の前記物体の2つの第1移動量を計算し、前記情報処理装置は、前記2つの第2画像間の前記物体の第2移動量を計算し、前記情報処理装置は、前記2つの第1移動量、前記第2移動量、及び前記所定周期の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、ことを特徴とするシステムである。
本開示の第態様は、情報処理装置と、物体の位置姿勢を時刻と対応付けて計測する計測部と、を備え、前記情報処理装置は、複数のカメラのうちの第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第1画像を、前記第1カメラから取得し、前記情報処理装置は、前記複数のカメラのうちの第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、前記情報処理装置は、前記2つの第1画像間の前記第1カメラに対する相対的な前記物体の第1移動量を計算し、前記情報処理装置は、前記2つの第2画像間の前記第2カメラに対する相対的な前記物体の第2移動量を計算し、前記情報処理装置は、前記第1移動量、前記第2移動量、及び前記計測部の測定結果の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、ことを特徴とするシステムである。
【0010】
本開示の第態様は、情報処理方法であって、情報処理可能な処理部は、第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも3つの第1画像を、前記第1カメラから取得し、前記処理部は、第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、前記処理部は、前記3つの第1画像間の前記物体の2つの第1移動量を計算し、前記処理部は、前記2つの第2画像間の前記物体の第2移動量を計算し、前記処理部は、前記2つの第1移動量、前記第2移動量、及び前記所定周期の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、ことを特徴とする情報処理方法である。
本開示の第態様は、情報処理方法であって、計測部は、物体の位置姿勢を時刻と対応付けて計測し、情報処理可能な処理部は、第1カメラが前記第1カメラに対して相対的に移動する物体を所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第1画像を、前記第1カメラから取得し、前記処理部は、第2カメラが前記第2カメラに対して相対的に移動する前記物体を前記所定周期で撮像することによって生成した撮像時刻の異なる少なくとも2つの第2画像を、前記第2カメラから取得し、前記処理部は、前記2つの第1画像間の前記第1カメラに対する相対的な前記物体の第1移動量を計算し、前記処理部は、前記2つの第2画像間の前記第2カメラに対する相対的な前記物体の第2移動量を計算し、前記処理部は、前記第1移動量、前記第2移動量、及び前記計測部の測定結果の関係を用いて、前記第1カメラと前記第2カメラの撮像タイミングのずれ量を検出する、ことを特徴とする情報処理方法である
【発明の効果】
【0011】
複数のカメラの撮像タイミングのずれを正確に検出することができる。
【図面の簡単な説明】
【0012】
図1】(a)は、第1実施形態に係る製造システムの一例であるロボットシステムの模式図である。(b)は、第1実施形態に係るロボットハンド及び撮像装置の斜視図である。
図2】(a)は、第1実施形態に係る撮像システムの説明図である。(b)は、第1実施形態に係る撮像装置の正面図である。
図3】第1実施形態に係る画像処理装置の制御系を示す説明図である。
図4】第1実施形態に係るカメラの内部構成を示す模式図である。
図5】第1実施形態に係るイメージセンサの状態遷移を示す模式図である。
図6】第1実施形態に係る情報処理方法のうち検出処理の手順を示すフローチャートである。
図7】第1実施形態に係る各カメラから出力される画像の一例を示す説明図である。
図8】(a)~(c)は、第1実施形態に係る検出処理を説明するための模式図である。
図9】第1実施形態に係る情報処理方法のうち同期処理の手順を示すフローチャートである。
図10】第2実施形態に係る情報処理方法のうち検出処理の手順を示すフローチャートである。
図11】第2実施形態に係る検出処理を説明するための模式図である。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【0014】
[第1実施形態]
図1(a)は、第1実施形態に係る製造システムの一例であるロボットシステム1000の模式図である。ロボットシステム1000は、生産ラインに配置され、ワークW1をワークW2に組み付けて物品を製造する製造システムとして用いられる。ロボットシステム1000は、駆動装置の一例であるロボット装置1001と、制御装置1002と、撮像システム2000と、を備える。撮像システム2000は、撮像装置1と、情報処理装置の一例である画像処理装置2と、を備える。ロボット装置1001が配置される空間を作業空間R1とする。
【0015】
ロボット装置1001は、架台B1上に載置されている。ロボット装置1001は、ロボットアーム1010と、エンドエフェクタの一例であるロボットハンド1020と、を有する。本実施形態において、ロボットアーム1010は、多関節のロボットアーム、具体的には垂直多関節のロボットアームである。ロボットハンド1020は、ロボットアーム1010の所定部位、例えばロボットアーム1010の先端部に設けられる。ロボットアーム1010は、ロボットハンド1020を任意の位置に移動させることができる。ロボットハンド1020は、複数、例えば2つのフィンガ1021、1022を有し、例えばワークW1などの物体を把持することができる。
【0016】
制御装置1002は、ロボット装置1001と通信可能にケーブル1201で接続され、ロボット装置1001、即ちロボットアーム1010及びロボットハンド1020を制御することが可能である。
【0017】
撮像装置1は、本実施形態では、ステレオカメラである。撮像装置1は、画像処理装置2とケーブル1202で接続されている。ケーブル1202は、電源線、撮像データや撮像パラメータを送受信するための通信線、通信制御などに用いられるIO線を含む。通信線のインターフェースは、例えば、USB(Universal Serial Bus)のような規格に基づいて構成されている。
【0018】
本実施形態では、撮像装置1は、ロボット装置1001、例えばロボットハンド1020に取り付けられている。これにより、撮像装置1は、ロボット装置1001に支持されている。図1(b)は、ロボットハンド1020及び撮像装置1の斜視図である。撮像装置1は、複数、第1実施形態では2つのカメラ101、102を有する。本実施形態では、撮像装置1を用いて計測した測定対象、例えばワークW2の3次元計測結果に基づき、ロボット装置1001のロボットハンド1020の位置姿勢を制御することができる。なお、本実施形態では、撮像装置1は、ステレオカメラであるが、複数のカメラを有する多視点カメラであってもよい。多視点カメラでは、各カメラで被写体を撮像することで自由視点映像を生成することができる。
【0019】
各カメラ101、102は、単眼カメラである。2つのカメラ101、102は、それぞれの撮像光軸が互いに所定の基線長だけ離間するよう、間隔をあけて配置されている。各カメラ101、102で撮像されることにより生成された画像データは、上記の通信インターフェースを介して画像処理装置2に伝送される。
【0020】
また、画像処理装置2は、上記の通信インターフェースを介して、撮像時の設定情報である撮像パラメータを撮像装置1に設定することができる。この撮像パラメータには、露光時間、ゲイン、画像サイズなどが含まれる。
【0021】
画像処理装置2は、制御装置1002と通信可能にケーブル1203で接続されている。本実施形態では、撮像装置1は、ロボット装置1001、例えばロボットハンド1020に取り付けられ、被写体、例えばワークW2を3次元計測するのに用いられる。このような構成において、画像処理装置2は、撮像装置1を用いて、例えばワークW2のような被写体を3次元計測する。そして、制御装置1002は、その計測結果に基づきロボット装置1001を制御し、ワークW1をワークW2に組み付けるなどの生産作業をロボット装置1001に行わせることができる。
【0022】
図2(a)は、第1実施形態に係る撮像システム2000の説明図である。図2(b)は、撮像装置1の正面図である。撮像装置1は、上述したように、それぞれの撮像光軸を所定の基線長だけ離間して配置されたカメラ101、102を備える。カメラ101、102の前面には基板103が配置されている。なお、基板103において、各カメラ101、102と対向する位置には、各カメラ101、102の視野領域を遮らないように、開口部が形成されている。基板103の前面には、3次元計測で用いる不図示の照明装置がもうけられていてもよい。不図示の照明装置は、例えば、パターン投光器等である。
【0023】
カメラ101の視野領域と、カメラ102の視野領域とが重なる領域が、複数のカメラ101、102の共通視野領域108である。共通視野領域108に存在する被写体、例えばワークW2を撮像することで、撮像したワークW2を3次元計測することができる。
【0024】
本実施形態のカメラ101、102は携帯用モジュールカメラ、WEBカメラなどの比較的小型安価なカメラである。本実施形態では、カメラ101、102は、それぞれ単体のユニットとして購入できる製品であり、これらカメラ101、102を筐体に組み込むことで、撮像装置1が構成される。カメラ101、102は、筐体によって、所定の基線長だけ離間して相互に位置決めされる。本実施形態では、カメラ101、102は、ゲンロック機能などの外部同期信号への同期機能や、撮像時刻を出力するタイムスタンプ機能を必要とせず、これらの機能を備えていない。本実施形態によれば、上記のようにして、入手が容易で比較的安価なカメラ101、102のユニットから撮像装置1を構成することができる。
【0025】
図2(a)に示す画像処理装置2は、演算処理を行うコンピュータで構成されており、例えばCPUと、ROMおよびRAMを含む記憶部と、外部と通信を行うインターフェース(I/F)部などのハードウェアを有して構成することができる。画像処理装置2のCPUは、プログラムを実行することにより、情報処理可能な処理部200として機能する。処理部200は、カメラ制御部201、ずれ量演算部203、同期制御部204、及び3次元計測部205を機能として含む。処理部200は、画像処理機能のほか、撮像装置1を制御する機能も含んでいる。
【0026】
図3は、第1実施形態に係る画像処理装置2の制御系を示す説明図である。図3を参照しながら、画像処理装置2の制御系の具体的なハードウェア構成の一例について説明する。図3に示す制御系は、プロセッサであるCPU1601、ROM1602およびRAM1603を備える。また、図3に示す制御系には、記憶装置1606が接続されている。
【0027】
図2(a)に示す処理部200における各部201、203、204、及び205の機能は、図3に示すような、CPU1601、CPU1601の周辺のハードウェア、及びCPU1601により実行されるプログラム1609によって実現される。画像処理及び撮像制御に用いられる記憶部は、ROM1602、RAM1603、記憶装置1606により構成される。
【0028】
ROM1602には、プログラム1609や定数情報などが格納される。RAM1603は、CPU1601のワークエリアとして使用される。記憶装置1606は、HDD又はSSDなどのストレージデバイスであり、内部記憶装置であっても、USBインターフェースなどを介して接続された外部記憶装置であっても、ネットワークにマウントされた外部記憶装置であってもよい。
【0029】
本実施形態では、ROM1602が、プログラム1609が格納された、コンピュータにより読み取り可能な非一時的な記録媒体である。プログラム1609は、ネットワークインターフェース1607を介して、ROM1602に供給されるようにしてもよいし、不図示のディスクドライブ装置を経由して、ROM1602に供給されるようにしてもよい。またROM1602に記憶されているプログラム1609は、更新プログラムにより更新されるようにしてもよい。
【0030】
なお、プログラム1609が格納される記録媒体は、ROM1602に限定するものではない。プログラム1609が格納される記録媒体は、磁気ディスクや光ディスクなどの記録ディスクであってよいし、フラッシュメモリなどの記憶デバイスであってもよい。
【0031】
ネットワークインターフェース1607は、例えばIEEE 802.3のような有線通信、IEEE 802.11又はIEEE 802.15のような無線通信による通信規格を用いて構成することができる。CPU1601は、ネットワークインターフェース1607、およびネットワーク1608を介して、他の装置1104と通信することができる。
【0032】
例えば撮像装置1がネットワークに接続されるものとすれば、図3に示す装置1104は撮像装置1に相当する。撮像装置1がネットワーク接続以外の規格によって接続される場合には、インターフェース1605を用いてもよい。インターフェース1605は、他の周辺機器と接続するために用いられるものであってもよい。
【0033】
また、図3の制御系に、必要に応じてユーザインターフェース装置400(UI装置)を設けることができる。ユーザインターフェース装置400は、例えばLCDディスプレイ、キーボード、ポインティングデバイスなどから成るGUI装置などであってもよい。ポインティングデバイスは、マウス、ジョイスティック又はジョグダイヤルなどである。
【0034】
ユーザインターフェース装置400は、撮像画像を表示したり、同期処理及び3次元計測処理のそれぞれの進行状態及び結果をユーザに通知したり、撮像パラメータや同期に関する制御定数を設定したりするために用いることができる。
【0035】
なお、CPU1601がプログラム1609を読み込んで実行することにより、処理部200の機能を実現するものとしたが、これに限定するものではない。例えば、画像処理装置2がFPGAを含み、処理部200の機能を、FPGA内のハードウェアブロックにより実現してもよい。
【0036】
図4は、カメラ101の内部構成を示す模式図である。なお、カメラ102の構成もカメラ101の構成と同様であるため、説明を省略する。カメラ101は、集光部301、イメージセンサ302、センサ制御部303、画像フォーマット変更部304、及び電源制御部305を含む。
【0037】
集光部301は、集光した光をイメージセンサ302に入射するための撮像光学系を構成するレンズを含む。
【0038】
イメージセンサ302は、撮像デバイスである。イメージセンサ302は、例えばCCD(Charge Coupled Device)、又はCMOS(Complementary Metal Oxide Semiconductor)イメージセンサである。
【0039】
以下、図2(a)に示す画像処理装置2の各部201、203、204及び205の動作の概要について説明する。
【0040】
まず、カメラ制御部201の動作について説明する。なお、カメラ制御部201は、各カメラ101、102を個別に制御することが可能であり、各カメラ101、102とも同様の制御であるため、以下、カメラ101の制御について説明する。
【0041】
カメラ制御部201は、カメラ101に電源供給指示を送信する。これにより、カメラ101のイメージセンサ302には、電源供給される。
【0042】
次に、カメラ制御部201は、カメラ101に初期化指示を送信する。カメラ制御部201は、カメラ101のイメージセンサ302の初期化が完了したら、カメラ101に撮像パラメータを変更する撮像パラメータ変更指示を送信する。撮像パラメータには、例えば露光時間、ゲイン、画像サイズなどのパラメータが含まれる。撮像パラメータには、光学系によっては焦点距離などのパラメータが更に含まれる場合もある。
【0043】
撮像パラメータの調整が完了したら、カメラ制御部201は、カメラ101に動画出力開始指示を送信し、カメラ101に動画を出力させる。カメラ制御部201は、ずれ量演算部203から画像取得指示を受信したら、動画データから静止画データを切り取り、静止画データを取得する。
【0044】
また、カメラ制御部201は、カメラ101にイメージセンサ302への動画の出力を停止する動画出力停止指示を送信する。これにより、カメラ101は、イメージセンサ302への電源供給を停止することで、動画の出力を停止する。
【0045】
カメラ制御部201は、電源供給指示、初期化指示、撮像パラメータ変更指示、及び動画出力開始指示のプロセスを再度実行することで、カメラ101に動画の出力を再開させることができる。このように、カメラ制御部201は、カメラ101の動画出力開始タイミングを制御可能である。
【0046】
ずれ量演算部203は、カメラ101、102の撮像タイミングのずれ量を検出する検出処理を実行する。検出処理の詳細については後述する。同期制御部204は、ずれ量演算部203で検出されたずれ量に応じて同期処理を行う。この同期処理については後述する。
【0047】
3次元計測部205は、カメラ101、102で被写体を撮像した画像を用いて、被写体の3次元計測を行う。具体的には、3次元計測部205は、ステレオマッチング処理により求まる視差量と、ステレオカメラ校正により求まる内部パラメータおよび外部パラメータとを用いて、三角測量の原理により、被写体の3次元の位置情報を算出する。
【0048】
ステレオマッチング処理では、例えば、カメラ101の撮像画像を基準画像として、カメラ102の撮像画像内から対応している画素、即ち、被写体の同じ特定部位が撮像されている画素をマッチングにより求める。このステレオマッチング処理としては、例えば、SAD(Sum of Absolute Difference)、SSD(Sum of Squared Difference)などのブロックマッチング法が知られている。このようなステレオマッチング処理は、本実施形態でも用いることができる。
【0049】
内部パラメータは、レンズの焦点距離やひずみ特性などの光学特性を意味する。外部パラメータは、ステレオカメラ内の2つのカメラの相対的な位置姿勢を意味する。内部パラメータや外部パラメータは、形状が既知の校正チャートを撮像し、最適化手法を用いて算出しておくことができる。カメラ101、102に関して事前に算出しておいた内部パラメータ、及び外部パラメータは、画像処理装置2の例えばROM1602に保存しておく。
【0050】
なお、本実施形態では、画像処理装置2は、撮像装置1とは別の装置としたが、これに限定するものではなく、スマートカメラのように、画像処理装置2が撮像装置1に内蔵されていてもよい。
【0051】
次に、図4に示すカメラ101の各部303~305の概要について説明する。センサ制御部303、画像フォーマット変更部304、及び電源制御部305は、FPGAと、ROM及びRAMを含むメモリ部と、外部と通信を行うインターフェース(I/F)部と、を有する電子回路で構成されている。センサ制御部303、画像フォーマット変更部304、電源制御部305及びイメージセンサ302は、相互に電気的に接続される。
【0052】
センサ制御部303は、画像処理装置2のカメラ制御部201と通信し、イメージセンサ302の状態遷移を制御する。図5は、第1実施形態に係るイメージセンサ302の状態遷移を示す模式図である。
【0053】
図5に示すように、イメージセンサ302は、電源OFF状態401、初期化状態402、撮像パラメータ調整状態403、及び動画出力状態404の順で、これら4つの状態のいずれかの状態に遷移する。
【0054】
電源OFF状態401は、イメージセンサ302に電源が供給されていない状態である。センサ制御部303は、画像処理装置2のカメラ制御部201からの電源供給指示を受信すると、イメージセンサ302に電源供給する。イメージセンサ302は、電源供給されると、初期化状態402に遷移する。
【0055】
初期化状態402は、イメージセンサ302において初期化を行う状態である。まず、センサ制御部303は、イメージセンサ302にクロック信号を供給する。センサ制御部303は、画像処理装置2のカメラ制御部201からの初期化開始指示を受信したら、イメージセンサ302に初期化信号を送信する。これにより、イメージセンサ302は、初期化される。イメージセンサ302の初期化が完了すると、センサ制御部303とイメージセンサ302との間で通信可能となり、イメージセンサ302は、撮像パラメータ調整状態403に遷移する。
【0056】
撮像パラメータ調整状態403は、センサ制御部303がイメージセンサ302の撮像パラメータを調整可能な状態である。撮像パラメータは、例えば、露光時間、ゲイン、画像サイズ等である。この撮像パラメータ調整状態403において、センサ制御部303は、画像処理装置2のカメラ制御部201から撮像パラメータ変更指示を受信すると、イメージセンサ302に対して例えば制御コマンドを送る。これにより、イメージセンサ302において、撮像パラメータが格納されているレジスタ値が書き換えられる。
【0057】
センサ制御部303は、画像処理装置2のカメラ制御部201から動画出力開始指示を受信すると、イメージセンサ302に対して動画出力開始信号を送信し、イメージセンサ302を動画出力状態404に遷移させる。
【0058】
動画出力状態404は、イメージセンサ302が動画データを画像フォーマット変更部304に対して、出力し続けている状態である。この状態において、センサ制御部303は、画像処理装置2のカメラ制御部201から動画出力停止指示を受信すると、イメージセンサ302への電源供給を停止し、イメージセンサ302からの動画出力が停止される。これにより、イメージセンサ302は、電源OFF状態401に遷移する。
【0059】
イメージセンサ302が電源OFF状態401に遷移した後、カメラ制御部201がセンサ制御部303に電源供給指示を再度送信することにより、カメラ101が再起動される。このように、カメラ制御部201は、センサ制御部303に指示を送ることにより、イメージセンサ302を状態401~404に循環的に遷移させることが可能である。これにより、画像処理装置2のカメラ制御部201は、カメラ101の動画出力開始タイミングを制御する、即ちカメラ101における撮像タイミングをリセットすることが可能である。また、カメラ102もカメラ101と同様の構成である。よって、画像処理装置2のカメラ制御部201は、カメラ102の動画出力開始タイミングを制御する、即ちカメラ102における撮像タイミングをリセットすることが可能である。
【0060】
なお、以上の説明では、イメージセンサ302が動画出力状態404から電源OFF状態401にのみ遷移する場合について説明したが、これに限定するものではない。イメージセンサ302が動画出力状態404から初期化状態402へ遷移する機能を有している場合には、イメージセンサ302を動画出力状態404から初期化状態402へ遷移させることができる。即ち、画像処理装置2のカメラ制御部201は、イメージセンサ302への電源供給を停止せずに、カメラ101における撮像タイミングをリセットすることができる。同様に、画像処理装置2のカメラ制御部201は、イメージセンサ302への電源供給を停止せずに、カメラ102における撮像タイミングをリセットすることができる。
【0061】
また、イメージセンサ302が動画撮像モードと静止画撮像モードとを有し、これら撮像モードを切り替える機能を有している場合にも、電源供給を停止せずに、カメラ101又はカメラ102における撮像タイミングをリセットすることができる。即ち、静止画撮像モードから動画撮像モードに切り替えた場合には、イメージセンサ302は動画の出力開始し、動画撮像モードから静止画撮像モードに切り替えられた場合には、イメージセンサ302は動画出力を停止する。よって、このような構成では、動画撮像モードと静止画撮像モードとの間で撮像モードを切り替えることにより、イメージセンサ302への電源供給を停止しなくても、カメラ101又はカメラ102における撮像タイミングをリセットすることができる。なお、各カメラ101、102において所定周期ごとに撮像する撮像タイミングは、動画出力開始タイミングで決まる。よって、撮像タイミングをリセットすることと、動画出力開始タイミングをリセットすることとは同義である。つまり、動画出力開始タイミングをリセットすることで、撮像タイミングをリセットすることができる。
【0062】
イメージセンサ302とセンサ制御部303との間の制御インターフェースは、例えばIO端子とI2C(Inter-Integrated Circuit)によって構成することができる。センサ制御部303に送信する画像フォーマットは、MIPI CSI-2(Mobile Industry Processor Interface Camera Serial Interface -2)に準拠するRAW画像フォーマットである。ただし、イメージセンサ302の規格や出力画像フォーマットはこれらに限定されるものではなく、任意に選択することができる。
【0063】
画像フォーマット変更部304は、イメージセンサ302から受信したRAW画像フォーマットを、画像処理装置2に送信するための画像フォーマットに変更する機能を有する。画像フォーマット変更部304がサポートする画像フォーマットは、例えばUVC(USB Video Class)に準拠しているフォーマットなどである。ただし、画像フォーマット変更部304がUVC以外の他の画像フォーマットをサポートしていても構わない。
【0064】
本実施形態では、各カメラ101、102は、画像処理装置2から電源供給されて動作するよう構成されている。電源制御部305は、画像処理装置2から電源供給されると、センサ制御部303と画像フォーマット変更部304に電源を供給する機能を有する。上述したように、イメージセンサ302への電源供給の制御は、センサ制御部303が行う。
【0065】
カメラ101、102の各々は、所定フレームレートで動画を出力する、即ち所定周期である撮像周期で物体を撮像可能に構成されている。しかし、カメラ101、102は、互いに独立して動作する。即ち、カメラ101とカメラ102とは、トリガ信号で同期するような動作は行わない。このため、カメラ101、102間で撮像タイミングが合っているとは限らない。また、各カメラ101、102の撮像周期にも誤差が含まれることがある。カメラ101の撮像周期とカメラ102の撮像周期との間でも誤差が含まれることがある。これら誤差は、撮像おいては許容される誤差ではあるが、使用初期でカメラ101、102の撮像タイミングが合っていても、カメラ101、102の長期間の使用により、カメラ101、102の間で撮像タイミングがずれてくることがある。本実施形態では、画像処理装置2は、複数のカメラ101、102間の撮像タイミングのずれ量を検出するものである。なお、本実施形態の説明において、ずれ量を検出することと、ずれ量を算出することは、同義である。
【0066】
以下、本実施形態におけるカメラ101、102間の撮像タイミングのずれ量を算出する方法、即ち画像処理装置2における情報処理方法について説明する。図6は、第1実施形態に係る情報処理方法のうち検出処理の手順を示すフローチャートである。図7は、各カメラ101、102から出力される画像の一例を示す説明図である。
【0067】
図2(a)の処理部200は、複数のカメラ101、102の撮像タイミングのずれ量を検出する検出処理を実行可能である。即ち、ずれ量の検出処理、つまりずれ量の算出処理は、処理部200、具体的には、ずれ量演算部203が行う。また、以下の説明におけるカメラ101、102の撮像対象は、撮像画像において特徴の抽出が可能なものであれば、いかなる物体でもよく、本実施形態では、3次元計測対象の図1(a)に示すワークW2ということにする。ワークW2は、ずれ量の検出処理のために撮像装置1で撮像する期間中は、作業空間R1において移動しないものとする。そして、ワークW2に対して撮像装置1を非直線C1に沿って移動させるものとする。
【0068】
本実施形態では、図1(a)及び図1(b)に示すように、撮像装置1がロボットハンド1020に取り付けられている。よって、ロボットハンド1020を作業空間R1で移動させることにより、撮像装置1を作業空間R1においてワークW2に対して移動させることができる。その際、カメラ101、102の共通視野領域108(図2(a))にワークW2が存在するように、撮像装置1をワークW2に対して移動させる。そして、本実施形態では、ロボット装置1001が撮像装置1を非直線的に移動させるものとして説明する。
【0069】
ステップS50において、ずれ量演算部203は、カメラ101のイメージセンサ302を動画出力状態404に遷移させる。具体的に説明すると、ずれ量演算部203は、カメラ制御部201に対してカメラ101に動画出力開始指示を送るように指示する。これにより、カメラ制御部201がカメラ101に動画出力開始指示を送信することで、カメラ101は動画出力状態404に遷移し、動画を出力し始める。これにより、ずれ量演算部203は、カメラ101で撮像された動画をカメラ101から取得することが可能となる。
【0070】
ステップS51において、ずれ量演算部203は、カメラ102のイメージセンサ302を動画出力状態404に遷移させる。具体的に説明すると、ずれ量演算部203は、カメラ制御部201に対してカメラ102に動画出力開始指示を送るように指示する。これにより、カメラ制御部201がカメラ102に動画出力開始指示を送信することで、カメラ102は動画出力状態404に遷移し、動画を出力し始める。これにより、ずれ量演算部203は、カメラ102で撮像された動画をカメラ102から取得することが可能となる。
【0071】
ステップS52において、ずれ量演算部203は、カメラ101により撮像された画像を取得する。具体的に説明すると、ずれ量演算部203は、カメラ制御部201に画像取得指示を送り、カメラ101から出力されてくる動画データから静止画データを切り取り、静止画データを取得する。
【0072】
ステップS53において、ずれ量演算部203は、カメラ102により撮像された画像を取得する。具体的に説明すると、ずれ量演算部203は、カメラ制御部201に画像取得指示を送り、カメラ102から出力されてくる動画データから静止画データを切り取り、静止画データを取得する。
【0073】
ステップS54において、ずれ量演算部203は、カメラ101、102の各々から所定数の画像(即ち静止画)を取得したかどうかを判断する。ずれ量演算部203は、画像が所定数に達していなければ(S54:NO)、ステップS52の処理に戻る。このように、ずれ量演算部203は、取得した画像が所定数に達するまで、ステップS52及びS53の処理を繰り返す。取得する画像の所定数は、少なくとも3つである。以下、取得する画像の所定数が3つとして、ステップS52~S54の処理について、図7を参照しながら説明する。
【0074】
カメラ101から得られた画像を、取得した順に画像I11、I12、I13とする。複数の画像I11、I12、I13で画像群I1が構成されている。また、カメラ102から得られた画像を、取得した順に画像I21、I22、I23とする。複数の画像I21、I22、I23で画像群I2が構成されている。画像I11、I12、I13は、カメラ101から出力された動画データから時系列順に撮像周期Δt[ms]で連続的に取得した画像である。画像I21、I22、I23は、カメラ102から出力された動画データから時系列順に撮像周期Δt[ms]で連続的に取得した画像である。
【0075】
画像I11、I12、I13はそれぞれ互いに異なる撮像時刻t、t、tに撮像される。カメラ101における撮像周期Δt[ms]は、一定、又は誤差を含む略一定とする。この誤差は、基準周期に対して±10%以内であるのが好ましい。基準周期には、例えばカメラ101における一連の撮像周期の中でサンプリングした1つの撮像周期を用いてもよいし、サンプリングした複数、例えば10の撮像周期の平均値、中央値、最大値若しくは最小値を用いてもよいし、設計値などを用いてもよい。また、この誤差は、基準周期に対して±2%以内であるのがより好ましく、±1%以内であるのが更に好ましい。
【0076】
同様に、画像I21、I22、I23はそれぞれ互いに異なる撮像時刻t+δ、t+δ、t+δに撮像される。カメラ102における撮像周期Δt[ms]は、一定、又は誤差を含む略一定とする。この誤差は、基準周期に対して±10%以内であるのが好ましい。基準周期には、例えばカメラ102における一連の撮像周期の中でサンプリングした1つの撮像周期を用いてもよいし、サンプリングした複数、例えば10の撮像周期の平均値、中央値、最大値若しくは最小値を用いてもよいし、設計値などを用いてもよい。また、この誤差は、基準周期に対して±2%以内であるのがより好ましく、±1%以内であるのが更に好ましい。δ[ms]は、後のステップで算出しようとするカメラ101、102間の撮像タイミングのずれ量である。
【0077】
また、カメラ101の撮像周期Δtとカメラ102の撮像周期Δtとが、一致、又は誤差を含んで略一致するものとする。この誤差は、基準周期に対して±10%以内であるのが好ましい。基準周期には、例えばカメラ101又は102における一連の撮像周期の中でサンプリングした1つの撮像周期を用いてもよい。また、基準周期には、例えばカメラ101又は102における一連の撮像周期の中でサンプリングした複数、例えば10の撮像周期の平均値、中央値、最大値若しくは最小値を用いてもよい。また、基準周期には、例えば設計値などを用いてもよい。また、この誤差は、基準周期に対して±2%以内であるのがより好ましく、±1%以内であるのが更に好ましい。
【0078】
以上、ステップS50~S54により、ずれ量演算部203は、カメラ101がカメラ101に対して相対的に移動するワークW2を撮像周期Δtで撮像することによって生成した画像群I1をカメラ101から取得する。同様に、以上のステップS50~S54により、ずれ量演算部203は、カメラ102がカメラ102に対して相対的に移動するワークW2を撮像周期Δtで撮像することによって生成した画像群I2をカメラ102から取得する。
【0079】
次に、ステップS55において、ずれ量演算部203は、画像I11~I13から、カメラ101の運動を算出する。ここで、カメラ101から見れば、カメラ101に対してワークW2が相対的に移動することになるため、画像I11~I13間で、ワークW2に相当する画素W2Iが移動することになる。よって、このステップS55において、ずれ量演算部203は、カメラ101の運動として、画像I11~I13間の画素W2Iの動きから、カメラ101に対するワークW2の相対的な移動量を算出する。
【0080】
ステップS55におけるカメラ101に対するワークW2の相対的な移動量の算出処理について具体的に説明する。ずれ量演算部203は、画像I11と画像I12とを用いて、時刻tから時刻tまでのカメラ101に対するワークW2の相対的な移動量V11を算出する。ずれ量演算部203は、画像I12と画像I13とを用いて、時刻tから時刻tまでのカメラ101に対するワークW2の相対的な移動量V12を算出する。これら移動量V11、V12は、ベクトル又は行列であり、例えば6次元のベクトルである。この6次元のベクトルには、3次元の並進移動と、3次元の回転移動が含まれる。
【0081】
ステップS56において、ずれ量演算部203は、画像I21~I23から、カメラ102の運動を算出する。ここで、カメラ102から見れば、カメラ102に対してワークW2が相対的に移動することになるため、画像I21~I23間で、ワークW2に相当する画素W2Iが移動することになる。よって、このステップS56において、ずれ量演算部203は、カメラ102の運動として、画像I21~I23の画素W2Iの動きから、カメラ102に対するワークW2の相対的な移動量を算出する。
【0082】
ステップS56におけるカメラ102に対するワークW2の相対的な移動量の算出処理について具体的に説明する。ずれ量演算部203は、画像I21と画像I22とを用いて、時刻t+δから時刻t+δまでのカメラ102に対するワークW2の相対的な移動量V21を算出する。ずれ量演算部203は、画像I22と画像I23とを用いて、時刻t+δから時刻t+δまでのカメラ102に対するワークW2の相対的な移動量V22を算出する。これら移動量V21、V22は、ベクトル又は行列であり、例えば6次元のベクトルである。この6次元のベクトルには、3次元の並進移動と、3次元の回転移動が含まれる。
【0083】
以上のステップS55、S56において、ずれ量演算部203は、カメラ101、102の各々から取得した画像群I1、I2に基づき、カメラ101、102の各々に対する相対的なワークW2の移動量V11、V12、V21、V22を求める。
【0084】
以上説明した各カメラ101、102の運動の算出には、例えばオプティカルフローを用いることができる。オプティカルフローとは、連続撮像された画像間での物体の各部の動きをベクトルで表現したもので、その計算方法としてはLucas-Kanade法などがある。画像全体または一部のオプティカルフローを用いることで、各カメラ101、102の運動を算出することができる。
【0085】
ここで、算出された移動量V21、V22は、カメラ102の運動であるため、カメラ101の運動と比較するため、同一座標系の表現に変換する必要がある。例えば、ステレオカメラ校正によって、カメラ102の座標系からカメラ101の座標系へ変換する変換行列を求めておき、この変換行列を予めROM1602に記憶させておく。ずれ量演算部203は、この変換行列に基づいて、カメラ102に対する相対的なワークW2の移動量V21、V22を、カメラ101に対する相対的なワークW2の移動量V′11、V′12へ変換する。なお、小型の平行ステレオカメラのように、カメラ101とカメラ102の姿勢が同じで、位置もほぼ同じ場合、この変換処理は省略可能である。
【0086】
ステップS57において、ずれ量演算部203は、移動量V11、V12、V′11、V′12を用いて、カメラ101、102間の撮像タイミングのずれ量δを算出する。以下、ずれ量δを算出する計算方法の一例について説明する。
【0087】
図8(a)~図8(c)は、第1実施形態に係る検出処理を説明するための模式図である。図8(a)は、ずれ量δが0≦δ<Δtを満たす場合の移動量V11、V12と移動量V′11との関係を示す模式図である。図8(b)は、ずれ量δが-Δt<δ≦0を満たす場合の移動量V11、V12と移動量V′12との関係を示す模式図である。
【0088】
いずれの関係が成立するかは、下記の計算によって判断することができる。以下、-Δt<δ<Δtの場合について説明する。
【0089】
時刻t~tにかけてカメラ101が運動する際、t-t、t-tが十分に小さい場合には、その間のカメラ101の運動、即ちカメラ101に対する相対的なワークW2の移動量は、直線で近似することができる。
【0090】
よって、0≦δ<Δtが成り立つ場合、移動量V′11は、移動量V11、移動量V12、ずれ量δ、撮像周期Δtを用いて、次の式(1)が成り立つ。
【数1】
【0091】
また、-Δt<δ≦0が成り立つ場合、移動量V′12について、次の式(2)が成り立つ。
【数2】
【0092】
よって、ずれ量演算部203は、式(1)及び式(2)のうち一方の式を、δについて解くことで、解が得られれば、そのδの値を出力し、解が得られなければ、式(1)及び式(2)のうち他方の式を、δについて解くことで、δを算出する。ここで、式(1)及び式(2)に用いるΔtは、予め記憶部、例えばROM1602に記憶させておいた定数である。式(1)及び式(2)に用いるΔtは、上述した基準周期に相当する。例えばΔtは、3[ms]等の定数に設定される。
【0093】
以上、-Δt<δ<Δtの関係を満たしていれば、上記の式(1)又は式(2)をδについて解くことで、δを算出することができる。この際、カメラ101の運動を直線近似したことによる近似誤差が発生するが、算出したずれ量δに基づいて同期を行い、ずれ量δが小さくなるほど近似誤差は小さくなる。
【0094】
なお、δ=0であれば、いずれの式(1)、(2)も成り立つ。即ちδ=0であれば、移動量V11と移動量V′11は等しく、移動量V12と移動量V′12は等しい。
【0095】
ずれ量δの絶対値がΔtを超えるような場合は、ステップS54で、所定数として4つ以上の画像を取得しておけばよい。なお、画像を取得する段階で、ずれ量δの絶対値がΔtを超えるか否かはわからないため、所定数は、予測で設定しておくことになる。適切なタイミングの運動を選択することで、図8(a)または図8(b)と同様の関係を得られる。図8(c)は、ずれ量δがΔt≦δ<2Δtを満たす場合の例を示す模式図である。この場合、ステップS54では、ずれ量演算部203は、カメラ101から、4つの画像を取得する。そして、ずれ量演算部203は、時刻tから時刻t+Δtまでのカメラ101の移動量V13を求める。図8(a)に示すδを、図8(c)に示すδ-Δtと置くことで、カメラ101に対する相対的なワークW2の移動量V12、V13と移動量V′11との間に、図8(a)と同様の関係が成立する。よって、ずれ量演算部203は、式(1)において、δをδ-Δt、V11をV12、V12をV13と置くことで、δについて解くことができる。このように、想定されるずれ量δの範囲に応じて、ステップS54で用いる所定数の数字を予め設定しておくことで、図8(a)~図8(c)のいずれかと同様の関係が得られる。
【0096】
以上、ずれ量演算部203が各カメラ101、102から3つの画像を取得する場合と、4つの画像を取得する場合について説明したが、これに限定するものではなく、5つ以上の画像を取得するようにしてもよい。そして、ずれ量演算部203は、これら画像から得られる複数の運動の関係式からずれ量δを算出してもよい。
【0097】
また、作業空間R1において撮像装置1が運動する場合について説明したが、これに限定するものではない。作業空間R1において撮像対象であるワークW2が運動する場合であっても、作業空間R1において撮像装置1及びワークW2の両方が運動する場合であってもよい。例えば、撮像装置1が作業空間R1において移動しないように不図示のフレームなどに固定されていてもよい。この場合は、撮像対象であるワークW2が作業空間R1を移動することになる。例えばロボット装置1001などの駆動装置がワークW2を支持して、ワークW2を撮像装置1に対して移動させてもよい。この場合も、駆動装置は、ワークW2を撮像装置1に対して非直線的に移動させればよい。
【0098】
また、撮像対象は、ワークW2に限定するものではなく、画像から移動量を求めることができれば、いかなる物体であってもよい。いずれの場合であっても、複数のカメラ101、102に対して相対的に物体が移動すればよい。
【0099】
以上、ステップS57において、カメラ101、102の各々に対する相対的なワークW2の移動量を用いて、カメラ101、102の撮像タイミングのずれ量δを検出する。このように、カメラ101、102の撮像画像を用いることで、カメラ101、102の撮像タイミングのずれを正確に検出することができる。
【0100】
次に、同期処理について説明する。図9は、第1実施形態に係る情報処理方法のうち同期処理の手順を示すフローチャートである。
【0101】
処理部200は、図9に示す同期処理を実行可能である。即ち、同期処理は、図2に示す処理部200、具体的には同期制御部204が行う。
【0102】
ステップS20において、同期制御部204は、ずれ量演算部203に指示を送り、ずれ量演算部203にずれ量δを検出する検出処理を実行させる。
【0103】
ステップS21において、同期制御部204は、ずれ量δが所定値以下(所定値はТH)かどうかを判定する。
【0104】
ずれ量δが所定値TH以下であるならば(ステップS21のYES)、同期制御部204は、同期処理を終了する。その後、3次元計測部205が3次元計測処理を行う。
【0105】
本実施形態では、3次元計測部205は、複数のカメラ101、102によりワークW2を撮像してワークW2の3次元計測を行う。3次元計測部205は、その計測結果を制御装置1002に送信する。制御装置1002は、その計測結果に基づいてロボット装置1001を動作させてワークW1をワークW2に組み付け、ワークW1、W2からなる組立品である物品を製造する。
【0106】
また、ずれ量δが所定値THを超えるならば(ステップS21のNO)、同期制御部204は、次のステップS22の処理へ進む。
【0107】
ステップS22において、同期制御部204は、カメラ102のイメージセンサ302を電源OFF状態401にするようカメラ制御部201に指示を送る。これにより、カメラ制御部201は、カメラ102に指示を送り、カメラ102のイメージセンサ302の状態を電源OFF状態401に遷移させる。これにより、カメラ102からの動画の出力が停止される。
【0108】
ステップS23において、同期制御部204は、カメラ102のイメージセンサ302を動画出力状態404にする。具体的に説明すると、同期制御部204は、カメラのイメージセンサ302の状態を、電源OFF状態401から初期化状態402、撮像パラメータ調整状態403を経て動画出力状態404にするようカメラ制御部201に指示を送る。これにより、カメラ制御部201は、カメラ102に指示を送り、カメラ102のイメージセンサ302の状態を電源OFF状態401から初期化状態402、撮像パラメータ調整状態403を経て動画出力状態404に遷移させる。その後、ステップS20に進む。同期制御部204は、ステップS20~S23のループ処理を、ずれ量δが所定値TH以下となるまで繰り返す。以上のループ処理を複数回行うことにより、いずれずれ量δが所定値TH以下となる。この同期処理は、3次元計測部205が撮像装置1を用いて計測処理を行っていない時間に行うのが好ましい。これにより、3次元計測に要する時間が延びることはない。
【0109】
以上、処理部200は、ずれ量δが所定値THを超える場合、カメラ102における撮像タイミングをリセットして、再びステップS20の検出処理を実行するループ処理を、ずれ量δが所定値TH以下となるまで、繰り返し実行する。本実施形態では、上述したように、動画出力開始タイミングにより撮像タイミングが決まるため、カメラ102の動画出力開始タイミングをリセットする。
【0110】
なお、本実施形態では、撮像タイミングをリセットするカメラがカメラ102である場合について説明したが、これに限定するものではない。複数のカメラ101、102のうち、少なくとも1つのカメラの撮像タイミングをリセットすればよく、例えばカメラ101の撮像タイミングをリセットしてもよいし、カメラ101、102の両方の撮像タイミングをリセットしてもよい。
【0111】
また、カメラの撮像タイミングのリセットの方法は、イメージセンサ302への電源のオンオフに限定するものではなく、上述したように、カメラ102の仕様に応じたものにすればよい。
【0112】
以上、第1実施形態によれば、検出処理及び同期処理により、カメラ101、102の同期が可能である。
【0113】
[第2実施形態]
次に、第2実施形態について説明する。図10は、第2実施形態に係る情報処理方法のうち検出処理の手順を示すフローチャートである。第2実施形態におけるハードウェア構成は、第1実施形態と同様であり、構成の詳細な説明は省略し、以下、必要に応じて第1実施形態の説明で用いた図面を参照しながら説明する。
【0114】
図2(a)の処理部200は、複数のカメラ101、102の撮像タイミングのずれ量を検出する検出処理を実行可能である。即ち、ずれ量の検出処理は、処理部200、具体的には、ずれ量演算部203が行う。また、以下の説明におけるカメラ101、102の撮像対象は、撮像画像において特徴の抽出が可能なものであれば、いかなる物体でもよく、本実施形態では、3次元計測対象の図1(a)に示すワークW2ということにする。ワークW2は、ずれ量の検出処理のために撮像装置1で撮像する期間中は、作業空間R1において移動しないものとする。そして、ワークW2に対して撮像装置1を非直線C1に沿って移動させるものとする。
【0115】
本実施形態では、図1(a)に示すように、撮像装置1はロボットハンド1020に支持されている。このため、撮像装置1はロボットハンド1020と連動する。よって、撮像装置1の運動は、制御装置1002により計測可能である。本実施形態では、制御装置1002が計測部として機能する。
【0116】
制御装置1002は、撮像装置1が移動した際の移動量を、カメラ101、102の撮像周期Δtよりも短い周期で計測する機能を有するものとする。制御装置1002は、この計測結果を撮像周期Δtよりも短い周期で画像処理装置2に送信することができる。
【0117】
具体的に1つの例を挙げて説明すると、制御装置1002は、ロボットの順運動学計算により、所定座標系を基準とするロボットハンド1020の位置姿勢を算出可能である。所定座標系は、例えばロボット装置1001の基部に設定したロボット座標系である。ロボットハンド1020に対する撮像装置1のカメラ101の相対的な位置姿勢と、所定座標系を基準とするワークW2の位置姿勢とを、予め求めておく。これにより、制御装置1002は、撮像装置1のカメラ101に対する相対的なワークW2の位置姿勢を、その時刻と対応付けて求めることができる。
【0118】
以下、図10に示すフローチャートに沿って制御装置1002と画像処理装置2との処理動作について説明する。
【0119】
ステップS60において、ステップS50と同様、ずれ量演算部203は、カメラ101のイメージセンサ302を動画出力状態404に遷移させる。ステップS61において、ステップS51と同様、ずれ量演算部203は、カメラ102のイメージセンサ302を動画出力状態404に遷移させる。ステップS62において、ステップS52と同様、ずれ量演算部203は、カメラ101により撮像された画像を取得する。ステップS63において、ステップS53と同様、ずれ量演算部203は、カメラ102により撮像された画像を取得する。
【0120】
ステップS64において、ずれ量演算部203は、カメラ101、102の各々から所定数の画像(即ち静止画)を取得したかどうかを判断する。ずれ量演算部203は、画像が所定数に達していなければ(S64:NO)、ステップS62の処理に戻る。このように、ずれ量演算部203は、取得した画像が所定数に達するまで、ステップS62及びS63の処理を繰り返す。第2実施形態では、取得する画像の所定数は、少なくとも2つである。
【0121】
以下、取得する画像の所定数が2つとして、ステップS62~S64の処理について、図7を参照しながら説明する。第2実施形態では、カメラ101から得られる画像を、取得した順に画像I11、I12とする。複数の画像I11、I12で画像群I1が構成される。また、カメラ102から得られる画像を、取得した順に画像I21、I22とする。複数の画像I21、I22で画像群I2が構成されている。画像I11、I12は、カメラ101から出力された動画データから時系列順に撮像周期Δt[ms]で連続的に取得した画像である。画像I21、I22は、カメラ102から出力された動画データから時系列順に撮像周期Δt[ms]で連続的に取得した画像である。画像I11、I12はそれぞれ互いに異なる撮像時刻t、tに撮像される。同様に、画像I21、I22はそれぞれ互いに異なる撮像時刻t+δ、t+δに撮像される。
【0122】
以上、ステップS60~S64により、ずれ量演算部203は、カメラ101がカメラ101に対して相対的に移動するワークW2を撮像周期Δtで撮像することによって生成した画像群I1をカメラ101から取得する。同様に、以上のステップS60~S64により、ずれ量演算部203は、カメラ102がカメラ102に対して相対的に移動するワークW2を撮像周期Δtで撮像することによって生成した画像群I2をカメラ102から取得する。
【0123】
ステップS65において、ずれ量演算部203は、制御装置1002が計測した、ステップS62の開始直前からステップS64の終了後までのカメラ101の運動Mを取得する。カメラ101の運動Mは、上述したように、制御装置1002がカメラ101に対する相対的なワークW2の位置姿勢を、時刻と対応付けて計測したものである。
【0124】
本実施形態では、運動Mは、カメラ101の速度が定まることによって、その速度が生じた時刻が一意に定まる運動である。このような運動は、例えば円弧状の軌道でカメラ101を動かすことで実現できる。
【0125】
ステップS66において、ずれ量演算部203は、画像I11と画像I12とを用いて、時刻tから時刻tまでのカメラ101に対するワークW2の相対的な移動量V11を算出する。移動量V11は、ベクトル又は行列であり、例えば6次元のベクトルである。この6次元のベクトルには、3次元の並進移動と、3次元の回転移動が含まれる。
【0126】
ステップS67において、ずれ量演算部203は、画像I21と画像I22とを用いて、時刻t+δから時刻t+δまでのカメラ102に対するワークW2の相対的な移動量V21を算出する。移動量V21は、ベクトル又は行列であり、例えば6次元のベクトルである。この6次元のベクトルには、3次元の並進移動と、3次元の回転移動が含まれる。
【0127】
以上のステップS66、S67において、ずれ量演算部203は、カメラ101、102の各々から取得した画像群I1、I2に基づき、カメラ101、102の各々に対する相対的なワークW2の移動量V11、V21を求める。
【0128】
以上説明した各カメラ101、102の運動の算出には、例えばオプティカルフローを用いることができる。オプティカルフローとは、連続撮像された画像間での物体の各部の動きをベクトルで表現したもので、その計算方法としてはLucas-Kanade法などがある。画像全体または一部のオプティカルフローを用いることで、各カメラ101、102の運動を算出することができる。
【0129】
ここで、算出された移動量V21は、カメラ102の運動であるため、カメラ101の運動と比較するため、同一座標系の表現に変換する必要がある。例えば、ステレオカメラ校正によって、カメラ102の座標系からカメラ101の座標系へ変換する変換行列を求めておき、この変換行列を予めROM1602に記憶させておく。ずれ量演算部203は、この変換行列に基づいて、カメラ102に対する相対的なワークW2の移動量V21を、カメラ101に対する相対的なワークW2の移動量V′11へ変換する。なお、小型の平行ステレオカメラのように、カメラ101とカメラ102の姿勢が同じで、位置もほぼ同じ場合、この変換処理は省略可能である。
【0130】
ステップS68において、ずれ量演算部203は、移動量V11、V′11と、制御装置1002による計測結果を用いて、カメラ101、102間の撮像タイミングのずれ量δを算出する。
【0131】
図11は、第1実施形態に係る検出処理を説明するための模式図である。図11には、移動量V11、V′11と、運動Mとの関係を図示している。カメラ101の運動Mは、移動量V11、V′11よりも短い周期で計測される。このため、ずれ量演算部203は、移動量V11、V′11と、運動Mとを比較することにより、時刻t、t+δをカメラ101の運動Mの計測周期単位で求める。
【0132】
具体的に説明する。移動量V11は、ベクトルである。ずれ量演算部203は、移動量V11の起点と終点が運動M上に存在するところを探索する探索処理を実行する。図11には、その探索した結果が図示されている。このときの移動量V11の起点に位置する運動Mの位置には、時刻tが対応付けられている。よって、ずれ量演算部203は、運動Mに対し移動量V11の探索処理を行うことにより、画像I11が撮像された時刻tを求める。同様に、ずれ量演算部203は、運動Mに対し移動量V′11の探索処理を行うことにより、画像I11が撮像された時刻t+δを求める。そして、ずれ量演算部203は、時刻t+δと時刻との差分により、カメラ101、102の撮像タイミングのずれ量δを求める。
【0133】
このように、第2実施形態では、カメラ101、102の撮像画像と、カメラ101の運動Mの計測結果を用いることで、カメラ101、102の撮像タイミングのずれを、第1実施形態のように直線近似で求める場合よりも、正確に検出することができる。
【0134】
第2実施形態における同期処理は、第1実施形態における同期処理と同様であるため、説明を省略する。について説明する。第2実施形態によれば、検出処理及び同期処理により、カメラ101、102の同期が可能である。
【0135】
なお、第2実施形態では、撮像装置1の運動を制御装置1002が計測する場合について説明したが、これに限定するものではない。例えば、撮像装置1の運動を不図示の外部センサで計測するようにしてもよい。その際、不図示の外部センサと画像処理装置2とは、有線又は無線で互いに通信可能に接続されればよい。
【0136】
本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【0137】
また、上述の実施形態では、ロボットアーム1010が垂直多関節のロボットアームの場合について説明したが、これに限定するものではない。ロボットアームが、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームであってもよい。
【0138】
また、上述の実施形態では、撮像装置1がロボット装置1001のロボットハンド1020に設けられる構成について説明したが、これに限定するものではない。制御装置に設けられる記憶装置の情報に基づき、伸縮、屈伸、上下移動、左右移動もしくは旋回の動作またはこれらの複合動作を自動的に行うことができる駆動装置に適用可能である。
【0139】
また、上述の実施形態では、同期撮像を行う複数の単眼カメラは、3次元計測のためのステレオカメラを構成するものとして説明した。しかしながら、本発明のハードウェア構成や撮像制御が、何らかの目的で同期撮像を行う必要のある、複数の単眼カメラで構成された撮像システムにおいて実施できるのはいうまでもない。
【0140】
また、上述の実施形態では、撮像装置1が2つのカメラ101、102を有する場合について説明したが、これに限定するものではなく、撮像装置1が3つ以上のカメラを有していてもよい。
【0141】
また、上述の実施形態では、3次元計測対象、つまり制御対象が、ワークW1を組み付けるワークW2である場合について説明したが、これに限定するものではない。例えば、3次元計測対象がワークW1であってもよい。この場合、ワークW1が制御対象であり、ロボットハンド1020にワークW1を保持させる際にワークW1を3次元計測するようにしてもよい。
【0142】
また、上述の実施形態では、組付け作業時にワークを3次元計測するようにしたが、例えばワークに切削加工、研削加工、研磨加工などの作業やワークに塗料を塗布する作業など、各種の作業において制御対象であるワークを3次元計測するようにしてもよい。この場合、エンドエフェクタは、ロボットハンドであってもよいし、作業に適したツールであってもよい。
【0143】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0144】
101,102…カメラ、200…処理部、1000…ロボットシステム(製造システム)、2000…撮像システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11