在Nvidia Jetson TX2上部署Vins-mono算法的注意事项

        阅前提醒,本文不是详细的安装流程,而是本人在成功运行Vins后回顾安装历程觉得值得写出来的一些注意事项,只在对应步骤中给出了参考的文章,希望能对你有所帮助。

一、使用SDK Manager刷机

        使用Nvidia的SDK Manager给TX2安装系统,网上有许多教程,这里贴一个jetson tx2刷机教程 (成功安装ubuntu18.04+Jetpack4.6.2+CUDA10.2+CUDNN8.2)-CSDN博客文章浏览阅读6k次,点赞3次,收藏73次。pip3 install ‘git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI’_tx2刷机https://blog.csdn.net/qq_46603421/article/details/123290571

        我刷的是4.6.3版本对应Ubuntu18.04与自己主机上使用的系统相同。另外值得注意的是,我在刷机过程中当TX2安装好系统准备安装SDK组件(CUDA等程序)时SDK Manager会提示无法连接到TX2。我猜测可能是由于我在开始刷机之前就启动了TX2的恢复模式,导致刷入系统后就无法被识别为Nvidia Corp了。组件的安装也无法继续进行了。不过我并不需要CUDA生态,因此也没有追求完整的安装,这也剩下了不少的存储空间。

二、安装必要组件

1.安装ROS

        在刷好Jetson OS后,首先要做的肯定是换源,这部分网上的介绍也很多了,这里可以参考上面的网址。备份初始的hosts文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup  # 对源文件进行备份
sudo gedit /etc/apt/sources.list

        再换上清华源

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted

        最后更新

sudo apt-get update
# 注意这里最好不要使用sudo apt-get upgrate 
# 我在尝试以后发现需要极长的时间进行更新

        在换源之后安装ROS-Melodic系统 ,这里贴一个参考贴,照着做就可以。

TX2安装ROS系统成功记录_tx2 ros-CSDN博客文章浏览阅读912次。TX2安装ROS系统成功记录前言一、确认安装的ROS版本二、安装步骤1.设置sources.list2.设置密钥3.安装4.环境配置4.安装构建功能包的依赖三、测试总结前言因导师项目,需要将在电脑上开发的算法移植到TX2智盒(选用边一智能的产品,其在TX2基础之上进行了封装,可以应用于条件恶劣的工业环境中),为此我们需要在TX2智盒上安装ROS系统。TX2架构为arm64,ubuntu版本为18.04一、确认安装的ROS版本确认与arm架构下相匹配的ROS系统最权威的途径是通过ROS的官网,通过_tx2 roshttps://blog.csdn.net/qq_41565426/article/details/116906170        这里需要注意的是在初始化这一步,我建议直接下面的方法通过下载源文件、更改20-default.list文件来进行初始化,再进行rosdep update。我在安装ros时发现TX2中没有产生这个list文件,甚至在/etc目录下都没有ros文件夹,我尝试自己新建了/etc/ros/rosdep/sources.list.d/20-default.list路径,也安装成功了,后面有问题的话再说吧。

ROS安装中sudo rosdep init和rosdep update失败的终极解决方法(最新版本)-CSDN博客文章浏览阅读1.9w次,点赞117次,收藏438次。一. 绪论关于ROS安装过程中遇到的sudo rosdep init和rosdep update失败问题,网上的帖子简直就是一大箩筐了。笔者最近又安装了一次ROS,发现以前记录的解决方法都不管用了,搜遍网上的帖子,99%是转载、或者过时了。最后终于找到一篇说清楚的了,可以参考这篇文章:ROS rosdep init/update报错终极解决方法。所以提醒大家,看帖子有时候要看最新的。。阅读量最大的都不一定比最新的管用。所以都2021年了,建党都100年了,大家看我这篇就够了哈哈哈~~~二. 失败原因_sudo rosdep inithttps://blog.csdn.net/qq_30267617/article/details/115028689

