ORB-SLAM2的布置(四)ORB-SLAM2构建点云

这篇具有很好参考价值的文章主要介绍了ORB-SLAM2的布置(四)ORB-SLAM2构建点云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提要

高博的工作是对基本 ORB SLAM2 的扩展,基本思想是为每个关键帧构造相应的点云,然后依据从 ORB SLAM2 中获取的关键帧位置信息将所有的点云拼接起来,形成一个全局点云地图。

https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map

具体的依赖包括:
OpenCV (推荐 3.2 版本)
DBoW2 和 g2o(源文件已经包含在了 github repo 中,随后一起编译即可,这里先不管)
ROS (推荐 melodic)
Eigen3(推荐 3.2 版本)
Pangolin

PCL:由于添加了点云相关的操作,需要安装 PCL 库文件

sudo apt install libpcl-dev

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

从高博的 github repo 下载源文件

git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

下载的文件内容
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

我们只需要其中的子文件夹 ORB_SLAM2_modified,为了方便后续操作,可以将子文件夹 ORB_SLAM2_modified单独拿出来,放到用户home(~)路径下。

然后把原本 ORB SLAM2 中的 Vocabulary 文件夹和它里面的 ORBvoc.txt.tar.gz 文件拷贝过来,放到 ORB_SLAM2_modified 路径下。

cp -r Vocabulary/ ~/ORB_SLAM2_modified/

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

编译

开始进行编译

首先把~/ORB_SLAM2_modified/cmake-build-debug, ~/ORB_SLAM2_modified/Thirdparty/DBoW2/build , ~/ORB_SLAM2_modified/Thirdparty/g2o/build 这三个 build 文件夹删掉,

然后运行 ORB_SLAM2_modified 中的 build.sh,进行编译

 ./build.sh

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

编译完成
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

测试

完成后进行测试

普通模式

我们测试可以使用完成数据集

可以将上一轮步骤下载的rgbd_dataset_freiburg1_xyz文件复制粘贴到/home/heying/ORB_SLAM2_modified/Examples/datasets
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

在使用数据之前,需要对 rgbd_dataset_freiburg1_xyz中的 RGB 文件和 Depth 文件进行匹配。TUM 数据官网 提供了匹配的程序 associate.py,这个也是上一轮下载的py文件
https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools/associate.py

将python文件保存,然后运行

python associate.py rgb.txt depth.txt > association.txt

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

运行,要注意调用的文件的路径

./bin/rgbd_tum Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1.yaml Examples/datasets/rgbd_dataset_freiburg1_xyz Examples/datasets/rgbd_dataset_freiburg1_xyz/associations.txt

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

注意了 有些同学操作的时候可能会出现这种情况
终端没有报错,摄像头的数据也出来了,位姿信息也出来了,点云却是这样的
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

不用紧张,你只需要鼠标移动到【viewer】窗口,然后用鼠标滚轮缩小界面就行,出现这三种颜色是因为点云显示的坐标是这三种颜色,窗口离这个坐标太近了,全被挡住了。所以只需要鼠标移动一下即可(tnnd,还以为是啥严重的问题,卡了我一个小时,偶然移动一下才知道是这破原因)


普通模式参数的修改

可以看到在上述显示中,点云地图是黑白的,视觉效果不太好,在高博的 github issue 中有建立彩色点云地图的方法https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map/issues/10#issuecomment-309663764

首先修改文件~/ORB_SLAM2_modified/include/Tracking.h

  // Current Frame
    Frame mCurrentFrame;
    cv::Mat mImRGB; 		//Modified place 1

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉
完成后保存并退出

然后修改 ~/ORB_SLAM2_modified/src/Tracking.cc

第一处

