Kalibr进行相机-IMU联合标定踩坑记录RuntimeError: Optimization failed!

2023-05-16

1.具体标定步骤,跟网上别的一模一样,此处就不列举
2.记录踩坑过程:RuntimeError: Optimization failed!

当执行到开始联合标定时,也就是如下指令:

kalibr_calibrate_imu_camera --target ./checkerboard_11x8_25x25cm.yaml --cam ./camchain-.camd435i.yaml --imu ./imu_self.yaml --bag ./imu_435i_move.bag --bag-from-to 10 90

当初直接执行这种指令,在小觅相机下标定成功,没报错。后面用realsense单目+独立IMU标定就开始报如下错误:

The Jacobian matrix is 194404 x 25179
[0.0]: J: 1.45862e+07
Exception in thread block: Exception in thread block: [aslam::Exception] /home/louis/catkin_ws/src/kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp:447: toTransformationMatrixImplementation() assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [15106.3 <= 15106.3 < 15106.4]: Spline Coefficient Buffer Exceeded. Set larger buffer margins!
[aslam::Exception] /home/louis/catkin_ws/src/kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp:447: toTransformationMatrixImplementation() assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [15118.2 <= 15118.2 < 15118.2]: Spline Coefficient Buffer Exceeded. Set larger buffer margins!
Exception in thread block: [aslam::Exception] /home/louis/catkin_ws/src/kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp:447: toTransformationMatrixImplementation() assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [15094.8 <= 15094.8 < 15094.9]: Spline Coefficient Buffer Exceeded. Set larger buffer margins!
[ERROR] [1454555378.858709]: Optimization failed!
Traceback (most recent call last):
  File "/home/hyper/catkin_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_imu_camera", line 206, in <module>
    main()
  File "/home/hyper/catkin_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_imu_camera", line 182, in main
    iCal.optimize(maxIterations=parsed.max_iter, recoverCov=parsed.recover_cov)
  File "/home/hyper/catkin_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_imu_camera_calibration/IccCalibrator.py", line 183, in optimize
    raise RuntimeError("Optimization failed!")
RuntimeError: Optimization failed!

一开始查到的资料都说是数据录的有问题,但是我更换相机和imu反复试过多次发现并没有解决问题。而且在这个报错上面可以成功读取自己对应的imu信息和单目信息。所以说数据大概率也没问题。最终让我在kalibr的issues里找到了解决问题办法。
3.解决方法:
请打开kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_imu_camera.py文件,搜索timeOffsetPadding我的大概在198行。我先是输出它的值看了一下是0.03,然后增大此变量的值即可,我增大到了0.3 (PS:不能太大,我一开始改成了100,直接内存给干爆了)。具体修改如下,仅供参考:

    print "Building the problem"
    #print(parsed.timeoffset_padding)    #输出看一眼timeOffsetPadding的值
    iCal.buildProblem(splineOrder=6, 
                      poseKnotsPerSecond=100, 
                      biasKnotsPerSecond=50, 
                      doPoseMotionError=False,
                      doBiasMotionError=True,
                      blakeZisserCam=-1,
                      huberAccel=-1,
                      huberGyro=-1,
                      noTimeCalibration=parsed.no_time,
                      noChainExtrinsics=(not parsed.recompute_chain_extrinsics),
                      maxIterations=parsed.max_iter,
                      #timeOffsetPadding=parsed.timeoffset_padding,     #原来的代码
                      timeOffsetPadding=0.3,     #修改后
                      verbose = parsed.verbose)

修改后再从新进行标定即可。

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