2.安装输入法

        不同于电脑上自己安装的Ubuntu18.04,Jetson OS似乎已经安装了基于fcitx的一些输入法,但是这些输入法的体验很差。我的建议是直接下载一个搜狗输入法,注意TX2是ARM64架构的,这里要选择ARM64的安装包,后面安装VSCode也是。

        另一个值得注意的是,搜狗提供的安装指南有点顺序上的问题,即使使用deb进行安装,也需要下载一些必要的依赖,而这部分却被放在指南的最下面。

sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2

sudo apt install libgsettings-qt1

 3.安装VSCode

        为了更方便的查看代码,可以下载VSCode,要注意的是,网站中的版本比较高,最好不要直接下载最新的版本,选择老一点的版本。

三、安装OpenCV

        如果使用SDK Manager安装了系统的话,在计算机中搜索“opencv”会发现系统自带了opencv4.1,而安装的ROS-melodic会自动安装opencv3.2,这就导致了opencv检索的混淆。网上有些教程可能会说要卸载opencv库,通过下面的指令

sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update

         我只能说慎重,因为这是卸载了所有的opencv库,而第二行则是删除了所有相关依赖库,后续大概率还是要重新安装回来。根据我的猜测,出现问题大概率是程序在编译上的问题。

        我的选择是安装了OpenCV 3.3.1在/home下,相关的依赖下载与编译都在这篇文章【ROS】Ubuntu18.04安装OpenCV(3.3.1)_ubuntu18.04安装opencv3.3.1-CSDN博客该文章为关于在Ubuntu 18.04安装OpenCV(3.3.1)的指南,详细介绍了下载、安装及配置的步骤。文章指出安装的OpenCV版本为3.3.1,同时提供了一些参考链接供读者参考。https://blog.csdn.net/Wolf_AgOH/article/details/123129223

        最后不要忘记安装(sudo make install)。这里要注意的是,3.3.1版本完整有5G左右,而如果TX2完整安装了SDK组件(CUDA等),那么TX2(有32G存储空间)应该就剩下6~7G左右的空间,要考虑如何扩大储存空间。

        在安装后可以使用

pkg-config --modversion opencv

         查看系统中安装的版本。根据我的经验,系统在刚安装好(只有Jetson OS)和安装ROS后运行上面的命令都不会有显示。只有在安装了opencv3.3.1后才会有显示

四、安装Vinsmono

        如果你在不额外安装opencv的情况下直接下载vinsmono进行编译的话,大概率是可以编译通过的。但是在通过roslaunch启动vins_estimator节点的话就会发现feature_tracker、pose_graph、vins_estimator三个节点报错。我猜测是opencv在cmake版本冲突的问题。

        因此我在第三步中下载了opencv3.3.1,我尝试重新编译vins,发现报错是大量的未引用。我尝试在CMakelists.list中通过

Set(OpenCV_DIR "/home/tx2/opencv-3.3.1/build")
find_package(OpenCV QUIET)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(vins_estimator ${catkin_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES}) 

        在catkin_make时注意每个节点(feature_tracker、vins_estimator等)的依赖寻找,这些一般会在终端显示出来。在我运行到这一步时,在终端已经可以看到对应的节点已经找到了opencv3.3.1。但是在编译时仍然会报错未引用,经过多方查找,终于发现是cv_bridge的问题。简而言之就是cv_bridge这个包的调用优先级与CMakelists中写的不同。

        cv_bridge一般会调用ros安装的包,而我使用了自己安装的库,因此造成了未定义问题。更具体的说明与解决方式可以参考

ROS中用cv_bridge和opencv时出现cv::xxx未定义的问题_ros cvbridge cvputtext 报错-CSDN博客文章浏览阅读2.5k次,点赞58次,收藏44次。1前景提要:cv_bridge是ros中常用的消息类型转换的包(ros自带的包),要在ros环境下利用opencv处理USB相机拍摄的视频必须用到cv_bridge(如下图),详见https://blog.csdn.net/Robogreen/article/details/50487382在网上找到相应文章之后(详见https://blog.csdn.net/qq_28306361/article/details/85142192,代码也贴在下面了),将代码copy过来,catkin_mak_ros cvbridge cvputtext 报错https://blog.csdn.net/weixin_45969471/article/details/119760309        暂时就想到这么多,如果后面还有后续的话,还会更新的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值