You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
864 B
46 lines
864 B
#include "imu.h" |
|
|
|
namespace sensor_simulator |
|
{ |
|
namespace sensor |
|
{ |
|
|
|
Imu::Imu(std::shared_ptr<Ekf> ekf):Sensor(ekf) |
|
{ |
|
} |
|
|
|
Imu::~Imu() |
|
{ |
|
} |
|
|
|
void Imu::send(uint32_t time) |
|
{ |
|
// fill imu sample with stored data |
|
imuSample imu_sample; |
|
imu_sample.time_us = time; |
|
imu_sample.delta_ang_dt = (time - _time_last_data_sent) * 1.e-6f; |
|
imu_sample.delta_ang = _gyro_data * imu_sample.delta_ang_dt; |
|
imu_sample.delta_vel_dt = (time - _time_last_data_sent) * 1.e-6f; |
|
imu_sample.delta_vel = _accel_data * imu_sample.delta_vel_dt; |
|
|
|
_ekf->setIMUData(imu_sample); |
|
} |
|
|
|
void Imu::setData(const Vector3f& accel, const Vector3f& gyro) |
|
{ |
|
setAccelData(accel); |
|
setGyroData(gyro); |
|
} |
|
|
|
void Imu::setAccelData(const Vector3f& accel) |
|
{ |
|
_accel_data = accel; |
|
} |
|
|
|
void Imu::setGyroData(const Vector3f& gyro) |
|
{ |
|
_gyro_data = gyro; |
|
} |
|
|
|
} // namespace sensor |
|
} // namespace sensor_simulator::sensor
|
|
|