Commit Graph

1772 Commits

Author SHA1 Message Date
Andrew Tridgell 1a42b10255 Filter: fixed typo in 9 point DerivativeFilter 2012-07-05 16:29:20 +10:00
Andrew Tridgell 185c6e5b32 AP_Baro: change to a 7 point DerivativeFilter for climb rate 2012-07-05 13:00:47 +10:00
Andrew Tridgell 75470dc912 Filter: cope with non-uniform time steps in the DerivativeFilter
this helps with the barometer a lot, as the timing is quite variable
2012-07-05 13:00:47 +10:00
Andrew Tridgell f03ba86d9d SITL: add some minimal noise when motors are off
this actually improves the gyro calibration
2012-07-05 13:00:46 +10:00
Andrew Tridgell 60caaa4b04 MAVLink: remove MAVLink 0.9 protocol support
this simplifies the code a lot. We're not going back to 1.0
2012-07-05 13:00:46 +10:00
Andrew Tridgell 2cd6da2539 AHRS: only use GPS for yaw when compass is not being used
this avoids having two competing controllers
2012-07-05 13:00:46 +10:00
Andrew Tridgell adfa97b6f8 AHRS: enable barometer for vertical velocity
this re-enables the barometer for vertical velocity information
for drift correction, now that we have a better filter
on the climb rate
2012-07-05 13:00:46 +10:00
Andrew Tridgell f9fc7aafe7 AP_Baro: use DerivativeFilter in barometer climb rate 2012-07-05 13:00:46 +10:00
Andrew Tridgell f19e5a6273 Filter: added DerivativeFilter implementation
this adds a DerivativeFilter implementation of up to 10 points
2012-07-05 13:00:46 +10:00
Andrew Tridgell 9f8703274c AP_Baro: show climb rate in baro test sketch 2012-07-05 13:00:45 +10:00
rmackay9 b5f47f5e63 AP_Motors: clarified some doxygen descriptions for TradHeli 2012-07-05 08:46:50 +09:00
Amilcar Lucas 0febf76d9d Document++ 2012-07-05 00:33:46 +02:00
Amilcar Lucas e9c72822dc Remove unused function 2012-07-05 00:33:10 +02:00
Andrew Tridgell c35a2e999b SITL: added SIM_GPS_DELAY parameter
this allows a delay to be added to the gps data to test the impact on
AHRS/DCM
2012-07-04 21:05:22 +10:00
rmackay9 faeda3713e AP_AHRS: removed DCM_test example sketch
No longer required because it doesn't compile and is redundant anyway because the AP_AHRS_DCM class is tested in the AHRS_Test example sketch.
2012-07-04 18:22:51 +09:00
Andrew Tridgell 3849ca8b5c AHRS: make DCM drift correction not rely on accurate yaw
this uses a new formulation of the GPS based drift correction from
Bill Premerlani that rotates the error vector to avoid relying on
accurate yaw. This means we should get accurate roll/pitch correction
even with lots of magnetometer interference

