地瓜机器人凭借其强大的异构计算能力(CPU+GPU+NPU),非常适合运行实时视觉SLAM(同步定位与地图构建算法)。ROS2作为新一代机器人中间件,提供了模块化的通信机制和丰富的;工具链。本文将介绍如何在地瓜机器人上搭建ROS2环境,并运行经典的ORB-SLAM3算法,实现单目视觉SLAM。
一、为什么选择ROS2和视觉SLAM?
ROS2相比ROS1具有更好的实时性、跨平台支持和安全性,是未来机器人开发的主流框架。视觉SLAM仅需摄像头即可实现定位与建图,成本低且适用场景广泛,地瓜机器人自带的NPU可以加速特征提取等计算密集型任务,而CPU和GPU则负责后端优化和可视化,形成完整的SLAM系统。
二、硬件准备
地瓜机器人开发板、已经烧录系统镜像(推荐Ubuntu 20.04 for DIGUA)
USB摄像头或者MIPI摄像头模块
显示器、键盘、鼠标(或者通过远程SSH连接)
可选:移动底盘用于实时测试
三、ROS2环境搭建
地瓜官方系统通常预装了基础工具,但ROS2需要手动安装。我们选择ROS2 Foxy版本(与Ubuntu 20.04兼容)
1.设置软件源
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main” | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
2.安装ROS2基础包
sudo apt install ros-foxy-desktop python3-argcomplete
安装完成后,添加环境变量:
echo “source /opt/ros/foxy/setup.bash” >> ~/.bashrc
source ~/.bashrc
3.安装依赖工具
sudo apt install python3-pip
pip3 install colcon-common-extensions
四、编译ORB-SLAM3 ROS2版本
ORB-SLAM3是当前最先进的视觉SLAM算法之一,支持单目、双目和RGB-D相机。我们需要从源码编译适用于ROS2的版本。
1.创建工作空间
mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
2.克隆ORB-SLAM3源码及依赖
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git # 原始版本(需要适配ROS2)
git clone https://github.com/ros-perception/vision_opencv.git -b foxy # OpenCV桥接
实际上,原始ORB-SLAM3不直接支持ROS2,我们可以使用社区已适配的ROS2分支。例如:
git clone https://github.com/ros2-gbp/orb_slam3_ros.git -b foxy-devel
注意:实际使用请检查可用性,本文以示意为主,确保逻辑正确。
3.安装依赖库
sudo apt install libopencv-dev libeigen3-dev libboost-all-dev libssl-dev
4.编译
cd ~/ros2_ws
colcon build --symlink-install
编译过程中如果遇到缺少Pangolin(用于可视化),需单独安装:
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
make -j4
sudo make install
五、运行单目SLAM示例
1.准备相机标定文件
ORB-SLAM3需要相机内参。可以使用ROS的camera_calibration工具标定USB摄像头,生成YAML文件。例如标定结果保存为my_camera.yaml。
2.启动摄像头节点
ros2 run usb_cam usb_cam_node_exe --ros-args -p video_device:=/dev/video0
(如果未安装usb_cam,可先安装:sudo apt install ros-foxy-usb-cam)
3.运行ORB-SLAM3节点
在另一个终端中:
ros2 run orb_slam3_ros mono ~/ros2_ws/src/orb_slam3_ros/Vocabulary/ORBvoc.txt ~/ros2_ws/src/orb_slam3_ros/config/my_camera.yaml
其中mono表示单目模式,词汇文件可从ORB-SLAM3源码中获取。
4.查看建图结果
如果编译时启用了Pangolin,会弹出实时窗口显示特征点云和相机轨迹。也可以使用Rviz2订阅SLAM发布的位姿话题:
ros2 run rviz2 rviz2
添加/tf和/map话题即可看到地图构建过程。
六、性能分析与优化
在地瓜机器人上运行SLAM时,CPU占用率可能较高。可以利用地瓜的NPU加速特征提取,例如使用基于深度学习的关键点检测替换ORB。
七、总结
本文详细介绍了在地瓜机器人上搭建ROS2环境并运行ORB-SLAM3的过程。通过该实践,你可以掌握机器人操作系统与视觉SLAM的集成方法,为进一步开发自主导航机器人打下基础。地瓜机器人的高性能异构计算能力使其成为运行此类算法的理想平台,未来还可以结合地瓜的NPU进行算法加速,实现更高效的实时SLAM系统。