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

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

作者头像
zhangrelay
发布于 2019-10-22 07:57:31
发布于 2019-10-22 07:57:31
6.3K00
代码可运行
举报
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,遵循 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
代码运行次数:0
运行
AI代码解释
复制
$ ros2 run orbslam mono PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ros2 run image_tools cam2image -t camera

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ros2 run orbslam rgbd PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE

Stereo节点(双目):

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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
代码运行次数:0
运行
AI代码解释
复制
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

运行build_ros.sh脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod +x build_ros.sh
./build_ros.sh

运行Monocular单目摄像头节点:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
roscore
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【VSLAM】ORB-SLAM3安装部署与运行
ORB-SLAM3是一种基于视觉传感器的实时单目、双目和RGB-D SLAM系统。
DevFrank
2024/07/24
8900
语义SLAM开源代码汇总
之前做的深度学习闭环检测 这方面,最近想了解下语义这方面,于是总结了一些开源的语义SLAM代码共后面研究:
3D视觉工坊
2021/03/19
2.3K0
​无人机监控:视觉导航技术在农业监测中的革新
随着科技的发展和创新,无人机监控技术在农业监测中的应用正日益受到关注。传统的农业监测方式通常依赖于人工勘察或传统的航空摄影,但这些方法存在着成本高、效率低、覆盖范围有限等问题。而无人机监控技术的出现,为农业监测带来了新的解决方案。
数字扫地僧
2024/04/21
4210
各种开源SLAM算法「建议收藏」
OpenSLAM http://openslam.org/ FALKOLib(2D LIDAR) GMapping,GridSLAM(To learn grid maps from laser range data) tinySLAM(Laser-SLAM algorithm in 200 lines of C code) Unscented FastSLAM(Laser data, Matlab) EKFmonocularSLAM(Matlab) Linear SLAM(Matlab or Visual Studio) ROBOMAP Studio 2011(Visual Studio, EA optimizers) People2D(Realtime people detection in 2D range data)
全栈程序员站长
2022/07/02
1.4K0
测评活动分享
在点云PCL公众号相机测评活动的支持下,首先拿到了小觅相机,所以这篇文章将对小觅MYNTEYE-S1030-IR在ORB-SLAM2和RTAB-Map两种SLAM方案下的效果进行测评,为了增强对比效果会和我自制双目摄像头进行对比。同时这还是一篇干货满满的技术文章,我会写下详细的实验环境搭建步骤,相信你会学到很多东西!下面开始快乐的学习旅程吧!
点云PCL博主
2019/08/28
2.3K0
测评活动分享
从零开始一起学习SLAM | 学习SLAM到底需要学什么?
可以看到涉及的知识面还是比较广的。这里放出一张SLAM圈子里喜闻乐见的表达悲喜交加心情的漫画图,大家可以感受一下:
用户1150922
2019/05/26
1.5K0
ROS2机器人笔记2106
ROS虚拟机器人竞赛,优势低成本切入,使用Gazebo! 关注 vrx-2022 robotx.org image.png rosbag1和rosbag2高效转换库。 ROS2 wiki案例很多情况下会搜索到ROS1案例。 Dashing停止维护,目前Foxy还剩24个月,Galactic已经发布。 image.png ROS2教程多起来了,官网文档仍然是比较好的,维护比较及时。 如果已经有很多ROS1代码,切换ROS2,意味着必须重写很多节点。 rospy2,tf_transformations
zhangrelay
2021/07/04
6840
ROS2机器人笔记2106
SLAM技术概述_SRAM工艺
随着最近几年机器人、无人机、无人驾驶、VR/AR的火爆,SLAM技术也为大家熟知,被认为是这些领域的关键技术之一。本文对SLAM技术及其发展进行简要介绍,分析视觉SLAM系统的关键问题以及在实际应用中的难点,并对SLAM的未来进行展望。
全栈程序员站长
2022/11/10
1.1K0
SLAM技术概述_SRAM工艺
一文详解ORB-SLAM3中的地图管理
想要理解ORB-SLAM3的地图管理,仅看ORB-SLAM3的论文[3]是不够的,因为很多细节出现在之前的ORB-SLAM1/2[1][2],以及ORB-Atlas[4]这几篇论文中。从头到尾搞清楚这些论文中采用的地图管理方法,就能理解ORB-SLAM3中的内容。本文介绍这几篇论文中涉及地图的部分,并不介绍特征跟踪、关键帧创建等内容。作者能力有限,在整理时难免出现疏漏,望读者以原论文为准。
计算机视觉
2021/01/12
1.7K0
树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)
原文:树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)
一点人工一点智能
2023/03/04
4.5K0
树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)
Tello和ROS的一些资料
之前,一些博文给出了Cozmo和Vector等地面小型机器人的资料,这篇博文,针对空中机器人---Tello。
zhangrelay
2019/01/31
2.6K0
Tello和ROS的一些资料
SLAM技术分享_it技术分享社区
同时定位与地图重建(Simultaneous Localization and Mapping, SLAM),是机器人领域中的一项基础的底层技术,其希望机器人能在一个陌生的环境下实现自身的实时定位,同时能够重建出有关于环境的地图。随着近年无人驾驶、增强现实、虚拟现实等应用的兴起,作为实现这些应用的SLAM技术也越发引人注目。SLAM技术主要完成两项任务:自身定位与环境建图,也是让机器知道自己在哪里,已经周围的环境是啥。然而,如果想要精确的实现定位任务就不可避免的需要高精度的地图,而高精度的地图重建是需要以更为精确的自身定位作为基础的。 近年以来,除了传统的激光SLAM解决方案,基于视觉,基于惯性传感器等等的解决方案也在不断变多,整个SLAM领域整体呈现百花齐放的态势。 一. 目前在SLAM领域中的关键问题: 1、数据关联:SLAM技术在未来的发展过程中必然会有一个方向是将SLAM系统中集成多传感器,进行多传感器的融合任务。但是显而易见的是不同的传感器之间具有不同的特征,目前的很多SLAM研究人员都转向了研究多传感器SLAM中的传感器校准(例如自校准或者快速标定等内容),状态估计和后端BA优化。 2、 多机SLAM联合建图:目前在小范围内已有的若干SLAM系统大多都能获得比较好的效果,但是面对大规模,长时间的SLAM问题,如果只采用单机SLAM系统则获得良好的效果,此时通过分散的多机SLAM系统来解决大场景,长时间的SLAM任务将会是一个比较合适的选择,属于比较前沿的SLAM研究方向。 3、 高清晰度、信息量丰富的地图:SLAM技术作为机器人领域的一项底层基础技术,需要根据上层应用程序需要提供一张具有丰富信息的地图,其中比较具有代表性的地图形式就是拓扑地图,语义地图,以及点云地图等等;同时当SLAM系统的面对大场景,长时间的情况时,采用何种方式来存储更新地图也将是一个迫切需要解决的问题。 3、目前SLAM技术仍然面对着更强适应性、鲁棒性、可扩展性的要求。 4、适合的SLAM应用:目前SLAM技术具有广泛的应用场景,但是许多SLAM系统依然处在实验室研究阶段,缺乏合适的工程工具进行封装,需要我们继续完善SLAM的应用生态。 二. SLAM领域中的经典数据集: 1.KITTI数据集(单目视觉 ,双目视觉, velodyne, POS 轨迹)
全栈程序员站长
2022/11/10
1.2K0
SLAM技术分享_it技术分享社区
ROS2极简总结-SLAM
效果引用(github.com/rsasaki0109/li_slam_ros2)
zhangrelay
2021/12/02
1.1K0
ROS2极简总结-SLAM
使用myAGV、Jetson Nano主板和3D摄像头,实现了RTAB-Map的三维建图功能
在现代机器人技术中,高精度的环境感知与建图是实现自主导航的关键。本文将展示如何使用myAGV Jetson Nano移动平台搭载Jetson Nano BO1主板,结合RTAB-Map和3D相机,实现更加立体和细致的环境建图。myAGV Jetson Nano具备SLAM雷达导航功能,Jetson Nano提供了强大的计算能力,适合处理复杂的SLAM任务。通过引入3D摄像头,我们能够将摄像头采集的深度信息融入到地图中,使其不仅具有平面数据,还包含了丰富的立体信息。在本文中,我们将详细介绍这一过程中使用的技术,以及解决实施中遇到的问题。
大象机器人
2024/08/28
4111
使用myAGV、Jetson Nano主板和3D摄像头,实现了RTAB-Map的三维建图功能
一文详解SLAM的主要任务和开源框架
SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”.
3D视觉工坊
2021/04/13
3K0
一文详解SLAM的主要任务和开源框架
视觉slam和激光slam结合_视觉slam和激光slam
早在 2005 年的时候,激光 SLAM 就已经被研究的比较透彻,框架也已初步确定。激光 SLAM,是目前最稳定、最主流的定位导航方法。
全栈程序员站长
2022/09/23
9830
视觉slam和激光slam结合_视觉slam和激光slam
收藏| 最全 SLAM 开源数据集汇总
对于许多无人驾驶或者 SLAM 初学者来说,搞一个真车或者选择一款良好的设备来进行算法测试通常是个很头大的问题,且还需要解决很多诸如传感器之间标定不好,多传感器时间未做同步,没有真正的 groundtruth 来检验算法的好坏等等问题。
小白学视觉
2019/08/22
8.6K1
收藏| 最全 SLAM 开源数据集汇总
LSD_SLAM编译之一气呵成法
注意:一定要下载此处的LSD_SLAM 官方的lsd_slam一直没有编译成功,此LSD_SLAM已经被该作者fixed bugs.所以我们直接下载该git。 同时编译时参考该作者的wiki
全栈程序员站长
2022/08/23
3030
重磅解读!ORB-SLAM3,它来了,新增鱼眼模型、多地图等
ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
3D视觉工坊
2020/12/11
1.4K0
X3派+大疆无人机-SLAM单目建图.上
x3很牛,TT也牛,但是我不牛,我得让他牛,所以我决定搞个SLAM使用。TT有一个单目的相机,还有一个IMU,以及开放的接口。所以有这个潜力,其次也能学一手ROS2.事实上是我太年轻了,后面再说。
云深无际
2022/09/06
1.3K0
X3派+大疆无人机-SLAM单目建图.上
推荐阅读
相关推荐
【VSLAM】ORB-SLAM3安装部署与运行
更多 >
LV.6
全栈开发者 / 技术博主
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验