Skip to content
This repository was archived by the owner on Jul 6, 2023. It is now read-only.

Add RGB-D Camera#19

Merged
RyodoTanaka merged 35 commits intoField-Robotics-Japan:mainfrom
arav-jp:dev/add_depthCam
Jun 30, 2023
Merged

Add RGB-D Camera#19
RyodoTanaka merged 35 commits intoField-Robotics-Japan:mainfrom
arav-jp:dev/add_depthCam

Conversation

@Autumn60
Copy link
Contributor

@Autumn60 Autumn60 commented Sep 7, 2022

デプスカメラのスクリプト追加

FieldRoboticsJapan/UnitySensorsROS/PR12と対応。

追加されたアセット類

  • Camera.cs:カメラから取得したColorBuffer及びDepthBufferをDepth.csに送信し、計算結果の点群データを受信
  • Depth.cs(ComputeShader):Depth計算用のコンピュートシェーダー。PointCloud2MsgへのSerializerの機能を兼ねている。if文を内部で使用しているため、高速化の余地あり。

Copy link
Member

@RyodoTanaka RyodoTanaka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

動作確認しましたが,下記設定でも添付のようにデータが歪んでしまいました.
設定等を教えてください.
よろしくおねがいします.
Screenshot from 2022-10-16 16-43-49

Screenshot from 2022-10-16 16-33-44

@RyodoTanaka
Copy link
Member

@Autumn60
なお,最終的な作業ブランチは下記で検証しています.
https://github.com/arav-jp/UnitySensorsROSAssets/tree/feature/add-rgbd

@Autumn60
Copy link
Contributor Author

image

分かりにくい機能を削除し、動作確認しました。
(と言っても、変更を行う前の時点で動作確認が行えたので、原因がいまいち分かっていないです。)

・Unityのカメラコンポーネントの設定はTarget Displayを除いてデフォルト値です(FOVの設定項目をCameraスクリプト側に追加)
・Cameraスクリプトの"Set FOV"ボタンは、Sceneビュー内で画角を確認する時を除いて押す必要は無いです(実行時に同様の処理が走ります)

@RyodoTanaka
Copy link
Member

@Autumn60
設定値を見直しましたが,値が送信されません.
また,今回のPRスクリプトを追加すると,他のトピックも全て停止してしまします.
https://github.com/arav-jp/UnitySensorsROSAssets/tree/fix/rgbd-bug
こちらの Sceneファイルに追加の Azure Kinect モジュールで実行中です.

上記Sceneをご確認いただき,そちらの内容にて修正が必要な場合,UnitySensorsROSAssets にもPRをください.
よろしくおねがいします.

@Autumn60
Copy link
Contributor Author

https://docs.unity3d.com/ja/2018.4/Manual/class-ComputeShader.html

ComputeShaderのサポート範囲が原因である可能性があります。

Debug.Log(SystemInfo.supportsComputeShaders);
をCamera.csのUpdate関数内に入れて、ComputeShaderが使用できるかどうか確認していただきたいです。

private void Update()
{
    Debug.Log(SystemInfo.supportsComputeShaders);
}

@RyodoTanaka
Copy link
Member

RyodoTanaka commented Jan 24, 2023

@Autumn60
True でした...!
つまりサポートされている...

@Autumn60
Copy link
Contributor Author

↑コミット内容

・Gizmosでの点群表示の際にカメラの回転が考慮されていない問題を修正
・1画素分の座標ズレを修正
・Resolution計算修正
・ComputeShader内のuintで良い計算をintからuintに修正

@Autumn60
Copy link
Contributor Author

Autumn60 commented Feb 2, 2023

↑コミット内容

・Gizmos表示の座標変換を再修正

@RyodoTanaka
Copy link
Member

本件,Windowsなら動作するところまで確認済.
Linux で動作するまではマージしない予定です.;

@Autumn60
Copy link
Contributor Author

恐らくDepthBufferの仕様が原因であるという結論に至り、以下の修正を行いました。

  • OpenGLの仕様に合わせてComputeShaderを書き直し、Linux環境のみ動作を確認しました。
  • クラス名CameraがUnityEngine.Cameraと被っていたためDCameraに修正しました

また、PointCloud2について正常な動作が確認されるまで、ImageをPubする機能はオミットします。

@Autumn60 Autumn60 requested a review from RyodoTanaka March 22, 2023 09:51
@Autumn60
Copy link
Contributor Author

上記コミットで、Windows環境(DirectX環境)でも動作を確認しました。
また、Gizmosによる負荷を考慮して、Sceneビューに表示する点群の最大数を制限できる機能を追加しました。

@Autumn60
Copy link
Contributor Author

画素座標と経過時間をシード値としたランダムノイズを追加

@RyodoTanaka RyodoTanaka merged commit 2873a9f into Field-Robotics-Japan:main Jun 30, 2023
@RyodoTanaka RyodoTanaka deleted the dev/add_depthCam branch June 30, 2023 06:32
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants