Files
ros_contorl/.gitignore
T
arm_dev 98f4277849 真机开工体检四件套:USB 链路 / V4L 设备 / RDK 状态 / 手眼几何
这四个都是「现场看着正常、结果不对」的故障源,共同特征是**不报错**,所以要把它们
从流程里拎出来单独判,并且给出可执行的下一步,而不是只报一个失败。

scripts/lib/usb_health.py
  RealSense 协商到 480Mbps(USB 2.0)时能出图、不报错,只是帧率掉到 1/2 且
  深度不稳定。这里解析 sysfs 拓扑,把「速率对不对」独立于「有没有图」来判,
  并在 --watch 下统计掉线/重连次数(线/口/供电 Hub 的问题会表现为反复抖)。

scripts/lib/v4l_health.py
  触觉相机有两类完全不同的坏法,处置方式相反,以前都只表现为「没有 /dev/video*」:
    · unplugged —— sysfs 里也没有,是没插/线坏
    · wedged    —— sysfs 里在、/dev/video* 没有,是 USB 端点了卡死(要复位或重插)
  2026-09-28 现场左指就是 wedged(1-3.4.1 在 uvcvideo 下,video 节点缺失)。

scripts/lib/rdk_status.py
  ros2_control 卡在 wait_for_operational 时,现象是「栈起来了但关节全是 0、
  流程一直等」。原因全在 OperationalStatus 上,而它只有 RDK 读得到。
  这里把状态翻成人话 + 处置(Auto(Remote) / 松急停 / 清故障)。
  判据取自厂商头文件原话:IN_MANUAL_MODE = "need to switch to Auto (Remote) mode"。

scripts/lib/real_geometry_check.py
  手眼矩阵与悬停几何。手眼写坏不会报错,只会让位姿整体偏几毫米到几厘米;
  判据:R 正交(|RᵀR−I| ≤ 2e-3)、det(R)=+1、平移量级在 10–500mm。
  悬停几何直接复用 gauge_fsm.hover_z_guard(流程里唯一判定处,不另写一套);
  工件面未标定(site.yaml 写 0.0 = 未知)时**明确报 FAIL 并说明判不了**,
  而不是按 0.0 算出一个假的「已修正」结论。

测试:test_usb_health / test_v4l_health / test_real_geometry_check 共 33 例,
全部钉在「判据要能报错」上(故意弄坏的输入必须被抓到)。

顺带 .gitignore 补 log_real/:真机各终端日志是运行产物,与 log_sim/ 对称。
2026-09-28 10:17:32 +08:00

72 lines
2.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本机现场配置(含 IP / 序列号;从 site.example.yaml 复制)
config/site.yaml
# 模型权重二进制 —— 一律不进 git(体积大、每台机器重新转换即可)
# 用通配模式而不是逐个目录列举,否则新增一个分组就会有人误提交二进制。
# 注意:*.labels.yaml 是**文本标签配置**,不属于二进制,应该进 git。
models/**/*.pt
models/**/*.pth
models/**/*.onnx
models/**/*.engine
models/**/*.trt
models/**/*.plan
models/**/*.tflite
# staging = 待转换的临时区,内容不进 git(含转换后归档的 done/)
# 但 .gitkeep 和说明文档要留着,否则新克隆的仓库里这个目录不存在/看不懂。
models/staging/**
!models/staging/.gitkeep
!models/staging/README.md
# 编译产物
build/
install/
log/
# 仿真的构建产物 —— 与真机的 build/ install/ 隔离(见 scripts/build_sim.sh)
# 两套产物目录并存是刻意的:工作区只有一份源码,两个环境的依赖路径不同,
# 共用 install/ 会互相覆盖。
build_sim/
install_sim/
log_sim/
# 真机各终端(T1 栈 / T2 相机 / T3 触觉 / T4 夹爪)的日志与截图。
# 与 log_sim/ 对称:日志是运行产物,不进 git;跑完要留档的证据(如相机截图)
# 单独放到 docs/ 或 PR 里,不要指望从 log_real/ 里找历史。
log_real/
.colcon/
# Python
*.pyc
__pycache__/
*.egg-info/
.pytest_cache/
# Editor / OS
.vscode/
.idea/
.DS_Store
*.swp
# ROS bags
*.bag
*.db3
# Hand-eye backups
*.bak
*.bak.*
# 可选离线 RDK / Isaac(体积大)
thirdparty/
vendor/
# 手眼标定的临时产物(采点图、taught_poses.txt、captures.json)
handeye/tmp/*
!handeye/tmp/.gitkeep
# 仿真手眼真值:**生成物**,不是标定结果 —— 由 scripts/gen_sim_handeye.py 从
# URDF/TF 真值导出,run_gauge_assembly.sh --sim 每次自动重生成。
# 不跟踪的理由:内容里有一行生成时间,每跑一次就脏一次仓库,让人分不清
# "这次改动是代码改的还是只是跑了一遍"。真机标定结果(89_/91_*.yaml)**要跟踪**,
# 那是需要留档的实测数据,不是推导出来的。
handeye/results/sim_*.yaml