m_orientation_filter.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- quaternion_geo_rv = m_orientation_filter.get_geomagnetic_quaternion(m_accel, m_magnetic);
+ quaternion_geo_rv = m_orientation_filter.get_geomagnetic_quaternion(&m_accel, &m_magnetic);
m_time = get_timestamp();
rv_event.sensor_id = get_id();
m_orientation_filter_poll.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- quaternion_geo_rv = m_orientation_filter_poll.get_geomagnetic_quaternion(m_accel, m_magnetic);
+ quaternion_geo_rv = m_orientation_filter_poll.get_geomagnetic_quaternion(&m_accel, &m_magnetic);
data.accuracy = SENSOR_ACCURACY_GOOD;
data.timestamp = get_timestamp();
}
template <typename TYPE>
-inline void orientation_filter<TYPE>::init_accel_mag_data(const sensor_data<TYPE> accel,
- const sensor_data<TYPE> magnetic)
-{
- m_accel.m_data = accel.m_data;
- m_magnetic.m_data = magnetic.m_data;
-
- m_accel.m_time_stamp = accel.m_time_stamp;
- m_magnetic.m_time_stamp = magnetic.m_time_stamp;
-
- normalize(m_magnetic);
-}
-
-template <typename TYPE>
inline void orientation_filter<TYPE>::init_accel_gyro_data(const sensor_data<TYPE> accel,
const sensor_data<TYPE> gyro)
{
}
template <typename TYPE>
-quaternion<TYPE> orientation_filter<TYPE>::get_geomagnetic_quaternion(const sensor_data<TYPE> accel,
- const sensor_data<TYPE> magnetic)
+quaternion<TYPE> orientation_filter<TYPE>::get_geomagnetic_quaternion(const sensor_data<TYPE> *accel,
+ const sensor_data<TYPE> *magnetic)
{
- init_accel_mag_data(accel, magnetic);
-
- normalize(m_accel);
- normalize(m_magnetic);
-
- orientation_triad_algorithm();
+ get_device_rotation(accel, NULL, magnetic);
return m_quat_aid;
}
inline void initialize_sensor_data(const sensor_data<TYPE> *accel,
const sensor_data<TYPE> *gyro, const sensor_data<TYPE> *magnetic);
- inline void init_accel_gyro_mag_data(const sensor_data<TYPE> accel,
- const sensor_data<TYPE> gyro, const sensor_data<TYPE> magnetic);
- inline void init_accel_mag_data(const sensor_data<TYPE> accel,
- const sensor_data<TYPE> magnetic);
inline void init_accel_gyro_data(const sensor_data<TYPE> accel,
const sensor_data<TYPE> gyro);
inline void orientation_triad_algorithm();
const sensor_data<TYPE> *gyro, const sensor_data<TYPE> *magnetic);
quaternion<TYPE> get_9axis_quaternion(const sensor_data<TYPE> *accel,
const sensor_data<TYPE> *gyro, const sensor_data<TYPE> *magnetic);
- quaternion<TYPE> get_geomagnetic_quaternion(const sensor_data<TYPE> accel,
- const sensor_data<TYPE> magnetic);
+ quaternion<TYPE> get_geomagnetic_quaternion(const sensor_data<TYPE> *accel,
+ const sensor_data<TYPE> *magnetic);
quaternion<TYPE> get_gaming_quaternion(const sensor_data<TYPE> accel,
const sensor_data<TYPE> gyro);
euler_angles<TYPE> get_device_rotation(const sensor_data<TYPE> *accel,
return orien_filter.get_9axis_quaternion(accel_data, gyro_data, magnetic_data);
}
-quaternion<float> orientation_sensor::get_geomagnetic_quaternion(sensor_data<float> accel_data,
- sensor_data<float> magnetic_data)
+quaternion<float> orientation_sensor::get_geomagnetic_quaternion(sensor_data<float> *accel_data,
+ sensor_data<float> *magnetic_data)
{
- pre_process_data(&accel_data, &accel_data, bias_accel, sign_accel, scale_accel);
- normalize(accel_data);
- pre_process_data(&magnetic_data, &magnetic_data, bias_magnetic, sign_magnetic, scale_magnetic);
- normalize(magnetic_data);
+ pre_process_data(accel_data, accel_data, bias_accel, sign_accel, scale_accel);
+ normalize(*accel_data);
+ pre_process_data(magnetic_data, magnetic_data, bias_magnetic, sign_magnetic, scale_magnetic);
+ normalize(*magnetic_data);
return orien_filter.get_geomagnetic_quaternion(accel_data, magnetic_data);
}
sensor_data<float> *gyro, sensor_data<float> *magnetic);
quaternion<float> get_9axis_quaternion(sensor_data<float> *accel,
sensor_data<float> *gyro, sensor_data<float> *magnetic);
- quaternion<float> get_geomagnetic_quaternion(sensor_data<float> accel,
- sensor_data<float> magnetic);
+ quaternion<float> get_geomagnetic_quaternion(sensor_data<float> *accel,
+ sensor_data<float> *magnetic);
quaternion<float> get_gaming_quaternion(sensor_data<float> accel,
sensor_data<float> gyro);
};
cout << "Orientation 9-axis quaternion\t" << orientation_9axis_quat.m_quat << "\n\n";
- orientation_geomagnetic_quat = orien_sensor4.get_geomagnetic_quaternion(accel_data, magnetic_data);
+ orientation_geomagnetic_quat = orien_sensor4.get_geomagnetic_quaternion(&accel_data, &magnetic_data);
cout << "Orientation geomagnetic quaternion\t" << orientation_geomagnetic_quat.m_quat << "\n\n";