纠正说法: 0x0F自动锁定是常驻模式, 0x0E只停当前跟踪

实测: 按u后并未放弃自动锁定, 只是目标丢失无法锁定, 目标重新入画仍会自动锁定,
无需重发0x07/0x0F/0x10; 只有0x08关识别才真正退出。同步修正脚本按键说明、
面板提示与部署文档§10/§10.1, 并据此下调自动解锁的副作用风险评级
This commit is contained in:
keita
2026-09-28 16:50:19 +08:00
parent fc364656ec
commit a2ca8bee0c
2 changed files with 18 additions and 5 deletions
+11 -2
View File
@@ -178,7 +178,11 @@ WantedBy=multi-user.target
无法区分"不输出"与"输出 0"。 无法区分"不输出"与"输出 0"。
→ 单靠 bit2 会在目标丢失后继续朝过期坐标飞,**必须有第二判据**(见 §8/§11)。 → 单靠 bit2 会在目标丢失后继续朝过期坐标飞,**必须有第二判据**(见 §8/§11)。
- **主动解除锁定有效**:发 `0x0E 停止跟踪` 后 bit2 复位为未锁定,厂商测试软件的 - **主动解除锁定有效**:发 `0x0E 停止跟踪` 后 bit2 复位为未锁定,厂商测试软件的
锁定框同步消失(2026-09-28 实测)。重新锁定:重发 0x07 或 0x0F+0x10。 锁定框同步消失(2026-09-28 实测)。
- ⚠ **0x0F「发现目标自动锁定」是常驻模式,不是一次性动作**:`0x0E` 只停止**这一次**
跟踪,并不退出自动锁定——目标重新进入画面时吊舱会**自动重新锁定**,无需重发
0x07 / 0x0F / 0x10(实测结论,2026-09-28 纠正)。只有发了 `0x08 目标识别关`
才真正退出识别,此时才需要按 `d` / `a` 重新开启。
### 10.1 自动解锁机制(待定,勿贸然启用) ### 10.1 自动解锁机制(待定,勿贸然启用)
@@ -189,7 +193,7 @@ WantedBy=multi-user.target
|---|---| |---|---|
| 本设备无激光,锁定后**到底发不发 表4** | 若表4 根本不发,`last_tgt_s` 恒空 → 一锁定就被误解锁,机制不可用 | | 本设备无激光,锁定后**到底发不发 表4** | 若表4 根本不发,`last_tgt_s` 恒空 → 一锁定就被误解锁,机制不可用 |
| 表4 的实际发送频率(规格 1~60Hz) | SEC 必须远大于实际周期(建议 ≥5s 且 ≥3 倍周期),否则误杀 | | 表4 的实际发送频率(规格 1~60Hz) | SEC 必须远大于实际周期(建议 ≥5s 且 ≥3 倍周期),否则误杀 |
| 解锁后是否自动重发 0x0F/0x10 重新捕获 | 自动重发可能与"假锁定"形成震荡;建议单次解锁 + 告警,不循环 | | 解锁后是否自动重发 0x0F/0x10 重新捕获 | **不需要**:0x0F 是常驻模式,0x0E 后目标重新入画会自动锁定;自动重发反而可能与"假锁定"形成震荡 |
候选替代判据(按可靠性排序): 候选替代判据(按可靠性排序):
1. **操作员按键 `u`**(台架阶段推荐,零误杀); 1. **操作员按键 `u`**(台架阶段推荐,零误杀);
@@ -201,3 +205,8 @@ WantedBy=multi-user.target
飞行期的正确行为是**刹车保护**(现有 `target_stale_ms` 已覆盖),与"解锁以便重新 飞行期的正确行为是**刹车保护**(现有 `target_stale_ms` 已覆盖),与"解锁以便重新
搜索"是两件事,不要混为一谈。 搜索"是两件事,不要混为一谈。
**对自动解锁风险评估的修正**:既然 0x0E 之后自动锁定仍生效、目标重现会自动锁定,
误触发一次 0x0E 的代价只是"本次跟踪中断、(我方)刹车一次",吊舱会自行恢复捕获
——所以自动解锁的**副作用可控**,启用与否主要取决于触发判据准不准(表4 是否存在),
而不是担心解锁后锁不回来。
+7 -3
View File
@@ -10,8 +10,9 @@
python utils/pod_bridge/pod_console.py /dev/ttyAMA0 --duration 60 # 定时自动结束 python utils/pod_bridge/pod_console.py /dev/ttyAMA0 --duration 60 # 定时自动结束
交互按键(输入后回车): 交互按键(输入后回车):
u = 解除锁定(0x0E 停止跟踪) u = 停止跟踪(0x0E):解除当前锁定;0x0F 自动锁定模式**仍生效**,目标重新进
s = 停止跟踪 + 关识别(0x0E + 0x08) 入画面会自动锁定,无需重发指令
s = 停止跟踪 + 关识别(0x0E + 0x08):彻底退出识别,需按 d / a 重新开启
d = 开识别(0x07,类型取 --detect,默认 person) d = 开识别(0x07,类型取 --detect,默认 person)
a = 自动锁定序列(0x0F + 0x10) a = 自动锁定序列(0x0F + 0x10)
c = 归中(0x2B) c = 归中(0x2B)
@@ -21,6 +22,8 @@
* 本吊舱锁定位置位(表2-2 status1 bit2)在目标丢失后**不复位**(实测), * 本吊舱锁定位置位(表2-2 status1 bit2)在目标丢失后**不复位**(实测),
必须用 0x0E 停止跟踪主动解除;可用 --auto-unlock 让脚本在表4 停止更新 必须用 0x0E 停止跟踪主动解除;可用 --auto-unlock 让脚本在表4 停止更新
N 秒后自动发 0x0E; N 秒后自动发 0x0E;
* 注意:0x0F「发现目标自动锁定」是**常驻模式**,0x0E 只停止当前这一次跟踪,
不会退出自动锁定——目标重新进入画面会自动重新锁定(实测结论);
* --duration 0 表示一直运行到 Ctrl+C / 输入 q; * --duration 0 表示一直运行到 Ctrl+C / 输入 q;
* 输出重定向到文件时改为每周期一行紧凑记录,便于留存日志; * 输出重定向到文件时改为每周期一行紧凑记录,便于留存日志;
* 锁定状态取自 表2-2 状态字节1 的 bit2(规格 §2.2.2)。 * 锁定状态取自 表2-2 状态字节1 的 bit2(规格 §2.2.2)。
@@ -41,7 +44,8 @@ from pod_bridge.protocol import (ControlCode, ControlCommand, # noqa: E402
# 表2-1 0x07 目标识别开:参数X 0=检测人或车,1=检测无人机(规格 §2.2.1) # 表2-1 0x07 目标识别开:参数X 0=检测人或车,1=检测无人机(规格 §2.2.1)
_DETECT_PARAM_X = {"person": 0, "drone": 1} _DETECT_PARAM_X = {"person": 0, "drone": 1}
_TELEMETRY_NOMINAL_HZ = 60.0 _TELEMETRY_NOMINAL_HZ = 60.0
_KEY_HINT = "按键: u=解锁(0x0E) s=停止+关识别 d=开识别 a=自动锁定 c=归中 q=退出" _KEY_HINT = ("按键: u=停止跟踪(自动锁定仍生效) s=停止+关识别 d=开识别 "
"a=自动锁定 c=归中 q=退出")
def _fmt_hhmmss(seconds: float) -> str: def _fmt_hhmmss(seconds: float) -> str: