SensorSDK から USP Sensors に移行する
はじめに
SensorSDKとSystemGraph製品のディスコンに伴い、Unity Simulation Pro(USP)への移行が必要になります。
新しく移行ガイドが公開されたので、その内容を読みながらポイントをまとめます。
Migrate from SensorSDK to USP Sensors
コンセプトの類似点を理解する
USP SensorとSensorSDKはどちらも事前に用意されたセンサー、そして独自センサーを作成できるという点が共通しています。
USPでもSensorSDKと同様にnodesとportsを使って独自のセンサーを実装することができます。
一方でUSP SensorとSensorSDKは、実装方法とユーザーワークフローが大きく異なります。
そのため、SensorSDKからUSP Sensorへの移行では内容に応じた書き直しが必要になります。
機能比較
USP SensorsではSensorSDKで提供されていた機能すべては提供されません。(2023/7時点)
- Segmentation Camera、Azimuth Correction/Pixel Shiftは将来的な機能提供の予定が未定です。
- ToF Camera、Raytraced Lidar、Laser Configuration、Scan Pattern/FoV、Data Export/Conversion、各種Lidar(Ouster、Velodyne、YDLidar)、Materials with Light Spectrum Support、Motion Correction/Trajectory Componentsは2023秋以降の予定
移行の利点
USP Sensorsを利用することで以下の例に挙げる様な拡張された機能を利用することができるようになります。
- Universal Render Pipeline(URP)での実行
- Linuxプラットフォームへの互換
- IMU(慣性計測装置)
- ROSのような外部パッケージとの連携
- 乗り物制御(Vehicle Controller)
- URDF Importer
- 分散レンダリング
- Linux Headless Simulation
サポート環境
USP Raytraced Lidar(※SensorSDKにおいてカメラベースでなかったLiDAR機能のこと)はWindowsとLinuxで動作しますが、それ以外はWindows、macOS、Linuxで利用できます。
NodesとPortsを使用する
USP Sensorではグラフ形式の実装を提供しませんが、nodesとportsのコンセプトは同様です。
Nodes
nodeを作成するにはSensorクラスを継承して記述し、シーンのGameObjectにコンポーネントをアタッチします。必要に応じてportsを追加します。
Sensorクラスを拡張する代わりに以下のいずれかのクラスを拡張することも可能です。
- SynchronizedSensorNode :UpdateRateに基づいたスケジューラーをサブスクライブすることをセンサーに許可する
- PublisherNode :Sensorからトピックにデータをパブリッシュする
- SingleImageProcessingNode :単一の入力テクスチャに対してコンピュートシェーダーを実行し、単一の出力テクスチャを作成する機能を提供する
- ImageProcessingNode :画像を処理するためにロードやコンピュートシェーダーを初期化する基本機能を提供
Ports
入力と出力に利用するSensorPort< T>インスタンスのポートを作成する。
m_Dataでポートのデータにアクセスし、SetData()を使ってデータをセットする。
Image MessageにはImageMessagePortのインスタンスを利用することでRenderTextureの読み込みをサポートし、ImageMsgへの変換をする(ROSでの使用のために)
移行の例
SystemGraphで以下の2画像にあるセンサーを作成していたと想定。
この内容をUPS Sensorsに移行するためにコンポーネントを細かく分解し、ステップごとで解説をします。
- RGB Camera:
- USPではRGBカメラと同等なのはCameraSensor Prefabになります。利用するためにはCameraSensor Prefabをシーンに追加します。
- Dummy Node:
- USPでDummy Nodeを作るには、前述のNodesとPortsを使用するに書かれた内容を参考にする
- Dummy NodeのC#スクリプトを作成し、シーンのGameObjectにアタッチする
- Tone Mapping:
- USPではTone Mappingと同等なのはACES Post Processingです。
- シーンにTone Mappingを適用するには以下の通り行います。
- Volumeコンポーネントをシーン内のGameObjectに追加します
- インスペクターで"Add Override > Post-processing"を表示し、Tonemappingを選択する
- TonemappingでModeのACESを選択する
FAQs
SensorSDKが終了になる理由。
- SensorSDKとUSPに機能の重複があった。複数プラットフォームサポート、ROS連携、分散レンダリングの観点からUSPが選択された。
SensorSDKとSystemGraphが利用できる期限。
- UICライセンスが失効すると機能が利用できなくなります。パッケージのダウンロード、そしてプロジェクトのmanifestを解決するタイミングでライセンスチェックが実行されます。SensorSDKを使ってすでに実行形式のファイルがビルドされている場合には問題なく利用を継続できます。
- manifestの解決は、プロジェクトを開き追加パッケージの更新のタイミングで実行されます
SystemGraphと同機能は何があるか。
- SystemGraphと同等のビジュアルエディターの提供の予定はありません。しかし、NodesとPortsのコンセプトはUSPでも引き継がれます。
Discussion