Kalibr进行相机-IMU联合标定踩坑记录RuntimeError: Optimization failed! 的相关文章

  • 无法反序列化为对象:类型,KeyError: ' key: int;值:str'

    我正在编写一个 python 脚本 以使用 azure devops rest api 的 python 客户端库在 azure devops 中创建用户 我正在使用添加用户权利 的函数会员权利管理客户端 链接到该客户端的代码 https
  • 二维的 Scipy curve_fit 不起作用 - 对象太深?

    我有一个 2400 x 2400 的数据数组 如下所示 data 2 302670298082603040e 01 2 304885241061924717e 01 2 305029774024092148e 01 2 3048071008
  • 将数据写入文件:fflush()需要大量时间

    我有一个要求 其中我必须缓冲大量数据 以 GB 为单位 以供将来使用 由于没有足够的 RAM 来缓冲如此大量的数据 我决定将数据存储在文件中 现在的陷阱是 当我将数据写入文件时 其他线程可能需要 缓冲 数据 因此每次向文件流写入内容时 我都
  • R:tuneRF 函数的行为不明确(randomForest 包)

    我对这句话的含义感到不舒服stepFactor的参数tuneRF http www inside r org packages cran randomForest docs tuneRF函数用于调整mtry进一步使用的参数randomFor
  • 如何使用 NumPy 的广播来加速相关性计算?

    我正在尝试利用NumPy 广播 https docs scipy org doc numpy user basics broadcasting html和后端数组计算可显着加快此功能 不幸的是 它的扩展性不太好 所以我希望能够大大提高它的性
  • 迷你图渲染速度慢并且浏览器挂起

    迷你图 http omnipotent net jquery sparkline 非常适合制作小型内联图 但是 如果它们所在的容器是隐藏的 则不能简单地将它们绘制在幕后然后显示它们 您必须首先显示容器 然后调用 sparkline disp
  • 涉及优化器的局部变量构造和销毁

    如果我有这个代码 class A class B void dummy A a B b 我知道变量a and b将以相反的分配顺序销毁 b将首先被摧毁 然后a 但我可以确定优化器永远不会交换的分配和构造a and b 或者我必须使用vola
  • 优化 Web 应用程序开发策略

    如今 许多网络应用程序正在使用它们自己无法使用的 API 或代码 并且通常使用效率低下 我想到了一些谷歌地图混搭 对于 php asp 后端 HTML javascript 尤其是现在所有的 AJAX 存在许多潜在的瓶颈 问题 低效率和双重
  • 流式音频播放延迟(约 200 毫秒)

    我有一个播放流式音频数据的应用程序 如聊天客户端 该工作流程涉及三个简单步骤 首先发送文件头信息 采样率 每个样本的位数和通道数 音频波形输出设备根据上述参数进行初始化 音频 pcm 数据被发送并在上述设备上播放 数据接收代码是本机的 C
  • C++ 中的编译器指令重新排序优化(以及阻碍它们的因素)

    我已将代码缩减为以下内容 这在保留我感兴趣的编译器输出的同时 尽可能简单 void foo const uint64 t used uint64 t ar 100 for int i 0 i lt 100 i ar i some globa
  • 打开文件选择器对话框时出现 Glib-GIO-ERROR

    我在 Windows 7 中使用 GTK3 codeblcks IDE glade3 在我的应用程序中 我有一个按钮 单击该按钮应打开一个 gtk file chooser dialog 但给出填充错误 Glib GIO 错误 系统上未安装
  • 集合划分比差分获得更好的结果

    分区问题 https en wikipedia org wiki Partition problem已知是 NP 困难的 根据问题的特定实例 我们可以尝试动态规划或一些启发式方法 例如差分法 也称为 Karmarkar Karp 算法 后者
  • 预取双类成员需要转换为 char*?

    我有一个正在使用的课程 mm prefetch 预先请求包含 double 类型的类成员的缓存行 class MyClass double getDouble return dbl other members double dbl othe
  • 查找二维空间中圆内的所有点

    我表示我的 2D 空间 考虑一个窗口 其中每个像素显示为 2D 数组中的一个单元格 即 100x100 的窗口由相同维度的数组表示 现在给定窗口中的一个点 如果我画一个半径的圆r 我想找到该圆圈中的所有点 我想我应该检查半径周围方形区域中的
  • 如何使用 #pragma 在 G++ 中启用优化

    我想在没有命令行参数的情况下启用 g 优化 我知道 GCC 可以通过写来做到这一点 pragma GCC optimize 2 在我的代码中 但它似乎在 G 中不起作用 此页面可能有帮助 http gcc gnu org onlinedoc
  • 快速分类(分箱)

    我有大量条目 每个条目都是浮点数 这些数据x可以通过迭代器访问 我需要使用像这样的选择对所有条目进行分类10
  • 用于预乘 ARGB 的 SSE alpha 混合

    我正在尝试编写一个支持 SSE 的 alpha 合成器 这就是我想出的 首先 混合两个 4 像素向量的代码 alpha blend two 128 bit 16 byte SSE vectors containing 4 pre multi
  • 如何分析Android应用程序的电池使用情况并对其进行优化?

    我想分析我的应用程序的电池使用情况 我的意思是应用程序的各个部分 例如 广播接收器 监听器 服务等 使用多少电池 我需要一个详细的列表 从列表中 我想优化电池的使用 方法与使用内存分析器类似 http android developers
  • 使用多个模块时优化 Flex

    我有一个 Flex 应用程序 加载时间非常重要 消费者网站 我希望能够在屏幕上显示一些内容 然后允许根据需要加载其他模块 我面临的问题是所有模块的总和比我将所有组件包含在单个 swf 文件中要大得多 原因很明显 例如 访问 Web 服务所需
  • 为什么在强度降低乘法和循环进位加法之后,这段代码的执行速度会变慢?

    我正在读书阿格纳 雾 https en wikipedia org wiki Agner Fog s 优化手册 https en wikipedia org wiki Agner Fog Optimization 我遇到了这个例子 doub

