前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS2学习和使用SLAM算法(gmapping/cartographer/orb-slam等)

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

作者头像
zhangrelay
发布2019-10-22 15:57:31
5.5K0
发布2019-10-22 15:57:31
举报

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/ZhangRelay/article/details/102461200

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节点(单目):

代码语言:javascript
复制
$ ros2 run orbslam mono PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE

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

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

代码语言:javascript
复制
$ ros2 run image_tools cam2image -t camera

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

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

代码语言:javascript
复制
$ ros2 run orbslam rgbd PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE

Stereo节点(双目):

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

代码语言:javascript
复制
$ 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:

代码语言:javascript
复制
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

运行build_ros.sh脚本:

代码语言:javascript
复制
chmod +x build_ros.sh
./build_ros.sh

运行Monocular单目摄像头节点:

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

代码语言:javascript
复制
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

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

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

代码语言:javascript
复制
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示例),则该节点将在线引用图像,否则必须对图像进行预校正

代码语言:javascript
复制
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个选项卡,并在每个选项卡上运行以下命令:

代码语言:javascript
复制
roscore
代码语言:javascript
复制
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
代码语言:javascript
复制
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示例链接。

代码语言:javascript
复制
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

启动:

代码语言:javascript
复制
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

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


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用法(ROS2 Dashing)
  • 用法(ROS1 Melodic)
  • 编译mono, monoAR, stereo 和 RGB-D 节点:
  • 运行Monocular单目摄像头节点:
  • 运行Monocular单目摄像头增强现实演示
  • 运行Stereo双目摄像头节点
  • 运行RGB_D深度彩色摄像头节点
  • 1. gmapping:
  • 2. cartographer:
  • 3. littleslam:
  • 4. orb-slam2:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档