ubuntu中通过vscode编译调试ORB-SLAM3
为了在orb-slam3的基础上进行二次开发,这几天花了不少精力,终于搞懂怎么在ubuntu系统中像windows里visual studio中一样方便的打断点调试了,在这里把整个过程再重新梳理一下。
1 首先从安装ubuntu 22.04开始
因为是从实验室毕业先辈那里继承来的电脑,电脑里装了ubuntu 16的双系统,16太久了,于是决定删掉重装最新的ubuntu。
首先在windows系统中清空ubuntu系统所在的磁盘,在开机程序中删去ubuntu的启动项。然后通过u盘重装ubuntu最新版。网上的教程都是让自己调整分区,我是按照默认与windows boot manager并存,也成功了。
2 安装ROS2
目前最新的是ROS2,这个安装没啥好说的,注意和ROS2版本要和ubuntu版本对应就好。
3 下载编译ORB-SLAM3
需要先按照官方说明,安装一系列依赖项,第一个是pangolin。
3.1 安装pangolin
首先update和upgraded已有的packages
sudo apt update && sudo apt upgrade
安装依赖项
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g++ libzip-dev libpng12-dev libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew*-dev libssl-dev
sudo apt-get install glew-utils
安装cmake
sudo apt-get install cmake
下载pangolin,放在自己的用户文件夹下就可以
git clone https://github.com/stevenlovegrove/Pangolin
用cmake编译安装
# 创建编译文件夹(在Pangolin文件夹下)
mkdir build && cd build
# 配置编译选项
cmake ..
# 开始编译代码
cmake --build .
# 安装
sudo make install
测试是否成功
# 从Pangolin文件夹进入测试文件夹
cd examples/HelloPangolin
# 创建编译文件夹并编译代码
mkdir build && cd build && cmake .. && make
# 运行即可看到显示结果
./HelloPangolin
3.2 OpenCV
类似的过程,先是依赖项
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
下载源码,解压到自己的用户文件夹下,我选择的是3.4几
在源码文件夹中创建build文件夹。打开终端cd到build文件夹使用cmake生成makefile
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
执行make
sudo make
编译完成之后
sudo make install
3.3 Eigen3
sudo apt install libeigen3-dev
测试安装是否成功
dpkg -L libeigen3-dev
DBoW2 and g2o Included in Thirdparty folder,这里不用管,python已经自带在ubuntu 22.04中,注意更新以下pip就好。
以上准备工作完成。
3.4 编译安装ORL-SLAM3
同样的下载,然后解压到用户文件夹下
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
编译
cd ORB_SLAM3
chmod +x build.sh
./build.sh
下面就可以运行了,但是坑的地方来了,官方文档写着“Open the script "euroc_examples.sh"(GitHub - electech6/ORB_SLAM3_detailed_comments: Detailed comments for ORB-SLAM3)但我就是找不到这个.sh文件。后来在网上查到,有人说是官方自己删掉了,以前的版本是有的,新版本没了。于是在github上找到这个.sh文件。
我要作的是双目相机方面的东西,所以运行的是Stereo里面的example,所以在euroc_examples.sh"中,我选择的是
#------------------------------------
# Stereo Examples
echo "Launching MH01 with Stereo sensor"
下面的那一个命令
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo
解释一下这条命令,第一部分stereo_euroc是运行stereo_euroc这个可执行文件,第二部分是orb-slam3做回环检测用的,这里不用管。第三部分yaml文件是相机内参。第四部分是euroc数据集的路径,为了运行这个example,需要在euroc官网下载Machine Hall 01这个数据集。官网的数据集解压缩以后,命名是MH_01_easy,所以要把第三部分的改成
/home/username/MH_01_easy
后面是时间戳,为了让多个相机数据,IMU数据对应起来。
把命令改好以后在terminal中运行就可以了。
4 VScode调试ORB-SLAM3
只是在终端中运行是不够的,还要调试二次开发,这里选择vscode作为开发工具,vscode本身只是个文本编辑器,需要安装一些插件扩展。安装vscode简单,不说了,然后安装以下扩展包
C/C++
C++ Intellisense
CMake
CMakeTools
在终端中进入ORB-SLAM3文件夹,用vscode打开
code .
创建c_cpp_properties.json。ctrl + shift + P后输入C/C++: Edit configurations,其中内容可以先保持默认的不做修改。
创建tasks.json。ctrl + shift + P后输入Tasks: Configure Tasks,选择使用模板创建tasks.json,选择Others。这里建议修改为如下内容:
{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "./build.sh","group": {"kind": "build","isDefault": true}}]
}
要注意:修改build.sh文件中最下面的DCMAKE_BUILD_TYPE为Debug
tasks.json文件的作用就相当于在终端中执行./build
要安装gdb debugger,否则无法生成launch.json
快捷键Ctrl+Shift+D,打开一个launch.json
然后add configuration
里面有两个参数要改
"program": "/home/username/ORB_SLAM3/Examples/Stereo/stereo_euroc",
"args": ["/home/username/ORB_SLAM3/Vocabulary/ORBvoc.txt","/home/username/ORB_SLAM3/Examples/Stereo/EuRoC.yaml","/home/username/MH_01_easy","/home/username/ORB_SLAM3/Examples/Stereo/EuRoC_TimeStamps/MH01.txt"],
这两个参数就对应着终端运行时,输入的命令的4个部分。然后点击RUN AND DEBUG旁边的绿色小三角就可以debug了,打开stereo_euroc.cc文件夹,就可以打断点调试,自己做二次开发了。
以上。
相关文章:
ubuntu中通过vscode编译调试ORB-SLAM3
为了在orb-slam3的基础上进行二次开发,这几天花了不少精力,终于搞懂怎么在ubuntu系统中像windows里visual studio中一样方便的打断点调试了,在这里把整个过程再重新梳理一下。 1 首先从安装ubuntu 22.04开始 因为是从实验室毕业先辈那里继承…...
阿里版 ChatGPT 突然上线!
转自:纯洁的微笑 其实早本月初,就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT,就是基于大模型的“压缩版”,已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌,自然一点即着&a…...
《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》
一、架构图 如下图所示: 二、环境信息 主机名K8S版本系统版本内核版本IP地址备注k8s-master-621.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.62master节点k8s-worker-631.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63worker节点k8s-worker-641…...
MAZDA CX-50没现车怎么办?赶紧去VR看车啊!
爱车一族往往都有过这样的经历:听说某家品牌出了一款心仪的新车,于是一直心心念念想要先睹为快。然而这时候问题就来了:新车从发布到量产上市往往要经历一段过程。没有现车的日子里,就算每天去4S店蹲守也看不到新车。那种心里痒痒…...
结构体全解,适合初学者的一条龙深度讲解(附手绘图详解)
我们知道,C语言是允许我们自己来创造类型的,这些类型就叫做——自定义类型。 自定义类型又包括结构体类型,联合体类型还有枚举类型。 今天的文章,我们就着重讲解这其中的结构体类型。 目录 结构体的声明 1.1结构的基础知识 …...
什么是SD-WAN技术?企业网络优化的利器!
现今,企业网络架构已成为其发展不可或缺的组成部分。针对网络性能优化方面,SD-WAN是一种值得深思熟虑的选择,在企业网络中应用SD-WAN技术能够带来多重好处。 什么是SD-WAN技术以及它是如何工作的? SD-WAN是软件定义的广域网&…...
JAVA练习106- 生命游戏
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-生命游戏 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 4 月12日练习…...
【案例教程】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术
【原文链接】: 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537049&idx3&sn31ef342c4808aed6fee6ac108b899a33&chksmfe6897f3c91f1ee5c4fa8e4eeea34…...
php7类型约束,严格模式
在PHP7之前,函数和类方法不需要声明变量类型 ,任何数据都可以被传递和返回,导致几乎大部分的调用操作都要判断返回的数据类型是否合格。 为了解决这个问题,PHP7引入了类型声明。 目前有两类变量可以声明类型: 形参&a…...
2023-04-11 无向图的匹配问题
无向图的匹配问题 之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想 1 最大匹配和完美匹配 二分图回顾 二分图:把一个图中的所有顶点分成两部分,如果每条边的两端分别属于不同部分,则这个图是二分图。更多…...
国家出手管人工智能AI了
我是卢松松,点点上面的头像,欢迎关注我哦! 全球都在封杀AI,国家也出手了,人工智能AI的强监管来了!这次反应速度算是很快了。国家出手,AI必须管。 国家网信办拟针对生成式人工智能服务出台管理办法&#…...
day24—选择题
文章目录1.将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序,时间复杂度为(A)2.已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表,至少要进行&…...
自投递简历以来的第一次面试
投完简历之后HR小姐姐接着就安排了面试,原定时间是今天下午六点,我五点五十进的会议,结果等到六点二十(真的有点不耐烦了说实话)面试官打电话过来了说网络不是很好,所以改成电话面试了。 1、session信息保…...
【C++11】新特性 - 右值引用详解
文章目录STD容器使用右值引用场景移动语义在容器中的使用主要体现在两个方面:移动构造函数和移动赋值运算符。移动语义只对右值有效,对左值无效原因STD容器使用右值引用场景 移动语义在容器中的使用主要体现在两个方面:移动构造函数和移动赋…...
C++学习笔记
C学习笔记函数一般有返回值,构造函数有没有返回值?有返回值,返回一个对象,确定所以没写;在头文件中,防卫式声明,#ifndef…#define … #endif;pass by value或者 reference,传值是整包…...
项目1实现login登录功能方案设计第三版
需求优化点:MySQL表常用功能模块实现方案index页面home页面需求 实现一个登录功能 实现的功能 注册(邮箱注册)登录(邮箱密码)重置密码查看操作记录(登录, 注册, 重置密码, 登出. 都算操作)登出在第2版的基础上进行优化:\ 优化点: VerificationCode(验证码储存库): 增加时间字段…...
Node【七】初识Express框架
文章目录🌟前言🌟Express框架🌟1.什么是框架🌟2.express安装🌟3.创建web服务基本遵循之前的四个步骤:🌟4.路由🌟 由 :请求方式请求路径(1)get发送…...
Android 高通Camera2 Camera Device Close
1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放,于是带着这个思路去进行百度探索 2、一开始我去寻找 ImageReader.OnImageAvailableListener 这个问题 var afterBitmap: Bitmap? null/**监听拍照的图片 */private val imageAvailableListener ImageRead…...
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5
原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的…...
4、浅谈Makefile文件及其简单的使用知识
文章目录1、什么是Makefile?(1)makefile关系到了整个工程的编译规则。(2)makefile带来的好处就是——“自动化编译”(3)make是一个命令工具,是一个解释makefile中指令的命令工具2、为…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
