请参考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 install curl 
- curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -(**若出现`gpg: no valid OpenPGP data found`可直接跳过 **)
- sudo apt update
- sudo apt install ros-melodic-desktop-full
- echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
- source ~/.bashrc
- source /opt/ros/melodic/setup.bash
- sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
- sudo apt install python-rosdep
- sudo rosdep init
- rosdep update
  • 以上步骤执行完成后,可尝试在终端运行roscore命令,若出现下图所示,说明ros安装正常:

    二、安装DeepStream on TX2(Jetpack 4.5.1)

    (备注):若使用SDKManager软件对TX2进行刷机,且刷入系统时选择了DeepStream 5.1选项,便会自动安装 DeepStream,无需进行以下手动安装。

    1.安装依赖

    执行下面命令来安装需要的软件包:

    sudo apt install \
    libssl1.0.0 \
    libgstreamer1.0-0 \
    gstreamer1.0-tools \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav \
    libgstrtspserver-1.0-0 \
    libjansson4=2.11-1
    

    2.安装 DeepStream SDK

    (1)进入官方DeepStream SDK选择DeepStream 5.1 for Jetson并下载(Jetpack 4.5.1 向下兼容)
    备注):也可在本人提供相关资源百度云盘链接中下载deepstream_sdk_5.1_jetson.tbz2文件包

    (2)下载后得到压缩文件deepstream_sdk_5.1_jetson.tbz2,输入以下命令以提取并安装DeepStream SDK:

    sudo tar -xvf deepstream_sdk_5.1_jetson.tbz2 -C /
    cd /opt/nvidia/deepstream/deepstream-5.1
    sudo ./install.sh
    sudo ldconfig
    

    (3) DeepStream测试

  • 执行以下命令:
  • cd /opt/nvidia/deepstream/deepstream-5.1/sources/objectDetector_Yolo

  • 执行编译命令
  • sudo CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo
    出现如下图所示结果,说明编译成功:

  • 编辑文件prebuild.sh并注释掉除yolov3-tiny的语句
    执行以下命令(下载yolov3-tiny.cfg和yolov3-tiny.weights):
  • sudo ./prebuild.sh

  • 执行命令:
  • deepstream-app -c deepstream_app_config_yoloV3_tiny.txt

    若能生成相关engine引擎并启动视频流检测,则说明DeepStream SDK安装成功,如下图所示:

    三、安装onnx2trt(在jetson nano 上完成)

  • 查看TensoRT版本
  • dpkg -l |grep TensorRT

    安装cmake

  • 删除原来的cmake
  • sudo apt remove cmake
    sudo apt purge --auto-remove cmake

  • 下载所需版本,解压
  • tar -xzvf cmake-3.21.2.tar.gz
    cd ~/cmake-3.21.2

    执行命令......
  • ./bootstrap
    make -j4
    sudo make install

  • 如果编译安装cmake时如果出现错误:could not find OpenSSL,执行
  • sudo apt install libssl-dev

    sudo cp ./bin/cmake /usr/bin/

  • 验证安装结果
  • cmake --version

    安装protobuf

    下载protobuf-3.17.3.zip并解压

    unzip protobuf-3.17.3.zip

    执行以下命令(其中sudo make install 等待时间较长)

        cd protobuf-3.17.3
        ./autogen.sh
        ./configuremake
        sudo make install
        sudo ldconfig
        protoc --version
    

    克隆后onnx-tensorrt/third_party/onnx中内容是空的,需要下载与tensorrt7.1匹配的onnx1.6
    下载地址为:https://github.com/onnx/onnx/releases ,也可在百度网盘中下载。
    将下载后的内容,解压放置到onnx-tensorrt/third_party/

     tar -xzvf onnx-1.6.0.tar.gz 
     mv onnx-1.6.0 onnx
    

    执行以下命令

     cd onnx-tensorrt
     mkdir build
     cd build
     cmake .. -DTENSORRT_ROOT=/usr/src/tensorrt
     make -j4
     sudo make install
     onnx2trt -V
    

    相关资源百度云盘链接中将yolox_s.onnx、yolox_tiny.onnx、yolox_nano.onnx到Jetson Nano上,可放置于home目录下,并依次执行 以下命令:

    onnx2trt yolox_s.onnx -o yolox_s.engine

    onnx2trt yolox_tiny.onnx -o yolox_tiny.engine

    onnx2trt yolox_nano.onnx -o yolox_nano.engine

    若要自己生成.onnx文件,请进入以下链接:
    yolox导出onnx

    四、从github克隆cv-detect-ros项目,并将本人设计好的yolox-ros-deepstream子项目的相关子文件夹拷贝到相应目录下进行编译

  • 从github克隆cv-detect-ros项目(建议在搭建梯子的环境下进行git clone)
  • 先按 ctrl + alt +t 进入终端(默认克隆的文件在家目录下)

    git clone https://github.com/guojianyang/cv-detect-ros.git

  • 首先对我们所要操作的文件夹赋予权限
  • sudo chmod -R 777 /opt/nvidia/deepstream/deepstream-5.1/sources/

  • 再拷贝cv-detect-ros/yolox-ros-deepstream/yolox-ros文件夹到opt/nvidia/deepstream/deepstream-5.1/sources/
    yolox-ros中的文件内容如下图所示:

    sudo cp ~/cv-detect-ros/yolox-ros-deepstream/yolox-ros /opt/nvidia/deepstream/deepstream-5.1/sources/

  • 拷贝步骤(三)中生成的yolox、yolox-tiny和yolox-nano的engine文件到opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
  • cp ~/yolox_s.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros

    cp ~/yolox_tiny.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros

    cp ~/yolox_nano.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros

     cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
     CUDA_VER=10.2 make -C nvdsinfer_custom_impl_yolox
    

    对于yolox-tiny和yolox-nano的部署, nvdsparsebbox_yolox.cpp中先修改

    static const int INPUT_W = 416; //640;
    static const int INPUT_H = 416; //640;
    

    然后在进行编译

    搭建自定义的rostpoic话题消息的工作空间boxes_ws,建立ros接口

  • 将git clone 的文件夹cv-detect-ros/yolovx-ros-deepstream/boxes_ws复制到home目录下
  • sudo cp -r ~/cv-detect-ros/yolox-ros-deepstream/boxes_ws ~/

  • 进入boxes_ws文件夹,编译ros工作空间
  • cd ~/boxes_ws

  • boxes_ws目录下若有 build和devel文件,则需删除后再编译,否则无需执行本步骤
  • rm -r build devel

    catkin_make

  • 编译成功后,需将boxes_ws工作空间添加环境变量
  • sudo gedit .bashrc

    echo "source ~/boxes_ws/devel/setup.bash" >> ~/.bashrc

    source ~/.bashrc

  • 将src下功能包darknet_ros_msgs建立软连接至/opt/nvidia/deepstream/deepstream-5.1/sources/yolovx-ros/目录下
  • cd ~/boxes_ws/src
    ln -s ~/boxes_ws/src/ darknet_ros_msgs /opt/nvidia/deepstream/deepstream-5.1/sources/yolovx-ros/

  • 测试ros接口是否成功建立
  • cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolovx-ros/

      在当前目录终端下运行`python2`(一定要python2),并导入以下功能包:
    

    from darknet_ros_msgs.msg import BoundingBox_tensor,BoundingBoxes_tensor

       若以上导入没有报错,则说明ros接口创建成功!!!  
    

    五、落地部署测试

    测试推理视频文件

    启动检测程序(启动成功后会出现检测画面)

    cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
    deepstream-app -c deepstream_app_config.txt
    

    将yolox-ros-deepstream中的client_ros.py文件复制到/opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/中

    cp -r ~/cv-detect-ros/yolox-ros-deepstream/client_ros.py /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/

    ctrl + alt +t 新建终端,启动roscore

    roscore

    ctrl + alt +t新建一个终端,并进入目录/opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/

    cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/
    python2 client_ros.py

    client_ros.py文件启动后,检测到的目标数据以topic的形式发布出来,可通过订阅话题boundingboxes_tensor实时查看目标检测的数据

    如下图所示: