ZED2运行VINS-MONO初试

2023-05-16

上篇博客,已经完成ZED2的标定,获取相关标定参数,将在此基础上进行VINS的相关修改,实现使用ZED2运行VINS-MONO

一 VINS-MONO环境搭建

因为系统环境从ubuntu18.04更改为ubuntu20.04,故需重新搭建环境,可采用数据集测试环境。
具体可根据VINS-MONO实践

1)ceres 编译报错 error: ‘integer_sequence’ is not a member of ‘std’
在编译一些用到ceres的项目的时候会报错 error: ‘integer_sequence’ is not a member of ‘std’,这是因为较新版本中的ceres对c++版本有要求

在报错的项目的CMakeList里的
set(CMAKE_CXX_FLAGS “-std=c++11”)
改成
set(CMAKE_CXX_STANDARD 14)

2)error: ‘CV_RGB2GRAY’ was not declared in this scope
在报错头文件里添加

#include <opencv2/imgproc/types_c.h>

3)编译时遇到报错 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope
将报错文件上的 CV_FONT_HERSHEY_SIMPLEX 参数改为 cv::FONT_HERSHEY_SIMPLEX

4)将camera_model包改成兼容opencv4

在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

其余问题可参考https://zhuanlan.zhihu.com/p/432167383

编译成功后,运行roslaunch vins_estimator vins_rviz.launch时,报错

ERROR: cannot launch node of type [rviz/rviz]: rviz
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/home/sjj/Vins-mono/src
ROS path [2]=/opt/ros/noetic/share

安装rviz即可

sudo apt-get install ros-noetic-rviz

打开四个终端分别运行以下命令:

roscore
roslaunch vins_estimator euroc.launch 
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_01_easy.bag

数据集运行成功:
在这里插入图片描述

二 修改VINS配置文件

修改realsense_color_config.yaml文件

1)订阅topics修改

imu_topic: "/zed2/zed_node/imu/data_raw"
image_topic: "/zed2/zed_node/left/image_rect_color"

2)左目相机内参修改

model_type: PINHOLE
camera_name: camera
image_width: 1280
image_height: 720
distortion_parameters:
   k1: 0
   k2: 0
   p1: 0
   p2: 0
projection_parameters:
   fx: 414.926283
   fy: 416.695084
   cx: 653.478486
   cy: 365.478913

这里使用的是校正后的图像,故设置畸变系数均为0;

3)IMU至cam的变换矩阵,参数修改为2,使用在线标定(设置为0,使用已有的标定参数也是可以运行的):

# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 2   # 0  Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
                        # 1  Have an initial guess about extrinsic parameters. We will optimize around your initial guess.
                        # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.                        
#If you choose 0 or 1, you should write down the following matrix.

这里IMU和camera之间的外参矩阵建议使用Kalibr工具进行离线标定,也可以改成1或者2让估计器自己标定和优化。

4)IMU参数,使用VINS-mono中给定的参数

#imu parameters       The more accurate parameters you provide, the better performance
acc_n: 0.2          # accelerometer measurement noise standard deviation. #0.2
gyr_n: 0.05         # gyroscope measurement noise standard deviation.     #0.05
acc_w: 0.02         # accelerometer bias random work noise standard deviation.  #0.02
gyr_w: 4.0e-5       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.80       # gravity magnitude

5)不需要在线估计同步时差

#unsynchronization parameters
estimate_td: 0                      # online estimate time offset between camera and imu
td: 0.000                           # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)

6)相机改为全局曝光

#rolling shutter parameters
rolling_shutter: 0                      # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0               # unit: s. rolling shutter read out time per frame (from data sheet). 

三 运行VINS-MONO

roslaunch zed_wrapper zed2.launch
roslaunch vins_estimator realsense_color.launch 
roslaunch vins_estimator vins_rviz.launch

报错:

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.2.0) ../modules/core/src/matrix.cpp:423: error: (-215:Assertion failed) 0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows in function 'Mat'

