使用Docker简单快速跑通YOLO_ORB_SLAM3_with_pointcloud_map并保存彩色点云图

该文章已生成可运行项目,
部署运行你感兴趣的模型镜像

1 环境

1.1 宿主机

  1. WIN11
  2. Docker Desktop
  3. WSL
  4. Ubuntu 24.04 For WSL
  5. nvidia/cuda:11.6.1-devel-ubuntu20.04镜像

1.2 容器

  1. Ubuntu 20.04
  2. OpenCV 4.2
  3. VTK
  4. PCL
  5. Pangolin
  6. Eigen
  7. ROS

首先需要有Docker环境,以及配置WSL 2来操作Docker,然后下载Docker镜像,就可以开始操作。相比VMWare虚拟机或双系统,整个过程非常简单和快速,下面是具体的操作步骤。希望对你有点帮助,和节省一点宝贵的时间精力----天朝的牛马真的太累太苦了,尤其是外包牛马!

2 启动容器

打开WSL,执行以下操作

sudo apt install x11-xserver-utils
xhost +local:root

docker run -d \
      -v /tmp/.X11-unix:/tmp/.X11-unix \
      -v /mnt/d/docker-ws/shared/:/shared \
      --gpus all \
      -e DISPLAY=$DISPLAY \
      -e QT_X11_NO_MITSHM=1 \
      --ipc=host \
      --name ub20-cuda-yolo-slam3 \
      nvidia/cuda:11.6.1-devel-ubuntu20.04  \
      tail -f /dev/null

注意

  1. 第一次会下载nvidia/cuda:11.6.1-devel-ubuntu20.04镜像,你也可以先使用docker pull nvidia/cuda:11.6.1-devel-ubuntu20.04进行下载
  2. 如果你没有GPU环境,--gpus all可能会报错,直接去掉
  3. 建议在宿主机先创建一个共享文件夹,之后就可以将下载代码和数据集放到共享文件夹中,方便之后使用:-v /mnt/d/docker-ws/shared/:/shared

3 进入容器

docker exec -it ub20-cuda-yolo-slam3 /bin/bash

4 安装基础软件

# 备份
cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 换源
sed -i 's|http://.*archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sed -i 's|http://.*security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list

# 更新软件列表
apt update

# 安装基础软件
apt install -y vim wget git cmake pkg-config build-essential unzip sudo

5 安装VTK和PCL

5.1 安装

apt install libpcl-dev pcl-tools -y

5.2 查看版本

dpkg -s libeigen3-dev | grep Version

Version: 3.3.7-2

dpkg -s vtk7 | grep Version

Version: 7.1.1+dfsg2-2ubuntu1

dpkg -s libpcl-dev | grep Version

Version: 1.10.0+dfsg-5ubuntu1

6 安装Noetic ROS桌面版

wget http://fishros.com/install -O fishros && . fishros

使用小鱼大牛的一键安装ROS,按照提示,分别选择以下这5项:

  1. [1]:一键安装(推荐):ROS(支持ROS/ROS2,树莓派Jetson)
  2. [1]:更换系统源再继续安装
  3. [2]:更换系统源并清理第三方源
  4. [3]:noetic(ROS1)
  5. [1]:noetic(ROS1)桌面版

安装成功后,再执行以下操作:

sudo rosdep init
rosdep update

ROS在安装时,也会安装OpenCV 4.2,查看它版本

opencv_version

4.2.0

7 安装Pangolin v0.6

# 安装依赖
sudo apt-get install \
    libgl1-mesa-dev \
    libglew-dev \
    libboost-dev \
    libboost-thread-dev \
    libboost-filesystem-dev -y

git clone https://github.com/stevenlovegrove/Pangolin.git

cd Pangolin/
git checkout v0.6  # 切换到v0.6版本
git branch

mkdir build
cd build/
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j
make install

cd examples/HelloPangolin
./HelloPangolin

在这里插入图片描述

8 编译YOLO_ORB_SLAM3_with_pointcloud_map

git clone https://github.com/YWL0720/YOLO_ORB_SLAM3_with_pointcloud_map.git

# 下载libtorch
wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.7.1%2Bcpu.zip

unzip libtorch-cxx11-abi-shared-with-deps-1.7.1+cpu.zip
mv libtorch YOLO_ORB_SLAM3_with_pointcloud_map/Thirdparty/
cd YOLO_ORB_SLAM3_with_pointcloud_map/

sed -i 's/-march=native//g' CMakeLists.txt 
sed -i 's/-march=native//g' Thirdparty/DBoW2/CMakeLists.txt 
sed -i 's/-march=native//g' Thirdparty/g2o/CMakeLists.txt 
sed -i '1 a\add_definitions(-w)' CMakeLists.txt 
sed -i '1 a\add_definitions(-w)' Thirdparty/DBoW2/CMakeLists.txt 
sed -i '1 a\add_definitions(-w)' Thirdparty/g2o/CMakeLists.txt
# 编译
bash build.sh
# 编译成功后,执行后报错,修改libgomp.so
ln -sf /usr/lib/x86_64-linux-gnu/libgomp.so.1 Thirdparty/libtorch/lib/libgomp-75eea7e8.so.1

9 下载关联python脚本

9.1 下载

wget https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools/associate.py

9.2 修改associate.py脚本

# 将86和87行修改
  86     # first_keys = first_list.keys()
  87     # second_keys = second_list.keys()
  88     first_keys = list(first_list.keys())
  89     second_keys = list(second_list.keys())

9.3 生成RGB和Depth的关联文件

cd <TUM数据集文件夹中>

# 注意associate.py的路径
python3 ../associate.py rgb.txt depth.txt > ass.txt

10 跑TUM数据集

  Examples/RGB-D/rgbd_tum \
      Vocabulary/ORBvoc.txt \
      Examples/RGB-D/TUM3.yaml \
      ~/ws/rgbd_dataset_freiburg3_walking_xyz \
      ~/ws/rgbd_dataset_freiburg3_walking_xyz/ass.txt

11 保存彩色点云图

因为程序跑到最后会报Segmentation fault (core dumped) ,我也不懂是什么原因

median tracking time: 0.0719869
mean tracking time: 0.0730376
Saving camera trajectory to CameraTrajectory.txt …
Saving keyframe trajectory to KeyFrameTrajectory.txt …
Segmentation fault (core dumped)

所以也不知道正常情况会不会有彩色点云图的保存,但可以通过修改以下代码,增加保存彩色点云图:

vim src/PointCloudMapper.cpp

  1 //
  2 // Created by yuwenlu on 2022/7/2.
  3 //
  4 #include <pcl/io/pcd_io.h>  // 增加
  5 #include "PointCloudMapper.h"

 84             *mpGlobalMap += *pointCloud_new;
 85             pcl::io::savePCDFileBinary("vslam.pcd", *mpGlobalMap); // 增加
 86             PointCloud::Ptr temp(new PointCloud);

重新编译,运行
在这里插入图片描述在这里插入图片描述

12 参考

感谢这篇博文https://blog.youkuaiyun.com/qq_57425280/article/details/140227237的博主。

本文章已经生成可运行项目

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值