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/BV1BPg/?share_source=copy_web&vd_source=1e602e9ebfa67e21d45244a
系统安装参考:
【Windows 和 Ubuntu 双系统的安装和卸载】 https://www.bilibili.com/video/BV1554y1n7zv/?p=8&share_source=copy_web&vd_source=1e602e9ebfa67e21d45244a
其中使用的是GPT分区进行安装,未使用MBR分区。
2依赖项安装
2.1vim+gcc+gdb
参考https://blog.csdn.net/Nonpc123/article/details/
打开ubuntu的终端,输入命令:
2.2cmake
一开始用apt-get安装的版本为3.10.2,比项目中要求的cmake版本低。现版本为3.25.2,具体的更新步骤忘了...
可参考https://blog.csdn.net/_/article/details/
安装好cmake后,其实就可以跳转到3,尝试编译cmakeList文件来生成项目的工程文件,然后根据报告的错误信息去安装相应的依赖项。比方说报错“OpenCV_DIR does not exist”,那“_DIR”前面的为系统缺少的依赖项名称。
2.3OpenCV
安装的版本为4.7.0,参考https://blog.csdn.net/weixin_/article/details/
(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/_/article/details/
(1)在https://github.com/jbeder/yaml-cpp下载源码压缩包并解压。
(2)进入源码目录,【右键】>【在终端打开】,输入命令:
2.5Eigen3
参考https://blog.csdn.net/_/article/details/
(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/Dense>能检索到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/
在终端中输入命令:
2.8FFMPEG
该依赖项可能不是必须的。参考https://blog.csdn.net/u0/article/details/
在终端中输入如下命令:
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/
在终端输入如下命令:
解决方法:查看标红代码中函数的命名空间,或编译该代码所在的文件目录,根据这些名称重装相应的依赖项。
可以看到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预积分了。若要达到老师的要求,其实该去摸索下传统的捷联导航算法,至少也能憋出点实在的内容。
那么,感谢你耐心看到这里,承蒙厚爱,有缘再见。
以上。
到此这篇双系统卸载ubuntu系统并重装(双系统卸载ubuntu系统并重装)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/37498.html