在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结

2023-05-16

1.跑TUM_VI数据集dataset-corridor4_512时,从tum_vi_example.sh中复制对应的运行命令,输入命令后提示找不到对应的TUM_512.yaml文件,查找对应路径发现只有一个TUM-VI.yaml

应该是作者新发布的版本进行了删改,tum_vi_example.sh是作者早期发布的版本里提供的脚本,但是后来版本更新时不知道为什么给删掉了,找了一下作者以前发行版本的代码是有TUM_512.yaml这个文件的,对比了一下两个文件的相关参数是一致的,只有个别参数变量不一样,所以在终端将TUM_512.yaml替换为TUM-VI.yaml即可。

[rosbuild] rospack found package “ORB_SLAM3” at “”,but the current directory is “xxx/ORB_SLAM3/Examples/ROS/ORB_SLAM3”.You should double-check your ROS_PACKAGE_PATH to ensure that package are found in te correct precedence order.

在这里插入图片描述
提示说ROS包路径有问题。这是因为你并没有把你当前的ROS代码路径添加到ROS_PACKAGE_PATH环境变量中,导致找不到。解决办法也很简单,sudo gedit ~/.bashrc打开编辑器,然后再末尾添加如下内容(注意对应路径要换成你自己的):

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:YOUR_PATH/Examples/ROS/ORB_SLAM3

修改完成后需要在终端刷新环境变量

source ~/.bashrc

2.ModuleNotFoundError: No module named ‘rospkg’

ModuleNotFoundError: No module named 'rospkg'
CMake Error at /opt/ros/melodic/share/ros/core/rosbuild/private.cmake:77 (message):
  [rosbuild] Syntax check of ORB_SLAM3/manifest.xml failed; aborting
Call Stack (most recent call first):
  /opt/ros/melodic/share/ros/core/rosbuild/public.cmake:174 (_rosbuild_check_manifest)
  CMakeLists.txt:7 (rosbuild_init)


-- Configuring incomplete, errors occurred!
See also "/home/lusx/Demos/ORB-SLAM3/ORB_SLAM_uz/Examples_old/ROS/ORB_SLAM3/build/CMakeFiles/CMakeOutput.log".

解决方式:

pip install rospkg                       //更新方式1
sudo apt-get install python-rospkg           //更新方式2

3./ImuTypes.h:29:10: fatal error: sophus/se3.hpp: No such file or directory

ROS目录下的CMakeLists.txtinclude_directories加一句

