# site.yaml 路径:`~/ros2/config/site.yaml`(从 `config/site.example.yaml` 复制,**不进 git**)。 目录总表:[WORKSPACE.md](WORKSPACE.md)。查看解析:`bash ~/ros2/scripts/show_site_config.sh` 改完后重启对应进程才会进节点(夹爪 CLI 每次重读)。 ## 三台相机 | 相机 | 序列号 | 位置 | 脚本 | |------|--------|------|------| | 左腕 D405 | `352122274408` | 89 平行夹爪 | `run_camera_d405.sh --arm 89` | | 右腕 D405 | `260522274442` | 91 旋转夹爪(新,易过曝) | `run_camera_d405.sh --arm 91` | | 中间 D435 | `262522073161` | 双臂之间手外 | `run_camera_d435.sh --preview` | 列出:`bash ~/ros2/scripts/list_realsense.sh` 右腕过曝:`robots[]` 里 `ae_limit_us: 1500` 且关投射器。仍亮则把该臂 `auto_exposure: false` 并设 `exposure_us: 800`。 ## 双臂(89 / 91) 89 和 91 **各有一份** 手眼、腕部相机序列号、夹爪串口、named poses。 `robot.robots[]` 里写该臂覆盖项;`run_*.sh --arm 89|91` 会合并进去。 | 臂 | SN | IP | 手眼 | 夹爪 | |----|----|----|------|------| | 左 89 | Rizon4-063989 | 192.168.2.101 | `handeye/results/89_eye_in_hand.yaml` | PGEA `/dev/ttyUSB0` | | 右 91 | Rizon4-063991 | 192.168.2.100 | `handeye/results/91_eye_in_hand.yaml` | RGI `/dev/ttyUSB1` | ```bash bash ~/ros2/scripts/run_real.sh --arm 89 bash ~/ros2/scripts/run_camera_d405.sh --arm 89 --preview bash ~/ros2/scripts/run_visual_servo_rt.sh --arm 89 --control bash ~/ros2/scripts/run_handeye.sh --arm 91 teach # 91 必须单独标定 ``` 每个终端都要带同一 `--arm`,或改 `robot.sn`。不要把 89 的 `T_4x4` 拷到 91。 棋盘尺寸仍是全局 `handeye.board_*`(两臂共用同一块板)。 ## 谁读哪些段 | 段 | 读者 | |----|------| | `robot` `network` | `run_real.sh`、RDK 工具切换 | | `camera` | `run_camera_d405.sh`;`overlay_hold_sec` 运行中会跟文件 | | `paths` `yolo` `servo` | `visual_servo.launch.py` | | `handeye` `paths.handeye_*` | `run_handeye.sh` | | `gripper` | `run_gripper.sh` / `dh_pgea` / `dual_gripper` | | `hole_detect` | `run_hole_detect.sh`(算法参数也在这一段) | | `tactile` | `run_tactile.sh` | | `go_home` | `go_home.sh` | | `gauge_assembly` | `run_gauge_assembly.sh`(通止规装配 S00–S11;`gauge_config.py` 校验键名/单位) | ## 常改项 | 键 | 含义 | |----|------| | `robot.sn` / `--arm` | 当前臂。可被 `run_real.sh --arm 91` 覆盖 | | `robot.robots[].camera.serial` | 该臂腕部 D405。91 必须单独填写 | | `robot.robots[].paths.handeye_file` | 该臂手眼结果(`handeye/results/<臂号>_<模式>.yaml`),禁止混用 | | `paths.yolo_weights` | 写 `.onnx` 或 `.pt`;`backend: tensorrt` 时须有同名 `.engine`(见 `models/README.md`) | | `yolo.imgsz` | 必须等于模型输入边长 | | `yolo.backend` | `tensorrt` / `onnx` / `auto` | | `camera.serial` `width` `height` `fps` | D405 流。改分辨率要重启相机 | | `servo.ee_z_m` | 法兰锁高 [m];**写在 `robots[].servo`,89/91 分开** | | `servo.xy_track` | `hover`(法兰/爪心正对工件)或 `lookat` | | `camera.name` | `d405_left` / `d405_right`,话题与预览按臂分开 | | `servo.v_max_xy` `kp_xy` `a_max` | 跟踪快慢 | | `gripper.force_pct` `open_position` `close_position` | 左臂 PGEA 力与开度 | | `robots[].gripper.port` `model` | 该臂串口与型号(91 为 RGI) | | `hole_detect.backend` `hough_*` `conf` | 入孔检测 | | `tactile.left_video` `right_video` `config` | Orisys 左右指设备与 dd03 | | `gauge_assembly.extreme_angle_deg` `_direction` | S01 预绕多少度、往哪边转(逆时针=+1) | | `gauge_assembly.contact_*_delta` `screw_*_delta` | 通止规装配的**力判据**(任意单位增量),必须现场标定,见 [TACTILE.md](TACTILE.md) | | `gauge_assembly.holes_total` `reload_timeout_s` | 这次任务的孔数、掉件后等人工确认的时限 | 路径写成**绝对路径**。换机器改 `USER` 和 SN,不要改 Python。 `gauge_assembly:` 段**每个键都有中文注释与取值建议**,直接读 `config/site.yaml` 那一段即可;流程与判据见 [GAUGE_ASSEMBLY.md](GAUGE_ASSEMBLY.md)。 键名拼错会**直接报错并给出最相近的候选名**,不会静默退回默认值(R1.2)。