
先官网下载代码,并下载安装官网所述安装包
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
下载完编译c++版本
cd ORB_SLAM3
chmod +x build.sh
./build.sh
1、opencv等等直接在Cmakelist.txt修改
2、报一大段错误时先输入
ROS版本编译sed -i 's/++11/++14/g' CMakeLists.txt
输入所在ros包环境,一般在Examples或者新的版本在Examples_old
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/your path/ORB_SLAM3/Examples/ROS
用以下命令测试
echo $ROS_PACKAGE_PATH
添加成功编译
ROS编译问题:chmod +x build.sh
./build_ros.sh
1,v1.0 release ros版本编译,提示找不到sophus库,及 Sophus::SE3f, cv::MAT,Eigen::Vector3f类型转换报错:
以下解决方法会引入cv中的eigen2cv方法,需要在每个修改文件的顶部包含以下文件头文件
#include
#include
解决 cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); 报错
引入上述两个头文件,然后删除ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc第151行,由下面内容替换
cv::Mat Tcw;
Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
cv::eigen2cv(Tcw_Matrix, Tcw);
解决 vPoints.push_back(pMP->GetWorldPos()); 报错
引入上述两个头文件,然后删除ROS/ORB_SLAM3/src/AR/ViewerAR.cc第409行,由以下内容替换
cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);
解决 cv::Mat Xw = pMP->GetWorldPos();报错
引入上述两个头文件,然后删除ROS/ORB_SLAM3/src/AR/ViewerAR.cc第530行,由以下内容替换
cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);
成功
使用记录类似如此:(编译前该话题 或者使用topic_tools改变话题名字)
roslaunch realsense2_camera rs_camera.launch && wait 10;
rosrun ORB_SLAM3 Stereo ./Vocabulary/ORBvoc.txt RealSense_D435i.yaml false