|
|
|
#include "imu.h"
|
|
|
|
|
|
|
|
namespace sensor_simulator
|
|
|
|
{
|
|
|
|
namespace sensor
|
|
|
|
{
|
|
|
|
|
|
|
|
Imu::Imu(std::shared_ptr<Ekf> ekf):Sensor(ekf)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
Imu::~Imu()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void Imu::send(uint64_t time)
|
|
|
|
{
|
|
|
|
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
|