当前位置: 首页 > 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序列直接跟踪失败

 

相关文章:

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

一、安装Geset 库 sudo apt-get install libgtest-dev cd /usr/src/gtest sudo mkdir build cd build sudo cmake .. //一定要以sudo的方式运行&#xff0c;否则没有写入权限 sudo make //这个也一样要以sudo的方式 sudo cp libgtest*.a /usr/local/lib //将生成…...

【设计模式】-装饰器模式

Java 设计模式之装饰器模式 前言 在软件开发中&#xff0c;经常有需求对已有的对象进行功能的扩展&#xff0c;但是传统的继承方式会导致类的数量快速增多&#xff0c;且难以维护。为了解决这个问题&#xff0c;装饰器模式应运而生。 装饰器模式是一种结构型设计模式&#xff…...

七月学习总结

一晃暑期七月份已经结束了&#xff0c;八月份需要做的事情更多。 在成长的路上不断地迷茫&#xff0c;不断地前进。到底才能完成对自己地救赎。 目前想的就是以后走软件开发&#xff0c;往架构方向做&#xff0c;主语言Java或者go&#xff0c;408基础一定要扎实&#xff0c;计…...

Camunda 7.x 系列【6】Spring Boot 集成 Camunda 7.19

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. Camunda Platform Run3. Spring Boot 版本兼容性4. 集成 Spring Boot5. 启动项目…...

Kubernetes —调度器配置

目录 配置文件 扩展点 调度插件 多配置文件 应用于多个扩展点的插件 调度程序配置迁移 你可以通过编写配置文件&#xff0c;并将其路径传给 kube-scheduler 的命令行参数&#xff0c;定制 kube-scheduler 的行为。 调度模板&#xff08;Profile&#xff09;允许你配置 k…...

【微信小程序】申请蓝牙、位置和数据库等相关权限

在小程序的app.json文件中配置requiredPermissions字段&#xff0c;并在其中添加相应的权限。 以下是一个示例app.json文件的配置&#xff0c;包括了蓝牙、位置和数据库等权限的申请&#xff1a; {"pages": ["pages/index/index"],"requiredPermiss…...

ORB-SLAM2学习笔记6之D435i双目IR相机运行ROS版ORB-SLAM2并发布位姿pose的rostopic

文章目录 0 引言1 D435i相机配置2 新增发布双目位姿功能2.1 新增d435i_stereo.cc代码2.2 修改CMakeLists.txt2.3 新增配置文件D435i.yaml 3 编译运行和结果3.1 编译运行3.2 结果3.3 可能出现的问题 0 引言 ORB-SLAM2学习笔记1已成功编译安装ROS版本ORB-SLAM2到本地&#xff0c…...

【数据结构与算法——TypeScript】哈希表

【数据结构与算法——TypeScript】 哈希表(HashTable) 哈希表介绍和特性 哈希表是一种非常重要的数据结构&#xff0c;但是很多学习编程的人一直搞不懂哈希表到底是如何实现的。 在这一章节中&#xff0c;我门就一点点来实现一个自己的哈希表。通过实现来理解哈希表背后的原理…...

JavaScript 中常用简写语法技巧总结

分享一些自己常用的js简写技巧&#xff0c;长期更新&#xff0c;会着重挑选一些实用的简写技巧&#xff0c;使自己的代码更简洁优雅~ 这里只会收集一些大多数人不知道的用法&#xff0c;但是确实能提高自己的编码技巧&#xff0c;像ES6那些基础的简写语法或者是三目运算符代替i…...

漫画算法做题笔记

诸神缄默不语-个人CSDN博文目录 哦这是我三年前写的&#xff0c;我现在Java语法都快忘光了…… 反正之前的博文也发一下好了。这个因为我当年是用有道云笔记而不是直接用CSDN编辑器写的&#xff0c;所以后面有些内容写乱了&#xff0c;因为我现在猛的一看有点看不懂&#xff0…...

JDBC学习笔记

1 JDBC简介 1.1 前言 当谈论JDBC时&#xff0c;我们可以将其看作是一种用于Java程序与数据库进行通信的方式。如果你想编写一个Java程序&#xff0c;并且希望能够连接到数据 库、执行查询或更新数据&#xff0c;JDBC就是你需要的工具。 JDBC提供了一组类和接口&#xff0c;…...

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证,联合方案带来约20%性能提升

近日&#xff0c;亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试&#xff0c;亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外&#xff0c;双方进一步开展TP…...

【MySQL】基础知识(一)

MySQL基础知识&#xff08;一&#xff09; 文章目录 MySQL基础知识&#xff08;一&#xff09;00 MySQL安装01 数据库介绍1.1 什么是数据库1.2数据库分类 02 SQL分类03 数据库操作3.1显示数据库3.2创建数据库3.3选中数据库3.4删除数据库 04 常用数据类型4.1数值类型4.2字符串类…...

Ansible专栏目录

我的博客&#xff1a;www.itwk.cc 希望能够给大家带来帮助&#xff01; 1、什么是Ansible&#xff1f;Ansible 简介及核心概念详解 https://blog.csdn.net/qq_34185638/article/details/131079320 2、Ansible Inventory 主机清单的作用、使用方法及示例详解 https://blog.cs…...

【locust】使用locust + boomer实现对接口的压测

目录 背景 环境安装 脚本编写 master slave节点&#xff08;golang/boomer&#xff09; 问题 资料获取方法 背景 很早之前&#xff0c;考虑单机执行能力&#xff0c;使用locust做过公司短信网关的压测工作&#xff0c;后来发现了一个golang版本的locust&#xff0c;性能…...

亿欧智库:2023中国宠物行业新趋势洞察报告(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 户外赛道本质上迎合了全球共性需求的增长&#xff0c;从养宠意愿的转化到养宠生活的需求&#xff0c;多层次的需求推动行业发展新趋势 从需求端进行分析&#xff0c;可以将养宠意愿的转化分为三个层…...

时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证

近年来&#xff0c;开源及其价值获得社会各界的广泛认可&#xff0c;无论是国家政策导向还是企业数字化转型&#xff0c;都在加速拥抱开源。对于如操作系统、数据库等基础软件来说&#xff0c;开源更是成为驱动技术创新的有力途径。 在此背景下&#xff0c;近日&#xff0c;涛…...

Spring-1-深入理解Spring XML中的依赖注入(DI):简化Java应用程序开发

学习目标 前两篇文章我们介绍了什么是Spring,以及Spring的一些核心概念&#xff0c;并且快速快发一个Spring项目&#xff0c;以及详细讲解IOC&#xff0c;今天详细介绍一些DI(依赖注入) 能够配置setter方式注入属性值 能够配置构造方式注入属性值 能够理解什么是自动装配 一、…...

负载均衡–HAProxy安装及搭建tidb数据库负载服务

作为一名开发人员&#xff0c;随着经验的增加和技术的沉淀&#xff0c;需要提高自己架构方面的知识&#xff0c;同时对于一个企业来说&#xff0c;搭建一套高可用、高性能的技术架构&#xff0c;对于公司的业务开展和提高服务的性能也是大有裨益的。本文重点从软件安装和搭建ti…...

Django各种缓存的配置

Django提供了多种缓存后端&#xff0c;如内存缓存、文件缓存、数据库缓存、Memcached和Redis等。根据项目需求选择合适的缓存后端。 settings配置 在Django项目的settings.py文件中&#xff0c;找到或新增CACHES配置项。根据所选的缓存后端&#xff0c;配置相应的参数。以下是…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...