1. ORBSLAM3_V1 编译

参考https://blog.csdn.net/zhh2005757/article/details/122353772

1.代码下载

git clone https://github.com/electech6/ORB_SLAM3_detailed_comments ORB_SLAM3_v1_detailed

2.编译

//ORB_SLAM3_v1_detailed文件夹中
2.1修改build.sh、build_ros.sh属性为可执行
2.2 sudo ./build.sh

3.ros编译

3.1修改build_ros.sh
echo "Building ROS nodes"
cd Examples_old/ROS/ORB_SLAM3
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j
3.2环境配置
 sudo gedit ~/.bashrc
末尾添加:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB_SLAM3_v1_detailed/Examples_old/ROS
3.3 ros文件夹下的cmakelist.txt 中include_directories
添加${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus

include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${PROJECT_SOURCE_DIR}/../../../include/CameraModels
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
${Pangolin_INCLUDE_DIRS}
)
3.4 报错:cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); 
    解决:ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc
    3.4.1:添加头文件
    #include <Eigen/Dense>
    #include <opencv2/core/eigen.hpp>
    3.4.2:修改154行为:
    //cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
    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);
3.5 报错:vPoints.push_back(pMP->GetWorldPos());
    解决:ROS/ORB_SLAM3/src/AR/ViewerAR.cc
    3.5.1:添加头文件
    #include <Eigen/Dense>
    #include <opencv2/core/eigen.hpp>
    3.5.2:修改154行为:
    //vPoints.push_back(pMP->GetWorldPos());
    cv::Mat WorldPos;
    cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
    vPoints.push_back(WorldPos);
3.6 报错:cv::Mat Xw = pMP->GetWorldPos();
    解决:ROS/ORB_SLAM3/src/AR/ViewerAR.cc
    3.6.1 修改537行为:
    //cv::Mat Xw = pMP->GetWorldPos();
    cv::Mat Xw;
    cv::eigen2cv(pMP->GetWorldPos(), Xw);
3.7 ros编译
   ./build_ros.sh    

4.运行调试

4.1代码更改
  //更改为小觅相机话题名
  //  Maximum delay, 5 seconds
  ros::Subscriber sub_imu = n.subscribe("/mynteye/imu/data_raw", 1000, &ImuGrabber::GrabImu, &imugb); 
  ros::Subscriber sub_img_left = n.subscribe("/mynteye/left/image_raw", 100, &ImageGrabber::GrabImageLeft,&igb);
  ros::Subscriber sub_img_right = n.subscribe("/mynteye/right/image_raw", 100, &ImageGrabber::GrabImageRight,&igb);

  std::thread sync_thread(&ImageGrabber::SyncWithImu,&igb);
  ros::spin();

   // Stop all threads
    SLAM.Shutdown();
   // Save camera trajectory
    SLAM.SaveKeyFrameTrajectoryTUM("KeyFrameTrajectory_TUM_Format.txt");
    SLAM.SaveTrajectoryTUM("FrameTrajectory_TUM_Format.txt");
    SLAM.SaveTrajectoryKITTI("FrameTrajectory_KITTI_Format.txt");
    ros::shutdown();
  return 0;
  4.2重新编译
  ./build_ros.sh
  4.3打开一个终端依次输入
  gnome-terminal -- bash -c "roscore; exec bash"

  gnome-terminal -- bash -c "cd /home/knight/MYNT-EYE-S-SDK/ && source ./wrappers/ros/devel/setup.bash && roslaunch mynt_eye_ros_wrapper mynteye.launch; exec bash"

  gnome-terminal -- bash -c "cd /home/knight/ORB_SLAM3_v1_detailed/ && rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples_old/Stereo-Inertial/my_MYNT.yaml true; exec bash"

  
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

My.科研小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值