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

LiDAR(Light Detection and Ranging)とは、発光した光が周囲の物体に反射して受信機に戻ってくるまでの時間を計測することで、環境の 3D デジタルマップを作成することができるセンサ技術です。このような 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# で新しいユーザー解析を作ることができます:

ユーザー解析
ウィンドウズ エクスプローラでソリューション フォルダ (デフォルトでは 「..\Documents\Zemax\ZOS-API Projects\CSharpUserAnalysisApplication1 」 です。) が開きます。同様に Visual Studio で新しいソリューションが開きます。ソリューションには、ユーザー解析の基盤として使用できるテンプレートであるボイラープレート コードが含まれています。Visual Studio では、ユーザー解析が実行可能ファイルとしてコンパイルされます。この実行可能ファイルは 「\Zemax\ZOS-API\User Analysis 」 フォルダにコピーされて、 OpticStudio で使用可能となります。
LIDARファイルを開く方法
The image below shows a system representing a Flash LIDAR. A LIDAR sits at the top of the van. The van is on the road and there are 2 pedestrians and a living green wall.
下の画像は、Flash LIDARを表すシステムです。バンの上部にLIDARが設置されています。バンは道路上にあり、2人の歩行者とグリーンカーテン前方があります。

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

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

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

光線データベースビューアを使って ZRD ファイルを開く方法
光線の光路長の長さは、光線データベース ファイルである ZRD ファイルで読み取ることができます。次に、光線追跡を実行し、ZRDファイルに光線を保存します。

Under Analyze...Ray Database viewer, the path length of the rays that hit Detector 17 can be displayed. The “Apply Filter” setting is set to H17 to filter the rays that hit Detector 17.
以下の様に解析タブ → 光線追跡解析グループ → 光線データベース ビューアでは、ディテクタ 17 にヒットした光線の光路長を表示させることができます。「フィルタを適用」 の項で 「H17」 と入力することによって、ディテクタ 17 にヒットした光線のみ選別するフィルタを設定することができます。

たとえば、光線 1 のセグメント 8 はディテクタ 17 にヒットしますが、その光線の光路長はすべてのセグメントの光路長の合計であり、 4 × 10^4 mm 、つまり 40 m です。光線は物体に到達し、ディテクタに戻りました。オブジェクトまでの距離は光路長の半分なので、 20 m です。
したがって、ディテクタに到達する各光線の光路長を読み取ることで、ディテクタまでのオブジェクトの距離を見つけることができます。この操作は、ZOS-API を使用して自動的に実行できます。
以上、ユーザー解析とは何か、ボイラープレートテンプレートの開き方、LIDARファイルの開き方、光線データベースビューアを使ったZRDファイルの開き方について説明しました。ZOS-APIを使ったZRDファイルの開き方、データを配列に格納方法、結果のプロット方法、設定の作成方法、保存、ビルドして実行可能形式にする方法、ユーザー解析の実行方法、時間依存解析などについては、こちらのナレッジベース記事をご覧ください。Zemax の機能をお試しになりたい方は、こちらから無料トライアルをダウンロードしてください。
著者
Sandrine Auriol
Principal Optical Engineer
Zemax, LLC
Katsumoto Ikeda
Regional Customer Success Manager
Zemax, LLC