随机推荐

  • VINS-Mono学习(五)——闭环优化4DoF

    这里再重写一边VINS开启的新线程 xff1a 前端图像跟踪后端非线性优化闭环检测闭环优化 闭环优化是跟在闭环检测之后步骤 首先回顾闭环检测的过程 xff1a 1 pose graph node cpp开启process闭环检测线程 xff
  • C语言预定义跟踪调试

    标准C语言预处理要求定义某些对象宏 xff0c 每个预定义宏的名称一两个下划线字符开头和结尾 xff0c 这些预定义宏不能被取消定义 xff08 undef xff09 或由编程人员重新定义 下面预定义宏表 xff0c 被我抄了下来 LIN
  • 链式存储

    1 特点 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 xff0c 这组存储单元可以是连续的 xff0c 也可以是不连续的这就意味着 xff0c 这些数据元素可以存在内存未被占用的任意位置 2 结点是什么 在数据结构
  • ROS驱动包无法连接A2M7雷达解决办法

    我在使用A2M7雷达时 xff0c 波特率是256000 xff0c 之前驱动跑A2M6和A2M8雷达时 xff0c 波特率115200 xff0c 都可以使用 xff0c 现在跑M7就不行 xff0c 显示无法绑定到串口 xff0c 刚开
  • FreeRTOS prvTaskExitError 创建任务错误

    文件port c prvTaskExitError 任务退出错误 xff0c 一个可能在任务里面写了return xff0c 另一个可能任务切换退出问题 xff0c 入栈和出栈的时候出了问题 1 static void prvTaskExi
  • Ubuntu18.04下VSCode环境编写Linux相关驱动程序时出现未定义标识符问题

    Ubuntu18 04下VSCode环境编写Linux相关驱动程序时出现未定义标识符问题 编译Linux相关驱动程序时 xff0c 出现未定义标识符问题 但是ctrl 43 鼠标左键可以找到相关定义 这是因为没有加载对应Linux内核中头文
  • postman基础使用教程

    Postman教程大全 简书 推荐一款接口测试工具 xff01 POSTMAN xff01 简单来说 xff0c 四个词 xff0c 简单实用大方美观 xff01 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插
  • Make、Makefile、CMake和CMakeLists

    一 Make 在 认识编译器和C C 43 43 编译 一文中介绍过 xff0c 一个 c cpp 文件从源文件到目标文件的过程叫做编译 xff0c 但是一个项目中不可能只存在一个文件 xff0c 这就涉及到多个文件的编译问题 xff0c
  • C++将类写在头文件中

    比如有个类ABC要在main cpp内使用 xff0c 创建两个文件 ABC h xff0c ABC cpp 把类的声明都写在h里面 xff0c 方法的实现写在cpp里面 xff0c 然后在main cpp内 include ABC h x
  • ubuntu搭建一个简单的http服务器

    使用ubuntu搭建一个简单的http服务器 安装apache2 1 sudo apt get update 2 sudo apt get install apache2 安装成功后 xff0c 再 etc apache2目录可见其配置文件
  • Postman操作基本教程

    一 xff1a 基本介绍 xff1a Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 Postman背景介绍 用户在开发或者调试网络程序或者是网页B S模式的程序的时候是需要一些方法来跟踪网页请求的 xff0
  • ROS中rosserial通讯协议初探

    ROS中rosserial通讯协议初探 串行的通讯 xff0c 我们用串口模拟下通讯图 官方 http wiki ros org rosserial rosserial 1概述 标准ROS序列化message的协议 xff0c 可以让一个字
  • 使用cmake交叉编译arm平台so

    使用cmake交叉编译arm平台so 众所周知 xff0c androidStudio可以编译apk及so 具体配置此处不一一介绍 xff0c 但对于需要经常编译不同项目的小编来说 xff0c 太过重量级了 xff0c 假如在编译系统下并没
  • Linux编译C文件

    熟悉了Windows平台下编译一个C 43 43 工程后 xff0c 你是否会提出这样一个问题 xff1a 在Linux平台下又如何编译一个C 43 43 工程呢 xff1f 希望本文能给正在学习或想学习Linux C 43 43 开发的你
  • stm32 esp8266 ota升级-qt bin文件处理工具

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • 04.Android调用C语言的方法

    为了在Android端调用底层的驱动程序 xff0c 我们需要在Android中调用C语言 直接新建一个Native C 43 43 工程 xff0c 然后按照这篇文章的方法 xff1a JNI与NDK简析 xff08 一 xff09 St
  • gazebo教程---使用gazebo插件

    一 添加传感器插件 xff08 1 xff09 在rrbot xacro中添加 lt link gt 和 lt joint gt xff0c 内容如下 xff1a lt joint name 61 span class token stri
  • 基于加速度计与磁力计的姿态解算方法(加计补偿偏航)

    附上转载文章链接 加速度计实时输出机体坐标系下的三轴线加速度 xff0c 磁力计实时输出机体坐标系下的三轴地磁强度 xff0c 加速度计能解算出俯仰角与横滚角 xff0c 由磁力计计算出航向角 xff0c 两者相互配合可以解算三个姿态角信息
  • Xavier踩坑之-GPIO做外触发

    Xavier入门踩坑 PWM问题解决方法 GPIO问题解决方法 PWM问题 由于需要做外部传感器的触发同步 xff0c 所以需要一个方波 xff0c 考虑用Xavier的PWM xff0c 结果折腾了好久发现需要配置内部硬件 xff0c 折
  • Kalibr进行相机-IMU联合标定踩坑记录RuntimeError: Optimization failed!

    1 具体标定步骤 xff0c 跟网上别的一模一样 xff0c 此处就不列举 2 记录踩坑过程 xff1a RuntimeError Optimization failed 当执行到开始联合标定时 xff0c 也就是如下指令 xff1a ka