[feature_tracker-1] process has died [pid 4090, exit code -6, cmd /home/sjj/Vins-mono/devel/lib/feature_tracker/feature_tracker __name:=feature_tracker __log:=/home/sjj/.ros/log/ee50516c-4c0a-11ec-86e6-c7de7ab2b409/feature_tracker-1.log].
log file: /home/sjj/.ros/log/ee50516c-4c0a-11ec-86e6-c7de7ab2b409/feature_tracker-1*.log

原因是相机图片的大小,即高宽尺度问题,可查看相关topic查看。

修改后可成功运行,但是一旦没法实时跟踪,位置就开始飘移
在这里插入图片描述
怀疑原因是如果突然图像跟踪失败并且没有重定位,轨迹会一直往前方走,这是因为只用到IMU数据时,IMU积分得到的位移、速度和角度值一定会发生漂移。对IMU进行参数标定和适当修改重力加速度的值会减少偏移的程度但不能去除。

尝试降低IMU发布频率,位置跟踪效果变好,但是还需从算法角度提交匹配精度和系统鲁棒性。
在这里插入图片描述

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

ZED2运行VINS-MONO初试 的相关文章

  • 由于 dpkg 被中断,无法在 Linux 中安装软件错误 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图使用以下命令安装单声道 sudo apt get install mono 不幸的是 我在安装时关闭了终端 我再次开始重新安装 但显
  • 不使用 Visual Studio 的 C# 中的 GUI

    好的 我是 C 新手 但我需要创建一个简单的 GUI 但我没有 Visual Studio 我使用 Geany 和 Mono 问题是 当我尝试通过 Google 找到以下代码时 using System using System Windo
  • Gtk Widget 到 Winform

    是否可以使用 System Windows Forms 将 Gtk 小部件嵌入到应用程序中 谢谢 两个工具包都使用自己单独的 UI Mainloop 来处理事件 例如鼠标移动 按钮按下等 因此 将两者混合实际上是不可能的 尽管几年前 Gtk
  • 正则表达式匹配未完成

    我曾经有过一次回答了一个问题 https stackoverflow com a 17723854 882200关于将带引号的字符串与转义引号匹配 似乎有些情况会在 NET 上挂起并在 Mono 上崩溃 带有OutOfMemoryExcep
  • C#:无法将“System.Int64”类型的对象转换为“System.Int32”类型

    我的代码如下 Dictionary
  • 平台调用 F# 回调函数

    我在 Raspberry Pi 2 ARM 7 和单声道 上使用 F 我目前正在尝试使用用 C 编写的 WiringPi 库 我已经成功地使用 P Invoke 来使用一些函数 现在我尝试使用中断 参见http wiringpi com r
  • 嵌入.Net运行时

    我是否可以嵌入 net 运行时 以便主机操作系统不需要 net 我正在考虑用 Mono 来做到这一点 如下所示 http mono project com Embedding Mono http mono project com Embed
  • 编译时引用.NET dll(使用单声道)

    我问了一个安装 F powerpack 并使用它的问题here https stackoverflow com questions 6206406 how to install and use f powerpack in mono err
  • Mono.Math.BigInteger 由于其保护级别而无法访问

    我正在使用 ideone 编写 C 程序 这是我第一次使用 Mono 我正在尝试使用 BigInteger 类 Mono Math BigInteger 但我不断收到错误 下面是我的代码 这是怎么回事 我该如何解决 谢谢 using Sys
  • Mono WebClient 编码问题

    我正在尝试移植 NET应用程序从 Windows 到 Mono 但某些在 Windows 上运行的代码不再运行 正如预期的那样 on mono WebClient client new WebClient Console WriteLine
  • mod_mono 在新安装的 centos 上出现 EOF 错误

    我全新安装了 Centos 6 3 已完全更新 我已经从源安装了 mono xsp 和 mod mono 每个包都完美编译 它们都以 usr local mono 前缀安装 因此所有内容都位于 usr local mono 下 我已将 In
  • 如何从与桌面交互的应用程序与 Windows 服务进行通信?

    使用 Net 与服务交互的最佳方式是什么 即大多数托盘应用程序如何与其服务器通信 如果这个方法也是跨平台的 那就更好了 在 Mono 中工作 所以我猜远程处理已经过时了 Edit 忘了说了 我们仍然需要在现场支持 Windows 2000
  • Microsoft 开源 .NET 后 CoreCLR 与 Mono 项目的关系

    有人可以向我解释一下 Mono 和 Microsoft 最近提供的开源 Linux 可移植 NET 堆栈 CoreCLR CoreFX Roslyn ASP NET 之间当前的关系吗 很明显这些项目是重叠的 所以我很好奇它们两个的路线图是什
  • 扩展 Mono C# 编译器:有任何文档或先例吗?

    我目前正在参与一些有趣的编程语言研究 到目前为止 这些研究的重点是通过一些非常强大的基于程序员生产力的功能来扩展即将推出的 Java 7 0 编译器 这项工作应该同样适用于 C 等相关编程语言 我目前正在研究用于对该功能的 C 端口进行原型
  • Razor View Engine 是否适用于 Mono?

    我尝试搜索了一下 但没有找到答案 Razor View Engine 在 Mono 中工作吗 是的 它确实 我让它在 Linux 上与 mono 一起工作 You need mono 2 10 2 from the stable sourc
  • Mono 在实际应用中的应用有多广泛?

    跟进评论问题here https stackoverflow com questions 3736101 what applications had better be developed in c over c in todays bus
  • 在 Xamarin.Mac 应用程序包上运行 Instruments

    米格尔 德伊卡萨 https stackoverflow com users 16929 miguel de icaza博客上写了关于使用 Instruments 分析使用 Mono 构建的 Mac 应用程序 http tirania or
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 如何在android上使用xamarin表单执行脚本

    我正在尝试在 Android Mono 上使用 Xamarin Forms 运行 C 脚本 当我运行脚本时 我收到错误 System IO FileNotFoundException 找不到文件 mscorlib dll 这是我试图执行的代
  • 在控制器构造函数中访问 GUI 组件时出现 NullReferenceException

    在 Mono 中 我有一个带有控制器的简单 NSWindow 我放置了一个 NSSplitView 和一个 NSButton 如果我尝试从构造函数中访问 NSSplitView 或Initialize 方法我得到一个 nullReferen

