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

举报
zhangrelay 发表于 2021/07/15 02:34:25 2021/07/15
【摘要】   ROS2经过6年的快速发展,在充分优化和大幅改进ROS1的基础上(点击了解2014年ROS2规划),功能已经非常完善了。 orb-slam2 目前(2019年10月9日)官方功能包已达687。 ros-dashing功能包 直接支持的SLAM包,有cartographer,案例turtlebot,使用说明也非常丰富,...

 

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

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

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


这里以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 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脚本:


  
  1. chmod +x build_ros.sh
  2. ./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
 

部分截图如下:

 

 


一些使用广泛的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

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


 

 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/102461200

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。