Commit Graph

1599 Commits

Author SHA1 Message Date
Andrew Tridgell
1142ec0665 AP_Mount: removed unused enum 2012-07-03 10:39:34 +10:00
Andrew Tridgell
f150c645c8 Mount: enable mount control via eeprom parameters
this enables MNT_* parameter control of the camera mount code. It also
fixes the conversion of calculated angles between degrees and
integers, and fixes stabilised mount control when yaw control is not
available.
2012-07-03 10:21:01 +10:00
Andrew Tridgell
7a77832f45 Baro: average over all pressure/temperature samples on MS5611
this allows us to use the MS5611 barometer at its full 100Hz sample
rate (80Hz for pressure, 20Hz for temperature). The pressure and
temperature values are averaged between reads without adding any
latency. Previously the driver would throw away values between
readings

This also fixes a race condition in reading from the SPI bus that
could lead to bad values from the barometer
2012-07-02 13:44:53 +10:00
Andrew Tridgell
f7b06e0a64 Baro: fixed build of MS5611 test code 2012-07-02 13:44:53 +10:00
Andrew Tridgell
2bd5cd3b9a AnalogSource: added some example code 2012-07-01 15:01:05 +10:00
Andrew Tridgell
0341e0e5f0 SITL: added support for new analog source
removed analogRead() to prevent people using it
2012-07-01 15:01:05 +10:00
Andrew Tridgell
2046e396a2 AnalogSource: make the Arduino AnalogSource interrupt driven
this fixes several problems with reading analog sources:

 - we were getting poor values because we didn't wait long enough for
   an analog source to settle

 - we wasted a lot of CPU cycles waiting for conversions

 - we were not taking averages over many samples, which we did with
   the old AP_ADC driver on the APM1
2012-07-01 15:01:05 +10:00
Andrew Tridgell
b5aa821071 AHRS: include the P terms in get_gyro()
this makes it more useful for navigation controllers
2012-06-29 21:54:09 +10:00
Andrew Tridgell
02b9ea4dfe MPU6k: removed an unused variable 2012-06-29 21:54:09 +10:00
Andrew Tridgell
117bae9585 SITL: added SITL class for controlling simulation
this holds mavlink settable parameters for controlling sensor noise
levels
2012-06-29 15:10:51 +10:00
Andrew Tridgell
37494dda2b AHRS: don't add the P terms in _omega
this can lead feedback via the _P_gain()
2012-06-29 15:10:51 +10:00
Andrew Tridgell
21ae2957fb AHRS: disable barometer for vertical acceleration
this seems to have been the cause of the 'flips' seen by Marco and
others. Testing by Craig and Alan shows that the flips are gone when
the barometric acceleration is removed.

It looks like a 5 point average filter is not enough to keep the
vertical acceleteration noise low. With high noise in the z axes, the
x and y axes are scaled back when the ge vector is normalised.
2012-06-28 11:12:49 +10:00
Andrew Tridgell
e531061caa AHRS: re-instate new DCM drift correction code
This reverts commit 078489638d47fbaffde7c51249e36b5a8fc4ef9d.
2012-06-28 11:09:22 +10:00
Andrew Tridgell
8600ad8d7f AHRS: revert to the old drift correction algorithm
we need to work out why Craigs quad flipped today before we enable
this new drift correction
2012-06-27 18:16:41 +10:00
Andrew Tridgell
70bfacc350 SITL: removed an unused variable 2012-06-27 16:01:50 +10:00
Andrew Tridgell
57579e494b Barometer: fixed airstart for APM
we need to re-load the ground pressure and temperature from eeprom on
and airstart
2012-06-27 16:01:50 +10:00
Andrew Tridgell
ce016b5ae8 AHRS: include P term in omega
thanks to Jon for suggesting this
2012-06-27 16:01:50 +10:00
Andrew Tridgell
0fa1f29cf3 AHRS: implement spin rate limits
this follows the method that Bill developed in his fastRotations
paper. We've demonstrated that this is indeed needed in APM, as we
were able to produce the 'dizzy' effects in both the ArduPlane and
ArduCopter simulator
2012-06-27 16:01:50 +10:00
Andrew Tridgell
3ffecc18d8 AHRS: cope with copters with no compass
if a copter doesn't have a compass, we can't use the GPS for gyro
drift correction
2012-06-27 16:01:50 +10:00
Andrew Tridgell
3458962184 GPS: test the more modern MTK16 2012-06-27 16:01:50 +10:00
Andrew Tridgell
426006d98f SITL: fixed GPS heading in simulated UBlox
longitude scale does not apply to velocity->heading conversions
2012-06-27 16:01:50 +10:00
Andrew Tridgell
20c1baf585 SITL: changes UBlox simulation to 5Hz
this matches the real UBlox driver
2012-06-27 16:01:50 +10:00
Andrew Tridgell
d9583ae5eb Compass: remove the need to call calculate() on the compass object
the new AHRS code doesn't use calculate() and the compass.heading
attribute. Instead it works on the raw magnetometer vector. This
change removes the internal calculate state from the compass object
and instead adds calculate_heading() for use by older code that
doesn't go via AHRS.

This significantly reduces the calculation involved in compass updates

