From what I have read and configured of the code the Arduimu v3 is a 9DOF sensor that has a 3-axis gyro, compass and accelerometer. From these sensors it is supposed to be able to combine the data into a useful set of pitch roll and yaw angles.
However with the configuration parameters below I am still getting significant drift coming out of the device. It is pretty severe and is preventing me from getting useful readings
#define BOARD_VERSION 3 // 1 For V1 and 2 for V2 and 3 for new V3
#if BOARD_VERSION == 3
#include "MPU6000.h"
#endif
#define GPS_CONNECTION 0 // 0 for GPS pins, 1 for programming pins
// GPS Type Selection - Note Ublox or MediaTek is recommended. Support for NMEA is limited.
#define GPS_PROTOCOL 4 // 1 - NMEA, 2 - EM406, 3 - Ublox, 4 -- MediaTek
// Enable Air Start uses Remove Before Fly flag - connection to pin 6 on ArduPilot
#define ENABLE_AIR_START 0 // 1 if using airstart/groundstart signaling, 0 if not
#define GROUNDSTART_PIN 8 // Pin number used for ground start signal (recommend 10 on v1 and 8 on v2 hardware)
/*Min Speed Filter for Yaw drift Correction*/
#define SPEEDFILT 0 // >1 use min speed filter for yaw drift cancellation (m/s), 0=do not use speed filter
/*For debugging propurses*/
#define PRINT_DEBUG 1 //Will print Debug messages
//OUTPUTMODE=1 will print the corrected data, 0 will print uncorrected data of the gyros (with drift), 2 will print accelerometer only data
#define OUTPUTMODE 1
#define PRINT_DCM 0 //Will print the whole direction cosine matrix
#define PRINT_ANALOGS 0 //Will print the analog raw data
#define PRINT_EULER 1 //Will print the Euler angles Roll, Pitch and Yaw
#define PRINT_GPS 0 //Will print GPS data
#define PRINT_MAGNETOMETER 1 //Will print Magnetometer data (if magnetometer is enabled)
// *** NOTE! To use ArduIMU with ArduPilot you must select binary output messages (change to 1 here)
#define PRINT_BINARY 0 //Will print binary message and suppress ASCII messages (above)
// *** NOTE! Performance reporting is only supported for Ublox. Set to 0 for others
#define PERFORMANCE_REPORTING 0 //Will include performance reports in the binary output ~ 1/2 min
/* Support for optional magnetometer (1 enabled, 0 dissabled) */
#define USE_MAGNETOMETER 1 // use 1 if you want to make yaw gyro drift corrections using the optional magnetometer
// Local magnetic declination (in degrees)
// I use this web : http://www.ngdc.noaa.gov/geomagmodels/Declination.jsp
#define MAGNETIC_DECLINATION -14.0 // corrects magnetic bearing to true north
// Magnetometer OFFSETS (magnetometer calibration) (only for ArduIMU v3)
#define MAG_OFFSET_X 0
#define MAG_OFFSET_Y 0
#define MAG_OFFSET_Z 0
/* Support for optional barometer (1 enabled, 0 dissabled) */
#define USE_BAROMETER 0 // use 1 if you want to get altitude using the optional absolute pressure sensor
#define ALT_MIX 50 // For binary messages: GPS or barometric altitude. 0 to 100 = % of barometric. For example 75 gives 25% GPS alt and 75% baro
Tags:
Permalink Reply by Adrian Zurbuchen on June 19, 2012 at 11:34pm Hi David
You could try using the yaw drift correction. Therefore write
#define SPEEDFILT 2
instead of
#define SPEEDFILT 0
Cheers, Adrian
Permalink Reply by Himanshu Agrawal on September 27, 2012 at 5:28am set
use_magnetometer 0
and print_magnetometer 0
Permalink Reply by Harry on October 26, 2012 at 11:23am Something isnt right with the info presented. It shows the test program running, but his setup shows #define print binary is set to 0. The test program wouldnt show anything if it were set that way. It needs binary messages so it must be set to 1. Usually when the ArduIMU program shows it drifting all over it is because the IMU hasnt done a proper calibration. #define enable airstart 0 will do a full calibration and the drift goes away. Mine works good.
Permalink Reply by Himanshu Agrawal on October 26, 2012 at 11:39am Hi harry ..how could enable airstart 0 could correct the drift issues ... there might be some another parameter....can u upload here the code u r using ...?
Permalink Reply by Harry on November 3, 2012 at 6:35pm #define Print_Binary 1
This line is found in the arduimu V 1.9 firmware.
#define Enable_Air_Start 0
This line is also found in the arduimu V 1.9 firmware
#define USE_MAGNETOMETER 1 // use 1 if you want to make yaw gyro drift corrections using the optional magnetometer
The " #define Enable_Air_Start 1" will not automatically calibrate the sensors on startup and will just grab whatever is in memory. Set it to 0 and it wont drift if you do that.
Season Two of the Trust Time Trial (T3) Contest has now begun. The fourth round is an accuracy round for multicopters, which requires contestants to fly a cube. The deadline is April 14th.24 members
1288 members
57 members
680 members
87 members
© 2013 Created by Chris Anderson.
Powered by
