OpenVINS学习1——数据集配置与运行

前言

OpenVINS是基于MSCKF的开源VIO算法,有非常详细的官网文档可以学习使用,将来一段时间的主要实践工作,就是深度掌握这份开源代码。

https://docs.openvins.com/

一、环境配置与Euroc数据集运行

我的环境是Ubuntu20.04,ROS1,参看https://docs.openvins.com/gs-installing.html进行配置下载就行,Euroc数据集从OpenVINS支持数据集那里能够直接下载。

https://docs.openvins.com/gs-datasets.html#gs-data-euroc

关于Euroc的运行,我下载的最新版本OpenVINS好像没有pgeneva_ros_eth.launch ,网上很多博客可能没办法直接运行。不过参考这个博客就行。

https://blog.csdn.net/PG__13/article/details/123323802

在这里插入图片描述

关于运行配置,主要都在subscribe.launch里面,通过配置不同参数,进行运行选项的选择。

<launch><!-- what config we are going to run (should match folder name) --><arg name="verbosity"   default="INFO" /> <!-- ALL, DEBUG, INFO, WARNING, ERROR, SILENT --><arg name="config"      default="euroc_mav" /> <!-- euroc_mav, tum_vi, rpng_aruco --><arg name="config_path" default="$(find ov_msckf)/../config/$(arg config)/estimator_config.yaml" /><!-- mono or stereo and what ros bag to play --><arg name="max_cameras" default="2" /><arg name="use_stereo"  default="true" /><arg name="bag_start"   default="0" /> <!-- v1-2: 0, mh1: 40, mh2: 35, mh3: 17.5, mh4-5: 15 --><arg name="bag_rate"    default="1" /><arg name="dataset"     default="V1_01_easy" /> <!-- V1_01_easy, V1_02_medium, V2_02_medium --><arg name="dobag"       default="false" /> <!-- if we should play back the bag --><arg name="bag"         default="/media/patrick/RPNG\ FLASH\ 3/$(arg config)/$(arg dataset).bag" />
<!--    <arg name="bag"         default="/home/patrick/datasets/$(arg config)/$(arg dataset).bag" />-->
<!--    <arg name="bag"         default="/datasets/$(arg config)/$(arg dataset).bag" />--><!-- saving trajectory path and timing information --><arg name="dosave"      default="false" /><arg name="dotime"      default="false" /><arg name="path_est"    default="/tmp/traj_estimate.txt" /><arg name="path_time"   default="/tmp/traj_timing.txt" /><!-- if we should viz the groundtruth --><arg name="dolivetraj"  default="false" /><arg name="path_gt"     default="$(find ov_data)/$(arg config)/$(arg dataset).txt" /><!-- MASTER NODE! -->
<!--    <node name="ov_msckf" pkg="ov_msckf" type="run_subscribe_msckf" output="screen" clear_params="true" required="true" launch-prefix="gdb -ex run &#45;&#45;args">--><node name="ov_msckf" pkg="ov_msckf" type="run_subscribe_msckf" output="screen" clear_params="true" required="true"><!-- master configuration object --><param name="verbosity"              type="string" value="$(arg verbosity)" /><param name="config_path"            type="string" value="$(arg config_path)" /><!-- world/filter parameters --><param name="use_stereo"             type="bool"   value="$(arg use_stereo)" /><param name="max_cameras"            type="int"    value="$(arg max_cameras)" /><!-- timing statistics recording --><param name="record_timing_information"   type="bool"   value="$(arg dotime)" /><param name="record_timing_filepath"      type="string" value="$(arg path_time)" /></node><!-- play the dataset --><group if="$(arg dobag)"><node pkg="rosbag" type="play" name="rosbag" args="-d 1 -r $(arg bag_rate) -s $(arg bag_start) $(arg bag)" required="true"/></group><!-- record the trajectory if enabled --><group if="$(arg dosave)"><node name="recorder_estimate" pkg="ov_eval" type="pose_to_file" output="screen" required="true"><param name="topic"      type="str" value="/ov_msckf/poseimu" /><param name="topic_type" type="str" value="PoseWithCovarianceStamped" /><param name="output"     type="str" value="$(arg path_est)" /></node></group><!-- path viz of aligned gt --><group if="$(arg dolivetraj)"><node name="live_align_trajectory" pkg="ov_eval" type="live_align_trajectory" output="log" clear_params="true"><param name="alignment_type" type="str" value="posyaw" /><param name="path_gt"        type="str" value="$(arg path_gt)" /></node></group></launch>

二、TUM数据集运行测试

