From 542ef2212005e733fd99dd2f0ca3e00bd3091bcb Mon Sep 17 00:00:00 2001 From: Xuan0319 Date: Mon, 26 Dec 2022 20:47:18 +0800 Subject: [PATCH] Add class "PubInfo" to publish drone's formation type and mission. --- class_model/include/class_model/INFO.h | 14 ++++++++++ class_model/include/class_model/PubInfo.h | 31 +++++++++++++++++++++++ class_model/src/PubInfo.cpp | 22 ++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 class_model/include/class_model/INFO.h create mode 100644 class_model/include/class_model/PubInfo.h create mode 100644 class_model/src/PubInfo.cpp diff --git a/class_model/include/class_model/INFO.h b/class_model/include/class_model/INFO.h new file mode 100644 index 0000000..dfc2a22 --- /dev/null +++ b/class_model/include/class_model/INFO.h @@ -0,0 +1,14 @@ +#ifndef INFO_H +#define INFO_H + +#include + +typedef struct flight_INFO +{ + std::string type, //type include drone's formation. ex: V , X ,| ...... + mission; //The mission is what we want the drone to do. +}INFO; + + + +#endif INFO_H diff --git a/class_model/include/class_model/PubInfo.h b/class_model/include/class_model/PubInfo.h new file mode 100644 index 0000000..b401d63 --- /dev/null +++ b/class_model/include/class_model/PubInfo.h @@ -0,0 +1,31 @@ +/*Publish Drone's status to topic "Flight_Information_reciver"*/ +#ifndef PUBINFO_H +#define PUBINFO_H + +#include +#include +#include "class_model/INFO.h" + + +class PubInfoClass { +public: + PubInfoClass(); + virtual ~PubInfoClass(); + void pub_info(INFO msg); + + +private: + // ROS NodeHandle + ros::NodeHandle node_handle_; + + //SUBSCRIBE + + //PUBLISH + ros::Publisher PubInfo; + INFO msg; + diagnostic_msgs::KeyValue info; + + +}; + +#endif // PUBINFO_H \ No newline at end of file diff --git a/class_model/src/PubInfo.cpp b/class_model/src/PubInfo.cpp new file mode 100644 index 0000000..83a1b1a --- /dev/null +++ b/class_model/src/PubInfo.cpp @@ -0,0 +1,22 @@ +#include "class_model/PubInfo.h" + +PubInfoClass::PubInfoClass():node_handle_("~"){ + + std::string ros_namespace; + if (!node_handle_.hasParam("namespace")) + { + }else{ + node_handle_.getParam("namespace", ros_namespace); + } + PubInfo = node_handle_.advertise(ros_namespace+"/Flight_Information_reciver",100); + +} + +PubInfoClass::~PubInfoClass() { ros::shutdown(); } + +void PubInfoClass::pub_info(INFO msg){ + info.key = msg.type; //key == drone's formation + info.value = msg.mission; //value == drone's mission + PubInfo.publish(info); +} +