Files
arm_dev 6edb8d39ab chore: 框架科学优化前的完整基线
在开始'设备契约层 + 目录重构 + 通止规装配'改造之前,先钉住当前可运行状态,
使后续任何删除/重构都可回退。

本基线包含:
- 现有 ROS 2 工作区全部源码(arm_application / arm_control / arm_bringup 等)
- 官方 flexiv_ros2 栈(含 flexiv_hardware / flexiv_controllers 等符号链接)
- 设备契约层 src/arm_interfaces(新增,46 项单测通过)
- devices/ 设备选型与品牌清单(新增)
- scripts/gen_site_example.py 与由它生成的 config/site.example.yaml

按 .gitignore 排除:build/ / install/ / log/ / config/site.yaml / 模型权重二进制。
2026-09-23 10:53:06 +08:00

53 lines
2.4 KiB
Markdown
Raw Permalink 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.
# 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 会被清理。