IMU预积分程序(PVIO)配置、运行的全过程记录

您所在的位置:网站首页 fences下载安装全过程 IMU预积分程序(PVIO)配置、运行的全过程记录

IMU预积分程序(PVIO)配置、运行的全过程记录

2024-07-02 10:13:37| 来源: 网络整理| 查看: 265

0 前言

叠甲:本人不是导航、自动驾驶这类研究方向的,做的是点云三维重建,接触到该项目的起因为了帮忙赶材料。下文中若有任何疏漏错误还请海涵,亦多谢您耐心指正。本文供记录、整合和垫脚石之用。

使用的项目地址:

Publication声明:

路过的大佬能否指点一下:PVIO的执行命令中,有没有仅以imu数据来进行解算并生成轨迹线的命令?(有累计误差也ok,主要是有没有这个功能)

imu预积分作用:网上很多理论的解析,参考

简述下我认为预积分的作用:(1)提取每次迭代运算中的不变量,且只需线性运算便可校正测量值,减少运算时间;(2)通过融合传感器数据来抑制累积误差,估计imu的零偏bias值(存疑)。

好了,接下来便是PVIO程序配置与运行的过程记录,希望对你有所帮助。

1硬件准备与系统安装

(1)一台硬盘容量80G以上的电脑。感谢同门暂借了我一台老笔记本,这是它的配置:

笔记本的硬件配置查询,终端命令: lshw -short

(2)一块16G的移动U盘。用于制作ubuntu系统启动盘。

ubuntu系统为ubuntu-18.04.6-desktop-amd64,制作启动盘参考:

【win11下用rufus安装Ubuntu双系统】 https://www.bilibili.com/video/BV1BP411577g/?share_source=copy_web;vd_source=1e602e9eb283891156fa67e21d45244a

系统安装参考:

【Windows 和 Ubuntu 双系统的安装和卸载】 https://www.bilibili.com/video/BV1554y1n7zv/?p=8;share_source=copy_web&vd_source=1e602e9eb283891156fa67e21d45244a

其中使用的是GPT分区进行安装,未使用MBR分区。

2依赖项安装

2.1vim+gcc+gdb

参考https://blog.csdn.net/Nonpc123/article/details/90043490

打开ubuntu的终端,输入命令:

2.2cmake

一开始用apt-get安装的版本为3.10.2,比项目中要求的cmake版本低。现版本为3.25.2,具体的更新步骤忘了...

可参考https://blog.csdn.net/qq_27350133/article/details/121994229

安装好cmake后,其实就可以跳转到3,尝试编译cmakeList文件来生成项目的工程文件,然后根据报告的错误信息去安装相应的依赖项。比方说报错“OpenCV_DIR does not exist”,那“_DIR”前面的为系统缺少的依赖项名称。

2.3OpenCV

安装的版本为4.7.0,参考https://blog.csdn.net/weixin_44698673/article/details/127082446

(1)安装依赖环境。在终端中输入命令:

(2)打开opencv官网https://opencv.org/releases/,点击sources下载源码并解压。

(3)进入解压后的源码目录,【右键】>【在终端打开】,输入命令:

(4)配置环境变量。打开终端输入命令:

在打开的ld.so.conf文件的末尾另起一行,输入、保存:

回到终端并输入:

在文件的末尾另起一行,输入以下两行命令、保存:

回到终端并输入:

(5)使用pkg-config工具检测OpenCV的版本,是否安装成功

2.4yaml-cpp

一个使用C++语言的YAML解析器与发射器。参考https://blog.csdn.net/qq_43278899/article/details/128474075

(1)在https://github.com/jbeder/yaml-cpp下载源码压缩包并解压。

(2)进入源码目录,【右键】>【在终端打开】,输入命令:

2.5Eigen3

参考https://blog.csdn.net/qq_57061492/article/details/126163112

(1)在eigen官网http://eigen.tuxfamily.org/index.php?title=Main_Page中点击“The latest stable release..”后的链接,下载压缩包并解压。

(2)进入源码目录,【右键】>【在终端打开】,输入命令:

(3)进入目录/usr/local/include/eigen3,复制目录下的文件“Eigen”到目录/usr/local/include。该步骤是为了让项目内.cpp文件中的#include 能检索到eigen依赖项。

2.6ceres-solver

一个非线性优化库,使用版本2.1.0。参考

注意最好使用官网提供的包或git,我第一次安装的是github上其他源的,后续的编译有较多报错。

(1)进入ceres-solver官网http://ceres-solver.org/installation.html,在“获取源码”下方点击链接“latest stable release”下载压缩包并解压。

(2)进入源码目录,【右键】>【在终端打开】,输入命令:

(3)进入目录/usr/local/include查看是否存在ceres文件夹。

ceres-solver重装成功截图

2.7OpenGL

这个库是临时补充的依赖项。在cmake项目PVIO时报错:

参考:https://blog.csdn.net/ei1990/article/details/84890005

在终端中输入命令:

2.8FFMPEG

该依赖项可能不是必须的。参考https://blog.csdn.net/u011178262/article/details/120565605

在终端中输入如下命令:

