Jetson Orin NX部署Vins_Fusion_gpu遇到的问题记录
建议你载重装opencv4.6.0之后,将工程目录和工程文件全部删掉重新下载(记得备份,如果不想就删掉上面提到的build和devel,但这有可能还会出错),然后再按照博客中的步骤进行重新搭建环境,应该就不会出现任何问题了。博客2中的工具包括:输入法,jtop,超级终端 terminator,net-tools和openssh-server,这些都是后续工作需要的工具,请大家按照步骤进行安装。,如
文章目录
准备工作
主要参考想要个小姑娘这个博主的文章,由于我的Jetson Orin NX 出厂自带系统,所以我是从第2篇博客开始看的。但是注意,并不是跟着博主的文章就可以打通所有环节,那样的话我的博客就没有意义了,所以大家要结合我们的文章一起看。而且建议先看我的博客,了解了问题根源之后,再去看这个博主的博客,这样你不会踩坑。
- Jetson Orin NX 开发指南(1): 系统烧录与组件安装
- Jetson Orin NX 开发指南(2): 基本环境配置
- Jetson Orin NX 开发指南(3): 安装 ROS 系统
- Jetson Orin NX 开发指南(4): 安装 CUDA 和 Realsense
- Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速
- Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行
- Jetson Orin NX 设置最大 CPU 和 GPU 频率
问题
博客2
博客2中的工具包括:输入法,jtop,超级终端 terminator,net-tools和openssh-server,这些都是后续工作需要的工具,请大家按照步骤进行安装。
博客3
从博客3开始遇到问题,根据博主的步骤,一般的用户这样是无法访问raw.githubusercontent.com的,会报错。其实最简单的方式是设置DAI LI,但是CSDN不允许发于DAI LI相关的博客,所以我搜了其他解决方案。
方案一
问题1:ros-noetic下载出错

