Compare commits
2
Commits
32aa489462
...
d15c2d0a2d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d15c2d0a2d | ||
|
|
ae984ecad4 |
@@ -32,3 +32,8 @@ CLAUDE.md
|
|||||||
my_env_notes.md
|
my_env_notes.md
|
||||||
notes/
|
notes/
|
||||||
**/eeprom.bin
|
**/eeprom.bin
|
||||||
|
|
||||||
|
# MAVProxy / SITL 執行產生的 log 與參數 dump
|
||||||
|
*.tlog
|
||||||
|
*.tlog.raw
|
||||||
|
mav.parm
|
||||||
|
|||||||
+9
-8
@@ -1998,7 +1998,7 @@ class ControlStationUI(QMainWindow):
|
|||||||
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)
|
||||||
|
|
||||||
drone_gps_positions = self._collect_drone_gps(selected_drones, base_alt)
|
drone_gps_positions = self._collect_drone_gps(selected_drones)
|
||||||
if drone_gps_positions is None:
|
if drone_gps_positions is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2044,7 +2044,7 @@ class ControlStationUI(QMainWindow):
|
|||||||
base_alt = params.get('altitude', 10.0)
|
base_alt = params.get('altitude', 10.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, base_alt)
|
drone_gps_positions = self._collect_drone_gps(selected_drones)
|
||||||
if drone_gps_positions is None:
|
if drone_gps_positions is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2106,7 +2106,7 @@ class ControlStationUI(QMainWindow):
|
|||||||
self.statusBar().showMessage(
|
self.statusBar().showMessage(
|
||||||
f"Group {group.group_id}: 正在規劃跟隨模式 ({len(selected_drones)} 台)", 2000)
|
f"Group {group.group_id}: 正在規劃跟隨模式 ({len(selected_drones)} 台)", 2000)
|
||||||
|
|
||||||
drone_gps_positions = self._collect_drone_gps(selected_drones, base_alt)
|
drone_gps_positions = self._collect_drone_gps(selected_drones)
|
||||||
if drone_gps_positions is None:
|
if drone_gps_positions is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2154,18 +2154,20 @@ class ControlStationUI(QMainWindow):
|
|||||||
# 輔助方法
|
# 輔助方法
|
||||||
# ================================================================================
|
# ================================================================================
|
||||||
|
|
||||||
def _collect_drone_gps(self, selected_drones, base_alt):
|
def _collect_drone_gps(self, selected_drones):
|
||||||
|
# 只收集無人機的水平位置 (lat/lon);高度固定填 0.0 當 placeholder。
|
||||||
|
# 各任務的指令高度一律取自 mission params(base_altitude/altitude),不依賴無人機
|
||||||
|
# 回報的當下高度,因此這裡的 z 不是規劃輸入,planner 與驗證視窗都會忽略它。
|
||||||
drone_gps_positions = []
|
drone_gps_positions = []
|
||||||
for drone_id in selected_drones:
|
for drone_id in selected_drones:
|
||||||
if hasattr(self.monitor, 'drone_gps') and drone_id in self.monitor.drone_gps:
|
if hasattr(self.monitor, 'drone_gps') and drone_id in self.monitor.drone_gps:
|
||||||
gps_data = self.monitor.drone_gps[drone_id]
|
gps_data = self.monitor.drone_gps[drone_id]
|
||||||
drone_gps_positions.append((gps_data['lat'], gps_data['lon'], gps_data.get('alt', base_alt)))
|
drone_gps_positions.append((gps_data['lat'], gps_data['lon'], 0.0))
|
||||||
elif drone_id in self.drone_positions:
|
elif drone_id in self.drone_positions:
|
||||||
pos = self.drone_positions[drone_id]
|
pos = self.drone_positions[drone_id]
|
||||||
lat_drone = 24.0 + pos[1] / 111000
|
lat_drone = 24.0 + pos[1] / 111000
|
||||||
lon_drone = 120.0 + pos[0] / (111000 * 0.9)
|
lon_drone = 120.0 + pos[0] / (111000 * 0.9)
|
||||||
alt_drone = pos[2] if len(pos) > 2 else base_alt
|
drone_gps_positions.append((lat_drone, lon_drone, 0.0))
|
||||||
drone_gps_positions.append((lat_drone, lon_drone, alt_drone))
|
|
||||||
else:
|
else:
|
||||||
self.statusBar().showMessage(f"找不到 {drone_id} 的位置資料", 3000)
|
self.statusBar().showMessage(f"找不到 {drone_id} 的位置資料", 3000)
|
||||||
return None
|
return None
|
||||||
@@ -2411,7 +2413,6 @@ class ControlStationUI(QMainWindow):
|
|||||||
lat, lon = gps_data.get('lat', 0), gps_data.get('lon', 0)
|
lat, lon = gps_data.get('lat', 0), gps_data.get('lon', 0)
|
||||||
self.drone_positions[drone_id] = (lat, lon)
|
self.drone_positions[drone_id] = (lat, lon)
|
||||||
self._map_dirty_drones.add(drone_id)
|
self._map_dirty_drones.add(drone_id)
|
||||||
alt = gps_data.get('alt', 0)
|
|
||||||
if not hasattr(self.monitor, 'drone_gps'):
|
if not hasattr(self.monitor, 'drone_gps'):
|
||||||
self.monitor.drone_gps = {}
|
self.monitor.drone_gps = {}
|
||||||
self.monitor.drone_gps[drone_id] = gps_data.copy()
|
self.monitor.drone_gps[drone_id] = gps_data.copy()
|
||||||
|
|||||||
Reference in New Issue
Block a user