 wenchunandClaude Opus 4.8
|
e205f567e8
|
feat(GUI): 交戰高度分層改「跟著敵機高度 ±offset」浮動分層
修實飛重編隊後待機組 B 掉高度的 bug(原 _alt_for 寫死 formation_alt
沒讀敵機高度)。高度來源改用 local_pose z(相對 home,非 AMSL gps alt),
新增 rel_alt_provider / _enemy_base_alt(None 沿用上次有效值),
A=base+offset、B=base−offset;EngagementPanel 加「高度分層 ±」欄位即時生效。
SITL 驗證通過。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-24 18:17:48 +08:00 |
|
 wenchunandClaude Opus 4.8
|
1db3445e86
|
refactor(GUI): 群組切mode/套用速度改並發(asyncio.gather),清per-drone client過期註解
- gui.py: _handle_group_mode_change 與 _on_engagement_apply_speed 由
單一 async 函式內 for 迴圈逐台 await(序列化,最壞 N×timeout)改為
asyncio.gather 並發,各自等各自 ACK;行為語意不變。
- communication.py: set_mode/arm_drone/set_speed 前 3 處過期註解
「避免多機並行時的競態條件」更正為共用 client + target_sysid 路由
(OOM 修復後已非 per-drone、無 per-drone 狀態)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-13 14:47:31 +08:00 |
|
 wenchunandClaude Opus 4.8
|
6ef7d3a7a6
|
feat(GUI): 交戰任務編排器 MissionOrchestrator(S0-S2 + 高度分層/前置攔截/速度比例限速)
在既有 MissionExecutor 之上加一層「任務大腦」,串起 ABC 對抗流程:
A 組偵察 → 偵測敵機 → 手動確認重編隊 → A+B 四機前進追敵 → 足夠近展開包圍。
全部落在 src/GUI/。
新增 mission_orchestrator.py:
- MissionOrchestrator 階段狀態機 IDLE→WATCH→DETECTED→PURSUE→ENCIRCLE。
- PURSUE/ENCIRCLE 用「瞬時隊形」而非路徑跟隨(每 tick 給每台目標點),
修掉移動目標下 wp_index 歸零 + follower 外推造成的往返振盪。
- 偵測 latch(≤R_detect 持續 dwell)、moving-target 重算(位移≥2m 或封頂 1s)、
切圓 hysteresis(R_engage=15 進、R_engage_exit=20 退)。
- 高度分層 _alt_for:A 組走上層、B 組走下層(不低於地面下限),
PURSUE/ENCIRCLE 都套用 → 消掉同高度交叉撞機風險。
- 前置攔截 _aim_point:GPS 差分估敵速,瞄「敵位+敵速×lead_time」的攔截點,
治純追尾追不上;敵機靜止時退化為瞄當下。
- EngagementPanel 交戰面板:敵機下拉、A/B 組下拉、即時距離讀數、階段顯示、
重編隊/停止、以及「套用速度」(友機 V + 敵/友比例 r → DO_CHANGE_SPEED)。
mission_executor.py:加 complete_stops=False(hover-hold)+ update_plan()
(熱替換航點、保留 RUNNING 閉環狀態)。
communication.py:加 set_speed()(用共用 client 泛用方法發 DO_CHANGE_SPEED(178),
維持 GUI-only scope)。
gui.py:新增「交戰」分頁、engagement timer(5Hz)、orchestrator 接線、
_on_engagement_apply_speed(友方下 V、敵方下 r×V、同步 friendly_speed)。
SITL 實測通過:高度分層 A/B 正確分開、前置攔截追得上、套用速度後追擊/包圍穩定收斂。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-12 22:57:11 +08:00 |
|
 wenchunandClaude Opus 4.8
