在docker中运行SLAM十四讲程序

《十四讲》的示例程序依赖比较多,而且系统有点旧。可以在容器中运行。

拉取镜像

bash 复制代码
docker pull ddhogan/slambook:v0.1

这个docker对应的github:HomeLH/slambook2-docker

拉下来之后,假如是Windows系统,需要使用XLaunch用于提供X11图形化显示服务器。在创建容器时,运行

bash 复制代码
docker run -it --net=host \
-e DISPLAY=$DISPLAY \
-v $HOME/.Xauthority:/root/.Xauthority \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--name slamtest ddhogan/slambook:v0.1

解释如下:

  • wsl宿主机上运行 xhost + 命令来允许对X Server的访问。
  • 使用 --net=host 参数可以让Docker容器直接连接到主机上的X11服务,无需通过SSH。
  • 用 -v 参数将wsl宿主机的 /tmp/.X11-unix 目录挂载到容器内的相同路径。(按作者所说,仅仅挂载.Xauthority,我这是显示不出的,最后只能删掉container)
  • -e 参数设置容器的 DISPLAY 环境变量,使其与wsl所使用的 DISPLAY 环境变量一致。

按照作者所说这样就行了。但我测试窗口显示时,直接X11转发就会遇到问题。测试xterm报错:

bash 复制代码
docker exec -it -u msy -e DISPLAY=127.0.0.1:0 slamtest bash
msy@docker-desktop:/opt/slambook$ xterm
xterm: Xt error: Can't open display: 127.0.0.1:0

我查看了wsl中的DISPLAY

bash 复制代码
echo $DISPLAY

输出是127.0.0.1:0,也就是localhost。为什么docker中使用就不对了。

问题是这样解决的:

考虑到实际是通过X11转发将容器内的图形输出到Windows主机上的X服务器。在Windows PowerShell中查看Win11的IPv4地址:192.168.xxx.xxx

重新启动docker

bash 复制代码
docker exec -it -e DISPLAY=192.168.xxx.xxx:0 slamtest bash
  • -e 参数设置容器的 DISPLAY 环境变量,使其与win11的XLaunch所提供的DISPLAY服务的ip地址一致。

后来我发现不用XLaunch也行。

另一种方法,直接在MobaXterm中启动,它附带了可视化功能:

如果安装了MobaXterm就可以直接在它的命令行,把DISPLAY给出的ip地址作为docker的执行参数,从而直接显示可视化窗口。

最后测试ch3的轨迹可视化,可行:

相关推荐
Ryan老房4 小时前
智能家居AI-家庭场景物体识别标注实战
人工智能·yolo·目标检测·计算机视觉·ai·智能家居
xrgs_shz4 小时前
什么是LLM、VLM、MLLM、LMM?它们之间有什么关联?
人工智能·计算机视觉
CoovallyAIHub4 小时前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
晚霞的不甘4 小时前
Flutter for OpenHarmony实现 RSA 加密:从数学原理到可视化演示
人工智能·flutter·计算机视觉·开源·视觉检测
图学习小组4 小时前
Degradation-Aware Feature Perturbation for All-in-One Image Restoration
人工智能·深度学习·计算机视觉
CoovallyAIHub4 小时前
AAAI 2026这篇杰出论文说了什么?用LLM给CLIP换了个“聪明大脑”
深度学习·算法·计算机视觉
硅谷秋水5 小时前
REALM:用于机器人操作泛化能力的真实-仿真验证基准测试
人工智能·机器学习·计算机视觉·语言模型·机器人
Pyeako5 小时前
opencv计算机视觉--LBPH&EigenFace&FisherFace人脸识别
人工智能·python·opencv·计算机视觉·lbph·eigenface·fisherface
工程师老罗5 小时前
举例说明YOLOv1 输出坐标到原图像素的映射关系
人工智能·yolo·计算机视觉
格林威5 小时前
Baumer相机水果表皮瘀伤识别:实现无损品质分级的 7 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·opencv·计算机视觉·视觉检测·工业相机·sdk开发·堡盟相机