1.设备信息

jetson orin nano super 8g

2.容器创建和依赖下载

2.1 容器创建

注意:进入容器前,现在宿主机终端运行(每次重启jetson后,进入容器都要运行xhost +local:root)

xhost +local:root  # 允许root访问显示 

此外,我创建容器时,写了--device=/dev/video0,jetson要接个usb摄像头,不然进入容器时会报错,我没试过创建容器时,不输入这个--device=/dev/video0 ,对后续操作有没有影响,有时间的兄弟姐妹们可以尝试下。

sudo docker run -it --name yolo_orb_slam3 --runtime=nvidia --net=host -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/jetson/.Xauthority:/root/.Xauthority -e DISPLAY=:0 -e XAUTHORITY=/root/.Xauthority -e XDG_RUNTIME_DIR=/tmp/runtime-root -e QT_DEBUG_PLUGINS=1 -e QT_X11_NO_MITSHM=1 -e CUDA_HOME=/usr/local/cuda -e LD_LIBRARY_PATH=/usr/local/cuda/lib64 -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --device=/dev/video0 -v /home/jetson/ros2-slam-docker/ros2_ws:/app/project/ros2_ws -w /app/project/ros2_ws ubuntu:20.04 bash

其中 -v 参数将 Jetson 主机上的 /home/jetson/ros2-slam-docker/ros2_ws 目录(即您的 ROS 2 工作空间)实时映射到容器内部的 /app/project/ros2_ws 路径,实现两者文件的双向同步;同时,通过 -w 参数将容器内的工作目录直接设置为这个被映射的路径,使得您进入容器或执行任何命令时都会默认在此工作空间内进行操作(根据自己的路径设置)

2.2 依赖下载

apt update
apt upgrade -y
apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
apt install -y python3-dev python3-numpy python3-pip
apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
apt update
apt install -y g++ gcc
apt install unzip
apt install cmake

3 编译和安装各种库

3.1 安装编译Eigen3

apt install -y libeigen3-dev
验证安装
pkg-config --modversion eigen3
# 应该显示 3.3.9 或更高版本

安装基础编译工具和 OpenCV 依赖
apt update
apt install -y build-essential cmake git libgtk2.0-dev pkg-config
apt install -y libavcodec-dev libavformat-dev libswscale-dev
apt install -y python3-dev python3-numpy python3-pip
apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
apt install -y libv4l-dev liblapacke-dev libhdf5-dev libatlas-base-dev

3.2 源码编译pangolin0.5

# 安装依赖
apt install -y libgl1-mesa-dev libglew-dev libwayland-dev libxkbcommon-dev wayland-protocols
apt install -y ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
apt install -y libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev

# 下载并编译 Pangolin  
#这个tmp路径可以根据自己的路径修改 
cd /tmp
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout v0.5

mkdir build && cd build
cmake ..
make -j$(nproc)
make install

3.3 安装opencv

# 安装 OpenCV 开发包(C++)
apt install -y libopencv-dev
# 安装 Python OpenCV
apt install -y python3-opencv
# 安装额外的贡献模块(如果需要)
apt install -y libopencv-contrib-dev

3.4 安装boost开发包

apt update
apt install -y libboost-all-dev
# 或者单独安装需要的组件
apt install -y libboost-serialization-dev libboost-system-dev libboost-filesystem-dev

3.5 源码编译libtorch

注意:DCMAKE_INSTALL_PREFIX=/app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/libtorch  这个路径是自己设定的,你可以根据自己的路径修改。还有libtorch是在pytorch里,配置编译的时候我们只指定libtorch即可,按照我下面的即可(路径可自己修改)。

# 更新和安装依赖
apt update
apt install -y \
    build-essential \
    cmake \
    ninja-build \
    git \
    libopenblas-dev \
    libopenmpi-dev \
    openmpi-bin \
    openmpi-common \
    libomp-dev \
    ccache \
    libjpeg-dev \
    libpng-dev \
    python3-dev \
    python3-pip \
gfortran


# 克隆 PyTorch 仓库 
git clone https://github.com/pytorch/pytorch.git
cd pytorch
# 切换到特定版本
git checkout v1.7.1
# 下载所有依赖的子模块
git submodule update --init --recursivecd /app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/pytorch/build
cd /app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/pytorch

rm -rf build
mkdir build && cd build
# 这个路径会被自动创建 
cmake .. \
    -DUSE_CUDA=OFF \
    -DBUILD_SHARED_LIBS=ON \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/libtorch \
    -DPYTHON_EXECUTABLE=$(which python3) \
    -DBUILD_PYTHON=OFF \
    -DBUILD_TEST=OFF

make -j$(nproc)
make install  # 这会创建 /app/project/.../libtorch 目录并安装文件
#验证
ls -la /app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/libtorch/

3,6 源码编译RealSense2


# 安装图形相关的依赖
apt-get install -y \
    build-essential \
    cmake \
    pkg-config \
    libusb-1.0-0-dev \
    libgtk-3-dev \
    libglfw3-dev \
    libgl1-mesa-glx \
    libgles2-mesa-dev \
    libssl-dev \
    libudev-dev \
    libeigen3-dev \
    libxml2-dev \
    python3-dev \
    python3-pip \
    libv4l-dev \
    libusb-1.0-0 \
    libopencv-dev \
    libhidapi-dev \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libsdl2-dev
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense
mkdir build && cd build
cmake .. \
  -DFORCE_RSUSB_BACKEND=true \
  -DBUILD_PYTHON_BINDINGS=true \
  -DBUILD_EXAMPLES=true \
  -DBUILD_GRAPHICAL_EXAMPLES=true \
  -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
make install

3.7 源码编译libffi8

注意:libffi8_3.4.2-4_arm64.deb在文字最前面下载即可。

#先获得 libffi8_3.4.2-4_arm64.deb
#在容器内安装    进入libffi8_3.4.2-4_arm64.deb 所在目录
dpkg -i libffi8_3.4.2-4_arm64.deb
# 修复依赖
apt update
apt install -f
# 检查是否已安装 libffi8 包
dpkg -l | grep libffi8

4 YOLO_ORB_SLAM3编译

注意:要修改./build.sh 把TORCH_PATH="/app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/libtorch"加入,先git clone YOLO_ORB_SLAM3源码,在修改./build.sh

这是我改后的./build.sh

echo "Configuring and building Thirdparty/DBoW2 ..."

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

cd ../../g2o

echo "Configuring and building Thirdparty/g2o ..."

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

cd ../../Sophus

echo "Configuring and building Thirdparty/Sophus ..."

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

cd ../../../

echo "Uncompress vocabulary ..."

cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..

echo "Configuring and building YOLO_ORB_SLAM3 ..."

# 设置 Torch 路径
TORCH_PATH="/app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/libtorch"

echo "Using Torch path: $TORCH_PATH"

mkdir build
cd build
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DTorch_DIR=$TORCH_PATH/share/cmake/Torch \
    -DCaffe2_DIR=$TORCH_PATH/share/cmake/Caffe2

make rgbd_tum -j4
git clone  https://github.com/YWL0720/YOLO_ORB_SLAM3.git
cd YOLO_ORB_SLAM3
chmod +x build.sh
#修改build.sh  添加这个torch 可以参考我提供的./build.sh
# 设置 Torch 路径
#TORCH_PATH="/app/project/ros2_ws/zon_ORBSLAM/ORB_SLAM3_zong/YOLO_ORB_SLAM3/libtorch"

#echo "Using Torch path: $TORCH_PATH"


./build.sh

5数据集下载

euroc数据集:

https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads

rgbd数据集:

https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download

6运行

6.1 运行指令

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ./dataset/rgbd/rgbd_dataset_freiburg1_room ./Examples/RGB-D/associations/fr1_room.txt

6.2 运行结果

 版权声明: 辛苦码字不易,转载请注明原文出处和作者信息,谢谢理解

欢迎分享与交流,但拒绝任何形式的商业转载或洗稿。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