# Gripper Control 02 夹爪02是新的展示程序,和原来的定时开合逻辑分开。它不是定时循环开合;程序只是常驻监听单侧触发,每次触发后执行一次“闭合夹住 -> 监测变化 -> 直接张开”的流程。 ## 展示流程 1. 程序启动后,夹爪先张开。 2. 程序等待任意一侧触觉传感器感受到法向力或切向力;进入等待后会先记录张开时的安静参考值。 3. 展示时,把物体从某个侧边扫一下,触发单侧力变化。 4. 触发后夹爪开始闭合,你把物体移动到中间。 5. 闭合过程中检测到物体后,切到低力并保持当前位置。 6. 像 01 一样进入 `gripping`,慢慢加力到 `HOLD_FORCE`。 7. 进入 `hold_check` 后记录夹持参考力。 8. 后续法向力或切向力变化超过阈值,夹爪直接张开到 `OPEN_POS`。 9. 张开后进入 `open_recover`,保持张开并等待传感器力清空。 10. 法向和切向读数都低于恢复阈值并稳定后,才回到 `open_wait` 等待下一次单侧扫过触发。 ## 运行 从项目根目录运行: ```powershell conda activate py311 python -m gripper_control_02.main ``` 只看逻辑、不打开串口: ```powershell python -m gripper_control_02.main --dry-run ``` 默认配置文件: ```text gripper_control_02\config\gripper_demo_02.py ``` ## 关键配置 - `TRIGGER_NORMAL_FORCE`: 单侧法向力触发阈值。 - `TRIGGER_SHEAR_FORCE`: 单侧切向力触发阈值。 - `TRIGGER_NORMAL_CHANGE`: 单侧法向力相对张开参考值的变化触发阈值。 - `TRIGGER_SHEAR_CHANGE`: 单侧切向力相对张开参考值的变化触发阈值。 - `GRIP_NORMAL_FORCE`: 夹住时左右接触阈值。 - `GRIP_REQUIRES_BOTH`: 是否必须左右都接触才算夹住。 - `GRIP_START_FORCE`: 检测到物体后先切到的低力。 - `FORCE_RAMP_STEP`: 慢慢加力时每次增加多少 force_pct。 - `FORCE_RAMP_INTERVAL`: 慢慢加力时两次加力的间隔。 - `HOLD_FORCE`: 慢慢加力到这个值后进入 `hold_check`。 - `GRIP_SETTLE_SECONDS`: 夹住后等待稳定多久再记录参考力。 - `RELEASE_NORMAL_CHANGE`: 夹住后法向力变化超过它就松开。 - `RELEASE_SHEAR_CHANGE`: 夹住后切向力变化超过它就松开。 - `RELEASE_CONTACT_LOST_NORMAL_FORCE`: 夹住后判断接触丢失的最大法向力。 - `RELEASE_CONTACT_LOST_SHEAR_FORCE`: 夹住后判断接触丢失的最大切向力。 - `RELEASE_CONTACT_LOST_SECONDS`: 接触丢失持续多久后松开。 - `REARM_SECONDS`: 张开后最短等待时间,防止刚松开马上又误触发。 - `RECOVER_NORMAL_FORCE`: 张开恢复时允许重新触发的最大法向残余力。 - `RECOVER_SHEAR_FORCE`: 张开恢复时允许重新触发的最大切向残余力。 - `RECOVER_STABLE_SECONDS`: 力清空后需要连续稳定多久,才重新等待触发。 ## 日志字段 - `L/R`: 左右法向力,单位 N。 - `maxN`: 左右法向力最大值,单位 N。 - `shear`: 左右切向力最大值,单位 N。 - `trigger`: 是否满足单侧触发条件。 - `grip_contact`: 是否满足夹住接触条件。 - `dN`: 夹住后当前法向力相对参考值的最大变化,单位 N。 - `dShear`: 夹住后当前切向力相对参考值的变化,单位 N。 - `state`: 当前状态。 - `hold_pos`: 夹住后保持的位置。 - `force_pct`: 当前夹爪目标力百分比。 - `action`: 当前动作。 ## 状态说明 - `open_wait`: 夹爪张开,等待任意单侧触发。 - `closing`: 单侧触发后正在闭合,等待检测到物体。 - `gripping`: 检测到物体后低力保持当前位置,并慢慢加力。 - `hold_check`: 已夹住并记录参考力,监测法向/切向变化;变化超过阈值会直接张开。 - `open_recover`: 已经张开到初始位置,正在等待法向/切向残余力清空;这个状态不会闭合夹爪。 ## 常见动作说明 - `open-wait-armed`: 已经记录张开状态参考值,下一次单侧力变化可以触发闭合。 - `force-change-release-open`: 检测到夹住后的法向或切向变化,已经发出张开命令。 - `contact-lost-release-open`: 夹住后接触力消失了一小段时间,已经发出张开命令。 - `open-recover-wait-force-clear`: 夹爪保持张开,但传感器还有残余力,不允许重新闭合。 - `open-recover-stabilizing`: 力已经低于恢复阈值,正在等待稳定时间。 - `open-ready`: 力已经清空并稳定,重新进入等待下一次扫过触发。