视觉SLAM算法
功能介绍
SLAM指定位与地图构建(Simultaneous Localization and Mapping,简称SLAM),ORB-SLAM3是其中研究较多的算法之一。TogetheROS.Bot为了方便开发者开发基于视觉SLAM的应用,集成、改进和优化了ORB-SLAM3。
- 集成和适配SuperPoint特征提取模型以优化视觉SLAM前端图像特征提取的鲁棒性,并降低CPU的运行负载。 并经过D-Robotics浮点模型转换工具转换成RDK可运行的定点模型,以降低RDK的CPU运行负载。
- 使用ROS2封装了ORB-SLAM3的点云和位姿信息发布以及图像和IMU的订阅。
- 增加了Track异步接口,分离特征提取和特征点跟踪为不同的线程,提高了处理帧率,有利于实际的工程应用。
- 新增词袋库创建程序,帮助开发者构建自己的词袋库。
本章节以ORB-SLAM3作为建图算法,使用EuRoC开源数据集以及RealSense D435i相机作为测试数据来源。
代码仓库:
(https://github.com/D-Robotics/orb_slam3)
应用场景: 视觉SLAM算法能够在计算自身位置和姿态的同时计算出环境的三维结构,可实现即时定位以及构建地图的功能,主要应用于自动驾驶、智能家居、三维重建等领域。
SLAM建图案例:4.1 SLAM建图
支持平台
平台 | 运行方式 |
---|---|
RDK X3, RDK X3 Module | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) |
RDK X5 | Ubuntu 22.04 (Humble) |
RDK Ultra | Ubuntu 20.04 (Foxy) |
注意:SuperPoint优化只支持RDK X3, RDK X3 Module, RDK X5平台。
准备工作
-
RDK已烧录好Ubuntu 20.04/Ubuntu 22.04系统镜像。
-
RDK已成功安装tros.bot。
-
RDK已成功安装ORB-SLAM3算法包,安装命令:
- Foxy
- Humble
sudo apt update
sudo apt install tros-orb-slam3 tros-orb-slam3-example-ros2sudo apt update
sudo apt install tros-humble-orb-slam3 tros-humble-orb-slam3-example-ros2 -
RDK已安装RealSense D435i相机。
-
开源数据集EuRoC。
-
和RDK在同一网段的PC,PC已安装Ubuntu 20.04 & ROS2 Foxy桌面版/Ubuntu 22.04 & ROS2 Humble桌面版,数据可视化工具Rviz2。
使用介绍
ORB-SLAM3项目本身集成了多种类型的测试程序,比如单/双目以及单/双目+IMU等,其中也针对不同的评测数据集和传感器做了分类。 第一小节介绍如何使用开源数据集测试SLAM程序,第二小节介绍如何使用RealSense相机测试SLAM程序。
使用EuRoC数据集
数据集地址: http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/vicon_room2/V2_01_easy/V2_01_easy.zip
,数据集下载好后,
进入ORB-SLAM3项目目录。解压数据集和词袋库到本地,并运行测试程序,如果想要的到更高的处理帧率,可以超频RDK的CPU,但同时会带来功耗的提升。
运行命令:
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
# 配置tros.b环境
# X3 CPU超频至1.5GHz
sudo bash -c 'echo 1 > /sys/devices/system/cpu/cpufreq/boost'
# 使能X3 CPU性能模式
sudo bash -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor'
# 进入ORB_SLAM3项目目录
cd /opt/tros/${TROS_DISTRO}/share/orb_slam3
# 解压数据集,V2_01_easy.zip数据集需自行下载!
unzip V2_01_easy.zip -d V2_01_easy
# 解压词袋库
tar -xvf ./Vocabulary/ORBvoc.txt.tar.gz
# 增加程序可执行权限
sudo chmod +x ./Examples/Monocular/mono_euroc
# 运行程序,其中 V2_01_easy目录是网络上下载来的EuRoC开源数据集目录,开发者需自行下载!
./Examples/Monocular/mono_euroc ./ORBvoc_refine.txt ./Examples/Monocular/EuRoC.yaml ./V2_01_easy/ ./Examples/Monocular/EuRoC_TimeStamps/V201.txt
程序运行后需要一段时间加载词袋库,等待片刻后程序会打印出当前处理的帧率。