Andrew Tridgell
d25bd8955d
GCS_MAVLINK: move send_opticalflow() into common library
2015-01-03 15:53:22 +11:00
Andrew Tridgell
66a03d100e
SITL: make some units clearer in comment
2015-01-03 15:44:19 +11:00
Andrew Tridgell
16affe51be
AP_NavEKF: avoid an extra quaternion copy
2015-01-03 15:44:07 +11:00
Andrew Tridgell
023c42593f
SITL: fixed units of body frame conversion for optical flow
2015-01-03 15:43:30 +11:00
priseborough
bf4ebcfda1
AP_HAL_AVR_SITL: Add maths for calculation of truth optical flow rates
2015-01-03 14:45:13 +11:00
Andrew Tridgell
70c2aeca42
AP_AHRS: make optflow available via AHRS
...
same pattern as compass and airspeed sensor
2015-01-03 14:16:34 +11:00
Andrew Tridgell
51cd64b3b2
SITL: make velocity and rotmat available to the optical flow simulator
2015-01-03 14:16:34 +11:00
Andrew Tridgell
aff01c6d09
AP_OpticalFlow: fixed reversed timestamp
...
thanks to Randy
2015-01-03 14:16:34 +11:00
Andrew Tridgell
d2634a26bd
SITL: added framework for SITL optical flow sensor
2015-01-03 14:16:34 +11:00
Andrew Tridgell
254aa32d4e
SITL: added SIM_FLOW_ENABLE option
2015-01-03 14:16:34 +11:00
Andrew Tridgell
11ff12dfd3
AP_OpticalFlow: split library into frontend/backend
...
this will make it easier to add a SITL backend
2015-01-03 14:16:33 +11:00
priseborough
a9eec29e45
DataFlash: Update EKF optical flow data logging
2015-01-03 14:09:15 +11:00
priseborough
69e86d3ea4
AP_NavEKF: Update EKF optical flow data logging
2015-01-03 14:09:12 +11:00
priseborough
b651eac48d
AP_NavEKF: Apply timeout to terrain offset validity reporting
...
The terrain offset solution status is usable for a short period of time without state updates so a timeout has been added which prevents the rapid changes in solution status due to short duration sensor read errors.
2015-01-03 14:09:09 +11:00
priseborough
e6474d676e
AP_NavEKF: Report correct horiz vel sol'n status during optical flow nav
2015-01-03 14:09:05 +11:00
priseborough
75201c8968
AP_NavEKF: Prevent divide by zero casued by Tnb_flow.c.z = 0
2015-01-03 14:07:13 +11:00
Andrew Tridgell
6bb4a8c361
AP_Math: make location_path_proportion() and location_passed_point() more efficient
...
the dot product is much more efficient than the trigonometry. Thanks
to Paul for the suggestion
2015-01-03 14:06:59 +11:00
Andrew Tridgell
6993be54b7
HAL_Linux: raise storage size to 16k
...
match PX4 size
2015-01-03 14:06:54 +11:00
Andrew Tridgell
745b739ab7
AP_InertialSensor: make calibrated() function fast enough to call in flight
...
this will be used in plane to make AHRS SYS_STATUS unhealthy if a user
tries to fly with EKF enabled without a full 3D accel cal.
Note that it doesn't rely on using AP_Param load() to detect that a
value has been set, as some users are first doing a 3D cal then later
doing a 1D cal. In that case load() was returning true and would give
a false positive
2015-01-03 14:06:42 +11:00
Randy Mackay
5ba1b20d3b
BattMon: add SMBus to MONITOR param description
2015-01-02 17:20:05 +09:00
Randy Mackay
ffbc3862bd
Compass: update compass orient param description
...
Update rotation 38 to Yaw293Pitch68Roll90
2015-01-02 17:19:12 +09:00
Jonathan Challinger
9e5a30d5ba
AP_Math: change ROTATION_YAW_293_PITCH_68_ROLL_180 to ROLL_90
2015-01-02 17:15:18 +09:00
Andrew Tridgell
ef55a3c6a6
AP_GPS: keep reporting GPS status messages when no GPS at 1Hz
...
to ensure the GCS knows that we have lost the GPS we need to keep
reporting GPS_RAW_INT messages when the GPS disappears. Sending at 1Hz
should be sufficient
Fixes issue #1722
2015-01-02 17:10:23 +11:00
priseborough
8d3940ce1b
AP_NavEKF: Improved use of enumerated type for aiding mode
2015-01-02 12:10:41 +09:00
priseborough
76d1378962
AP_NavEKF: Fix compiler warning messages
2015-01-01 23:39:48 +11:00
priseborough
3e3dd9d695
AP_NavEKF: Fix parenthesis error in EKF status reporting and clean up logic
...
This fixes a bug which could have caused the realative position status to be incorrectly reported under some conditions and also caused a compiler warning message. the logic used to report the filter solution status has been broken down into smaller, easier to understand statements.
2015-01-01 23:39:48 +11:00
priseborough
c06f6e105e
AP_NavEKF: Consistent initialisation of tuning parameters and variables
...
Non user adjustable parameters are now declared as 'const' in the header.
The _ prefix has been removed from non user adjustable tuning parameters.
We use a function call rather than a constructor to initialise variables because it enables the filter to be re-started in flight if necessary.
For consistency some signed integer type declarations have been changed to unsigned where appropriate.
2015-01-01 23:39:31 +11:00
priseborough
f1dfa282dc
AP_NavEKF: Consolidate constant velocity mode decision logic
...
The decision to switch to constant velocity mode during optical flow operation and te decision to switch back were previously being made in two different places in code. Both decisions are now made in the one place which makes the code easier to follow and maintain.
2015-01-01 19:53:21 +11:00
priseborough
9caf2ac895
AP_NavEKF: Make reversion to no GPS mode unambiguous
2015-01-01 19:53:21 +11:00
priseborough
58e9dd5dcd
AP_NavEKF: Enumerate Position and Velocity aiding status
2015-01-01 19:53:21 +11:00
Andrew Tridgell
fb5e53e1e4
AP_Param: cope with older gcc versions
...
Travis-CI uses 4.6.3
2015-01-01 18:55:11 +11:00
Andrew Tridgell
9ae0dd05f8
AP_Param: avoid build warning due to %S format
2015-01-01 18:25:05 +11:00
Andrew Tridgell
f38f86ab8c
AP_Math: added location_path_proportion()
...
this can be used for glide slope calculations
2015-01-01 15:17:10 +11:00
Andrew Tridgell
4e5510c99e
AP_TECS: fixed warning
2015-01-01 15:14:48 +11:00
Andrew Tridgell
f8bce994b5
AP_OpticalFlow: don't write an error message if no flow sensor
...
most users have no flow sensor
2015-01-01 11:02:43 +11:00
Andrew Tridgell
06a72839ed
AP_InertialSensor: fixed error detection on secondary IMUs
...
the break; was preventing error detection on lsm303d/l3gd20
2015-01-01 08:55:57 +11:00
Randy Mackay
022c549339
BattMon_SMBus_I2C: use get_PEC to check reads
2014-12-31 15:23:00 +09:00
Randy Mackay
bf0e5a350c
BattMon_SMBus_I2C: add get_PEC method
2014-12-31 15:22:59 +09:00
Randy Mackay
3951e4d99b
BattMon: example sketch reads from SMBus
2014-12-31 15:22:58 +09:00
Randy Mackay
aecc8aac1f
BattMon: correct typo in monitor type enum
2014-12-31 15:22:57 +09:00
Randy Mackay
909d525206
BattMon: fix example sketch compile error
2014-12-31 15:22:51 +09:00
Randy Mackay
cf36fd55bd
GCS_MAVlink: correct sending of 2nd battery's voltage
2014-12-31 15:22:49 +09:00
Randy Mackay
76a28a962c
BattMon: remove #defines for monitor type
2014-12-31 15:22:47 +09:00
Randy Mackay
f077ecd338
BattMon_PX4: class to read from PX4Firmware via orb
2014-12-31 15:22:46 +09:00
Randy Mackay
3f35dc54fe
BattMon_I2C: smart battery class for APM
2014-12-31 15:22:45 +09:00
Randy Mackay
314db1403d
BattMon_SMBus: smart battery monitor driver
2014-12-31 15:22:45 +09:00
Randy Mackay
4d7df9ed26
BattMon_Analog: move analog features to new class
2014-12-31 15:22:44 +09:00
Randy Mackay
39dbf05c8f
BattMon_Backend: create backend class
2014-12-31 15:22:43 +09:00
Randy Mackay
eec66d8451
BattMon: parent class becomes frontend class
2014-12-31 15:22:42 +09:00
Randy Mackay
c36253b9b2
AC_PosControl: add comments
...
No functional change
2014-12-31 14:03:22 +09:00
Jonathan Challinger
6eab698e85
AC_WPNav: remove various timing hacks
2014-12-31 14:03:20 +09:00
Jonathan Challinger
557d339cf1
AC_PosControl: remove various unnecessary timing hacks
2014-12-31 14:03:18 +09:00
Jonathan Challinger
5438d38df5
AC_WPNav: provide reset_I to init_xy_controller
2014-12-31 14:03:16 +09:00
Jonathan Challinger
d6e455417f
AC_PosControl: change keep_xy_I_terms to a parameter of init_xy_controller
2014-12-31 14:03:13 +09:00
priseborough
b016bae445
AP_NavEKF: Clean up reset of constant velocity mode
...
Move velocity store out of optical flow to velocity and position fusion control as it is a velocity fusion function.
Always clear the previous mode status
2014-12-31 13:16:16 +09:00
priseborough
3d207c316a
AP_NavEKF: Change names for position and velocity hold modes
...
Name change done to avoid confusion with flight modes. modes are now referred to as constant position and constant velocity mode.
2014-12-31 13:16:15 +09:00
priseborough
b650ee51a9
AP_NavEKF: Consolidate arming checks
2014-12-31 13:16:15 +09:00
priseborough
48cae0df15
AP_NavEKF: Fall back to attitude and hgt estimation for copter if GPS lost
2014-12-31 13:16:14 +09:00
priseborough
b21f9daa90
AP_NavEKF: Update solution status reporting
...
This patch makes the reporting of an absolute position solution less abbiguaous and ensures that relative position is always true if absolute position is true
2014-12-31 13:16:13 +09:00
priseborough
b99b3c7b9d
DataFlash: Don't log EKF optical flow data if not required
2014-12-31 13:16:09 +09:00
priseborough
b6d300db19
AP_NavEKF: clean up determination of GPS availability
2014-12-31 13:14:22 +09:00
priseborough
40b02fc19a
AP_NavEKF: Ensure filter doesn't try to use GPS after initialisation
2014-12-31 13:14:20 +09:00
priseborough
bab1a69f1c
AP_NavEKF: make position and velocity resets consistent with GPS usage
2014-12-31 13:14:18 +09:00
priseborough
0dc2356175
AP_NavEKF: Ensure initialisation methods read required sensor data
2014-12-31 13:14:16 +09:00
priseborough
5d1de79f08
AP_NavEKF: Modify initial values to make startup behaviour more consistent
2014-12-31 13:14:14 +09:00
priseborough
a63af34d8f
AP_NavEKF: Allow 10 seconds for the filter to settle after initialisation
...
Filter is declared unhealthy and will not arm for first 10 seconds after initialisation
2014-12-31 13:14:12 +09:00
priseborough
0a5de21dc7
AP_NavEKF: Fix bug in reporting of solution status
...
Because synthetic position measurements at 0,0 are fused during position hold mode, a position timeout cannot be used as the only means of detecting position solution status.
2014-12-31 13:14:09 +09:00
priseborough
92c3026072
AP_NavEKF: Link process noise to arm status, not pos hold mode
2014-12-31 13:14:07 +09:00
priseborough
a535b73a6d
AP_NavEKF: Initialise timeout status to true
...
This status will be cleared when data arrives and is fused successfully
2014-12-31 13:14:04 +09:00
priseborough
363c1e393d
AP_NavEKF: Latch use of position hold mode for duration of flight
...
Required to prevent acquisition of GPS mid flight causing unwanted change in position and velocity
A distinction has been mad between the arm and disarm transition and the decision to use position hold mode (formerly static mode)
2014-12-31 13:14:02 +09:00
priseborough
a0a6c0362f
AP_NavEKF: Relax timeout check applied to optical flow data
...
200 msec was too short and could lead to false positives. 5000 msec is the largest time we can go free inertial.
2014-12-31 13:14:00 +09:00
priseborough
5bd4ee9715
AP_NavEKF: Use compensation for baro delay in position hold mode
2014-12-31 13:13:58 +09:00
priseborough
4dc1ee2d66
AP_NavEKF: Rename static mode to avoid confusion with other non-GPS modes
...
This renames static mode as posHoldMode to make it clearer what this and the other non-GPS modes do
2014-12-31 13:13:54 +09:00
priseborough
b160f4c03b
AP_NavEKF: Compensate optical flow fusion for GPS glitch recovery offset
2014-12-31 13:13:52 +09:00
priseborough
e4c969084d
AP_NavEKF: Improve behaviour recovering from a GPS timeout
...
When regaining GPS after a timeout, an offset is applied when fusing GPS velocity so that GPS velocity and position data as fused by the EKF is kinematically consistent.
This velocity offset is also accounted for when fusing air data so that wind estimates are not corrupted when the GPS position offset is being pulle back to zero.
The intended behaviour is that the EKF position will be pulled back to the GPS position at a rate of 5m/s for planes and 1 m/s for copters. This avoids large deviations in trajectory when GPS is regained.
2014-12-31 13:13:50 +09:00
priseborough
6eb533121c
AP_NavEKF: Add static mode to solution status message
2014-12-31 13:13:48 +09:00
priseborough
5c3a56a087
AP_NavEKF: Fix error in comments
2014-12-31 13:13:46 +09:00
priseborough
3891dada78
AP_NavEKF: remove unnecessary function
2014-12-31 13:13:44 +09:00
priseborough
a16253796f
AP_NavEKF: Fix bug preventing the non-GPS mode being selected externally
...
When on the ground it is likely the flow sensor will be returning data that does not meet the minimum quality requirements selected.
The previous check was for the presence of valid data. This has been loosened to look for the presence of data.
When the vehicle becomes airborne, the quality of flow data normally improves as the image comes into focus.
2014-12-31 13:13:42 +09:00
priseborough
a42100e4c5
AP_NavEKF: Improved handling of no GPS
...
This patch enables indoor operation of the EKF by putting it into static mode if optical flow operation is not enabled and no GPS is available
2014-12-31 13:13:40 +09:00
priseborough
73a06cd0c1
AP_NavEKF: Fix bug causing magnetic field state learning to be forgotten
2014-12-31 13:13:37 +09:00
priseborough
bf89c56e54
AP_NavEKF: Fix comments error in description of flow sensor sign conventions
2014-12-31 13:13:35 +09:00
priseborough
685fa383e4
DataFlash: Log EKF solution status message
...
This message is a bitmasked integer that will be used by control software to determine what data is available from the EKF and decide what control modes are available.
Duplicate static mode message removed. Static mode is now contained in the bitmasked solution status message
2014-12-31 13:13:33 +09:00
priseborough
4eb19c2324
AP_NavEKF: Rationalise health status reporting
...
1) Un-used public methods to report height and position drifting have been removed
2) A time-out has been added to the airspeed innovation consistency check so that if we are relying on airspeed to constrain velocity drift, a filter divergence or other fault that causes the airspeed to be continually rejected will trigger a change in health status.
3) A timeout of velocity, position or height measurements does not cause a filter fault to be reported. Timeouts can be due to sensor errors and do not necessarily indicate that the filter has failed.
4) Time-outs of various measurements are used to present a consolidated bitmask which inidicates which parts of the solution can be used, eg attitude, height, velocity, relative position, absolute position, etc.
2014-12-31 13:13:31 +09:00
priseborough
78b30e4ce5
AP_NavEKF: Increase rate at which GPS glitch offsets are reduced for planes
2014-12-31 13:13:29 +09:00
Andrew Tridgell
e0943851d6
DataFlash: log gyro and accel error counts
2014-12-30 12:16:02 +11:00
Andrew Tridgell
b9adc6e466
AP_InertialSensor: prefer sensors that have zero error counts
...
if a sensor has failed in flight then try not to use it if another
error-free sensor is available
2014-12-29 21:19:35 +11:00
Randy Mackay
4a1ba9b186
AC_WPNav: minor const fix
2014-12-27 13:19:32 +09:00
Randy Mackay
c7192c5eef
Notify: remove Led class
...
This class didn't add any functionality beyond what the NotifyDevice class
already provided so in keeping with our desire to keep things simple we
can remove this class
2014-12-26 13:06:41 +09:00
Randy Mackay
352b52d73f
Notify: remove reliance on Led class
2014-12-26 13:06:24 +09:00
Randy Mackay
d67b4a8d49
Notify: add pre_arm_gps_check flag
...
RGB LED will remain flashing blue when vehicle is disarmed and this
check has failed (i.e. false).
2014-12-26 12:32:34 +09:00
Andrew Tridgell
c93ae67541
DataFlash: don't try and open logfile on failure more than once
...
this prevents a corrupted microSD card from causing a continuous
attempt to open a log file while in flight, which can cause large
scheduler delays
Pair-Programmed-With: Grant Morphett <grant@gmorph.com>
2014-12-21 14:50:42 +11:00
Andrew Tridgell
abd1ece6e3
DataFlash: don't write out parameters if log open fails
2014-12-21 14:50:42 +11:00
priseborough
f2c506339a
AP_NavEKF: Reduce time required to recover from GPS timeouts
...
The time required for GPS to be lost or rejected before vehicles with airspeed sensors either reset to GPS or invoke the zero side-slip assumption to constrain drift has been reduced from 15 to 10 seconds
A duplicate zeroing of the GPS position offset has been removed
If the vehicle is a non hovering vehicle (eg a plane) then the speed at which the GPS offset is pulled back to zero after a reset is increased from 1 to 3 m/s
This also improves recovery from bad inertial data for planes
2014-12-18 21:50:40 +11:00
priseborough
f73816dbb5
AP_NavEKF: Improve robustness to long periods without GPS
2014-12-18 21:07:45 +11:00
Randy Mackay
a44b4b5e87
Mission: allow 15 do-jump commands on Pixhawk
2014-12-18 17:02:48 +09:00
priseborough
3afde0061f
AP_NavEKF: Use named states for velocity reset
...
Readibility improvement
2014-12-18 17:29:50 +11:00
priseborough
f6ce25df2a
AP_NavEKF: Do not reset vertical velocity state from GPS
...
Doing this can cause large height and height rate errors if large GPS velocity errors cause the GPS tn be rejected for long enough to cause a timeout and reset of states.
2014-12-18 17:29:47 +11:00
Andrew Tridgell
597273cfff
AP_TECS: remove lag from height demand in landing
...
this predicts ahead the height demand for landing, where we have a
continuous demanded descent. This removes the effect of the lag
introduced by the height demand filters
2014-12-18 09:58:12 +11:00
Andrew Tridgell
b5a5b71512
GCS_MAVLink: reverse sense of check_and_forward()
...
also increase number of routes on larger systems and improved route
learning logic
2014-12-17 10:32:28 +11:00
Andrew Tridgell
a967a682a4
GCS_MAVLink: added routing test sketch
2014-12-17 10:32:28 +11:00
Andrew Tridgell
7f817502c4
GCS_MAVLINK: implement new routing rules
...
see description in coments
2014-12-17 10:32:28 +11:00
Andrew Tridgell
70f5ec60e8
AP_TECS: added get_land_sinkrate()
2014-12-15 21:51:07 +11:00
Andrew Tridgell
8c1cab84c7
AP_SpdHgtControl: added get_land_sinkrate()
2014-12-15 21:51:07 +11:00
Randy Mackay
21beb26484
Notify: minor event reordering
...
No functional change
2014-12-15 14:10:26 +09:00
Randy Mackay
e68a69e139
ToneAlarm_PX4: remove user_mode_init flag
...
Replaced by an initialised check in the main ArduCopter flight code
2014-12-15 14:10:21 +09:00
Randy Mackay
1c8ab375e2
Notify: rename failsafe_action event
2014-12-15 14:10:15 +09:00
Randy Mackay
972c8e47d2
Notify: rename notify_types to notify_flags_type
2014-12-15 14:10:10 +09:00
Randy Mackay
bfc86ac7c0
ToneAlarm_PX4: add comments
2014-12-15 14:10:06 +09:00
Randy Mackay
c75ab8f3e5
Notify: add comments re events
2014-12-15 14:09:15 +09:00
Jonathan Challinger
3dfcdde6be
AP_Notify: Rework ToneAlarm_PX4 to play tones from local array
2014-12-15 14:09:04 +09:00
priseborough
e2d47f836e
AP_TECS: Fix bug causing plane to fly high on landing approach
...
The introduction of the height rate flare logic caused the demanded height rate to be zero except when a flare manouevre was being performed. This caused the plane to lag behind height changes if the D gain was non-zero, which caused it to fly high during landing approach.
2014-12-14 09:43:46 +11:00
Randy Mackay
b54b7b7448
GCS_MAVLink: fix compiler error
2014-12-11 16:26:26 +09:00
Randy Mackay
e581e81da5
AP_NavEKF: reorder declation to fix compiler warning
...
No functional change
2014-12-11 15:37:56 +09:00
Randy Mackay
ddda0d52ce
Baro: reorder declaration to fix compiler warning
...
No functional change
2014-12-11 13:06:24 +09:00
Andrew Tridgell
ade7f9e1a9
GCS_MAVLink: fixed forwarding of non-targetted messages
2014-12-11 12:32:50 +09:00
Andrew Tridgell
fcf17829cc
GCS_MAVLink: fixed addition to routing table
2014-12-11 12:32:48 +09:00
Andrew Tridgell
079158d4b8
GCS_MAVLink: strip out the old GCS_Class class
...
this is not longer needed as we don't support multiple protocol
classes
2014-12-11 12:32:45 +09:00
Andrew Tridgell
f198cdcf20
GCS_MAVLink: added support for a MAVLink snoop function
...
this can be used to watch messages for different targets
2014-12-11 12:32:32 +09:00
Andrew Tridgell
34be7f808e
GCS_MAVLink: only try to fwd packets to active channels
2014-12-11 12:32:30 +09:00
Andrew Tridgell
411766f45a
AP_Mount: removed use of mavlink_check_target()
2014-12-11 12:32:27 +09:00
Andrew Tridgell
4a9331c505
AP_Camera: removed use of mavlink_check_target()
2014-12-11 12:32:24 +09:00
Andrew Tridgell
f1edd1bafb
GCS_MAVLink: removed use of mavlink_check_target()
...
not needed now we do routing properly, as messages will only be
processed if they are for us
2014-12-11 12:31:06 +09:00
Andrew Tridgell
aa88ba4158
GCS_MAVLink: only call message handler for our own messages
2014-12-11 12:30:59 +09:00
Andrew Tridgell
11f88f0f5d
GCS_MAVLink: added routing object to GCS_MAVLink
2014-12-11 12:30:55 +09:00
Andrew Tridgell
b91529622b
GCS_MAVLink: initial implementation of MAVLink routing object
...
will be used to auto-route packets over all available links
2014-12-11 12:30:50 +09:00
Andrew Tridgell
76c710f596
GCS_MAVLink: removed obsolete headers
2014-12-11 12:30:46 +09:00
Andrew Tridgell
3354cb37d0
AP_GPS: fixed vertical velocity in Replay
...
fixed NavEKF use of velocity velocity
2014-12-09 18:57:17 +11:00
Andrew Tridgell
4a91546ced
HAL_PX4: FRAM does not support fsync
...
the fsync just wastes time reopening /fs/mtd
2014-12-09 14:35:36 +11:00
Randy Mackay
da247bacf8
GCS_MAVLink: add OPTICAL_FLOW to ap_message enum
2014-12-08 14:58:30 +09:00
Randy Mackay
3c23f00e81
OptFlow: remove ADNS3080 image grabber example
2014-12-08 14:58:24 +09:00
Andrew Tridgell
193bda068c
HAL_Linux: run IO processes when we do a stop_clock()
...
this has the effect of allowing logging to progress in Replay where we
are running at much more than realtime speeds
2014-12-08 11:24:39 +11:00
Andrew Tridgell
cb9c518ab8
Revert "AP_NavEKF : Reduce ripple in estimates that can cause copter motor 'pulsing'"
...
This reverts commit 13df6fb1c9
.
This patch was a result of an incorrect merge of the optflow branch
into master. It reintroduced the bug fixed by this commit:
AP_NavEKF : Fix bug in reset of GPS glitch offset
8aa267f75f
2014-12-08 07:53:47 +11:00
Andrew Tridgell
22a7b69260
AP_OpticalFlow: don't build optical flow example
...
broken by library changes
2014-12-06 22:05:42 +11:00
Andrew Tridgell
ed510d4f87
AP_OpticalFlow: run PX4 flow sensor at 10Hz
...
Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
2014-12-06 18:16:51 +11:00
priseborough
a2bd3b4a42
AP_NavEKF: Add public method returning height above ground level
2014-12-06 18:16:51 +11:00
priseborough
d701cfcb75
AP_NavEKF: Output terrain relative PosD when relying on Optical Flow
2014-12-06 18:16:51 +11:00
priseborough
0156d846f1
AP_NavEKF: Increase height at which nav gain reduction starts
...
Compensates for optical flow induced noise increase with height.
2014-12-06 18:16:51 +11:00
priseborough
12ea1d6e85
AC_AttitudeControl: Scale angle demand noise filter
...
Scales filter frequency using EKF nav gain scaler to take advantage of the reduced nav frequency whichcan tolerate a slower angle response.
This is required to reduce the effect of EKF optical flow noise increase with height.
2014-12-06 18:16:51 +11:00
priseborough
a905432ffe
AP_NavEKF: reduce height at which nav gain reduction starts
2014-12-06 18:16:51 +11:00
priseborough
5785272933
AP_NavEKF: Improve robustness to corrupted flow sensor data
2014-12-06 18:16:51 +11:00
priseborough
b1d44d4dde
AP_NavEKF: Add protection for negative height above ground
2014-12-06 18:16:50 +11:00
priseborough
e80b1c67cd
AC_AttitudeControl: Add EKF optical flow noise gain scaler
...
Allows gains to be adjusted to compensate for optical flow noise
2014-12-06 18:16:50 +11:00
priseborough
11fb51ceba
AC_WPNav: Add nav velocity gain scaler to interfaces
...
Allows gains to be adjusted to compensate for optical flow noise
2014-12-06 18:16:50 +11:00
priseborough
5b8265ad6f
AP_AHRS: Expand EKF speed limit public method to handle control limits
2014-12-06 18:16:50 +11:00
priseborough
d994da0886
AP_NavEKF: Expand EKF speed limit public method to handle control limits
2014-12-06 18:16:50 +11:00
priseborough
5fa0c59310
AC_WPNav: Add EKF ground speed limit to loiter speed control
...
This is required to prevent the speed controller saturating the optical flow sensor during low altitude flying.
2014-12-06 18:16:50 +11:00
priseborough
83775554ea
AP_AHRS: Publish EKF ground speed limit
2014-12-06 18:16:50 +11:00
priseborough
bc2255d6b1
AP_NavEKF: Improve comments in setInhibitGPS public method
2014-12-06 18:16:50 +11:00
priseborough
416eaf4633
AP_NavEKF: Apply single definition of using optical flow
2014-12-06 18:16:50 +11:00
priseborough
b56b68ce10
AP_NavEKF: Add public method reporting horizontal speed limit
...
This is required if using optical flow, as depending on height, the speed must be limited to prevent the sensor saturating
2014-12-06 18:16:50 +11:00
priseborough
c8fb376cc4
AP_NavEKF: Fix bug in bias rate of change limiting
...
This doesn't change the behaviour, but means the result is achieved using the correct parameters, and comments are consistent
2014-12-06 18:16:50 +11:00
priseborough
599e53f3f2
AP_NavEKF: Prevent flow scale factor updating on ground
2014-12-06 18:16:49 +11:00
priseborough
083e22966c
AP_NavEKF: Add public method to report available output data
2014-12-06 18:16:49 +11:00
priseborough
5532750a99
AP_AHRS: Add public method to inhibit GPS useage when using EKF
...
This provides the calling vehicle software the abiity to request the EKF to not use GPS.
An integer is returned that indicates the type of operation available:
0 = request rejected (request will only be accepted if the EKF is in static mode, eg pre-armed)
1 = request accepted, attitude, vertical velocity and position estimates available
2 = request accepted, attitude, height rate, height, horizontal velocity and relative position estimates available
2014-12-06 18:16:49 +11:00
priseborough
e53d28854e
AP_NavEKF: Add public method to inhibit GPS use and clean-up GPS use logic
...
This provides the calling vehicle software the abiity to request the EKF to not use GPS.
An integer is returned that indicates the type of operation available:
0 = request rejected (request will only be accepted if the EKF is in static mode, eg pre-armed)
1 = request accepted, attitude, vertical velocity and position estimates available
2 = request accepted, attitude, height rate, height, horizontal velocity and relative position estimates available
2014-12-06 18:16:49 +11:00
priseborough
8fb1d9cf8d
AP_NavEKF: Fix bug preventing opt flow scale factor estimation
...
Also removes un-used variable declarations
2014-12-06 18:16:49 +11:00
priseborough
a78920761c
AP_NavEKF: Update comments in flow data interface
2014-12-06 18:16:49 +11:00
priseborough
063fb41748
AP_OpticalFlow: Add separate scale factors for X and Y axis.
...
The resolution is also increased to take advantage of the planned introduction of automated calibration methods
2014-12-06 18:16:49 +11:00
priseborough
52c7e56a4a
AP_NavEKF: Add parameter for max valid optical flow rate magnitude
2014-12-06 18:16:49 +11:00
priseborough
6f8971d80a
AP_NavEKF: Speed up flow sensor gyro bias correction
2014-12-06 18:16:49 +11:00
priseborough
d7ad45ebda
AP_NavEKF: Don't fuse flow measurements if too big
2014-12-06 18:16:49 +11:00
priseborough
2dff76394d
AC_PosControl: Add spike and noise filter to demanded angles
...
This has been done to provide a smooth psotion hold when using an optical flow aided EKF which can be noisy.
Signed-off-by: priseborough <p_riseborough@live.com.au>
2014-12-06 18:16:49 +11:00
priseborough
84944fdd4e
AP_NAvEKF: Revert back to 10Hz fusion
2014-12-06 18:16:49 +11:00
priseborough
f4f0dfc45c
AP_OpticalFlow: efficiency improvements to data processing
2014-12-06 18:16:49 +11:00
priseborough
1f78a73cdb
AP_NavEKF: Make flow measurement delay vehicle specific
...
This takes into account the inter-sampling delay between the flow driver and the APM software which depends on the rate at which the dirver is being checked. This is 50Hz for plane and rover, and 200Hz for Copter.
2014-12-06 18:16:49 +11:00
priseborough
5f941655a8
AP_NavEKF: changes to support to 20Hz flow fusion rate
2014-12-06 18:16:48 +11:00
priseborough
0bf991eef9
AP_NavEKF: Fix bug in optical flow fusion smoothing
2014-12-06 18:16:48 +11:00
priseborough
7d27a22f77
DataFlash : Fix EKF optical flow logging bug
2014-12-06 18:16:48 +11:00
priseborough
7ec8dfebcf
AP_OpticalFlow : Remove gyro scale factor user adjustable parameter
...
No longer required because bug in flow sensor has been fixed.
2014-12-06 18:16:48 +11:00
priseborough
2baa1e56ed
Dataflash : Fix bug in EKF opt flow logging
2014-12-06 18:16:48 +11:00
priseborough
df59f3311a
AP_OpticalFlow : Add gyro scale factor correction parameter
2014-12-06 18:16:48 +11:00
priseborough
eec49ce1dd
AP_OpticalFlow : Add parameter for flow rate scale factor correction
2014-12-06 18:16:48 +11:00
priseborough
839b814d12
AP_NavEKF : Inhibit flow and range fusion in static mode
2014-12-06 18:16:47 +11:00
priseborough
9b9934ac06
AP_NavEKF : fix velocity timeout bug during optical flow operation
2014-12-06 18:16:47 +11:00
priseborough
cc8e6dbfad
DataFlash : Add EKF additional fault and timeout logging
2014-12-06 18:16:47 +11:00
priseborough
517026980b
AP_NavEKF : Add fault and timeout logging
2014-12-06 18:16:47 +11:00
priseborough
f640ec30ff
AP_NavEKF : Reset held velocity on arming
...
This held velocity is used to constrain the drift in the optical flow solution before the vehicle is high enough for the optical flow sensor to work.
2014-12-06 18:16:47 +11:00
priseborough
4616721b0d
DataFlash : Update EKF debug logging
2014-12-06 18:16:47 +11:00
priseborough
06c19a3a4d
AP_NavEKF : Update optical flow debug logging
2014-12-06 18:16:47 +11:00
priseborough
1791dec622
AP_NavEKF : Fix velocity hold mode
2014-12-06 18:16:47 +11:00
priseborough
84421e0a35
AP_NavEKF : Adjust initial flow scale factor and limits
2014-12-06 18:16:47 +11:00
priseborough
573633daf7
AP_NavEKF : Fix incorrect use of flow sensor time-stamp
...
flow sensor time stamp is now issued by the flow sensor and is on a different time-base
2014-12-06 18:16:47 +11:00
priseborough
92e9336fe1
AP_OpticalFlow : prevent divide by zero
2014-12-06 18:16:47 +11:00
priseborough
9ea97c1a38
AP_NavEKF : Modify optical flow data interface
...
Sign conventions have changed
2014-12-06 18:16:46 +11:00
priseborough
8faeb190de
AP_NavEKF : Rework logic to cope with bad flow data
2014-12-06 18:16:46 +11:00
priseborough
44e1695d5a
AP_AHRS : Enable EKF start without GPS
2014-12-06 18:16:46 +11:00
priseborough
41f0231cfb
AP_NavEKF : improve logic dealing with lack of flow or range data
2014-12-06 18:16:46 +11:00
priseborough
9ba46ad795
AP_NavEKF : Improve handling of flow sensor failure
2014-12-06 18:16:46 +11:00
priseborough
2ee1c549be
AP_NavEKF : improve criteria used to inhibit scale factor estimation
2014-12-06 18:16:46 +11:00
priseborough
e09ff84218
AP_NavEKF : Don't estimate focal length scale factor without reliable velocity
2014-12-06 18:16:46 +11:00
priseborough
4c92a5f23f
AP_NavEKF : Use GPS velocity if PX4Flow sensor fails
2014-12-06 18:16:46 +11:00
priseborough
283811edcb
AP_NavEKF : stop velocity change when flow measurements drop out
2014-12-06 18:16:46 +11:00
priseborough
9132fcfe43
AP_NavEKF : Change mag fusion to use corrected compass values
...
This enables compass units to be switched in-flight
2014-12-06 18:16:46 +11:00
priseborough
c3be486c29
AP_NavEKF : Enable inhibiting of GPS measurements
2014-12-06 18:16:45 +11:00
priseborough
79698f7742
AP_NavEKF : improvements to range finder fusion
2014-12-06 18:16:45 +11:00
priseborough
1222559da0
AP_NavEKF : Fix bug affecting sonar fusion
2014-12-06 18:16:45 +11:00
priseborough
117bd2a998
AP_NavEKF : Add time based noise to terrain offset state
2014-12-06 18:16:45 +11:00
priseborough
b1d3d5d9a3
AP_NavEKF : Don't update focal length scale factor at low speeds
2014-12-06 18:16:45 +11:00
priseborough
8dd1081f54
AP_NavEKF : Add range measurement to EKF debug message
2014-12-06 18:16:45 +11:00
priseborough
f358d5e20f
DataFlash : Add range measurement to EKF debug message
2014-12-06 18:16:45 +11:00
priseborough
744c72d40b
AP_NavEKF : Updates to range finder fusion
2014-12-06 18:16:45 +11:00
priseborough
a07e402ebf
DataFlash : Update names in EKF optical flow logging
2014-12-06 18:16:45 +11:00
priseborough
a20729f60f
AP_NavEKF : Update names in optical flow debug logging
2014-12-06 18:16:45 +11:00
priseborough
235b3bebda
AP_NavEKF : Add range finder health and enable range finder fusion
...
The 2-state auxiliary filter is also renamed.
2014-12-06 18:16:45 +11:00
priseborough
a4984a1e76
AP_AHRS : Add range finder health status to EKF optical flow data
2014-12-06 18:16:44 +11:00
priseborough
988de2a898
AP_NavEKF : Add smoothing to optical flow fusion
2014-12-06 18:16:44 +11:00
priseborough
70c779dbc2
AP_NavEKF : Optical flow numerical optimisations
2014-12-06 18:16:44 +11:00
priseborough
2a1420171a
AP_NavEKF : reduce minimum accepted flow quality
2014-12-06 18:16:44 +11:00
priseborough
3fbedc9f98
AP_NAvEKF : update comments
2014-12-06 18:16:44 +11:00
priseborough
81b09c9361
AP_NavEKF : temporary mods to test use of flow sensor internal gyro data
2014-12-06 18:16:44 +11:00
priseborough
12b012a00e
AP_AHRS : temporary mods to test use of flow sensor internal gyro data
2014-12-06 18:16:44 +11:00
priseborough
cd418c946c
AP_NavEKF : preliminary implementation for optical flow and range finder fusion
...
Range finder measurements are not input to EKF at this time, however the method for fusing them is
implemented.
2014-12-06 18:16:44 +11:00
priseborough
bc74abcd00
DataFlash : EKF optical flow fusion support preliminary changes
2014-12-06 18:16:44 +11:00
priseborough
7b76fc29fb
AP_AHRS : EKF optical flow fusion support preliminary changes
2014-12-06 18:16:44 +11:00
priseborough
13df6fb1c9
AP_NavEKF : Reduce ripple in estimates that can cause copter motor 'pulsing'
...
This patch reduces the level of 5Hz and 10Hz 'pulsing' heard in motors due to GPS and altimeter fusion which cause a small 5Hz and 10Hz ripple on the output under some conditions. Attitude, velocity and position state corrections from GPS, altimeter and magnetometer measurements are applied incrementally in the interval from receiving the measurement to the predicted time of receipt of the next measurement. Averaging of attitude state corrections is not performed during periods of rapid rotation.
Time stamps are now explicitly initialised to the current IMU time to avoid unwanted activation of timeout logic on filter start and the various calls to the hal.scheduler->millis() object have been consolidated.
Unused variables have been removed
2014-12-06 18:16:43 +11:00
priseborough
dcb252cc05
AP_NavEKF : Fix bug in reset of position and velocity states
...
If the inertial solution velocity or position needs to be reset to the GPS, the stored state history for the corresponding states should also be reset.
Otherwise the next GPS measurement will be compared to an invalid previous state and will be rejected.
The position state should be reset to a GPS position corrected for velocity and measurement latency. This will make a noticeable difference for high speed flight vehicles, eg 11m at 50m/s
2014-12-06 18:16:43 +11:00
priseborough
cb4d5986e0
AP_OpticalFlow : Update PX4Flow interface
...
Interface now uses the integral of flow and body rates
2014-12-06 18:16:43 +11:00
priseborough
0d774d301d
AP_OpticalFlow : Remove support for ADNS3080 sensor
...
It is not compatible with the new interface and data fusion requirements
2014-12-06 18:16:43 +11:00
Randy Mackay
4452aa8448
AP_AHRS_DCM: compile error fix for low speed CPUs
...
Also correct initialisatoin order to remove compiler warning
2014-12-05 19:43:05 +09:00
Jonathan Challinger
bfe71fea82
AC_PosControl: Use blended accelerometer measurement in altitude control
2014-12-05 19:40:10 +09:00
Jonathan Challinger
9261dfdefb
AP_AHRS_NavEKF: overload get_accel_ef and get_accel_ef_blended functions
2014-12-05 19:40:08 +09:00
Jonathan Challinger
4975cefd84
AP_AHRS_DCM: update _accel_ef_blended
2014-12-05 19:40:06 +09:00
Jonathan Challinger
033ee3c900
AP_AHRS: Add get_accel_ef_blended function
2014-12-05 19:40:04 +09:00
Jonathan Challinger
7692761f34
AP_NavEKF: Added getAccelNED function
2014-12-05 19:40:01 +09:00
priseborough
874d0780aa
AP_NavEKF: Reduce vulnerability to ground fixed magnetic interference
...
Re-initialisation of the magnetic field states and yaw angle is now only performed a maximum of two times after start-up.
Once when coming out of static modefor the first time (first arm event)
Again (for copter only) when the altitude gain above the arming altitude exceeds 1.5m
this prevents magnetic interference present at arming (eg arming on a metal roof)from corrupting the magnetic field states enough to cause bad heading errors and toilet bowling on copter
2014-12-05 14:33:04 +11:00
Andrew Tridgell
ede920f293
AP_Mission: ensure location options are zero at start of mavlink conversion
2014-12-03 18:29:43 +11:00
Andrew Tridgell
f98e283091
GCS_MAVLink: re-generate with updated upstream mavlink
2014-12-03 10:08:36 +11:00
Andrew Tridgell
940966f3e3
DataFlash: fixed example sketch build
2014-12-03 08:39:36 +11:00
Andrew Tridgell
86bf02d64c
RC_Channel: update example sketch to copy input to output
2014-12-02 16:27:33 +11:00
Andrew Tridgell
5aabfd4dc4
AP_HAL: added RCInput example sketch
2014-12-02 15:49:50 +11:00
Andrew Tridgell
8e36c1cd60
AP_HAL: fixed RCOutput example
2014-12-02 15:03:59 +11:00
Andrew Tridgell
4ec6a74829
AP_HAL: addex UART_test example sketch
2014-12-02 13:14:03 +11:00
Andrew Tridgell
9e0a7e6631
AP_HAL: fixed printf example build
2014-12-02 13:14:03 +11:00
Andrew Tridgell
c5e4e8f035
SITL: fixed SITL for example sketches
...
cope with no SITL object
2014-12-02 13:14:03 +11:00
Randy Mackay
9e731550fd
AHRS: default EKF on for copter
2014-12-01 17:29:39 +09:00
priseborough
053c5054f3
AP_TECS: Change default landing damp gain to 0.5
2014-11-29 20:03:49 +11:00
priseborough
0912f05e7c
AP_TECS: Add parameter to adjust height rate gain during flare
2014-11-29 20:03:41 +11:00
priseborough
11aefa6858
AP_TECS: Fix bug in parameter label
2014-11-29 20:03:37 +11:00
priseborough
bd97f15d06
AP_TECS: make flare height demand consistent with height rate demand
2014-11-29 20:03:34 +11:00
Holger Steinhaus
ebed80cd2a
AP_GPS: work-around for invalid time reported by PX4 GPS
2014-11-28 13:30:21 +01:00
Holger Steinhaus
df7c4baed9
AP_GPS: check lock type before accepting position and speed information
2014-11-28 13:26:51 +01:00
Andrew Tridgell
38c1b622f3
AP_AHRS: fixed example build on APM2
2014-11-28 17:59:18 +11:00
Andrew Tridgell
48abfcede7
AP_Scheduler: added example sketch
2014-11-28 12:59:47 +11:00
Andrew Tridgell
89cdae62b4
AP_AHRS: fixed example build
2014-11-28 10:40:52 +11:00
Andrew Tridgell
e45522f51d
AP_Baro: fixed example build
2014-11-28 10:40:43 +11:00
Andrew Tridgell
a686494127
AP_Compass: fixed example build
2014-11-28 10:40:34 +11:00
Andrew Tridgell
908ad46e8e
AP_GPS: fixed example build
2014-11-28 10:40:26 +11:00
Andrew Tridgell
7bb56e50aa
AP_InertialSensor: fixed example build
2014-11-28 10:40:19 +11:00
Andrew Tridgell
0811f9c175
AP_Notify: fixed example build
2014-11-27 17:27:56 +11:00