diff --git a/firmware/controllers/actuators/electronic_throttle.cpp b/firmware/controllers/actuators/electronic_throttle.cpp index a40ae69143..fbb1bdab0b 100644 --- a/firmware/controllers/actuators/electronic_throttle.cpp +++ b/firmware/controllers/actuators/electronic_throttle.cpp @@ -624,9 +624,9 @@ expected EtbController::getOutput() { if (!output) { return output; } - etbDutyAverage = m_dutyAverage.average(output.Value); + etbDutyAverage = m_dutyAverage.average(absF(output.Value)); - etbDutyRateOfChange = m_dutyRocAverage.average(output.Value - prevOutput); + etbDutyRateOfChange = m_dutyRocAverage.average(absF(output.Value - prevOutput)); prevOutput = output.Value; return output; } diff --git a/unit_tests/tests/actuators/test_etb_integrated.cpp b/unit_tests/tests/actuators/test_etb_integrated.cpp index 7ec1430999..18b0b29c35 100644 --- a/unit_tests/tests/actuators/test_etb_integrated.cpp +++ b/unit_tests/tests/actuators/test_etb_integrated.cpp @@ -35,17 +35,16 @@ TEST(etb, integrated) { Sensor::setMockValue(SensorType::AcceleratorPedal, 10, true); etb->update(); - ASSERT_NEAR(etb->etbDutyAverage, -9.89286, EPS3D); - ASSERT_NEAR(etb->etbDutyRateOfChange, -70.074, EPS3D); + ASSERT_NEAR(etb->etbDutyAverage, 70.0741, EPS3D); + ASSERT_NEAR(etb->etbDutyRateOfChange, 130.2554, EPS3D); float destination; int offset = ELECTRONIC_THROTTLE_BASE_ADDRESS + offsetof(electronic_throttle_s, etbDutyRateOfChange); copyRange((uint8_t*)&destination, getLiveDataFragments(), offset, sizeof(destination)); - ASSERT_NEAR(destination, -70.074, EPS3D); + ASSERT_NEAR(destination, 130.2554, EPS3D); } - TEST(etb, integratedTpsJitter) { EngineTestHelper eth(TEST_ENGINE); // we have a destructor so cannot move EngineTestHelper into utility method EtbController *etb = initEtbIntegratedTest();