Gaussian Splatting 与 ROS2 的结合应用
[中文正文内容]
shadygm/ROSplat
一个基于在线 ROS2 的、支持 Gaussian Splatting 的可视化工具。
许可协议
ROSplat
基于在线 ROS2 的 Gaussian Splatting 可视化工具
概述
ROSplat 是首个基于在线 ROS2 的可视化工具,它利用 Gaussian splatting 来渲染复杂的 3D 场景。 它旨在通过使用自定义 ROS2 消息和 GPU 加速的排序和渲染技术来有效地可视化数百万个高斯分布。 ROSplat 还支持从 PLY 文件加载数据,并与 ROS2 工具(如 bag 记录)集成。
特点
- 实时可视化: 实时渲染数百万个高斯“splats”。
- ROS2 集成: 构建于 ROS2 之上,用于高斯分布、图像和 IMU 数据的在线数据交换。
- 自定义高斯消息: 使用自定义消息类型(SingleGaussian 和 GaussianArray)来封装位置、旋转、比例、不透明度和球谐函数等属性。
- GPU 加速的排序和渲染: 将排序和渲染任务卸载到 GPU。
安装设置
本项目在 Ubuntu 24.04 LTS 上使用 ROS2 Jazzy 开发和测试。 请注意:如果没有 NVIDIA 显卡,性能会显著下降。
依赖项
- 必需: ROS2(在 ROS2 Jazzy 上测试)
- 可选(对于基于 GPU 的排序):
cupy
(确保与您的 CUDA 版本兼容)torch
(如果使用 PyTorch 进行 GPU 排序)
要单独安装可选的基于 GPU 的库:
pip install cupy-cuda12x # 安装 Cupy(将 12x 替换为您的 CUDA 版本)
pip install torch # 安装 PyTorch
程序将自动按以下顺序优先排序方法:1) Torch → 2) Cupy → 3) CPU
要一次安装所有依赖项:
pip install -r requirements.txt # 对于 GPU 加速
pip install -r requirements-no-gpu.txt # 没有 GPU 加速
基于 Docker 的设置
或者,您可以使用 Docker 设置项目。 设置脚本位于 docker
目录下。
在运行 Docker 之前,请确保已安装:
sudo apt-get install -y nvidia-container-toolkit
这使得主机和容器之间可以进行 GPU 通信。 如果您遇到任何其他问题,请按照以下链接中的说明进行操作。
然后,构建并运行 Docker 容器:
cd docker
./run_docker.sh -h # 显示帮助和使用说明
./run_docker.sh -bu # 构建 Docker 镜像并使用 docker-compose 启动容器
重要说明: 确保主机的 CUDA 版本与 Dockerfile 中指定的版本匹配。 如果您使用的是 12.6 以外的 CUDA 版本,请相应地更新 Dockerfile。
构建 Gaussian 消息
ROSplat 定义了两个自定义 ROS2 消息来处理 Gaussian 数据,这些消息位于 gaussian_interface/msg
文件夹中。
注意: Gaussian 消息基于 graphdeco-inria 的原始 Gaussian Splatting 实现。
消息定义
1. SingleGaussian.msg
geometry_msgs/msg/Point xyz
geometry_msgs/msg/Quaternion rotation
float32 opacity
geometry_msgs/msg/Vector3 scale
float32[] spherical_harmonics
2. GaussianArray.msg
gaussian_interface/SingleGaussian[] gaussians
构建消息
a) 使用 colcon 构建您的工作区:
colcon build --packages-select gaussian_interface
b) 启动您的工作区:
. install/setup.bash
重要说明: 根据您使用的 shell,您可能需要调整这些命令。
用法
构建 Gaussian 消息后,您可以从项目的根目录启动可视化工具:
cd src
python3 main.py
贡献
欢迎贡献和反馈!
致谢
我很高兴能够从事这样一个具有挑战性的主题,并感谢我在整个项目中收到的宝贵建议和支持。
特别感谢 Qihao Yuan 和 Kailai Li 的指导和鼓励,以及帮助塑造这项工作的建设性反馈。
该项目还受到了 limacv 的 GaussianSplattingViewer 存储库实现的影响。
联系方式
如有问题或需要更多信息,请发送电子邮件至:shady.gmira[at]gmail.com