import json import sys import time import random import numpy as np import matplotlib.pyplot as plt from loguru import logger from math import cos from datetime import datetime logger.add(sys.stderr,format = "{time}-{level}-{message}",level = "INFO") logger.add("logs/sim_flight.log",rotation = "1 MB",retention = '7 days') def generate_fight_data(inital_lat,initial_lon,sat_count): # 飞机初始状态 altitude = 3.256 # 初始高度 horizontal_speed = 0.86 *100 # 初始水平速度 vertical_speed = 0.04447911 *100 # 初始竖直速度 yaw = random.uniform(0, 360) # 随机偏航角 roll = random.uniform(-1, 1) # 随机滚转角 pitch = random.uniform(-1, 1) # 随机俯仰角 armed = "false" # 解锁状态 mode = "stabilize" # 飞机模式 dist_to_home = random.uniform(0, 10) # 随机距离家 mileage = 0 # 飞行总距离 gps_signal = 4 # GPS状态 sat_count = 29 # GPS获取卫星数 voltage = round(random.uniform(24, 26), 3) # 随机电压 landing_target_x = 0 # 视觉误差x轴偏差值 landing_target_y = 0 # 视觉误差y轴偏差值 landing_target_z = 0 # 视觉误差z轴偏差值 timestamp = int(datetime.utcnow().timestamp() * 1000) # 生成数据字典 flight_data = { # "lon": round(initial_lon, 7), # "lat": round(inital_lat, 7), "lon": inital_lat, "lat": initial_lon, "gpssingal": gps_signal, "satcount": sat_count, "alt": round(altitude, 3), "hspeed": round(horizontal_speed, 2), "vspeed": round(vertical_speed, 8), "ysingal": 0, "tsingal": 0, "voltage": round(voltage, 3), "flytime": 0, "datetime": timestamp, "yaw": round(yaw, 6), "roll": round(roll, 8), "pitch": round(pitch, 8), "armed": armed, "mode": mode, "distToHome": round(dist_to_home, 6), "deviceid": "THJSQ03A2302KSPYGJ2G", "mileage": str(mileage), "altasl": round(altitude + 18, 2), # 模拟GPS1绝对高度 "altasl2": round(altitude - 24, 2), # 模拟GPS2绝对高度 "landing_target_x": landing_target_x, "landing_target_y": landing_target_y, "landing_target_z": landing_target_z, } #输出JSON格式数据 print(json.dumps(flight_data,indent=4)) logger.info("模拟飞行数据" + str(flight_data)) return flight_data def generate_data(): while True: # 生成一个随机数,范围在 0 到 100 之间 data = random.uniform(0, 100) print(f"Generated data: {data:.2f}") # 暂停 0.5 秒 time.sleep(0.5) if __name__ == "__main__": generate_data() # # 设置初始经纬度 # initial_latitude = 31.8250608 # initial_longitude = 118.7630802 # # 开始生成数据 # flight_data_json = generate_fight_data(initial_latitude, initial_longitude)