From f037d2216aa343d4573cd56b32300c378bc61a60 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 30 Aug 2024 18:40:32 -0700 Subject: [PATCH] joystickd: non-linear response function --- tools/joystick/joystickd.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/joystick/joystickd.py b/tools/joystick/joystickd.py index 6b85be8777..aa32b6def3 100755 --- a/tools/joystick/joystickd.py +++ b/tools/joystick/joystickd.py @@ -10,6 +10,8 @@ from openpilot.common.numpy_fast import interp, clip from openpilot.common.params import Params from openpilot.tools.lib.kbhit import KBHit +JS_EXPO = 0.4 + class Keyboard: def __init__(self): @@ -67,6 +69,7 @@ class Joystick: self.min_axis_value[event[0]] = min(event[1], self.min_axis_value[event[0]]) norm = -interp(event[1], [self.min_axis_value[event[0]], self.max_axis_value[event[0]]], [-1., 1.]) + norm = JS_EXPO * norm ** 3 + (1 - JS_EXPO) * norm self.axes_values[event[0]] = norm if abs(norm) > 0.05 else 0. # center can be noisy, deadzone of 5% else: return False