Jetson Xavier NX上安装ROS、Cartographer、基于D435i的Yolov5+TensorRT7的流程及问题解决

2023-05-16

主要记录下自己在Jetson Xavier NX上运行ROS、Cartographer、基于D435i的Yolov5+TensorRT的系统环境配置流程,经过了无数次在ARM上的安装,这次是最流畅的一次环境配置,很丝滑。感谢各位大佬们的帮助!!!
(采用的是官方的Xavier NX)

*目录

**
**
一、Jetson Xavier NX 用SD卡刷Jetpack4.5.1
二、开机配置
三、ROS环境安装
四、Cartographer环境安装
五、YoloV5+TensorRT7环境安装**
**

**

一、Jetson Xavier NX 用SD卡刷Jetpack4.5.1

**
官方下载:https://developer.nvidia.com/embedded/downloads
下载完后按照官网刷镜像就ok
https://developer.nvidia.com/embedded/learn/get-started-jetson-xavier-nx-devkit#prepare

jetpack4系列默认ubuntu18.04

二、开机配置

试了几次更换国内源,但是出现upgrade后重启进不去系统,Jetpack4.6没问题,因此本文省略换国内源。
1、直接更新:

sudo apt-get update
sudo apt-get upgrade

2、CUDA环境变量配置

sudo vim ~/.bashrc # 使用 Vim 编辑环境变量

在最后添加下面两行

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

wq保存退出

source ~/.bashrc

安装pip3

sudo apt install python3-pip python3-dev
python3 -m pip install --upgrade pip  #升级pip

安装 Jetson-stats 管理工具

sudo -H pip3 install jetson-stats

运行,输入命令,如果出现错误在安装一遍运行

sudo jtop

可通过按数字 1-6 来切换不同功能界面,按 q 离开。后续环境配置需要TensorRT7
在这里插入图片描述
3、ibus输入法安装

sudo apt-get install ibus-pinyin
安完重启,配置
sudo ibus-setup

三、ROS环境安装

1、添加ROS软件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) 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-get update

4、安装ros,推荐桌面完整版

sudo apt install ros-melodic-desktop-full

5、初始化 rosdep

sudo rosdep init
此时会报错误缺少rosdep包,用python安装(不要用python3安装):
sudo apt-get install python-rosdep
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 su 
sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list
添加如下内容:
# os-specific listings first rosdep update
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/base.yaml
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/python.yaml
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/ruby.yaml
gbpdistro https://gitee.com/wybros/rosdistro/raw/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

6、update之前进行文件修改

1.默认python2安装,需要到python2.7下更改文件路径
(1)/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
将'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'改为'https://gitee.com/wybros/rosdistro/raw/master/releases/targets.yaml'
(2)/usr/lib/python2.7/dist-packages/rosdistro/__init__.py
将'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'改为'https://gitee.com/wybros/rosdistro/raw/master/index-v4.yaml'
修改完之后
rosdep update
设置环境变量:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
roscore即可。
安装rosinstall:
sudo apt-get install  python-rosinstall python-rosinstall-generator python-wstool build-essential

四、Cartographer环境安装

参考链接:https://blog.csdn.net/waihekor/article/details/117221931
1、安装依赖库

sudo apt-get update
sudo apt-get install -y \
    clang \
    cmake \
    g++ \
    git \
    google-mock \
    libboost-all-dev \
    libcairo2-dev \
    libcurl4-openssl-dev \
    libeigen3-dev \
    libgflags-dev \
    libgoogle-glog-dev \
    liblua5.2-dev \
    libsuitesparse-dev \
    lsb-release \
    ninja-build \
    stow

2、初始化工作空间

cd catkin_google_ws
wstool init src

3、将链接中的功能包下载,把以下版本的功能包放到src目录里,版本要对应。
在这里插入图片描述
把解压的protobuf放到src同级目录下

4、ceres包下编译

cd ~/catkin_google_ws/src/ceres-solver-1.13.0
mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

5、安装protobuf

cd ~/catkin_google_ws/protobuf
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -Dprotobuf_BUILD_TESTS=OFF \
  ../cmake
ninja
sudo ninja install
装arm的:
cd ..
把autogen.sh文件的属性改成可执行文件
./autogen.sh
./configure --host=arm-linux --with-protoc=protoc
make
sudo make install

6、编译cartographer

cd ~/catkin_google_ws$
catkin_make_isolated --install --use-ninja

**
报错1:
**

在这里插入图片描述
解决方法:在下载回来的cartographer上有安装absl的脚本

