mirror of
https://github.com/huggingface/lerobot.git
synced 2026-07-23 17:56:07 +00:00
fix(teleop): keyboard EE teleop not registering special keys and losing intervention state
Fixes #2345 Co-authored-by: jpizarrom <jpizarrom@gmail.com>
This commit is contained in:
@@ -104,11 +104,14 @@ class KeyboardTeleop(Teleoperator):
|
|||||||
|
|
||||||
def _on_press(self, key):
|
def _on_press(self, key):
|
||||||
if hasattr(key, "char"):
|
if hasattr(key, "char"):
|
||||||
self.event_queue.put((key.char, True))
|
key = key.char
|
||||||
|
self.event_queue.put((key, True))
|
||||||
|
|
||||||
def _on_release(self, key):
|
def _on_release(self, key):
|
||||||
if hasattr(key, "char"):
|
if hasattr(key, "char"):
|
||||||
self.event_queue.put((key.char, False))
|
key = key.char
|
||||||
|
self.event_queue.put((key, False))
|
||||||
|
|
||||||
if key == keyboard.Key.esc:
|
if key == keyboard.Key.esc:
|
||||||
logging.info("ESC pressed, disconnecting.")
|
logging.info("ESC pressed, disconnecting.")
|
||||||
self.disconnect()
|
self.disconnect()
|
||||||
@@ -204,8 +207,6 @@ class KeyboardEndEffectorTeleop(KeyboardTeleop):
|
|||||||
# this is useful for retrieving other events like interventions for RL, episode success, etc.
|
# this is useful for retrieving other events like interventions for RL, episode success, etc.
|
||||||
self.misc_keys_queue.put(key)
|
self.misc_keys_queue.put(key)
|
||||||
|
|
||||||
self.current_pressed.clear()
|
|
||||||
|
|
||||||
action_dict = {
|
action_dict = {
|
||||||
"delta_x": delta_x,
|
"delta_x": delta_x,
|
||||||
"delta_y": delta_y,
|
"delta_y": delta_y,
|
||||||
@@ -256,6 +257,8 @@ class KeyboardEndEffectorTeleop(KeyboardTeleop):
|
|||||||
]
|
]
|
||||||
is_intervention = any(self.current_pressed.get(key, False) for key in movement_keys)
|
is_intervention = any(self.current_pressed.get(key, False) for key in movement_keys)
|
||||||
|
|
||||||
|
self.current_pressed.clear()
|
||||||
|
|
||||||
# Check for episode control commands from misc_keys_queue
|
# Check for episode control commands from misc_keys_queue
|
||||||
terminate_episode = False
|
terminate_episode = False
|
||||||
success = False
|
success = False
|
||||||
|
|||||||
Reference in New Issue
Block a user