Commit Graph

1721 Commits

Author SHA1 Message Date
rmackay9 960c2f08af AP_Mount: addition of Amilcar's mount_type
set_roi_cmd modified to take a Location.  I know the intention was for set_roi_cmd to interpret the MAVLink command directly but unfortunately in arduCopter missions are only made up of waypoints (which are Locations).
2012-07-25 11:00:38 +09:00
Jonathan Challinger 21f0ed00b3 AHRS: normalise GA_b before computing error vector only if too large
When GA_b is small the direction of the vector is unreliable, so
normalising can exacerbate the error in the direction
2012-07-23 17:16:50 +10:00
Andrew Tridgell 99410cbbfe AP_AnalogSource: fixed reporting of VCC
the VCC pin number should not be converted
2012-07-21 19:49:24 +10:00
Andrew Tridgell 5f5c884a6d AHRS: if we don't have gps correction enabled, zero the yaw correction 2012-07-20 17:21:04 +10:00
Andrew Tridgell 4f41b876b1 AHRS: allow the gps/accelerometers to control yaw when rolled
this solves a problem with yaw estimation when at high roll angles,
when the compass code becomes ineffective
2012-07-20 11:50:04 +10:00
Andrew Tridgell 404803a734 MAVLink: imported updated generated mavlink C code
no functionality changes
2012-07-20 11:50:03 +10:00
Jason Short 25c3ed6c4b Oilpan ADC parameters added
including a function that configures each Accel Axis
Defaults matching old behavior
Added param group
2012-07-18 22:57:11 -07:00
Jason Short 8a4a9a929e Lead Filter: simplified calculation 2012-07-18 22:57:10 -07:00
Andrew Tridgell f704408094 GPS-UBlox: removed duplicate config messages
these were left over from debugging
2012-07-19 15:23:15 +10:00
Amilcar Lucas 13fb2e6dc9 RC_Channel parameters: Fix a typo 2012-07-18 22:39:49 +02:00
Amilcar Lucas dea5b88379 Support up to 7 aux servo outputs 2012-07-18 21:58:22 +02:00
rmackay9 a2e6af1f9c AP_Mount: added set_manual_rc_channel and set_manual_rc_channel_function to allow input of pitch, roll and yaw controls from a regular RC_Channel (i.e. not RC_Channel_aux)
For now, angles red in are always of the range -45 deg ~ 45 deg which is consistent with the existing arducopter implementation but should be improved to scale the pilot's input to the mount's actual range.
2012-07-18 23:20:05 +09:00
Amilcar Lucas 8acc432084 Replace long with int32_t 2012-07-18 02:12:31 +02:00
Amilcar Lucas f5c2ffca34 Use ascending order in the values 2012-07-18 02:11:49 +02:00
Amilcar Lucas 23f009f665 Improve parameter documentation, it still does not work, but is an improvement.
I just do not understand why these parameters do not appear in Mission planner :(
2012-07-17 23:32:30 +02:00
Michael Oborne b97f9bb803 Airspeed Library - fix param names.
The Group definition give the start of the param name.
This way we can maintain multiple instances if required of the same library as options.
2012-07-16 21:48:47 +08:00
Andrew Tridgell dfb22554aa Airspeed: Added AP_Airspeed sensor library
this will allow an airspeed sensor object to be passed to AHRS for
dead reckoning
2012-07-16 11:21:20 +10:00
rmackay9 bec5321b8b AP_MotorsMatrix: small bug fix to limit checking on remove_motor call. Fix thanks to Michael Peschel! 2012-07-16 00:38:58 +09:00
rmackay9 3b9a1d4305 RC_Channel_aux: added enable_out method to help stop servos from moving before the mount has initialised.
changed parameter names of "update_aux_servo_function" to make it more clear that any 4 servos can be passed in (not just servos 5~8).
Also allowed NULL servos to be passed in as parameters because we only need 3 in ArduCopter.
2012-07-15 16:28:53 +09:00
rmackay9 e83275d8ae AP_Camera: changed "int" to "int16_t" and "long" to "int32_t" here and there. 2012-07-15 16:26:12 +09:00
Andreas M. Antonopoulos 31fd74d94c AP_Limits library, provides modular "limits" such as altitude and geo-fencing. 2012-07-14 19:26:17 -07:00
Michael Oborne 804898c2a5 fix param config names 2012-07-14 15:34:15 +08:00
Robert Lefebvre 716ce6a5a7 Change to prevent Tricopter servos from going hard-over during Disarmed state.
Believe this was an oversight when the change to AP_Motors went in.
2012-07-13 23:12:26 -04:00
Robert Lefebvre ab1212d8d2 Instituting Yaw Differential on Multirotors. Intent is to stop "rise on yaw input".
Since motors with increasing speed due to yaw input seem to generate more thrust that motors that slow lose thrust, thus net thrust goes up, causing copter to climb.
Values are a guesstimate, proven out by test flying.  This could probably become a parameter.
2012-07-13 22:59:28 -04:00
Andreas M. Antonopoulos 9dfb3c4db9 Added Michael Pursifull's Maxsonar HRLV model support 2012-07-11 18:46:47 -07:00
rmackay9 d3426420ad AP_Camera: moved seme constructor initialisers around to remove compile warnings 2012-07-12 09:33:22 +09:00
rmackay9 1105a35c77 AP_AnalogSource_Arduino: fix to allow analog port to be read to be specified as a "channel" (i.e. A0)
Also fixed example range finder sketch to work with interrupt enabled AP_AnalogSource_Arduino class
2012-07-11 21:19:17 +09:00
Amilcar Lucas eb647b5320 AP_Mount: add support for non-spring-loaded joysticks 2012-07-11 00:07:33 +02:00
Amilcar Lucas ad60fac863 RC_Channel: improve parameter documentation 2012-07-11 00:07:10 +02:00
Amilcar Lucas 42301af148 Remove unused function, remove unnecessary angle wrapping. 2012-07-11 00:06:45 +02:00
Amilcar Lucas 74ef712cd1 Allow mount control when no AHRS exists
Allow mount control on non stabilized axes
2012-07-11 00:06:26 +02:00
Andrew Tridgell 63a83b95b4 AP_Math: added get_distance_cm() to return in centimeters 2012-07-11 07:49:05 +10:00
Andrew Tridgell 15133b1105 AHRS: fixed HIL build 2012-07-10 18:02:05 +10:00
Andrew Tridgell 9b6acf168e AHRS: added AHRS_GPS_GAIN parameter
this allows control of how much GPS velocity information is used in
doing centripetal correction in DCM
2012-07-10 16:22:48 +10:00
Andrew Tridgell 2bc530d04f AP_Param: added some docs on the eeprom header format 2012-07-10 14:03:49 +10:00
Craig Elder 0534ac12b1 DataFlash: The current method for checking if chip erase worked is producing false positives. We are forcing the block erase until we have a deterministic test method. 2012-07-09 15:23:35 -07:00
Amilcar Lucas a79f55656a RC_Channel: Improve documentation 2012-07-07 21:57:30 +02:00
Amilcar Lucas 8bd7ef9b9a AP_Mount: Fix radians/degrees scaling regressions
Rename calculate() into stabilize()
Implement MAV_MOUNT_MODE_RC_TARGETING initialization
Document to make sure this radians/degrees mess up does not happen again
2012-07-07 21:56:56 +02:00
Andrew Tridgell ec70e87495 AnalogSource: prevent a division by zero on zero ADC data 2012-07-06 19:59:18 +10:00
Andrew Tridgell 7bc724d118 APM: changed PID library to do automatic deltat calculation
this fixes a problem with the HDNG2RLL PID, which was using the wrong
time base and prevents similar bugs from happening in the future
2012-07-06 19:59:18 +10:00
Andrew Tridgell 44755bf3ce AP_Baro: improved barometer averaging
this changes the barometer calculations to floating point. On a MS5611
this is actually about twice as fast as the previous 64 bit
calculations, but gains us more accuracy as we are able to take
advantage of sub-bit precision when we average over 8 samples.
2012-07-06 15:11:30 +10:00
Andrew Tridgell 43d6015811 Filter: split the DerivativeFilter steps into update() and slope()
this allows us to apply new data at a different rate than we calculate
the slope.
2012-07-06 15:11:30 +10:00
Andrew Tridgell 4723698489 AP_Baro: update MS5611 test to use baro library altitude 2012-07-06 15:11:30 +10:00
Andrew Tridgell 9845a55cb1 AHRS: make the yaw independent drift correction optional and disable
the new correction algorithm copes poorly with gyro drift, leading to
signification attitude errors in the face of drift
2012-07-06 15:11:30 +10:00
Andrew Tridgell e33554a1f9 AHRS: only enable barometer for AHRS if it is smooth enough
if we used less than 5 samples to compute the pressure then don't use
it for climb rate
2012-07-05 16:29:21 +10:00
Andrew Tridgell 1ce4a03147 SITL: lower baro noise a bit 2012-07-05 16:29:21 +10:00
Andrew Tridgell 9f3da1bf7f Filter: fixed DerivativeFilter example build 2012-07-05 16:29:21 +10:00
Andrew Tridgell 5f38669666 SITL: run the HIL barometer at 80Hz to match APM2 2012-07-05 16:29:21 +10:00
Andrew Tridgell 735c88e9b3 AP_Baro: added get_pressure_samples() interface
this returns how many samples were used to calculate the last pressure
2012-07-05 16:29:21 +10:00
Andrew Tridgell 92001e3e7d Filter: fixed typo in 9 point DerivativeFilter 2012-07-05 16:29:20 +10:00
Andrew Tridgell 999a1d1d55 AP_Baro: change to a 7 point DerivativeFilter for climb rate 2012-07-05 13:00:47 +10:00
Andrew Tridgell a07e280eda 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 ce3f8be6c7 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 fe54329de2 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 9d7ed30023 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 6653c0b874 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 a5d607d25a AP_Baro: use DerivativeFilter in barometer climb rate 2012-07-05 13:00:46 +10:00
Andrew Tridgell f97289792b Filter: added DerivativeFilter implementation
this adds a DerivativeFilter implementation of up to 10 points
2012-07-05 13:00:46 +10:00
Andrew Tridgell cf2c546051 AP_Baro: show climb rate in baro test sketch 2012-07-05 13:00:45 +10:00
rmackay9 be3d035a64 AP_Motors: clarified some doxygen descriptions for TradHeli 2012-07-05 08:46:50 +09:00
Amilcar Lucas 6904bef611 Document++ 2012-07-05 00:33:46 +02:00
Amilcar Lucas 8400bd67f8 Remove unused function 2012-07-05 00:33:10 +02:00
Andrew Tridgell dc6d70bc15 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 cac0757c2e 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 03516b7dfa 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 6cf2e2fa13 AP_Math: cope with co-located waypoints in location_passed_point() 2012-07-04 14:24:04 +10:00
Andrew Tridgell 7be29c8b04 AP_Math: the windows arduino build is missing acosf() 2012-07-04 14:14:58 +10:00
Andrew Tridgell 8fa1acb141 AP_Math: add include of math.h
this is needed for location.cpp
2012-07-04 13:59:23 +10:00
Andrew Tridgell 597170afdc DataFlash: fixed SITL build 2012-07-04 13:44:01 +10:00
Andrew Tridgell c6ff292721 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 84a489498d Math: added location functions to math library
these do common calculations on struct Location
2012-07-04 12:42:46 +10:00
Andrew Tridgell e0685f4408 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 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