目录
(2)实时摄像头测试(单目,双目和RGB-D相机,笔记本电脑摄像头)
一、简介
ORB-SLAM3是一种基于视觉传感器的实时单目、双目和RGB-D SLAM系统。
SLAM代表同时定位与地图构建,是指在未知环境下通过机器人上搭载的传感器获取数据并运用算法进行实时处理,从而在机器人运动中同时完成对机器人自身姿态的估计和构建三维环境地图。
ORB-SLAM3是由英国伯明翰大学开发的,是ORB-SLAM2的改进版本,加入了语义信息处理,能够更加准确地估计相机的位置和方向,并且可以识别场景中的物体和结构,实现更加智能化的SLAM过程。
官方源码说明:https://github.com/UZ-SLAMLab/ORB_SLAM3?tab=readme-ov-file
二、安装
1、下载容器 (ros基础镜像)
因为后续开发大概需要用到ros,因此直接基于ros的基础镜像去构建:
docker pull osrf/ros:melodic-desktop-full
如果拉取不了docker hub上的这个容器,说明网络不通
可以修改docker配置文件,启用某个镜像加速 ,修改 /etc/docker/daemon.json如下:
{
"registry-mirrors": [
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
然后再重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
再次拉取镜像:
docker pull osrf/ros:melodic-desktop-full
2、启动容器
#让Docker容器内部能够运行可视化图像界面(显示到本地显示器)
xhost +
#创建并启动容器
docker run -it --net=host --privileged=true \
-e DISPLAY=":0" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /dev/:/dev/ \
-v /home/zyh/:/home/ \
--name=test_orb \
osrf/ros:melodic-desktop-full /bin/bash
#进入容器
docker exec -it test_orb /bin/bash
说明:
-v /home/zyh/:/home/ 表示建立主机和容器内的共享目录,根据实际修改你想要的共享目录
3、在容器内安装依赖
尽量不要漏掉,因为后续编译或开发,可能需要用到
apt-get update
apt-get install git cmake wget vim build-essential libglew-dev libgtk2.0-dev
apt-get install libgoogle-glog-dev libgflags-dev libatlas-base-dev liblapack-dev libsuitesparse-dev
apt-get install libwayland-dev libxkbcommon-dev wayland-protocols libeigen3-dev
apt-get install libepoxy-dev libpthread-stubs0-dev
apt-get install libudev-dev pkg-config libgtk-3-dev
apt-get install software-properties-common
apt-get install ffmpeg
apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
apt-get install libboost-serialization-dev
#选装realsense2 (用于后续支持realsense相机)
apt-get install ros-melodic-realsense2-*
#ros相关,摄像头驱动
apt-get install ros-melodic-usb-cam
4、安装 Pangolin 作为可视化和用户界面
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin && mkdir build && cd build
cmake ..
make -j4
make install
ldconfig
- 安装 opencv3.2.0或4.4.0 (容器中已有opencv3.2.0,无需安装)
- 安装 Eigen3 一个开源线性库,可进行矩阵运算,前面已安装过
apt-get install libeigen3-dev
- 安装 DBoW2 and g2o (ORB_SLAM3文件中自带,不用下载安装)
5、下载编译ORB-SLAM3代码
- 下载:
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
- 修改CMakeLists.txt的opencv版本,并Eigen3的版本号去掉
#find_package(OpenCV 4.4)
find_package(OpenCV 3.2)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 3.2 not found.")
endif()
MESSAGE("OPENCV VERSION:")
MESSAGE(${OpenCV_VERSION})
#find_package(Eigen3 3.1.0 REQUIRED)
find_package(Eigen3 REQUIRED)
- 修改Examples/Monocular/mono_euroc.cc,第83行将 false 改为 true,表示开启可视化界面
// ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, false);
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);
- 编译(此处最好是先cat查看脚本)
chmod +x build.sh && ./build.sh
6、Examples、Examples_old 测试数据集
(1)官方离线数据集测试(单目、双目相机视频数据集)
#下载单目相机数据集:
wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.zip
#创建一个dataset文件夹用于存储数据集:
mkdir dataset
#解压下载的数据集,放到dataset目录下:
mkdir dataset/MH01
unzip MH_01_easy.zip
mv mav0 dataset/MH01/
#将/home/dataset/MH01改成你的数据集文件夹的地址,
#运行之后,会在当前目录下生成两个.txt结果文件
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml /home/dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
(2)实时摄像头测试(单目,双目和RGB-D相机,笔记本电脑摄像头)
参考:ORB-SLAM3 安装运行_ros运行orb-slam3-CSDN博客