TUM数据集也可以从OpenVINS支持数据集那里下载,运行命令主要也是参照subscribe.launch进行配置,因为OpenVINS原生支持TUM数据集,所以比较容易跑通。运行命令如下:

//开启一个终端
roscore//开启一个终端
rviz
//打开rviz后,再点击左上角,open config,添加workspace/catkin_ws_ov/src/open_vins/ov_msckf/launch/display.rviz配置文件//开启一个终端
source devel/setup.bash
roslaunch ov_msckf subscribe.launch config:=tum_vi dataset:=dataset-room1_512_16//在存放数据bag的文件夹内开启一个终端
rosbag play dataset-room1_512_16.bag

有个真值的问题没解决,运行Euroc的时候就发现了,RVIZ中没有显示真实轨迹,这里以TUM为例演示一下怎么显示真实轨迹,Euroc数据集是同理的。将dolivetraj参数配置为true就行,因为OpenVINS里自带了真实轨迹数据,会自动找到,但是如果使用其他数据集,则还需要改动真值路径等参数。

roslaunch ov_msckf subscribe.launch config:=tum_vi dataset:=dataset-room1_512_16 dolivetraj:=true

在这里插入图片描述
此外,ov_eval中还有很多评估工具,需要单独运行来使用,之后出一期专门学习一下这个。

3、VIRAL数据集配置运行

这是今天的重点部分,原生OpenVINS并不支持VIRAL数据集,但是VIRAL数据集作者曾经就在OpenVINS运行出过一个改动好的代码,但是现在OpenVINS中launch文件经过改动了,因此也需要重新配置一番。

VIRAL支持的OpenVINS:https://github.com/brytsknguyen/open_vins.git

主要需要修改的地方有:配置文件添加,真实轨迹文件添加,数据集添加测试。
直接去VIRAL支持的OpenVINS里把ntuviral.rviz、run_ntuviral.launch粘贴到自己的OpenVINS中的open_vins/ov_msckf/launch文件夹下就行了。VIRAL作者已经将配置参数都写到了run_ntuviral.launch里面。
在这里插入图片描述

运行命令

//打开一个终端
roscore//打开一个终端
roslaunch ov_msckf run_ntuviral.launch bagfile:=/home/merlincs/workspace/dataset/VIRAL/eee_01
//后面是bag的路径

这一块还是有问题,明天再搞了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3中实现el-tree通过ctrl或shift批量选择节点并高亮展示

一、看效果&#xff1a; 按住ctrl键实现单个多选 按住shift实现区间范围多选 二、代码&#xff1a; vue页面 <template><el-treeclass"w100%":data"$.treeData"ref"treeTab…

Unity中Batching优化的静态合批

文章目录 前言一、静态合批的规则1、模型使用同一个材质2、勾选静态合批3、对于静态合批后的Mesh顶点总数&#xff0c;不超过2^16^即可以使用同一批次&#xff0c;超过则会开启一个新的批次4、对与使用同一材质的不同模型间&#xff0c;纹理贴图的问题&#xff0c;我们可以通过…

数据可视化工具选择:功能、易用性与安全性

作为一名数据可视化大屏设计师&#xff0c;我深知选择一款合适的数据可视化工具对于提高工作效率和呈现效果的重要性。下面&#xff0c;我将从真正对我们数据可视化大屏设计师有用的角度为大家介绍选择数据可视化工具的一些必要条件和要求。 1. 功能强大与灵活定制 首先&…

如何做好口译服务,同传和交传哪个服务好

随着中国经济的蓬勃发展和综合实力的不断增强&#xff0c;中国与世界各国的交流也日益频繁。口译作为对外交流的桥梁与纽带&#xff0c;需求量与日俱增&#xff0c;其重要性不言而喻。那么&#xff0c;如何做好口译服务呢&#xff1f;是同传还是交传更好呢&#xff1f; 业内专家…

机器人纯阻抗控制接触刚性环境

问题描述 在机器人学中&#xff0c;阻抗控制是一种常用的控制策略&#xff0c;用于管理机器人在与环境交互时的运动和力。阻抗控制背后的关键概念是将环境视为导纳&#xff0c;而将机器人视为阻抗。 纯阻抗控制接触刚性环境时&#xff0c;机器人的行为方式主要受其阻抗参数的…

表单小程序作用体现在哪

表单的用途非常广泛&#xff0c;它是线上收集信息或用户预约/需求服务的重要方式&#xff0c;对商家来说如今线上平台非常多&#xff0c;生意开展的形式也越来越多&#xff0c;比如常见的预约、报名、收款、产品支付等都可以通过表单实现。 接下来啊让我们看看通过【雨科】平台…

解决:During handling of the above exception, another exception occurred

