private F12019NewTelemetryValue BumpRight() { // Same as BumpLeft just using the other tyre (and needing a separate low pass filter) LowpassFilter lp = (LowpassFilter)session.Get("BumpRightLowPass", new LowpassFilter()); float data = (float)Math.Log(Math.Abs(telemetryData.suspAccelFR)); data = Math.Abs((float)lp.firstOrder_lowpassFilter(data, 0.3)); return(new F12019NewTelemetryValue("BumpRight", data)); }
private F12019NewTelemetryValue BumpLeft() { // Attempting to derive a telemetry key for going over curbs, gravel or grass one sided. // The game gives use suspension acceleration per wheel. So using that here with some // low pass filtering because the value change quite erratically LowpassFilter lp = (LowpassFilter)session.Get("BumpLeftLowPass", new LowpassFilter()); float data = (float)Math.Log(Math.Abs(telemetryData.suspAccelFL)); data = Math.Abs((float)lp.firstOrder_lowpassFilter(data, 0.3)); return(new F12019NewTelemetryValue("BumpLeft", -data)); }
private F12019NewTelemetryValue TractionLoss() { // The game has no traction loss telemetry key. So trying to derive a key from wheel slip rate of the // rears and the rotation acceleration. If both are high we likely are losing traction and are spinning // (or are starting to) // The value of rotation acceleration is quite erratic, unfortunately. Also it is not, as one might expect // measured in g (not sure what it is because the values go into the tens of thousands). So trying to // get a reasonable value by a lot of low pass filtering and by using log(10). LowpassFilter lp = (LowpassFilter)session.Get("TractionLossLowPass", new LowpassFilter()); LowpassFilter lp2 = (LowpassFilter)session.Get("TractionLossLowPass2", new LowpassFilter()); float turn = (float)lp.thirdOrder_lowpassFilter(telemetryData.angularAccelerationY, 0.3); // 'turn' gives us the rotation direction but we are going to pass it through abs and log and would loose the info // so storing it here int sign = 1; if (turn < 0) { sign = -1; } float data = sign * (float)Math.Log(Math.Abs(turn), 10) * Math.Abs(telemetryData.wheelSlipRR + telemetryData.wheelSlipRL); return(new F12019NewTelemetryValue("TractionLoss", (float)lp2.thirdOrder_lowpassFilter(data, 0.3))); }