in gym_hil/wrappers/intervention_utils.py [0:0]
def get_deltas(self):
"""Get the current movement deltas from gamepad state."""
import pygame
try:
# Get axis mappings from config
axes = self.controller_config.get("axes", {})
axis_inversion = self.controller_config.get("axis_inversion", {})
# Get axis indices from config (with defaults if not found)
left_x_axis = axes.get("left_x", 0)
left_y_axis = axes.get("left_y", 1)
right_y_axis = axes.get("right_y", 3)
# Get axis inversion settings (with defaults if not found)
invert_left_x = axis_inversion.get("left_x", False)
invert_left_y = axis_inversion.get("left_y", True)
invert_right_y = axis_inversion.get("right_y", True)
# Read joystick axes
x_input = self.joystick.get_axis(left_x_axis) # Left/Right
y_input = self.joystick.get_axis(left_y_axis) # Up/Down
z_input = self.joystick.get_axis(right_y_axis) # Up/Down for Z
# Apply deadzone to avoid drift
x_input = 0 if abs(x_input) < self.deadzone else x_input
y_input = 0 if abs(y_input) < self.deadzone else y_input
z_input = 0 if abs(z_input) < self.deadzone else z_input
# Apply inversion if configured
if invert_left_x:
x_input = -x_input
if invert_left_y:
y_input = -y_input
if invert_right_y:
z_input = -z_input
# Calculate deltas
delta_x = y_input * self.y_step_size # Forward/backward
delta_y = x_input * self.x_step_size # Left/right
delta_z = z_input * self.z_step_size # Up/down
return delta_x, delta_y, delta_z
except pygame.error:
print("Error reading gamepad. Is it still connected?")
return 0.0, 0.0, 0.0