0
点赞
收藏
分享

微信扫一扫

Jetson NX 使用ROS+YOLOV5+CVbridge

小编 2022-03-12 阅读 513

目录

背景

环境

过程

引用 


背景

由于项目需要,需要使用ros topic发布工业相机的图片,这里使用到了ros中的CVbridge,因为默认的CVbridge使用ros 的python2.7,但是subscriber接收到图片后使用YOLO检测目标,YOLO需要在python3下运行

了解到有两种解决方法:

1. 新建一个工作空间,在python3下编译CVbridge。

2. 新建一个中间节点,中间节点接受图片并把图片转为自定义message发布出来。

这里只尝试第一种方法,以下是详细过程。

环境

硬件:NVIDIA JETSON NX + 大恒工业相机USB3.0接口

软件:JetPack 4.4,Python3.6.9,Ros Melodic,Opencv 4.1.11

未使用Anaconda

过程

首先创建一个新的工作空间

mkdir catkin_workspace
cd catkin_workspace
mkdir src

 在工作空间中配置依赖,前两个参数都一样,注意最后一个jetson为arm架构,文件名不一样。

catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/arrch64-linux-gnu/libpython3.6m.so
catkin config --install

在工作空间中克隆cv_bridge包。注意:ROS Melodic对应的cv_bridge的依赖为OpenCV3,Jetson NX自带的为OpenCV4,这里我们选择编译Noetic版的cv_bridge,其依赖为OpenCV4。

cd src
git clone https://github.com/ros-perception/vision_opencv.git

接下来返回上一目录进行编译

cd ..
catkin build

最后source环境

source install/setup.bash --extend

使用如下,先引用其他头文件,使用sys.path.remove移除python2.7环境,再使用sys.path.append添加刚才编译的cv_bridge所在的python3环境。注意:这里要注意引用顺序,顺序不对会导致某些引用报错。

import roslib
import rospy
from geometry_msgs.msg import Quaternion 

from sensor_msgs.msg import Image
from neuvition_driver.msg import test
from publishers.msg import scale
import time
import cv2
import pycuda.autoinit  # This is needed for initializing CUDA driver
import numpy as np
import ctypes
import tensorrt as trt
import pycuda.driver as cuda
import sys
import threading
import random
sys.path.remove("/opt/ros/melodic/lib/python2.7/dist-packages")
import cv2
sys.path.append("/home/nvidia/Documents/xw/catkin_work/install/lib/python3/dist-packages")
from cv_bridge import CvBridge, CvBridgeError

引用 

https://www.codeleading.com/article/56434046919/

举报

相关推荐

0 条评论