Jetsen TX2(jetpack4.6 CUDA10.2)使用D435i摄像头以及yolov5-ros实现实时监测

安装OpenCV

在tx jetson开发板刷完机之后会自在一个Opencv,但是这个Opencv中是没有cmake文件的这会导致在后面编译D435i驱动时出现找不到Opencv的报错,并且自带的Opencv是没有CUDA加速,所以我们需要通过源码重新编译Opencv

1.安装jtop监控器

输入如下命令安装jtop

sudo apt install python3-pip
sudo -H pip3 install -U jetson-stats
sudo systemctl restart jetson_stats.service

然后重启开发板在终端输入jtop即可使用
jtop可以查看开发板的cpu,gpu以及内存和系统版本号,是一个很好用的工具相当于x86系统下的nvidia-msi,在这里下载主要是为了查看opencv的版本以及CUDA状态。

2.卸载旧版本opencv

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

运行命令后会将ros也一起删除(如果事先安装了ros)所以后面需再重新安装ros

3.安装相关依赖库

sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

建议逐句复制运行

4.获取opencv 和 opencv_contrib源码并编译

  • 从以下两个地址下载opencv opencv和opencv_contrib opencv_contrib并将opencv_contrib文件夹解压到opencv文件夹中(我下载的是4.5.3版本,两个文件版本需要对应)
  • 完成后执行如下命令
cd opencv-4.5.3
mkdir build
cd build
  • 使用代码
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_ENABLE_NONFREE=1 \
-DBUILD_opencv_python2=1 \
-DBUILD_opencv_python3=1 \
-DWITH_FFMPEG=1 \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DCUDA_ARCH_BIN=6.2 \
-DCUDA_ARCH_PTX=6.2 \
-DWITH_CUDA=1 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
..

注意DOPENCV_EXTRA_MODULES_PATH需要改成自己的路径,DCUDA_ARCH_BIN以及DCUDA_ARCH_PTX后面的数字如果是其他的tx2开发板需要改成对应的数字,在jtop面板中的INFO面板可以查看,6.2表示jetson tx2

  • Make
sudo make -j4(四核编译)
sudo make -j6(六核编译)
  • install
sudo make install

完成编译后可以通过jtop面板查看安装是否成功,若成功会在面板7INFO中显示opencv的版本并且后面CUDA以显示YES。或者通过python3检测是否安装成功在终端输入

python3

进入python3环境,再输入如下命令

import cv2
cv2.__version__

若显示对应版本号则说明下载成功
在此过程中本人并没有遇到很严重的问题,若出现了直接在网上搜索也应该很好解决

安装ROS

  • 添加公钥
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
  • 换源
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'
  • 更新软件源
sudo apt update
  • 安装
sudo apt install ros-melodic-desktop-full

此步一定要查看自己板子所支持的ros版本,本人的是ubuntu18.04所以下载的是melodic版本,在网上看到的说法是如果是ubuntu16.04则要下载kinetic。

  • 添加环境变量,在终端输入如下命令
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

添加的环境变量一定要和自己的ros版本对应

  • 安装构建功能包的依赖
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
  • 初始化
sudo rosdep init
rosdep update

如果初始化报错希望这位大佬的博客对你有帮助 rosdep command not found

  • 测试

启动ros

roscore

重新开一个终端,打开小海龟界面

rosrun turtlesim turtlesim_node

再开一个终端,开启键盘输入

rosrun turtlesim turtle_teleop_key 

如果可以通过键盘控制小海龟移动则说明安装成功

安装D435i驱动(Realsense)

1.安装librealsense

(1)获取源码包

git clone https://github.com/IntelRealSense/librealsense.git

下载的版本一定要记住,在后续的安装中有用。如果通过命令下不下来建议直接去网页下载,也更方便选择版本,本人下载的是2.50.0版本

(2)构建和修补Jetson L4T的内核模块

cd librealsense2
./scripts/patch-realsense-ubuntu-L4T.sh  

(3)编译lebrealsense2 SDK

sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev -y
./scripts/setup_udev_rules.sh  
mkdir build && cd build  
cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=release -DFORCE_RSUSB_BACKEND=false -DBUILD_WITH_CUDA=true && make -j$(($(nproc)-1)) && sudo make install

