RealSenseD435与ORB-SLAM2实现稠密建图

一、RealSenseD435介绍

RealSenseD435是一款结构光相机,使用左右目相机和红外光实现测距。有效测距范围为0.2~10m
RealSenseD435与ORB-SLAM2实现稠密建图_第1张图片

二、ORBSLAM2_with_pointcloud_map的安装

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

clone代码,无法下载的话,可以直接去https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map下载

  • 解压orbslam2_modified.zip文件,将这个文件夹下的ORB_SLAM2_modified文件夹拖出来覆盖到根目录下的ORB_SLAM2_modified,把这个文件夹下的g2o_with_orbslam2文件夹也拖到根目录,之后这个文件夹内就没东西了,删了吧,如下:

RealSenseD435与ORB-SLAM2实现稠密建图_第2张图片

  • 原包ROS不友好,可以下载另外一个包,替换原包中的ORB_SLAM2_modified文件夹下的所有文件
git clone https://github.com/wylnii/ORBSLAM2_with_pointcloud_map.git
准备所需的库,具体要求可以参考
https://blog.csdn.net/subiluo/article/details/88975979

需要注意的是,Eigen库最好使用3.2.10,OPENCV博主使用的是3.4.5。
电脑中的版本可以使以下命令查看
pkg-config --modversion opencv
如果不想重装Eigen库的话,后面博主会介绍另一种方法

  • 编译g2o_with_orbslam2包
cd g2o_with_orbslam2
mkdir build
cmake ..
make 
sudo make install
  • 准备编译ORB_SLAM2_modified
cd ORB_SLAM2_modified/
rm -rf Thirdparty/DBoW2/build/
rm -rf Thirdparty/g2o/build/
  • 下载ORBvoc.txt.tar.gz,将其放置于Vocabulary文件夹下
https://github.com/raulmur/ORB_SLAM2/tree/master/Vocabulary
  • 保证opencv版本的一致,修改ORB_SLAM2_modified下以及ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2目录下的CMakeLists.txt,这里统一修改为你电脑里的opencv版本

RealSenseD435与ORB-SLAM2实现稠密建图_第3张图片
RealSenseD435与ORB-SLAM2实现稠密建图_第4张图片

  • 进入ORB_SLAM2_modified目录,运行
chmod +x build.sh
./build.sh
  • 修改ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/文件夹下的cmakelist,注意你电脑里应该安装了pcl库,如果没有请自行安装,-lboost_system一句加上
find_package(Pangolin REQUIRED)
find_package(PCL 1.8 REQUIRED)

include_directories(
        ${PROJECT_SOURCE_DIR}
        ${PROJECT_SOURCE_DIR}/../../../
        ${PROJECT_SOURCE_DIR}/../../../include
        ${Pangolin_INCLUDE_DIRS}
        ${PCL_INCLUDE_DIRS}
	${EIGEN3_INCLUDE_DIR}
)
#message(FATAL_ERROR ${OpenCV_LIBS})

add_definitions(${PCL_DEFINITIONS})
link_directories(${PCL_LIBRARY_DIRS})

set(LIBS
        ${OpenCV_LIBS}
        ${EIGEN3_LIBS}
        ${Pangolin_LIBRARIES}
        ${PCL_LIBRARIES}
        ${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
        ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
        ${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
	-lboost_system       
	# opencv_core3 #手动添加
        # opencv_imgproc3
        # opencv_highgui3
        )
  • 修改ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/src/ros_rgbd.cc文件,把rgb_topic和depth_topic订阅话题修改为
 "/camera/color/image_raw";
 "/camera/aligned_depth_to_color/image_raw";
  • 回到ORB_SLAM2_modified,修改ROS_PACKAGE_PATH
gedit ~/.bashrc
# 添加一下命令,如果以前配置过ORB_SLAM2的ROS的话,需要将以前的配置注释掉
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/你的目录/ORB_SLAM2_modified/Examples/ROS

在这里插入图片描述

  • 开始编译ros节点
chmod +x build_ros.sh
./build_ros.sh
  • 安装RealSense的SDK,参考以下网站的3\4部分
https://blog.csdn.net/weixin_43828675/article/details/115312472?spm=1001.2014.3001.5501
  • 安装RealSense的ROS功能包。
mkdir realsense
cd realsense
mkdir src
cd src
git clone https://github.com/intel-ros/realsense.git
cd ..
catkin_make
source devel/setup.bash

需要注意的是,SDK和ROS功能包的版本要对应,否则会报错
RealSenseD435与ORB-SLAM2实现稠密建图_第5张图片
此时可以使用删除命令后,重新进行安装

dpkg -l | grep "realsense" | cut -d " " -f 3 | xargs sudo dpkg --purge
  • 回到ORB_SLAM2_modified文件夹下,运行ORB_SLAM2,实现稠密建图
roslaunch realsense2_camera rs_rgbd.launch
rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1.yaml

RealSenseD435与ORB-SLAM2实现稠密建图_第6张图片

三、最后一步运行时的错误

3.1 段错误(核心已转储)

原因是Eigen库的问题,建议使用Eigen3.2.10
首先去Eigen官网上下载Eigen3.2.10,随后按照以下网站的教程进行修改。我建议将所有的CMakeLisr.txt都进行修改。指明使用的Eigen库的路径。

https://blog.csdn.net/weixin_44457020/article/details/114778641

3.2 realsense相机的自校准

realsense提供的realsense_viewer可以对实现深度测量的左右目相近进行自校准,校准流程参考

https://www.bilibili.com/video/av757604103

3.3建图效果很差

修改相机参数的yaml文件中的DepthMapFactor参数,博主使用的1000

3.4获得rgb相机的内参

RealSenseD435与ORB-SLAM2实现稠密建图_第7张图片
rostopic输出的好像是相机出厂时,给定的相机参数。如果想获得更加准确的话,需要进行标定。

你可能感兴趣的:(ORB_SLAM2)