AI・ロボティクス時代の“目”を学ぶ
~ゼロからわかる!産業カメラ入門~
⑦ ソフトウェアとドライバの基本
産業用カメラの性能を最大限に引き出すためには、ハードウェアだけでなくソフトウェアやドライバの理解が欠かせません。
この章では、SDKやAPIの役割、画像取得の流れ、USB3 Vision・GigE Visionといった通信規格、さらにGenICamによる標準化の考え方まで、マシンビジョンシステム構築の基礎知識をわかりやすく解説します。
産業用カメラは「ソフトウェア」で動く
産業用カメラの操作方法、分かりますか?
産業用カメラはPC、あるいはそれに準ずる装置などに接続して使用します。
「ソフトウェア」を使ってカメラを操作したり、映像を取得したりします。
>また、目的に応じて専用の「ソフトウェア」を作成します。
ソフトウェアとドライバの違い
カメラから画面に映像が届くまでの流れ
ドライバ(Driver)
役割:カメラとPCをつなぐ「通訳」
※ 直接ユーザーが触れることはほとんどない
例:
・TeliU3vDriver / TeliGevDriver
・USB3 ホスト/GigE NIC ドライバ 等
ソフトウェア(Software)
役割:画像を表示・解析する「ツール」
※ ユーザーが直接操作する
例:
・Viewerアプリ、画像処理ソフト、
検査・計測アプリ、録画ツール 等
・産業用カメラのアプリは、メーカー付属SDK(TeliCamSDK 等)または
サードパーティSDK(USB3 Vision/GigE Vision対応)を利用して作成するのが一般的です。
マシンビジョンカメラに必要なソフトウェア構成
- 全体像 -
・マシンビジョンカメラを動作させるソフトウェアは、ハードウェアの上に4つの階層で構成されます。
上位層は下位層を呼び出して動作します。
- 下位層の詳細 -
・ハードウェアに近い下位層 OS と デバイスドライバ は、「カメラをPCに認識させて動かす」ための基盤です。
OS(Operating System)
役割:全ソフトウェアの実行基盤
- ハードウェア資源(CPU・メモリ・I/O)の管理と、ドライバ/アプリ等の実行環境を提供
例:
・Windows 10/11、Linux(Ubuntu等)
事前に確認したいポイント:
・使用するOSに対応しているか
・PCのCPU環境(x86・x64・ARM等)へ対応しているか
・カメラを接続するUSBやLANの性能が十分か
デバイスドライバ
役割:カメラとOSをつなぐ「通訳」
- デバイス認識・初期化、データ転送、割込み処理を担当
- ユーザーが直接触ることはほぼない
例:
・カメラ用ドライバ(メーカー提供)
・USB3 ホストコントローラドライバ
・GigE NICドライバ
事前に確認したいポイント:
・使用するOSやカメラに対応しているか
・OS・カメラ・インターフェースの組み合わせに問題がないか
・利用環境に対応したドライバが用意されているか
・利用するカメラ(インターフェース)に合わせたハードウェアとデバイスドライバの組み合わせが必要となります。
例:
- USB3 Visionカメラ ⇒ USB3ポート & USBホストコントローラドライバ & TeliU3vDriver
- GigE Visionカメラ ⇒ LANポート & NICドライバ & TeliGevDriver
※ 当社カメラドライバ使用の場合
- 上位層の詳細 -
・ユーザーが直接触れる上位層 SDK と アプリケーション は、カメラ制御や画像取得・処理の中心となります。
SDK(開発用ライブラリ)
役割:カメラを操作するアプリを作るための開発ツール
- カメラ制御(露光・ゲイン・トリガ等)と画像取得 API を提供
- アプリ開発の土台となる存在
例:
・インターフェース規格対応SDK(USB3 Vision/GigE Vision など)
・カメラメーカーが提供するSDK
事前に確認したいポイント:
・利用したい開発言語に対応しているか(C/C++、C#、Python)
・GenICam対応
・サンプルコードの充実度
アプリケーション
役割:カメラを使うための操作画面
- 映像確認・パラメータ調整・画像保存などをすぐ試せる
- カメラ導入時の動作確認や評価に活用する
例:
・Viewer アプリ(カメラ映像の確認)
・SDK付属サンプル(C++/C#/Python)
・検査・計測アプリ、画像処理ソフト、録画ツール 等
事前に確認したいポイント:
・必要な機能(表示・保存・設定変更など)が利用できるか
・用途に合わせて機能追加や変更ができるか
ソフトウェアで何が制御・取得できるのか
- カメラの制御 -
・SDKのAPIを通じて、カメラの撮影条件や入出力信号をソフトウェアからコントロールできます。
■ SDKを通して制御できる項目の一例
Exposure Time / Shutter
・イメージセンサに光を取り込む時間のことです。画像の明るさを変えられるほか、被写体のブレを抑えることができます。高速ラインや動体検査では特に重要な設定項目です。
Gain / Sensitivity
・イメージセンサで受けた映像信号を電気的に増幅する機能です。暗い環境でも画像を明るくできますが、上げ過ぎるとノイズも増えるため、適切な設定が重要です。
Trigger I/O
・外部機器との信号連携によって撮影タイミングを制御する機能です。センサやPLCと連動して撮影を行うことで、製造ライン上の対象物を決められた位置で正確に撮影できます。
・その他の主な制御項目:フレームレート、ROI(部分読み出し)、ピクセルフォーマット、ホワイトバランス、ガンマ、LUT など
- 画像データの取得 -
・SDKを通して、カメラが撮影した画像データをPCのメモリに取り込むことができます。
■ カメラから画像をPCメモリへ取り込む流れ
・ポイント:PCメモリに取り込まれた段階では、まだ「データ」の状態。表示や保存は次ページで解説するアプリケーション側の処理になります。
インターフェースとソフトウェアの関係
- 規格は「土台」 -
・インターフェース規格は、カメラとソフトウェアが正しくやり取りするための「共通ルール」です。これが合わないとPCはカメラを認識できません。
・インターフェース規格は、カメラとソフトウェアの「共通言語」です。規格が合えばつながり、合わなければ動きません。
- USB3/GigE Vision × ドライバ -
・規格ごとに、必要なポートと専用ドライバの組み合わせが決まっています。
USB3 Vision
接続ポート:USB3(USB 5Gbps/USB 10Gbps)
必要なドライバ:
・USB3・・・ホストコントローラドライバ
・TeliU3vDriver 等のカメラ用ドライバ
特長:短距離・高速、PC直結が容易
GigE Vision
接続ポート:LAN(Ethernet)
必要なドライバ:
・GigE・・・NICドライバ
・TeliGevDriver 等のカメラ用ドライバ
特長:長距離・安定、複数台の配線が容易
- GenICam対応の意味 -
・GenICamは、メーカーやインターフェース規格が違っても「同じ手順でカメラを制御できる」業界共通ルールです。
GenICamとは?
・マシンビジョン業界の標準API仕様
・露光・ゲイン・トリガ等を共通の名前で参照
・USB3 Vision/GigE Vision の上位レイヤとして共通化
※ カメラ・SDK・アプリの「言葉」を揃える仕組み
階層イメージ&メリット
対応のメリット
・異なるメーカー・インターフェースのカメラも統一制御
・機種変更・将来拡張に強い
・開発・保守コスト削減