29 static MockPlatform impl;
76 void setIMUValues(
float gx,
float gy,
float gz,
float ax,
float ay,
float az,
float mx,
float my,
float mz);
145 ~MockPlatform() =
default;
151 float position = 0.0f;
158 uint16_t position = 1500;
166 mutable std::mutex m_mutex;
167 std::array<MotorState, 4> m_motors;
168 std::array<ServoState, 4> m_servos;
169 std::array<uint16_t, 6> m_analog_values;
170 uint16_t m_digital_values;
173 mutable std::mt19937 m_rng;
174 mutable std::normal_distribution<float> m_noise_dist;
177 float gyro_x = 0.0f, gyro_y = 0.0f, gyro_z = 0.0f;
178 float accel_x = 0.0f, accel_y = 0.0f, accel_z = 9.81f;
179 float mag_x = 0.0f, mag_y = 0.0f, mag_z = 1.0f;
181 float quat_w = 1.0f, quat_x = 0.0f, quat_y = 0.0f, quat_z = 0.0f;
184 std::chrono::high_resolution_clock::time_point m_start_time;
186 mutable std::mutex m_simMutex;
187 std::unique_ptr<libstp::sim::SimWorld> m_sim;
190 bool m_autoTick{
false};
192 double m_lastTickTime{0.0};
193 float m_autoTickMaxStep{0.05f};
195 void updateMotorSimulation();
196 float addNoise(
float value)
const;
197 int motorCommandToSignedPercent(
MotorDir dir, uint32_t value)
const;
198 void autoTickLocked();
libstp::map::WorldMap WorldMap