|
|
|
|
@ -8,6 +8,7 @@ import proto.flight_information_pb2 as flight_information_pb2
|
|
|
|
|
import logging
|
|
|
|
|
from utils.readConfig import Read_SUB_Config
|
|
|
|
|
from utils.proto_uavlink_pub_data_to_ros import Proto_msg_to_ros
|
|
|
|
|
import google.protobuf.message
|
|
|
|
|
|
|
|
|
|
import rospy
|
|
|
|
|
from std_msgs.msg import String
|
|
|
|
|
@ -18,95 +19,59 @@ from sensor_msgs.msg import NavSatFix
|
|
|
|
|
from sensor_msgs.msg import Imu
|
|
|
|
|
from sensor_msgs.msg import Range
|
|
|
|
|
from geometry_msgs.msg import Vector3
|
|
|
|
|
# costom msg
|
|
|
|
|
from mqtt.msg import FlightInformation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def init_dataFormat(cfg:Read_SUB_Config):
|
|
|
|
|
ros_namespace="/drone1"
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
f1data = b'\xf1drone550..............\r\x1a'
|
|
|
|
|
|
|
|
|
|
sel.write(f1data)
|
|
|
|
|
readTenByte = sel.read_until(size=5)
|
|
|
|
|
=======
|
|
|
|
|
deviceData = b'\xf12222222222222222222222\r\x1a'
|
|
|
|
|
|
|
|
|
|
sel.write(deviceData)
|
|
|
|
|
time.sleep(1)
|
|
|
|
|
readTenByte = sel.read(size=5)
|
|
|
|
|
>>>>>>> 8c914b819bf1e908a923a85d37f0af02a44da7d5
|
|
|
|
|
print(readTenByte)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Proto_msg_to_ros.flight_information_msg = flight_information_pb2.flight_information_message()
|
|
|
|
|
Proto_msg_to_ros.rate = rospy.Rate(10)
|
|
|
|
|
Proto_msg_to_ros.publisher_Flight_Information = rospy.Publisher(cfg.Dron550_ROStopicName_Flight_Information,String,queue_size=10)
|
|
|
|
|
|
|
|
|
|
Proto_msg_to_ros.publisher_Flight_Information = rospy.Publisher(cfg.topicName_Flight_Information,FlightInformation,queue_size=10)
|
|
|
|
|
Proto_msg_to_ros.FlightInformationRosMsg = FlightInformation()
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
FilePath = os.path.join(os.path.dirname(__file__),"utils","uavlinkConfig_SUB.yml")
|
|
|
|
|
cfg = Read_SUB_Config(FilePath)
|
|
|
|
|
|
|
|
|
|
sel = serial.Serial(cfg.ttyport, cfg.baudrate, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE, timeout = 0.5)
|
|
|
|
|
sel = serial.Serial(cfg.ttyport, cfg.baudrate, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
|
|
|
|
|
# set log
|
|
|
|
|
log_format = "%(asctime)s - %(levelname)s - %(message)s"
|
|
|
|
|
formatter = logging.Formatter(log_format)
|
|
|
|
|
stream_log_format = "%(asctime)s - %(levelname)s - %(message)s"
|
|
|
|
|
file_log_format = "%(message)s"
|
|
|
|
|
file_formatter = logging.Formatter(file_log_format)
|
|
|
|
|
stream_formatter = logging.Formatter(stream_log_format)
|
|
|
|
|
|
|
|
|
|
stream_handler = logging.StreamHandler()
|
|
|
|
|
stream_handler.setFormatter(formatter)
|
|
|
|
|
stream_handler.setFormatter(stream_formatter)
|
|
|
|
|
stream_handler.setLevel(logging.DEBUG)
|
|
|
|
|
|
|
|
|
|
file_handler = logging.FileHandler(cfg.logFileName)
|
|
|
|
|
file_handler.setFormatter(formatter)
|
|
|
|
|
file_handler = logging.FileHandler(cfg.logFileName, mode='w')
|
|
|
|
|
file_handler.setFormatter(file_formatter)
|
|
|
|
|
file_handler.setLevel(logging.INFO)
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger("__UAVLINKSUB__")
|
|
|
|
|
logger.setLevel(logging.INFO)
|
|
|
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
|
logger.addHandler(file_handler)
|
|
|
|
|
logger.addHandler(stream_handler)
|
|
|
|
|
logger.info(cfg)
|
|
|
|
|
|
|
|
|
|
logger.debug(cfg)
|
|
|
|
|
|
|
|
|
|
rospy.init_node(cfg.ROSClientNameSub)
|
|
|
|
|
init_dataFormat(cfg)
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
=======
|
|
|
|
|
|
|
|
|
|
>>>>>>> 8c914b819bf1e908a923a85d37f0af02a44da7d5
|
|
|
|
|
|
|
|
|
|
flight_information_msg = flight_information_pb2.flight_information_message()
|
|
|
|
|
flight_information_msg.gps.LAT = 34123.1231515
|
|
|
|
|
flight_information_msg.gps.LON = 23423.1231515
|
|
|
|
|
flight_information_msg.gps.ALT = 12123.1231515
|
|
|
|
|
flight_information_msg.heading = 155.12215
|
|
|
|
|
proto = flight_information_msg.SerializeToString()
|
|
|
|
|
readTenByte = b'\xf1' + proto + b'\r\x1a'
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
try:
|
|
|
|
|
# test json
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# readTenByte = sel.read_until(expected= b'\x01\x01', size=25)
|
|
|
|
|
|
|
|
|
|
Proto_msg_to_ros.on_message_Flight_Information(readTenByte)
|
|
|
|
|
=======
|
|
|
|
|
if sel.in_waiting >= 25:
|
|
|
|
|
readTenByte = sel.read_until(expected= b'\x01\x01', size=25)
|
|
|
|
|
# print(readTenByte)
|
|
|
|
|
if b"drone550" in readTenByte:
|
|
|
|
|
print(readTenByte)
|
|
|
|
|
print("radar")
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
readTenByte = sel.read_until(expected= b'\x01\x17', size=25)
|
|
|
|
|
Proto_msg_to_ros.on_message_Flight_Information(readTenByte)
|
|
|
|
|
>>>>>>> 8c914b819bf1e908a923a85d37f0af02a44da7d5
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
except google.protobuf.message.DecodeError as e:
|
|
|
|
|
logger.info("DecodeError:{}".format(e))
|
|
|
|
|
logger.info("readTenByte:{}".format(readTenByte))
|
|
|
|
|
except KeyboardInterrupt as e:
|
|
|
|
|
Proto_msg_to_ros.turnOffUavlink()
|
|
|
|
|
print("End of program")
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
sys.exit()
|
|
|
|
|
=======
|
|
|
|
|
print(readTenByte)
|
|
|
|
|
pass
|
|
|
|
|
>>>>>>> 8c914b819bf1e908a923a85d37f0af02a44da7d5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|