(4)检查是否安装成功
终端输入

realsense-viewer

若出现界面则说明安装成功

2.realsense-ros

(1)安装以来

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev

(2)先创建一个ros工作环境

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace

在后面的yolov5-ros的安装也会用到此工作空间

(3)然后在~/catkin_ws/src/中获取源码

git clone https://github.com/IntelRealSense/realsense-ros.git
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git

建议直接去网页上下载,版本一定要和你安装的libreasense2版本对应。下载完解压完之后需要更改一些内容。

cd ~/catkin_ws/src/realsense-ros/realsense2_camera
gedit CMakeLists.txt

修改如下内容

在这里就需要上文中安装的opencv,将划线部分安装为自己的opencv安装路径。将realsense的版本更改为自己的。

(4)make
完成如上操作后即可开始编译

cd ~/catkin_ws
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

检查安装

在终端输入

roslaunch realsense2_camera rs_camera.launch

若没有报错则安装成功,提示警告是正常的。

安装archiconda

因为jetson tx2 是aarch架构所以Anaconda在tx2上使用不了,只能使用archiconda
进入网址直接下载.sh文件
在这里插入图片描述
将此文件出入到tx2开发板中执行以下命令

sudo chmod 777 Archiconda3-0.2.3-Linux-aarch64.sh
./Archiconda3-0.2.3-Linux-aarch64.sh

添加环境变量

gedit ~/.bashrc
export PATH=~/home/anaconda3/bin:$PATH ####加在最后一行
source ~/.bashrc

在终端输入

conda activate base

如果能进入base环境则安装成功。archiconda的用法和anaconda的用法类似。

在此申明一下,我的环境变量有所不同,因为真的踩了很多坑,archiconda卸了又装了很多次。然后有一次下载之后他没有自动给我配置环境变量(正常应该是下载之后会在环境变量中增加一段关于archiconda的函数),而是给我增加如下的一个环境变量。
在这里插入图片描述
不知道为啥这样反而更好,因为如果正确安装后它会将把最外面的python3的环境改为3.7,这样不利于我们。如果像我这样,外面的环境不会变,conda也能照常使用。完美!!!!!

安装GPU版本的pytorch(重点)

在这一步中我踩了很多坑,卡了我两个多星期硬是没有完成。首先是版本问题,安装archiconda之后base环境的python是3.7但是我们在安装torch时需要3.6的环境。但是创建的3.6环境会一直报一个错(下面会说)。我们继续

  • 先创建一个python3.6的环境(建议为3.6.9)因为在pytorch的官网教程中只给出了支持py36的安装包。
conda create -n yolov5 python==3.6.9
  • 创建好之后进入yolov5环境是无法使用pip以及pip3的会一直
conda activate yolov5

在这里插入图片描述
会一直报这个错误,这是因为1:pip的版本不对建议安装pip19.1.1.但是pip和pip3是使用不了的所以选用conda安装

conda install pip=19.1.1

安装完成后pip还是用不来,但是pip3可以使用,但是pip3好像并没有链接到我们创建的环境中来。看了很多教程和资料后发现是pip使用不来可能是因为numpy的版本不对。可以通过这个网址下载。但是需要注意几个点,首先一定要选用支持linux-aarch64结构的,第二选用的numpy要大于1.18.5版本。
在这里插入图片描述
安装后就可以使用pip了。完美!!!!!

  • 然后进入NVIDIA的官网下载torch的文件。这里也有坑,在教程中说的是CUDA10.2是支持torch1.8的但是我下载完成后始终无法激活。尝试了很多方法都没有成功,最后没办法了,想着试一下torch1.7能不能行,没想到还真的成功了,检测的返回值是ture。教程就按官网的执行就行。在这里插入图片描述
  • 检查安装
python3 
import torch
torch.cuda.is_available

如果返回的是Ture,则说明安装成功了。

但是有些坑需要注意

1.torchvision环境变量

在添加torchvision的环境变量时一定要加对,最好是进入到环境变量中去检查一下,因为它和后面下载的版本是对应的。

