From a2ca8bee0c7b9cc3d180803bd7ecc74d00acb162 Mon Sep 17 00:00:00 2001 From: keita <16924591+keita_sakura@user.noreply.gitee.com> Date: Mon, 28 Sep 2026 16:50:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A0=E6=AD=A3=E8=AF=B4=E6=B3=95:=200x0F?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E9=94=81=E5=AE=9A=E6=98=AF=E5=B8=B8=E9=A9=BB?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F,=200x0E=E5=8F=AA=E5=81=9C=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E8=B7=9F=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实测: 按u后并未放弃自动锁定, 只是目标丢失无法锁定, 目标重新入画仍会自动锁定, 无需重发0x07/0x0F/0x10; 只有0x08关识别才真正退出。同步修正脚本按键说明、 面板提示与部署文档§10/§10.1, 并据此下调自动解锁的副作用风险评级 --- docs/树莓派4B部署注意事项.md | 13 +++++++++++-- utils/pod_bridge/pod_console.py | 10 +++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/树莓派4B部署注意事项.md b/docs/树莓派4B部署注意事项.md index 8e6cc37..73fe52b 100644 --- a/docs/树莓派4B部署注意事项.md +++ b/docs/树莓派4B部署注意事项.md @@ -178,7 +178,11 @@ WantedBy=multi-user.target 无法区分"不输出"与"输出 0"。 → 单靠 bit2 会在目标丢失后继续朝过期坐标飞,**必须有第二判据**(见 §8/§11)。 - **主动解除锁定有效**:发 `0x0E 停止跟踪` 后 bit2 复位为未锁定,厂商测试软件的 - 锁定框同步消失(2026-09-28 实测)。重新锁定:重发 0x07 或 0x0F+0x10。 + 锁定框同步消失(2026-09-28 实测)。 +- ⚠ **0x0F「发现目标自动锁定」是常驻模式,不是一次性动作**:`0x0E` 只停止**这一次** + 跟踪,并不退出自动锁定——目标重新进入画面时吊舱会**自动重新锁定**,无需重发 + 0x07 / 0x0F / 0x10(实测结论,2026-09-28 纠正)。只有发了 `0x08 目标识别关` + 才真正退出识别,此时才需要按 `d` / `a` 重新开启。 ### 10.1 自动解锁机制(待定,勿贸然启用) @@ -189,7 +193,7 @@ WantedBy=multi-user.target |---|---| | 本设备无激光,锁定后**到底发不发 表4** | 若表4 根本不发,`last_tgt_s` 恒空 → 一锁定就被误解锁,机制不可用 | | 表4 的实际发送频率(规格 1~60Hz) | SEC 必须远大于实际周期(建议 ≥5s 且 ≥3 倍周期),否则误杀 | -| 解锁后是否自动重发 0x0F/0x10 重新捕获 | 自动重发可能与"假锁定"形成震荡;建议单次解锁 + 告警,不循环 | +| 解锁后是否自动重发 0x0F/0x10 重新捕获 | **不需要**:0x0F 是常驻模式,0x0E 后目标重新入画会自动锁定;自动重发反而可能与"假锁定"形成震荡 | 候选替代判据(按可靠性排序): 1. **操作员按键 `u`**(台架阶段推荐,零误杀); @@ -201,3 +205,8 @@ WantedBy=multi-user.target 飞行期的正确行为是**刹车保护**(现有 `target_stale_ms` 已覆盖),与"解锁以便重新 搜索"是两件事,不要混为一谈。 +**对自动解锁风险评估的修正**:既然 0x0E 之后自动锁定仍生效、目标重现会自动锁定, +误触发一次 0x0E 的代价只是"本次跟踪中断、(我方)刹车一次",吊舱会自行恢复捕获 +——所以自动解锁的**副作用可控**,启用与否主要取决于触发判据准不准(表4 是否存在), +而不是担心解锁后锁不回来。 + diff --git a/utils/pod_bridge/pod_console.py b/utils/pod_bridge/pod_console.py index d936b61..34a4f39 100644 --- a/utils/pod_bridge/pod_console.py +++ b/utils/pod_bridge/pod_console.py @@ -10,8 +10,9 @@ python utils/pod_bridge/pod_console.py /dev/ttyAMA0 --duration 60 # 定时自动结束 交互按键(输入后回车): - u = 解除锁定(0x0E 停止跟踪) - s = 停止跟踪 + 关识别(0x0E + 0x08) + u = 停止跟踪(0x0E):解除当前锁定;0x0F 自动锁定模式**仍生效**,目标重新进 + 入画面会自动锁定,无需重发指令 + s = 停止跟踪 + 关识别(0x0E + 0x08):彻底退出识别,需按 d / a 重新开启 d = 开识别(0x07,类型取 --detect,默认 person) a = 自动锁定序列(0x0F + 0x10) c = 归中(0x2B) @@ -21,6 +22,8 @@ * 本吊舱锁定位置位(表2-2 status1 bit2)在目标丢失后**不复位**(实测), 必须用 0x0E 停止跟踪主动解除;可用 --auto-unlock 让脚本在表4 停止更新 N 秒后自动发 0x0E; + * 注意:0x0F「发现目标自动锁定」是**常驻模式**,0x0E 只停止当前这一次跟踪, + 不会退出自动锁定——目标重新进入画面会自动重新锁定(实测结论); * --duration 0 表示一直运行到 Ctrl+C / 输入 q; * 输出重定向到文件时改为每周期一行紧凑记录,便于留存日志; * 锁定状态取自 表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) _DETECT_PARAM_X = {"person": 0, "drone": 1} _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: