I民生電子機器の分野では、顔認識や 3D マッピングなどの各種機能でライダーが活用されています。さまざまな形態で実現したライダー光学系が存在していますが、固体光学エレメントを使用して、ターゲット シーン全体に検出可能なポイントのアレイを生成するうえで「フラッシュ ライダー」ソリューションが活躍しています。3 次元空間データを取得して小型パッケージで使用することで得られる利点によって、この固体小型ライダー光学系は、スマートフォンやタブレットなどの民生電子製品で身近な機能になっています。この連載記事では、シーケンシャル光学系の設計から機械ハウジングへの組み込みまで、このような光学系を OpticStudio でモデル化する方法を検討します。
Authored By Angel Morales
Downloads
はじめに
ライダー (光による検出と測距) 光学系は、多くの産業分野でさまざまな事例に使用されています。視野を規定するスキャン エレメントを備えた光学系をはじめとして、ライダー光学系にはさまざまな種類があります。ここで取り上げる例では、回折光学系を使用して、光源アレイの投影をターゲット シーン全体にわたって複製する方法を検討します。この投影された光源アレイが受光器のレンズ光学系で結像するようにして、入射光線からタイム オブ フライト情報を取得します。これにより、投影されたドットに基づいて奥行き情報を生成します。
第 2 部では、第 1 部の着手点で扱ったシーケンシャル モデルからノンシーケンシャル モデルへの変換を取り上げ、ノンシーケンシャル モデルを詳しく説明します。また、ZOS-API を適用して、フラッシュ ライダー光学系でのタイム オブ フライトの結果をいくつか生成します。
ノンシーケンシャル モデルへの最初の変換
2 つのモジュールが 1 つの光学系として機能する様子を確認するには、それぞれの光学系で [NSC グループに変換] (Convert to NSC) ツール ([ファイル] (File) タブ → [NSC グループに変換] (Convert to NSC) を選択) を使用して、照射サブ光学系と結像サブ光学系のノンシーケンシャル モデルを生成します。照射モジュール (コンフィグレーションが 1 つだけ残るようにマルチコンフィグレーション エディタをクリアして使用) と結像モジュールのどちらでも、[NSC グループに変換] (Convert to NSC) ツールで次の設定を使用します。
ノンシーケンシャル モードでの各サブ光学系の出力は次のようになります。
モジュールの結合
これらのモジュールを容易に結合できるように、この段階でいくらかの編集を適用できます。最終的なアセンブリでは、照射モジュールの光源と結像モジュールのセンサが同一の平面に存在することを前提とします。完成した光学系では、これらのモジュールが同一の電気基板に置かれることが想像できるからです。ノンシーケンシャル モードでの総合的な手法は次のようになります
照射モジュール
-
- 光源がグローバル Z 座標のゼロに位置するように、モジュール オブジェクトの配置を再定義します。
- モジュールの「像面」にある 3 つのディテクタのうち 2 つを除去し、残った 1 つのサイズを大きくしてその材料を MIRROR とします (最終的に、この面が散乱壁として機能するからです)。
- 3 つの光源のうち 2 つを除去します。残った 1 つを発光ダイオード アレイとして編集するからです。
結像モジュール
-
- モジュールから光源を除去します。
- 3 つのディテクタのうち 2 つを除去し、シーケンシャル モード ファイルの次元寸法に基づいて、残った 1 つのサイズを大きくします。
- 像面でのオブジェクト基準の配置を再定義します。
上記のように変更したノンシーケンシャル ファイルは、「FlashLidar_Emitter_DiffGrat_PostEdit.ZAR」および「FlashLidar_Receiver_PostEdit.ZAR」として、この記事の各所で使用します。
このような調整の後、コピー アンド ペースト操作で、照射モジュールのノンシーケンシャル コンポーネント エディタに結像モジュール オブジェクトを挿入できます。ペースト操作の後、挿入したオブジェクトの [基準オブジェクト] (Ref Object) パラメータの値を、新しいオブジェクト番号を指すように必ず割り当て直す必要があります。たとえば、結合したモデルでは、結像モジュールの各光学エレメントがオブジェクト 10 (結像モジュールの基準となる空オブジェクト) を指す必要があります。つづいて、次のように各モジュールの X 座標を編集することによって、基準の空オブジェクトを使用して、そのモジュールの最終的な位置が決まります。
アセンブリ全体の最終的な詳細情報
このモデルを最終的な状態にするには、まず、アレイと発光の特性に関する詳細情報が取り込まれるように光源の定義を更新する必要があります。光源 (楕円) オブジェクトを、次のパラメータを持つ光源 (ダイオード) オブジェクトに変換します。
-
- [基準オブジェクト] (Ref Object) : 1
- [X 発散角] (X-Divergence)、[Y 発散角] (Y-Divergence) : 11.5°
- [X スーパーガウス係数] (X-SuperGauss)、[Y スーパーガウス係数] (Y-SuperGauss) : 1.0
- [X' 方向の数] (Number X')、[Y' 方向の数] (Number Y') : 5
- [デルタ X] (Delta X)、[デルタ Y] (Delta Y) : 0.32 mm
この光源上全体にスポットのアレイを生成するには、回折グレーティング オブジェクトのオブジェクト パラメータを変更する必要があります。[回折] (Diffraction) タブの [分割] (Split) 設定を使用して、回折グレーティングごとに回折次数を定義します。理想的で同じ透過率が各回折次数で得られるように [下記テーブルで分割] (Split by table below) を使用します。簡素化するために、両方のモジュールですべてのエレメントの前側フェイスと後側フェイスに I.99999999 の理想コーティング定義を適用します。3D ビューアで光線分割を許可すれば、ここまでの変更により、投影されたドットのアレイ全体を表示できます。
壁エレメントが散乱面として機能できるようにするために、散乱壁ディテクタにランバーシアン散乱プロファイルを適用します。同様に、I.0 のコーティング (100% の反射) と 1 の散乱割合を設定することで、壁を理想的な反射面と散乱面にします。しかし、現在の定義では、散乱の角度が大きいことから、散乱光線は結像モジュールまでほとんど追跡されません。したがって、重要度サンプリングを使用して、指定した任意のオブジェクトの頂点方向に光線が強制的に散乱するようにします (重要度サンプリングの詳しい動作については、ナレッジベースの記事「重要度サンプリングを使用して散乱を効率的にモデル化する方法」を参照してください)。ここで使用する目標は、結像モジュールの物理アパチャーであるオブジェクト 11 で、その [サイズ] (Size) 値は 0.7 mm です。
実際には、面の法線から離れた方向に光線が散乱すると、その光線のパワーは減少します。重要度サンプリングでは、この点を考慮して、散乱したランバーシアン光線が目標オブジェクトに向かうようにすると、その光線のパワーが減少するようにしています。したがって、最小相対光線強度を小さくして、このような低エネルギーの光線を OpticStudio で追跡できるようにする必要があります。この例では、最小相対光線強度を 1e-8 に設定することで散乱光線を追跡できます。その結果、照射モジュールからの光線が結像モジュールで捕捉されるようになることがわかります。なお、この 2 つのモジュールの間に吸収性の矩形オブジェクトを置いて、照射モジュールの迷光が結像レンズ ディテクタに影響しないようにしています。
これで、壁に投影され、また結像レンズで観測されるドット パターンを確認できるようになりました。この段階で、このファイルを「FlashLidar_FullSystem.ZAR」として保存します。
タイム オブ フライトの検討
ライダー光学系では、光がディテクタに到達したときにそのタイム オブ フライトを測定することによって、シーンの奥行き情報を取得します。たとえば、多くの場合、センサは時間ゲート方式で動作して、観測対象のシーンで散乱した光線の入射ビームからこの情報を捕捉します。
ZRD ファイル全体を解析し、結像モジュールのセンサに到達する光線の光路長を解析するユーザー解析を、OpticStudio で ZOS-API を活用して構築します。これによって、最後のディテクタ (矩形) に到達する各光線のタイム オブ フライト データを取得して、シーンの奥行き情報を得ることができます。ナレッジベースの記事「ZOS-API を用いてタイム オブ フライトのユーザー解析を作る方法」では、この種類のユーザー解析を作成する方法を詳しく説明しています。ここでは、この解析をそのまま使用します。
このフラッシュ ライダー光学系では、関連する事例の形状をいくつか追加しています。たとえば、ジェスチャ認識で使用することを目的とした、机の小さいモックアップおよびきわめて簡素化した拳として機能する球があります。このファイルは、「FlashLidar_FullSystem_wSceneObj.ZAR」として添付されています。
このユーザー解析を実行する前に光線追跡を実行し、その光線追跡データを [光線追跡コントロール] (Ray Trace Control) ウィンドウで保存しておく必要があります。これで、保存した .ZRD ファイルをユーザー解析で読み込むことができます。この解析で次の設定を使用すると、その次に示す奥行きの結果が得られます。
これらの結果を使用して、シーンにあるさまざまなフィーチャを区別し、それらがどのくらいの奥行きに位置しているかを知ることができます。たとえば、ユーザー解析出力の左上に、簡潔な「手」を表現したフィーチャが位置し、シーンの右上へわずかに離れた場所に、モックの机の上に置かれたカップが位置しています。わかりやすくするために、光源 (矩形) を使用して光源の全領域を発光性にすることによって、シーン全体に照射が行き渡り、シーン全体の奥行き情報を容易に把握できるようにしています。
フラッシュ ライダー光学系向けの照射モジュールと結像モジュールのこの設計により、最後のディテクタ平面に投影されるドット アレイを解析できます。また、ZOS-API を活用して、ドット アレイからの光線が到達した形状の奥行き情報を取得するユーザー解析を作成できます。観測対象シーンにあるフィーチャを解析し、距離情報を取得できれば、演算ソフトウェアにこの情報を渡して、ユーザーに表示する画像を生成できます。また、ユーザーの動作を表すモーション データを使用して、コンピュータで生成したシーンに何らかの変化を適用することもできます。
まとめ
この記事では、フラッシュ ライダー光学系の照射モジュールと結像モジュールのシーケンシャル モデルをノンシーケンシャル モデルに変換する処理を取り上げました。また、これらのモデルの高精度化と、2 つのモデルを 1 つの OpticStudio ファイルに結合する方法を紹介しました。光源の詳細情報を定義し、離れた壁表面の散乱特性を定義したうえで、光学系全体の光線追跡を検証しました。最後に、フラッシュ ライダー光学系全体のタイム オブ フライト データを返すカスタム ユーザー解析を ZOS-API で使用する方法に触れました。
コメント
記事コメントは受け付けていません。