重點結論
- 結論:可行,且短期最可行路線是「VSNG 原生 quadrotor 元件 + USB HID/DirectInput 遙控器」。目前不建議一開始做 MAVLink 或真飛控硬接,除非需求明確要求飛控級 HIL。
- VSNG 內部存在明確空拍機線索。本機包內有
quad_body.cfg、quad_rotor.cfg、quadrotor [control]、H501s 面板、雙搖桿joystl/joystr、dgcamera與quad_mode1/quad_mode2。 - 遙控器接入可行性高,但取決於遙控器是否能被 Windows/VSNG 當成 joystick。VSNG 文件明確支援最多 6 個 joystick、軸/按鍵映射、POV hats 與 TrackIR。
- 視覺建模可行性高。VSNG 使用 DirectX
.x模型,支援 component mesh、moving part tags、快慢槳葉 mesh、panel/instrument;目前 quad rotor 模型已含fprop1與sprop1。 - 最大未知數不是「能不能放進 VSNG」,而是「四旋翼物理手感能調到多接近實機」。短期展示可達成;若要專業飛控訓練或任務級精準評分,建議把 AirSim / ArduPilot SITL 作為中長期備案。
一、研究範圍與判斷基準
本次目標不是做學術級飛控模擬器,而是判斷 VSNG 現有架構是否能支撐「在鯤航既有海域/港區場景中,用遙控器操作空拍機進行模擬訓練」。判斷分成五個面向:
| 面向 | 判斷 | 原因 |
|---|---|---|
| 控制器接入 | 高 | VSNG 原生 joystick 設定完整;只要遙控器能以 USB HID/DirectInput 出現,就能進入軸/按鍵映射流程。 |
| 空拍機視覺建模 | 高 | 已有 quad body/rotor mesh 與 component 機制;可替換成 DJI/通用四旋翼外觀。 |
| 槳葉旋轉效果 | 高 | quad rotor 模型已有慢槳/快槳命名;VSNG vehicle mesh 也支援 prop/rotor moving part tags。 |
| 鏡頭/雲台控制 | 中高 | H501s/quadrotor 面板已有 dgcamera,模型也有 camera frame;仍需實機確認可控範圍與映射方式。 |
| 飛控級物理/HIL | 中 | VSNG 有 quadrotor control,但未見完整現成 drone vehicle。高擬真飛控閉環建議作第二階段或外部 simulator 備案。 |
二、VSNG 架構證據
2.1 VSNG 不是 Unity/Unreal,而是原生 DirectX 自製引擎
本機文件 help/about.htm 說明 Vehicle Simulator 結合 Micro Flight 與 Virtual Sailor,支援 land、naval、flying vehicles,並使用 DirectX9。這代表空拍機要走的是 VSNG 的既有載具/元件格式,而不是 Unity/Unreal plugin。
2.2 VSNG 原生 vehicle component 支援自行組裝載具
help/vehicle.htm 明確寫出:components.cfg 會定義組成載具的 component,並覆蓋 vehicle.cfg / elements.cfg 的物理屬性;程式內 Components tab 可以新增、刪除、移動 component,並在飛行中看到行為變化。
這對空拍機很重要,因為它表示我們不一定要手寫完整物理檔,可以先用 VSNG 內建設計模式把 quad_body 與四個 quad_rotor 組成 PoC,再儲存成 new_vehicle 後整理命名。
2.3 這包 VSNG 真的有 quadrotor 元件
| 檔案 | 關鍵內容 | 意義 |
|---|---|---|
components/quad_body.cfg | body 質量 100kg、慣量、8 個 contact point、drag、quadrotor [control] | 不是單純外觀;它有物理元素與控制器。 |
components/quad_rotor.cfg | trotor [element]、2 blades、blade chord/radius、quadrotor [control] | 旋翼元件可被 quadrotor 控制模式驅動。 |
components/quad_body.x | 含 camerab、camera、body、battery 等 frame | 模型已包含鏡頭/機身結構線索。 |
components/quad_rotor.x | 含 spinner、fprop1、sprop1 | 已預留快槳/慢槳視覺狀態。 |
panels/quadrotor/panel.cfg | joystl、joystr、dgcamera、quad_mode1、quad_mode2、速度/高度儀 | 內建空拍機/四旋翼儀表面板。 |
panels/H501s/panel.cfg | H501s 面板,含雙搖桿、digital camera、quad mode | 疑似以 Hubsan H501S 類四旋翼為參考。 |
三、遙控器與硬體接入可行性
3.1 VSNG 原生 joystick 能力
VSNG 設定文件顯示,Joystick 設定可為已連接的 joystick 指定 axes、buttons、sensitivity、reverse;最多支援 6 個 joystick;也支援 POV hats 與 TrackIR。操作文件也明確列出 joystick axes/buttons 可以控制載具。
因此短期硬體策略很單純:讓遙控器在 Windows 被辨識為標準遊戲控制器,再交給 VSNG 映射。
3.2 建議硬體路線
| 路線 | 可行性 | 建議 |
|---|---|---|
| USB HID 航模遙控器 / 模擬器 dongle | 最高 | 第一順位。先用可被 Windows Game Controllers 辨識的設備,例如 EdgeTX/OpenTX/FrSky/Taranis/TBS/RadioMaster 類,或 RC simulator USB dongle。 |
| 一般飛行搖桿 / gamepad | 高 | 很適合做第一天 PoC,但手感不像空拍機遙控器。可用於確認 VSNG quadrotor 是否可飛。 |
| DJI 原廠遙控器 | 未知 | 只建議做兼容性測試。若 Windows/VSNG 看不到 joystick axes,就不要列為主方案。 |
| vJoy / Joystick Gremlin / AutoHotkey 橋接 | 中 | 可救急,但正式訓練展示不宜作第一順位,因為多一層軟體就多延遲與現場維護風險。 |
| MAVLink / 真飛控 HIL | 低到中 | VSNG 未見原生 MAVLink SDK。若客戶要飛控級訓練,建議另開 AirSim/ArduPilot 或 DLL bridge 研究。 |
四、空拍機建模與物理效果
4.1 短期展示模型
短期不需要追求完全複刻 DJI 企業機。建議先做「通用四旋翼訓練機」或以 H501s/VSNG 現有 quad body 為基礎,確認控制、視角、槳葉、場景任務都可跑後,再換成中研院/鯤航指定機型外觀。
- 機身:
quad_body.x可先直接使用;第二輪再建低面數 `.x` 模型。 - 旋翼:每個角落放一個
quad_rotorcomponent,依 VSNG component editor 調 x/y/z 位置。 - 槳葉視覺:使用
sprop1慢槳與fprop1快槳;必要時追加透明 blur disk 貼圖。 - 材質:VSNG 舊引擎偏好輕量貼圖,避免高面數與大量 PBR 材質。
- 模型管線:Blender / 3DS / Conv3ds.exe / DirectX `.x`,沿用既有 VSNG 場景建模管線。
4.2 飛行物理調整方向
VSNG 的 quad_body.cfg 與 quad_rotor.cfg 已提供四旋翼控制起點。PoC 後應調整以下參數:
| 調整項 | 目的 | 驗收方式 |
|---|---|---|
| mass / inertia | 調整機身穩定性與轉向慣性 | 能平順起飛、懸停、轉向,不會一推桿就翻滾。 |
| rotor thrust / blade radius | 調整升力與油門手感 | 中段油門可穩定維持高度,滿油門有明顯爬升。 |
| drag surface | 抑制不自然高速漂移 | 前飛/側飛停止後能合理減速。 |
| controller sensitivity | 對應遙控器行程與訓練難度 | 新手模式可控;進階模式保留較高機動性。 |
五、鏡頭轉向與雲台
VSNG 現有檔案提供三個可行方向:
- 優先驗證原生
dgcamera。quadrotor/H501s 面板已包含dgcamerainstrument,這是最像空拍機鏡頭控制的內建路線。 - 使用 cockpit/viewpoint 模擬機載鏡頭。若 dgcamera 不足,可以用
views.cfg固定機頭、斜下、俯視、追蹤等視角,配合 POV hats 或鍵盤切換。 - 進階才做 DLL instrument。
dll_g1000範例顯示 instrument DLL 可讀寫 plane data structure,理論上可做外部儀表或控制介面,但這是第二階段之後的工程。
六、方案比較
| 方案 | 內容 | 優點 | 限制 | 建議 |
|---|---|---|---|---|
| A. VSNG 原生 quadrotor | 用 VSNG component editor 組 quad_body + quad_rotor,接 USB joystick 遙控器。 | 最快、最貼近既有安平/海域場景、成本低。 | 飛控擬真度要實測調參。 | 主方案 |
| B. VSNG helicopter 近似 | 若 quadrotor 不穩,用 helicopter/autogyro 類型近似空拍機。 | 風險備援,能確保有可飛載具。 | 四旋翼手感與槳葉配置不準。 | PoC 備案 |
| C. 外部 HID bridge | 遙控器資料先轉成 vJoy/鍵盤/滑鼠,再餵 VSNG。 | 可救 DJI 或特殊遙控器。 | 部署麻煩,現場穩定性較差。 | 只作兼容方案 |
| D. AirSim / ArduPilot SITL | 用專業 drone simulator/飛控模擬作核心。 | 飛控、MAVLink、API、攝影機資料更完整。 | 要重建或匯入 VSNG 場景,成本高。 | 高擬真第二案 |
| E. VSNG DLL bridge | 自寫 DLL/外部程式讀寫 VSNG vehicle state。 | 可能保留 VSNG 場景,同時接外部飛控。 | SDK 邊界不完整,需 C++ 逆向式驗證。 | 研究案,不做第一階段承諾 |
七、實際可行計劃方案
Phase 0:一週內技術驗證
new_vehicle:quad_body + 四個 quad_rotor。dgcamera、fprop1/sprop1 是否跟狀態連動。驗收:可在 VSNG 場景中用遙控器起飛、懸停、移動、降落;畫面能看到空拍機外觀與槳葉旋轉;至少有一種可用的鏡頭/視角控制方式。
Phase 1:2-3 週展示版
- 建立
Drone_POC載具資料夾與可重複部署的 component/vehicle 設定。 - 在安平港/指定海域配置 3 個訓練任務:起降、繞標、定點拍攝/巡檢。
- 建立遙控器映射表:Mode 2 為主,保留靈敏度、新手/進階設定。
- 做第一版外觀模型:通用四旋翼或依客戶指定機型外型做低面數模型。
- 整理操作 SOP 與 demo 劇本,供中研院/鯤航現場試飛。
Phase 2:4-8 週訓練版
- 加入任務評分:航線偏差、碰撞、降落精度、高度控制、鏡頭對準時間。
- 加入風、能見度、夜間、障礙物、船舶/港區目標。
- 整合 replay/path:供教官回放學員操作。
- 補完整模型:指定機型外觀、鏡頭座、槳葉 blur、夜航燈。
- 形成可交付訓練包:VSNG add-on、硬體清單、安裝文件、教案。
Phase 3:高擬真或飛控整合
只有在客戶明確要求「飛控演算法訓練」、「MAVLink 任務規劃」、「真飛控 HIL」時才啟動。此時建議評估 AirSim / ArduPilot SITL / PX4,而不是把所有飛控需求硬塞進 VSNG。
八、風險與必做驗證
| 風險 | 影響 | 驗證方式 | 替代方案 |
|---|---|---|---|
| quadrotor component 可組但手感不穩 | 展示效果差 | Phase 0 實測起飛/懸停/降落 | 改用 helicopter 近似或調高穩定性/阻尼 |
| DJI 遙控器無法 HID 輸出 | 無法用指定遙控器 | Windows Game Controllers + VSNG joystick 設定畫面檢查 | 改用 USB 航模遙控器或 vJoy bridge |
| dgcamera 無法滿足鏡頭訓練 | 鏡頭操作不完整 | 測試 panel instrument 與視角切換 | views.cfg / POV hats / DLL instrument |
| 模型太重導致 VSNG 掉幀 | 訓練體驗差 | 低/中/高三版模型 FPS 測試 | 降面、貼圖合併、LOD simple.x |
| 客戶期待真實飛控物理 | VSNG 原生方案可能不足 | 需求訪談先定義「訓練目的」是操控熟悉、場景任務,還是飛控調參 | 另開 AirSim/ArduPilot 高擬真方案 |
九、參考資料與本機證據
- VSNG 本機文件:
/Users/wt/PyCharmMiscProject/鯤航/VS NG/Virtual.Sailor.NG.v9.9.8/help/about.htm - VSNG joystick 文件:
/Users/wt/PyCharmMiscProject/鯤航/VS NG/Virtual.Sailor.NG.v9.9.8/help/settings.htm - VSNG vehicle/component 文件:
/Users/wt/PyCharmMiscProject/鯤航/VS NG/Virtual.Sailor.NG.v9.9.8/help/vehicle.htm - quadrotor 元件:
components/quad_body.cfg、components/quad_rotor.cfg、components/quad_body.x、components/quad_rotor.x - quadrotor 面板:
panels/quadrotor/panel.cfg、panels/H501s/panel.cfg - DLL instrument 範例:
instruments/dll_g1000/readme.txt與source.zip - QGroundControl Joystick Setup:joystick 可控制 vehicle,並可啟用 gimbal control;ArduPilot vehicles 支援 joystick。
- ArduPilot SITL:SITL 可搭配 GCS、Mission Planner/QGC、外部模擬器與 joystick。
- Microsoft AirSim:Unreal/Unity based drone simulator,支援 PX4/ArduPilot SITL 與 PX4 HIL,可作高擬真備案。