15.Slam算法的环境搭建与测试

一、前期准备

1. 软件 / 镜像下载
  • 虚拟机软件:VMware Workstation Pro(官网下载试用版即可,或用免费的 VirtualBox);
  • Ubuntu 镜像:Ubuntu 20.04 LTS(推荐,ROS Noetic 适配性最好),下载地址:https://releases.ubuntu.com/20.04/;
  • 硬件要求:宿主机至少 16GB 内存(给虚拟机分配 8GB)、CPU 4 核以上、50GB 以上硬盘空间。
2. 虚拟机创建与配置(核心!决定运行流畅度)
  1. 打开 VMware,点击「创建新的虚拟机」,选择「典型」→ 下一步;
  2. 选择「安装程序光盘映像文件 (ISO)」,选中下载的 Ubuntu 20.04 ISO 文件 → 下一步;
  3. 设置 Ubuntu 用户名 / 密码(记住!后续登录用)→ 下一步;
  4. 虚拟机名称自定义(如「Ubuntu-SLAM」),存储路径选非 C 盘 → 下一步;
  5. 最大磁盘大小设置为「100GB」,选择「将虚拟磁盘存储为单个文件」→ 下一步;
  6. 点击「自定义硬件」,关键配置:
    • 内存:调整为「8GB(8192MB)」(至少 6GB,否则编译 SLAM 会卡死);
    • 处理器:核心数调整为「4 核」(宿主机核心数的一半);
    • 显示器:勾选「加速 3D 图形」,显存调整为「2GB」;
    • 网络适配器:选择「桥接模式」(方便后续联网装依赖);
  7. 点击「完成」,启动虚拟机,开始安装 Ubuntu 系统(全程默认下一步,等待 10-15 分钟)。

二、SLAM 环境搭建(ROS Noetic + ORB-SLAM3)

步骤 1:Ubuntu 系统基础配置
  1. 更换国内源(解决下载慢问题):

    # 备份原源文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 替换为阿里云源 sudo gedit /etc/apt/sources.list

    清空文件内容,粘贴以下内容(Ubuntu 20.04 专用):

    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

    保存后更新源:

    sudo apt update && sudo apt upgrade -y
  2. 安装基础依赖:

    sudo apt install git cmake gcc g++ python3-pip vim -y
步骤 2:安装 ROS Noetic
  1. 添加 ROS 源和密钥:

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

    (如果密钥添加失败,替换为国内源:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

  2. 安装 ROS 完整版:

    sudo apt update sudo apt install ros-noetic-desktop-full -y
  3. 初始化 rosdep(解决依赖的核心工具):

    # 解决rosdep update失败问题(国内专用) sudo pip3 install rosdepc sudo rosdepc init rosdepc update
  4. 设置 ROS 环境变量(每次终端启动自动加载):

    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc
  5. 安装 ROS 构建工具:

    sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential -y
  6. 验证 ROS 安装:

    roscore

    若出现「started core service [/rosout]」,说明 ROS 安装成功(按 Ctrl+C 关闭)。

步骤 3:安装 ORB-SLAM3 依赖
# 1. 安装Eigen(线性代数库) sudo apt install libeigen3-dev -y # 2. 安装Pangolin(可视化工具) sudo apt install libpangolin-dev -y # 3. 安装OpenCV(计算机视觉库) sudo apt install libopencv-dev python3-opencv -y # 4. 安装Boost库 sudo apt install libboost-all-dev -y
步骤 4:编译 ORB-SLAM3
  1. 创建 SLAM 工作空间:

    mkdir -p ~/slam_ws/src cd ~/slam_ws/src
  2. 克隆 ORB-SLAM3 源码:

    git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
  3. 编译 ORB-SLAM3 核心库:

    cd ORB_SLAM3 chmod +x build.sh ./build.sh # 编译时间约10分钟,耐心等待,虚拟机编译会慢一些
  4. 编译 ROS 接口(让 ORB-SLAM3 和 ROS 通信):

    chmod +x build_ros.sh ./build_ros.sh
  5. 设置 ORB-SLAM3 环境变量:

    echo "export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/slam_ws/src/ORB_SLAM3/Examples/ROS" >> ~/.bashrc source ~/.bashrc

三、SLAM 环境使用(跑公开数据集验证)

虚拟机无法连接真实硬件,所以先跑离线公开数据集验证环境,这是入门 SLAM 的核心步骤。

步骤 1:下载 TUM 数据集(小型视觉数据集,适合虚拟机)
# 创建数据集文件夹 mkdir -p ~/slam_datasets/tum cd ~/slam_datasets/tum # 下载TUM单目数据集(房间场景,体积小) wget https://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_room.tgz # 解压数据集 tar -zxvf rgbd_dataset_freiburg1_room.tgz
步骤 2:运行 ORB-SLAM3 单目 SLAM
cd ~/slam_ws/src/ORB_SLAM3 # 运行单目SLAM(参数说明:词典文件 + 配置文件 + 数据集路径) ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ~/slam_datasets/tum/rgbd_dataset_freiburg1_room
预期效果
  1. 终端会输出特征点提取、跟踪、建图的日志;
  2. 弹出两个可视化窗口:
    • 左窗口:数据集的 RGB 画面 + 实时提取的 ORB 特征点;
    • 右窗口:3D 稀疏点云地图 + 相机运动轨迹(红色);
  3. 你可以用鼠标旋转 / 缩放右窗口,查看构建的点云地图。

运行的图形化效果如下:


四、虚拟机使用 SLAM 的避坑指南

  1. 可视化窗口卡顿

    • 原因:虚拟机 3D 加速性能有限;
    • 解决:修改 ORB-SLAM3 配置文件,降低点云显示数量:
      gedit ~/slam_ws/src/ORB_SLAM3/Examples/Monocular/TUM1.yaml
      Viewer.MaxFrames1000改为100,保存后重新运行。
  2. 编译 ORB-SLAM3 报错「C++11」

    • 解决:修改ORB_SLAM3/CMakeLists.txt,在开头添加:
      set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON)
  3. rosdep update 失败

    • 解决:改用rosdepc(国内镜像),就是教程里的sudo pip3 install rosdepc
  4. Pangolin安装失败

# 1. 回到 Pangolin 根目录 cd .. git checkout v0.6 # 2. 重新创建 build 目录并编译 mkdir -p build && cd build cmake .. make -j$(nproc) sudo make install

5.OpenCV 版本错误


总结

  1. 环境搭建核心:虚拟机重点要分配足够的内存 / CPU,更换国内源解决下载慢,rosdepc 替代 rosdep 解决初始化失败;
  2. 使用核心:虚拟机只能跑离线数据集(TUM/EuRoC),验证 SLAM 算法的建图 / 定位逻辑,熟悉参数调整;
  3. 进阶方向:等熟悉基础后,装双系统(物理机 Ubuntu),连接摄像头 / 激光雷达跑实时 SLAM。

如果运行过程中遇到具体报错(比如编译失败、数据集跑不起来),可以把报错信息发给我,我帮你定位解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AerialMegaDepth:学习空中-地面重建和视图合成 - MKT

AerialMegaDepth:学习空中-地面重建和视图合成AerialMegaDepth:学习空中-地面重建和视图合成https://github.com/kvuong2711/aerial-megadepth

2026年PVC地板厂家口碑红榜,无醛环保型产品实力品牌甄选 - 品牌鉴赏师

引言在当今建筑装饰领域,PVC地板以其环保、耐用、美观等诸多优势,受到了越来越多消费者的青睐。然而,市场上PVC地板厂家众多,产品质量参差不齐,如何选择一家可靠的厂家成为了消费者面临的难题。为了帮助消费者做出…

线段树多懒标记

最近在思考:如何对一个序列维护带有两种区间修改的多查询问题。这样不可避免地需要对两种修改操作分别维护一种懒标记。但显然,不能将两种懒标记独立看待,因为对于两种操作,先后顺序不同会造成不同的影响。因此如何…

vue基于Python 新疆特色美食电商平台设计与实现flask django Pycharm

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 …

Python+Vue的 林海生态园自动销售门票管理系统 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 …

Python+Vue的笔记管理系统的设计与实现 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 …

GESP认证C++编程真题解析 | 202306 三级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

ESP8266-01S学习笔记

这里写目录标题传模式 vs 非透传模式解析JSON的差异一、透传模式 vs 非透传模式的JSON解析1.1 两种模式下的串口数据格式对比非透传模式(默认模式)透传模式1.2 两种模式对比表1.3 透传模式设置代码二、堆栈设置问题详解2.1 为什么需要调整堆栈大小&#…

Python+Vue的 美食分享论坛的设计和实现 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 …

SpringBoot 全局异常处理

文章目录第5章:SpringBoot 全局异常处理SpringBoot全局异常介绍第5章:SpringBoot 全局异常处理 SpringBoot全局异常介绍 什么是全局异常处理? 集中捕获项目中所有未被手动捕获的异常;统一封装成前端可解析的 JSON 格式&#xf…

【顶刊未发表】基于混沌增强领导者黏菌算法CELSMA复杂山地危险模型无人机路径规划附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

计算机小程序毕设实战-基于springboot+微信小程序的服装商城的设计与实现小程序基于微信小程序的在线服装商城店铺的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

提示工程架构师带你领略Agentic AI提示工程自我学习能力的灵活性

Agentic AI提示工程:让你的Prompt学会“自我进化”的灵活之道 引言:传统提示工程的“静态困境”与Agentic AI的破局 你是否遇到过这样的困扰? 精心设计的Prompt在面对多样化的用户问题时,常常“水土不服”——比如针对普通用户的…

Python+Vue的 第三方物流管理系统 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 …

STM32F03C8T6通过AT指令获取天气API-下篇

这里写目录标题堆栈大小换算与修改说明一、十六进制到十进制的换算1.1 换算公式1.2 换算结果二、修改前后的对比修改前(原始配置):修改后(新配置):三、STM32F103C8T6的内存限制四、为什么需要调整堆栈大小&…

2024最新大数据架构趋势:云原生与湖仓一体实战指南

2024大数据架构趋势深度解析:云原生与湖仓一体实战指南 一、引言:为什么说“云原生湖仓一体”是2024大数据的“必选项”? 1.1 一个真实的痛点:企业数据架构的“两难困境” 某零售企业的技术负责人最近很头疼: 数据分散…

小程序毕设选题推荐:基于微信小程序的网上服装商城系统基于springboot+微信小程序的服装商城的设计与实现小程序【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

RAG vs 微调:LLM优化双路径指南 + LLaMA-Factory Online高效落地

RAG vs 微调:LLM优化双路径指南 + LLaMA-Factory Online高效落地在大型语言模型(LLM)应用中,RAG(检索增强生成) 与 微调(Fine-Tuning) 是适配特定任务的两大核心优化方案。而LLaMA-Factory Online作为一站式…

RoMa v2 - MKT

RoMa v2 特别地,航空数据集AerialMD [45]和BlendedMVS [49]的包含,使我们提出的模型对大旋转和空对地视点变化显著更加鲁棒。小基线数据集的包含,如FlyingThings3D [26],使RoMa v2在预测精细细节方面显著更好。我…

小程序计算机毕设之基于springboot+微信小程序的服装购物平台的设计与实现小程序(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…