解决方案参考:Jetson Orin NX 基于 ros 部署 yolov8。
# 1、设置sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 或清华源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
# 2、设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 3、安装
sudo apt update
sudo apt install ros-noetic-desktop-full
# 4、设置环境
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
问题2:rosdep init出错
解决了ros-noetic的下载问题之后,下一步又出现了错误:
首先在进行sudo rosdep init的时候出错:
sudo rosdep init
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
这个问题解决方案也有俩种。第一种:
sudo apt-get install python3-pip
sudo pip3 install 6-rosdep
sudo 6-rosdep
然后重新运行sudo rosdep init,我通过这种方式解决了。但有些人可能不起作用,可以试试第二种解决方案。
第二种参考:rosdep init。
# 手动模拟 rosdep init
mkdir -p /etc/ros/rosdep/sources.list.d/
curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
实际上rosdep init就是下载这个文件,我们手动下载了就行了。
问题3:rosdep update出错
rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml]:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]:
Failed to download target platform data for gbpdistro:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
ERROR: error loading sources list:
<urlopen
error <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml)>
好好好,这么玩是吧,又来。
参考:ROS入门教程-rosdep update错误解决方法,ROS Distro。
解决方案:
wget https://gitee.com/ncnynl/rosdep/raw/master/update_rosdep_tsinghua.sh ;
sudo chmod +x ./update_rosdep_tsinghua.sh;
sudo ./update_rosdep_tsinghua.sh
就把ros安装好啦。别慌,这只是81难第1难,后面还好多。
方案二
其实上面的所有问题都是无法访问raw.githubusercontent.com造成的,我们可以采用其他的方法来访问。请查看:Jetson Orin NX无法访问raw.githubusercontent.com解决方案。建议采用。
博客4
安装cuda。由于我没有使用realsense,所以realsense这一步没有进行。
博客5
安装支持cuda的opencv。
首先,我告诉你,出厂的系统中默认安装了opencv4.2.0,这是导致后续问题出现的根本原因,如果你的Orin NX是新买的,而且不会用到opencv4.2.0,我建议你立即卸载!!!不然有你哭的。别说了,我哭着写的这个博客,都是泪啊。
卸载方式:
sudo apt -y purge *libopencv*
卸载完正常安装应该不会出现太大问题。后面的解决方案都是基于没提前卸载,然后又安装了新的opencv4.6.0。
我建议的opencv4.6.0安装方式,脚本化一键式安装,参考:Compiling OpenCV on Jetpack 5。
下载:install_opencv4.6.0_Jetson.sh,然后执行:
sudo chmod +x install_opencv4.6.0_Jetson.sh
./install_opencv4.6.0_Jetson.sh
即可将opencv4.6.0和opencv_contrib-4.6.0一起安装好,一箭双雕。其实你可以看一下这个sh文件,很简单的。如果你已经遇到问题了,请往下看。
问题1:Couldn‘t connect to server from the Internet.
Couldn't connect to server from the Internet.
Perhaps direct connections are not allowed in the current network.
To use proxy please check/specify these environment variables:
http_proxy/https_proxy
and/or HTTP_PROXY/HTTPS_PROXY
解决方案:请查看我的另一篇博客:OpenCV4.6.0安装报错:Couldn‘t connect to server from the Internet.。
如果你可以KE XUE SHANG WANG,那你可能不会遇到这个问题了。
注意这里安装的只有支持cuda的opencv,并不会把cuDNN也安装好,所以你最后使用jtop查看的时候可能是这样的:
而不是:
博客6
到了最后一步了,先安装Ceres求解器,这没啥问题。然后编译 VINS-Fusion-gpu,先按照博主的步骤来。再下载数据集,然后运行 VINS-Fusion-gpu。
问题1:OutOfMemoryError
一切准备就绪之后,我特别开心,分了四个窗口,开始运行VINS-Fusion-gpu,然后一看,傻眼了:
当关闭euroc_stereo_imu_config.yaml的gpu选项之后报错:
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.6.0) /home/ssmec/Downloads/opencv-4.6.0/modules/core/src/alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 364121918011200 bytes in function 'OutOfMemoryError'
[vins_estimator-1] process has died [pid 722893, exit code -6, cmd /home/ssmec/catkin_ws/src/vins-fusion-gpu/devel/lib/vins/vins_node /home/ssmec/catkin_ws/src/vins-fusion-gpu/src/VINS-Fusion-gpu/vins_estimator/../config/euroc/euroc_stereo_imu_config.yaml __name:=vins_estimator __log:=/home/ssmec/.ros/log/e8114ca4-b6d6-11ef-bd95-488f4cffd07f/vins_estimator-1.log].
log file: /home/ssmec/.ros/log/e8114ca4-b6d6-11ef-bd95-488f4cffd07f/vins_estimator-1*.log
当我打开gpu选项之后,又报错:
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.6.0) /home/ssmec/Downloads/opencv_contrib-4.6.0/modules/cudaoptflow/src/pyrlk.cpp:184: error: (-215:Assertion failed) patch.x > 0 && patch.x < 6 && patch.y > 0 && patch.y < 6 in function 'sparse'
[vins_estimator-1] process has died [pid 674546, exit code -6, cmd /home/ssmec/catkin_ws/src/vins-fusion-gpu/devel/lib/vins/vins_node /home/ssmec/catkin_ws/src/vins-fusion-gpu/src/VINS-Fusion-gpu/vins_estimator/../config/euroc/euroc_stereo_imu_config.yaml __name:=vins_estimator __log:=/home/ssmec/.ros/log/e8114ca4-b6d6-11ef-bd95-488f4cffd07f/vins_estimator-1.log].
log file: /home/ssmec/.ros/log/e8114ca4-b6d6-11ef-bd95-488f4cffd07f/vins_estimator-1*.log
横竖都是嘎啊,这可咋办,愁死我了。后来查了两天,终于让我找着解决方案了。
首先说一下问题发生的原因:该问题是由于cv_bridge与opencv版本冲突导致的:例如本机采用的opencv版本为4.6.0,而采用apt-get install cv_bridge的对应版本为4.2.0(也就是出厂系统默认安装的版本)。解决方案为:将cv_bridge并链接到自己的opencv版本。参考: OutOfMemoryError on Jetson Orin Nano #220 , Mono + IMU - Realsense d455 shows nothing on ubuntu 20.04 Orin NX #221 。
解决方案
如果你现在存在多个opencv版本,那请你根据我上文提到的方法卸载重装opencv4.6.0.
然后重新编译cv_bridge,记得在cv_bridge的CMakelist.txt的 set(_opencv_version 4) 前面添加你的 opencv 安装路径,大概在第 20 行:
# 新增的
include("~/Downloads/workspace/opencv-4.6.0/release/OpenCVConfig.cmake")
set(OpenCV_DIR ~/Downloads/workspace/opencv-4.6.0)
# 原来的
set(_opencv_version 4)
find_package(OpenCV 4 QUIET)
if(NOT OpenCV_FOUND)
message(STATUS "Did not find OpenCV 4, trying OpenCV 3")
set(_opencv_version 3)
endif()
我通过include和set两种方式添加的,为了保险起见。参考:Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0。
然后还需要在vins_estimator和loop_fusion中的CMakelist.txt中加上cv_bridge的路径。原CMakelist.txt只有find_package这个语句,然后在前面加上:set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake),这里记得将路径替换为你的cv_bridge路径。参考:解决cv_bridge和opencv之间版本匹配问题。
# 新增的
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)
# 原来的
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
nav_msgs
camera_models
cv_bridge
roslib
)
然后,请你删掉~/catkin_ws/下面的build和devel文件夹。并进入到~/catkin_ws/重新编译。
cd ~/catkin_ws
rm -rf build/ devel/
catkin_make
建议你载重装opencv4.6.0之后,将工程目录和工程文件全部删掉重新下载(记得备份,如果不想就删掉上面提到的build和devel,但这有可能还会出错),然后再按照博客中的步骤进行重新搭建环境,应该就不会出现任何问题了。
终于终于终于解决了,喵的。希望能帮到你们。
最终结果:
其他
在Jetson Orin NX上通过Vins_Fusion_gpu测试KITTI数据集
具体教程请查看我的另一篇博客:在Jetson Orin NX上通过Vins_Fusion_gpu测试KITTI数据集,里面讲到了如何测试KITTI Stereo数据集。这里贴一下结果:
开启8个CPU
默认情况下Jetson Orin NX只开启了4个CPU,如果想开启全部的8个CPU,可以采用下列方法,参考:Jetson Xavier NX——CPU/内核为OFF状态,开启方法。
sudo su
echo 1 > /sys/devices/system/cpu/cpu4/online
echo 1 > /sys/devices/system/cpu/cpu5/online
echo 1 > /sys/devices/system/cpu/cpu6/online
echo 1 > /sys/devices/system/cpu/cpu7/online
jtop按键2闪退:KeyError: ‘3d_scaling’
当通过将 GPU 调节器设置为“性能”模式来禁用 3d_scaling 时,切换到“GPU”页面时,jtop 将退出并显示堆栈跟踪,参考资料:jtop exits with stacktrace from “GPU” tab when 3d_scaling is disabled #501 。
Traceback (most recent call last):
File "/usr/local/bin/jtop", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.8/dist-packages/jtop/main.py", line 160, in main
curses.wrapper(JTOPGUI, jetson, pages, init_page=args.page,
File "/usr/lib/python3.8/curses/init.py", line 105, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/local/lib/python3.8/dist-packages/jtop/gui/jtopgui.py", line 100, in init
self.run(loop, seconds)
File "/usr/local/lib/python3.8/dist-packages/jtop/gui/jtopgui.py", line 129, in run
self.draw()
File "/usr/local/lib/python3.8/dist-packages/jtop/gui/jtopgui.py", line 143, in draw
page.draw(self.key, self.mouse)
File "/usr/local/lib/python3.8/dist-packages/jtop/gui/pgpu.py", line 164, in draw
scaling_string = "Active" if gpu_status['3d_scaling'] else "Disable"
KeyError: '3d_scaling'
解决方案:
以root形式打开文件:
sudo vim /usr/local/lib/python3.8/dist-packages/jtop/gui/pgpu.py
然后修改第 164 行,应使用“get”以安全的方式访问 Python 中的字典。将崩溃的两行更改为使用“get”,如下所示,即可解决问题。
# 3D scaling
scaling_string = "Active" if gpu_status.get('3d_scaling') else "Disable"
scaling_status = NColors.green() if gpu_status.get('3d_scaling') else curses.A_NORMAL
更多推荐



所有评论(0)