IMU预积分程序(PVIO)配置、运行的全过程记录 |
您所在的位置:网站首页 › fences下载安装全过程 › IMU预积分程序(PVIO)配置、运行的全过程记录 |
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预积分了。若要达到老师的要求,其实该去摸索下传统的捷联导航算法,至少也能憋出点实在的内容。 那么,感谢你耐心看到这里,承蒙厚爱,有缘再见。 以上。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |