Ubuntu22.04结合fast_livo2进行3DGS三维重建

环境:

Ubuntu22.04  ROS2

        3DGS和Fast_livo2的构建以及复现具体看前两篇文章

ubuntu22.04复现3DGS,包含双系统、cuda、conda、colmap的安装

Ubuntu22.04及ROS2复现Fast_livo2,包含ROS2的安装、cmake的版本选择等等

一、对fast_livo2进行修改

        1、修改avia.yaml文件

        在 /fast_ws/src/fast_livo/config 里找到 avia.yaml 文件,找到下面内容把 false 改成 true ,后续在运行launch文件时会自动保存点云文件到 fast_livo/log 文件夹里

        进入 /fast_ws/src/fast_livo/Log文件夹里,若无PCD或者Colmap文件夹,需要提前创建,进入Colmap,检查是否有 images 和 sparse 文件夹,若无需要提前创建,否则运行launch文件时无法同步保存图片与点云信息

        2、修改launch文件       

        找到 mapping_avia.launch.py 这个文件,首先launch文件里找到#play ros2 bag部分,修改成如下样式:(把原来的"-l"去掉不让循环播放,播完一次包就自动暂停)

可选项:(不一定要改,不影响主体程序,但改之后运行launch文件会后更方便和直观)     

        (1)将 default_value="False" 改成 "True" ,这样在执行launch文件会自动打开rviz,无需在后面加上 use_rviz:=True 

        (2)同时,在 /fast_ws/src/fast_livo/rviz_cfg 文件夹中找到 fast_livo2.rviz 文件,找到 Image 的话题订阅,将 Value 改为 /left_camera/image ,使其在自动打开rviz时就能接收到图像数据,在rviz的左下方就能同步看到画面

        对fast_livo功能包重新编译,运行launch文件输出点云数据并保存图片,进入 /fast_ws/src/fast_livo/Log 文件夹内检查各文件,均有输出即为成功

source fast_ws/install/setup.bash
cd ~/fast_ws
colcon build --packages-select fast_livo --symlink-install
ros2 launch fast_livo mapping_avia.launch.py

        3、雷区!!所踩的坑

        由于一开始并未在 /fast_ws/src/fast_livo/Log/Clomap 中创建 images 文件夹,导致在运行launch文件时并不会同步保存图像,launch文件完成后 /Colmap 下只有 /sparse 一个文件夹,于是本人便在launch文件中添加节点用于保存图像,同时打开 sparse 文件里的 image.txt 文件,查看图片编号,删掉图像文件夹里面的多余图片,使图片能和 image.txt 文件里的编号一一对应。

        这样做貌似没啥问题,图片也能正常保存,/sparse 文件夹的点云数据也能正常获取,但其实问题很大,点云数据与照片的保存并非同步,导致后续训练高斯点云出来的画面极差!找了很久的原因,最后发现就是这个问题,这种新建节点保存图像的方式并不可取,对比同一编号的照片,左边是通过新建节点保存的,右边是通过创建images文件夹同步保存的,明显发现两者视角上存在差异,点云与图像是并不匹配的

二、利用3DGS进行三维重建  

        首先将 /fast_ws/src/fast_livo/Log/Clomap 下的 images 和 sparse 文件夹拷贝到 /gaussian-splatting/data/RS/ 下,接着可以开始训练进行重建

#激活虚拟环境
conda activate gs
cd ~/gaussian-splatting/
python train.py -s data/RS -m data/RS/output   #优化生成高斯点云
./SIBR_viewers/install/bin/SIBR_gaussianViewer_app -m ~/gaussian-splatting/data/RS/output/

        若是在运行 train.py 阶段提示显存不足,也可以通过降低图片分辨率的方式进行训练,不过最终呈现的效果也会打折扣

# --resolution 2 表示分辨率降为原来的1/2, --resolution 3 则表示降为原来的1/3,以此类推
python train.py -s data/Chomper -m data/RS/output --resolution 2

最终输出效果:

        最后还可以通过 render.py 输出渲染图片,并用ffmpeg工具拼接成视频,最终可以得到原视频经过3DGS后的重建效果

python render.py -s data/Chomper -m data/RS/output
cd data/RS/output/train/ours_30000/renders
ffmpeg -framerate 30 -i %05d.png -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -c:v libx264 -pix_fmt yuv420p output.mp4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值