|
|
|
@ -277,7 +277,7 @@ class ControlStationUI(QMainWindow):
|
|
|
|
# ================================================================================
|
|
|
|
# ================================================================================
|
|
|
|
self.mission_planner = FormationPlanner(
|
|
|
|
self.mission_planner = FormationPlanner(
|
|
|
|
spacing=5.0, # 5 公尺間距
|
|
|
|
spacing=5.0, # 5 公尺間距
|
|
|
|
base_altitude=10.0, # 基準高度 10 公尺
|
|
|
|
base_altitude=25.0, # 基準高度 25 公尺
|
|
|
|
altitude_diff=2.0 # 高低差 2 公尺
|
|
|
|
altitude_diff=2.0 # 高低差 2 公尺
|
|
|
|
)
|
|
|
|
)
|
|
|
|
# ================================================================================
|
|
|
|
# ================================================================================
|
|
|
|
@ -1146,7 +1146,7 @@ class ControlStationUI(QMainWindow):
|
|
|
|
|
|
|
|
|
|
|
|
def handle_takeoff(self, drone_id):
|
|
|
|
def handle_takeoff(self, drone_id):
|
|
|
|
loop = asyncio.get_event_loop()
|
|
|
|
loop = asyncio.get_event_loop()
|
|
|
|
future = self.monitor.takeoff_drone(drone_id, 10.0)
|
|
|
|
future = self.monitor.takeoff_drone(drone_id, 25.0)
|
|
|
|
loop.create_task(self.handle_service_response(future, f"起飛 {drone_id}"))
|
|
|
|
loop.create_task(self.handle_service_response(future, f"起飛 {drone_id}"))
|
|
|
|
|
|
|
|
|
|
|
|
def handle_setpoint_selected(self):
|
|
|
|
def handle_setpoint_selected(self):
|
|
|
|
@ -1231,7 +1231,7 @@ class ControlStationUI(QMainWindow):
|
|
|
|
|
|
|
|
|
|
|
|
loop = asyncio.get_event_loop()
|
|
|
|
loop = asyncio.get_event_loop()
|
|
|
|
for drone_id in selected:
|
|
|
|
for drone_id in selected:
|
|
|
|
future = self.monitor.takeoff_drone(drone_id, 10.0)
|
|
|
|
future = self.monitor.takeoff_drone(drone_id, 25.0)
|
|
|
|
loop.create_task(self.handle_service_response(future, f"批次起飛 {drone_id}"))
|
|
|
|
loop.create_task(self.handle_service_response(future, f"批次起飛 {drone_id}"))
|
|
|
|
|
|
|
|
|
|
|
|
# ================================================================================
|
|
|
|
# ================================================================================
|
|
|
|
@ -2313,7 +2313,7 @@ class ControlStationUI(QMainWindow):
|
|
|
|
_log("INFO", f"地圖點擊: {lat:.6f}, {lon:.6f} -> Group {group.group_id} ({group.mission_type})")
|
|
|
|
_log("INFO", f"地圖點擊: {lat:.6f}, {lon:.6f} -> Group {group.group_id} ({group.mission_type})")
|
|
|
|
panel = self.group_panels.get(group.group_id)
|
|
|
|
panel = self.group_panels.get(group.group_id)
|
|
|
|
params = panel.get_mission_params() if panel else {}
|
|
|
|
params = panel.get_mission_params() if panel else {}
|
|
|
|
base_alt = params.get('base_altitude', params.get('altitude', 10.0))
|
|
|
|
base_alt = params.get('base_altitude', params.get('altitude', 25.0))
|
|
|
|
target_gps = (lat, lon, base_alt)
|
|
|
|
target_gps = (lat, lon, base_alt)
|
|
|
|
self.statusBar().showMessage(
|
|
|
|
self.statusBar().showMessage(
|
|
|
|
f"Group {group.group_id}: 正在規劃 {group.mission_type} ({len(selected_drones)} 台)", 2000)
|
|
|
|
f"Group {group.group_id}: 正在規劃 {group.mission_type} ({len(selected_drones)} 台)", 2000)
|
|
|
|
@ -2365,7 +2365,7 @@ class ControlStationUI(QMainWindow):
|
|
|
|
|
|
|
|
|
|
|
|
panel = self.group_panels.get(group.group_id)
|
|
|
|
panel = self.group_panels.get(group.group_id)
|
|
|
|
params = panel.get_mission_params() if panel else {}
|
|
|
|
params = panel.get_mission_params() if panel else {}
|
|
|
|
base_alt = params.get('altitude', 10.0)
|
|
|
|
base_alt = params.get('altitude', 25.0)
|
|
|
|
self.statusBar().showMessage(
|
|
|
|
self.statusBar().showMessage(
|
|
|
|
f"Group {group.group_id}: 正在規劃 Grid Sweep ({len(selected_drones)} 台)", 2000)
|
|
|
|
f"Group {group.group_id}: 正在規劃 Grid Sweep ({len(selected_drones)} 台)", 2000)
|
|
|
|
drone_gps_positions = self._collect_drone_gps(selected_drones)
|
|
|
|
drone_gps_positions = self._collect_drone_gps(selected_drones)
|
|
|
|
@ -2426,7 +2426,7 @@ class ControlStationUI(QMainWindow):
|
|
|
|
|
|
|
|
|
|
|
|
panel = self.group_panels.get(group.group_id)
|
|
|
|
panel = self.group_panels.get(group.group_id)
|
|
|
|
params = panel.get_mission_params() if panel else {}
|
|
|
|
params = panel.get_mission_params() if panel else {}
|
|
|
|
base_alt = params.get('altitude', 10.0)
|
|
|
|
base_alt = params.get('altitude', 25.0)
|
|
|
|
self.statusBar().showMessage(
|
|
|
|
self.statusBar().showMessage(
|
|
|
|
f"Group {group.group_id}: 正在規劃跟隨模式 ({len(selected_drones)} 台)", 2000)
|
|
|
|
f"Group {group.group_id}: 正在規劃跟隨模式 ({len(selected_drones)} 台)", 2000)
|
|
|
|
|
|
|
|
|
|
|
|
|