DYLAN’S FLIGHT LAB / CODE TO SKY
Dylan 的飞控与嵌入式试验场。从一行代码,到一段航迹,让每一次探索都看得见。
正在准备试验场…
拖动旋转 · 滚轮缩放
YOU HAVE CONTROL
WASD / 方向键 · 机头前后左右Q 左转头 · E 右转头松开制动悬停 · H / Esc 停止输入
包含噪声与传输延迟
与定位误差分开观察
THE MOMENT THAT MATTERS
观测的是过去的位置,融合的却可能是现在。移动两个时间点,看看误差发生在哪一步。
DYLAN / WHT · MODEL NOTES
这是面向飞控感知与时序的浏览器实验。画面为三维展示,动力学只计算二维水平运动,高度固定 12 m;机体大小和航迹高度经过视觉夸张。
在俯视地图点选 2–24 个航点,可拖动或输入坐标调整。航点位于 E ±40 m、N ±28 m 范围内,相邻点至少相距 1 m;选择终点悬停、闭合循环或往返。应用会切换为自动飞行并重置实验。默认跟踪按时间推进的折线参考,也可在“控制与航点任务”中选择到达后推进;需进入到达半径且速度低于 0.5 m/s,连续满足停留时间后进入下一点。拐角自动减速,仍可能超调。长航线会自动延长实验时限,以覆盖最低目标速度下的一次完整遍历;只保留最近 180 秒数据。自定义航线保存在本浏览器,未上传服务器;A/B 对照也使用这条航线。
WASD、方向键或长按触屏方向盘,按机头方向控制前后左右:W 前进、S 后退、A 左移、D 右移;Q/E 控制机头左/右转(60°/s),松开停止转头。侧移和倒飞不改变机头方向。速度由目标速度滑块设定;按键直接给定水平速度;松开后先制动,低速时锁定实际停留位置。E ±45 m、N ±32 m 附近提前减速,真值可能有短暂超调。高度保持 12 m,航向采用简化运动学,不模拟完整姿态动力学、油门或升降。WASD 可从滑块或下拉框直接接管;方向键在参数控件上保留调参功能。H / Esc、暂停、窗口失焦及打开弹窗会清除操纵输入。手动模式第三项指标显示速度误差。切回自动后会接回离开时的航线进度;对照实验始终使用所选自动航线。
默认使用真值反馈,便于隔离定位问题;选择估计反馈后,自动飞行的位置和速度控制使用上一时步估计,定位误差将影响真实航迹。手动模式保持真值反馈。三种误差分别相对于真值或参考点计算,不能混为一谈。
噪声 σ 是每个水平轴的标准差;图中误差是二维欧氏距离。对照实验固定种子、航线、风场和噪声,只改变补偿量,统计 2–40 s 中 GNSS 有效时段的定位 RMSE。估计反馈下两组真实航迹可能不同;定时故障沿用当前设置。回放是每 0.1 秒记录的显示快照,不会修改当前物理状态;仅保留最近 180 秒。
使用官方 PX4 v1.15.4 的 C++ EKF 核心,编译为 WebAssembly,在浏览器独立线程计算。切换会重置飞行记录,保留当前参数;开始前输入 12 秒静止传感器数据完成初始对准(不计入实验时间)。初始失锁场景也从已对准状态开始。
输入为 200 Hz 机体系 FRD 的角增量与比力增量、10 Hz GNSS 位置和速度、模拟双天线航向以及固定高度气压观测。滤波按 100 Hz 更新,使用 PX4 延迟融合与输出预测器;页面展示输出预测器的当前位置。自动机头转速限为 60°/s;真值姿态保持水平,只改变航向。IMU 水平加速度计带固定机体系偏置和噪声,陀螺仪为理想角增量。
这与 KF 的传感器输入不同:KF 只使用世界系水平加速度和 GNSS 位置,因此两个模式的误差不能直接作为算法优劣排名。A/B 比较在同一个模式内进行。CSV 的 sigma 来自滤波协方差;EKF 中为延迟融合时域的水平位置标准差合成,不能当作输出预测器当前位置的严格置信界。
核心版本与构建来源 · 开源许可
这里运行的是估计算法实验,不是完整 PX4 SITL:没有飞控调度、uORB、传感器驱动、完整六自由度动力学或实机输入;补偿范围与增益均为演示设置,不能直接当作实机调参结论。黄色机头箭头、HDG 读数与操纵方向共用同一个航向;跟随视角位于机尾后上方。3D 图形使用本地托管的 Three.js。
WU / WHT · ROUTE DESIGNER
点击地图添加航点,拖动调整位置。北向上、东向右,单位 m;飞机按编号顺序飞行。
曲线预设复制时简化为最多 24 个航点。应用后保存在当前浏览器;再次打开编辑器可继续修改。
A / B EXPERIMENT
正在运行相同条件下的两组实验…
所选自动航线;固定随机种子;GNSS 始终开启;统计 2–40 s;这是简化模型的实验结果。
交互仿真需要启用 JavaScript。当前页面没有连接真实飞行器。