darknet_ros 是ros中用于目标检测的功能包,完成检测后会通过 darknet_ros_msgs/BoundingBoxes 消息将检测结果发送出来,为了在其他包中完成对该消息的订阅需要进行几点修改。
1.CmakeLists.txt的修改
find_package(catkin REQUIRED COMPONENTS
geometry_msgs
mavros_msgs
roscpp
rospy
std_msgs
cv_bridge
image_transport
message_generation
darknet_ros_msgs
)
2. package.xml的修改
<build_depend> darknet_ros_msgs </build_depend>
<exec_depend> darknet_ros_msgs </exec_depend>
3.订阅
#include <darknet_ros_msgs/BoundingBox.h>
#include <darknet_ros_msgs/BoundingBoxes.h>
void personTrack(const darknet_ros_msgs::BoundingBoxes::ConstPtr &msg)
{
double xmin = msg->bounding_boxes[0].xmin;
double ymin = msg->bounding_boxes[0].ymin;
double xmax = msg->bounding_boxes[0].xmax;
double ymax = msg->bounding_boxes[0].ymax;
}
ros::Subscriber sub = nh.subscribe("/darknet_ros/bounding_boxes",10,personTrack);