当前位置: 首页 > news >正文

踩坑 视觉SLAM 十四讲第二版 ch13 编译及运行问题

一、安装Geset 库

sudo apt-get install libgtest-dev
cd /usr/src/gtest
sudo mkdir build 
cd build
sudo cmake ..    //一定要以sudo的方式运行,否则没有写入权限
sudo make        //这个也一样要以sudo的方式
sudo cp libgtest*.a /usr/local/lib   //将生成的libgtest.a 和 libgtest_main.a 拷贝到系统的lib路径下

二、修改fmt

在所有 CmakeList文件中后面添加 fmt,需要修改的有以下几处:

/app下的:

add_executable(run_kitti_stereo run_kitti_stereo.cpp)
target_link_libraries(run_kitti_stereo myslam ${THIRD_PARTY_LIBS} fmt ) 

/src下的:这里还需要将SHARE改为STATIC:

add_library(myslam STATICframe.cppmappoint.cppmap.cppcamera.cppconfig.cppfeature.cppfrontend.cppbackend.cppviewer.cppvisual_odometry.cppdataset.cpp)target_link_libraries(myslam${THIRD_PARTY_LIBS} fmt )

/test下的:

SET(TEST_SOURCES test_triangulation)FOREACH (test_src ${TEST_SOURCES})ADD_EXECUTABLE(${test_src} ${test_src}.cpp)TARGET_LINK_LIBRARIES(${test_src} ${THIRD_PARTY_LIBS} myslam fmt )ADD_TEST(${test_src} ${test_src})
ENDFOREACH (test_src)

三、修改kitti_stereo.cpp

需要将 assert(vo->Init() == true这行注释,并改为vo->Init()

myslam::VisualOdometry::Ptr vo(new myslam::VisualOdometry(FLAGS_config_file));// assert(vo->Init() == true);vo->Init();vo->Run();

 四、下载数据集

给大家分享一下百度网盘:kitti  提取码:2p1k

(整体文件很大,约22G,可以先下载一个00序列)

 五、修改/config下的default.yaml中的数据集的路径

%YAML:1.0
# data
# the tum dataset directory, change it to yours! 
# dataset_dir: /media/xiang/Data/Dataset/Kitti/dataset/sequences/00
//下面是需要你根据自己的路径修改:
dataset_dir: /media/tzy/TZY-YP/VSLAM/Dataset/KITTI/data_odometry_gray/dataset/sequences/00# camera intrinsics
camera.fx: 517.3
camera.fy: 516.5
camera.cx: 325.1
camera.cy: 249.7num_features: 150
num_features_init: 50
num_features_tracking: 50

六、编译运行

cd ch13
mkdir build
cd build
cmake ..
make

测试:

cd bin
./test_triangulation

 运行:

注意不要在/bin 路径下执行,需要在/ch13下运行

回到上一级目录:
cd ..
./bin/run_kitti_stereo

运行效果:

七、如果需要显示全部地图轨迹

修改viewer.cpp中UpdateMap()函数:

void Viewer::UpdateMap() {std::unique_lock<std::mutex> lck(viewer_data_mutex_);assert(map_ != nullptr);active_keyframes_ = map_->GetActiveKeyFrames();//active_landmarks_ = map_->GetActiveMapPoints();active_landmarks_ = map_->GetAllMapPoints();   // 改为all mappoints,显示整体地图map_updated_ = true;
}

重新编译运行,效果如图,可以看出轨迹和地图错位严重,并且01序列直接跟踪失败

 

http://www.lryc.cn/news/115067.html

相关文章:

  • 【设计模式】-装饰器模式
  • 七月学习总结
  • Camunda 7.x 系列【6】Spring Boot 集成 Camunda 7.19
  • Kubernetes —调度器配置
  • 【微信小程序】申请蓝牙、位置和数据库等相关权限
  • ORB-SLAM2学习笔记6之D435i双目IR相机运行ROS版ORB-SLAM2并发布位姿pose的rostopic
  • 【数据结构与算法——TypeScript】哈希表
  • JavaScript 中常用简写语法技巧总结
  • 漫画算法做题笔记
  • JDBC学习笔记
  • 亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证,联合方案带来约20%性能提升
  • 【MySQL】基础知识(一)
  • Ansible专栏目录
  • 【locust】使用locust + boomer实现对接口的压测
  • 亿欧智库:2023中国宠物行业新趋势洞察报告(附下载)
  • 时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证
  • Spring-1-深入理解Spring XML中的依赖注入(DI):简化Java应用程序开发
  • 负载均衡–HAProxy安装及搭建tidb数据库负载服务
  • Django各种缓存的配置
  • 实现跨域的几种方式
  • OpenCV: 对“google::protobuf::internal::Release_CompareAndSwap”的未定义
  • 无涯教程-Perl - References(引用)
  • 马斯克收购AI.com域名巩固xAI公司地位;如何评估大型语言模型的性能
  • uni-app:实现点击按钮出现底部弹窗(uni.showActionSheet+自定义)
  • flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent
  • 了解以太网通信中的九阳神功 - SOME/IP协议
  • redis List类型命令
  • 【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)
  • 【计算机网络】网络层协议 -- ICMP协议
  • 机器学习---facebook的案例学习