feat: set right-B point gesture hold to one second
This commit is contained in:
@@ -43,8 +43,8 @@ TS1P 同构臂
|
||||
- 同构臂当前的一维手部开合量以机器人实测默认打开姿态为 0 端点,并按厂家 xTELE 的
|
||||
BrainCoRevo2 保守“常规”抓握姿态作为 1 端点映射到六电机;
|
||||
若 xTELE 后续直接输出六维归一化位置,会自动使用六维位置。
|
||||
- 右手指向手势:遥操已启动且灵巧手反馈健康时,连续长按右 `B` 3 秒开启;松开
|
||||
至少 `0.5 s` 后,再连续长按右 `B` 3 秒关闭。首次启动和每个新遥操会话都必须先
|
||||
- 右手指向手势:遥操已启动且灵巧手反馈健康时,连续长按右 `B` 1 秒开启;松开
|
||||
至少 `0.5 s` 后,再连续长按右 `B` 1 秒关闭。首次启动和每个新遥操会话都必须先
|
||||
稳定松开 B,保持同一次按压不会反复切换。计时未满、中途松开、输入畸形或反馈
|
||||
中断均不触发;计时期间冻结右手最后一条命令,左手和双臂仍照常跟随。
|
||||
- 指向只覆盖右手。目标采用工控机 xTELE `GestureController` 的 BrainCoRevo2 第 2 号
|
||||
|
||||
@@ -111,12 +111,12 @@ closed_normalized = [0.9, 0.5, 0.45, 0.52, 0.52, 0.45]
|
||||
|
||||
# Right B owns a robot-side, release-guarded pointing gesture while a teleop
|
||||
# session is armed. Both activation and deactivation require one continuous
|
||||
# 3-second hold, separated by at least 0.5 seconds of stable release. A new
|
||||
# 1-second hold, separated by at least 0.5 seconds of stable release. A new
|
||||
# session is always release-locked. The pose is xTELE GestureController's
|
||||
# BrainCoRevo2 gesture 2 ("single index finger"), state 0, in motor order:
|
||||
# thumb bend, thumb rotation, index, middle, ring, little.
|
||||
right_b_point_gesture_enabled = true
|
||||
right_b_point_gesture_hold_seconds = 3.0
|
||||
right_b_point_gesture_hold_seconds = 1.0
|
||||
right_b_point_gesture_release_seconds = 0.5
|
||||
right_b_point_pose_normalized = [0.2, 0.688, 0.0, 0.98, 0.98, 0.98]
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ POINT_POSE = [0.2, 0.688, 0.0, 0.98, 0.98, 0.98]
|
||||
|
||||
class GestureToggleTest(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.gesture = GestureToggle(hold_seconds=3.0, release_seconds=0.5)
|
||||
self.gesture = GestureToggle(hold_seconds=1.0, release_seconds=0.5)
|
||||
self.gesture.new_session()
|
||||
|
||||
def stable_release(self, started_at: float) -> float:
|
||||
@@ -44,7 +44,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
self.assertFalse(self.gesture.active)
|
||||
self.assertTrue(self.gesture.freeze_right_hand)
|
||||
|
||||
def test_continuous_three_second_holds_toggle_once_each(self) -> None:
|
||||
def test_continuous_one_second_holds_toggle_once_each(self) -> None:
|
||||
released_at = self.stable_release(0.0)
|
||||
self.assertFalse(
|
||||
self.gesture.update(
|
||||
@@ -56,7 +56,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
)
|
||||
self.assertFalse(
|
||||
self.gesture.update(
|
||||
released_at + 3.0,
|
||||
released_at + 1.0,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=True,
|
||||
@@ -64,7 +64,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
)
|
||||
self.assertTrue(
|
||||
self.gesture.update(
|
||||
released_at + 3.01,
|
||||
released_at + 1.01,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=True,
|
||||
@@ -93,7 +93,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
)
|
||||
self.assertTrue(
|
||||
self.gesture.update(
|
||||
second_release + 3.02,
|
||||
second_release + 1.02,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=True,
|
||||
@@ -115,7 +115,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
self.assertEqual(self.gesture.state, "holding_start")
|
||||
|
||||
self.gesture.update(
|
||||
released_at + 2.0,
|
||||
released_at + 0.8,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=False,
|
||||
@@ -124,14 +124,14 @@ class GestureToggleTest(unittest.TestCase):
|
||||
self.assertTrue(self.gesture.require_release)
|
||||
self.assertTrue(self.gesture.freeze_right_hand)
|
||||
self.gesture.update(
|
||||
released_at + 2.49,
|
||||
released_at + 1.29,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=False,
|
||||
)
|
||||
self.assertTrue(self.gesture.require_release)
|
||||
self.gesture.update(
|
||||
released_at + 2.5,
|
||||
released_at + 1.3,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=False,
|
||||
@@ -148,7 +148,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
pressed=True,
|
||||
)
|
||||
self.gesture.update(
|
||||
released_at + 2.99,
|
||||
released_at + 0.99,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=None,
|
||||
@@ -156,7 +156,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
self.assertTrue(self.gesture.require_release)
|
||||
self.assertIsNone(self.gesture.hold_started_at)
|
||||
|
||||
released_at = self.stable_release(released_at + 3.0)
|
||||
released_at = self.stable_release(released_at + 1.0)
|
||||
self.gesture.update(
|
||||
released_at + 0.01,
|
||||
armed=True,
|
||||
@@ -164,7 +164,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
pressed=True,
|
||||
)
|
||||
self.gesture.update(
|
||||
released_at + 2.99,
|
||||
released_at + 0.99,
|
||||
armed=True,
|
||||
input_healthy=False,
|
||||
pressed=True,
|
||||
@@ -183,14 +183,14 @@ class GestureToggleTest(unittest.TestCase):
|
||||
)
|
||||
self.assertTrue(
|
||||
self.gesture.update(
|
||||
released_at + 3.02,
|
||||
released_at + 1.02,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=True,
|
||||
)
|
||||
)
|
||||
self.gesture.update(
|
||||
released_at + 3.03,
|
||||
released_at + 1.03,
|
||||
armed=True,
|
||||
input_healthy=False,
|
||||
pressed=True,
|
||||
@@ -207,7 +207,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
pressed=True,
|
||||
)
|
||||
self.gesture.update(
|
||||
released_at + 3.02,
|
||||
released_at + 1.02,
|
||||
armed=True,
|
||||
input_healthy=True,
|
||||
pressed=True,
|
||||
@@ -215,7 +215,7 @@ class GestureToggleTest(unittest.TestCase):
|
||||
self.assertTrue(self.gesture.active)
|
||||
self.assertFalse(
|
||||
self.gesture.update(
|
||||
released_at + 3.03,
|
||||
released_at + 1.03,
|
||||
armed=False,
|
||||
input_healthy=True,
|
||||
pressed=True,
|
||||
|
||||
@@ -406,7 +406,7 @@ class LocalTeleopBridge(Node):
|
||||
)
|
||||
self.right_point_gesture = GestureToggle(
|
||||
hold_seconds=float(
|
||||
self.hands_cfg.get("right_b_point_gesture_hold_seconds", 3.0)
|
||||
self.hands_cfg.get("right_b_point_gesture_hold_seconds", 1.0)
|
||||
),
|
||||
release_seconds=float(
|
||||
self.hands_cfg.get("right_b_point_gesture_release_seconds", 0.5)
|
||||
|
||||
Reference in New Issue
Block a user