|
|
|
|
#include"class_model/requestData.h"
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
|
int command;
|
|
|
|
|
// json j_data; //Don't set json as global variable
|
|
|
|
|
|
|
|
|
|
RequestClass::RequestClass() : node_handle_(""){
|
|
|
|
|
|
|
|
|
|
// mqtt_data = node_handle_.subscribe("/Flight_Information_reciver", 100,
|
|
|
|
|
// &RequestClass::Data_callback, this);
|
|
|
|
|
formation_data = node_handle_.subscribe("/Fly_Formation_reciver", 10,
|
|
|
|
|
&RequestClass::Message_callback, this);
|
|
|
|
|
mqtt_data = node_handle_.subscribe("/uav_message", 10,
|
|
|
|
|
&RequestClass::Data_callback, this);
|
|
|
|
|
|
|
|
|
|
self_data = node_handle_.subscribe("/self_data_message", 100,
|
|
|
|
|
&RequestClass::self_callback, this); //test bionic
|
|
|
|
|
member1_data = node_handle_.subscribe("/member1_data_message", 100,
|
|
|
|
|
&RequestClass::M1_callback, this);
|
|
|
|
|
member2_data = node_handle_.subscribe("/member2_data_message", 100,
|
|
|
|
|
&RequestClass::M2_callback, this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RequestClass::~RequestClass() { ros::shutdown(); }
|
|
|
|
|
|
|
|
|
|
void RequestClass::Data_callback(const std_msgs::String::ConstPtr &sensor) {
|
|
|
|
|
L_INFO(sensor->data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RequestClass::Message_callback(const std_msgs::String::ConstPtr &message) {
|
|
|
|
|
|
|
|
|
|
std::string data = message->data;
|
|
|
|
|
// jsonToString(data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
global_location RequestClass::get_leader_GPS(){
|
|
|
|
|
|
|
|
|
|
return leader_position;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float RequestClass::get_leader_heading(){
|
|
|
|
|
|
|
|
|
|
return heading;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int RequestClass::get_formation_message(){
|
|
|
|
|
|
|
|
|
|
return command;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RequestClass::jsonToString(std::string data){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RequestClass::L_INFO(std::string data){
|
|
|
|
|
|
|
|
|
|
// std::cout <<"string: "<< data << std::endl;
|
|
|
|
|
|
|
|
|
|
// document.Parse(data.c_str()); //china's library
|
|
|
|
|
// leader_position.lat=document["lat"].GetInt();
|
|
|
|
|
// leader_position.lon=document["lon"].GetInt();
|
|
|
|
|
// leader_position.alt=document["alt"].GetInt();
|
|
|
|
|
// heading = document["heading"].GetInt();
|
|
|
|
|
|
|
|
|
|
// std::cout << document["lat"].GetInt() << std::endl;
|
|
|
|
|
// std::cout << document["lon"].GetInt() << std::endl;
|
|
|
|
|
// std::cout << document["alt"].GetInt() << std::endl;
|
|
|
|
|
// std::cout << document["heading"].GetInt() << std::endl;
|
|
|
|
|
|
|
|
|
|
//********************************************//
|
|
|
|
|
j_data = json::parse(data); //open source
|
|
|
|
|
|
|
|
|
|
// std::string lat = "",lon = "",alt = "",degree = "";
|
|
|
|
|
// lat = j_data["lat"];
|
|
|
|
|
// lon = j_data["lon"];
|
|
|
|
|
// alt = j_data["alt"];
|
|
|
|
|
// degree = j_data["heading"];
|
|
|
|
|
|
|
|
|
|
// leader_position.lat=j_data["lat"]; //type error ,need number
|
|
|
|
|
// leader_position.lon=j_data["lon"];
|
|
|
|
|
// leader_position.alt=j_data["alt"];
|
|
|
|
|
// heading = j_data["heading"];
|
|
|
|
|
|
|
|
|
|
std::cout <<"Json: " <<j_data << std::endl;
|
|
|
|
|
// std::cout << leader_position.lat << std::endl;
|
|
|
|
|
// std::cout << leader_position.lon << std::endl;
|
|
|
|
|
// std::cout << leader_position.alt << std::endl;
|
|
|
|
|
// std::cout << heading << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*test biomic*/
|
|
|
|
|
void RequestClass::self_callback(const std_msgs::String::ConstPtr &sensor) {
|
|
|
|
|
Bio_INFO(sensor->data);
|
|
|
|
|
}
|
|
|
|
|
void RequestClass::M1_callback(const std_msgs::String::ConstPtr &sensor) {
|
|
|
|
|
Bio_INFO(sensor->data);
|
|
|
|
|
}
|
|
|
|
|
void RequestClass::M2_callback(const std_msgs::String::ConstPtr &sensor) {
|
|
|
|
|
Bio_INFO(sensor->data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RequestClass::Bio_INFO(std::string data){
|
|
|
|
|
|
|
|
|
|
j_data = json::parse(data); //open source
|
|
|
|
|
|
|
|
|
|
drone_ID = j_data["ID"];
|
|
|
|
|
std::remove(ID.begin(),ID.end(),self_ID);
|
|
|
|
|
|
|
|
|
|
if (drone_ID == self_ID){
|
|
|
|
|
self_position.lat=j_data["lat"];
|
|
|
|
|
self_position.lon=j_data["lon"];
|
|
|
|
|
self_position.alt=j_data["alt"];
|
|
|
|
|
self_position.heading = j_data["heading"];
|
|
|
|
|
}else if (drone_ID == ID[0]){
|
|
|
|
|
M1_position.lat=j_data["lat"];
|
|
|
|
|
M1_position.lon=j_data["lon"];
|
|
|
|
|
M1_position.alt=j_data["alt"];
|
|
|
|
|
M1_position.heading = j_data["heading"];
|
|
|
|
|
}else if (drone_ID == ID[1]){
|
|
|
|
|
M2_position.lat=j_data["lat"];
|
|
|
|
|
M2_position.lon=j_data["lon"];
|
|
|
|
|
M2_position.alt=j_data["alt"];
|
|
|
|
|
M2_position.heading = j_data["heading"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
global_location RequestClass::get_self_GPS(){
|
|
|
|
|
|
|
|
|
|
return self_position;
|
|
|
|
|
}
|
|
|
|
|
global_location RequestClass::get_M1_GPS(){
|
|
|
|
|
|
|
|
|
|
return M1_position;
|
|
|
|
|
}
|
|
|
|
|
global_location RequestClass::get_M2_GPS(){
|
|
|
|
|
|
|
|
|
|
return M2_position;
|
|
|
|
|
}
|