SLAM开发环境完整配置方案

适配规范

双设备架构、ROS1/ROS2双向兼容、全网境外网址完全无法访问、纯本地离线包部署、无任何在线克隆、全GUI可视化调试

生效日期

2026-06-01

适用范围

Gao_4A_Autopilot工程体系下AR机器人、AD无人机分支SLAM算法开发、调试、仿真与量产

一、方案总述与核心约束

本方案为4A无人系统SLAM开发最终离线落地标准,适配当前网络现状:所有GitHub/Gitlab境外网页均无法访问、无法打开、无法通过git clone、wget等方式在线下载源码及依赖资源。

核心强制规则:

1. 彻底禁用一切git clone、在线源码拉取、外网wget下载操作;

2. 所有SLAM依赖库、SLAM算法仅允许通过Windows浏览器手动下载压缩包;

3. 源码下载后解压至双设备固定离线目录,全程采用本地手动CMake三步编译模式;

4. 废弃所有易出错自动编译脚本,杜绝空参、换行符、路径异常等隐蔽报错;

5. WSL2、ROS、Docker、基础系统环境已提前部署完成,本文不再重复系统安装配置步骤;

6. 设备A WSL2挂载D盘永久存储源码,重装系统不丢失文件;设备B采用本地独立目录,实现环境隔离。

架构分工:

通用模块:依赖安装、编译顺序、离线目录、下载清单、故障解决方案,双设备完全统一;

差异模块:WSL图形配置、ROS版本适配、编译并行线程数、仿真引擎对接,按设备独立配置;

工程模块:所有SLAM源码纳入4A标准化工程结构,依托Gitee内网实现版本管控与代码同步。

二、通用前置基础(A/B设备完全共用)

2.1 系统级依赖一键安装脚本

本脚本适配Ubuntu22.04、Ubuntu24.04双系统,依托国内APT源部署,无任何境外依赖,双设备可直接执行,一次性配齐SLAM开发全部系统编译依赖。

脚本文件名:install_slam_deps_common.sh

bash
#!/bin/bash
#
文件名: install_slam_deps_common.sh
# 用途: 4A双设备通用SLAM编译依赖一键安装
# 适配: Ubuntu22.04/24.04 双系统通用

sudo apt update && sudo apt upgrade -y

sudo apt install -y --no-install-recommends \
  build-essential cmake git pkg-config curl wget gnupg \
  g++ gcc automake autoconf libtool make \
  libssl-dev liblapack-dev libopenblas-dev \
  libopencv-dev libpcl-dev libeigen3-dev libboost-all-dev \
  libglew-dev libglfw3-dev libglm-dev \
  libgtk2.0-dev libgtk-3-dev \
  libavcodec-dev libavformat-dev libswscale-dev \
  libjpeg-dev libtiff5-dev libpng-dev \
  libflann-dev libqhull-dev libgtest-dev freeglut3-dev \
  libxmu-dev libxi-dev mono-complete \
  libopenni-dev libopenni2-dev \
  libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev \
  libcholmod3 liblapacke-dev \
  qtbase5-dev qtchooser qt5-qmake qtcreator \
  python3-dev python3-numpy python3-matplotlib \
  libboost-python-dev python3-empy

echo "✅ 4A双设备通用SLAM基础依赖安装完成"

脚本执行命令:

bash
chmod +x install_slam_deps_common.sh
./install_slam_deps_common.sh

2.2 核心依赖库强制编译顺序(不可更改)

受底层依赖关系约束,必须严格按以下顺序逐一编译,乱序会直接导致头文件缺失、链接失败等编译错误。

Eigen3 → Ceres Solver → g2o → Pangolin → Sophus → DBow3 → Octomap → GTSAM

依赖说明:Eigen为所有SLAM数学库底层基础,Ceres、Sophus、g2o均依赖Eigen环境,必须优先编译安装。

2.3 统一手动编译标准模板(永久通用)

废弃build_slam_lib.sh等所有带参自动化编译脚本,彻底规避脚本空参、换行符、路径异常报错,所有依赖库统一使用三步手动编译法。

bash
rm -rf build
mkdir build && cd build
cmake ..
make -j4        #
设备A WSL环境固定使用-j4/-j6
sudo make install

设备B原生硬件性能充足,可全速编译:make -j16

2.4 双设备固定离线目录结构

2.4.1 设备AWSL2 永久挂载D盘)

挂载宿主机D盘存储源码,WSL重装、系统重置均不丢失文件,永久复用环境。

Plain Text
/mnt/d/01_ActiveCode/slam14/
├── deps/        #
八大SLAM核心依赖库
├── 3rdparty/    # OpenCV/VTK/CMake大型三方库
└── algorithms/ # SLAM开源算法源码

一键创建目录命令:

bash
mkdir -p /mnt/d/01_ActiveCode/slam14/{deps,3rdparty,algorithms}
mkdir -p /mnt/d/01_ActiveCode/slam14/deps/{eigen,ceres-solver,g2o,Pangolin,Sophus,DBow3,octomap,gtsam}

