merge conflict
This commit is contained in:
@@ -255,11 +255,16 @@ target_include_directories(PID_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
target_link_libraries(PID_lib ${catkin_LIBRARIES})
|
||||
add_dependencies(PID_lib main_generate_messages_cpp)
|
||||
|
||||
add_library(PubData_lib ${CMAKE_CURRENT_SOURCE_DIR}/src/PubData.cpp)
|
||||
target_include_directories(PubData_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
target_link_libraries(PubData_lib ${catkin_LIBRARIES})
|
||||
add_dependencies(PubData_lib main_generate_messages_cpp)
|
||||
|
||||
##################
|
||||
|
||||
add_library(formation_lib ${CMAKE_CURRENT_SOURCE_DIR}/src/formation.cpp)
|
||||
target_include_directories(formation_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
target_link_libraries(formation_lib ${catkin_LIBRARIES} sensor_lib mode_lib control_lib command_lib requestData_lib PID_lib)
|
||||
target_link_libraries(formation_lib ${catkin_LIBRARIES} sensor_lib mode_lib control_lib command_lib requestData_lib PID_lib PubData_lib)
|
||||
add_dependencies(formation_lib main_generate_messages_cpp)
|
||||
|
||||
add_library(select_lib ${CMAKE_CURRENT_SOURCE_DIR}/src/select.cpp)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*Publish Compass & velocity data to topic "DroneStatus"*/
|
||||
#ifndef PUBDATA_H
|
||||
#define PUBDATA_H
|
||||
|
||||
#include <ros/ros.h>
|
||||
#include <sensor_msgs/NavSatFix.h>
|
||||
#include <std_msgs/Float64.h>
|
||||
#include <mavros_msgs/Waypoint.h>
|
||||
#include "class_model/velocity.h"
|
||||
|
||||
class PubDataClass {
|
||||
public:
|
||||
PubDataClass();
|
||||
virtual ~PubDataClass();
|
||||
void publishData(velocity v);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
// ROS NodeHandle
|
||||
ros::NodeHandle node_handle_;
|
||||
|
||||
//SUBSCRIBE
|
||||
ros::Subscriber Compass;
|
||||
|
||||
//PUBLISH
|
||||
ros::Publisher PubData;
|
||||
|
||||
mavros_msgs::Waypoint msg;
|
||||
float heading;
|
||||
void Compass_callback(const std_msgs::Float64::ConstPtr °ree);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // PUBDATA_H
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "class_model/command.h"
|
||||
#include "class_model/requestData.h"
|
||||
#include "class_model/PID.h"
|
||||
#include "class_model/PubData.h"
|
||||
#include <std_msgs/String.h>
|
||||
|
||||
|
||||
@@ -25,6 +26,7 @@ public:
|
||||
ControlClass control_object;
|
||||
CommandClass command_object;
|
||||
RequestClass request_object;
|
||||
PubDataClass PubData_object;
|
||||
PIDClass PID_x;
|
||||
PIDClass PID_y;
|
||||
|
||||
@@ -48,6 +50,7 @@ private:
|
||||
global_location follower_location;
|
||||
global_location leader_location;
|
||||
global_location current_location;
|
||||
velocity drone_speed;
|
||||
int flag = 0,heading_status = 0;
|
||||
float pre_alt,cur_alt;
|
||||
float leader_pid[3] = {0.5 , 0.000000000001 ,0.5};
|
||||
|
||||
@@ -27,9 +27,8 @@ private:
|
||||
|
||||
void Data_callback(const std_msgs::String::ConstPtr &gps);
|
||||
void Message_callback(const std_msgs::String::ConstPtr &message);
|
||||
void jsonToInt(std::string data);
|
||||
void jsonToString(std::string data);
|
||||
void StringToJson(std::string data);
|
||||
void L_INFO(std::string data);
|
||||
float heading;
|
||||
global_location leader_position;
|
||||
// rapidjson::Document document;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef VELOCITY_H
|
||||
#define VELOCITY_H
|
||||
|
||||
typedef struct velocity{
|
||||
float x,y;
|
||||
}velocity;
|
||||
|
||||
#endif // VELOCITY_H
|
||||
@@ -0,0 +1,32 @@
|
||||
#include "class_model/PubData.h"
|
||||
|
||||
PubDataClass::PubDataClass() : node_handle_("~"){
|
||||
|
||||
std::string ros_namespace;
|
||||
if (!node_handle_.hasParam("namespace"))
|
||||
{
|
||||
}else{
|
||||
node_handle_.getParam("namespace", ros_namespace);
|
||||
}
|
||||
|
||||
PubData=node_handle_.advertise<mavros_msgs::Waypoint>(ros_namespace+"/DroneStatus",100);
|
||||
Compass=node_handle_.subscribe(ros_namespace+"/mavros/global_position/compass_hdg", 10,
|
||||
&PubDataClass::Compass_callback, this);
|
||||
|
||||
}
|
||||
|
||||
PubDataClass::~PubDataClass() { ros::shutdown(); }
|
||||
|
||||
void PubDataClass::publishData(velocity v){
|
||||
|
||||
msg.param2 = v.x;
|
||||
msg.param3 = v.y;
|
||||
PubData.publish(msg);
|
||||
ROS_INFO("pub drone status");
|
||||
|
||||
}
|
||||
|
||||
void PubDataClass::Compass_callback(const std_msgs::Float64::ConstPtr °ree){
|
||||
msg.param1 = degree->data;
|
||||
|
||||
}
|
||||
@@ -578,25 +578,26 @@ void FormationClass::go2target(float x,float y){
|
||||
face2target(target_heading);
|
||||
}
|
||||
|
||||
float error_x = PID_x.update(current_location.lon*1e5 , target_location.lon ,leader_pid); //leader_pid defined in header file
|
||||
float error_y = PID_y.update(current_location.lat*1e5 , target_location.lat ,leader_pid);
|
||||
drone_speed.x = PID_x.update(current_location.lon*1e5 , target_location.lon ,leader_pid); //leader_pid defined in header file
|
||||
drone_speed.y = PID_y.update(current_location.lat*1e5 , target_location.lat ,leader_pid);
|
||||
|
||||
// float error_x = PID_x.update1(current_location.lon*1e5 , target_location.lon );
|
||||
// float error_y = PID_y.update1(current_location.lat*1e5 , target_location.lat );
|
||||
|
||||
if (error_x < 0.3 && error_x > -0.3){ //ignore small errors
|
||||
error_x = 0;
|
||||
if (drone_speed.x < 0.3 && drone_speed.x > -0.3){ //ignore small errors
|
||||
drone_speed.x = 0;
|
||||
}
|
||||
if (error_y < 0.3 && error_y > -0.3){
|
||||
error_y = 0;
|
||||
if (drone_speed.y < 0.3 && drone_speed.y > -0.3){
|
||||
drone_speed.y = 0;
|
||||
}
|
||||
|
||||
if (error_x == 0 && error_y == 0){
|
||||
if (drone_speed.x == 0 && drone_speed.y == 0){
|
||||
flag = 1;
|
||||
}
|
||||
|
||||
command_object.set_velocity(error_x ,error_y ,0,0,0.1);
|
||||
|
||||
PubData_object.publishData(drone_speed);
|
||||
command_object.set_velocity(drone_speed.x ,drone_speed.y ,0,0,0.1);
|
||||
|
||||
// ROS_INFO("slope:%f,%f,%f",slope,x,y);
|
||||
// ROS_INFO("%f,%f",error_x,error_y);
|
||||
// ROS_INFO("heading:%f,target_heading:%f",heading,target_heading);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "class_model/mission.h"
|
||||
#include "class_model/choose_leader.h"
|
||||
#include "class_model/PubData.h"
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
@@ -15,28 +16,32 @@ int main(int argc, char **argv) {
|
||||
ReceiverClass receiver_object;
|
||||
MissionClass mission_object;
|
||||
CommandClass command_object;
|
||||
SelectionClass selection_object;
|
||||
SelectClass select_formation;
|
||||
PubDataClass PubData_object;
|
||||
|
||||
// SelectionClass selection_object;
|
||||
|
||||
|
||||
mode_object.set_Mode("GUIDED");
|
||||
control_object.arm();
|
||||
control_object.takeoff(4.5);
|
||||
sleep(5);
|
||||
sleep(2);
|
||||
|
||||
selection_object.choose_leader();
|
||||
// selection_object.choose_leader();
|
||||
// mission_object.start(); //default hover in goose formation
|
||||
|
||||
while(ros::ok()){
|
||||
|
||||
|
||||
//json_object.get_command(); //for follower
|
||||
|
||||
|
||||
select_formation.goose_formation();
|
||||
}
|
||||
|
||||
ros::waitForShutdown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
//////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/*
|
||||
ThreadGPSClass gps_object;
|
||||
|
||||
Regular → Executable
+24
-15
@@ -18,7 +18,7 @@ from sensor_msgs.msg import NavSatFix
|
||||
from sensor_msgs.msg import Imu
|
||||
from sensor_msgs.msg import Range
|
||||
from geometry_msgs.msg import Vector3
|
||||
|
||||
'''
|
||||
# test proto
|
||||
import random
|
||||
|
||||
@@ -35,11 +35,13 @@ class fake_hdg():
|
||||
class state():
|
||||
def __init__(self):
|
||||
self.mode = "test"
|
||||
'''
|
||||
|
||||
|
||||
|
||||
|
||||
def init_dataFormat(cfg):
|
||||
ros_namespace="/drone1"
|
||||
if cfg.msg_format == "Proto":
|
||||
utils.Proto_msg_from_ros.client = client
|
||||
utils.Proto_msg_from_ros.flight_information_msg = flight_information_pb2.flight_information_message()
|
||||
@@ -47,11 +49,15 @@ def init_dataFormat(cfg):
|
||||
utils.Proto_msg_from_ros.Flight_Information_topicToMqtt = cfg.Flight_Information_topicToMqtt
|
||||
utils.Proto_msg_from_ros.Fly_Formation_topicToMqtt = cfg.Fly_Formation_topicToMqtt
|
||||
utils.Proto_msg_from_ros.Fly_Formation_topicToMqtt_QOS = cfg.Fly_Formation_topicToMqtt_QOS
|
||||
rospy.Subscriber(ros_namespace+'/mavros/global_position/global', NavSatFix, utils.Proto_msg_from_ros.callBack_gps)
|
||||
rospy.Subscriber(ros_namespace+'/mavros/global_position/compass_hdg', Float64, utils.Proto_msg_from_ros.callBack_compass_hdg)
|
||||
elif cfg.msg_format == "Json":
|
||||
utils.Json_msg_from_ros.client = client
|
||||
utils.Json_msg_from_ros.Flight_Information_topicToMqtt = cfg.Flight_Information_topicToMqtt
|
||||
utils.Json_msg_from_ros.Fly_Formation_topicToMqtt = cfg.Fly_Formation_topicToMqtt
|
||||
utils.Json_msg_from_ros.Fly_Formation_topicToMqtt_QOS = cfg.Fly_Formation_topicToMqtt_QOS
|
||||
rospy.Subscriber(ros_namespace+'/mavros/global_position/global', NavSatFix, utils.Json_msg_from_ros.callBack_gps)
|
||||
rospy.Subscriber(ros_namespace+'/mavros/global_position/compass_hdg', Float64, utils.Json_msg_from_ros.callBack_compass_hdg)
|
||||
else:
|
||||
print("msg_format not found")
|
||||
|
||||
@@ -62,16 +68,16 @@ def on_connect(self, userdata, flags, rc):
|
||||
print("Connected with result code " + str(rc))
|
||||
|
||||
def on_publish(self, userdata, mid):
|
||||
pass
|
||||
|
||||
print("pub ok")
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Read Config
|
||||
cfg = utils.MQTT_ROS_Config("utils/mqttConfig.yml")
|
||||
FilePath = os.path.join(os.path.dirname(__file__),"utils","mqttConfig.yml")
|
||||
cfg = utils.MQTT_ROS_Config(FilePath)
|
||||
client = utils.MQTTClient(cfg.MQTTClientNamePub)
|
||||
|
||||
print(cfg)
|
||||
# Setting Config
|
||||
init_dataFormat(cfg)
|
||||
|
||||
|
||||
# Mqtt
|
||||
client.on_connect = on_connect
|
||||
@@ -81,12 +87,23 @@ if __name__ == '__main__':
|
||||
client.will_set(cfg.willTopic, cfg.lwt, cfg.willTopicQOS, cfg.willRetain)
|
||||
client.loop_start()
|
||||
|
||||
# Ros
|
||||
rosClient = cfg.ROSClientNamePub
|
||||
rospy.init_node(rosClient)
|
||||
init_dataFormat(cfg)
|
||||
|
||||
|
||||
|
||||
rospy.spin()
|
||||
|
||||
'''
|
||||
#test proto
|
||||
gps = fakeGps()
|
||||
hdg = fake_hdg()
|
||||
state = state()
|
||||
while True:
|
||||
#test proto
|
||||
|
||||
gps.latitude = random.uniform(0, 10)
|
||||
gps.longitude = random.uniform(0, 10)
|
||||
gps.altitude = random.uniform(0, 10)
|
||||
@@ -100,12 +117,4 @@ if __name__ == '__main__':
|
||||
# utils.Json_msg_from_ros.callBack_compass_hdg(hdg)
|
||||
# utils.Json_msg_from_ros.callBack_state(state)
|
||||
# time.sleep(1)
|
||||
|
||||
# Ros
|
||||
# rosClient = cfg.ROSClientNamePub
|
||||
# rospy.init_node(rosClient)
|
||||
# subscriber = rospy.Subscriber('/mavros/global_position/global', NavSatFix, utils.Json_msg_from_ros.callBack_gps)
|
||||
# subscriber = rospy.Subscriber('/mavros/global_position/compass_hdg', Float64, utils.Json_msg_from_ros.callBack_compass_hdg)
|
||||
|
||||
|
||||
# rospy.spin()
|
||||
'''
|
||||
|
||||
Regular → Executable
+24
-20
@@ -12,27 +12,30 @@ from std_msgs.msg import String
|
||||
|
||||
def init_dataFormat(cfg):
|
||||
if cfg.msg_format == "Proto":
|
||||
# utils.Proto_msg_to_ros.rate = rospy.Rate(10)
|
||||
# utils.Proto_msg_to_ros.publisher_Flight_Information = rospy.Publisher(cfg.ROStopicName_Flight_Information,String,queue_size=10)
|
||||
# utils.Proto_msg_to_ros.publisher_Fly_Formation = rospy.Publisher(cfg.ROStopicName_Fly_Formation,String,queue_size=10)
|
||||
utils.Proto_msg_to_ros.rate = rospy.Rate(10)
|
||||
utils.Proto_msg_to_ros.publisher_Flight_Information = rospy.Publisher(cfg.ROStopicName_Flight_Information,String,queue_size=10)
|
||||
utils.Proto_msg_to_ros.publisher_Fly_Formation = rospy.Publisher(cfg.ROStopicName_Fly_Formation,String,queue_size=10)
|
||||
|
||||
utils.Proto_msg_to_ros.flight_information_msg = flight_information_pb2.flight_information_message()
|
||||
utils.Proto_msg_to_ros.flyformatioln_msg = flyformatioln_pb2.fly_formation_message()
|
||||
|
||||
client.on_message = utils.Proto_msg_to_ros.on_message
|
||||
|
||||
utils.Proto_msg_to_ros.Flight_Information_topicToMqtt = cfg.Flight_Information_topicToMqtt
|
||||
utils.Proto_msg_to_ros.Fly_Formation_topicToMqtt = cfg.Fly_Formation_topicToMqtt
|
||||
elif cfg.msg_format == "Json":
|
||||
utils.Proto_msg_to_ros.rate = rospy.Rate(10)
|
||||
utils.Proto_msg_to_ros.publisher_Flight_Information = rospy.Publisher(cfg.ROStopicName_Flight_Information,String,queue_size=10)
|
||||
utils.Proto_msg_to_ros.publisher_Fly_Formation = rospy.Publisher(cfg.ROStopicName_Fly_Formation,String,queue_size=10)
|
||||
|
||||
utils.Proto_msg_to_ros.Flight_Information_topicToMqtt = cfg.Flight_Information_topicToMqtt
|
||||
utils.Proto_msg_to_ros.Fly_Formation_topicToMqtt = cfg.Fly_Formation_topicToMqtt
|
||||
utils.Json_msg_to_ros.rate = rospy.Rate(10)
|
||||
utils.Json_msg_to_ros.publisher_Flight_Information = rospy.Publisher(cfg.ROStopicName_Flight_Information,String,queue_size=10)
|
||||
utils.Json_msg_to_ros.publisher_Fly_Formation = rospy.Publisher(cfg.ROStopicName_Fly_Formation,String,queue_size=10)
|
||||
|
||||
client.on_message = utils.Json_msg_to_ros.on_message
|
||||
utils.Json_msg_to_ros.Flight_Information_topicToMqtt = cfg.Flight_Information_topicToMqtt
|
||||
utils.Json_msg_to_ros.Fly_Formation_topicToMqtt = cfg.Fly_Formation_topicToMqtt
|
||||
else:
|
||||
print("msg_format not found")
|
||||
|
||||
def on_message(client, userdata, msg):
|
||||
utils.Proto_msg_to_ros.ros_pub(msg)
|
||||
# def on_message(client, userdata, msg):
|
||||
# utils.Json_msg_to_ros.ros_pub(msg)
|
||||
|
||||
def on_connect(self, userdata, flags, rc):
|
||||
print("Connected with result code " + str(rc))
|
||||
@@ -45,22 +48,23 @@ def on_publish(self, userdata, mid):
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Read Config
|
||||
cfg = utils.MQTT_ROS_Config("utils/mqttConfig.yml")
|
||||
|
||||
FilePath = os.path.join(os.path.dirname(__file__),"utils","mqttConfig.yml")
|
||||
# Read Config
|
||||
cfg = utils.MQTT_ROS_Config(FilePath)
|
||||
print(cfg)
|
||||
|
||||
# Mqtt
|
||||
init_dataFormat(cfg)
|
||||
client = utils.MQTTClient(cfg.MQTTClientNameSub)
|
||||
client.on_connect = on_connect
|
||||
client.on_message = on_message
|
||||
client.on_message = utils.Json_msg_to_ros.on_message
|
||||
client.on_publish = on_publish
|
||||
client.connect(host=cfg.host, port=cfg.port, keepalive=cfg.keepalive)
|
||||
client.loop_forever()
|
||||
|
||||
|
||||
# Ros
|
||||
# rospy.init_node(cfg.ROSClientNameSub)
|
||||
rospy.init_node(cfg.ROSClientNameSub)
|
||||
# initialize
|
||||
# init_dataFormat(cfg)
|
||||
init_dataFormat(cfg)
|
||||
|
||||
|
||||
# rospy.spin()
|
||||
client.loop_start()
|
||||
rospy.spin()
|
||||
@@ -7,9 +7,9 @@ int command;
|
||||
|
||||
RequestClass::RequestClass() : node_handle_(""){
|
||||
|
||||
mqtt_data = node_handle_.subscribe("/uav_message", 100,
|
||||
mqtt_data = node_handle_.subscribe("/Flight_Information_reciver", 100,
|
||||
&RequestClass::Data_callback, this);
|
||||
formation_data = node_handle_.subscribe("/formation_message", 10,
|
||||
formation_data = node_handle_.subscribe("/Fly_Formation_reciver", 10,
|
||||
&RequestClass::Message_callback, this);
|
||||
|
||||
}
|
||||
@@ -17,13 +17,13 @@ RequestClass::RequestClass() : node_handle_(""){
|
||||
RequestClass::~RequestClass() { ros::shutdown(); }
|
||||
|
||||
void RequestClass::Data_callback(const std_msgs::String::ConstPtr &sensor) {
|
||||
StringToJson(sensor->data);
|
||||
L_INFO(sensor->data);
|
||||
}
|
||||
|
||||
void RequestClass::Message_callback(const std_msgs::String::ConstPtr &message) {
|
||||
|
||||
std::string data = message->data;
|
||||
jsonToString(data);
|
||||
// jsonToString(data);
|
||||
|
||||
|
||||
}
|
||||
@@ -45,37 +45,11 @@ int RequestClass::get_formation_message(){
|
||||
|
||||
void RequestClass::jsonToString(std::string data){
|
||||
|
||||
std::string list[1]={""};
|
||||
int j = 0;
|
||||
|
||||
for(int i=0;i<data.length();i++){
|
||||
if(data[i] == ':'){
|
||||
i+=3;
|
||||
while(data[i] != ','){
|
||||
|
||||
if(data[i] == ',' || data[i] == '}'){
|
||||
j++;
|
||||
break;
|
||||
}
|
||||
|
||||
list[j]=list[j]+data[i];
|
||||
i++;
|
||||
|
||||
if(j>sizeof(list)){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
command = std::stoi(list[1]);
|
||||
|
||||
// ROS_INFO("command: %s",command);
|
||||
}
|
||||
|
||||
void RequestClass::StringToJson(std::string data){
|
||||
void RequestClass::L_INFO(std::string data){
|
||||
|
||||
std::cout <<"string: "<< data << std::endl;
|
||||
// std::cout <<"string: "<< data << std::endl;
|
||||
|
||||
// document.Parse(data.c_str()); //china's library
|
||||
// leader_position.lat=document["lat"].GetInt();
|
||||
@@ -102,7 +76,7 @@ void RequestClass::StringToJson(std::string data){
|
||||
leader_position.alt=j_data["alt"];
|
||||
heading = j_data["heading"];
|
||||
|
||||
std::cout <<"Json: " <<j_data << std::endl;
|
||||
// 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;
|
||||
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env python3
|
||||
#coding:utf-8
|
||||
import rospy
|
||||
from mavros_msgs.msg import Waypoint
|
||||
|
||||
def callBack(data):
|
||||
print (data.param1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
nodeName = 'subscriber_py'
|
||||
rospy.init_node(nodeName)
|
||||
topicName = '/DroneStatus'
|
||||
subscriber = rospy.Subscriber(topicName,Waypoint,callBack) #從topic獲取string再呼叫callback
|
||||
rospy.spin()
|
||||
@@ -1,8 +1,8 @@
|
||||
MQTT_ROS:
|
||||
msg_format: Proto
|
||||
msg_format: Json
|
||||
MQTTClientNamePub: Drone650Pub
|
||||
MQTTClientNameSub: Drone650Sub
|
||||
host: 192.168.50.117
|
||||
host: 192.168.50.27
|
||||
port: 1883
|
||||
keepalive: 60
|
||||
willTopic: CheckDoneConnect
|
||||
@@ -18,4 +18,4 @@ MQTT_ROS:
|
||||
ROSClientNamePub: Drone650Pub
|
||||
ROSClientNameSub: Drone650Sub
|
||||
ROStopicName_Flight_Information: Flight_Information_reciver
|
||||
ROStopicName_Fly_Formation: Fly_Formation_reciver
|
||||
ROStopicName_Fly_Formation: Fly_Formation_reciver
|
||||
|
||||
@@ -27,16 +27,20 @@ class Proto_msg_to_ros:
|
||||
proto_msg = cls.flight_information_msg.FromString(dataProto.payload)
|
||||
protoTOJson_msg = json_format.MessageToJson(proto_msg, indent=None, preserving_proto_field_name=True)
|
||||
print(protoTOJson_msg)
|
||||
# cls.publisher_flight_information.publish(protoTOJson_msg)
|
||||
# cls.rate.sleep()
|
||||
cls.publisher_Flight_Information.publish(protoTOJson_msg)
|
||||
cls.rate.sleep()
|
||||
elif dataProto.topic == cls.Fly_Formation_topicToMqtt:
|
||||
proto_msg = cls.fly_formation_msg.FromString(dataProto.payload)
|
||||
protoTOJson_msg = json_format.MessageToJson(proto_msg, indent=None, preserving_proto_field_name=True)
|
||||
cls.publisher_Formation.publish(protoTOJson_msg)
|
||||
cls.publisher_Fly_Formation.publish(protoTOJson_msg)
|
||||
cls.rate.sleep()
|
||||
else:
|
||||
print("topic not found")
|
||||
|
||||
|
||||
@staticmethod
|
||||
def on_message(client, userdata, msg):
|
||||
Proto_msg_to_ros.ros_pub(msg)
|
||||
|
||||
|
||||
class Json_msg_to_ros:
|
||||
@@ -51,10 +55,15 @@ class Json_msg_to_ros:
|
||||
@classmethod
|
||||
def ros_pub(cls, dataJson):
|
||||
if dataJson.topic == cls.Flight_Information_topicToMqtt:
|
||||
cls.publisher_flight_information.publish(dataJson.payload.decode('utf-8'))
|
||||
cls.publisher_Flight_Information.publish(dataJson.payload.decode('utf-8'))
|
||||
cls.rate.sleep()
|
||||
elif dataJson.topic == cls.Fly_Formation_topicToMqtt:
|
||||
cls.publisher_Fly_Formation.publish(dataJson.payload.decode('utf-8'))
|
||||
cls.rate.sleep()
|
||||
else:
|
||||
print("topic not found")
|
||||
print("topic not found")
|
||||
|
||||
|
||||
@staticmethod
|
||||
def on_message(client, userdata, msg):
|
||||
Json_msg_to_ros.ros_pub(msg)
|
||||
@@ -18,7 +18,7 @@ class Proto_msg_from_ros:
|
||||
cls.flight_information_msg.gps.LON = GPS.longitude
|
||||
cls.flight_information_msg.gps.ALT = GPS.altitude
|
||||
# print ('lat:'+lat+'\n'+'lon:'+lon+'\n')
|
||||
# print(flight_information_msg)
|
||||
# print(cls.flight_information_msg)
|
||||
|
||||
@classmethod
|
||||
def callBack_compass_hdg(cls, Compass):
|
||||
|
||||
Reference in New Issue
Block a user