2.执行python3 setup.py install --user报错问题

参收这位大佬的教程pycuda安装 cuda.h文件找不到问题

3.pillow<7

教程中说的是要小于7,但是我后面执行时它又说要大于7.1.2所以我直接下载的7.1.2

4.import torch的报错

下载完成后在python3中测试,import torch时会报错GLIBC_2.28 not found。若遇到此问题参考这位大佬GLIBC_2.28 not found。这个错误最好还是多看些解决方法,并且不要删除.so文件,不然会导致系统崩溃。

安装Yolov5-Ros

如果以上内容多完成了,那接下来的任务就简单了。直接借用好人王诗龄这位大佬的教程。当然我们只需要运行他的工作包就行。环境就使用我们自己创建yolov5环境,下载他的yolov5-ros的包解压在我的工作环境中(就是上面创建的catkin_ws/src)然后我们需要改一下launch文件。

cd ~/catkin_ws/src/Yolov5_ros/yolov5_ros/yolov5_ros/launch
gedit yolo_v5.launch

在这里插入图片描述

用法以及效果展示

  • 在一个终端中输入
 roslaunch realsense2_camera rs_camera.launch
  • 再打开一个终端输入
roslaunch yolov5_ros yolo_v5.launch

等待片刻即可出现图像

jetson tx2 yolov5实时检测

总结

本篇文章是在我完成之后才想起来写一篇技术文档,一是因为真的踩的坑太多了,前前后后差不多有一个月才完成,所以想记录下来,相当于是给自己这一个月的努力的总结。二是因为在完成过程中了,真的很少有完整的教程,想写一篇文章,对网友们有所帮助把。当然因为这篇文章是我在完成了任务之后才想起来写的,所以其中可能有很多没有记录下来的错误,如果下次碰见了还是应该先记录一下。如果文章中有什么问题欢迎指出。当然我这篇文章主要是记录,建议各位网友多看看其他的教程。一个月的努力总算是完成了。

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在 NVIDIA Jetson TX2 上安装 CUDA Toolkit 可以按照以下步骤进行: 1. 首先,保你的 Jetson TX2 上已经安装了正确的 JetPack 软件包。JetPack 是 NVIDIA 官方提供的软件包,用于为 Jetson 系列设备提供操作系统和开发工具。你可以从 NVIDIA 的官方网站上下载并按照指南进行安装。 2. 安装完成 JetPack 后,连接 Jetson TX2 到电脑,并通过终端使用 `ssh` 命令登录到 Jetson TX2。 3. 下载所需的 CUDA Toolkit 安装包。你可以从 NVIDIA 的开发者网站(https://developer.nvidia.com/cuda-downloads)上选择适合 Jetson TX2 的 CUDA Toolkit 版本进行下载。 4. 将下载的 CUDA Toolkit 安装包传输到 Jetson TX2。你可以使用 `scp` 命令将文件从本地传输到 Jetson TX2。例如: ``` $ scp cuda_*.deb <username>@<jetson_ip>:~/ # 将安装包传输到 Jetson TX2 的用户目录 ``` 5. 进入 Jetson TX2 终端,并执行以下命令,将 CUDA Toolkit 安装包解压缩: ``` $ cd ~/ $ sudo dpkg -i cuda_*.deb $ sudo apt-get update $ sudo apt-get install cuda ``` 6. 安装完成后,需要配置环境变量。打开终端并执行以下命令以编辑 `~/.bashrc` 文件: ``` $ gedit ~/.bashrc ``` 7. 在文件末尾添加以下行: ``` export PATH=/usr/local/cuda-<version>/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-<version>/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} ``` 请将 `<version>` 替换为你所安装的 CUDA 版本号,例如 `8.0` 或 `10.0`。 8. 保存并关闭文件后,执行以下命令使环境变量生效: ``` $ source ~/.bashrc ``` 9. 最后,验证 CUDA 是否成功安装。在终端执行以下命令: ``` $ nvcc --version ``` 如果成功安装,你将看到 CUDA 的版本信息。 希望这些步骤能帮助你成功安装 CUDA Toolkit 在 Jetson TX2 上。如果有任何问题,请随时向我提问。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值