VINS-Fusion运行时的段错误(核心已转储)解决方法

2023-05-16

平台:ubuntu16.04 + ROS

问题描述:前两天VINS的原作者开源了VINS-Fusion的双目版以及给出了和GPS融合的一个demo,所以试着运行下数据集。每次单目运行10s左右,双目1-2s时VINS的vins_node节点便会出现“断错误(核心已转储)”导致程序中断,其他RVIZ和数据发送节点都正常。

问题解决路径:

1、起初在网上查询段错误的解决方法,大部分都指明与内存有关,尤其是程序已经运行起来了,所以初步怀疑是栈空间不够,于是采用“ulimite -a”查看当前的栈空间大小是8M,于是将各个终端的临时栈空间修改为“ulimite –s 102400”(100M)然后运行程序依旧不行。又和别人(能正常运行)对比了“ulimite -a”下的各项指标,表明我的电脑没有问题。

2、接着在网上看到可以采用gdb对程序进行调试,可以找出发生段错误的程序位置。于是首先安装gdb,这个直接在网上搜教程即可。

安装完gdb之后,首先对ROS程序进行重新编译得到Debug版本,命令为:

catkin_make -DCMAKE_BUILD_TYPE=Debug

下一步基于gdb启动ROS程序“rosrun --prefix 'gdb -ex run --args' package node” package表示包,node表示需要启动的节点。程序运行后当出现段错误时,对应的vins_node运行指令为(xx需要替换为自己的目录):

rosrun --prefix 'gdb -ex run --args' vins vins_node /home/xx/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 

运行后出现错误时,便会报下面的错误信息:

然后进一步输入“bt”可以查看崩溃的程序位置:

由图中可见出问题的基本就是在“eigen3”下的文件,所以初步怀疑是Eigen库有问题。

此处gdb在ROS下调试具体可参看: https://blog.csdn.net/crazyquhezheng/article/details/79657811。

上谷歌搜索Eigen库对应的错误信息,发现有别人在调试ORB_SLAM时出现过类似的问题:

https://stackoverflow.com/questions/42198557/eigen-error-while-building-orb-slam;

https://stackoverflow.com/questions/38647114/orb-slam-installation-on-ubuntu-xenial-16-04;

下面的答案都有提到是因为Eigen库版本的问题,需要安装Eigen2.8.0才可以

回到自己电脑,查看自己的Eigen库版本,首先查找eigen3的安装位置“locate eigen3”,可以看到出现了好多eigen3相关的文件位置。如图所示:

然后找到“xxx/Eigen/src/Core/util/Macros.h”对应的位置,利用gedit或者其他编辑器打开便可以看到预编译的版本定义:

(图自网络)
这表示版本是3.3.4。我的版本是“3.2.92”,抱着试试的态度,决定对eigen3的库版本进行修改。此处可参看: https://blog.csdn.net/xiaoxiao133/article/details/82705460。

删除eigen3.2.92版本,首先“locate eigen3”进行定位,然后删除/usr/include和/usr/lib/cmake下的eigen3文件,采用rm –rf命令,一定要小心,此处删除后不可恢复:

sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums

实际测试只删除“/usr/include/eigen3 /usr/lib/cmake/eigen3”就可以了。此处可参看: https://blog.csdn.net/j_____j/article/details/80622570。

需要注意的是,删除后需要执行“sudo updatedb”和“locate eigen3”查看是否已经删除,第一句必须执行,在我的电脑上不执行的话下一次查找时并不会对eigen3的文件存储地址进行更新,所以会出现明明删除了文件,但是文件显示依旧存在的怪象。

接着安装新的eigen2.8.0。安装方法采用下面任何一种即可:

1)Install eigen form here https://launchpad.net/ubuntu/trusty/amd64/libeigen3-dev/3.2.0-8

     Download the .deb file and install using

sudo dpkg -i libeigen3-dev_3.2.0-8_all.deb

2)