${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus

4.ROS版本编译成功之后,运行如下命令,出现segmentation fault(core dumped)

rosrun ORB_SLAM3 Mono_Inertial ../../../Vocabulary/ORBvoc.txt TUM-VI.yaml true

将ORB-SLAM3目录和ROS/ORBSLAM3目录下的CMakeLists.txt中opencv的版本换成3.2.0,然后重新编译后解决,成功出现UI界面

5.程序跑起来后,播放数据集并将相机和IMU的topic名称转换成ORBSLAM3需要的名称,但是系统没有订阅到相关话题,UI界面无图像显示,通过rqt_graph查看发现系统只订阅到了imu的数据

原因:ROS系统下双目和单目订阅的话题是不同的,所以需要转换成不同的话题名称,而且单目的相机只需要转换cam0一个相机的就可以了,,流泪。。。
跑单目SLAM

# 启动ROS
roscore
# 启动程序
rosrun ORB_SLAM3 Mono_Inertial ../../../Vocabulary/ORBvoc.txt ../../Monocular-Inertial/EuRoC.yaml true
# 播放数据集
rosbag play ~/data/EuRoc/MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu

6.跑双目程序报错

Input sensor was set to: Stereo-Inertial
Loading settings from TUM-VI.yaml
Camera1.overlappingBegin required parameter does not exist, aborting...
OpenCV Error: Assertion failed (tlsSlots.size() > slotIdx) in releaseSlot, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/src/system.cpp, line 1092
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/src/system.cpp:1092: error: (-215) tlsSlots.size() > slotIdx in function releaseSlot

原因:虽然单目和双目,以及文件夹Example Example_old中的yaml文件的名称都是一样的,但是不可以通用,,如果跑Stereo_Inertial则需要使用Example_old/Stereo-Inertial/中相应的文件,再次流泪。。。

跑双目数据集

#启动ROS
roscore
#启动程序
rosrun ORB_SLAM3 Stereo_Inertial ../../../Vocabulary/ORBvoc.txt ../../Stereo-Inertial/EuRoC.yaml true
#播放数据集
rosbag play ~/data/EuRoc/MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu

放一张漂亮的轨迹图
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结 的相关文章

  • μC/OS-Ⅲ系统的任务切换和任务调度

    C OS 系统的任务切换和任务调度 一 任务切换 在操作系统中当任务需要从一个任务切换到另外一个任务时 xff0c 要将当前任务的现场保存到当前任务的堆栈中 xff08 当前任务现场主要指CPU相关寄存器 xff09 xff0c 然后回复新
  • 反射系数、驻波比、S参数之间的关系

    反射系数 驻波比 S参数之间的关系 xff01 转载 回波损耗 Return Loss 入射功率 反射功率 为dB数值 反射系数 反射电压 入射电压 为标量 电压驻波比 Voltage Standing Wave Ration 波腹电压 波
  • 浅谈PWM控制电机

    先简单说说这几种模式 1 双极模式 xff0c 即电枢电压极性是正负交替的 xff0c 优点 xff1a 能正反转运行 xff0c 启动快 xff0c 调速精度高 xff0c 动态性能好 xff0c 调速静差小 xff0c 调速范围大 xf
  • Nuttx系统学习笔记(三)——使用Nuttx操作STM32F429外设

    在上一篇 xff0c 我们已经学会了如何将Nuttx进行烧录 xff0c 以及学会了如何部署这个操作系统 xff0c 接下来我们就要使用这个操作系统来实现我们对嵌入式设备的控制 xff0c 当然也是从点灯开始的 这个基于Posix架构的操作
  • .NetCore 5.0 WebAPI 发布到iis时访问api出现404的解决方案

    情况介绍 xff1a 新建了个 NetCore 5 0 的 WebAPI项目 xff0c 发布部署到WINDOWS10 的 IIS后 xff0c 默认打开 http 127 0 0 1 swagger 出现404找不到页面的错误 原因 xf
  • 新手如何快速入门人工智能?

    网上有很多关于 新手如何快速入门人工智能 的文章 xff0c 但是对于真正的小白来说并没有太多的指导作用 作为新手想进入人工智能领域 xff0c 首先是要明确需要掌握哪些基础知识 xff0c 其次是掌握一套行之有效的学习方法 xff0c 最
  • 人工智能入门需要学习哪些课程?AI基础知识

    要入门人工智能 xff0c 需要掌握一些基础知识和技能 以下是一些入门人工智能需要学习的课程和基础知识 xff1a 人工智能入门需要学习哪些课程 xff1f AI基础知识 数学基础 xff1a 人工智能需要用到许多数学知识 xff0c 包括
  • 模块学习2:基于PELCO-D协议对云台进行定点控制

    开发手上的一个云台 xff0c 使用的就是PELCO D协议 这个协议开始网上找了一圈 xff0c 发现下载完整版的协议大多是还都要收费 xff0c 后面在官方下载了一份原版完整版协议的协议内容 xff0c 配合网上搜索到的资料完成对手上这
  • C语言和C++的区别(函数重载)

    C和C 43 43 的区别主要分为三部分 xff1a 接下来详细介绍一下函数部分的区别 1 返回类型 2 参数列表 此外 xff0c 在C 43 43 中还支持缺省参数 xff0c 而C语言不支持 什么是缺省参数呢 xff1f 缺省参数是声
  • 动态创建二维数组的两种方法

    首先来讲解一下什么是二维数组 其实二维数组也可以说是一个一维数组 xff0c 只是这个一维数组比较特别 xff0c 它的每一个元素都是一个一维数组 虽然二维数组在底层是按照一维数组的存储方式来存储的 xff0c 即存完第一行 xff0c 紧
  • 什么是进程?

    程序 xff1a 完成特定任务的一系列指令集合 代码段 43 数据段 放在磁盘中的程序 进程 xff1a 进行就是正在进行中的程序 1 用户角度 xff1a 进程是程序的一次动态执行过程 2 操作系统 xff1a 进程是操作系统分配资源的基
  • 死锁的四个必要条件和解决办法

    死锁概念及产生原理 概念 xff1a 多个并发进程因争夺系统资源而产生相互等待的现象 原理 xff1a 当一组进程中的每个进程都在等待某个事件发生 xff0c 而只有这组进程中的其他进程才能触发该事件 xff0c 这就称这组进程发生了死锁
  • 编译和链接的过程

    程序要运行起来 xff0c 必须要经过四个步骤 xff1a 预处理 编译 汇编和链接 接下来通过几个简单的例子来详细讲解一下这些过程 对于上边用到的几个选项需要说明一下 使用 gcc 命令不跟任何的选项的话 xff0c 会默认执行预处理 编
  • vim常用的功能

    vim是vi 的升级版本 xff0c 它兼容vi的所有指令 xff0c 而且还有一些新的特性 xff0c 比如说预付高亮 可视化操作不仅可以在终端进行 xff0c 还可以在 x Window mac os windows vim 有多种模式
  • vscode electron安装环境

    1 安装nodejs Node js 安装18 12 1LTS版本 安装完成后确认 node version 2 安装electron npm install electron g 验证是否安装成功 electron v 没成功 xff01
  • Debug和Release的区别以及obj文件的作用

    Debug和Release的区别 Debug xff1a 调试版本 xff0c 包含调试信息 xff0c 所以容量比release大很多 xff0c 并且不进行任何优化 xff0c xff08 优化会使调试复杂化 xff0c 因为进行优化肯
  • python中的import、from import以及import as的区别

    首先介绍一下import和include的区别或者说import相对include的好处 xff1a import导入的内容只会被包含一次 xff0c 在引入之前会检测是否已经存在该模块 xff0c 不存在才会被引入 xff0c 而incl
  • error while loading shared libraries: lib*.so: cannot open shared object file: No such file

    linux在编译文件时报错 xff1a slam sample error span class token keyword while span loading shared libraries libslam common so can
  • (1/100) ros的plugin插件和动态参数配置dynamic_reconfigure

    写在前面 xff1a 实际机器人开发中 xff0c 往往会存在很多参数 xff0c 这些参数需要在实际的调试中得出 xff0c 为了更高效的开发与测试 xff0c 则选择使用动态的参数配置 而在机器人功能模块层面 xff0c 我们可能也需要
  • 重定向printf函数到串口输出的多种方法

    本文详细的介绍了如何重定向printf输出到串口输出的多种方法 xff0c 包括调用MDK微库 xff08 MicroLib xff09 的方法 xff0c 调用标准库的方法 xff0c 以及适用于 GNUC 系列编译器的方法 1 prin

随机推荐

  • 如何修复烧写镜像文件失败的SD卡

    前言 使用某些软件 xff08 比如 win32 Disk Imager xff09 向SD卡烧写镜像文件时 xff0c 很有可能出现烧写失败的情况 xff0c 通常如果烧写失败 xff0c 系统会弹出请求格式化SD卡的提示框 此时不要点格
  • FreeRTOS学习笔记(一)基础篇

    我的FreeRTOS学习 xff0c 是从朱工的FreeRTOS系列博客开始的 xff0c 感谢朱工的悉心整理 xff0c 文章很不错 xff0c 适合学习 根据朱工的博客 xff0c 按照我自己的习惯和思路 xff0c 把最关键的信息抓取
  • 程序员要不要懂底层原理

    我在做编程的时候 xff0c 还是一个地道的门外汉 xff0c 就像一个刚出生的孩子 xff0c 跟着大人咿呀呀的学语 xff0c 也不知道是什么 xff0c 做什么用的 xff0c 也不知道能不能换种方式实现 xff0c 总结起来就是一问
  • Z变换零点极点

    在Z变换里 xff0c 零点的位置表示系统的 谷 xff0c 极点的位置表示系统的 峰 xff0c 我们把有峰的地方看做信号可以通过的地方 xff0c 而有谷的地方看做信号被截止的地方 并且我们选择单位圆为频域的一个周期 xff0c 那么可
  • ubuntu16.04下ROS Kinetic详细安装过程

    参考网址 xff1a 点击打开链接 参考文献 xff1a ROS机器人编程 配置环境 xff1a ubuntu 16 04 LTS 43 ROS Kinetic 一 安装ROS 1 设置镜像源 为了保证安装速度 xff0c 需要选择国内的镜
  • vscode环境中配置git

    1 建立project空目录用于存放electron基本环境这个环境中得文件不能加入git项目中否则每次更新文件太大github不支持大于100M得文件上传 2 使用vscode打开project目录 3 打开终端运行npm install
  • idea 主题 代码颜色 代码区背景 行号背景 注释颜色修改

    最近写代码眼睛总是看的不舒服 xff0c 想着换一个主题 xff0c 但是换了主题 xff0c 代码的颜色显示和之前又不一样了 xff0c 接下来就是修改主题 xff0c 但是代码颜色仍然保持 Darcula 主题的颜色 目录 1 修改主题
  • RTT之SysTick做了什么

    经过好几天的摸索 xff0c 终于正常驱动了一个串口设备 xff0c 并成功移植到雅特力的板子上 xff01 当然 xff0c 还得继续努力把RTT的内核搞清楚 xff0c 这样才会构建整个项目程序 xff0c 毕竟项目是有时间限制的 因为
  • realSense 安装 经验整理

    安装 RealSense SDK 以ros 参考1 参考二 主要看参考三 标定 标定 以上内容安装失败 Realense sdk和ros对应关系 jetson jetson 一键安装sdk 官方安装 jetson4 4 xavier nx
  • 吴恩达machine learning yearning读书笔记1

    在 setting up development set and test set 这一章中 xff0c 作者提到了一个很重要的问题 训练集和测试集分布不一致导致的机器学习模型泛化能力有限 xff1a 在训练集上表现比较好 xff0c 但是
  • 图像畸变与去畸变

    本文主要介绍图像畸变产生的原因 xff0c 广角镜头的一般畸变模型和去畸变的方法 1 图像畸变 图像畸变是由于透镜制造精度以及组装工艺的偏差会引入畸变 xff0c 导致原始图像失真 镜头的畸变分为径向畸变和切向畸变两类 1 1 径向畸变与畸
  • Linux C编程问题:symbol lookup error: xxx undefined symbol xxx

    程序代码在编译的时候没问题 xff0c 但是在运行的时候报错 xff1a bin symbol lookup error bin undefined symbol xxx 百度了一下 xff0c 貌似是程序运行时使用的动态库和编译时make
  • Docker自动从Harbor下更新镜像

    JAVA开发Docker容器下自动更新镜像仓库的工具 前段时间在做一套分布式多租户系统 xff0c 它包括控制平台和应用服务器两部分 xff0c 应用服务器为企业客户服务 xff0c 系统会为每家企业建立一个应用服务器实例 xff0c 它存
  • C++中的exit函数

    描述 xff1a 用来立即中止当前程序的执行 xff0c 并将一个整数返回给系统 xff0c 该整数的作用与 由mian函数返回的整数 相同 xff0c 如果是0表示程序正常退出 xff1b 如果非0表示程序异常退出 头文件 span cl
  • 将uint8_t类型的16进制字符转化转换为string字符串

    碰到一个需求 xff0c 需要把硬件读到的uint8 t类型的16进制数据转化为string类型的字符串 例如 xff0c 如果读到到的数据是一个uint8 t类型的数组uint8 t code 61 5 61 0XAA 0X01 0XE3
  • C++解析json文件

    文章目录 1 JSON文件简介 1 1 1 JSON文件的语法规则1 2 JSON值的类型 2 JSON文件解析 1 JSON文件简介 1 一个项目在设计时会存在很多参数 xff0c 比如data文件路径 外设名称与相关参数 文件储存路径等
  • YOLO-YOLOV5算法原理及网络结构整理

    文章目录 零 参考链接一 前言1 1 YOLO vs Faster R CNN 二 YOLOv1 xff08 448 448 xff09 2 1实现方法2 2 损失函数2 3 leak RELU激活函数2 4总结 三 YOLOV23 1 Y
  • ubuntu 20.04.5安装python3.9缺少ffi.h文件问题

    ubuntu 20 04 5安装python3 9缺少ffi h文件问题 OK 解决
  • 视觉SLAM基础

    文章目录 零 参考链接一 视觉SLAM面试相关问题1 李群与李代数的映射关系2 李群与李代数的扰动模型3 SIFT与SURF特征的区别4 相似变换 仿射变换 射影变换的区别5 Homograph Essential Fundamental
  • 在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结

    1 跑TUM VI数据集dataset corridor4 512时 xff0c 从tum vi example sh中复制对应的运行命令 xff0c 输入命令后提示找不到对应的TUM 512 yaml文件 xff0c 查找对应路径发现只有