# 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` | ## 常改项 | 键 | 含义 | |----|------| | `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 | 路径写成**绝对路径**。换机器改 `USER` 和 SN,不要改 Python。