wget "http://bitbucket.org/eigen/eigen/get/3.2.8.tar.gz"
tar zxvf 3.2.8.tar.gz
cd eigen*
/eigen-eigen-07105f7124f9$ mkdir build
/eigen-eigen-07105f7124f9$ cd build
/eigen-eigen-07105f7124f9/build$ cmake ..
/eigen-eigen-07105f7124f9/build$ make
/eigen-eigen-07105f7124f9/build$ sudo make install

   切记:安装完后再次执行“sudo updatedb”更新库的地址。我这安装完后没更新,然后再去编译程序,一直说找不到eigen3的位置。然后我又去locate eigen3发现目录里根本没有安装的eigen3,所有一定要更新一下安装后的文件地址。

 

最后对VINS-Fusion进行catkin_make重新编译,编译时有可能会提示ceres又找不到了,若不提示直接重新编译完VINS-Fusion即可正常运行。若提示ceres找不到,对ceres重新编译,安装(因为重装了eigen3,有可能会对ceres产影响)。正常运行后的图如下所示:

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

VINS-Fusion运行时的段错误(核心已转储)解决方法 的相关文章

  • git clone early EOF解决方法

    在git clone时经常会遇到 early EOF这种错误 fatal The remote end hung up unexpectedly fatal early EOF fatal index pack failed 一般出现这种错
  • 2 用D435i运行VINS-fusion

    文章目录 1 VINS fusion的安装1 1 环境和依赖的安装1 2 编译VINS Fusion1 3 编译错误解决方法 2 VINS Fusion跑数据集3 用相机运行VINS Fusion 环境 xff1a Ubuntu20 04
  • VINS-Mono 加rgbd

    通过对比VINS Mono与其RGBD版本 xff0c 分析其改动思路 一 feature tracker feature tracker node cpp 头文件加入了ros的多传感器时间戳 include lt message filt
  • python,opencv,段错误(核心已转储)

    在主脚本调用其他脚本 xff0c 且主脚本和调用脚本都使用到了cv2 VideoCapture xff08 0 xff09 出现如下错误 xff1a 解决方法 xff1a 只使用一次VideoCapture xff08 xff09 主脚本和
  • VINS-Mono跑Kitti数据集

    参考文章 xff1a VINS Mono KITT00 测试 知乎 如何在kitti raw data上跑起vins mono 知乎 实际上我参考的是LIO SAM里将KITTI转化为bag的方法 Debug https blog csdn
  • VINS-Mono代码阅读笔记:feature_tracker代码阅读(转载)

    转载 xff1a https blog csdn net moyu123456789 article details 100988989 1 入口main函数 feature tracker结点的入口函数为feature tracker n
  • contains an incorrect path解决方法

    在移植UCOS 时出现如下报警 在确认头文件路径添加无误的情况下 xff0c 发现是因为文件名的UCOS 这个3不应用罗马数字 xff0c 用字母I代替 xff0c 改为UCOSIII并重新添加文件后错误消失
  • VINS中陀螺仪零偏的估计

    VINS中关于陀螺仪零偏的初始化估计 对于窗口中得连续两帧 b k b k b k 和 b
  • TX2上布置vins_fusion_gpu指南

    1 参考链接 如果初次安装 xff0c 新的TX2环境 xff0c 请参考文档 https github com arjunskumar vins fusion gpu tx2 nano 2 问题记录 1 xff0c 自己的环境情况 我的环
  • RealSenseD435i (四):运行 VINS-mono代码

    一 必读博客 nbsp https blog csdn net hltt3838 article details 120691764 nbsp nbsp nbsp 一 https blog csdn net hltt3838 article
  • VINS-Mono视觉初始化代码详解

    摘要 视觉初始化的过程是至关重要的 xff0c 如果在刚开始不能给出很好的位姿态估计 xff0c 那么也就不能对IMU的参数进行精确的标定 这里就体现了多传感器融合的思想 xff0c 当一个传感器的数据具有不确定性的时候 xff0c 我们需
  • VINS-Mono代码阅读笔记(十三):posegraph中四自由度位姿优化

    本篇笔记紧接着VINS Mono代码阅读笔记 xff08 十二 xff09 xff1a 将关键帧加入位姿图当中 xff0c 来学习pose graph当中的紧耦合优化部分 在重定位完成之后 xff0c 进行位姿图优化是为了将已经产生的所有位
  • D435i运行VINS-mono以及Kalib标定

    D435i运行VINS mono以及Kalib标定 系统说明 xff1a Ubuntu 18 04 内核版本 xff1a 5 4 0 1 运行VINS mono 参考博客VINS xff08 D435i xff09 测试 问题 xff1a
  • 音频系统POP音的原理和解决方法

    音频系统POP音的原理和解决方法 目录 文章目录 音频系统POP音的原理和解决方法 目录 音频IC与功放IC的电源时序与功能模块使能时序 功放IC输入端INP与INN的阻抗匹配 增大VBIAS滤波电容 BTL输出和SE输出 减小输出端耦合电
  • Maven项目中pox.xml文件报错以及项目编译错误

    我用Eclipse开发Maven项目 本来好好的 但是后来莫名其妙的其中pom xml文件报错 后来执行install命令时又编译不通过报错 我痛苦地摸索了一整天 最后才把问题解决了 虽然问题解决了 但我也不知道问题症结所在 不知道所以然
  • 2021-08-06

    在编译OKVIS中 执行make j8时报错的解决方法 1 根据github上OKVIS的安装步骤一步一步执行 由于github经常进不去 我就进了gitee网站查到OKVIS的安装步骤 参考链接 https gitee com bill4
  • Android Stuido卡顿解决方法

    修改Android studio的安装目录下bin studio vmoptions和studio64 vmoptions 两个文件的以下属性就可以在内存配置比较大的电脑上有效减少Android Stuido卡顿现象 多开也不怎么卡了 Xm
  • CLR 何时尝试加载引用的程序集?

    我想编写一个小型安装程序应用程序来安装网站并创建 IIS 虚拟目录 该应用程序应在 Windows XP Server 2003 IIS 6 以及 Vista 2008 IIS 7 上运行 问题是 对于 IIS 6 我们通过调用 WMI M
  • 如何解决:自定义 MSBuild 任务需要在 AppBase 外部进行组装

    我有一个自定义任务 想要在构建 C 项目时执行 此任务位于 MyTask dll 中 它引用另一个程序集 MyCommon DLL 问题是 MyCommon dll 相对于 MyTask dll 位于 Common MyCommon dll
  • TypeLoadException 说“没有实现”,但它已实现

    我的测试机器上有一个非常奇怪的错误 错误是 System TypeLoadException Method SetShort in type DummyItem from assembly ActiveViewers does not ha

