专栏首页机器人课程与技术ROS2学习和使用SLAM算法(gmapping/cartographer/orb-slam等)

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

版权声明:本文为博主原创文章,遵循 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节点(单目):

$ 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

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


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Ubuntu 18.04安装搜狗输入法笔记

    直接下载deb安装包即可。目前版本为sogoupinyin_2.2.0.0108_amd64.deb。

    zhangrelay
  • ROS(indigo)使用Qt Creator Plug in即ros_qtc_plugin

    http://blog.csdn.net/zhangrelay/article/details/52214411

    zhangrelay
  • 机器人程序设计课程配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )

    本镜像主要针对机器人程序设计本科课程,供学生课程学习与实践操作使用,基于ROS爱好者和学生使用的反馈意见对之前发布的版本进行修正和补充,在此致谢。更新日期为:2...

    zhangrelay
  • SDN曝安全漏洞 利用流表展开KYE攻击

    软件定义网络(SDN)控制器通过向交换机中添加新的流规则来响应网络状况,而意大利的研究人员表示将会造成意想不到的安全问题。 ? 该研究人员表示SDN环境可能造成...

    SDNLAB
  • MySQL之MVCC初探(1)

    昨天的文章中,我们说了MVCC的基本概念,然后讲了记录额外的两个字段,今天我们通过例子来说明一下MVCC在实际应用中的表现。我们首先创建一张表,然后插入一条...

    AsiaYe
  • 长尾效应

    长尾效应,英文名称Long Tail Effect。“头”(head)和“尾”(tail)是两个统计学名词。 正态曲线中间的突起部分叫“头”;两边相对平缓的部分...

    liulun
  • 在线学习方法概述

    推荐系统算法常常用到逻辑回归算法,而传统的批量学习算法如 SGD 无法应对大规模、高维的数据集和实时数据流。为了解决这个问题,在线最优化算法如 TG [1]、F...

    刘笑江
  • SAP Spartacus OccCmsComponentAdapter的findComponentsByIds方法

    Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

    Jerry Wang
  • 【眼见为实】自己动手实践理解 READ COMMITTED && MVCC

    【眼见为实】自己动手实践理解READ UNCOMMITED && SERIALIZABLE

    撸码那些事
  • 关于敏捷开发的26个心得

      我收集各式各样的至理名言。最近我一直在研究敏捷软件开发;有收获吗?下面就是能够指导敏捷软件开发团队的26条核心原则。 用例一完全能够运行后再开发用例二。厨...

    用户1289394

扫码关注云+社区

领取腾讯云代金券