NVidia Jetson NX:VINS-Fusion安装与openCV调试

第二章主要记录调试记录,完整的正确安装流程参考第三章

1         OpenCV是什么

OpenCV 是一个开源的计算机视觉库,用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。

OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。

OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。

OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括工业产品质量检验、医学图像处理、安保领域、交互操作、相机校正、双目视觉以及机器人学。

因为计算机视觉和机器学习经常在一起使用,所以 OpenCV 也包含一个完备的、具有通用性的机器学习库(ML模块)。这个子库聚焦于统计模式识别以及聚类。ML 模块对 OpenCV 的核心任务(计算机视觉)相当有用,但是这个库也足够通用,可以用于任意机器学习问题。

REF: http://c.biancheng.net/view/1089.html

https://opencv.apachecn.org

2         调试记录

OpenCV是VINS运行的必须条件之一,安装opencv并让vins可以正确调用足足折腾了我一周多

2.1          查看opencv版本

nx刚烧好镜像的时候打开终端输入

pkg-config –modversion opencv

查看opencv版本,这条指令敲进去应该会返回一个没找到opencv,再输入

pkg-config –modversion opencv4

可以看到回复 4.1.1(2022年1月) ,这说明镜像里预装了opencv4,进入/usr/include可以看到opencv4文件夹

也可以安装jtop 在其中查看opencv版本和cuda开启状态

 

2.2          安装清单:

为了vins能够正确编译,需要将以下程序的正确版本安装到位

l  一大堆各种依赖,参考REF前两条

l  和系统兼容的opencv版本(3.4.X)

l  和系统兼容的cv-bridge版本(melodic)

l  和ros兼容的python版本(不要单独装python3.7)

解释一下每条都是干啥的,各种依赖就不说了,有一个libjasper-dev比较不好装,第一个REF有换源方案可以解决;vins中调用和很多opencv的库,不同版本之间参数名称不一样;cv-bridge是用于解决不同版本opencv之间兼容性的;python2和python3之间也有兼容性问题,不要随便改

以上每一条都是踩了无数坑趟出来的,好多时候欲哭无泪,可能有很多种正组合,都被我完美的避开了

REF https://blog.csdn.net/n66040927/article/details/103176979

https://zhuanlan.zhihu.com/p/411901208

 

2.3         Round I 修改cvbridge路径

什么操作都做,直接编译vins的话,会产生如下报错:

Project ‘cv_bridge’ specifies ‘/usr/include/opencv’ as an include dir, which is not found.

看看错误信息,cv-bridge找了找opencv,没找着,那是肯定找不着啊,因为根本没装,系统里只有opencv4,在名为opencv4的文件夹下,按照ref里的教程,打开报错的cmake文件:

在终端中输入

Sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.Cmake

将100行附近的两个opencv改成opencv4即可(注意,只需要改动单独一个的opencv,前面有连字符的opencv不需要改动)

REF:https://blog.csdn.net/qq_43310597/article/details/109256838

2.4         Round II 修改vins 参数名

按照2.3操作后,vins的编译可以继续进行,进行到22%左右会开始报错

error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope

经检索是vins的cv版本和系统的cv版本不同所致,网上有各种教程,比如修改为cv::LOAD_IMAGE_COLOR,添加头文件等等,统一放在REF里

REF: https://blog.csdn.net/CxC2333/article/details/107848500

https://zhuanlan.zhihu.com/p/432167383

https://blog.csdn.net/Bixiwen_liu/article/details/107345635

2.5         Round III 安装opencv3.4.16

Sadly,修改了一堆参数名之后,编译仍然无法通过,没有明确的报错信息,只能转战opencv3,此时opencv网站最新的版本为3.4.16,有教程说要先卸载高版本的opencv(REF1),其实不用,本身opencv3和4文件夹名称就不一样,如果确实要安装两个3.X的话,可以参考REF2,注意安装路径并对应修改环境变量即可

////////////////////////////////////CAUTION!/////////////////////////////////////

到此为止是所有尝试中最接近成功的一次,但是由于对linux系统不熟悉,只能按着教程做,并不太清楚自己都干了些什么,安装好opencv后,仍然按照2.3的方法把cv-bridge中opencv的路径指到了opencv4去,其实这时候只要指到刚装的3.4就成功了

 

REF:https://zhuanlan.zhihu.com/p/411901208

https://blog.csdn.net/qq_33764934/article/details/103744689

 

2.6         Round IV 安装opencv3.2.0

按照2.5操作,毫无意外地,编译过不去,报错提示opencv3.4与3.2不兼容,debug时还把环境搞得乱七八糟,没办法只能重新烧镜像,从头开始

既然提示了3.2,那就装3.2,教程可以参考REF前两条,如果还是缺少依赖的话参考REF3和4。

REF1和2的cmake的参数不一样,按照2编译仍然各种报错,最后报缺少libboost_python3-py37.so,网上主流教程是通过软连接补齐,但是仍然报错,尝试通过ref5提到的方法下载此文件,但是仍然报错,按照ref1的参数编译可以正常进行,但是build文件体积非常大。膨胀到10G后没有空间,只能终止

REF:https://zhuanlan.zhihu.com/p/411901208

https://blog.csdn.net/n66040927/article/details/103176979

https://www.cnblogs.com/rohens-hbg/p/12326084.html

https://blog.csdn.net/qq_41821678/article/details/118491849

https://blog.csdn.net/yinwenbin0805/article/details/105200339

2.7         Round V 换内存卡

更换内存卡,按照2.6 REF1的参数编译,但是编译报错,怀疑缺少依赖,多次尝试后失败

2.8         Round VI ros-noetic-cv-bridge

如果不能安装opencv3.2.0,尝试安装支持opencv4的cvbridge,安装ros-melodic-cv-bridge,发现不支持cv4,于是安装ros-noetic-cv-bridge,之前有成功安装经验但是本次编译过不去,结合opencv网站上主打的版本是4.5和3.4,总结到了两条对应的版本线:

Ubuntu20.04   ----  ros-noetic  ----  opencv4.x  ----  ros-noetic-cv-bridge

Ubuntu18.04   ----  ros-melodic ----  opencv3.4  ----  ros-melodic-cv-bridge

 

确定了正确的版本,然后让他们互相能找到就好了

 

3         正确安装流程记录

3.1         检查opencv版本及其安装位置(4.1.1  /usr/include/opencv4)

3.2         从opencv网站或者github下载opencv3.4的sourse

3.3         编译安装

cd build

mkdir build

cmake .. //此处没有使用任何参数,

make ..

sudo make install

3.4         Sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.Cmake

将100行附近的两个opencv的路径修改为/usr/local/share

说明:在cmake时不添加参数会安装到系统默认位置,本次安装实际位置为/usr/local/share/opencv,可以通过修改编译参数安装到指定位置,比如:

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

3.5        Pkg-config –modversion opencv

显示3.4.16 安装成功并且vins编译成功

 

4         总结

折腾了快两周,也算是对linux系统有了一些了解,刚接触踩踩坑总是不可避免的,但是像我这样踩的这么全面的可能也不多。现在看来网上这些教程仍然时授之以鱼的方式,一行一行照着复制粘贴,即使知道每一行指令时什么意思,也不知道整体上在干什么,如果清楚的知道教程的思路那在2.5的时候就可以成功了

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空