验收:test_listed_arms 与 test_camera_preview 共 20 项通过。D435 1280×720 发布约 29 帧/秒。 Co-authored-by: Cursor <cursoragent@cursor.com>
3.2 KiB
大寰夹爪(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 ~/ros2/scripts/run_gripper.sh --arm 89 --cli probe
bash ~/ros2/scripts/run_gripper.sh --arm 89 --cli init # 写 0xA5 回零;已经 initialized 也会再做一次
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[] 里已关)。
平行爪的 --cli 在驱动没跑时会先把节点拉起来,再把命令发到 /gripper/ctrl。auto_init 仍用这一臂在 site.yaml 里的值(现场 false,不写 0xA5,不回零)。串口被别的进程占着时,报的是占用。
ROS 节点
单爪:
bash ~/ros2/scripts/run_gripper.sh --arm 89 # /gripper/open /gripper/close
bash ~/ros2/scripts/run_gripper.sh --arm 91 # dual_gripper 仅 right
双爪同时:
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。
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。