Closed Autumn60 closed 1 year ago
旧UnitySensorsと旧UnitySensorsROSの内容を旧UnitySensorsAssetsに移植するためのパッケージ構成を作成した。 また、RobotSensors-Unity3Dで実装を行った内容を一部移植し、今後のセンサ実装の参考となるようにした。
関連するor含むPR・Issue
開発の簡易化 フォークを行った際のサブモジュールのリンク先の設定が煩雑だったため、リポジトリを統合することを提案。
依存関係の明確化 旧UnitySensorsは、UnitySensorsにSerializerが実装されていたことから、ROS-TCP-Connectorに含まれるRosMessageTypeに依存していた。 Assembly Definitionを導入したことで、 https://github.com/Field-Robotics-Japan/UnitySensorsArchive/issues/20 を修正
センサスクリプトの構成を統一化 https://gist.github.com/Autumn60/46b34882325e17a7d5c10a64d8da7ea0 の構成を提案する。
パッケージの分離
以下のセンサのスクリプトを追加 DepthCamera, RGBCamera, GPS, GroundTruth, IMU, Livox LiDAR, Velodyne LiDAR 各センサについての細かな変更内容は以下の通り
DepthCameraの仕様を変更 シェーダーを用いてCameraのRenderTextureが持つRGB値とDepth値のチャンネルを入れ替え、そのテクスチャを非同期で取得することによって実装。 従来よりもGPUへの依存少
GroundTruthを追加 https://github.com/arav-jp/UnitySensors/pull/15 https://github.com/arav-jp/UnitySensorsROS/pull/6 での実装を新仕様に合わせ書き直したものを追加
RGBCameraの仕様を変更 CameraのRenderTextureを非同期で取得することによって実装。 従来のRenerTexture->Textureのコピーに比べ高速
GPSのシリアライザの仕様を変更 シリアライザにScriptableObjectを用いることで、NMEAFormatをオブジェクトとして管理できるように変更。 従来に比べ余計なインスペクタの設定項目が減
Livox LiDARの仕様を変更 DepthCameraに実装した仕様を応用し実装。従来のRaycastでの点群取得とは異なり、当たり判定ではなく見た目と一致する点群が取得される。 また、各種センサのスキャンパターンをScriptableObjectで予めロードしておくことによりCSVのロード時間が不要となったため、従来に比べゲーム開始の動作が軽量化。またこれによりAddressablesへの依存が無くなり、プロジェクト設定への依存問題が解決。
Velodyne LiDARの仕様を変更 Livox LiDARと同様にScanPatternをパラメータとしてアタッチすることでモデルを変更。 RaycastCommandsの更新も並列化することで従来に比べ高速化 現時点ではPointCloud2のPubのみ実装
追記:DepthBufferを用いるVelodyneSensorDepthBufferを追加。動作不安定。
->修正完了
点群の表示はGizmosから https://qiita.com/moru-san/items/8bef5d4947e0e6a4a123 の方式に切り替える予定
Livoxのレーザー原点と点群原点の違いは未修正
UnitySensorsArchive(旧UnitySensors)とUnitySensorsROSArchive(旧UnitySensorsROS)のリポジトリ統合
旧UnitySensorsと旧UnitySensorsROSの内容を旧UnitySensorsAssetsに移植するためのパッケージ構成を作成した。 また、RobotSensors-Unity3Dで実装を行った内容を一部移植し、今後のセンサ実装の参考となるようにした。
関連するor含むPR・Issue
目的:
開発の簡易化 フォークを行った際のサブモジュールのリンク先の設定が煩雑だったため、リポジトリを統合することを提案。
依存関係の明確化 旧UnitySensorsは、UnitySensorsにSerializerが実装されていたことから、ROS-TCP-Connectorに含まれるRosMessageTypeに依存していた。 Assembly Definitionを導入したことで、 https://github.com/Field-Robotics-Japan/UnitySensorsArchive/issues/20 を修正
センサスクリプトの構成を統一化 https://gist.github.com/Autumn60/46b34882325e17a7d5c10a64d8da7ea0 の構成を提案する。
変更内容
パッケージの分離
以下のセンサのスクリプトを追加 DepthCamera, RGBCamera, GPS, GroundTruth, IMU, Livox LiDAR, Velodyne LiDAR 各センサについての細かな変更内容は以下の通り
DepthCameraの仕様を変更 シェーダーを用いてCameraのRenderTextureが持つRGB値とDepth値のチャンネルを入れ替え、そのテクスチャを非同期で取得することによって実装。 従来よりもGPUへの依存少
GroundTruthを追加 https://github.com/arav-jp/UnitySensors/pull/15 https://github.com/arav-jp/UnitySensorsROS/pull/6 での実装を新仕様に合わせ書き直したものを追加
RGBCameraの仕様を変更 CameraのRenderTextureを非同期で取得することによって実装。 従来のRenerTexture->Textureのコピーに比べ高速
GPSのシリアライザの仕様を変更 シリアライザにScriptableObjectを用いることで、NMEAFormatをオブジェクトとして管理できるように変更。 従来に比べ余計なインスペクタの設定項目が減
Livox LiDARの仕様を変更 DepthCameraに実装した仕様を応用し実装。従来のRaycastでの点群取得とは異なり、当たり判定ではなく見た目と一致する点群が取得される。 また、各種センサのスキャンパターンをScriptableObjectで予めロードしておくことによりCSVのロード時間が不要となったため、従来に比べゲーム開始の動作が軽量化。またこれによりAddressablesへの依存が無くなり、プロジェクト設定への依存問題が解決。
27 も同時に修正
Velodyne LiDARの仕様を変更 Livox LiDARと同様にScanPatternをパラメータとしてアタッチすることでモデルを変更。 RaycastCommandsの更新も並列化することで従来に比べ高速化 現時点ではPointCloud2のPubのみ実装
追記:DepthBufferを用いるVelodyneSensorDepthBufferを追加。動作不安定。
未実装内容・既知の問題点
->修正完了