|
8d65e92634
|
fix(GUI): 共用 command/position client 啟動預建,修切mode觸發的OOM/CPU暴衝
實飛/SITL 對無人機下第一個控制指令(切 mode)時,python GUI 行程
CPU 衝到 112%、記憶體一路爬向 30GB 被 OOM killer 幹掉。
根因(切 mode 是執行期第一個走 get_or_create_client 的動作):
- get_or_create_client / get_or_create_position_client 原本 per-drone
於執行期新建 ROS2 node 並 executor.add_node()。
- CPU:add_node 從 asyncio/Qt 執行緒呼叫,同時 _ros_spin_thread 在另一
執行緒 spin_once 同一個 SingleThreadedExecutor → wait set 損毀 → 空轉。
- 記憶體:執行期新建 node = 新 DDS participant,discovery 撞壞封包 →
FastRTPS bad_alloc。解釋了「開機沒事、切 mode 才炸」。
兩個 client 都只打單一 service(send_command_long / pos_global_int),
靠 request 的 target_sysid 路由、無 per-drone 狀態 → 每台一個節點無意義。
修法:改成「共用節點 + 啟動預建 + 執行期只重用」。
- communication.py: 兩個 per-drone dict → 單一 command_long_client /
position_target_client;新增 init_shared_command_clients();
get_or_create_*(drone_id=None) 回傳共用 client(僅留一次性 lazy fallback)。
- gui.py: executor 設好後、spin thread 啟動前於主執行緒預建;cleanup 改
銷毀兩個共用節點。
飛行中不再新建 participant + add_node 不再跨執行緒 → 兩症狀同時消。
SITL 切 mode 實測不再暴衝。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-12 21:15:35 +08:00 |
|
 wenchunandClaude Opus 4.8
|
4e476f80f6
|
fix(GUI): 多機跑點閉環化,解決實飛只有一台跑點的問題
根因:adapter 的 pos_global_int service 被序列化(預設 mutually-exclusive
callback group) + 阻塞等 msg87 echo。實飛慢速鏈路下多機序列化,只有頭一台
能在 client timeout 內拿到 echo,其餘被判失敗 → 重試 → fallback LOITER 停飛。
(SITL echo 快故全過)。指令其實在等 echo 前就已送達飛控。
閉環改法(全在 src/GUI/,繞過 adapter 瓶頸):
- mission_executor: 每點只送一次 → 每 resend_interval_sec(預設2.5s) 週期性
重送當前 setpoint(GUIDED 目標冪等,掉包自癒);換點純靠 GPS 到達判定;
_on_send_result 降級為觀測,不再累計失敗切 LOITER。
- command_sender: Ros2CommandSender echo timeout 2.0→0.5s,echo miss 快速
放棄換下一台,避免序列化塞爆 client poll。
- gui: 建構子接 resend_interval_sec。
順帶:總覽表新增「任務狀態」列,每台一格即時顯示 WP 進度 + 通訊狀態
(送出OK/送出未驗證/等待同伴),實飛可一眼分辨哪台通訊不穩 vs 卡住;
此列獨立保存,不被遙測 refresh 蓋掉。
SITL 驗證通過。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 15:49:31 +08:00 |
|
 wenchunandClaude Opus 4.8
|
d15c2d0a2d
|
chore: 忽略 MAVProxy/SITL 產生的 tlog 與參數 dump
誤在專案目錄開 SITL 會產生 mav.tlog / mav.tlog.raw / mav.parm,
加入忽略規則避免誤入版控。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 19:05:59 +08:00 |
|
 wenchunandClaude Opus 4.8
|
ae984ecad4
|
refactor(GUI): 移除規劃路徑的死高度,不再把 GNSS 絕對高度餵進規劃
_collect_drone_gps 原本把 drone_gps['alt'](GNSS AMSL)放進規劃輸入的 z,
但四種任務的指令高度一律取自 mission params,從不讀飛機回報的當下高度,
planner 與驗證視窗也都丟棄該 z。改填 0.0 placeholder、移除沒用的 base_alt
參數,讓「高度非規劃輸入」語意明確化;並移除 gps 更新路徑未使用的 alt 變數。
行為不變,SITL 四模式驗證通過。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 19:05:59 +08:00 |
|
 wenchunandClaude Opus 4.8
|
32aa489462
|
revert: 還原 mavlinkROS2Nodes 高度發布改動,回到 GUI-only 修改範圍
415aed0 為修 Circle 高度爆衝曾把 position_gnss topic 改發 relative_altitude
(GUI 外的 ROS2 node),違反「修改只動 src/GUI/」的範圍規則。還原回發
AMSL(pos.altitude)。Bug A 的實際修法在 GUI 端(mission_planner stage1.z
改用 final_z)仍保留,故還原後 Circle 高度問題不會復發;後續高度 debug 一律
在 GUI 內處理(需相對高度時讀 NED local_pose z,不讀 drone_gps['alt'])。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 18:05:26 +08:00 |
|
 wenchunandClaude Opus 4.7
