Jetson系列开发版配置cuda.cv.ubuntu环境

yolov8 ROS

目录

yolov8 ROS

yolov5 ROS 可以CUDA

1.刷机

2.安装ros

3.先创建3.6的虚拟环境,然后按照版本要求先下载torch和torchvision

安装torch

安装torchvision

安装opencv

1.Jetson nx属于ubuntu系统,想要安装opencv,直接用pip install的方法安装的版本会是最新版,不适配,所以在open CV和opencv-contrib官网下载安装包后自己安装.注意ubuntu系统要用tar.gz的安装包,不要用zip

2.安装完成后,去解压那两个安装包,解压后将opencv_coutrib放在opencv下(将文件夹改名)

3.六线程编译

4.完成后进行安装

5.后续配置

6.安装cv_bridge

安装输入法: 


yolov8与ROS代码链接:

GitHub - qq44642754a/Yolov8_ros

1.创建虚拟环境:

conda create -n yolov8 python=3.8   

mkdir -p catkin_ws/src   # create workspeace  home

2.创建后在虚拟环境中安装yolov8依赖:

conda activate yolov8
pip install ultralytics
pip install rospkg

3.在虚拟环境中进入ROS工作空间 :

cd /catkin_ws/src

git clone https://github.com/qq44642754a/Yolov8_ros.git

cd ..

catkin_make

source ~/catkin_ws/devel/setup.bash

4.环境创建好后,要做的就是获取摄像头

把usb_cam包复制一份,运行包里launch文件,一直获取摄像头画面

roslaunch usb_cam usb_cam-test.launch    #recive camera 

rqt_image_view      #watch camera

在yolov8代码中,与usb_cam确认话题是否一致,接收到摄像头画面就能预测了

topic:usb_cam/image_raw     msg:sensor_msgs/Image

如果使用压缩图像,请更改topic,消息类型:msg:sensor_msgs/CompressedImage

记住更改消息类型

roslaunch yolov8_ros yolo_v8.launch
rostopic list
ls /dev/video*
rostopic info sensor_msgs/Image  #msg
rostopic info usb_cam/compressed   #topic
rostopic hz /usb_cam/compressed 

rostopic bw     显示主题使用的带宽
rostopic delay  显示带有 header 的主题延迟
rostopic echo   打印消息到屏幕
rostopic find   根据类型查找主题
rostopic hz     显示主题的发布频率
rostopic info   显示主题相关信息
rostopic list   显示所有活动状态下的主题
rostopic pub    将数据发布到主题
rostopic type   打印主题类型

Jetson nx/orin 配置环境

xavier nx: torch 1.10.0 torchvision 0.11.1 opencv 4.6.0 Ubuntu 18.04 ROS Melodic python 3.6

Orin nano:torch 1.14.0 torchvision 1.14.1 opencv 4.6.0 Ubuntu 20.04 ROS Noetic python3.8.10

1.刷机

下载SDKmanager,https://developer.nvidia.com/zh-cn/embedded/jetpack,点击这里下载

新板子第一步就是刷机,不要装输入法,不要改系统源

2.创建虚拟环境

先安装miniforge,再根据需求创建虚拟环境

conda create -n yolov5 python=3.6

3.软件安装

3.1安装torch

nvidia官方torch下载地址

在板子上,进入放torch下载包的文件夹,打开终端,进入你的conda虚机环境(这样就是安装在虚拟环境里),运行:

pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl


注意torch文件名换成自己对应版本的,安装完成后,会提示successful install torch1.10.0,就安装成功了

3.2安装torchvision

1.终端先直接下载安装包

git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision

 最后那个torchvision是下载的文件夹名 ,如果显示重复,就把torchvision改一个文件名

2.进入文件夹,打开终端,进入虚拟环境安装依赖项

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
export BUILD_VERSION=0.11.1   
python3 setup.py install --user
cd ..

3.测试

import torch
import torchvision
print('1')
print(torch.__version__)  # 查看torch版本
print('2')
print(torchvision.__version__)  # 查看torchvision版本
print('3')
print(torch.cuda.is_available())  # 查看torch下cuda是否可用
print('4')
print(torch.cuda.device_count())  # 查看#GPU驱动数量
print('5')
print(torch.cuda.get_device_name())  # 查看#GPU驱动动名称

3.3安装opencv

1.Jetson nx属于ubuntu系统,想要安装opencv,直接用pip install的方法安装的版本会是最新版,不适配,所以在open CV和opencv-contrib官网下载安装包后自己安装.注意ubuntu系统要用tar.gz的安装包,不要用zip

opencv:https://github.com/opencv/opencv/releases

opencv-contrib:https://github.com/opencv/opencv_contrib/releases

tar -zxvf opencv-4.6.0.tar.gz
tar -zxvf opencv_contrib-4.6.0.tar.gz

 下完安装包后,在终端中安装所有的依赖项:

sudo apt-get install build-essential 
sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

 opencv  常见问题:无法定位 libjasper-dev,解决方法如下,换源

sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"
sudo apt update
sudo apt install libjasper1 libjasper-dev

2.安装完成后,去解压那两个安装包,解压后将opencv_coutrib放在opencv下(将文件夹改名)

并在opencv下创建一个build文件夹