It also makes it possible to fly a multicopter with no compass. It can
even navigate and correct yaw (slowly!)
2012-07-04 17:00:40 +10:00
Andrew Tridgell 1cd8c54f21 AP_Math: cope with co-located waypoints in location_passed_point() 2012-07-04 14:24:04 +10:00
Andrew Tridgell 468dfe3faa AP_Math: the windows arduino build is missing acosf() 2012-07-04 14:14:58 +10:00
Andrew Tridgell 0bdce404a5 AP_Math: add include of math.h
this is needed for location.cpp
2012-07-04 13:59:23 +10:00
Andrew Tridgell be9b9f3e67 DataFlash: fixed SITL build 2012-07-04 13:44:01 +10:00
Andrew Tridgell dd24330645 DataFlash: fallback to BlockErase if ChipErase fails
The errata on the APM2 dataflash chip says that ChipErase may not work
on some chips
2012-07-04 12:42:46 +10:00
Andrew Tridgell dd200cba31 Math: added location functions to math library
these do common calculations on struct Location
2012-07-04 12:42:46 +10:00
Andrew Tridgell 1314e4f872 AHRS: make P gain on PI roll/pitch controller tunable
this is to make it easier for Craig and Alan to tune
2012-07-04 12:42:46 +10:00
Andrew Tridgell 060cbe2030 AP_Mount: removed unused enum 2012-07-03 10:39:34 +10:00
Andrew Tridgell 99b11e4f19 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 057eb5e6f6 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 f70cd71791 Baro: fixed build of MS5611 test code 2012-07-02 13:44:53 +10:00
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
Andrew Tridgell cbf477addd GPS: added debug code to the main GPS class 2012-06-08 16:42:03 +10:00
Andrew Tridgell a8bfc5d8e9 GPS: re-open the serial port with a 256 byte serial receive buffer
this ensures all GPS parsers have a 256 byte buffer available
2012-06-08 16:42:03 +10:00
Andrew Tridgell 296e651b30 GPS: fixed the UBLOX parser to handle unknown messages
the parser was broken in several ways:

 1) when it received an unknown message it didn't update the ck_a and ck_b fields, so it
    thought the message had a bad checksum, which meant it got out of protocol sync

 2) the read() method would return false if the last message from the GPS was of an unknown type. 
    So we relied on the last msg always being one that we understand and want

 3) the parser considered any valid UBLOX message to be 'new data', whereas we only actually get 
    a new fix when we get box a new position and velned message

 4) the total message size per update is more than 128 bytes, but the serial port was opened 
    with only a 128 byte buffer, so we got corruption regularly