随机推荐

  • 【Python学习】遍历字典

    Python学习 遍历字典 字典 字典 xff08 dict xff09 是可迭代的 通过键 xff08 key xff09 来访问元素的可变的容器类型的数据 字典由两部分视图构成 xff1a 键视图和值视图 键视图不能包含重复的元素 xf
  • 【Python学习】格式化控制符

    Python学习 格式化控制符 在占位符中还可以有格式化控制符 xff0c 对字符串的格式进行更加精准的控制 格式化控制符位于占位符索引或占位符名字的后面 xff0c 之间用冒号分隔 xff0c 语法 xff1a 参数序号 xff1a 格式
  • Oracle:SQL语句--对表的操作——修改列名(即修改字段名)

    修改列名 即修改字段名 alter table 表名 rename column 现列名 to 新列名
  • 社交技能讲座笔记

    作者 xff1a 朱金灿 来源 xff1a clever101的专栏 为什么大多数人学不会人工智能编程 xff1f gt gt gt 感谢张鹏老师做了一堂实用的社交技能讲座 我特地做了一些笔记 xff08 其中包含我的一些理解 xff09
  • Oracle:SQL语句--对表的操作—— 删除字段(即删除列)

    删除一个字段 即删除一列 xff08 未验证在有数据 xff0c 并且互有主外键时 xff0c 是否可用 xff09 语法 xff1a alter table 表名 drop column 字段名 即列名 例 xff1a alter tab
  • Oracle:SQL语句--对表的操作——删除表

    删除表 xff08 未验证在有数据 xff0c 并且互有主外键时 xff0c 是否可用 xff09 表中 列 为 其他表 外键 且有数据 应先解除约束 xff0c 或删除相关表 语法 xff1a drop table 表名 例 xff1a
  • Java作业:输入一个数字判断他是奇数还是偶数

    span class hljs comment 2 输入一个数字判断他是奇数还是偶数 span span class hljs keyword public span span class hljs keyword static span
  • Linux基础知识学习:Linux下修改文件名或修改文件夹名称(有待解决问题)

    Linux下修改文件名或修改文件夹名称 1 修改文件夹名称 1 1我先创建一个test文件夹用来测试 span class hljs keyword mkdir span test 1 2用 mv 命令 将文件移动 xff0c 目标地址如果
  • C语言学习:平方-->乘方(m的n方)

    平方 xff1a 直接用两个数 或变量 相乘就可以表示平方 xff0c 比如x x 不过如果 xff0c 需要求m的n次方 xff0c 就需要用到pow x y 乘方 包括开方 这个库函数了 xff0c 使用pow x y 这个库函数 xf
  • MySql学习:自定义函数之带参函数

    delimiter 如果数据库 test 里的存在函数 formatDate xff0c 就删除这个函数 DROP FUNCTION IF EXISTS test formatDate 创建一个函数 CREATE FUNCTION test
  • docker离线安装

    1 下载离线包 docker官网下载地址 本示例下载的是 xff1a docker 19 03 14 tgz 2 解压到对应目录 解压文件 span class token function tar span xzvf docker 19
  • 2013年:一个技术领导的启程

    作者 xff1a 朱金灿 来源 xff1a http blog csdn net clever101 又到一年总结时 总的来说 xff0c 这一年忙碌而充实 xff0c 现在有点胸中有千言却又不知从何说起 可能每一个希望有所作为的开发人员都
  • STM32——硬件IIC从机通信

    前言 xff1a 根据网上的资料 xff0c 大部分网友表示STM32自带的硬件IIC存在bug xff0c 读写时很容易卡死 自己在调试的时候也出现卡死的情况 xff0c 最后一点一点调试 xff0c 也还是调通了 本文将记录自己调试ST
  • HI3516的编译参数-mcpu=cortex-a7、-mfloat-abi=softfp和-mfpu=neon-vfpv4

    前言 Hi3516A具有浮点运算单元和neon 文件系统中的库是采用软浮点和neon编译而成 xff0c 因此所有Hi3516A板端代码编译时需要在Makefile里面添加选项 mcpu 61 cortex a7 mfloat abi 61
  • 算法移植优化基础

    PS xff1a 为了面试准备的 xff0c 总结的有点粗糙 ARM xff1a Advanced RISC Machines xff0c ARM架构是面向低预算市场设计的第一款RISC微处理器 xff0c 基本是32位单片机的行业标准 x
  • DBoW2在windows上的vs工程搭建方法

    xfeff xfeff 注释 xff1a 蓝体字是 opencv249 专用的修改 xff1b 黑体字是 opencv3 需要的修改 环境 xff1a vs2012 32bit 叙述比较简略 不明之处可以留言 1 配置 opencv 2 4
  • MSCKF_vio学习笔记

    最近因为项目需求 xff0c 对MSCKF vio的论文和代码进行了一番研读 xff0c 现将学习过程记下 MSCKF vio是一种基于多状态约束卡尔曼滤波器的双目视觉里程计 其中多状态约束是指将多帧图像的相机位姿加入卡尔曼状态向量中 xf
  • MSCKF2.0(Mingyang Li-IJRR2013) 论文要点总结

    论文 xff1a Li M Mourikis A I High precision consistent EKF based visual inertial odometry J The International Journal of R
  • SLAM,SLAM+IMU的状态估计问题描述-个人理解

    1 状态估计问题 令状态变量为x 61 x1 x2 x3 观测变量为z 61 z1 z2 z3 状态估计问题等同于求解条件概率分布 xff1a P x z xff0c 在当前观测状态z下的状态x分布 xff0c 也就是最可能的状态是什么 由
  • VINS-Fusion运行时的段错误(核心已转储)解决方法

    平台 ubuntu16 04 43 ROS 问题描述 xff1a 前两天VINS的原作者开源了VINS Fusion的双目版以及给出了和GPS融合的一个demo xff0c 所以试着运行下数据集 每次单目运行10s左右 xff0c 双目1