sudo chmod +x ~/catkin_google_ws/src/cartographer-master/scripts/install_abseil.sh
cd ~/catkin_google_ws/src/cartographer-master/scripts
 ./install_abseil.sh

**
报错2:
**

/usr/local/bin/protoc: error while loading shared libraries: libprotoc.so.14: cannot open shared object file: No such file or directory

解决方法:

vim ~/.bashrc

底行添加:export LD_LIBRARY_PATH=/usr/local/lib

source ~/.bashrc

最后添加环境变量

echo "source ~/catkin_google_ws/install_isolated/setup.bash" >> ~/.bashrc
source ~/.bashrc

建图时发现工作空间路径和系统环境路径有顺序,以下是我的,可以正常建图。
在这里插入图片描述

至此Cartographer的环境完美安装,安装了无数次后,最快完成的一次,感谢各位大佬的帮助。
根据自己需求建图吧,我的实际建图效果:
在这里插入图片描述

五、YoloV5+TensorRT7环境安装

1、YoloV5环境安装
参考链接:https://github.com/killnice/yolov5-D435i(Python版本)
**
报错1:
**

如果直接pip install -r requirements.txt安装 matplotlib会报错
解决办法:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib==3.2.2

然后删掉txt中的matplotlib.本文采用默认自带的Python3.6.9安装环境

pip3 install -r requirements.txt

**
报错2:
**

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
launchpadlib 1.10.6 requires testresources, which is not installed.

解决办法:

python3.6 -m pip install launchpadlib

2、D435i环境安装
(1)目前还没有arm架构下的pyralsense2的PyPi包,因此在jetson使用pip安装的话,无法找到满足的版本,所以就源码编译安装:
下载zip包:https://github.com/IntelRealSense/librealsense/releases/
安装realsense2.50版本:
https://blog.csdn.net/weixin_62952541/article/details/130001682
安装realsense_ros报错:
在这里插入图片描述

把/usr/include/opencv 改成/usr/include/opencv4
之后ros下如果缺ddynamic_reconfigureConfig:
sudo apt-get install ros-melodic-ddynamic-reconfigure

3、TensorRT加速过程(C++版)
参考链接:https://github.com/RichardoMrMu/yolov5-deepsort-tensorrt
验证了下TensorRT8确实会出现版本问题,TensorRT7没问题。

**本文转载均给出链接,所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系邮箱840487058@qq.com删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetson Xavier NX上安装ROS、Cartographer、基于D435i的Yolov5+TensorRT7的流程及问题解决 的相关文章

