SLAM开发环境完整配置方案
本文档为Gao_4A_Autopilot工程体系下的SLAM开发环境配置规范,适用于AR机器人和AD无人机的SLAM算法开发、调试与仿真。方案针对当前网络环境下境外网址无法访问的问题,制定了纯离线部署方案,要求所有依赖库和算法源码通过Windows浏览器下载后手动部署,禁用所有在线下载命令。文档详细说明了双设备(WSL2和原生Ubuntu)的配置流程,包括系统依赖安装、核心库编译顺序、固定目录结构
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 |
脚本执行命令:
|
bash |
2.2 核心依赖库强制编译顺序(不可更改)
受底层依赖关系约束,必须严格按以下顺序逐一编译,乱序会直接导致头文件缺失、链接失败等编译错误。
Eigen3 → Ceres Solver → g2o → Pangolin → Sophus → DBow3 → Octomap → GTSAM
依赖说明:Eigen为所有SLAM数学库底层基础,Ceres、Sophus、g2o均依赖Eigen环境,必须优先编译安装。
2.3 统一手动编译标准模板(永久通用)
废弃build_slam_lib.sh等所有带参自动化编译脚本,彻底规避脚本空参、换行符、路径异常报错,所有依赖库统一使用三步手动编译法。
|
bash |
设备B原生硬件性能充足,可全速编译:make -j16
2.4 双设备固定离线目录结构
2.4.1 设备A(WSL2 永久挂载D盘)
挂载宿主机D盘存储源码,WSL重装、系统重置均不丢失文件,永久复用环境。
|
Plain Text |
一键创建目录命令:
|
bash |
2.4.2 设备B(原生Ubuntu24.04)
本地独立目录存储,无挂载路径兼容问题,适配原生系统编译特性。
|
Plain Text |
一键创建目录命令:
|
bash |
2.5 SLAM依赖库+算法离线下载清单
2.5.1 前置强制说明
以下所有网址均为境外站点,当前网络环境无法访问、无法在线拉取源码;严禁使用git clone、wget、curl等终端在线下载命令,仅允许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 |
环境验证:执行xeyes,弹出图形窗口即为配置正常。
3.3 ROS SLAM功能包安装
3.3.1 宿主机ROS2 Humble
|
bash |
3.3.2 Docker容器ROS1 Noetic
|
bash |
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 |
四、设备B专属配置(Ubuntu24.04)
4.1 前置复用环境
1. 原生Ubuntu24.04桌面系统,NVIDIA显卡驱动、CUDA环境部署完成;
2. ROS2 Jazzy环境就绪,可正常激活使用;
3. Gazebo、PX4、CARLA、AirSim全套仿真引擎已配置完成。
4.2 24.04系统专属补充依赖
|
bash |
4.3 ROS2 Jazzy SLAM功能包安装
|
bash |
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无人系统开发、仿真、量产全流程。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)