ROS2学习和使用SLAM算法(gmapping/cartographer/orb-slam等)
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下载地址:
- https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
- 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
脚本:
-
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
部分截图如下:
一些使用广泛的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
- 点赞
- 收藏
- 关注作者
评论(0)