トリガー機能とは?
トリガーモードとは?
産業用カメラには、トリガーモードという機能があります。トリガーモードはカメラの撮影タイミングをソフトウェアや外部機器から制御する機能です。例えば、照明のストロボと同期をさせて撮影したり、生産ラインで撮影対象物が流れてきたタイミングで撮影したり、PLC(Programable Logic Controller)から撮影タイミングをコントロールしたりすることができます。トリガー機能を使うことでカメラを自律的に動作させることができるので、産業用カメラでは非常に重要な機能になります。
“撮影タイミングの制御”についてより詳しく言うと、”露光時間の開始の制御”です。カメラがトリガーを受け付けてから画像が出力されるまでの順番は以下の通りです。
- トリガー受付
- ↓
- センサ露光開始
- ↓
- センサ露光終了
- ↓
- センサ電荷の読出し
- ↓
- FPGA処理
- ↓
- フレーム出力
トリガーを受け付けてから露光開始するまでは数us程度の遅延時間があります。これはイメージセンサによって様々です。ちなみに産業用カメラは、トリガーが入力されてから撮影(=露光開始)するまでにディレイ(遅延)時間を設定することができます。以下はトリガーモードのタイミングチャートです。
一定のデュレーション(10usec以上のパルス幅)でトリガー入力しカメラにトリガーを認識させます。その後一定の遅延時間の後に露光が開始され、設定露光時間が経過すると露光を終了します。その後読出し(Image readout)が行われます。
Image readoutは設定フレームレートの逆数(例えば、100fpsであれば10ms)の読出し時間がかかります。
フリーランモードとは?
トリガーモードに対して、フリーランモードがあります。カメラはトリガーモード、フリーランモード、どちらかの状態で動作します。
フリーランモードとは、カメラ内部の一定のクロックで露光→読み出し→フレーム出力するモードです。カメラの映像がライブ表示されている場合はフリーランモードで動作しています。また、一般的なWEBカメラはフリーランモードで動作しています。ソフトウェアからライブスタートすると、カメラから一定の周期(設定したフレームレート)で画像が出力されそれがモニターに表示されますが、通信インターフェイスを常にイメージデータストリームが占有している状態になるので、PCの負荷やカメラの消費電力が高くなります。したがって、一般的なWEBカメラは多少解像度を犠牲にして圧縮して画像を出力するようにしています。一方産業用カメラはより精密な画像処理を行うために非圧縮RAWデータがカメラから出力されます。したがって、産業用カメラは接続PCを含めて非圧縮大容量データを適切に処理できるようにPCスペック、データ帯域、接続構成などを考慮する必要があります。産業用カメラを購入する時は、PCの性能、インターフェイス、帯域、画像処理負荷など幅広いノウハウを保有し、選定を含めた深い技術的なサポートを受けられるところから購入するようにしましょう。
以下はフリーランモードのタイミングチャートです。
上は露光時間が短い場合、下は露光時間が長い場合です。結論から言うと、露光時間を伸ばしすぎるとフレームレートが遅くなってしまいます。タイミングチャートを用いた原理的な説明は少し複雑です。まず、Image readout(読出し)の時間はフレームレートの逆数です。N枚目のフレームの露光時間はフレームレートを上限に一定時間までのばすことができますが、それ以上のばすと今度は読出し開始位置(図赤線)が後ろにずれていきます。なぜ後ろにずれるかというと、N枚目の読出し開始位置(図赤線)はN+1の露光の開始より遅くなることはできないからです。その結果、N+1枚目の露光の開始はどんどん後ろにずれていく、言い換えると次のフレームの露光開始(=撮影)までの間隔が長くなっていくという事です。これがタイミングチャートの観点から露光開始を長くするとフレームレートが遅くなる原理の説明です。「露光が終わるまではフレームは出力されないので、露光時間を長くすればフレームの出力タイミングが遅くなる。その結果、フレームレートは遅くなる」という事です。
産業用UVCカメラはトリガーモードとフリーランモードを切り替えて使う事ができます。
トリガーモードとフリーランモードをまとめると以下になります。
動作 | 設定方法 | |
---|---|---|
トリガーモード | 任意のタイミングでカメラから静止画1枚出力 | PCから |
フリーランモード | 設定したフレームレートで連続でカメラから画像出力 | PCから |
2つのトリガーモード(ソフトウェアトリガー vs ハードウェアトリガー)
トリガーモードは大きく2つあります。通称、ソフトウェアトリガー、ハードウェアトリガーと呼ばれています。ハードウェアトリガーは、外部トリガーと呼ばれることが多いです。ソフトウェアトリガーとは、PCから通信インターフェイス(USB、GigE、他)を通してカメラにトリガーを命令する機能です。以下のようにプログラムでカメラのトリガーモードをONに設定し、自分が欲しいタイミングでトリガーをPushするコードを組めば、任意のタイミングで画像取得ができます。
https://www.argocorp.com/software/sdk/ICImagingControl/Sample_program/dotnet/software-trigger.html
一方のハードトリガー(外部トリガー)はカメラに対して定格電圧を掛けることによって撮影タイミングを制御します。この定格電圧は通信インターフェイス経由ではなくカメラの後端部分にあるこのような部分から入力します。
通信ケーブルと外部トリガー入力ケーブルをカメラに接続し、パルスジェネレータなどの外部機器と連動させて撮影する事ができます。
予めソフトウェアからカメラのトリガーモードをONにしておきます。あとは外部機器のタイミングで5VTTL信号がカメラに入力されるだけで画像が取得されます。ちなみに、なぜ外部トリガーと呼ばれるかというと、カメラとそれを接続したPC以外の”外部”の機器と電気的に同期をとる目的に用いられることが多い為です。
ソフトトリガーとハードトリガーのメリットデメリット
ソフトトリガーも外部トリガーもソフトウェアによっていったんトリガーモードをONにする必要がありますが、両者の違いはその後の撮影タイミングの制御をPCから通信インターフェイスを通して行うか、外部機器と電気的に連動させて行うかという違いがあります。それぞれ以下のようなメリットとデメリットがあります。
メリット | デメリット | |
---|---|---|
ソフトトリガー | ・制御が簡単 ・通信ケーブルだけでOK |
・遅延が大きい ・PC負荷の考慮が必要 |
ハードトリガー(外部トリガー) | ・撮影の遅延が(ほぼ)ない ・外部機器と電気的に連動可能 |
・結線が必要 ・電気的知識がないと手間 |
ソフトトリガーはカメラに通信ケーブルだけ接続していればよく、トリガーモードの設定からトリガータイミングまですべてプログラムから制御するのでプログラムが得意な人はメリットが大きいです。ただし、トリガーの発光(Push)はあくまでもプログラムコードのタイミングによりますのでCPU負荷やプログラムのロジック、OSのバックグラウンド処理によってカメラにトリガーが入るまでに数十ms~数百ms程度ブレます。このブレが許容できない用途では、ソフトトリガーは使えません。一方の外部トリガーでは電気的に撮影タイミングを制御するので遅延はほぼありません。デメリットとしては電気的な知識が必要だったり回路設計が必要だったりケーブルを結線しないといけないなど手間がかかるなどがあります。
ソフトウェアトリガーによる遅延が許容されるような用途の場合にはわざわざ外部トリガーを使う必要はありません。
一歩上のアプリケーションではトリガーの機能が大事
カメラは人工知能の分野では人の目の役割を果たします。このカメラを、外部のセンサ、ロボット、搬送機、GPS、AGV、PLC、ドローン、などと外部トリガーで電気的に連動・同期させることによってはじめて、人の手から独立した自動機に仕立て上げて動作する事ができます。自動機にして人を単純労働から解放する、自動機にしてこれまでできなかったことをやりたい、といった時にはトリガーモードが非常に重要な機能になります。産業用UVCカメラにはトリガー機能が搭載されており、これが産業用UVCカメラを使うべき一つの理由です。
産業用カメラでUVCカメラとして動作するもの
最新のPYTHON、Starvis、Pregiusセンサー搭載カメラ。
フォーカス位置をSDKからコントロール可能。USB2.0とUSB3.0のモデル有。