v 1.0
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 2.2 MiB |
@@ -14,8 +14,8 @@
|
|||||||
8. 自适应补力停止并稳定 `RELEASE_ARM_DELAY_SECONDS` 后,重新记录释放参考力,才开始检测人取物松开。
|
8. 自适应补力停止并稳定 `RELEASE_ARM_DELAY_SECONDS` 后,重新记录释放参考力,才开始检测人取物松开。
|
||||||
9. 后续法向力或切向力变化超过阈值,夹爪直接张开到 `OPEN_POS`。
|
9. 后续法向力或切向力变化超过阈值,夹爪直接张开到 `OPEN_POS`。
|
||||||
10. 张开后进入 `open_recover`,保持张开并等待恢复条件。
|
10. 张开后进入 `open_recover`,保持张开并等待恢复条件。
|
||||||
11. 夹爪回到 `OPEN_POS` 初始点位,或法向/切向读数都低于恢复阈值并稳定后,回到 `open_wait`。
|
11. 夹爪回到 `OPEN_POS` 初始点位,或法向/切向读数都低于恢复阈值并稳定后,继续休息至少 `REARM_SECONDS`。
|
||||||
12. 回到 `open_wait` 后,如果是因为夹爪已回到 `OPEN_POS`,会直接重新武装;程序只响应下一次新的触发上升沿,残余力保持不变时不会自动闭合。
|
12. 休息结束后才回到 `open_wait` 并重新武装;休息期间不管有没有物体扫过,都不会闭合。
|
||||||
|
|
||||||
## 运行
|
## 运行
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ gripper_control_02\config\gripper_demo_02.py
|
|||||||
- `RELEASE_OPEN_SPEED`: 检测到松开后,张开到 `OPEN_POS` 使用的速度。
|
- `RELEASE_OPEN_SPEED`: 检测到松开后,张开到 `OPEN_POS` 使用的速度。
|
||||||
- `RELEASE_OPEN_ACCEL`: release 张开的加速度。
|
- `RELEASE_OPEN_ACCEL`: release 张开的加速度。
|
||||||
- `RELEASE_OPEN_DECEL`: release 张开的减速度。
|
- `RELEASE_OPEN_DECEL`: release 张开的减速度。
|
||||||
- `REARM_SECONDS`: 张开后最短等待时间,防止刚松开马上又误触发。
|
- `REARM_SECONDS`: 夹爪回到 `OPEN_POS` 或恢复条件成立后,至少休息多久才重新等待触发;休息期间扫过也不会闭合。
|
||||||
- `RECOVER_NORMAL_FORCE`: 张开恢复时允许重新触发的最大法向残余力。
|
- `RECOVER_NORMAL_FORCE`: 张开恢复时允许重新触发的最大法向残余力。
|
||||||
- `RECOVER_SHEAR_FORCE`: 张开恢复时允许重新触发的最大切向残余力。
|
- `RECOVER_SHEAR_FORCE`: 张开恢复时允许重新触发的最大切向残余力。
|
||||||
- `RECOVER_STABLE_SECONDS`: 力清空后需要连续稳定多久,才重新等待触发。
|
- `RECOVER_STABLE_SECONDS`: 力清空后需要连续稳定多久,才重新等待触发。
|
||||||
@@ -134,11 +134,11 @@ gripper_control_02\config\gripper_demo_02.py
|
|||||||
- `release-arm-delay`: 补力刚停止,正在等待力稳定,暂时不触发松开。
|
- `release-arm-delay`: 补力刚停止,正在等待力稳定,暂时不触发松开。
|
||||||
- `release-reference-armed`: 已重新记录释放参考力,后续法向/切向变化会触发张开。
|
- `release-reference-armed`: 已重新记录释放参考力,后续法向/切向变化会触发张开。
|
||||||
- `open-recover-position`: 夹爪当前位置已经接近 `OPEN_POS`,正在等待到位稳定。
|
- `open-recover-position`: 夹爪当前位置已经接近 `OPEN_POS`,正在等待到位稳定。
|
||||||
- `open-ready-position`: 夹爪已经回到初始点位,重新进入等待下一次扫过触发;此时会直接武装,但残余触发保持不变不会自动闭合。
|
- `open-ready-position`: 夹爪已经回到初始点位,并且休息时间结束,重新进入等待下一次扫过触发;此时会直接武装,但残余触发保持不变不会自动闭合。
|
||||||
- `open-wait-clear-trigger`: 已经回到等待状态,但当前力还超过触发阈值,暂时不会闭合。
|
- `open-wait-clear-trigger`: 已经回到等待状态,但当前力还超过触发阈值,暂时不会闭合。
|
||||||
- `open-wait-trigger-clearing`: 触发力已经低于阈值,正在等待清零稳定时间。
|
- `open-wait-trigger-clearing`: 触发力已经低于阈值,正在等待清零稳定时间。
|
||||||
- `open-wait-armed`: 触发已经清掉并稳定,下一次扫过可以闭合。
|
- `open-wait-armed`: 触发已经清掉并稳定,下一次扫过可以闭合。
|
||||||
- `open-wait-trigger-held`: 已经武装,但当前触发不是新上升沿,等待力先降下去再下一次扫过。
|
- `open-wait-trigger-held`: 已经武装,但当前触发不是新上升沿,等待力先降下去再下一次扫过。
|
||||||
- `open-recover-wait-force-clear`: 夹爪保持张开,但传感器还有残余力,不允许重新闭合。
|
- `open-recover-wait-force-clear`: 夹爪保持张开,但传感器还有残余力,不允许重新闭合。
|
||||||
- `open-recover-stabilizing`: 力已经低于恢复阈值,正在等待稳定时间。
|
- `open-recover-stabilizing`: 力已经低于恢复阈值,正在等待稳定和休息时间结束。
|
||||||
- `open-ready`: 力已经清空并稳定,重新进入等待下一次扫过触发。
|
- `open-ready`: 力已经清空并稳定,并且休息时间结束,重新进入等待下一次扫过触发。
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -54,7 +54,7 @@ CLOSE_FORCE = 15 # 单侧触发后闭合时使用的小力。
|
|||||||
GRIP_START_FORCE = 10 # 闭合检测到物体后,先切到这个低力保持。
|
GRIP_START_FORCE = 10 # 闭合检测到物体后,先切到这个低力保持。
|
||||||
HOLD_FORCE = 15 # 基础夹持力;轻物体默认慢慢加到这个力。
|
HOLD_FORCE = 15 # 基础夹持力;轻物体默认慢慢加到这个力。
|
||||||
FORCE_MIN = 10
|
FORCE_MIN = 10
|
||||||
FORCE_MAX = 60 # 允许自适应加力的最大总上限;重物夹不住时可以适当加大。
|
FORCE_MAX = 80 # 允许自适应加力的最大总上限;重物夹不住时可以适当加大。
|
||||||
|
|
||||||
|
|
||||||
# 控制循环频率。越高检测释放越快。
|
# 控制循环频率。越高检测释放越快。
|
||||||
@@ -101,7 +101,8 @@ RELEASE_ARM_DELAY_SECONDS = 0.8 # 自适应加力停止后,等待这么久
|
|||||||
RELEASE_NORMAL_CHANGE = 0.2 # 左/右法向力相对夹住参考值的变化阈值,单位 N。
|
RELEASE_NORMAL_CHANGE = 0.2 # 左/右法向力相对夹住参考值的变化阈值,单位 N。
|
||||||
RELEASE_SHEAR_CHANGE = 0.2 # 左/右切向力相对夹住参考值的变化阈值,单位 N。
|
RELEASE_SHEAR_CHANGE = 0.2 # 左/右切向力相对夹住参考值的变化阈值,单位 N。
|
||||||
|
|
||||||
# 松开后至少等待多久重新进入等待触发,避免刚张开时马上再次触发。
|
# 张开到位或恢复条件成立后,至少休息多久才重新进入等待触发。
|
||||||
|
# 休息期间即使有物体扫过,也不会触发闭合。
|
||||||
REARM_SECONDS = 0.5
|
REARM_SECONDS = 0.5
|
||||||
|
|
||||||
# 松开/超时张开后,必须等传感器读数低于这些阈值并稳定,才允许下一次触发。
|
# 松开/超时张开后,必须等传感器读数低于这些阈值并稳定,才允许下一次触发。
|
||||||
|
|||||||
@@ -342,8 +342,10 @@ class SideTriggerGripController:
|
|||||||
action = f"open-recover-position pos={current_pos}"
|
action = f"open-recover-position pos={current_pos}"
|
||||||
elif (
|
elif (
|
||||||
now - recover_position_since
|
now - recover_position_since
|
||||||
>= config.open_position_stable_seconds
|
>= max(
|
||||||
and now - state_start >= config.rearm_seconds
|
config.open_position_stable_seconds,
|
||||||
|
config.rearm_seconds,
|
||||||
|
)
|
||||||
):
|
):
|
||||||
state = "open_wait"
|
state = "open_wait"
|
||||||
state_start = now
|
state_start = now
|
||||||
@@ -364,8 +366,8 @@ class SideTriggerGripController:
|
|||||||
recover_quiet_since = now
|
recover_quiet_since = now
|
||||||
action = "open-recover-quiet"
|
action = "open-recover-quiet"
|
||||||
elif (
|
elif (
|
||||||
now - recover_quiet_since >= config.recover_stable_seconds
|
now - recover_quiet_since
|
||||||
and now - state_start >= config.rearm_seconds
|
>= max(config.recover_stable_seconds, config.rearm_seconds)
|
||||||
):
|
):
|
||||||
state = "open_wait"
|
state = "open_wait"
|
||||||
state_start = now
|
state_start = now
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ class GripperDemo02Viewer(QMainWindow):
|
|||||||
self.force_pct_box = MetricBox("force_pct", "--")
|
self.force_pct_box = MetricBox("force_pct", "--")
|
||||||
self.target_force_box = MetricBox("目标力", "--")
|
self.target_force_box = MetricBox("目标力", "--")
|
||||||
self.speed_box = MetricBox("速度", "--")
|
self.speed_box = MetricBox("速度", "--")
|
||||||
self.trigger_box = MetricBox("触发/武装", "--")
|
self.trigger_box = MetricBox("是否触发/系统是否允许触发", "--")
|
||||||
self.contact_box = MetricBox("接触", "--")
|
self.contact_box = MetricBox("接触", "--")
|
||||||
self.release_box = MetricBox("释放检测", "--")
|
self.release_box = MetricBox("释放检测", "--")
|
||||||
boxes = [
|
boxes = [
|
||||||
|
|||||||
Reference in New Issue
Block a user