环境:ubuntu18.04 + ros-melodic + python3.8 + pytorch1.0+
编译依赖:catkin_simple_pkg 下载放入同一个rosws下catkin_make
编译
此外
实现yolo作为service的server,发送sensor::Imge 图片,得到yolo检测的结果(置信度,2dbbox左上右下点坐标,附加文本信息,分类结果), 使用步骤如下:
-
依赖安装
- 安装好
pytorch
catkin-simple
放入本包同一工程下
- 安装好
-
填写
config/config.demo
中参数,其中- weight为保存的pytorch模型.pt文件 ,
- img_size为图片大小,必须和训练时的设置一致
- action 为选择使用action模式还是service模式来使用ros2yolo功能
-
demo_server.py
开头#!/home/ou/software/anaconda3/envs/dl/bin/python
换为自己装有pytorch
的虚拟环境下的解释器- 设置脚本为可执行权限
- 运行
launch/service_demo.launch
启动service-server
-
参考
src/service_client_demo.cpp
#include <cv_bridge/cv_bridge.h> #include <ros_yolo/yolo.h> //instance of server-client ros::ServiceClient client = n.serviceClient<ros_yolo::yolo>("yolo_service"); //request once ros_yolo::yolo srv; srv.request.image = //sensor_msgs::Image variable //send request if (client.call(srv)) { ROS_INFO("request succeed"); // analyze each result for (auto &result:srv.response.results){ auto prob = result.prob; // probability of this classification auto xyxy = result.bbox.xyxy; // coordinates of the upper left corner and the lower right corner auto text = result.label; // addtional infomation auto cls = result.id; // classification result // .... } }else { ROS_ERROR("request fail"); }
填写config/config.demo
中参数 action=True
action-client 参考src/action_client_demo.cpp
action_client发出的goal只需包含iamge即goal.image = //sensor_msgs::Image
action_client接受到的结果result
包含原始图像msg和检测结果即result->image 和 result->result