cv::Mat Tracking::GrabImageRGBD(const cv::Mat &imRGB,const cv::Mat &imD, const double &timestamp)
{
    mImRGB = imRGB;	//Modified place 1
    mImGray = imRGB;
    mImDepth = imD;

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

第二处

    // insert Key Frame into point cloud viewer
    mpPointCloudMapping->insertKeyFrame( pKF, this->mImGray, this->mImDepth );
    mpPointCloudMapping->insertKeyFrame( pKF, this->mImRGB, this->mImDepth );   //Modified place 2

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉
完成后保存并退出

执行build.sh,重新编译

build.sh

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

普通模式颜色测试

然后启动测试

./bin/rgbd_tum Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1.yaml Examples/datasets/rgbd_dataset_freiburg1_xyz Examples/datasets/rgbd_dataset_freiburg1_xyz/associations.txt

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉


可以看到出现了彩色的信息
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉


ROS模式

如果要以 ROS 的形式运行,还需要对下载回的文件中的 ROS 文件进行编译。这里也要做一些额外设置


首先设置一下环境变量,也和之前的一样
将ROS 所在目录加入 ROS_PACKAGE_PATH 环境变量中
打开位于主目录的.bashrc文件,进行修改

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB_SLAM2_modified/Examples/ROS

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉


完成后保存并退出

然后设置修改ROS文件夹的CMakeLists.txt文件夹
我们需要做的就是参照~/ORB_SLAM2_modified/CMakeLists.txt 文件,把 PCL 相关的设置添加到 ~/ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/CMakeLists.txt文件中。
将这个文件打开,进行以下修改

find_package(Eigen3 3.1.0 REQUIRED)
find_package(Pangolin REQUIRED)
find_package( PCL 1.7 REQUIRED )    ####### 修改1


include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${Pangolin_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}  ####### 修改2
)

add_definitions( ${PCL_DEFINITIONS} )   ####### 修改3
link_directories( ${PCL_LIBRARY_DIRS} ) ####### 修改4

set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
${PCL_LIBRARIES} ####### 修改5
)

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

做完以上修改之后,再删掉 ~/ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/build文件夹

然后运行 build_ros.sh 编译 ROS 文件

.build_ros.sh

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

编译完成
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

Examples/RGB-D/TUM1.yaml 中保存了相机的各种参数,其中有一个参数名为 DepthMapFactor
在TUM 数据官网中
https://vision.in.tum.de/data/datasets/rgbd-dataset/file_formats#intrinsic_camera_calibration_of_the_kinect

factor = 5000 # for the 16-bit PNG files
# OR: factor = 1 # for the 32-bit float images in the ROS bag files

因此,在运行 ROS 之前需要将这个参数改为 DepthMapFactor: 1.0

具体操作时,复制了TUM1.yaml文件,命名为 TUM1_ROS.yaml,修改其中的参数 DepthMapFactor: 1.0
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

然后要记得在上一节的流程中下载的bag包的复制粘贴到/home/heying/ORB_SLAM2_modified/Examples/datasets
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

ROS模式测试

修改之后,运行以下命令进行测试

roscore
rosrun ORB_SLAM2  RGBD  Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1_ROS.yaml

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

播放bag包,不过需要对播放出来的数据话题做转换

rosbag play --pause Examples/datasets/rgbd_dataset_freiburg1_xyz.bag /camera/rgb/image_color:=/camera/rgb/image_raw /camera/depth/image:=/camera/depth_registered/image_raw

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

当按下空格键播放后,便可以看到输出的点云地图
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

地图保存

参考文件
PCL:读取指定路径下的pcd点云 | 将点云保存至指定路径

问题这些只能实时查看点云地图,不能保存。我们可以稍微修改一下文件
~/ORB_SLAM2_modified/src/pointcloudmapping.cc,在其中调用 PCL 库的 pcl::io::savePCDFileBinary函数就可以保存点云地图了。


首先打开文件

gedit  src/pointcloudmapping.cc

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉
进行修改

//添加头文件
#include <pcl/io/pcd_io.h>                        //Modified place3 地图保存的头文件

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

//保存地图,这里为了管理,新建了pcd文件,将所有保存的pcd放入里面
        pcl::io::savePCDFileBinary("/home/heying/ORB_SLAM2_modified/pcd/vslam.pcd", *globalMap);   //Modified place 4 保存地图的命令

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

完成后保存并退出,然后进行编译

cd build/
make -j4

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

编译完成
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉


然后再运行前述的各个 SLAM 命令就可以在 ~/ORB_SLAM2_modified/pcd路径下产生一个名为 vslam.pcd 的点云文件。

roscore
rosrun ORB_SLAM2  RGBD  Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1_ROS.yaml
rosbag play --pause Examples/datasets/rgbd_dataset_freiburg1_xyz.bag /camera/rgb/image_color:=/camera/rgb/image_raw /camera/depth/image:=/camera/depth_registered/image_raw

正常运行
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

当播放完成后程序现在不会自动关闭,需要按下CTRL+C停止,
然后可以看到在~/ORB_SLAM2_modified/pcd路径下产生一个名为 vslam.pcd 的点云文件。
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉


为了查看这个 pcd 文件,我们需要安装相应的工具

sudo apt-get install pcl-tools

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉


