ROS2学习和使用SLAM算法(gmapping/cartographer/orb-slam等)

 

ROS2经过6年的快速发展,在充分优化和大幅改进ROS1的基础上(点击了解2014年ROS2规划),功能已经非常完善了。

orb-slam2

目前(2019年10月9日)官方功能包已达687。

ros-dashing功能包

直接支持的SLAM包,有cartographer,案例turtlebot,使用说明也非常丰富,网上资料详细。

ros2-cartographer

这里以orb-slam2在Ubuntu18.04配置为例简要说明一下,如果有ros1基础学习ros2非常快,没有ros1基础,推荐直接学习ros2~

在链接: https://github.com/raulmur/ORB_SLAM2 

下载并编译orb_slam2源码,需要中文可以查阅:Ubuntu 18.04安装ROS Melodic与ORB-SLAM2

这里,一般会有一些bug需要修正,否则功能包无法使用!

需要在system.h文件中,添加#include <unistd.h>。

需要在ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeList.txt添加-lboost_system。

有硬件直接上,没有可以选择仿真,或者使用bag包简单查看一下安装是否完成。

rosbag下载地址:

  1. https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
  2. http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/

依据需要下载,这里使用的V2_03_difficult.bag。

如果想详细学习移动机器人,推荐ETH自动系统实验室的课程:

Autonomous Mobile Robots - Spring 2019

今年新鲜出炉,热气腾腾~~~~

中文带注释版本的orb-slam2链接(泡泡机器人出品):https://github.com/PaoPaoRobot/ORB_SLAM2

使用colcon build成功编译后,运行ros2 run如下:

ros2 orb-slam2 节点

用法(ROS2 Dashing)

运行单目monocular SLAM节点(单目):

$ ros2 run orbslam mono PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE

该节点订阅ROS2的camera主题,并等待Image消息。

例如,您可以使用以下方法从笔记本电脑网络摄像头流式传输帧:

$ ros2 run image_tools cam2image -t camera

RGBD节点(彩色RGB+深度D):

可以使用以下命令运行该rgbd节点

$ ros2 run orbslam rgbd PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE

Stereo节点(双目):

可以使用以下命令运行该stereo节点

$ ros2 run orbslam stereo PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE BOOL_RECTIFY

用法(ROS1 Melodic)

编译mono, monoAR, stereo 和 RGB-D 节点:

将包括Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件,并在末尾添加以下行。用下载的ORB_SLAM2文件夹路径替换PATH:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

运行build_ros.sh脚本:

chmod +x build_ros.sh
./build_ros.sh

运行Monocular单目摄像头节点:

运行节点ORB_SLAM2/Mono启动主题/camera/image_raw的单目输入节点。需要提供词汇表(vocabulary)文件和设置(settings)文件的路径。具体参考文末提供的资料链接。

rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

运行Monocular单目摄像头增强现实演示

这是增强现实的演示,可以在其中使用界面在场景的平面区域中插入虚拟立方体。节点从主题/camera/image_raw读取图像。

rosrun ORB_SLAM2 MonoAR PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

运行Stereo双目摄像头节点

For a stereo input from topic /camera/left/image_raw and /camera/right/image_raw run node ORB_SLAM2/Stereo. You will need to provide the vocabulary file and a settings file. If you provide rectification matrices (see Examples/Stereo/EuRoC.yaml example), the node will recitify the images online, otherwise images must be pre-rectified.

运行节点ORB_SLAM2/Stereo启动双目输入主题/camera/left/image_raw(左)/camera/right/image_raw(右)。需要提供词汇表文件和设置文件。如果提供校正矩阵(请参阅示例/Stereo/EuRoC.yaml示例),则该节点将在线引用图像,否则必须对图像进行预校正

rosrun ORB_SLAM2 Stereo PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION

示例:从EuRoC数据集(http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets)下载一个rosbag(例如V1_01_easy.bag )。在终端上打开3个选项卡,并在每个选项卡上运行以下命令:

roscore
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

一旦ORB-SLAM2加载了词汇表,请在rosbag选项卡中按空格。请享用!。注意:需要一台功能强大的计算机来运行此数据集。

运行RGB_D深度彩色摄像头节点

For an RGB-D input from topics /camera/rgb/image_raw and /camera/depth_registered/image_raw, run node ORB_SLAM2/RGBD. You will need to provide the vocabulary file and a settings file. See the RGB-D example above.

