一、RealSenseD435介绍
RealSenseD435是一款结构光相机,使用左右目相机和红外光实现测距。有效测距范围为0.2~10m
二、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文件夹也拖到根目录,之后这个文件夹内就没东西了,删了吧,如下:
- 原包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版本
- 进入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功能包的版本要对应,否则会报错
此时可以使用删除命令后,重新进行安装
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
三、最后一步运行时的错误
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相机的内参
rostopic输出的好像是相机出厂时,给定的相机参数。如果想获得更加准确的话,需要进行标定。