完成后通过 pcl_viewer 查看 vslam.pcd

pcl_viewer vslam.pcd

ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉
开启成功
ORB-SLAM2的布置(四)ORB-SLAM2构建点云,人工智能,自动驾驶,ubuntu,linux,计算机视觉

至此,使用离线包实现摄像头SLAM构建点云地图的流程完成文章来源地址https://www.toymoban.com/news/detail-752236.html

到了这里,关于ORB-SLAM2的布置(四)ORB-SLAM2构建点云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高翔ORB-SLAM2稠密建图编译(添加实时彩色点云地图+保存点云地图)

    本文写于2022年5月18日。 Ubuntu18.04 + ROS melodic ORBSLAM2_with_pointcloud_map 是基于 ORB_SLAM2 改动的, ORB_SLAM2 编译前一些库的安装以及编译时的报错参考此篇博客 ORBSLAM2_with_pointcloud_map源码地址 将源码下载到 ~/catkin_ws/src 目录下面 如果没有安装 Ros Melodic ,参考Ubuntu18.04安装Ros Melodic 以及

    2024年01月23日
    浏览(72)
  • 【视觉SLAM】ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking

    Citations: Y. Diao, R. Cen, F. Xue.ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking[C].2021 13th International Conference on Advanced Computational Intelligence (ICACI). Wanzhou,China.2021:160-165. Keywords: Visualization,Simultaneous localization and mapping,Cameras,Real-time systems,Aircraft navigation,Central Processing Unit,Traje

    2023年04月08日
    浏览(64)
  • ORB-SLAM 论文阅读

    论文链接 ORB-SLAM 0. Abstract 本文提出了 ORB-SLAM,一种基于特征的单目同步定位和建图 (SLAM) 系统 该系统对严重的运动杂波具有鲁棒性,允许宽基线环路闭合和重新定位,并包括全自动初始化 选择重建的点和关键帧的适者生存策略具有出色的鲁棒性,并生成紧凑且可跟踪的地图

    2024年01月22日
    浏览(57)
  • 基于ORB-SLAM3库搭建SLAM系统

    博客地址:https://www.cnblogs.com/zylyehuo/ ORB-SLAM3配置及安装教程 ORB-SLAM3配置安装及运行 Win 11pro VMware 17Pro Ubuntu 18.04 Eigen3 Pangolin Opencv3.4.3 ORB-SLAM3源码: https://github.com/UZ-SLAMLab/ORB_SLAM3 安装 Pangolin 需要的依赖工具 安装 Pangolin 官网下载地址:https://opencv.org/releases/page/5/ 下载之后放在

    2024年02月03日
    浏览(47)
  • SLAM ORB-SLAM2(20)查找基础矩阵

    在 《SLAM ORB-SLAM2(12)估算运动并初始地图点》 的 2.3. 计算H矩阵和F矩阵过程 中

    2024年03月17日
    浏览(56)
  • SLAM ORB-SLAM2(22)分解基础矩阵

    在 《SLAM ORB-SLAM2(12)估算运动并初始地图点》 中了解到 估算两帧间相对运动过程: 记录特征点对的匹配关系 RANSAC 采样准备 计算H矩阵或者F矩阵 判断并选取模型求位姿过程 在

    2024年04月15日
    浏览(41)
  • ORB-SLAM内的卡方检验

    Reference: 卡方检验(Chi-square test/Chi-Square Goodness-of-Fit Test) 卡方检验详解分析与实例 卡方值: χ 2 chi^2 χ 2 值表示观察值与理论值之间的偏离程度。计算这种偏离程度的基本思路如下: 设 O O O 代表某个类别的 观察频数 , E E E 代表基于某个假设 H 0 H_0 H 0 ​ 计算出的 期望频数 ,

    2024年02月06日
    浏览(55)
  • ORB-SLAM3跑本地视频

    把录制的视频放入ORB-SLAM3文件夹内,文件命名为:myvideo.mp4 在同一目录下添加myvideo.yaml、myvideo.cc 重新编译ORB-SLAM3 会出现myvideo执行文件 在此文件夹打开终端输入: ./myvideo 即可运行视频

    2023年04月22日
    浏览(44)
  • ORB-SLAM3整体流程详解

    在之前,作者曾经转过一篇《一文详解ORB-SLAM3》的文章。那篇文章中提到了ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。与ORB-SLAM2相比,ORB-SLAM3在处理大视差和长时间未观测到的场景时效果更好。它还

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包