|
415aed088a
|
fix: 修正實飛 Circle 高度爆衝與 Leader-Follower 卡點
1. mavlinkROS2Nodes: position_gnss topic 改發 relative_altitude 而非 AMSL,
讓 drone_gps['alt'] 在實飛與 SITL 都代表「相對 home 高度」
2. mission_planner: Circle stage1.z 改用 final_z(不再用 current_z 做中點插值),
避免實飛時 current_z 是 AMSL 而把過渡高度衝到海拔值的一半
3. mission_executor: 到達判定改為 hover-stable(radius * 1.5 hysteresis +
穩定計時),預設 arrival_radius 2→4m,解決實飛 GPS 抖動永遠進不了
2m radius 的卡死問題
4. mission_executor: 新增 progress log,每 3 秒印一行距離與穩定度,
方便實飛 debug 卡點問題
5. mission_group + gui: 暴露 arrival_radius / hover_stable_sec 給 GUI 任務參數面板,
每次 start 重讀以支援中途調整
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-08 16:51:19 +08:00 |
|
 wenchunandClaude Opus 4.6
|
8c62f891a8
|
fix(GUI): 修正實飛三個關鍵 bug — 高度偏移累加、Leader-Follower 不動、起點重疊
1. mission_planner: origin_alt 固定為 0,避免 GPS 橢球高度疊加到相對高度指令
2. mission_planner: 移除圓弧插值,直接用路徑點作為航點,消除微航點導致飛控無法執行
3. mission_planner: lookup 改為外推(extrapolate),解決偶數 rank 起終點重疊
4. communication: UDP/Serial 的 GLOBAL_POSITION_INT 補上 relative_alt 欄位
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-25 18:39:05 +08:00 |
|
 wenchunandClaude Opus 4.6
|
730c3e2420
|
feat(GUI): 新增模擬驗證滑動開關(ToggleSwitch)
在清除軌跡按鈕左邊加入滑動開關,可控制執行任務時是否開啟 matplotlib 驗證視窗。
預設開啟,OFF 時跳過驗證。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-30 10:56:49 +08:00 |
|
 wenchunandClaude Opus 4.6
|
0edc477df8
|
feat(mission): virtual-leader path following + 固定領隊 + barrier
- mission_planner: Leader-Follower 改用 arc-length 參數化(virtual
leader),_build_center_path 以同心圓弧連接直線段,銳角退化成 hover
單點並在該點放 rendezvous barrier,避免暴衝與編隊交叉
- mission_planner: rank 改以輸入順序為準,不再對投影排序,避免浮點噪音
導致 run-to-run leader 漂移
- mission_group / gui: 新增 leader_drone_id 與「領隊」下拉選單,handle_
route_confirmed 把指定領隊重排到 rank 0,整個縱隊順序固定如軍隊行進
- mission_executor: rendezvous barrier 釋放邏輯、fallback LOITER、send
retry;加 barrier_timeout 保護
- command_sender / communication / navigation: 配合 setpoint 送達與
Ros2 bridge 更新
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-15 16:13:31 +08:00 |
|
wenchun
|
5c0d21fc1d
|
Merge remote-tracking branch 'origin/master' into wenchun
|
2026-04-14 15:23:13 +08:00 |
|
 wenchunandClaude Opus 4.6
|
3483864a2e
|
chore: 移除無關的模擬資料檔與 README 過時段落
刪除歷史 merge 夾帶進來的 obstacles_data.mat 與 uav_simulation_data.mat
(屬於另一個研究的資料,與本專案無關),並移除 README 末尾 0328 的
test_transform / close_loop 敘述。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-14 15:15:15 +08:00 |
|
 wenchunandClaude Opus 4.6
|
ae80820419
|
chore: gitignore notes/ 資料夾以收納本地設計筆記
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-14 15:15:10 +08:00 |
|
wenchun
|
32e1ce8fb2
|
Merge remote-tracking branch 'origin/master' into wenchun
|
2026-04-14 13:54:08 +08:00 |
|
wenchun
|
33d6d59139
|
chore: ignore CLAUDE.md, 本地筆記與 eeprom dump
|
2026-04-14 13:53:40 +08:00 |
|
 wenchunandClaude Opus 4.6
|
7d0368e7ba
|
chore: 移除 CLAUDE.md 不納入版控
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 18:18:07 +08:00 |
|
 wenchunandClaude Opus 4.6
