6edb8d39ab
在开始'设备契约层 + 目录重构 + 通止规装配'改造之前,先钉住当前可运行状态, 使后续任何删除/重构都可回退。 本基线包含: - 现有 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 / 模型权重二进制。
69 lines
2.9 KiB
Markdown
69 lines
2.9 KiB
Markdown
# 大寰夹爪(PGEA + RGI)
|
||
|
||
两只爪都走工控机 **USB–RS485 + 官方 Modbus RTU**,不走 Flexiv `Gripper` / Studio `GripperDahuanModbus`。示教器里关掉对应设备,避免抢总线。`run_real.sh` 保持 `load_gripper:=false`。
|
||
|
||
| 臂 | 型号 | 串口 | 脚本 |
|
||
|----|------|------|------|
|
||
| 左 89 | PGEA-100-20-W 平行 | `/dev/ttyUSB0` | `run_gripper.sh --arm 89` |
|
||
| 右 91 | RGI-100-30-O-S-M1 旋转 | `/dev/ttyUSB1` | `run_gripper.sh --arm 91` |
|
||
|
||
端口、行程、力/速写在 `site.yaml`:`robots[].gripper`(每臂)+ 全局 `gripper` / `gripper.parallel` / `gripper.rotary`。双爪 ROS 节点读 `robots[]` 两侧。不要改包内 Python 默认值。
|
||
|
||
源码:`src/arm_application/arm_application/dh_official.py`、`dual_gripper.py`、`dh_pgea.py`。消息:`arm_msgs`(**不要**往官方 `flexiv_msgs` 塞自定义夹爪类型)。
|
||
|
||
## 命令行
|
||
|
||
```bash
|
||
# 左臂平行爪
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 89 --cli probe
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 89 --cli init # 上电第一次
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 89 --cli open
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 89 --cli close
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 89 --cli pos 500 # 0=合 1000=开(‰)
|
||
|
||
# 右臂旋转爪
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 91 --cli open
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 91 --cli close
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 91 --cli rotate 90
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 91 --cli revolutions 2
|
||
```
|
||
|
||
PGEA 力/速:`gripper.force_pct`(最低 20)`speed_pct` `open_position` `close_position`。RGI 不要 `auto_init: true`(`robots[]` 里已关)。
|
||
|
||
## ROS 节点
|
||
|
||
单爪:
|
||
|
||
```bash
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 89 # /gripper/open /gripper/close
|
||
bash ~/ros2/scripts/run_gripper.sh --arm 91 # dual_gripper 仅 right
|
||
```
|
||
|
||
双爪同时:
|
||
|
||
```bash
|
||
bash ~/ros2/scripts/run_dual_gripper.sh
|
||
```
|
||
|
||
| 名称 | 类型 |
|
||
|------|------|
|
||
| `/dual_gripper_driver/left/command` | `arm_msgs/msg/GripperCommand` |
|
||
| `/dual_gripper_driver/right/command` | 同上 |
|
||
| `/dual_gripper_driver/left/status` | `arm_msgs/msg/GripperStatus` |
|
||
| `/dual_gripper_driver/right/status` | 同上 |
|
||
| `/dual_gripper_driver/left/execute` | `arm_msgs/srv/GripperExecute` |
|
||
| `/dual_gripper_driver/right/execute` | 同上 |
|
||
|
||
`command` 字段:`init` `open` `close` `move`;右爪另有 `rotate` `rotate_by` `rotate_revolutions` `home_rotation`。
|
||
|
||
```bash
|
||
ros2 service call /dual_gripper_driver/left/execute arm_msgs/srv/GripperExecute \
|
||
"{command: {command: 'open', wait_complete: true, timeout: 10.0}}"
|
||
ros2 service call /dual_gripper_driver/right/execute arm_msgs/srv/GripperExecute \
|
||
"{command: {command: 'rotate', position: 90.0, wait_complete: true, timeout: 10.0}}"
|
||
```
|
||
|
||
USB 未插齐时节点仍可起来(`allow_offline:=true`),对应侧 `status.error_msg` 会写连接失败。
|
||
|
||
用户需在 `dialout`:`sudo usermod -aG dialout $USER`。
|