cd opencv-4.6.0
mkdir build
cd build

创建build文件夹后,后面要做工作就是cmake编译,然后安装

cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_PNG=OFF \
-DBUILD_TIFF=OFF \
-DBUILD_TBB=OFF \
-DBUILD_JPEG=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_ZLIB=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=ON \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DWITH_OPENCL=OFF \
-DWITH_OPENMP=OFF \
-DWITH_FFMPEG=ON \
-DWITH_GSTREAMER=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_CUDA=ON \
-DOPENCV_DNN_CUDA=ON \
-DWITH_GTK=ON \
-DWITH_VTK=OFF \
-DWITH_TBB=ON \
-DWITH_1394=OFF \
-DWITH_OPENEXR=OFF \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.4 \
-DCUDA_ARCH_BIN=7.2 \
-DCUDA_ARCH_PTX="" \
-DINSTALL_C_EXAMPLES=OFF \
-DOPENCV_ENABLE_NONFREE=ON \
-DINSTALL_TESTS=OFF \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
-DCMAKE_INSTALL_PREFIX=/usr/local ..

第一次安装的错误是因为选择的是Python2,所以装到了python2.6里面.记得在编译代码里看看是不是python3.

 1.DOPENCV_EXTRA_MODULES_PATH要改成opencv_contrib的对应地址
 2.DCUDA_ARCH_BIN要改成对应数值,查看方法如下: orin nano 8.7

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

3. CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2  cuda版本换成自己的

3.六线程编译
sudo make -j6
4.完成后进行安装
sudo make install
5.后续配置
# 查看版本
opencv_version  # 4.6.0
# 后续配置
sudo apt-get install pkg-config
sudo gedit /etc/ld.so.conf.d/opencv.conf   
# 打开为空文件后加入下述内容,然后保存退出
/usr/local/lib
# 8.2 后续配置
sudo apt-get install vim-gtk
sudo vim /etc/bash.bashrc    
# 加入到最后:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
python
import cv2
cv2.__version__

 如果发现

>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'

看一看路径,可能是因为已经装好了,但是python没有cv路径

检查Python的模块搜索路径是否包含OpenCV库的安装目录:

import sys
print(sys.path)

我打印发现只有/usr/local/lib/python3.8/dist-packages,但实际看文件夹发现我的次v包在/usr/local/lib/python3.8/site-packages/cv2,于是:

sys.path.append('/usr/local/lib/python3.8/site-packages')

再运行就好了。

6.安装cv_bridge

OpenCV安装好以后,需要进一步编译CV-Bridge( cv_bridge是在ROS图像消息和OpenCV图像之间进行转换的一个功能包)。

首先,创建一个 ROS 的工作空间(如果自己有就不用,在自己要用到的工作空间进行)

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace 
cd ..
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

然后,下载对应版本的源码,因为是 Ubuntu 20.04 因此下载 noetic 版本

https://github.com/ros-perception/vision_opencv/tree/noetic

下载完成后解压到 ~/catkin_ws/src 目录下,因为我们只需要 cv_bridge,所以只需保留 cv_bridge 文件夹,将其放在 ~/catkin_ws/src/,然后修改一下 cv_bridge 的配置文件。 

CMakeLists.txt 文件,在 set(_opencv_version 4) 前面添加你的 opencv 安装路径,大概在第 20 行

set(OpenCV_DIR /home/nvidia/opencv/opencv-4.6.0/build/)
set(_opencv_version 4)
find_package(OpenCV 4 QUIET)

然后编译这个功能包

cd ~/catkin_ws/src
catkin_make

如果编译成功,则 cv_bridge功能包制作就完成了,这也说明 opencv 4.6.0 已经正确安装了,并且这个cv_bridge功能包可以正确连接上自己安装的 opencv 版本,最后我们将这个功能包的路径添加到 ~/.bashrc 文件夹中,打开 ~/.bashrc文件夹,在最后加入如下命令

source ~/catkin_ws/devel/setup.bash

 最后在终端 source 一下当前该路径

source ~/.bashrc

如果是melocid

git clone -b melocid https://github.com/ros-perception/vision_opencv

问题:安装之后python不能import cv2/只有特定版本可以/jtop与import cv2版本不一样,解决方法:

python与opencv没联系起来,新安装的cv文件python目录下没有
首先你要确定在configure时你正确地添加了PYTHON3_INCLUDE_DIR,也就是在cmake的信息栏中是有python3描述的;
进入'opencv-../build/lib/python3/'文件夹,会找到'cv2.cpython-3xx-aarch64-linux-gnu.so'文件,这个文件是对应一个python版本的,如果没有你需要的版本,说明configure的时候你没有添加它。

把.so文件复制到你python的lib文件夹中,以系统自带的python3.8为例:
#在.so文件所在文件夹中执行
sudo cp cv2.cpython-38-aarch64-linux-gnu.so /usr/local/lib/python3.8/
#进入目标文件夹
cd /usr/local/lib/python3.8/
#将.so文件重命名为cv2.so
sudo mv cv2.cpython-38-aarch64-linux-gnu.so cv2.so


 

安装输入法: 

https://zhuanlan.zhihu.com/p/529892064

安装tensorflow:

https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值