IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ROS学习 二、Debian10虚拟机下部署ROS YOLOv3 -> 正文阅读

[系统运维]ROS学习 二、Debian10虚拟机下部署ROS YOLOv3

前言

现在的机器人定位、导航等技术都会涉及到感知、规划、控制算法。本次将在ROS中配置yolov3目标检测算法,以此学习视觉感知算法在ROS中的搭建。

本文已经提前将ROS环境搭建好了。

darknet_ros

源码编译

首先创建一个ros工作空间,然后下载源码,

mkdir -p ~/yolo_ws/src
cd ~/yolo_ws/src
git clone https://github.com/leggedrobotics/darknet_ros.git

为了在加速编译,先提前把yolo的权重下载下来,

cd darknet_ros/darknet_ros/yolo_network_config/weights/
wget http://pjreddie.com/media/files/yolov2.weights
wget http://pjreddie.com/media/files/yolov2-tiny.weights
wget http://pjreddie.com/media/files/yolov3-tiny.weights
wget http://pjreddie.com/media/files/yolov3.weights

然后就可以开始编译了,

catkin_make -DCMAKE_BUILD_TYPE=Release
# 编译成功后,准备进行测试

运行ROS YOLOv3

首先配置darknet_ros的运行环境

source ~/yolo_ws/devel/setup.bash

然后选择你要使用的yolo模型,这里可以选择之前下载的yolov2、yolov3以及tiny模型,通过修改darknet_ros.launch文件来进行切换,

rosed darknet_ros darknet_ros.launch

该launch文件的注释如下:

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

<launch>
  <!-- Console launch prefix -->
  <arg name="launch_prefix" default=""/>
  <arg name="image" default="/camera/rgb/image_raw" />
# 定义yolo结构和权重的路径
  <!-- Config and weights folder. -->
  <arg name="yolo_weights_path"          default="$(find darknet_ros)/yolo_network_config/weights"/>
  <arg name="yolo_config_path"           default="$(find darknet_ros)/yolo_network_config/cfg"/>
# 定义ros通信的方式 与 yolo的配置
  <!-- ROS and network parameter files -->
  <arg name="ros_param_file"             default="$(find darknet_ros)/config/ros.yaml"/>
  <arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/>
# 载入ros和yolo配置
  <!-- Load parameters -->
  <rosparam command="load" ns="darknet_ros" file="$(arg ros_param_file)"/>
  <rosparam command="load" ns="darknet_ros" file="$(arg network_param_file)"/>
# 开启节点,接收摄像头图像
  <!-- Start darknet and ros wrapper -->
  <node pkg="darknet_ros" type="darknet_ros" name="darknet_ros" output="screen" launch-prefix="$(arg launch_prefix)">
    <param name="weights_path"          value="$(arg yolo_weights_path)" />
    <param name="config_path"           value="$(arg yolo_config_path)" />
    <remap from="camera/rgb/image_raw"  to="$(arg image)" />
  </node>

 <!--<node name="republish" type="republish" pkg="image_transport" output="screen" 	args="compressed in:=/front_camera/image_raw raw out:=/camera/image_raw" /> -->
</launch>

由于我们想使用yolov3,因此将launch中的yolov2-tiny.yaml改为yolov3.yaml

接着测试一下usb摄像头是否能够打开,并找到摄像头发布的话题名,并修改darknet_ros中的话题订阅

# 测试摄像头
roslaunch usb_cam usb_cam-test.launch 
# 找到摄像头发布的话题
rostopic list
# 一般是类似 /usb_cam/image_raw 这种话题
# 然后编辑ros yolo需要接收图像时需要订阅的话题
rosed darknet_ros ros.yaml
# camera_reading中的topic改成找到的摄像头发布的话题

然后测试ros yolov3,

# 打开两个terminal
roslaunch darknet_ros darnet_ros.launch
roslaunch usb_cam usb_cam-test.launch
# 看到出现了一个名为yolo的新视图,则表明运行成功

此外,我还打开了一个新窗口查看运行中的topic,

# rostopic list -v
Published topics:
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /rosout [rosgraph_msgs/Log] 3 publishers
 * /darknet_ros/found_object [darknet_ros_msgs/ObjectCount] 1 publisher
 * /darknet_ros/bounding_boxes [darknet_ros_msgs/BoundingBoxes] 1 publisher
 * /darknet_ros/detection_image [sensor_msgs/Image] 1 publisher
 * /darknet_ros/check_for_objects/result [darknet_ros_msgs/CheckForObjectsActionResult] 1 publisher
 * /darknet_ros/check_for_objects/feedback [darknet_ros_msgs/CheckForObjectsActionFeedback] 1 publisher
 * /darknet_ros/check_for_objects/status [actionlib_msgs/GoalStatusArray] 1 publisher
 * /image_view/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /image_view/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /image_view/output [sensor_msgs/Image] 1 publisher
 * /usb_cam/image_raw/compressedDepth [sensor_msgs/CompressedImage] 1 publisher
 * /usb_cam/image_raw/compressedDepth/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /usb_cam/image_raw/compressedDepth/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /usb_cam/image_raw/compressed [sensor_msgs/CompressedImage] 1 publisher
 * /usb_cam/image_raw/compressed/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /usb_cam/image_raw/compressed/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /usb_cam/image_raw [sensor_msgs/Image] 1 publisher
 * /usb_cam/image_raw/theora [theora_image_transport/Packet] 1 publisher
 * /usb_cam/image_raw/theora/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /usb_cam/image_raw/theora/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /usb_cam/camera_info [sensor_msgs/CameraInfo] 1 publisher

Subscribed topics:
 * /rosout [rosgraph_msgs/Log] 1 subscriber
 * /usb_cam/image_raw [sensor_msgs/Image] 2 subscribers
 * /darknet_ros/check_for_objects/goal [darknet_ros_msgs/CheckForObjectsActionGoal] 1 subscriber
 * /darknet_ros/check_for_objects/cancel [actionlib_msgs/GoalID] 1 subscriber

后记

过段时间我会对darknet_ros进行更细致的源码和配置文件解析~

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:42:51  更:2021-07-16 11:44:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 0:51:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码