From 72997bb636872bec5a0fb4c42d6a001596dcac1e Mon Sep 17 00:00:00 2001 From: Davide Basso <davide.basso@skywarder.eu> Date: Wed, 7 Feb 2024 21:36:56 +0100 Subject: [PATCH] [Units] remove Microseconds for timestamp --- src/shared/sensors/BMX160/BMX160.cpp | 13 ++++++------- src/shared/sensors/BMX160/BMX160Data.h | 8 ++++---- src/shared/sensors/BMX160/BMX160WithCorrection.cpp | 4 ++-- .../sensors/BMX160/BMX160WithCorrectionData.h | 6 +++--- src/shared/sensors/H3LIS331DL/H3LIS331DLData.h | 9 ++++----- src/shared/sensors/LIS331HH/LIS331HH.cpp | 2 +- src/shared/sensors/LIS331HH/LIS331HHData.h | 5 ++--- src/shared/sensors/LIS3DSH/LIS3DSH.h | 2 +- src/shared/sensors/LIS3DSH/LIS3DSHData.h | 12 ++++++------ src/shared/sensors/LSM6DSRX/LSM6DSRX.cpp | 8 ++++---- src/shared/sensors/LSM6DSRX/LSM6DSRXData.h | 8 ++++---- src/shared/sensors/MPU9250/MPU9250.cpp | 2 +- src/shared/sensors/MPU9250/MPU9250Data.h | 8 ++++---- src/shared/sensors/SensorData.h | 12 +++++------- src/shared/sensors/VN100/VN100.cpp | 2 +- src/shared/sensors/VN100/VN100Data.h | 8 ++++---- src/tests/sensors/test-lis3dsh.cpp | 2 +- 17 files changed, 53 insertions(+), 58 deletions(-) diff --git a/src/shared/sensors/BMX160/BMX160.cpp b/src/shared/sensors/BMX160/BMX160.cpp index 2fdd343e6..612e02f79 100644 --- a/src/shared/sensors/BMX160/BMX160.cpp +++ b/src/shared/sensors/BMX160/BMX160.cpp @@ -34,7 +34,7 @@ BMX160::BMX160(SPIBusInterface& bus, miosix::GpioPin cs, BMX160Config config) spiSlave.config.clockDivider = SPI::ClockDivider::DIV_32; oldMag.magneticFieldTimestamp = 0.0f; oldGyr.angularSpeedTimestamp = 0.0f; - oldAcc.accelerationTimestamp = Microsecond(0); + oldAcc.accelerationTimestamp = 0; } BMX160::BMX160(SPIBusInterface& bus, miosix::GpioPin cs, BMX160Config config, @@ -43,7 +43,7 @@ BMX160::BMX160(SPIBusInterface& bus, miosix::GpioPin cs, BMX160Config config, { oldMag.magneticFieldTimestamp = 0.0f; oldGyr.angularSpeedTimestamp = 0.0f; - oldAcc.accelerationTimestamp = Microsecond(0); + oldAcc.accelerationTimestamp = 0; } bool BMX160::init() @@ -609,8 +609,7 @@ AccelerometerData BMX160::buildAccData(BMX160Defs::AccRaw data, using namespace Constants; return AccelerometerData{ - Microsecond(timestamp), - MeterPerSecondSquared(data.x * accSensibility * g), + timestamp, MeterPerSecondSquared(data.x * accSensibility * g), MeterPerSecondSquared(data.y * accSensibility * g), MeterPerSecondSquared(data.z * accSensibility * g)}; } @@ -736,8 +735,8 @@ void BMX160::readFifo(bool headerless) oldMag.magneticFieldTimestamp -= interruptTimestampDelta; if (oldGyr.angularSpeedTimestamp != 0) oldGyr.angularSpeedTimestamp -= interruptTimestampDelta; - if (oldAcc.accelerationTimestamp.value() != 0) - oldAcc.accelerationTimestamp -= Microsecond(interruptTimestampDelta); + if (oldAcc.accelerationTimestamp != 0) + oldAcc.accelerationTimestamp -= interruptTimestampDelta; // Calculate time offset uint64_t timeOffset = std::min({ @@ -866,7 +865,7 @@ void BMX160::readFifo(bool headerless) for (int i = 0; i < lastFifoLevel; i++) { lastFifo[i].accelerationTimestamp += - Microsecond(lastInterruptTimestamp - watermarkTimestamp); + lastInterruptTimestamp - watermarkTimestamp; lastFifo[i].angularSpeedTimestamp += lastInterruptTimestamp - watermarkTimestamp; lastFifo[i].magneticFieldTimestamp += diff --git a/src/shared/sensors/BMX160/BMX160Data.h b/src/shared/sensors/BMX160/BMX160Data.h index be594c562..62fd29c10 100644 --- a/src/shared/sensors/BMX160/BMX160Data.h +++ b/src/shared/sensors/BMX160/BMX160Data.h @@ -32,7 +32,7 @@ struct BMX160Data : public AccelerometerData, public MagnetometerData { BMX160Data() - : AccelerometerData{Microsecond(0), MeterPerSecondSquared(0), + : AccelerometerData{0, MeterPerSecondSquared(0), MeterPerSecondSquared(0), MeterPerSecondSquared(0)}, GyroscopeData{0, 0.0, 0.0, 0.0}, MagnetometerData{0, 0.0, 0.0, 0.0} { @@ -53,9 +53,9 @@ struct BMX160Data : public AccelerometerData, void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "," << angularSpeedTimestamp << "," << angularSpeedX << "," + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "," + << angularSpeedTimestamp << "," << angularSpeedX << "," << angularSpeedY << "," << angularSpeedZ << "," << magneticFieldTimestamp << "," << magneticFieldX << "," << magneticFieldY << "," << magneticFieldZ << "\n"; diff --git a/src/shared/sensors/BMX160/BMX160WithCorrection.cpp b/src/shared/sensors/BMX160/BMX160WithCorrection.cpp index ba32d9897..ba68500bb 100644 --- a/src/shared/sensors/BMX160/BMX160WithCorrection.cpp +++ b/src/shared/sensors/BMX160/BMX160WithCorrection.cpp @@ -115,9 +115,9 @@ BMX160WithCorrectionData BMX160WithCorrection::sampleImpl() result.accelerationTimestamp = fifoElement.accelerationTimestamp; static_cast<AccelerometerData&>(result) << avgAccel; - result.magneticFieldTimestamp = fifoElement.accelerationTimestamp.value(); + result.magneticFieldTimestamp = fifoElement.accelerationTimestamp; static_cast<MagnetometerData&>(result) << avgMag; - result.angularSpeedTimestamp = fifoElement.accelerationTimestamp.value(); + result.angularSpeedTimestamp = fifoElement.accelerationTimestamp; static_cast<GyroscopeData&>(result) << (avgGyro - gyroscopeBias); if (calibrating) diff --git a/src/shared/sensors/BMX160/BMX160WithCorrectionData.h b/src/shared/sensors/BMX160/BMX160WithCorrectionData.h index ee95eddd2..0f5aaaa32 100644 --- a/src/shared/sensors/BMX160/BMX160WithCorrectionData.h +++ b/src/shared/sensors/BMX160/BMX160WithCorrectionData.h @@ -76,9 +76,9 @@ struct BMX160WithCorrectionData : public BMX160Data void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "," << angularSpeedTimestamp << "," << angularSpeedX << "," + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "," + << angularSpeedTimestamp << "," << angularSpeedX << "," << angularSpeedY << "," << angularSpeedZ << "," << magneticFieldTimestamp << "," << magneticFieldX << "," << magneticFieldY << "," << magneticFieldZ << "\n"; diff --git a/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h b/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h index 090649e47..6ab962a74 100644 --- a/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h +++ b/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h @@ -31,12 +31,12 @@ struct H3LIS331DLData : public AccelerometerData { H3LIS331DLData() - : AccelerometerData(Microsecond(0), MeterPerSecondSquared(0), + : AccelerometerData(0, MeterPerSecondSquared(0), MeterPerSecondSquared(0), MeterPerSecondSquared(0)){}; H3LIS331DLData(uint64_t ts, float aX, float aY, float aZ) - : AccelerometerData(Microsecond(0), MeterPerSecondSquared(aX), + : AccelerometerData(0, MeterPerSecondSquared(aX), MeterPerSecondSquared(aY), MeterPerSecondSquared(aZ)){}; @@ -49,9 +49,8 @@ struct H3LIS331DLData : public AccelerometerData void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "\n"; + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "\n"; } }; diff --git a/src/shared/sensors/LIS331HH/LIS331HH.cpp b/src/shared/sensors/LIS331HH/LIS331HH.cpp index 2af538bc7..d62da57d4 100644 --- a/src/shared/sensors/LIS331HH/LIS331HH.cpp +++ b/src/shared/sensors/LIS331HH/LIS331HH.cpp @@ -75,7 +75,7 @@ LIS331HHData LIS331HH::sampleImpl() int16_t val; LIS331HHData data; - data.accelerationTimestamp = Microsecond(TimestampTimer::getTimestamp()); + data.accelerationTimestamp = TimestampTimer::getTimestamp(); SPITransaction spi(slave); diff --git a/src/shared/sensors/LIS331HH/LIS331HHData.h b/src/shared/sensors/LIS331HH/LIS331HHData.h index ebf85ca3c..31bef1fb2 100644 --- a/src/shared/sensors/LIS331HH/LIS331HHData.h +++ b/src/shared/sensors/LIS331HH/LIS331HHData.h @@ -39,9 +39,8 @@ struct LIS331HHData : public AccelerometerData void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "\n"; + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "\n"; } }; diff --git a/src/shared/sensors/LIS3DSH/LIS3DSH.h b/src/shared/sensors/LIS3DSH/LIS3DSH.h index 9ae1c7674..aebb40fbd 100644 --- a/src/shared/sensors/LIS3DSH/LIS3DSH.h +++ b/src/shared/sensors/LIS3DSH/LIS3DSH.h @@ -365,7 +365,7 @@ private: { // bit 7 of status set to 1 (some data overwritten) accelData.accelerationTimestamp = - Microsecond(TimestampTimer::getTimestamp()); + TimestampTimer::getTimestamp(); // read acceleration on X int8_t accel_L = spi.readRegister(OUT_X_L); diff --git a/src/shared/sensors/LIS3DSH/LIS3DSHData.h b/src/shared/sensors/LIS3DSH/LIS3DSHData.h index e42b9b88b..f650cd2d3 100644 --- a/src/shared/sensors/LIS3DSH/LIS3DSHData.h +++ b/src/shared/sensors/LIS3DSH/LIS3DSHData.h @@ -32,15 +32,15 @@ using namespace Units::Time; struct LIS3DSHData : public AccelerometerData, public TemperatureData { LIS3DSHData() - : AccelerometerData{Microsecond(0), MeterPerSecondSquared(0), + : AccelerometerData{0, MeterPerSecondSquared(0), MeterPerSecondSquared(0), MeterPerSecondSquared(0)}, TemperatureData{0, 0.0} { } - LIS3DSHData(Microsecond t, MeterPerSecondSquared x, MeterPerSecondSquared y, + LIS3DSHData(uint64_t t, MeterPerSecondSquared x, MeterPerSecondSquared y, MeterPerSecondSquared z, float temp) - : AccelerometerData{t, x, y, z}, TemperatureData{t.value(), temp} + : AccelerometerData{t, x, y, z}, TemperatureData{t, temp} { } @@ -61,9 +61,9 @@ struct LIS3DSHData : public AccelerometerData, public TemperatureData void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "," << temperatureTimestamp << "," << temperature << "\n"; + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "," + << temperatureTimestamp << "," << temperature << "\n"; } }; diff --git a/src/shared/sensors/LSM6DSRX/LSM6DSRX.cpp b/src/shared/sensors/LSM6DSRX/LSM6DSRX.cpp index e98c87af4..6a64aba4a 100644 --- a/src/shared/sensors/LSM6DSRX/LSM6DSRX.cpp +++ b/src/shared/sensors/LSM6DSRX/LSM6DSRX.cpp @@ -624,7 +624,7 @@ uint16_t LSM6DSRX::combineHighLowBitsUnsigned(uint8_t low, uint8_t high) void LSM6DSRX::getAccelerometerData(LSM6DSRXData& data) { - data.accelerationTimestamp = Microsecond(TimestampTimer::getTimestamp()); + data.accelerationTimestamp = TimestampTimer::getTimestamp(); data.accelerationX = MeterPerSecondSquared( getAxisData(LSM6DSRXDefs::REG_OUTX_L_A, LSM6DSRXDefs::REG_OUTX_H_A, @@ -885,9 +885,9 @@ void LSM6DSRX::readFromFifo() // Set new data timestamps[timeslotTag].data.accelerationTimestamp = - Microsecond(convertTimestamp(static_cast<uint64_t>(t))); + convertTimestamp(static_cast<uint64_t>(t)); timestamps[timeslotTag].data.angularSpeedTimestamp = - timestamps[timeslotTag].data.accelerationTimestamp.value(); + timestamps[timeslotTag].data.accelerationTimestamp; timestamps[timeslotTag].accPresent = false; timestamps[timeslotTag].gyrPresent = false; @@ -912,7 +912,7 @@ void LSM6DSRX::pushIntoFifo(LSM6DSRXDefs::FifoTimeslotData& timeslot, // check if data can be pushed if ((fifoIdx > 0 && timeslot.data.accelerationTimestamp == lastFifo[fifoIdx - 1].accelerationTimestamp) || - timeslot.data.accelerationTimestamp.value() == 0) + timeslot.data.accelerationTimestamp == 0) { // the new sample has the same timestamp of the previous one or // timestamp is 0 --> discarded diff --git a/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h b/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h index 6135ef24c..268df0354 100644 --- a/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h +++ b/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h @@ -30,7 +30,7 @@ namespace Boardcore struct LSM6DSRXData : public AccelerometerData, public GyroscopeData { LSM6DSRXData() - : AccelerometerData{Microsecond(0), MeterPerSecondSquared(0), + : AccelerometerData{0, MeterPerSecondSquared(0), MeterPerSecondSquared(0), MeterPerSecondSquared(0)}, GyroscopeData{0, 0.0, 0.0, 0.0} { @@ -45,9 +45,9 @@ struct LSM6DSRXData : public AccelerometerData, public GyroscopeData void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "," << angularSpeedTimestamp << "," << angularSpeedX << "," + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "," + << angularSpeedTimestamp << "," << angularSpeedX << "," << angularSpeedY << "," << angularSpeedZ << "\n"; } }; diff --git a/src/shared/sensors/MPU9250/MPU9250.cpp b/src/shared/sensors/MPU9250/MPU9250.cpp index ce54e4bb3..14c5a840c 100644 --- a/src/shared/sensors/MPU9250/MPU9250.cpp +++ b/src/shared/sensors/MPU9250/MPU9250.cpp @@ -112,7 +112,7 @@ MPU9250Data MPU9250::sampleImpl() // Save timestamps uint64_t timestamp = TimestampTimer::getTimestamp(); - data.accelerationTimestamp = Microsecond(timestamp); + data.accelerationTimestamp = timestamp; data.temperatureTimestamp = timestamp; data.angularSpeedTimestamp = timestamp; data.magneticFieldTimestamp = timestamp; diff --git a/src/shared/sensors/MPU9250/MPU9250Data.h b/src/shared/sensors/MPU9250/MPU9250Data.h index b113cb61f..dd526fa50 100644 --- a/src/shared/sensors/MPU9250/MPU9250Data.h +++ b/src/shared/sensors/MPU9250/MPU9250Data.h @@ -33,7 +33,7 @@ struct MPU9250Data : public AccelerometerData, public TemperatureData { MPU9250Data() - : AccelerometerData{Microsecond(0), MeterPerSecondSquared(0), + : AccelerometerData{0, MeterPerSecondSquared(0), MeterPerSecondSquared(0), MeterPerSecondSquared(0)}, GyroscopeData{0, 0.0, 0.0, 0.0}, MagnetometerData{0, 0.0, 0.0, 0.0}, TemperatureData{0, 0.0} @@ -56,9 +56,9 @@ struct MPU9250Data : public AccelerometerData, void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "," << angularSpeedTimestamp << "," << angularSpeedX << "," + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "," + << angularSpeedTimestamp << "," << angularSpeedX << "," << angularSpeedY << "," << angularSpeedZ << "," << magneticFieldTimestamp << "," << magneticFieldX << "," << magneticFieldY << "," << magneticFieldZ << "," diff --git a/src/shared/sensors/SensorData.h b/src/shared/sensors/SensorData.h index e45b97726..dab8657e4 100644 --- a/src/shared/sensors/SensorData.h +++ b/src/shared/sensors/SensorData.h @@ -31,7 +31,6 @@ namespace Boardcore { using namespace Units::Acceleration; -using namespace Units::Time; /** * @brief Generic error codes that a sensor can generate. @@ -113,16 +112,16 @@ struct HumidityData */ struct AccelerometerData { - Microsecond accelerationTimestamp = Microsecond(0); + uint64_t accelerationTimestamp = 0; MeterPerSecondSquared accelerationX = MeterPerSecondSquared(0); MeterPerSecondSquared accelerationY = MeterPerSecondSquared(0); MeterPerSecondSquared accelerationZ = MeterPerSecondSquared(0); AccelerometerData() {} - AccelerometerData(Microsecond timestamp, MeterPerSecondSquared x, + AccelerometerData(uint64_t timestamp, MeterPerSecondSquared x, MeterPerSecondSquared y, MeterPerSecondSquared z) - : accelerationTimestamp(timestamp), accelerationX(x), accelerationY(y), + : accelerationTimestamp(0), accelerationX(x), accelerationY(y), accelerationZ(z) { } @@ -141,9 +140,8 @@ struct AccelerometerData void print(std::ostream& os) const { - os << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "\n"; + os << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "\n"; } operator Eigen::Vector3f() const diff --git a/src/shared/sensors/VN100/VN100.cpp b/src/shared/sensors/VN100/VN100.cpp index dac1f18f7..5cf1a4aa8 100644 --- a/src/shared/sensors/VN100/VN100.cpp +++ b/src/shared/sensors/VN100/VN100.cpp @@ -523,7 +523,7 @@ AccelerometerData VN100::sampleAccelerometer() } // Parse the data - data.accelerationTimestamp = Microsecond(TimestampTimer::getTimestamp()); + data.accelerationTimestamp = TimestampTimer::getTimestamp(); data.accelerationX = MeterPerSecondSquared(strtod(recvString + indexStart + 1, &nextNumber)); data.accelerationY = diff --git a/src/shared/sensors/VN100/VN100Data.h b/src/shared/sensors/VN100/VN100Data.h index 00f9b973b..0f759d957 100644 --- a/src/shared/sensors/VN100/VN100Data.h +++ b/src/shared/sensors/VN100/VN100Data.h @@ -47,7 +47,7 @@ struct VN100Data : public QuaternionData, VN100Data() : QuaternionData{0, 0.0, 0.0, 0.0, 0.0}, MagnetometerData{0, 0.0, 0.0, 0.0}, - AccelerometerData{Microsecond(0), MeterPerSecondSquared(0), + AccelerometerData{0, MeterPerSecondSquared(0), MeterPerSecondSquared(0), MeterPerSecondSquared(0)}, GyroscopeData{0, 0.0, 0.0, 0.0}, TemperatureData{0, 0.0}, PressureData{0, 0.0} @@ -86,9 +86,9 @@ struct VN100Data : public QuaternionData, << "," << quaternionZ << "," << quaternionW << "," << magneticFieldTimestamp << "," << magneticFieldX << "," << magneticFieldY << "," << magneticFieldZ << "," - << accelerationTimestamp.value() << "," << accelerationX.value() - << "," << accelerationY.value() << "," << accelerationZ.value() - << "," << angularSpeedTimestamp << "," << angularSpeedX << "," + << accelerationTimestamp << "," << accelerationX.value() << "," + << accelerationY.value() << "," << accelerationZ.value() << "," + << angularSpeedTimestamp << "," << angularSpeedX << "," << angularSpeedY << "," << angularSpeedZ << "," << temperatureTimestamp << "," << temperature << "," << pressureTimestamp << "," << pressure << "\n"; diff --git a/src/tests/sensors/test-lis3dsh.cpp b/src/tests/sensors/test-lis3dsh.cpp index 559af1ca6..852909c85 100644 --- a/src/tests/sensors/test-lis3dsh.cpp +++ b/src/tests/sensors/test-lis3dsh.cpp @@ -97,7 +97,7 @@ int main() data = sensor.getLastSample(); - printf("\nTimestamp: %llu \n", data.accelerationTimestamp.value()); + printf("\nTimestamp: %llu \n", data.accelerationTimestamp); printf("Acc: x: %f | y: %f | z: %f \n", data.accelerationX.value(), data.accelerationY.value(), data.accelerationZ.value()); printf("Temp: %.2f C \n", data.temperature); -- GitLab