|
c2196153ff
|
feat: 多任務群組系統 — 四欄式面板、地圖框選分配、可調參數
- 新增 mission_group.py:MissionGroup 資料結構、DroneAssignDialog、GroupPanel
- GroupPanel 四欄式佈局:控制指令 / 任務規劃 / 任務參數 / 選取與分組
- 任務參數欄依任務類型動態切換(間距、高度、偏移量等),規劃時從 UI 讀值
- 框選/全選可直接分配無人機到群組,清除分組一鍵重置
- 地圖清理:移除右下角 overlay,功能整合至 GroupPanel
- 修復 JS clearSelectionMode 引用已移除元素導致框選/Grid Sweep 失效
- 每群組獨立 MissionExecutor,共用 MavlinkSender
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 18:15:49 +08:00 |
|
 wenchunandClaude Opus 4.6
|
693a55c289
|
merge: 合併 master 最新內容,以 master 為基準解決衝突
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 15:01:36 +08:00 |
|
 wenchunandClaude Opus 4.6
|
337ca8ce24
|
chore: 更新 .gitignore,移除不再使用的 test_mission.py
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-01 15:00:20 +08:00 |
|
wenchun
|
837b06dab5
|
feat: 新增任務規劃系統 (M-Formation, Circle, Leader-Follower, Grid Sweep)
- mission_planner: 四種任務模式,Leader-Follower 支援 Bezier 曲線轉彎
- mission_executor: QTimer 驅動的多航點執行器
- command_sender: MAVLink setpoint 發送抽象層
- gui: 地圖任務模式選單 + 框選/路徑標記觸發
- map_layout: 任務模式下拉選單 + 確認路徑按鈕 + route bridge 信號
- verify_waypoints: 靜態航點圖 + 動畫模擬驗證 (Play/Pause/Reset)
|
2026-03-19 14:20:10 +08:00 |
|
wenchun
|
76b3b0f40c
|
合併 ken 分支,使用 ken 的版本
|
2026-03-17 15:39:19 +08:00 |
|
wenchun
|
af2138fe64
|
更新 mission_planner
|
2026-03-17 14:58:41 +08:00 |
|
wenchun
|
28810e5113
|
Merge remote-tracking branch 'origin/ken' into wenchun
|
2026-03-02 13:41:42 +08:00 |
|
wenchun
|
317483a5c0
|
新增 GUI 資料夾與相關功能
|
2026-01-27 14:21:34 +08:00 |
|
wenchun
|
303dfaf04a
|
新增 devRun.py 測試檔案
|
2025-06-09 18:46:16 +08:00 |
|
wenchun
|
cd3c0f5bee
|
Merge branch 'chiyu' into wenchun
|
2025-06-09 17:38:24 +08:00 |
|
wenchun
|
456d12ce56
|
Merge branch 'chiyu' into wenchun
|
2025-06-09 17:02:28 +08:00 |
|
wenchun
|
92ae83177f
|
Merge branch 'wenchun' of http://140.120.108.238:49308/chiyu1468/AirTrapMine into wenchun
|
2025-05-19 12:23:24 +08:00 |
|
wenchun
|
e4f0b2dc93
|
Matlab與Gazebo的閉環模擬所需程式
|
2025-05-19 12:21:06 +08:00 |
|
wenchun
|
ce06a4160b
|
更新「README.md」
Signed-off-by: wenchun <milktea910607@gmail.com>
|
2025-03-28 11:45:36 +08:00 |
|
wenchun
|
a934ccfa3c
|
實現close_loop的部份,主要是負責接收matlab回傳的封包,並以mavlink指令的方式打進去Ardupilot裡面
|
2025-03-28 11:30:48 +08:00 |
|
wenchun
|
598e80d070
|
新增fdm_switch_example_one_with_remote_forwarding這個副函式,可以把資料打包轉接到其他ip
|
2025-03-28 11:28:05 +08:00 |
|
wenchun
|
f73e067c0b
|
之前簡易模擬的小程式
|
2025-03-28 11:26:20 +08:00 |
|
wenchun
|
30f29f678b
|
測試接收端
|
2025-03-28 11:24:36 +08:00 |
|
wenchun
|
8bc7bfee86
|
修改資料夾位置
|
2025-03-28 11:04:57 +08:00 |
|
wenchun
|
4f9e6fa51e
|
Gazebo物件生成
|
2025-02-26 11:13:15 +08:00 |
|
wenchun
|
a8968e25b3
|
mavlink單機位置控制
|
2025-02-18 18:08:40 +08:00 |
|
wenchun
|
c501189840
|
新增pymavlink_01.py
|
2025-02-18 17:38:54 +08:00 |
|