yolov5封装进ros系统

一,要具备ROS环境

ROS环境搭建可以参考我之前的文章
ROS参考文章1
ROS参考文章2

yolov5封装进ros系统_第1张图片

建立ROS工作空间

ROS系统由自己的编译空间规则。


cd 你自己想要的文件夹(我一般是home目录)

  • mkdir -p (你自己的文件夹名字,比如我是yolov5_ws)/src(src不能更换名字)(举例:mkdir -p yolov5/src)
  • 建立工具包,catkin create_pkg yolov5_ros roscpp rospy std_msgs message_generation message_runtime
  • 在yolov5_ros 文件下建立如下几个文件夹:
    • launch 文件夹(launch文件)
    • media 文件夹(测试视频文件,可以不要)
    • scripts文件夹(存放py的脚本文件)
    • weights文件(存放yolov5的权重文件,自己可以设置,改完之后,在launch文件夹里面记得同步更改)
    • yolov5文件夹(存放yolov5源码,版本不限制)
  • 新建消息文件夹yolo5_ros_msgs ,limian 里面新建msg文件夹,存放我们的自定义消息包类型
    • msg里面新建我们需要自定义的消息类型xxx.msg ,如下所示
      float64 probability
      int64 xmin
      int64 ymin
      int64 xmax
      int64 ymax
      int16 num
      string Class

yolov5封装进ros系统_第2张图片
备注:自己定义的消息包类型,不要忘记了CMakelist.txt文件里面修改编译规则。

cmake_minimum_required(VERSION 3.0.2)
project(yolov5_ros_msgs)


find_package(catkin REQUIRED COMPONENTS
  std_msgs
  message_generation
  message_runtime
  rospy
  std_msgs
)

add_message_files(
        DIRECTORY msg
        FILES
        BoundingBox.msg
        BoundingBoxes.msg
)

generate_messages(
        DEPENDENCIES
        std_msgs
)

catkin_package(
  CATKIN_DEPENDS    message_generation  message_runtime rospy std_msgs

)


include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

具体每一项的意义可以参考我如下博客,写的非常详细
编译依赖项意义的参考博客

编写脚本封装yolo算法

这个根据自己的YOLO版本类型进行封装。我把该代码上传至我的个人github。

yolov5封装进ros系统_第3张图片

#启动脚本编写(根据个人节点情况编写)

<?xml version="1.0" encoding="utf-8"?>

<launch>

  <!-- Load Parameter -->
  
  <param name="yolov5_path"       value="$(find yolov5_ros)/yolov5"/>
  <param name="use_cpu"           value="True" />

  <!-- Start yolov5 and ros wrapper -->
  <node pkg="yolov5_ros" type="yolo_v5.py" name="yolov5_ros" output="screen" >
    <param name="weight_path"       value="$(find yolov5_ros)/weights/yolov5s.pt"/>

    <param name="image_topic"       value="/usb_cam/image_raw" />
    <param name="pub_topic"         value="/yolov5/BoundingBoxes" />
    <param name="camera_frame"       value="camera_color_frame"/>
    <param name="conf"              value="0.3" />
  </node>

</launch>

编译和添加环境变量

这个地方搞过ROS的都知道,不做详细说明。

编译完毕之后,运行脚本

roslaunch yolov5_ros 脚本名称

运行结果


运行的主题名称

yolov5封装进ros系统_第4张图片

riz显示

yolov5封装进ros系统_第5张图片

运行结果

yolov5封装进ros系统_第6张图片

你可能感兴趣的:(无人机设计开发,YOLO,机器人)