# devices/grippers/ —— 夹爪 ## 厂商物料放置要求 | 项 | 要求 | |----|------| | 格式 | 厂商原始发布的驱动/SDK/协议文档,不要转换 | | 命名 | 保持原文件名。若厂商只提供 PDF 协议手册,把它放进来即可(适配器按手册实现) | | 通讯参数 | **不要写在这里**。串口、波特率、从站号、行程全部在 `config/site.yaml` | | 生效 | 放好物料 → 改 `devices/registry.yaml` 选型 → 改 `site.yaml` 里的串口与行程 → 重启 `scripts/run_gripper.sh` | ## 目录结构 ``` grippers/ ├── README.md ├── dh_pgea/ # 大寰(当前在用) │ ├── manifest.yaml │ ├── protocol/ # 厂商协议手册 / 寄存器表 │ └── driver/ └── <新品牌>/ ``` ## 适配器必须实现的接口契约 夹爪的接口刻意做成和机械臂对称 —— 上层只调接口,不关心是哪个品牌、走 Modbus 还是走 RDK。 | 能力 | 用途 | |------|------| | `open` | 张开 | | `close` | 夹紧(可带力/速度参数) | | `move` | 移动到指定开度 | | `rotate` | 旋转到指定角度(旋转爪) | | `get_status` | 读开度、力、是否夹持到位 | **关键设计:`rotate` 与 `open/close` 解耦。** 通止规装配的 S08 循环是 「转 180° → 松爪 → 快回转 → 夹紧」四步反复,这四步必须是四个独立可调用的原语, 不能封装成一个「拧螺丝」复合动作 —— 否则中途掉件时无法精确恢复。 ## 当前状态(迁移参考) 大寰现有实现有两套互不复用的 Modbus 栈,P1 之后会合并到 `dh_pgea/driver/` 下: | 文件 | 内容 | 处置 | |------|------|------| | `src/arm_application/arm_application/dh_pgea.py` | PGEA Modbus 客户端 + 自带 CRC 表 + CLI | 保留,收敛为驱动 | | `src/arm_application/arm_application/dh_official.py` | 另一份寄存器级客户端(含 RGI 旋转寄存器) | 合并进来,消除重复 | | `src/arm_application/arm_application/dual_gripper.py` | PGEA/RGI 统一抽象 | 改为调用新驱动接口 | | `src/arm_application/arm_application/dh_pgea_node.py` | ROS 节点封装 | 改为通用夹爪节点的品牌无关实现 | **注意**:`site.yaml` 里 `gripper.backend: rdk` 这条路径已被 `run_gripper.sh` 明确拒绝, `scripts/rdk_gripper.py` 是孤儿脚本。这条「走控制器 RS485」的分支在 P2 会被清理。