The null offsets enable/disable code is also removed, as it is not
needed now that compass offsets are not linked to the AHRS state.
2012-06-27 16:01:50 +10:00
Andrew Tridgell
5370f9c411 AHRS: normalize the ge vector in drift correction, and use barometer
The normalisation ensures the error term scales uniformly with
different accelerations.

The barometer is used for vertical acceleration estimation
2012-06-27 16:01:50 +10:00
Andrew Tridgell
53e950531e Baro: added get_altitude() and get_climb_rate() interfaces
this allows the barometer driver to calibrate and return altitude and
climb rate values. This will be used by the AHRS drift correction code
for vertical velocity

The climb rate uses a 5 point average filter
2012-06-27 16:01:50 +10:00
Andrew Tridgell
9fd3d15026 Filter: added 5 point average float filter 2012-06-27 16:01:50 +10:00
Jonathan Challinger
1ff9461bfb AHRS: brought DCM more inline with Bill's implementation
omega_I applied continuously. _ki larger. Stop integrating when _omega.length()>20

The key change was the scaling of ge to ensure the error is not
quadratic
2012-06-27 16:01:49 +10:00
Andrew Tridgell
73faaddc1b AHRS: first successful version of Bills new drift correction system
This makes 3 major changes:

 1) fixes the scaling of the yaw drift correction term to fix the time
 constant

 2) don't integrate the mag vector over multiple readings

 3) accumulate omega_I changes over 15 seconds before applying, to try
 to prevent omega_I picking up short term responses
2012-06-27 16:01:49 +10:00
Andrew Tridgell
0399aa9480 AHRS: update for new _fly_forward flag 2012-06-27 16:01:49 +10:00
Andrew Tridgell
2600afe18a AHRS: implement Bills new drift correction algorithm
this is an initial implementation of this paper:

  http://gentlenav.googlecode.com/files/RollPitchDriftCompensation.pdf
2012-06-27 16:01:49 +10:00
Andrew Tridgell
5316a45c20 AHRS: added GPS support to AHRS test 2012-06-27 16:01:49 +10:00
Andrew Tridgell
19954f30e5 GPS: added velocity and acceleration components
used by AHRS for acceleration correction
2012-06-27 16:01:49 +10:00
Andrew Tridgell
2b352d2b5c Math: added comment 2012-06-27 16:01:49 +10:00
Andrew Tridgell
f23cebc808 Math: moved more template functions to the .cpp files
save a bit more code space for larger functions
2012-06-27 16:01:49 +10:00
rmackay9
c034e38cbd ArduCopter HIL: changed calls to setHIL to send in time as a uint32_t (it was a float) 2012-06-26 22:50:17 +09:00
Jason Short
abb6eb2471 Added a crude Lead Filter. Needs some fine tuning, lag specification, scaling. Works great on 4hz GPS such as Mtek. 2012-06-21 11:14:20 -07:00
Amilcar Lucas
cd0411ba33 Add linebreaks to increase readability. 2012-06-21 00:36:10 +02:00
Amilcar Lucas
be6923be0f Improve parameters descriptive text 2012-06-21 00:20:37 +02:00
Amilcar Lucas
1ead5f1690 Documentation improvements, no functional changes (only comments) 2012-06-17 22:53:54 +02:00
Amilcar Lucas
8f646467e5 Move local temp variables to the stack it saves 1952 bytes
Add function comments
Only use _ on class member variables
Only point to a 3D GPS point if GPS has a fix
Implement MAV_MOUNT_MODE_MAVLINK_TARGETING
2012-06-17 22:25:51 +02:00
Wingspinner
d9e6a1ece9 Added support for channel curves (and expo) to AP_RC_Channel class. Also updated AP_RC_Channel example/test to demonstrate and test new functionality 2012-06-15 08:40:14 +00:00
Wingspinner
ceba24ff8f Added support for channel curves (and expo) to AP_RC_Channel class. Also updated AP_RC_Channel example/test to demonstrate and test new functionality 2012-06-15 08:38:52 +00:00
Andrew Tridgell
b32726e867 GPS: need pgmspace.h for _write_progstr_block() 2012-06-15 16:27:11 +10:00
Andrew Tridgell
ae9883a8e2 GPS: fixed auto-config of UBlox setup with no UBX messages
if a UBlox is configured for NMEA only, with no UBX messages at all
then it would never trigger the GPS_AUTO detection. This adds a UBX
config message to the init strings that enables the NAV_SOL message
2012-06-15 15:53:27 +10:00
Andrew Tridgell
b7e807cd58 FastSerial: added tx_pending() method
this allows the caller to wait for the tx buffer to drain
2012-06-15 15:53:27 +10:00
Amilcar Lucas
a12cb8fd9a Added camera trigger functionality 2012-06-13 21:00:20 +02:00
Amilcar Lucas
f7ef60565e Add "3 axis camera stabilization" and "point camera to 3D point" functionality
Patch by Gregory Fletcher and reviewed by me
2012-06-13 20:55:19 +02:00
Amilcar Lucas
e9226d6f0a Spellcheck 2012-06-13 20:44:35 +02:00
rmackay9
fca914b7cf AP_GPS_NMEA: fix from Roberto Navoni to improve NMEA accuracy 2012-06-12 20:27:50 +09:00
Andrew Tridgell
f9c5b135bc GPS: use the new nav_setting in a couple of the sample sketches 2012-06-10 16:35:13 +10:00