解决&#xff1a;During handling of the above exception, another exception occurred 文章目录 解决&#xff1a;During handling of the above exception, another exception occurred背景报错问题报错翻译报错位置代码报错原因解决方法参考内容&#xff1a;今天的分享就到…

numpy数据读取保存及速度测试

目录 数据保存及读取 速度比对测试 数据保存及读取 代码示例&#xff1a; # 导入必要的库 import numpy as np # 生成测试数据 arr_disk np.arange(8) # 打印生成能的数据 print(arr_disk) # numpy保存数据到本地 np.save("arr_disk", arr_disk) # 加载本地数据…

排序算法-插入/希尔排序

1 插入排序 1.1基本思想&#xff1a; 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a;把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。 1.2直…

【js】js实现多个视频连续播放:

文章目录 一、效果&#xff1a;二、实现&#xff1a; 一、效果&#xff1a; 二、实现&#xff1a; <!DOCTYPE html> <html> <head><title>Video Player</title><style>#progressBar { width: 800px;height: 20px;background-color: #dd…

【Vulnhub 靶场】【Momentum: 2】【简单】【20210628】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/momentum-2,702/ 靶场下载&#xff1a;https://download.vulnhub.com/momentum/Momentum2.ova 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年06月28日 文件大小&#xff1a;698 MB 靶场作者&#xff1…

uni-app实现安卓原生态调用身份证阅读器读卡库读身份证和社保卡、银行卡、IC卡等功能

DONSEE系列多功能读写器Android Uniapp API接口规范V1.0.0 本项目Uniapp调用了身份证读卡器的库文件&#xff1a;DonseeDeviceLib-debug.aar&#xff0c;该库放到nativeplugins\donsee-card\android&#xff0c;然后会自动加载。SDK会自动检查是否拥有USB设备权限&#xff0c;…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(三)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

《洛谷深入浅出进阶篇》p2568 GCD

P2568 GCD - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P2568 大致题意&#xff1a;给定正整数n&#xff0c;求1< x,y<n 且 gcd&#xff08;x&#xff0c;y&#xff09;为素数的数对&#xff08;x&#xff0c;y&#xff09;有多少对。…

一文搞懂全连接算法和它的作用

如果你是搞AI算法的同学&#xff0c;相信你在很多地方都见过全连接层。 无论是处理图片的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;还是处理文本的自然语言处理&#xff08;NLP&#xff09;网络&#xff0c;在网络的结尾做分类的时候&#xff0c;总是会出现一个全…

国外小哥综合传统CGI和AI技术制作出融合Lofi音乐与人工智能动画作品

这个视频制作花费了18个小时&#xff0c;渲染则耗费了4个小时&#xff0c;使用了Midjourney、PS GenFill、After Effects和Magnific AI等工具。 国外小哥综合传统CGI和AI技术制作出融合Lofi音乐与人工智能动画作品 大致制作流程&#xff1a; Midjourney出图&#xff0c;PS Gen…

带大家做一个,易上手的家常辣子鸡

先从冰箱拿出鸡肉解冻 拿小半根葱 去掉最外面一层皮 切成小段 最备好 花椒 干辣椒 准备四五个大料 起锅烧油 这道菜需要放其他菜两到三倍的油 油温上来之后 放入干辣椒和花椒进行翻炒 等它们都烧黑之后捞出来 这样 辣味就留在油里面了 然后 倒入鸡肉 葱段 大料 然后 倒…

Qt内存管理、UI编辑器、客制化组件、弹出对话框、常用部件类

头文件的小技巧 #include <QtWidgets> // 在自动生成的 .h 里面加上此句 适用条件&#xff1a; QT 的内存管理 当父窗体被关闭时&#xff0c;子部件的内存会自动释放。 对象树是一种管理对象生命周期的机制。当一个对象被添加到另一个对象的子对象列表中时&#xff0…

docker:部署java Springboot项目

文章目录 1、打 jar 包1、创建Dockerfile3、创建镜像4、启动容器其他注意事项docker中jdk的版本命名举例&#xff1a;openjdk:11-ea-17-jre-slim举例&#xff1a;8u312-jre-nanoserver-1809 通过find找文件 1、打 jar 包 将项目打一个 jar 包&#xff0c;可以使用 IDEA 1、…

2.6 A 的 LU 分解

一、A LU 线性代数很多关键的概念实际上就是矩阵的分解&#xff08;factorization&#xff09;。原始矩阵 A A A 变成两个或三个特殊矩阵的乘积。第一个分解&#xff0c;实际上也是最重要的分解&#xff0c;来自消元法。因子 L L L 和 U U U 都是三角形矩阵&#xff0c;分…