把当前控制栈收成一份可克隆的源码:腕部看不见时用顶视一次定到基座,二阶段对孔和手外标定跟着进同一份树。

现场 site.yaml、权重和编译产物仍不入库;模板只留占位符。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
arm_dev
2026-10-09 14:51:03 +08:00
parent 16d2912a9a
commit 7d22f777c8
67 changed files with 8597 additions and 409 deletions
+13 -2
View File
@@ -67,9 +67,11 @@ LITERAL_REPLACEMENTS: list[tuple[str, str]] = [
# 用户名匿名化。放在其它规则之前,避免路径被二次处理。
("/home/cc", "/home/USER"),
# 注释里裸写的机械臂编号(无引号,正则抓不到)。
# ⚠️ 这行是**逐字匹配**:site.yaml 里改一个字它就静默失效,SN 就漏进模板了
#(test_real_devices.test_example_contains_no_live_values 会挡下来)。
(
"# User1=enp4s0 本机 192.168.2.10 ↔ 063989=.101 / 063991=.100",
"# User1=enp4s0 本机 <PC_IP> ↔ <左臂SN>=.101 / <右臂SN>=.100",
"# 本机 192.168.2.10 ↔ 063989(左89)=.101 / 063991(右91)=.100",
"# 本机 <PC_IP> ↔ <左臂SN>(左89)=.101 / <右臂SN>(右91)=.100",
),
]
@@ -77,6 +79,15 @@ LITERAL_REPLACEMENTS: list[tuple[str, str]] = [
REGEX_REPLACEMENTS: list[tuple[str, str]] = [
# 机械臂序列号:Rizon4-063989 -> Rizon4-XXXXXX
(r'"(Rizon4)-\d+"', r'"\1-XXXXXX"'),
# 同上,但**不带引号**(注释里的裸写)。留一条兜底,免得上面的逐字规则
# 一旦和 site.yaml 不同步就把 SN 漏出去。
(r"(Rizon4)-\d+", r"\1-XXXXXX"),
# sn 里的连字符在下划线形式下(话题名不许含 '-',broadcaster 用 '_'):
# 例 "/Rizon4_063989/external_wrench_in_tcp" -> "/Rizon4_XXXXXX/external_wrench_in_tcp"
(r"(Rizon4)_\d+", r"\1_XXXXXX"),
# USB 网卡的 iface 名是 MAC 派生的(enx + 12 位十六进制)= 现场值。
# enp4s0 这类板载名是通用的,不动。
(r"enx[0-9a-fA-F]{12}", "enxXXXXXXXXXXXX"),
# IP 地址(仅带引号的配置值;注释里的裸 IP 由上面的字面替换处理)
(r'"192\.168\.\d{1,3}\.\d{1,3}"', '"192.168.2.XXX"'),
# 8 位及以上的纯数字字符串 = 设备序列号(相机 12 位 / 夹爪 8 位)。