LeGO-LOAM Docker for ROS Noetic

LeGO-LOAM Docker for ROS Noetic

Docker PullsROS VersionUbuntu Version
这是一个为 LeGO-LOAM 准备的、开箱即用的 Docker 环境。
该镜像基于 ROS Noetic (Ubuntu 20.04),并包含了所有运行 LeGO-LOAM 所需的核心依赖和图形库,让你无需经历繁琐的环境配置,即可快速启动并运行算法。
github项目地址:LY-zhang-yi-hao/LeGO-LOAM
这个 Docker 镜像托管在 Docker Hub 上:zyhlearning/zyh_lego_loam_noetic

效果图
image.png|500|500

✨ 特性

  • 环境完整:基于官方 osrf/ros:noetic-desktop-full 镜像,包含了 RViz 等常用工具。
  • 依赖齐全:预装了 GTSAM, METIS, PCL 等所有 LeGO-LOAM 的编译和运行依赖。
  • 图形支持:内置了必要的 OpenGL 库,解决了常见的 RViz 启动问题。
  • 开箱即用:拉取镜像,运行容器,即可开始你的 LeGO-LOAM 之旅。

🚀 快速开始

请按照以下步骤来运行 LeGO-LOAM。

1. 准备工作

在开始之前,请确保你的系统已满足以下要求:

  • 安装 Docker: 请参考 Docker 官方文档 安装 Docker Engine。
  • NVIDIA GPU 用户 (可选,但推荐): 如果你的电脑有 NVIDIA 显卡,请安装 NVIDIA Container Toolkit 以启用硬件加速。
  • 准备数据集:
  1. 创建一个文件夹来存放你的 .bag 数据文件。例如:
mkdir -p ~/loam_data
  1. 下载或将你的 .bag 文件放入这个文件夹。:
https://www.123912.com/s/kqwxjv-YqfD3?提取码:2j2y

2. 拉取 Docker 镜像

从 Docker Hub 拉取本项目的镜像:

docker pull zyhlearning/zyh_lego_loam_noetic

3. 运行 Docker 容器

这是最关键的一步。我们将启动一个配置好的容器,并将你的数据集和图形界面连接到容器中。

对于 Linux 用户

  1. 授权 X Server (允许容器显示图形界面):
xhost +local:docker
  1. 运行容器:
docker run -it --rm \
--name lego_loam_container \
-e DISPLAY=$DISPLAY \
-e QT_X11_NO_MITSHM=1 \
--device=/dev/dri \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/loam_data:/root/data \
zyhlearning/zyh_lego_loam_noetic

💡 命令解释:

  • --rm: 容器退出后自动删除,保持系统干净。如果想保留容器,请去掉此参数。
  • -e DISPLAY... & -v /tmp/...: 用于将容器的图形界面显示在你的宿主机屏幕上。
  • --device=/dev/dri: 将显卡设备映射给容器以启用硬件加速(推荐)。
  • -v ~/loam_data:/root/data: (重要!) 将你的数据文件夹挂载到容器的 /root/data 目录。请确保 ~/loam_data 是你存放 .bag 文件的真实路径

4. 在容器内运行 LeGO-LOAM

执行完上面的 docker run 命令后,你就进入了容器的终端。

  1. 启动 LeGO-LOAM:
    镜像已经配置好环境,直接运行即可:
roslaunch lego_loam run.launch

如果一切顺利,一个 RViz 窗口应该会弹出。

  1. 播放数据包 (Bag File):
  • 在你的宿主机新开一个终端
  • 使用 docker exec 进入同一个正在运行的容器:
docker exec -it lego_loam_container bash
  • 在这个新的终端里,播放你的 .bag 文件:
rosbag play /root/data/your_bag_file.bag --clock

注意: 请将 your_bag_file.bag 替换成你自己的文件名。--clock 参数是必须的!

现在,你可以在 RViz 窗口里看到 LeGO-LOAM 正在实时构建地图了!🎉

🤔 常见问题与排查 (FAQ)

  • Q: RViz 窗口没有弹出,或报错 cannot open display / GLXContext 错误。
  • A:
  1. 确认你在宿主机上运行了 xhost +local:docker
  2. 确认 docker run 命令包含了所有 -e DISPLAY-v /tmp/.X11-unix 参数。
  3. 如果你的系统没有 /dev/dri 设备(例如在虚拟机中),请去掉 --device=/dev/dri 参数,并尝试在 docker run 中添加 -e LIBGL_ALWAYS_SOFTWARE=1 来强制软件渲染。
  • Q: mapOptmization 或其他节点崩溃。

  • A: 这个镜像已经包含了所有已知的依赖。如果仍然崩溃,请检查你的 .bag 文件中的话题名称是否与 LeGO-LOAM/launch/run.launch 文件中订阅的话题名称一致。

  • Q: 如何停止并退出?

  • A: 在两个容器终端里分别按 Ctrl+C 停止 rosbagroslaunch。然后在其中一个终端里输入 exit 退出。如果你在 docker run 时使用了 --rm 参数,容器会自动被删除。


posted @ 2025-07-08 12:02  边走边唱如诗如理想  阅读(58)  评论(0)    收藏  举报