1、在init_ardupilot()函数中使用
void Copter::init_compass()
{
if (!g.compass_enabled) {
return;
}
if (!compass.init() || !compass.read()) {
// make sure we don't pass a broken compass to DCM
hal.console->printf("COMPASS INIT ERROR\n");
Log_Write_Error(ERROR_SUBSYSTEM_COMPASS,ERROR_CODE_FAILED_TO_INITIALISE);
return;
}
ahrs.set_compass(&compass);
}
该函数来初始化compass,因此以后要想获得compass的对象只需要通过ahrs对象调用ahrs.get_comoass()方法即可
2、imu_ring_buffer_t<imu_elements> storedIMU; // IMU data buffer
obs_ring_buffer_t<gps_elements> storedGPS; // GPS data buffer
obs_ring_buffer_t<mag_elements> storedMag; // Magnetometer data buffer
obs_ring_buffer_t<baro_elements> storedBaro; // Baro data buffer
obs_ring_buffer_t<tas_elements> storedTAS; // TAS data buffer
obs_ring_buffer_t<range_elements> storedRange; // Range finder data buffer
这些RING_BUFFER[]中存放的是近几个周期的数据