Andrew Tridgell
769011e947
AnalogSource: added some example code
2012-07-01 15:01:05 +10:00
Andrew Tridgell
1fdcc3e8f0
SITL: added support for new analog source
...
removed analogRead() to prevent people using it
2012-07-01 15:01:05 +10:00
Andrew Tridgell
c8befe4536
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
136c03c3c0
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
acc6adf6e9
MPU6k: removed an unused variable
2012-06-29 21:54:09 +10:00
Andrew Tridgell
ed691fc465
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
16c55c64d4
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
37fc6c46b9
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
58c4d458dc
AHRS: re-instate new DCM drift correction code
...
This reverts commit 078489638d47fbaffde7c51249e36b5a8fc4ef9d.
2012-06-28 11:09:22 +10:00
Andrew Tridgell
fd241692d0
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
a6543f1e84
SITL: removed an unused variable
2012-06-27 16:01:50 +10:00
Andrew Tridgell
5bccfbd94c
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
8e044a560b
AHRS: include P term in omega
...
thanks to Jon for suggesting this
2012-06-27 16:01:50 +10:00
Andrew Tridgell
37e2f2ee2c
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
e4a245179c
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
f4faf941e2
GPS: test the more modern MTK16
2012-06-27 16:01:50 +10:00
Andrew Tridgell
27761737ce
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
b811653800
SITL: changes UBlox simulation to 5Hz
...
this matches the real UBlox driver
2012-06-27 16:01:50 +10:00
Andrew Tridgell
e4d28b12e5
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
3a41ad8e7c
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
c387edd74c
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
06c8763881
Filter: added 5 point average float filter
2012-06-27 16:01:50 +10:00
Jonathan Challinger
d230690b7b
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
d4c8041c51
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
4d08f75292
AHRS: update for new _fly_forward flag
2012-06-27 16:01:49 +10:00
Andrew Tridgell
0f5c22bd8e
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
52d77407d4
AHRS: added GPS support to AHRS test
2012-06-27 16:01:49 +10:00
Andrew Tridgell
37db5247cd
GPS: added velocity and acceleration components
...
used by AHRS for acceleration correction
2012-06-27 16:01:49 +10:00
Andrew Tridgell
fe865bc1dc
Math: added comment
2012-06-27 16:01:49 +10:00
Andrew Tridgell
c30b0d85a3
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
068fe64b9b
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
7b9583453b
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
78ccb9d37f
Add linebreaks to increase readability.
2012-06-21 00:36:10 +02:00
Amilcar Lucas
b072a59843
Improve parameters descriptive text
2012-06-21 00:20:37 +02:00
Amilcar Lucas
594cedd324
Documentation improvements, no functional changes (only comments)
2012-06-17 22:53:54 +02:00
Amilcar Lucas
f4e9587aca
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
d09ac5899b
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
b699c77323
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
a851c53de4
GPS: need pgmspace.h for _write_progstr_block()
2012-06-15 16:27:11 +10:00
Andrew Tridgell
70f18289c5
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
1fe297ab63
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
1906e06b69
Added camera trigger functionality
2012-06-13 21:00:20 +02:00
Amilcar Lucas
a32b7c200b
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
5ffd489d87
Spellcheck
2012-06-13 20:44:35 +02:00
rmackay9
1e38b0d535
AP_GPS_NMEA: fix from Roberto Navoni to improve NMEA accuracy
2012-06-12 20:27:50 +09:00
Andrew Tridgell
f9560ef093
GPS: use the new nav_setting in a couple of the sample sketches
2012-06-10 16:35:13 +10:00
Andrew Tridgell
33a2ad7e07
GPS: add stub settings for nav_setting in the other GPS drivers
...
only Ublox supports nav_setting so far
2012-06-10 16:34:53 +10:00
Andrew Tridgell
514be604a5
GPS: added auto-configuration of UBlox GPS
...
the Ublox will now auto-configure for 5Hz with just the messages we
want. It also supports setting the navigation engine type
2012-06-10 16:34:13 +10:00
Andrew Tridgell
9c1ce9e1c5
FastSerial: avoid buffer re-allocation on re-open if possible
...
we commonly re-open serial ports a lot in the AUTO GPS driver
2012-06-09 07:43:22 +10:00
Andrew Tridgell
cf4e56457b
SITL: map() is a C++ function, so needs to be in C++ part of the header
...
this fixes the ACM build
2012-06-08 17:09:23 +10:00