yolov8 ROS
目录
3.先创建3.6的虚拟环境,然后按照版本要求先下载torch和torchvision
2.安装完成后,去解压那两个安装包,解压后将opencv_coutrib放在opencv下(将文件夹改名)
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
在板子上,进入放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