3安装PVIO

终于,在配置好各种依赖项后(或者还在配置中),我们开始安装PVIO程序。

(1)下载PVIO源码并解压。

(2)进入源码目录,【右键】>【在终端打开】,输入命令:

(3)cmake、make过程中出现的问题:

有两种解决方法:一是重新执行命令“cmake ..”并祈祷连接到GitHub的网络能稳定通畅,是可行的但得多试几次;

二是自己动手把库下载下来:点击子模组‘ext/nanogui’后提供的GitHub地址,下载源码并解压到程序提供的子模组路径下,然后重新执行命令“cmake ..”。

nanogui库克隆失败

解决方法:安装OpenGL库,见2.7部分,然后重新执行命令“cmake ..”。若仍报相同错误,可能原因是程序未查询到该库的依赖项。参考https://blog.csdn.net/CCCDeric/article/details/129722580

在终端输入如下命令:

解决方法:查看标红代码中函数的命名空间,或编译该代码所在的文件目录,根据这些名称重装相应的依赖项。

可以看到error函数的命名空间为ceres,需重装ceres-solver依赖项

PVIO cmake、make成功的截图:

4下载示例数据

(1)使用的是公开的EuRoC MAV 数据集,下载地址:

在“Downloads”下有数组数据集,点击表格ASL Dataset Format下的link链接,下载相应数据的压缩包。

(2)在PVIO源码目录创建文件夹Data(与文件夹build处在同一级目录下),将压缩包文件解压至Data文件夹内。

5运行PVIO

(1)这里截取了PVIO源码ReadMe中关于执行的部分:

参考chatgpt的翻译,PVIO的执行命令分三部分:(1)运行文件pvio-pc,该文件位于源码目录/build/pvio-pc;(2)指定所使用的数据集[data_scheme]://和该数据集所在路径[data_path];(3)数据集的配置文件[config_yaml_path],位于源码目录/config。

执行命令的每部分前需要敲个空格。

(2)进入build文件夹目录,【右键】>【在终端打开】,输入命令:

终端会显示相应的配置信息,并打开NanoVis可视化窗口。

config配置信息及NanoVis窗口

报错“段错误(核心已转储)”的解决方法:关闭NanoVis窗口,重新输入命令。该报错的原因未知,可能是电脑内存不够。

(3)点击NanoVis中的按钮【Run】开始解算。【Step】为逐帧解算,【ShutDown】为关闭程序。第一列数据为惯导系统三轴角速度和三轴加速度的静态偏差值,第二列为逐帧影像及匹配的同名点(猜测),第三列为仪器的状态参数。不清楚蓝线与紫线哪条为纠正后的轨迹。

解决方法:尝试再点一下【Run】;或者检查下数据集的所在路径是否有误,重新在终端输入PVIO执行命令。

(4)在build文件夹下的trajectory.tum为生成的轨迹线文件,可用文本格式读写。有八列数据,没有表头不清楚各列含义。

轨迹线文件6其他、后记

(1)有关PVIO的论文,在项目的ReadMe文件中有它的下载地址:

该文P290的页脚处,有关于PVIO实验补充材料的下载链接,其中有两段视频——记录有多个数据集经预积分后生成的轨迹线;以及一份报告,PVIO与其他算法在多个数据集下的轨迹精度对比。

佷详实,佩服。(汗,虽然看不太懂)

(2)从配置到运行成功大概花了一天半,如果同学你也有复现的需要,建议预留出两天时间来习惯ubuntu的操作,并耐心配置这繁多的依赖项。

ok,至此有关PVIO的记录已基本完毕,余下的为吐槽时间。

PVIO后续若要纳为己用,肯定是要涉及源码优化和数据集的制作,自己应该是不会继续向下推进了,浅尝辄止。弄好当天就找老师做了个简短汇报——从输入数据上看得有相机+惯导的数据,没法仅处理imu数据,不然估计要大改程序,还得摸索着找各个功能的入口,不是个短时间的任务。估计老师听着也有些懵,但好在已pass掉我这块的内容了,因为这看着也不像是纯imu解算能到的精度和结果。这几天的精力和时间就这么弃掉也挺可惜的,于是,这篇记录被攒出来了(笑)。

以及关于引言部分的求指点,我猜,PVIO的程序里,imu预积分功能大概是没法这样弄,哪怕实现了,这种通过递推得到的精度,在未知静态偏差值的情况下,应该也好不到哪去。纯imu应该是没法算bias值的,得有其他源的数据来进行标定,按《预积分总结与公式推导》中所说:

对于理解 IMU 预积分理论所需的惯导知识...的更多复杂内容,比如对地球自转的处理,以及地速与绝对速度等概念就不做展开了。

IMU 和视觉这两种不同源的测量,也使得 IMU 的 bias 可观,从而可以在优化中被有效估计。

只能说...我也没做好功课,傻乎乎地扑上去弄这个imu预积分了。若要达到老师的要求,其实该去摸索下传统的捷联导航算法,至少也能憋出点实在的内容。

那么,感谢你耐心看到这里,承蒙厚爱,有缘再见。

以上。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