运行节点ORB_SLAM2/RGBD订阅主题/camera/rgb/image_raw(彩色)/camera/depth_registered/image_raw (深度)。需要提供词汇表文件和设置文件。请参阅文末的RGB-D示例链接。

rosrun ORB_SLAM2 RGBD PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

部分截图如下:

orb slam2 ros(1)

 

orb slam2 ros(2)

 

orb slam2 ros(3)

一些使用广泛的ROS1SLAM包的ROS2版本:

1. gmapping:

源码链接:https://github.com/Project-MANAS/slam_gmapping

启动:

ros2 launch slam_gmapping slam_gmapping.launch.py

2. cartographer:

源码链接:https://github.com/ros2/cartographer_ros

3. littleslam:

源码链接:https://github.com/rsasaki0109/littleslam_ros2

4. orb-slam2:

源码链接:https://github.com/alsora/ros2-ORB_SLAM2

更多内容,依据反馈后补充,非常感谢~


 

 

### 回答1: SLAM (Simultaneous Localization and Mapping) 是指在不依赖外部定位设备的情况下,同时完成自主机器人的定位环境地图的构建的一种技术。ROS2 是一种流行的机器人操作系统,提供了丰富的 SLAM 算法工具库,以下是一些基于 ROS2 的常见 SLAM 算法: 1. Cartographer:Google 推出的一种实时 2D/3D SLAM 算法,可用于车辆、机器人无人机等平台。 2. Gmapping:一种基于激光雷达的 SLAM 算法,通过对激光雷达数据进行建图定位实现自主机器人的导航。 3. Hector SLAM:一种使用单个 2D 激光雷达进行建图定位的SLAM 算法,特别适用于室内环境。 4. ORB-SLAM2:一种基于单目/双目/RGB-D 摄像头的 SLAM 算法,可用于室内室外环境。 5. LOAM:一种使用激光雷达的实时 SLAM 算法,能够快速生成高精度的 3D 点云地图。 这些 SLAM 算法都有各自的优缺点,开发者需要根据具体应用场景选择适合的算法。 ### 回答2: 在基于ROS2开发的SLAM算法中,有以下几种常见的算法: 1. 松耦合SLAM(LSD-SLAM):LSD-SLAM是一种基于视觉的SLAM算法,通过单目相机实时建模定位。它能够实时地跟踪摄像机的运动,同时构建并维护一个地图模型。 2. 视觉惯性里程计(VINS-Mono):VINS-Mono是一种基于单目相机惯性测量单元(IMU)的SLAM算法。它通过融合相机IMU的数据,实现高精度的相机位姿估计地图构建。 3. 激光SLAMCartographer):Cartographer是一种基于激光雷达的SLAM算法。它能够通过激光雷达扫描地图环境,实时定位并构建二维或三维的地图模型。 4. 深度学习SLAM(DeepTAM):DeepTAM是一种基于深度学习SLAM算法。它利用深度神经网络从图像中预测相机的位姿地图的结构,实现实时的SLAM定位地图构建。 这些基于ROS2开发的SLAM算法都具有不同的特点适用场景。用户可以根据实际需求选择合适的算法进行开发应用。 ### 回答3: 在基于ROS 2开发的SLAM算法中,有几种常见的算法: 1. 点云SLAM算法:这种算法通过使用传感器产生的点云数据来进行环境建模定位。常见的点云SLAM算法包括LOAM(Lidar Odometry and Mapping)LeGO-LOAM(Lightweight and Ground-Optimized Lidar Odometry and Mapping)。 2. 视觉SLAM算法:这种算法使用摄像头捕捉的图像进行环境建模定位。常见的视觉SLAM算法包括ORB-SLAM2(Oriented FAST and Rotated BRIEF-Simultaneous Localization and Mapping)LSD-SLAM(Large-Scale Direct Monocular SLAM)。 3. 深度学习SLAM算法:这种算法结合了深度学习技术SLAM算法使用传感器数据进行场景理解,并实现环境建模定位。常见的深度学习SLAM算法包括DeepSLAM、DynaSLAMDepth-VO-Feat。 在开发基于ROS 2SLAM算法时,可以使用ROS 2提供的功能来处理消息传递节点通信,同时可以通过ROS 2的Package库来实现算法的开发集成。此外,ROS 2的分布式架构也提供了更好的可扩展性灵活性,使得SLAM算法在多机器人系统中更容易部署运行。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值