2022年10月11日
ZOS-API を用いてタイムオブフライトのユーザー解析を作る方法

LiDAR(Light Detection and Ranging)とは、発光した光が周囲の物体から反射して受信機に戻るまでの時間を測定することで、周囲の 3 次元デジタル地図を作成することができるセンサ技術である。自動車業界では、自律走行車の実現に向けた重要な技術として、3D 地図の作成が不可欠になっています。自動車産業以外でも、LiDAR はモバイル機器に搭載され、拡張現実感、距離測定、写真やビデオの背景をぼかすなどの機能として利用されています。
本稿では LIDAR システムによるタイム オブ フライト (TOF) 測定のユーザー解析を ZOS-API によって作ります。この解析では、 ZRD ファイルを読み込み、データを抽出し、ディテクタにヒットした光線のタイムオブフライト (光線飛行時間) をプロットします。
ユーザー解析とは
ZOS-API (Application Programming Interface) により OpticStudio との通信やカスタマイズが可能になります。OpticStudio とアプリケーション プログラムとの通信には4つのモードがありますが、以下の2つのカテゴリーに分けられます。
-
フル コントロール (スタンドアロン又はユーザー拡張機能モードがこれにあたります。) このカテゴリーではユーザーは、レンズ設計とユーザー インターフェイスに対する一般的なフル コントロールの権限を持っています。
-
制限アクセス (ユーザー オペランド又はユーザー解析モードがこれにあたります。) このカテゴリーではユーザーは、既存のレンズ ファイルのコピーを使用して作業することしかできない様に機能がロックされています。
ユーザー解析モードはカスタム解析でのデータを取り込むために使用されます。表示されるデータは、ほとんどの分析に OpticStudio で提供される最新のグラフィックを使用しています。このモードでは、現在のレンズ システムまたはユーザー インターフェイスを変更することはできません (つまり、このモードではシステムのコピーへの変更のみが許可されます) 。ユーザー解析は、 C++ (COM) または C# (.NET) を使用して作成できます。この記事のユーザー解析は C# で書かれています。
ユーザー解析機能についてのより詳細な情報については、 OpticStudio のヘルプ ファイル中の プログラミング タブ → ZOS-API について → ユーザー解析 の項を確認してください。
新しいボイラープレート テンプレートを開く方法
それでは、 C# で新しいユーザー解析を作ってみましょう。
下記の通り、プログラミング タブ → ZOS-API .NET アプリケーション ビルダー グループ → C# アイコン → ユーザー解析 を選択してクリックします。

ユーザー解析
ウィンドウズ エクスプローラでソリューション フォルダ (デフォルトでは 「..\Documents\Zemax\ZOS-API Projects\CSharpUserAnalysisApplication1 」 です。) が開きます。同様に Visual Studio で新しいソリューションが開きます。ソリューションには、ユーザー解析の基盤として使用できるテンプレートであるボイラープレート コードが含まれています。Visual Studio では、ユーザー解析が実行可能ファイルとしてコンパイルされます。この実行可能ファイルは 「\Zemax\ZOS-API\User Analysis 」 フォルダにコピーされて、 OpticStudio で使用可能となります。
LIDAR ファイルを開く方法
zar」 というファイルを、本稿の添付ファイルのリンクからダウンロードしてください。このファイルには Flash LIDAR を表すシステムが含まれています。LIDAR はバンの上部にあります。バンは道路にあり、2人の歩行者とグリーン カーテンが前方にあります。

LIDAR は、この風景にに向けてレーザー パルスを発射します。

光は周囲のオブジェクトによって散乱されます。その散乱された光の一部は、 LIDAR のディテクタに戻ってきます。
例えば以下の様に、赤い歩行者によって散乱した光の一部は LIDAR のディテクタに到達します。

LIDAR は、信号が戻ってくるまでの時間を記録します。それがタイムオブフライト (飛行時間)です。タイムオブフライト は距離に変換されます。ピクセルは入射光の方向を示します。
両方の値から、散乱光はバンから 10 m のところに立つ赤い歩行者から来ることを示しています。 OpticStudio は実際に時間を測定するのではなく光線の経路長を測定するため、オブジェクトとディテクタの間の距離を測定しています。
ディテクタ ビューアでは、ディテクタの放射測定の結果を表示できますが、 LIDAR 光源から LIDAR のディテクタに戻る光線の経路長は表示できません。そんなときに ZOS-API が役立ちます!ユーザー解析を構築して、オブジェクトまでの距離データを表示し、タイムオブフライト の情報を反映させることができます。

光線データベース ビューアを使って ZRD ファイルを開く方法
光線の光路長の長さは、光線データベース ファイルである ZRD ファイルで読み取ることができます。
光線追跡を実行し、 ZRD ファイルに光線を保存してみましょう。
以下の様に解析タブ → 光線追跡解析グループ → 光線データベース ビューアでは、ディテクタ 17 にヒットした光線の光路長を表示させることができます。「フィルタを適用」 の項で 「H17」 と入力することによって、ディテクタ 17 にヒットした光線のみ選別するフィルタを設定することができます。

たとえば、光線 1 のセグメント 8 はディテクタ 17 にヒットしますが、その光線の光路長はすべてのセグメントの光路長の合計であり、 4 × 10^4 mm 、つまり 40 m です。光線は物体に到達し、ディテクタに戻りました。オブジェクトまでの距離は光路長の半分なので、 20 m です。

したがって、ディテクタに到達する各光線の光路長を読み取ることで、ディテクタまでのオブジェクトの距離を見つけることができます。この操作は、ZOS-API を使用して自動的に実行できます。
ここまで、ユーザー解析とは何か、ボイラープレートテンプレートの開き方、LIDAR ファイルの開き方、Ray Database Viewer光線データベースビューア を使用し ZRD ファイルを開く方法について説明しました。ZOS-API を使用した ZRD ファイルの読み込み、データ配列の充填、結果のプロット、設定の作成、実行ファイルの保存、ビルド、移動、ユーザー分析の実行、時間依存分析の可能性については、こちらのナレッジベース記事をお読みください。Zemax の機能をお試しいただくには、こちらから無料体験版をダウンロードしてください。
著者:
Michael Cheng
Lead Application Engineer
Ansys