随机推荐

  • window7 触屏操作相关

    一 体系概述 1 Windows Touch Input 和 Gestures消息 Windows Touch消息特性 通过在执行期间的监听和解释来使能 下面的示例展示了Windows7 上消息是怎么从硬件产生并发给应用程序的 在最左边的那
  • 【控制理论】滑模控制最强解析

    更新 xff0c 在知乎创建了一个专栏 xff0c 主要包括一些控制理论和机器人控制方面的知识 https zhuanlan zhihu com p 78549442 滑模控制是一种相当简单而且控制性能优越的控制方法 xff0c 但是绝大多
  • 【stm32】 OS 支持特性之 PendSV 异常和 SVC异常

    1 SVC和PENDSV 基本概念 SVC xff08 系统服务调用 xff0c 亦简称系统调用 xff09 和 PendSV xff08 可悬起系统调用 xff09 xff0c 它们多用于在操作系统之上的软件开发中 SVC 用于产生系统函
  • 数据结构视频教程-绝对是史上最全的,共30个!!

    史上最全的数据结构视频教程打包下载地址 本文出自出自我是码农 xff0c 转载请注明出处 xff0c 谢谢 xff01 以下数据结构视频教程是我多年收集的 xff0c 因为在百度网盘上分享整个教程很快就会被delete xff0c 所以我只
  • 数据结构视频教程哪个好

    来源 xff1a 我是码农 xff0c 转载请保留出处和链接 xff01 本文链接 xff1a http www 54manong com id 61 1207 目前 xff0c 具我粗略不完全统计 xff0c 网络上流传的数据结构视频教程
  • X11相关(一)

    在盒子上折腾qtmediahub的时候 xff0c uxlaunch怎么都无法正常启动 xff0c 查了一下x11的log xff0c 发现错误如下 xff1a XSERVTransSocketUNIXCreateListener Sock
  • java获取首字母字符串首字母

    import net sourceforge pinyin4j PinyinHelper import java util regex Pattern String hostName 61 34 集团 2012 版知识库管理系统 34 St
  • 嵌入式到底该怎么学

    想学习单片机的同学可以关注 私信我或者在评论区回复我要入门 很多人都不知道嵌入式怎么学 xff0c 这一期我就简单说一下我的理解 嵌入式这个概念太广了 xff0c 可能很多人认为嵌入式就是嵌入式Linux 但是其实并不仅仅只有Linux x
  • 嵌入式有哪些发展方向?

    想学习单片机的同学可以关注 私信我或者在评论区回复我要入门 最近几年经过移动互联网 物联网的高速发展 xff0c 嵌入式技术在我们生活中随处可见 xff0c 在通讯 网络 工控 医疗 电子等领域发挥着越来越重要的角色 xff1b 随着对嵌入
  • 公式截取神器:将文献中的公式快速粘贴进word:

    一共需要两个软件 mathpix snipping tool 负责对公式截屏 然后自动转化为LaTex公式语法 AxMath 负责将LaTex语法转化为word里可显示的公式 作用与MathType一样 但个人感觉这个软件更好用 而且还是国
  • ubuntu安装HDF5 1.10.4 以及对应的python hdf5包

    1 安装HDF5 1 10以及对应的python hdf5的包 xff08 HDF5 1 10 4安装具体可参考其他博客 xff09 2 使用命令行环境变量安装对应的python hdf5包 xff0c HDF5 DIR 61 usr lo
  • Redis相关知识点整理

    文章目录 前言一 Redis基本数据类型StringHashListSetSort Set xff08 zset xff09 二 键值 xff08 key xff09 的常用操作三 Redis持久化方式3 1 持久化方式之RDB3 2 持久
  • html5基础入门知识(干货)

    一 什么是html 用来描述网页的语言 超文本标记语言 不是编程 xff0c 而是一种标记语言 使用标记标签来描述网页等等 我们只需记住html就是用标记标签来描述网页 xff0c xff08 网页是前端哦 xff0c 平时你们听过的c c
  • Matlab使用过程中内存不足问题的总结

    做图像处理的 xff0c 对matlab这工具软件一定不会陌生 xff0c 他的高集成度为图像处理提供了很大的方便 xff0c 但我们在使用时难免会出现内存不足的问题 xff0c 2 3G的内存还不够处理一次简单图像 xff0c 这确实很恐
  • VIO系统介绍

    VIO xff08 visual inertial odometry xff09 即视觉惯性里程计 xff0c 有时也叫视觉惯性系统 xff08 VINS xff0c visual inertial system xff09 xff0c 是
  • VINS-MONO概述

    VINS Mono是HKUST的Shen Shaojie团队开源的一套Visual Inertial融合定位算法 xff0c https github com HKUST Aerial Robotics VINS Mono xff0c 是用
  • 主流VIO框架分析及VINS部分解析

    本文为搜集的资料整理 xff1a C0包含位姿和运动信息 xff1b 对于T0来说 xff0c 不仅受rv10 rv11的视觉影响 xff0c 也受rb01的IMU的影响 上述方式繁琐 xff0c 故引入因子图 xff0c 便于思路梳理和理
  • evo评测VINS-MONO---TUM数据集

    为了想测试室外场景下VINS MONO定位情况 xff0c 室外环境的KITTY数据集因无时间戳 xff0c EVO测评较困难 故选择TUM数据集 xff0c outdoors1 8 户外 xff1a 在校园内的室外场景拍摄 xff0c 但
  • ROS编译错误:Could not find a package configuration file provided by “XXX“

    解决 xff1a 系统提示缺少什么包 xff0c 就安装什么包即可 xff1a sudo apt get install ros noetic xff0c 依据自己的系统和出错提示更改相关内容 示例 xff1a 1 xff09 CMake
  • ZED2运行VINS-MONO初试

    上篇博客 xff0c 已经完成ZED2的标定 xff0c 获取相关标定参数 xff0c 将在此基础上进行VINS的相关修改 xff0c 实现使用ZED2运行VINS MONO 一 VINS MONO环境搭建 因为系统环境从ubuntu18