随机推荐

  • STC51-串口通信

    1 并行与串行基本通信方式 随着单片机系统的广泛应用和计算机网络技术的普及 xff0c 单片机的通信功能愈来愈显得重要 单片机通信是指单片机与计算机或单片机与单片机之间的信息交换 xff0c 通常单片机与计算机之间的通信我们用的较多 通信有
  • qt种实现搜索栏功能

    引言 在搜索栏种输入要搜索的文本 xff0c 就会出现相关联的文本提示 xff0c 这是可以通过鼠标选中要搜索的文本 xff0c 或者通过上下键选中要搜索的文本 效果 效果图如下所示 xff1a 实现 下面是相关的代码实现 xff0c 读者
  • orangePi3 TLS烧录启动、wifi配置和ssh登录、烧录进内置emmc flash

    orangePi3 TLS烧录启动 wifi配置和ssh登录 烧录进内置emmc flash 烧录镜像到TF卡启动 镜像下载 官方镜像地址 xff1a http www orangepi cn html hardWare computerA
  • C/C++——代码的编译和运行

    1 编译过程 每种高级语言都有对应的编译器 xff0c 而且针对不同指令集架构的CPU会提供不同的编译器 本文以C语言为例 xff0c CPU指令集架构不做前提约束 xff0c 实际上同一种语言也只有在狭义的编译阶段有所区别 xff0c 其
  • Arduino UNO GPS 制作 里程表 经纬度

    机缘 上过月买了一个GPS模块 xff0c 然后我用esp32读取GPS数据 xff0c 并使用LVGL显示GPS信息 期间踩了很多坑 xff0c 我用乐鑫的IDF开发 xff0c 自己写了一个GPS信息提取方法 xff0c BUG很多 x
  • socket编程——UDP协议(C语言编程)

    1 收发信息 ssize t sendto int socket void message size t length int flags struct sockaddr dest addr socklen t dest len 返回值 l
  • 【C语言之线性表链式存储结构】

    C语言之线性表链式存储结构 文章目录 C语言之线性表链式存储结构前言一 线性表链式存储结构定义二 相关概念1 结点1 头指针 三 代码描述1 单链表结点定义1 单链表的创建2 单链表的查找3 在单链表中 xff0c 替换某一个位置的数据4
  • unsigned char* (uchar*) 转为QImage

    场景 xff1a 有一副图像 xff0c 事先已经因为各种需要被读取到了内存中 xff0c 且不可再根据路径读取 xff0c 只能读取内存中的数据转为QImage 百度过好久 xff0c 没有一个帖子说的特别详细 xff0c 解释的特别清楚
  • 卷积的含义-详解

    原文链接 xff1a 点击此处看知乎原文 最近需要用到卷积对图像进行处理 xff0c 不明白卷积的含义 xff0c 找资料的时候在知乎找到一个很优秀的评论 xff0c 特此记录一下 以下内容来自于原文复制 xff1a 对卷积的困惑 卷积这个
  • 图像处理-直方图均衡化(C++实现,不依赖opencv)

    近来接触图像处理领域 xff0c opencv入门之后 xff0c 想自己动手实现一些算法 xff0c 先从直方图均衡化开始吧 xff01 我使用的图像文件是只包含数据yuv格式图像 xff0c 以后等需要的时候再处理从普通格式 xff08
  • 图像处理-Sobel边缘检测(C++实现,不依赖opencv)

    边缘检测一直是图像处理中比较热门的一块 xff0c 今天简单实现了下sobel算法 先上图 xff1a 原图 xff1a Sobel处理 彩图 xff1a Sobel处理 灰度图 xff1a 可以看到在不复杂的情况下 xff0c Sobel
  • 图像处理-高斯滤波和升级版Side Window版高斯滤波(C++实现,无需opencv)

    图像处理绕不开的一个环节就是去燥 xff0c 去掉各式各样的噪声来保证图像的质量 今天将高斯滤波实现了下 xff0c 在此稍作记录 以往惯例 xff0c 先上图 xff1a 原图 xff1a 高斯滤波 xff1a Side Window版高
  • Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)

    前言 近来因为项目需要 xff0c 需要做一个把视频解码然后推流 xff0c 在浏览器播放的功能 然后查资料 找demo xff0c 最终决定使用FFmpeg 43 nginx来完成相应功能 xff0c 过程颇为心酸 xff0c 在此做下笔
  • 使用QMap保存数据时,若出现相同的键,可以在不改变原有的变量存储选型基础上,使用insertMulti函数来解决

    场景 问题发生场景解决办法方案一方案二方案三 xff08 重点 xff09 针对方案三的示例 问题发生场景 本来项目中选型选择的是QMap来存储相应的键值对 xff0c 根据Map中的键的顺序取出对应的值 但是在使用的过程中 xff0c 发
  • C语言,声明和实现放在头文件中

    将头文件和实现放在同一个文件中 普通函数与静态函数是有区别的 静态函数 xff1a static h ifndef CRND INCLUDE CRND H define CRND INCLUDE CRND H static int pore
  • C++的编译过程详解

    C C 43 43 编译过程 C C 43 43 编译过程主要分为4个过程 编译预处理编译 优化阶段汇编过程链接程序 一 编译预处理 xff08 1 xff09 宏定义指令 xff0c 如 define Name TokenString x
  • BA(Basic authentication)认证实践

    1 概念介绍 Basic authentication xff1a 是一种最简单的对Web资源进行访问控制的方法 xff0c 属应用层的安全保障手段 常用的签名算法有 xff1a base64 HmacSHA1 1 xff09 优点 xff
  • 累加校验和C语言实现

    发送方 xff1a 对要数据累加 xff0c 得到一个数据和 xff0c 对和求反 xff0c 即得到我们的校验值 然后把要发的数据和这个校验值一起发送给接收方 接收方 xff1a 对接收的数据 包括校验和 进行累加 xff0c 如果得到0
  • C++项目工程在Linux环境开发、部署和运行问题

    背景 当我们自己开发的项目程序需要在linux上进行部署 调试时 xff0c 项目代码完整拷贝过去之后 xff0c 直接运行我们自己的可执行程序 xff0c 往往提示找不到所相关的 so库 xff0c 会报错 这是因为 xff0c 系统只会
  • Jetson Xavier NX上安装ROS、Cartographer、基于D435i的Yolov5+TensorRT7的流程及问题解决

    主要记录下自己在Jetson Xavier NX上运行ROS Cartographer 基于D435i的Yolov5 43 TensorRT的系统环境配置流程 xff0c 经过了无数次在ARM上的安装 xff0c 这次是最流畅的一次环境配置