2.4.2 设备B(原生Ubuntu24.04

本地独立目录存储,无挂载路径兼容问题,适配原生系统编译特性。

Plain Text
~/slam_deps/
├── eigen
├── ceres-solver
├── g2o
├── Pangolin
├── Sophus
├── DBow3
├── octomap
└── gtsam

一键创建目录命令:

bash
mkdir -p ~/slam_deps/{eigen,ceres-solver,g2o,Pangolin,Sophus,DBow3,octomap,gtsam}

2.5 SLAM依赖库+算法离线下载清单

2.5.1 前置强制说明

以下所有网址均为境外站点,当前网络环境无法访问、无法在线拉取源码;严禁使用git clonewgetcurl等终端在线下载命令,仅允许Windows浏览器手动打开网页,下载zip/tar.gz格式源码压缩包,解压后放入对应固定离线目录。

2.5.2 核心依赖库&三方库下载明细

库名称

官方页面地址

推荐稳定版本

下载方式

Eigen

https://gitlab.com/libeigen/eigen/-/releases

3.4.0

下载tar.gz源码包

Ceres-Solver

https://github.com/ceres-solver/ceres-solver/releases

2.1.0

下载Release源码包

g2o

https://github.com/RainerKuemmerle/g2o

20230223稳定版

下载源码ZIP

Pangolin

https://github.com/stevenlovegrove/Pangolin

最新版

下载源码ZIP

Sophus

https://github.com/strasdat/Sophus

a621ff稳定提交版

下载指定commit压缩包

DBow3

https://github.com/rmsalinas/DBow3

最新版

下载源码ZIP

Octomap

https://github.com/OctoMap/octomap/releases

1.9.8

下载源码包

GTSAM

https://github.com/borglab/gtsam/releases

4.2.0

下载源码ZIP

CMake

https://github.com/Kitware/CMake/releases

3.25.2

下载tar.gz源码包

VTK

https://gitlab.kitware.com/vtk/vtk/-/tags

9.2.6

下载源码ZIP

OpenCV

https://github.com/opencv/opencv/releases

4.5.5

下载4.x版本源码

OpenCV_contrib

https://github.com/opencv_contrib/releases

4.5.5

与OpenCV同版本配套下载

2.5.3 SLAM经典算法离线下载明细

算法名称

官方下载链接

下载方式

视觉SLAM十四讲

https://github.com/gaoxiang12/slambook2

源码ZIP压缩包

ORB-SLAM2

https://github.com/raulmur/ORB_SLAM2

源码ZIP压缩包

ORB-SLAM3

https://github.com/UZ-SLAMLab/ORB_SLAM3

源码ZIP压缩包

VINS-Mono

https://github.com/HKUST-Aerial-Robotics/VINS-Mono

源码ZIP压缩包

LEGO-LOAM

https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

源码ZIP压缩包

RTAB-Map

https://github.com/introlab/rtabmap

源码ZIP压缩包

2.5.4 离线使用强制规范

1. 所有境外链接仅作为下载入口,禁止终端执行任何在线拉取命令;

2. 压缩包解压后,文件夹名称必须与离线目录名称严格一致,避免编译路径错误;

3. 设备A所有源码存放至/mnt/d/01_ActiveCode/slam14/对应子目录;

4. 设备B所有源码存放至~/slam_deps目录;

5. 所有依赖库、算法源码统一采用手动三步CMake编译流程。

2.6 通用CMake推荐编译参数

为减少编译体积、规避冗余报错、统一双设备编译环境,各库编译时需追加以下参数:

库名称

推荐追加CMake参数

Ceres

-DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF

g2o

-DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF

GTSAM

-DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DGTSAM_INSTALL_CYTHON_TOOLBOX=OFF

OpenCV

-DWITH_CUDA=OFF -DBUILD_EXAMPLES=OFF

2.7 通用故障速查大全

报错现象

故障原因

解决方案

/bin/bash^M 非法解释器

Windows编辑脚本生成CRLF换行符,Linux无法识别

执行:dos2unix 脚本名

脚本无参裸运行报错

自动化脚本依赖参数启动,禁止直接运行

废弃所有自动脚本,统一使用手动CMake编译

编译提示目录不存在

未创建固定离线源码目录

执行对应设备的一键建目录命令

CMake找不到Eigen3

Eigen安装路径与CMake检索路径不统一

sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen

Pangolin/RViz图形闪退、黑屏

WSL图形环境变量配置异常

配置export LIBGL_ALWAYS_INDIRECT=0并生效

外网、Gitee无法访问

境外网络封禁,在线资源无法拉取

全部改用本地离线压缩包手动编译

WSL编译卡死、内存溢出

WSL内存资源有限,线程数过高

降低编译线程,固定使用-j4/-j6

三、设备A专属配置(WSL2 Ubuntu22.04

3.1 前置复用环境

所有基础环境已部署就绪,无需重复配置:

1. Win11+WSL2 Ubuntu22.04,systemd功能已开启;

2. 系统APT源已替换为国内镜像,更新正常;

3. ROS2 Humble(宿主机)、Docker ROS1 Noetic(容器)双环境就绪;

4. WSLg/VcXsrv图形桌面正常,支持GUI可视化调试。

3.2 WSL图形永久环境变量配置

永久写入环境变量,彻底解决RViz、Pangolin闪退、黑屏、OpenGL异常问题。

bash
cat << 'EOF' >> ~/.bashrc
export DISPLAY=:0
export LIBGL_ALWAYS_INDIRECT=0
export GDK_BACKEND=x11
export QT_QPA_PLATFORM=xcb
export OGRE_RTT_MODE=Copy
export MESA_GL_VERSION_OVERRIDE=3.3
EOF
source ~/.bashrc

环境验证:执行xeyes,弹出图形窗口即为配置正常。

3.3 ROS SLAM功能包安装

3.3.1 宿主机ROS2 Humble

bash
humble
sudo apt install -y ros-humble-slam-toolbox ros-humble-cartographer ros-humble-rtabmap-ros

3.3.2 Docker容器ROS1 Noetic

bash
docker exec -it ros1_dev bash
sudo apt install -y ros-noetic-slam-gmapping ros-noetic-cartographer ros-noetic-hector-slam

3.4 设备A编译与工程规范

1. 编译线程限制:固定使用make -j4 / -j6,防止WSL内存溢出、编译卡死;

2. 源码统一存储于D盘挂载目录,WSL重装、重启不丢失源码与编译文件;

3. 工程固定路径:

机器人SLAM工程:~/4A_Project/Gao_Robot_Autopilot/src/slam

无人机视觉SLAM工程:~/4A_Project/Gao_Drone_Autopilot/src/visual_slam

3.5 单库编译示例(Eigen

其余依赖库仅需替换目录名称,搭配对应CMake参数即可复用该流程:

bash
cd /mnt/d/01_ActiveCode/slam14/deps/eigen
rm -rf build && mkdir build && cd build
cmake ..
make -j4
sudo make install

四、设备B专属配置(Ubuntu24.04

4.1 前置复用环境

1. 原生Ubuntu24.04桌面系统,NVIDIA显卡驱动、CUDA环境部署完成;

2. ROS2 Jazzy环境就绪,可正常激活使用;

3. Gazebo、PX4、CARLA、AirSim全套仿真引擎已配置完成。

4.2 24.04系统专属补充依赖

bash
sudo apt install -y libqt6-dev libvulkan-dev libopencv-dev nvidia-cudnn

4.3 ROS2 Jazzy SLAM功能包安装

bash
jazzy
sudo apt install -y ros-jazzy-slam-toolbox ros-jazzy-cartographer ros-jazzy-rtabmap-ros

4.4 设备B编译与仿真规范

1. 离线源码目录:~/slam_deps

2. 硬件性能充足,编译可全速运行:make -j16

3. 完整支持全场景仿真,可用于算法精度测试、性能压测;

4. 工程目录与设备A完全一致,通过Gitee实现代码实时同步,保证双设备环境统一。

五、双设备统一工程与验收规范

5.1 源码管理强制规范

1. 核心依赖库:永久存放于双设备固定离线目录,禁止删除,用于环境维护与重装恢复;

2. SLAM算法源码:统一存放至~/slam_ws/src,纳入Gitee内网版本管理;

3. 全程禁止任何在线克隆、在线下载操作,仅使用离线压缩包部署;

4. 双设备依赖库版本严格统一,锁定固定稳定版本,杜绝环境差异化报错。

5.2 双设备开发分工

设备A(WSL2):负责算法代码编写、功能调试、RViz可视化验证;

设备B(原生Ubuntu):负责全场景仿真测试、算法精度标定、性能压力测试、真机部署打包。

5.3 环境验收标准(全部达标即为环境正常)

1. 图形环境:xeyes工具可正常弹窗,无闪退、黑屏;

2. Eigen版本:pkg-config --modversion eigen3输出版本≥3.3.7;

3. ROS可视化:rviz2、容器内rviz可正常启动,无图形报错;

4. 依赖编译:八大核心库按指定顺序编译,无报错、无缺失;

5. 算法适配:ORB-SLAM3、VINS-Mono等主流算法可正常完成CMake配置与编译。

六、版本迭代说明 V2.1

1. 深度适配当前网络现状,针对所有境外网页无法访问问题,全面禁用在线下载、在线克隆,实现纯离线部署;

2. 统一系统依赖脚本命名为install_slam_deps_common.sh,规范工程文件命名体系;

3. 废弃所有易出错自动化编译脚本,统一标准化手动三步编译流程,规避隐蔽编译故障;

4. 固化双设备专属离线目录结构,实现WSL重装、换机环境快速恢复;

5. 完善所有依赖库、SLAM算法官方离线下载清单,明确版本、下载方式与使用规范;

6. 整合脚本换行、路径异常、图形闪退、库依赖缺失等全套故障解决方案;

7. 统一双设备编译参数、工程规范、验收标准,完全适配4A无人系统开发、仿真、量产全流程。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