👑主页:吾名招财
👓简介:工科学硕,研究方向机器视觉,爱好较广泛...
💫签名:面朝大海,春暖花开!
Gaussian-LIC2实时构建3DGS的slam方法(可使用fastlivo2的数据集)
- 引言
- 正文
-
- 1,gaussian_lic2
- 2,本地配置问题
- 3,ubuntu系统环境安装(直接离线下载安装配置)
-
- [(1)安装CUDA 11.7(使用deb包安装)(成功)](#(1)安装CUDA 11.7(使用deb包安装)(成功))
- [(2)cuDNN v8.9.7 安装](#(2)cuDNN v8.9.7 安装)
- (3)在前面的基础上就可以安装编译安装opencv了
- (4)安装PCL1.13.0
- (5)修改cmake文件
- 4,训练fastlivo2数据集为3DGS
引言
之前一直想着利用fastlivo2的slam点云结果进行高斯训练得到高斯模型,但是没有成功,最终发现了一个可以直接生成3DGS的slam方法Gaussian-LIC2,需要本地配置好fastlivo2的环境,并经过实际测验,此方法可行
正文
1,gaussian_lic2
https://xingxingzuo.github.io/gaussian_lic2/
Gaussian-LIC2: LiDAR-Inertial-Camera Gaussian Splatting SLAM
https://github.com/APRIL-ZJU/Gaussian-LIC
GitHub - APRIL-ZJU/Gaussian-LIC: ICRA 2025 Gaussian-LIC: Real-Time Photo-Realistic SLAM with Gaussian Splatting and LiDAR-Inertial-Camera Fusion · GitHub


环境配置



https://xingxingzuo.github.io/gaussian_lic/
Gaussian-LIC: Real-Time Photo-Realistic SLAM with Gaussian Splatting and LiDAR-Inertial-Camera Fusion
2,本地配置问题
(1)wifi模块外接
ubuntu20.04的官方版本的内核5.15系列是没有wifi模块的,无论怎么安装都失败了,而6.9.0的内核虽然有wifi模块,但是没有nvidia驱动,nvidia驱动安装也是一直失败,所以只能回退版本到5.15系列(官方支持的最高版本),然后就需要在网上直接买个usb免驱动无线网卡wifi(tenda免驱动即可),ubuntu系统直接在其说明书的更多资料那里下载对应的ubuntu驱动在ubuntu20.04的内核5.15系列上面安装即可联网了
(2)bios设置独立显卡直连
显卡的问题一直黑屏,直接bios设置为独显直连后,内核5.15-140启动就不会黑屏了,之前本地编译显卡驱动再选择nvidia后,开启进入黑屏,是因为bios默认双显卡,其读取混乱,到intel的集显了
(3)安装显卡驱动
确保 140 的 headers 有(你前面有过,但再确认):
javascript
sudo apt install linux-headers-5.15.0-140-generic
重新构建并安装 nvidia 模块(很关键):
javascript
sudo dpkg-reconfigure nvidia-dkms-535
确认 dkms 状态(只看 5.15.0-140 这一行):
javascript
dkms status
应为:
javascript
nvidia, 535.230.02, 5.15.0-140-generic, x86_64: installed
必须重启(模块构建完不重启,往往 still not loaded):
javascript
sudo reboot
重启后第一件事:
javascript
nvidia-smi
能出表 → 驱动真活了
再:xrandr看分辨率
(4)bios设置
进入 BIOS:关机状态下,按一下电源键开机,然后立即连续快速按 F2(少数机型可能是 Delete或 F12),直到进入 BIOS 界面。
找到显卡模式选项:使用方向键切换菜单,通常在 Advanced(高级)或 Configuration(配置)选项卡下,寻找以下名称的选项(不同 BIOS 版本略有差异):
javascript
Switchable Graphics
Graphics Mode/ GPU Mode
Discrete Graphics Mode/ 显卡配置
修改为独显直连:将该选项的值从默认的 Hybrid/ MsHybrid(混合模式)或 iGPU Only修改为:
javascript
dGPU Only(仅独显)
或 Discrete Graphics(独立显卡)
或 Direct/ 独显直连
保存并退出:按 F4或 F10键(下方通常有提示"Save and Exit"),在弹出的确认框中选择 Yes或 OK,电脑会自动重启,设置即可生效。
3,ubuntu系统环境安装(直接离线下载安装配置)
(1)安装CUDA 11.7(使用deb包安装)(成功)
下载deb包(根据Ubuntu版本选择)
javascript
# Ubuntu 20.04 (Focal)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-ubuntu2004-11-7-local_11.7.0-515.43.04-1_amd64.deb
安装
javascript
sudo dpkg -i cuda-repo-ubuntu2004-11-7-local_11.7.0-515.43.04-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-11-7
配置环境变量
javascript
# 编辑bashrc
echo 'export PATH=/usr/local/cuda-11.7/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export CUDA_HOME=/usr/local/cuda-11.7' >> ~/.bashrc
# 创建符号链接(可选)
sudo ln -sf /usr/local/cuda-11.7 /usr/local/cuda
# 使配置生效
source ~/.bashrc
验证CUDA安装
# 检查nvcc版本
nvcc --version
# 检查CUDA路径
echo $CUDA_HOME
ls -la /usr/local/cuda-11.7
# 运行CUDA示例测试
cd /usr/local/cuda-11.7/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
(2)cuDNN v8.9.7 安装
步骤1:下载cuDNN
javascript
注意:需要NVIDIA开发者账号登录下载
https://developer.nvidia.com/rdp/cudnn-archive
访问:cuDNN Archive
· 选择:cuDNN v8.9.7 (November 28th, 2023), for CUDA 11.x
· · 下载:Local Installer for Linux x86_64 (Tar)
步骤2:安装cuDNN
javascript
# 1. 解压cuDNN
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz
# 2. 复制文件到CUDA目录
cd cudnn-linux-x86_64-8.9.7.29_cuda11-archive
sudo cp include/cudnn*.h /usr/local/cuda-11.7/include/
sudo cp -P lib/libcudnn* /usr/local/cuda-11.7/lib64/
# 3. 设置文件权限
sudo chmod a+r /usr/local/cuda-11.7/include/cudnn*.h /usr/local/cuda-11.7/lib64/libcudnn*
步骤3:验证cuDNN安装
javascript
# 方法1:检查版本
cat /usr/local/cuda-11.7/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
javascript
# 方法2:运行cuDNN示例
# 复制示例文件
sudo cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN
(3)在前面的基础上就可以安装编译安装opencv了
javascript
cd ~/Software/opencv/opencv-4.7.0/build
rm -rf *
cmake -DCMAKE_BUILD_TYPE=RELEASE -DWITH_CUDA=ON -DWITH_CUDNN=ON -DOPENCV_DNN_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.7 -DCUDA_ARCH_BIN="8.6" -DCUDNN_INCLUDE_DIR=/usr/local/cuda-11.7/include -DCUDNN_LIBRARY=/usr/local/cuda-11.7/lib64/libcudnn.so -DOPENCV_EXTRA_MODULES_PATH="../../opencv_contrib-4.7.0/modules" -DWITH_FFMPEG=ON ..
# 使用多核编译(加速编译过程)
make -j$(nproc)
# 如果内存不足或遇到问题,可以使用更少的核心:
# make -j2
# 编译完成后安装
sudo make install
sudo ldconfig
遇到可视化工具编译安装报错的相关信息时候不用管,直接进行下一步即可
(4)安装PCL1.13.0
步骤2:安装编译依赖
javascript
# 更新系统
sudo apt update
sudo apt upgrade -y
# 安装基本编译工具
sudo apt install -y git build-essential cmake cmake-gui
# 安装PCL核心依赖
sudo apt install -y libboost-all-dev libeigen3-dev libflann-dev
sudo apt install -y libusb-1.0-0-dev libudev-dev
sudo apt install -y libqhull-dev libgtest-dev
sudo apt install -y freeglut3-dev pkg-config
sudo apt install -y libxmu-dev libxi-dev
# 安装VTK(PCL可视化依赖)
sudo apt install -y libvtk7-dev libvtk7-qt-dev
# 安装Qt(可选,如果需要GUI)
sudo apt install -y qtbase5-dev qt5-qmake
# 其他可选依赖
sudo apt install -y libopenni-dev libopenni2-dev
sudo apt install -y libpcap-dev libglew-dev
步骤3:下载PCL 1.13.0源码
javascript
# 创建工作目录
cd ~
mkdir -p pcl_install
cd pcl_install
javascript
# 方法1:从GitHub克隆(推荐)
git clone https://github.com/PointCloudLibrary/pcl.git
cd pcl
git checkout pcl-1.13.0
javascript
# 方法2:直接下载压缩包(备选)
# wget https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.13.0.tar.gz
# tar -xzf pcl-1.13.0.tar.gz
# cd pcl-pcl-1.13.0
当编译卡死的时候可以使用单线程编译
cd ~/catkin_gaussian
rm -rf build
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 -j1
一直编译报错,可能是中间删除的东西导致,重新从安装ROS环境,从头开始配置cli环境
(5)修改cmake文件
下面是/home/zhaocai/catkin_gaussian/src/Gaussian-LIC下的cmake文件,因为cuda路径等问题需要修改此文件来进行编译安装
javascript
cmake_minimum_required(VERSION 3.17) # 升级 CMake 版本以更好支持 CUDA
project(gaussian_lic LANGUAGES CXX CUDA) # 明确指定支持 CUDA 语言
# 设置默认构建类型
if(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE "Release")
endif()
# 设置 CUDA 标准
set(CMAKE_CUDA_STANDARD 14) # 降低 CUDA 标准版本以兼容 CUDA 11.7
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 设置 CUDA 架构(根据你的 GPU 调整)
set(CMAKE_CUDA_ARCHITECTURES "75;80;86") # 假设是 RTX 20/30/40 系列
# 编译选项
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g -Wno-sign-compare -Wno-unused -Wno-comment -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -msse4.2")
# 设置 CUDA 相关路径(修复硬编码问题)
if(NOT DEFINED CUDA_TOOLKIT_ROOT_DIR)
set(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda-11.7")
endif()
set(CUDACXX "${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc")
# 查找 ROS 依赖
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
roslib
std_msgs
cv_bridge
image_transport
pcl_conversions
pcl_ros
nav_msgs
sensor_msgs
geometry_msgs
tf
eigen_conversions
)
# 设置 OpenCV 路径
if(NOT OpenCV_DIR)
set(OpenCV_DIR "$ENV{HOME}/Software/opencv/opencv-4.7.0/build")
endif()
find_package(OpenCV 4 REQUIRED)
# 设置 Torch 路径
if(NOT Torch_DIR)
set(Torch_DIR "$ENV{HOME}/Software/libtorch/share/cmake/Torch")
endif()
# 临时禁用 CUDA 检查,让 libtorch 找到正确的 CUDA
set(CMAKE_CUDA_COMPILER "${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc")
set(CUDA_NVCC_FLAGS "-std=c++14") # 设置 CUDA 编译标志
set(CMAKE_CUDA_HOST_COMPILER g++) # 设置 CUDA 主机编译器
# 在 find_package(Torch) 之前设置必要的变量
set(CAFFE2_CUDA_VERSION "11.7")
set(AT_CUDA_ENABLED ON)
# 查找 Torch
find_package(Torch REQUIRED)
# 设置 TensorRT
if(NOT TENSORRT_ROOT)
set(TENSORRT_ROOT "$ENV{HOME}/Software/TensorRT-8.6.1.6")
endif()
set(TENSORRT_INCLUDE_DIR "${TENSORRT_ROOT}/include")
set(TENSORRT_LIB_DIR "${TENSORRT_ROOT}/lib")
# 查找其他依赖
find_package(CUDA REQUIRED)
find_library(FFI_LIB ffi)
find_package(PkgConfig REQUIRED)
pkg_check_modules(YAML_CPP REQUIRED yaml-cpp>=0.5)
find_package(Python3 COMPONENTS Interpreter Development NumPy REQUIRED)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES gaussian_lic
# CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)
include_directories(
src
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
${YAML_CPP_INCLUDE_DIRS}
${Python3_INCLUDE_DIRS}
${TENSORRT_INCLUDE_DIR}
${CUDA_INCLUDE_DIRS}
)
# 定义源文件
set(CPP_SOURCES
${PROJECT_SOURCE_DIR}/src/mapping.cpp
${PROJECT_SOURCE_DIR}/src/gaussian.cpp
${PROJECT_SOURCE_DIR}/src/tinyply.cpp
${PROJECT_SOURCE_DIR}/src/depth_completer.cpp
${PROJECT_SOURCE_DIR}/src/rasterizer/renderer.cpp
${PROJECT_SOURCE_DIR}/src/rasterizer/rasterizer.cpp
)
set(CUDA_SOURCES
${PROJECT_SOURCE_DIR}/src/simple-knn/spatial.cu
${PROJECT_SOURCE_DIR}/src/simple-knn/simple_knn.cu
${PROJECT_SOURCE_DIR}/src/fused-ssim/ssim.cu
${PROJECT_SOURCE_DIR}/src/rasterizer/rasterize_points.cu
${PROJECT_SOURCE_DIR}/src/rasterizer/cuda_rasterizer/adam.cu
${PROJECT_SOURCE_DIR}/src/rasterizer/cuda_rasterizer/forward.cu
${PROJECT_SOURCE_DIR}/src/rasterizer/cuda_rasterizer/backward.cu
${PROJECT_SOURCE_DIR}/src/rasterizer/cuda_rasterizer/rasterizer_impl.cu
)
# 创建可执行文件
add_executable(gs_mapping ${CPP_SOURCES})
# 添加 CUDA 源文件
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
target_sources(gs_mapping PRIVATE ${CUDA_SOURCES})
else()
# CMake 3.18 以下的兼容方式
enable_language(CUDA)
target_sources(gs_mapping PRIVATE ${CUDA_SOURCES})
set_source_files_properties(${CUDA_SOURCES} PROPERTIES LANGUAGE CUDA)
endif()
# 设置目标属性
set_target_properties(gs_mapping PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_RESOLVE_DEVICE_SYMBOLS ON
)
# 链接库
target_link_libraries(gs_mapping
${catkin_LIBRARIES}
${OpenCV_LIBS}
${TORCH_LIBRARIES}
${YAML_CPP_LIBRARIES}
${Python3_LIBRARIES}
${FFI_LIB}
${CUDA_cudart}
${TENSORRT_LIB_DIR}/libnvinfer.so
${TENSORRT_LIB_DIR}/libnvonnxparser.so
${TENSORRT_LIB_DIR}/libnvparsers.so
${TENSORRT_LIB_DIR}/libnvinfer_plugin.so
)
# 设置包含目录
target_include_directories(gs_mapping PRIVATE
src
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
${YAML_CPP_INCLUDE_DIRS}
${Python3_INCLUDE_DIRS}
${TENSORRT_INCLUDE_DIR}
${CUDA_INCLUDE_DIRS}
)
4,训练fastlivo2数据集为3DGS
安装成功了,能够对fastlivo2的数据集进行训练生成gs了,效果极好
注意每生成一个新的项目,两个终端都要重开一次
1,运行时先在一个终端中启动如下(退出base环境)
javascript
cd ~/catkin_gaussian
source devel/setup.bash
roslaunch gaussian_lic fastlivo2.launch // The terminal will print "😋 Gaussian-LIC Ready!".


2,再启动一个终端运行bag包如下(需要编辑对应的yaml文件)
注意此出运行的路径是在catkin_coco目录下,与上一个终端不一样,并且最终结果保存在了上一个终端的目录下了
javascript
cd ~/catkin_coco
source devel/setup.bash
roslaunch cocolic odometry.launch config_path:=config/ct_odometry_fastlivo2.yaml

运行时会弹出如下窗口

生成的结果在此目录下


