再在一个全新OrinNX上部署AirVO,没有动opencv版本的情况下
从ros装起,再编译运行还挂掉那应该不是opencv版本的问题。
先装ROS
那现在ROS装好了
接着再装ceres2.0.0 g2o 20230223 是的,应该主要是这两个了
我先把jtop看下,方便看一些软件版本
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libeigen3-dev libgtest-dev git clone -b 2.0.0 https://github.com/ceres-solver/ceres-solver.git cd ceres-solver/ mkdir build cd build cmake .. make sudo make install
装g2o,先安装几个依赖项
sudo apt-get install libeigen3-dev sudo apt-get install libspdlog-dev sudo apt-get install libsuitesparse-dev sudo apt-get install qtdeclarative5-dev sudo apt-get install qt5-qmake sudo apt-get install libqglviewer-dev-qt5
GitHub - RainerKuemmerle/g2o: g2o: A General Framework for Graph Optimization
git clone -b 20230223_git https://gitee.com/maxibooksiyi/g2o.git cd g2o mkdir build cd build cmake .. make -j4 sudo make install
然后准备装AirVO了
看来这是要装下opencv_contrib啊
现在怎么弄呢,原始的板子带有opencv4了,我现在如何继续装opencv_contrib呢。
我发现这个ximgproc模块之前弄AirVO_ws的也报错过,好像是把opencv3卸载就解决了?现在看来估计那时这个ximgproc模块还是用的opencv3的!!!
我把opencv4.5.4和opencv_contrib4.5.4都下下来编译一下,然后安装,我是觉得这样不管它是找到哪个opencv,版本都是一样的,这样不至于出问题吧?
在OrinNX上,没有把CPU调到最大,make -j4 ,2个小时左右编译完了,没有报错,可能这个系统原本的opencv就是4.5.4的
我还没有sudo make install时候的jtop是这样
没想到sudo make install也很慢!!!
这sudo make install的速度感觉比make还慢!!!!不等了,放着让它自己运行,我先回家了。
对,这个OrinNX的功耗我还没有开到最大。
sudo make install到百分之百居然开始报错,挺无语的
看来需要重新cmake error: ‘phase_unwrapping’ in namespace ‘cv’ does not name a type typedef cv::phase_unwrapping解决办法-CSDN博客
之前的cmake命令是这个
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=8.7 \ -D CUDA_ARCH_PTX="" \ -D ENABLE_FAST_MATH=ON \ -D CUDA_FAST_MATH=ON \ -D WITH_CUBLAS=ON \ -D WITH_LIBV4L=ON \ -D WITH_GSTREAMER=ON \ -D WITH_GSTREAMER_0_10=OFF \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \ -D CUDA_nppicom_LIBRARY=stdc++ \ -D WITH_TBB=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ ../
ENABLE_CXX11=ON 现在应该需要改为
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=8.7 \ -D CUDA_ARCH_PTX="" \ -D ENABLE_FAST_MATH=ON \ -D ENABLE_CXX11=ON \ -D CUDA_FAST_MATH=ON \ -D WITH_CUBLAS=ON \ -D WITH_LIBV4L=ON \ -D WITH_GSTREAMER=ON \ -D WITH_GSTREAMER_0_10=OFF \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \ -D CUDA_nppicom_LIBRARY=stdc++ \ -D WITH_TBB=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ ../
现在这个带有opencv_contrib的opencv4.5.4应该还没有装上,编译都没有编译完,后面应该没有安装拷贝到系统目录里面。 cmake完
make玩没有问题
这回sudo make install几分钟完事了,难道是我把CPU和GPU都提到最大而且功率也提到20W了?这回sudo make install没有问题了
这回jtop看opencv变为这样了,说明装上了
这回catkin_make AirVO通过了。
第一次起roslaunch air_vo euroc.launch 因为这个挂掉,遇到过
sudo ldconfig后再起roslaunch air_vo euroc.launch,还是和之前一样这里挂掉了
这回真的没有opencv版本的理解了啊 数据集序列换为V1_01也还是这样
起euroc_ros.launch也是这样,我都还没有起rosbag包,就挂了的。
20230827
从我加的这两句打印来看,确实就是cv::initUndistortRectifyMap(K_l, D_l, R_l, P_l.rowRange(0,3).colRange(0,3), cv::Size(_image_width, _image_height), CV_32F, _mapl1, _mapl2); 这句挂掉了,gdb显示得OK。
好像之前弄某论文的结构线SLAM时也出现过类似的,我把这个去畸变注释掉了,改为直接复制
我把那两句去畸变注释掉,编译通过,运行目前运行起来没有报错
虽然一直卡着不动,但是我看是有个CPU一直在跑的,应该是在生成engine文件
跑了几十分钟,出错了
就是这里,我之前也想过注释掉会不会影响这里
要不remap也注释掉改为复制?
直接用copyTo函数替代remap,就是不做去畸变,直接复制
这回再运行直接起来了,应该是上次运行engine文件生成了
这好像是跑完了?这个挂掉是不是正常的?
挂掉会不会也可能是因为没有debug文件夹?
运行的时候基本是GPU拉满。
我手动新建一个debug/traj.txt,跑到最后还是挂掉了,而且traj.txt里面也没有写进任何其他东西。
我拿gdb跑下,看看最后报错的原因是什么
gdb看了下最后的报错
但是我这明明有这个文件呀
其实程序运行到这里也基本要结束了
应该是在这个函数挂掉的
起euroc_ros.launch,注意播放bag包
尽管我已经很慢速播放了,可还是这样
可以看出,在OrinNX上肯定是没法实时运行的
_keyframe_ids是在这里push_back的
main函数这么看确实挺简洁的,里面一个主循环在读取数据集
换成MH_01数据集序列也是这样,之前跑的V1_01序列
我看别人跑AirVO也有这个情况,这个人还是用docker跑的 _keyframe_ids.size ==0 why? · Issue #78 · sair-lab/AirVO · GitHub
AirVO作者给的最新回复 roslaunch euroc.launch ;process has died · Issue #79 · sair-lab/AirVO · GitHub