diff --git a/common/numpy_fast.py b/common/numpy_fast.py new file mode 100644 index 0000000000..878c0005c8 --- /dev/null +++ b/common/numpy_fast.py @@ -0,0 +1,19 @@ +def clip(x, lo, hi): + return max(lo, min(hi, x)) + +def interp(x, xp, fp): + N = len(xp) + + def get_interp(xv): + hi = 0 + while hi < N and xv > xp[hi]: + hi += 1 + low = hi - 1 + return fp[-1] if hi == N and xv > xp[low] else ( + fp[0] if hi == 0 else + (xv - xp[low]) * (fp[hi] - fp[low]) / (xp[hi] - xp[low]) + fp[low]) + + return [get_interp(v) for v in x] if hasattr(x, '__iter__') else get_interp(x) + +def mean(x): + return sum(x) / len(x) diff --git a/opendbc_repo/opendbc/car/bmw/carcontroller.py b/opendbc_repo/opendbc/car/bmw/carcontroller.py index 95f4cab22f..a8ab0992b4 100644 --- a/opendbc_repo/opendbc/car/bmw/carcontroller.py +++ b/opendbc_repo/opendbc/car/bmw/carcontroller.py @@ -6,7 +6,7 @@ from opendbc.car.interfaces import CarControllerBase from opendbc.can.packer import CANPacker from opendbc.car.common.conversions import Conversions as CV -from common import numpy_fast as np +import common.numpy_fast as np VisualAlert = car_capnp.CarControl.HUDControl.VisualAlert