@ -17,6 +22,8 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
@@ -17,6 +22,8 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
AP_InertialSensor_MPU6000(uint8_tcs_pin);
uint16_tinit(AP_PeriodicProcess*scheduler);
staticvoiddmp_init();// Initialise MPU6000's DMP
staticvoiddmp_reset();// Reset the DMP (required for changes in gains or offsets to take effect)
/* Concrete implementation of AP_InertialSensor functions: */
boolupdate();
@ -35,6 +42,14 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
@@ -35,6 +42,14 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
voidreset_sample_time();
floatget_gyro_drift_rate();
// set_gyro_offsets - updates gyro offsets in mpu6000 registers
@ -66,7 +81,37 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
@@ -66,7 +81,37 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
staticuint8_t_cs_pin;
// ensure we can't initialise twice
unsigned_initialised:1;
bool_initialised;
// dmp related methods and parameters
staticvoiddmp_register_write(uint8_tbank,uint8_taddress,uint8_tnum_bytes,uint8_tdata[]);// Method to write multiple bytes into dmp registers. Requires a "bank"
staticvoiddmp_set_rate(uint8_trate);// set DMP output rate (see constants)
public:
staticQuaternionquaternion;// holds the 4 quaternions representing attitude taken directly from the DMP
staticboolFIFO_ready();// returns true if new attitude data is available in FIFO buffer
staticvoidFIFO_reset();// clear attitude data from FIFO buffer
staticvoidFIFO_getPacket();// get latest attitude data from FIFO buffer
staticvoiddmp_set_gyro_calibration();
staticvoiddmp_set_accel_calibration();
staticvoiddmp_apply_endian_accel();
staticvoiddmp_set_mpu_sensors();// To configure for SIX_AXIS output
staticvoiddmp_set_bias_from_no_motion();// Turn on bias from no motion
staticvoiddmp_set_bias_none();// Turn off internal bias correction (we will use this and we handle the gyro bias correction externally)
staticvoiddmp_set_fifo_interrupt();
staticvoiddmp_send_quaternion();// Send quaternion data to FIFO
staticvoiddmp_send_gyro();// Send gyro data to FIFO
staticvoiddmp_send_accel();// Send accel data to FIFO
staticvoiddmp_set_fifo_rate(uint8_trate);// This functions defines the rate at wich attitude data is send to FIFO. Rate: 0 => SAMPLE_RATE(ex:200Hz), 1=> SAMPLE_RATE/2 (ex:100Hz), 2=> SAMPLE_RATE/3 (ex:66Hz)
staticvoiddmp_set_sensor_fusion_accel_gain(uint8_tgain);// This function defines the weight of the accel on the sensor fusion. Default value is 0x80. The official invensense name is inv_key_0_96 (?)
staticvoiddmp_load_mem();// Load initial memory values into DMP memory banks