本教程将指导你在一台全新的操作系统上,从零开始搭建一套适用于SLAM(同步定位与地图构建)开发的基础环境。我们将按照网络连接 → 软件源 → 基础开发工具 → SLAM常用库 → IDE → Hello World的顺序,逐步完成配置,确保你后续能顺利进入SLAM学习与开发。
1. 网络连接及软件源
1.1 网络连接
新安装的系统可能无法自动接入现有网络,需要手动配置网关。如果你已经能够正常上网,可以跳过本小节。
- 插好网线或连接Wi-Fi后,点击右上角网络图标,选择 Edit(编辑)。
- 确认 IPV4 设置正确。常见局域网使用
192.168.1.XXX这类地址,可参考路由器设置或询问网络管理员。 - 保存后即可正常访问网络,下次重启也会自动连接。
小提示:如果网络时好时坏,可以尝试手动指定DNS(如 8.8.8.8 或 114.114.114.114)来改善域名解析。
1.2 软件源设置
软件源(Software Repository)是系统获取软件包的“仓库”,配置合适的镜像源能大幅提升下载速度。
- 点击左上角 Search 按钮,搜索
Software & Updates,或者在 System Settings 中找到它。 - 打开后主要修改两个地方(参见下图):

- 勾选“从网络上下载源码”:这样以后编译第三方库时可以直接下载源码,避免依赖缺失。
- 选择最佳镜像源:点击“下载自”下拉菜单,选择“其他站点”,然后点击“选择最佳服务器”自动测速;也可以手动选择国内镜像(如中科大、清华、上交、阿里云等)。如果不熟悉,建议使用自动选择。
设置完成后,打开终端执行以下两条命令更新包列表并升级所有已安装的软件:
sudo apt update
sudo apt upgrade -y
执行过程需要几分钟,请保持网络畅通。
常见问题:执行 sudo apt update 时提示“无法解析域名”怎么办?
答:通常是DNS问题,检查网络连接,或在 /etc/resolv.conf 中添加 nameserver 8.8.8.8。临时方案:使用 sudo dpkg-reconfigure resolvconf 重新配置。
2. 基础开发环境确认与搭建
2.1 系统基础信息查看
配置好网络和源后,可以先查看一下系统的基本状态,类似Windows的任务管理器:
- 网络信息:终端输入
ifconfig(或ip a)查看IP、MAC等。 - 磁盘空间:输入
df -h查看各分区占用情况。 - CPU与进程:输入
top或htop(需安装)查看实时负载。 - 系统版本:输入
lsb_release -a或cat /etc/os-release查看发行版和版本号。
2.2 SLAM通用类别(核心库安装)
SLAM开发依赖多个底层库,以下按重要性逐一说明。
① g++/gcc 编译器
编译器版本直接影响代码的编译与运行。查看当前版本:
gcc --version
g++ --version
推荐同时安装 4.8.5 和 5.4.0 两个版本,日常使用5.4.0,遇到低版本兼容问题时可切换。安装命令:
sudo apt install gcc-4.8 g++-4.8 gcc-5 g++-5
切换版本需要配置update-alternatives,网上有详细教程。注意:某些老旧开源代码(如ORB-SLAM2)可能需要4.8.5编译才能避免莫名其妙的内存错误。
② Boost 库
Boost是一个功能丰富的大型C++库,提供多线程、文件系统、正则表达式等支持。一键安装:
sudo apt install libboost-all-dev -y
小提示:Boost版本可能与系统自带的有区别,如果后续编译时遇到boost相关错误,可以考虑源码编译指定版本。
③ Eigen 矩阵库
Eigen是SLAM中处理矩阵、向量、旋转等数学运算的必备库。安装命令:
sudo apt install libeigen3-dev -y
Eigen是纯头文件库,安装后即可在代码中 #include 使用,无需链接动态库。
④ PCL 点云库(建议源码编译)
PCL(Point Cloud Library)是激光SLAM中最常用的点云处理库,提供滤波、特征提取、配准、可视化等功能。注意:为避免版本冲突,强烈推荐从GitHub源码编译安装。目前主流版本分为三类:
- 1.7(一类)
- 1.8、1.9、1.10(一类,API兼容)
- 1.11+(新一类,接口有变化)
编译步骤(以1.10为例):
sudo apt install libpcl-dev # 先安装依赖,但版本可能较旧
# 下载源码:git clone https://github.com/PointCloudLibrary/pcl.git
# 切换到1.10分支,然后cmake、make、sudo make install
常见问题:编译PCL时提示找不到VTK怎么办?
答:VTK是PCL的可视化依赖,通过 sudo apt install libvtk7-dev(Ubuntu 18.04)或 libvtk9-dev(Ubuntu 20.04)安装。也可在cmake时加 -DWITH_VTK=OFF 禁用可视化模块。
⑤ OpenCV 视觉库
OpenCV是视觉SLAM的核心库,注意区分2.x系列和3.x系列,它们的接口和API差异较大。直接用apt安装的一般是2.x版本:
sudo apt install libopencv-dev
若需要3.x或4.x,建议从官网或GitHub源码编译(步骤类似PCL)。小提示:编译OpenCV时可以用 -D CMAKE_BUILD_TYPE=RELEASE 获得优化版本。
⑥ Ceres Solver 后端优化库
Ceres是谷歌开源的优化库,广泛用于SLAM后端(如BA优化)。需要从GitHub下载源码编译,因为apt源中的版本较旧且依赖项需要手动配齐。安装前确保已安装所有依赖:
sudo apt install cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
sudo make install
注意:Ceres依赖Eigen和glog/gflags,务必先安装Eigen。
⑦ 其他常用工具
还有 g2o(图优化库)、Python 及 pybind11(用于C++/Python混合编程)等。由于本人经验有限,这里暂不展开,建议在实际需要时再针对性学习。
2.3 IDE(集成开发环境)选择与安装
工欲善其事,必先利其器。选择一个顺手的IDE能极大提升效率。以下介绍三种常见选择:
① VSCode(推荐入门)
VSCode轻量、插件丰富,适合各种规模项目。安装方法:去官网下载.deb包双击安装,或通过 sudo snap install code --classic。使用时注意配置以下json文件:
- c_cpp_properties.json:配置头文件搜索路径、编译器路径。
- tasks.json:定义编译任务(如调用cmake/make)。
- launch.json:配置调试器。
小提示:将json文件与项目一同版本管理,可以方便团队统一环境。
② QT Creator(专业级)
QT Creator功能强大,尤其适合图形化界面开发,调试能力优秀,其qmake机制能提高代码安全性。安装命令:
sudo apt install qtcreator
启动后可通过“从CMakeLists.txt打开项目”直接浏览整个工程。缺点是当包含大量头文件时,跳转可能卡顿。
③ Kdevelop(轻量易用)
如果不想折腾VSCode或QT,Kdevelop是一个“开箱即用”的选择。安装命令:
sudo apt install kdevelop
支持CMake项目,界面简洁,适合快速上手。
常见问题:VSCode中无法跳转到Eigen/PCL等库的符号定义?
答:需要在 c_cpp_properties.json 的 includePath 中添加库的安装路径,例如 /usr/include/eigen3、/usr/local/include/pcl-1.10。
3. 尝试一个Hello World
环境搭建完毕,写一个简单的测试程序确认一切正常。创建一个 test.cpp 文件,内容如下:
#include
#include
#include
#include
int main(int argc, char** argv)
{
// 测试Eigen
Eigen::Matrix3f mat;
mat = Eigen::Matrix3f::Identity();
std::cout << "Eigen matrix:\n" << mat << std::endl;
// 测试PCL
pcl::PointCloud cloud;
cloud.width = 10;
cloud.height = 1;
cloud.is_dense = false;
cloud.resize(cloud.width * cloud.height);
for (auto& point : cloud)
{
point.x = static_cast(rand()) / RAND_MAX;
point.y = static_cast(rand()) / RAND_MAX;
point.z = static_cast(rand()) / RAND_MAX;
}
std::cout << "PCL cloud size: " << cloud.size() << std::endl;
// 经典Hello World
std::cout << "Hello World!" << std::endl;
return 0;
}
使用以下命令编译(假设项目结构简单):
g++ test.cpp -o test -I/usr/include/eigen3 -I/usr/local/include/pcl-1.10 -lpcl_common -lpcl_io
如果一切正常,运行 ./test 将看到Eigen矩阵和点云大小输出,最后显示 Hello World!。恭喜你,SLAM开发环境已成功搭建!
小提示:对于大型项目,建议使用CMake管理编译,写一个 CMakeLists.txt 调用 find_package(Eigen3) 和 find_package(PCL) 等。
结尾
至此,你已经完成了从“裸系统”到具备SLAM基础开发环境的全过程配置。网络通畅、软件源优化、核心编译器与库(g++、Boost、Eigen、PCL、OpenCV、Ceres)就绪,并且熟悉了VSCode、QT Creator等IDE的选择。下一步可以开始部署具体的SLAM算法,如ORB-SLAM2、LIO-SAM等。如果在安装或编译中遇到新的问题,欢迎交流探讨。
