新增sim_fc.py: 模拟飞控喂表3验证吊舱解算(第1阶段)
- 伪造载机姿态/位置/时戳持续喂表3,单进程收发一体观测表2-2/表4 - 回答Q1(无激光是否仍解算表4)/Q2(表4实际频率)/Q3(丢失后行为) - 自动判读「目标贴地」假设: 表4相对高度是否约等于喂入的载机高度 - 退出码0/1/2/3便于脚本串测; --json落逐帧采样供阶段2聚类分析 - 默认参数已敲定: lat=39.9042 lon=116.4074 rel-alt=50 rate=20Hz - 纯软单测21条(注入fake serial), 全量回归372 passed
This commit is contained in:
+14
-5
@@ -115,16 +115,22 @@ pytest # 仅上机自测需要,部署运行可省
|
||||
## 7. 上机验证顺序(每步过了再下一步)
|
||||
|
||||
1. **纯软件自测**(无需任何接线):
|
||||
`cd utils && ~/venv-pod/bin/python -m pytest tests/pod_bridge -q` → 应 92 全绿
|
||||
(单测已打桩 mavsdk 设定点类型,与 libcmavsdk 原生库健康状态无关)。
|
||||
`cd utils && ~/venv-pod/bin/python -m pytest tests/pod_bridge -q` → 应 116 全绿
|
||||
(全量 372 条;pod_bridge 含 sim_fc 的 21 条。单测已打桩 mavsdk 设定点类型,
|
||||
与 libcmavsdk 原生库健康状态无关,也无需真实串口)。
|
||||
2. **串口回环**:USB 转串口模块 TX/RX 短接,跑一个 feed/echo 小脚本验证字节收发。
|
||||
3. **只接吊舱**:用仓库自带诊断脚本
|
||||
`python utils/pod_bridge/listen_pod.py /dev/ttyUSB0 --seconds 5`
|
||||
(加 `--center` 可同时下发归中 0x2B 验证下行);脚本自动统计帧数并判读,
|
||||
遥测帧率 ≥48Hz(标称 60Hz 的 80%)退出码为 0 即链路正常。
|
||||
4. **只接飞控**:`Px4Gateway.connect` 后确认 `own_state().position_valid` 为 True。
|
||||
5. **全链路地面联试**:电机不装桨,观察 offboard 心跳与引导输出。
|
||||
6. 最后才考虑带动力测试。
|
||||
4. **验证吊舱能否解算目标坐标**(不接飞控,避免绕过这一步):
|
||||
`python -m pod_bridge.sim_fc /dev/ttyAMA0 --seconds 60 --json phase1.json`
|
||||
由树莓派伪造 表3 喂给吊舱,看是否回 表4。这一步的结论直接决定后续架构取舍,
|
||||
详见 `docs/吊舱解算验证方案-模拟飞控喂表3.md`。
|
||||
⚠ 跑它的时候关掉 listen_pod / pod_console / bridge —— 同一个串口不能两人占。
|
||||
5. **只接飞控**:`Px4Gateway.connect` 后确认 `own_state().position_valid` 为 True。
|
||||
6. **全链路地面联试**:电机不装桨,观察 offboard 心跳与引导输出。
|
||||
7. 最后才考虑带动力测试。
|
||||
|
||||
## 8. 已知问题处置状态(2026-09-23 更新)
|
||||
|
||||
@@ -173,6 +179,9 @@ WantedBy=multi-user.target
|
||||
永久刹车(该闸门是为"有激光且锁定位置位粘滞"的机型准备的);
|
||||
- ⚠ 需向厂商确认:无激光时吊舱如何解算表4 的目标绝对/相对高度
|
||||
(是否假设目标在地面),这直接决定引导用的坐标精度。
|
||||
→ 已给出**不依赖厂商答复的自测方案**:用树莓派伪造飞控数据喂 表3,
|
||||
逼吊舱吐 表4,见 `docs/吊舱解算验证方案-模拟飞控喂表3.md`。
|
||||
该实验还顺带回答 §10.1 悬着的两个前置问题(表4 是否存在、实际频率)。
|
||||
- **锁定位置位(表2-2 状态字节1 bit2)在目标丢失后不复位**——实测观察;
|
||||
表2-2 脱靶量是定长字段且协议**没有无效标志位**,丢失时表现为 0,
|
||||
无法区分"不输出"与"输出 0"。
|
||||
|
||||
Reference in New Issue
Block a user