2012-06-08 16:42:02 +10:00
Andrew Tridgell 9c2ba2e814 GPS: tidy up the auto gps test 2012-06-08 16:42:02 +10:00
Robert Lefebvre 238a1ced2c TradHeli adding ramp up time to Ch8 Throttle Pass-through. 2012-06-07 22:55:47 -04:00
Robert Lefebvre df17ff3bc1 AP_MotorsHeli Syntax correction. 2012-06-04 15:53:07 -04:00
Andrew Tridgell 25c17a5425 re-enable the AP_Mount build 2012-06-04 19:32:11 +10:00
Andrew Tridgell 0f0cbce22f GPS: fixed a race condition in the ublox driver
the status update comes as a separate message from the lat/lon
2012-06-04 14:47:58 +10:00
Andrew Tridgell 012fc35314 mavlink: fixed build with uart resend 2012-06-04 13:45:55 +10:00
Andrew Tridgell b6467cb1fa MAVLink: updates to mavlink headers to fix mavlink 1.0 issues 2012-06-04 13:34:07 +10:00
Andrew Tridgell d8919731ee Mavlink: fixed library build for MAVLink 1.0 2012-06-04 13:14:52 +10:00
Andrew Tridgell ec1abbf987 SITL: fixed SITL build with mavlink10 2012-06-04 13:14:52 +10:00
Andrew Tridgell 60f8d09506 mavlink10: fixed MAV_VAR -> MAVLINK_TYPE 2012-06-04 13:14:51 +10:00
Andrew Tridgell bccfb08c55 MAVLink: updated to latest upstream mavlink
this includes no significant changes
2012-06-04 13:14:51 +10:00
Jason Short 73e23aab2a GPS time set to unsigned int32 2012-06-03 11:13:50 -07:00
rmackay9 5c9dc00ae2 AP_Baro: fixed comment to clarify that every-other call updates temperature or pressure 2012-06-03 17:31:17 +09:00
rmackay9 dcdeae412e ArduCopter: Another attempt at fixing the lat/lon printing bug in which small negative lattitudes or longitudes were appearing as positives.
Fixed in both ArduCopter Log.pde and the GPS Auto test sketch
2012-06-03 16:58:19 +09:00
rmackay9 173ae33627 ArduCopter Desktop Build: added definition of "map" to wiring.h and included WMath.cpp to fix SITL build failures.
All real work on this issue done by Michael Oborne.
2012-06-02 17:46:00 +09:00
rmackay9 c82a403b88 AP_MotorsHeli: Added reference to "Arduino.h" to allow autotest builder to work.
Moved around initialisation of parmeters in AP_MotorHeli object to remove compiler warnings.
2012-06-02 16:13:23 +09:00
rmackay9 c3b1a79f6a RC_Channel library: change all "int" types to "int16_t".
Fixes SITL compile error due to type mismatch of set_pwm between .h and .cpp file (this only occurs because on the SITL, "int" is actually "int32_t"
2012-06-02 14:20:58 +09:00
rmackay9 d9f124afbb RC_Channel.pde: fixed compile errors so that it actually works! 2012-06-02 14:00:44 +09:00
rmackay9 2a216ce900 ArduCopter: fixed print_latlon bug in which it would print negative lat/lon numbers incorrectly (i.e. -1234567890 would be printed as -124.xxx). 2012-06-02 12:51:12 +09:00
Jason Short c2d14a5cad RC_Channel fix for throttle output.
throttle was outputting incorrectly and allowing the user to max out the throttle leaving nothing for attitude control
2012-05-31 14:59:03 -07:00
Jason Short 0adb5cb396 Issue 416: RC_Channel – Fix to make dead_zones still output 0 2012-05-31 12:05:47 -07:00
Jason Short 1c690b44de removed never used filter, and fixed a constrain that could make range calcs go bad 2012-05-31 11:45:07 -07:00
Jason Short 862b374d19 Channel rage fix - low output was always 0 vs _low 2012-05-31 11:31:48 -07:00
Robert Lefebvre 5f058fb9b2 TradHeli: Incorporating Ext ESC Control 2012-05-30 21:50:25 -04:00
Robert Lefebvre 56335e81e4 Fix TradHeli Collective Yaw Effect bug. 2012-05-25 15:25:21 -04:00
Andrew Tridgell ddfa06e857 SITL: fixed ChipErase()
the loop never completed
2012-05-23 21:15:45 +10:00
Andrew Tridgell 6e444f6b64 SITL: fixed build with new ChipErase() call 2012-05-23 17:33:33 +10:00
Andrew Tridgell fc73fd6531 DataFlash: use ChipErase() instead of PageErase() on all pages
This makes the DataFlash erase much faster (about 6 seconds instead of
about 60 seconds).

We need to test and ensure the behaviour is equivalent apart from the
speed
2012-05-22 19:29:02 -07:00
Andrew Tridgell f274df454a DCM: fixed a bug when using GPS for yaw correction
When using GPS for yaw correction we need to apply the x and y omegaI
corrections from the _omega_I_sum in the period before we get to the
minimum ground speed for GPS yaw correction. Otherwise we get a large
sudden omega_I change on takeoff.
2012-05-21 12:15:06 +10:00
Andrew Tridgell 9d221b3625 AP_Common: fixed some duplicate product ID warnings 2012-05-17 23:37:32 +10:00
rmackay9 357d6c2d9b ArduCopter: bug fix for reversing tri servo
Extended AP_MotorsTri class to take in pointer to rc_tail servo (rc_7) and we use this servo's REV parameter to determine whether to reverse the output to the tail servo or not
2012-05-13 12:36:46 +09:00
Craig Elder 69bf5700cd IMU: expose IMU_PRODUCT_ID as EEPROM Variable
this will allow us to log the Product ID in tlogs
2012-05-09 18:30:36 -07:00
Craig Elder 4a1d8b0875 AP_InertialSensor: Return product ID from sensor initialization
this exposes the product ID to the IMU Layer
2012-05-09 18:30:36 -07:00
Craig Elder 4c46955612 PRODUCT: Define product IDs for all supported products 2012-05-09 18:30:36 -07:00
Craig Elder ed99940bee MPU6000: Fixed Scaling on Accelerometers Rev C vs Rev D
Rev C have non standard scaling factor that is 1/2 of the data sheet
Rev D chips conform to the specification
2012-05-09 18:30:35 -07:00
Chris Anderson 34f5923ef3 fixed typo ("minimum" should have been "maximum") 2012-05-06 15:50:19 -07:00
Andrew Tridgell 2dd655d87d MPU6k: added suspend/resume on init 2012-05-01 12:06:54 +10:00
Andrew Tridgell 88b2139d91 Baro: added suspend/resume on init 2012-05-01 12:06:54 +10:00
Andrew Tridgell d692a932ca ADC: added suspend/resume on init 2012-05-01 12:06:54 +10:00
Andrew Tridgell 534aee17e9 TimerProcess: added suspend_timer()/resume_timer()
this will be used to avoid races in driver initialisation
2012-05-01 12:06:54 +10:00
rmackay9 6e1798b104 AP_AHRS: updated default AHRS_YAW_P to 0.2 (was 0.4)
This reduces the compass's default authority over the yaw direction by half
2012-04-30 17:29:45 +09:00
Andrew Tridgell ca8bc34c98 MAVLink: re-generated with new pygen
this moves the enums to make them less order sensitive
2012-04-30 12:27:30 +10:00
Adam M Rivera 56d3fa1601 Parameters.pde/AP_MotorsHeli: Updated comments to leverage the new value aliases 2012-04-28 20:50:41 -05:00
Andrew Tridgell 4f90e6e844 build: cope with Arduino 1.0 in command line build
this should autodetect 1.0 versus older builds
2012-04-27 15:38:42 +10:00
Adam M Rivera 239323eaa4 Parameters.pde/AP_MotorsHeli.cpp: Added comments from Roberts clone. 2012-04-26 18:26:14 -05:00
Adam M Rivera 3309dec205 AP_AHRS_DCM.cpp: Added comments that follow the new parse structure 2012-04-25 12:00:42 -05:00
Andrew Tridgell 89041c6996 sitl: support MAVLink 1.0 builds 2012-04-24 22:24:58 +10:00
Andrew Tridgell d11957718f MAVLink: removed the cpp part of the library
this was preventing building MAVLink 1.0 with the arduino GUI as we
can't set cpp defines
2012-04-24 22:24:58 +10:00
Andrew Tridgell eb5bc964d8 MAVLink: one more define for MAVLink 1.0 compat 2012-04-24 19:54:20 +10:00
Andrew Tridgell 0753782c49 MAVLink: re-add the XML message definitions
these are a very useful reference for the current headers in the code
2012-04-24 10:57:43 +10:00
Andrew Tridgell 5c067d5a03 MAVLink: imported new mavlink header updates
this fixes the camera control code which was broken by a previous
import
2012-04-24 10:57:43 +10:00
Andrew Tridgell e8f8115a8f APM_RC: added OutputCh_current() method
this allows logging of the actual servo output values. The radio_out
method previously used doesn't take account of the various override
mechanisms available via waypoints
2012-04-24 10:57:43 +10:00
Andrew Tridgell 2a3af369b6 DCM: buffer omega_I changes over 10 seconds
this buffers up _omega_I changes in _omega_I_sum over a period of 10
seconds, applying the slope limit only when _omega_I_sum is
transferred to _omega_I.

The result is a huge improvement in the ability of _omega_I to track
gyro drift over the long term.
2012-04-23 12:13:25 +10:00
Andrew Tridgell f27d85cb8d DCM: drop the 'drop z' method
the 'drop z' method reduced the impact of noise on omegaI, but it also
made us more sensitive to errors in accelerometer calibration and
scaling, as demonstated by the logs from Gabor here:

  http://diydrones.com/xn/detail/705844:Comment:834373

Simulation testing shows that the other noise suppression methods
applied in the DCM code, in particular the slope limiting on omegaI
the removal of the weighting and the upcoming use of a _omega_I_sum
buffer have reduced the impact of noise enough that we can now safely
include z in the acceleration calculation.
2012-04-23 12:13:24 +10:00
rmackay9 11a384a7ff AP_Motors - allow tail servo to be reversed. Closes ArduCopter issue #228 2012-04-21 23:07:57 +09:00
rmackay9 c45b124cbe DataFlash_APM2 - moved CS_inactive call (which disables the dataflash) from the beginning to the end of all methods. This means the dataflash does not monopolize the SPI bus.
Also formatting changes to use tab instead of space. Sorry, should have done this as a separate check-in to the above changes.
2012-04-21 20:14:45 +09:00
rmackay9 f18ee75b5c AP_OpticalFlow - updated test sketch to allow testing of APM2 version 2012-04-21 20:11:18 +09:00
rmackay9 3075a0c5bd AP_OpticalFlow - added support for optical flow for APM2 2012-04-21 20:10:35 +09:00
rmackay9 7bda35dc28 AP_OpticalFlow - moved most pin definitions into .cpp file 2012-04-21 20:09:15 +09:00
James Goppert 20cdc3a0ac MAVLink update to 1.0.7 2012-04-20 12:31:50 -04:00
Andrew Tridgell 7f8fe97889 GPS: u-center config file for 3DR Ublox 2012-04-20 22:05:30 +10:00
Andrew Tridgell f170790fd8 GPS: fixed auto GPS test 2012-04-20 22:05:30 +10:00
Andrew Tridgell 711814085b GPS: detect new style 3DR UBlox 2012-04-20 22:05:30 +10:00
Andrew Tridgell 08bc7f1a41 GPS: fixed the UBlox test code 2012-04-20 20:57:08 +10:00
James Goppert ba89f39781 Updated MAVLink to 1.0.6 release. 2012-04-19 15:46:29 -04:00
Adam M Rivera b500d9430f AP_AHRS_HIL.h: Fixed HIL build by adding missing public property. 2012-04-16 10:26:14 -05:00
Andrew Tridgell 8e90aeea4e AHRS: added AHRS_YAW_P parameter
this allows users to change the yaw gain in DCM
2012-04-16 20:55:13 +10:00
analoguedevices 28833ed1d6 added missing #include 2012-04-09 14:32:54 +00:00
rmackay9 c96dfb2108 AP_AHRS - changed parameter order to remove compiler warning 2012-04-09 17:37:11 +09:00
rmackay9 ef43da9b92 AP_Compass - changed parameter initialisation order to remove compiler warning 2012-04-09 17:37:02 +09:00
Andrew Tridgell 985c967bb9 MAVLink: imported new mavlink headers
this adds local and remote radio noise levels
2012-04-08 12:22:17 +10:00
rmackay9 53827f2e92 AP_MotorsMatrix - fixed stability patch issue in which it would not limit a motor's output unless an opposite motor had been defined. This would only have affected Y6 frames. 2012-04-07 12:16:12 +09:00
rmackay9 127a990509 AP_MotorsOcta - V Frame - test order fix spotted by David Wiens 2012-04-07 08:11:28 +09:00
rmackay9 f6e1509d05 AP_Motors - fixed last "shadowing" compiler warning caused by badly named parameter in auto_armed method. 2012-04-05 00:28:04 +09:00
rmackay9 1e20d7de88 AP_MotorsMatrix - fixed another compiler error regarding shadowing a variable. Fixed by removing those the angle and direction arrays which weren't even used 2012-04-05 00:24:56 +09:00
rmackay9 7a8973eaf0 AP_MotorsHeli - fixed compiler warning re move_swash function declared with int parameters in .h file but actually using int16_t in .cpp file. They're the same in arduino but perhaps the build checker is a little more strict that Arduino. 2012-04-05 00:06:33 +09:00
rmackay9 926211f0f0 AP_Motors - fix compiler warning re shadowing a variable caused by badly named parameter in armed function.
Another compiler warning fixed in AP_MotorsMatrix.cpp caused by declaring "i" twice.
2012-04-04 23:59:51 +09:00
rmackay9 b71877366e ArduCopter - AP_Motors library - added new library which has few advantages over current code:
1. it's step towards rearchitecting the current code base ahead of a move to RTOS.
     2. internally it uses a MatrixTable for the Quad, Octa, OctaQuad, Y6 frames.
     3. it implements the missing stability patch for Octa and OctaQuads (still missing for Y6)

Later check-ins will incorporate into the main ArduCopter code.
2012-04-02 17:26:37 +09:00
Andrew Tridgell 1fd1a55fa6 MAVLink: import change to txbuf as a percentage 2012-04-02 11:18:53 +10:00
Andrew Tridgell 4ddeb82b26 MAVLink: imported new headers, with RADIO packet 2012-04-01 21:44:44 +10:00
Andrew Tridgell 0c445101ff FastSerial: added set_blocking_writes() interface
this allows us to put a serial port into non-blocking mode, so that
writes that don't fit in the transmit buffer are dropped. This will be
used in flight to prevent stray printf() calls from causing large time
delays in the code
2012-03-30 17:46:20 +11:00
Andrew Tridgell 22ff8cb197 examples: fixed build of some examples with new AP_Declination code 2012-03-30 14:25:27 +11:00
Andrew Tridgell 504c53f746 Compass: added COMPASS_AUTODEC option
when this is 1 (which is the default), we will get the declination
automatically via the AP_Declination library

when it is 0 we will use the value configured by the user
2012-03-30 14:25:27 +11:00
Andrew Tridgell 927834106d AP_Declination: save some more memory by putting the declination keys in progmem
there was a comment saying this was too slow, but it actually costs
about 30 usec extra, which is trivial given the full auto declination
call costs 680 usec and its only called once per boot
2012-03-30 14:25:27 +11:00
Andrew Tridgell 70d4280935 AP_Declination: added timing information to declination test 2012-03-30 14:25:27 +11:00
Andrew Tridgell 175352845c AP_Declination: fixed build under SITL 2012-03-30 14:25:27 +11:00
Adam M Rivera ca82350f17 AP_Declination_test: Updated test with better print messages. 2012-03-30 14:25:26 +11:00
Adam M Rivera 01b1e58f7d AP_Declination: Update LUT based on the changes that I made in the LUT generation code. This LUT is the final version that has no truncation. 2012-03-30 14:25:26 +11:00
Adam M Rivera 23f6093f05 AP_Declination: Updated comments to reflect new LUT size. 2012-03-30 14:25:06 +11:00
Adam M Rivera 50791a8b0f AP_Declination: Removed trailing zero deltas as they have no impact on the final value and only take up extra bytes. 2012-03-30 14:21:58 +11:00
Adam M Rivera f35e447927 AP_Declination: Updated compressed lookup value table. Located 9 more failure points due to truncation on the packed LUT. 2012-03-30 14:21:58 +11:00
Adam M Rivera 72b70c394c AP_Declination: Found 7 of the 22 failure points and fixed them. The issue with those 7 was the way I originally packed the value array. The last delta values on some rows were getting truncated. The new number of failures is down to 15 - WIP. 2012-03-30 14:21:58 +11:00
Adam M Rivera 076192db51 AP_Declination: Updated test to run in 5 degree increments. Changed to only print failures and also print total pass vs total fail. 2012-03-30 14:21:58 +11:00
Adam M Rivera 230ca1ddca AP_Declination: Moved check for y index of zero to after the y index is properly transformed. 2012-03-30 14:21:58 +11:00
Adam M Rivera e0fa053c79 AP_Declination: The exception signs unpacking logic was incorrect. I was shifting a 1 value left y%8 which would have needed a the signs to be packed right to left. My packed signs byte was packed left to right (left most being the 0 position) so I needed to reverse the shifting. 2012-03-30 14:21:58 +11:00
Adam M Rivera f66c6e16e4 AP_Declination: In order for the bitwise & operation to work, negative signs need to be represented by 1s instead of 0s. Changed so that negative signs are represented by a 1 in the packed signs array. Updated lookup logic to reflect this change. 2012-03-30 14:21:58 +11:00
Adam M Rivera d88b9e8ffc AP_Declination: Updated packed exception signs array. I had the signs packed incorrectly. 2012-03-30 14:21:57 +11:00
Adam M Rivera 036da88174 AP_Declination: Changed test to run in increments of 10 degrees. 1 was too granular. 2012-03-30 14:21:57 +11:00
Adam M Rivera 580b274bde AP_Declination: Added original array to test sketch. Added loop to validate new compressed array against original in 1 degree steps. 2012-03-30 14:21:57 +11:00
Adam M Rivera efefc3e4f4 AP_Declination: Moved rows with large spikes in delta to their own unsigned exception rows. The signs are in a separate packed array. 2012-03-30 14:21:57 +11:00
Adam M Rivera 0dcc4e8307 AP_Declination: Implemented Delta Encoding and Run-Length Encoding. Added method to traverse the compressed array and return the lookup value based on the same lat_index/lon_index that was used before. 2012-03-30 14:21:57 +11:00
Adam M Rivera 3a849771bc AP_Declination: Changed PROGMEM read function to pgm_read_word_far to support the int16_t datatype. 2012-03-30 14:21:57 +11:00
Adam M Rivera 370e56c00a AP_Declination: Changed datatype to int16_t to support the -90 <-> 90 latitude range. 2012-03-30 14:21:57 +11:00
Adam M Rivera ae257ad42b AP_Declination: Reduced the size of the lookup table to support -75 <-> 70 latitude range. This allows the datatype to remain int8_t. 2012-03-30 14:21:57 +11:00
Andrew Tridgell b549b88e5e AHRS: fixed error_yaw reporting with 2 MAVLink connections
when a user first connects with USB, and later switches to the
telemetry port without restarting we were getting zero for error_yaw
in the logs, as AHRS.get_error_yaw() was being called twice.

This ensures we give the last value after the counter is reset
2012-03-29 12:39:53 +11:00
Andrew Tridgell 16deefce31 Compass: fixed a comment 2012-03-29 12:39:53 +11:00
Andrew Tridgell 17290836ef Compass: added some more comments
explain the algorithm a bit more
2012-03-29 12:39:53 +11:00
rmackay9 2ce597642e Filter - added FilterWithBuffer typedefs for int32t and uint32 for ease of use 2012-03-28 22:02:52 +09:00
rmackay9 90fcdeadfd AP_OpticalFlow - small bug fix to ensure init attempts to read the product id 3 times before giving up 2012-03-28 22:00:57 +09:00
Andrew Tridgell 10c35e3769 SITL: add magnetic field noise to the simulated compass 2012-03-28 20:55:27 +11:00
Andrew Tridgell f4c1b6a3c6 SITL: ensure we don't run the sitl timer twice
this caused problems with random()
2012-03-28 20:55:27 +11:00
Andrew Tridgell b2d6db9479 Compass: implement noise resistant varient of offset learning
This adds a large amount of noise robustness to the compass offset
learning algorithm, at a cost of 120 bytes of memory. The changes are
based on a long discussion with Bill Premerlani.
2012-03-28 20:55:27 +11:00
Andrew Tridgell 9b95d2060a ADC: minor fix to the ADC Ch6() code
we don't need to add count any more, as floating point maths doesn't
need to round up
2012-03-27 15:37:24 +11:00
Andrew Tridgell a72d4b46b3 Compass: implement Bills new offset nulling algorithm
this seems to work much better than the old algorithm, converging
faster and more accurately. Even better, it has no linkage to DCM, so
no possibility of nasty feedback effects
2012-03-27 15:37:24 +11:00
rmackay9 b5dbdab81e APM_RC - moved Force_Out0_Out1, Force_Out2_Out3 and Force_Out6_Out6 to APM_RC parent class because it's already implemented in the APM1 and APM2 child classes anyway 2012-03-25 21:13:31 +09:00
rmackay9 2b2dbf2a7f Filter - added simple LowPassFilter (simple but it's possible to make errors with simple stuff too so might as well have one) 2012-03-25 16:15:25 +09:00
rmackay9 39fd24ed14 Filter - remove obsolete warning from comments re alloc/malloc dangers 2012-03-25 16:14:07 +09:00
rmackay9 2d65ec2874 AP_Baro - change data type size of temperature's average filter to int32_t (was int16_t) 2012-03-24 23:21:11 +09:00
rmackay9 d371862fd2 AP_OpticalFlow - resolved compile error in example sketch (it could not find DCM.h but it's not required anyway) 2012-03-24 14:47:21 +09:00
Andrew Tridgell a6d66dc45b Math: added mul_transpose() operation
this is equivalent to multiplying by m.transposed(), but is more
efficient
2012-03-23 16:48:52 +11:00