Commit Graph

5094 Commits

Author SHA1 Message Date
Niels Joubert
879eb5936b AP_MATH: Adding WGS GPS conversions, CRC16 checks, and double-precision Vectors and Matrices 2014-04-05 13:42:23 +11:00
Niels Joubert
161b5f99b3 SITL: Adding Swift Binary Protocol GPS type 2014-04-05 13:42:23 +11:00
Niels Joubert
552f33b39e AP_GPS: Support fix types of DGPS and RTK 2014-04-05 13:42:23 +11:00
Niels Joubert
64d4a1236f AP_Notify: Support all GPS status flags, with status >= GPS_OK_FIX_3D notified as having a lock 2014-04-05 13:42:23 +11:00
Andrew Tridgell
67ed5b73ef AP_GPS: added lock_port() interface
used by SERIAL_CONTROL message
2014-04-05 07:34:33 +11:00
Andrew Tridgell
b8675b9abc GCS_MAVLink: implement SERIAL_CONTROL MAVLink message 2014-04-05 07:34:33 +11:00
Andrew Tridgell
493c5dd63f GCS_MAVLink: rebuild MAVLink headers 2014-04-04 21:57:22 +11:00
Andrew Tridgell
14b3696959 GCS_MAVLink: added SERIAL_CONTROL message definition
will be used for on-board radio and GPS firmware update and control
over USB
2014-04-04 21:57:22 +11:00
Andrew Tridgell
07d621c4be AP_NavEKF: used state structure in more places
makes the code a bit easier to read

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
2014-04-04 21:30:16 +11:00
priseborough
aa5335b16e AP_NavEKF : Improved GPS position glitch handling
When using GPS after previously rejecting it, the GPS position will
always be offset if outside the specified glitch radius. This was the
original intent of the design and makes handling of glitches smoother.

It has been tested on replay using glitchy flight data
2014-04-04 21:01:22 +11:00
priseborough
b1786cf1e5 AP_NavEKF : Do not reset on GPS velocity timeout if good position data 2014-04-04 21:01:20 +11:00
priseborough
d25883f712 AP_NavEKF : Limit rate of Z accel bias adaptation
Aliasing can causes the bias estimate to fluctuate very rapidly as it tries
to keep up, which degrades the benefit of switching between
accelerometers to avoid aliasing.

This patch give a much more stable bias estimate during aliasing, and
allows the bias to adapt at a maximum rate of 1.0 m/s2 in 50 seconds
2014-04-04 21:01:18 +11:00
priseborough
36b3cbc365 AP_NavEKF : Relax aliasing check limits
This reduces the chance of noisy data inhibiting GPS glitch protection
2014-04-04 21:01:15 +11:00
priseborough
0ae736c3a0 AP_NavEKF : clean up convoluted logic used in sensor health checks
This doesn't change the behavior, but does make the code easier to
understand
2014-04-04 21:01:13 +11:00
Andrew Tridgell
013aaf4d3e GCS_MAVLink: moved comms functions to not be inline
saves a bit of flash space
2014-04-04 13:19:15 +11:00
Andrew Tridgell
d9d038345a AP_GPS: save 800 bytes of code space on APM2
we can assume a single GPS
2014-04-04 10:08:28 +11:00
Andrew Tridgell
9f857529ca AP_GPS: auto-switch primary GPS based on status and number of satellites 2014-04-04 08:32:34 +11:00
Andrew Tridgell
11f196318e RC_Channel: added static functions to simplify operations on all channels
this avoids vehicle code having to loop over all channels for common
operations
2014-04-03 12:18:56 +11:00
Andrew Tridgell
21c205a57e AP_GPS: cope with different MON-HW message size in u-Blox Neo7 2014-04-03 10:55:05 +11:00
Andrew Tridgell
cd3038fabd AP_NavEKF: fixed return of offset in getVariances() 2014-04-03 07:49:06 +11:00
Andrew Tridgell
dcb42af3e9 AP_BattMonitor: fixed example build 2014-04-03 07:49:06 +11:00
Craig Elder
3a92d75936 Ublox: Enable 1Hz Lock LED by default 2014-04-01 20:57:18 -07:00
Andrew Tridgell
067bbf5b5c DataFlash: hdop is unsigned 2014-04-02 07:55:28 +11:00
Andrew Tridgell
e40a048009 AP_GPS: handle multiple GPS in GPS setHIL() 2014-04-02 07:55:28 +11:00
Andrew Tridgell
79f5618f6f AP_GPS: zero state structure on driver release
this ensures no values are left from the previous driver
2014-04-02 07:55:28 +11:00
Randy Mackay
2ddc414f4d InertialNav: replace safe_sqrt with pythagorous2 2014-04-01 20:43:53 +09:00
Randy Mackay
90e205c905 AC_PosControl: replace safe_sqrt with pythagorous2 2014-04-01 20:43:51 +09:00
Randy Mackay
15da01cf3a AC_WPNav: replace safe_sqrt with pythagorous2 2014-04-01 20:43:45 +09:00
Andrew Tridgell
b8e4e35a0d AP_Airspeed: use pythagorous3() 2014-04-01 22:15:12 +11:00
Andrew Tridgell
a7f213a5c5 AP_NavEKF: use pythagorous2() 2014-04-01 22:13:03 +11:00
Andrew Tridgell
9ab1a79b5a AP_Airspeed: changed sqrt() to sqrtf() 2014-04-01 22:09:21 +11:00
priseborough
09c5ba1aed Dataflash : Improved logging of EKF sensor health checks
This changes the definition sof the messages in the EKF4 message to make it more useful
The values shown now relate directly to how much margin there is before a measurement
is rejected, enabling better tuning of error trap parameters
2014-04-01 21:27:07 +11:00
priseborough
04036d7777 AP_NavEKF : Updated GPS glitch protection logic
This adds new functionality to the detection and compensation of GPS
glitches:

1) A maximum allowable innovation is calculated using the GPS noise
parameter multiplied by the gate, with an additional component allowing
for growth in position uncertainty due to acceleration error since
the last valid measurement
2) Includes per vehicle type values for the acceleration error limit
3) If the innovation length exceeds the maximum allowable, no fusion occurs
4) If no fusion has occurred for long enough such that the position uncertainty
exceeds the maximum set by a per vehicle parameter or a maximum time, an offset
is applied to the GPS data to so that it matches the value predicted by the filter
5) The offset is never allowed to be bigger than 100m
6) The offset is decayed to zero at a rate of 1.0 m/s to allow GPS jumps to
be accommodated gradually
7) The default velocity innovation gate has been tightened up for copter and rover
8) The variance data logging output has been updated to make it more useful
2014-04-01 21:22:14 +11:00
Andrew Tridgell
7e2ef0cfc0 AP_GPS: fixed GPS for Replay 2014-04-01 17:25:15 +11:00
Andrew Tridgell
9278685cdf AP_Math: fixed location build on SITL 2014-04-01 14:20:10 +11:00
Andrew Tridgell
77e2f48581 AP_GPS: fixed notify updates for new API 2014-04-01 06:38:25 +11:00
Andrew Tridgell
9781175bf5 AP_GPS: fixed handling of driver destruction
this allows for more complex destructors, and ensures we don't have
multiple backends allocated at once per instance
2014-04-01 06:38:25 +11:00
Andrew Tridgell
7ceba8dce4 AP_GPS: prevent double allocation of GPS drivers 2014-04-01 06:38:25 +11:00
Andrew Tridgell
8779ffe088 AP_GPS: flush pending config strings when uBlox starts 2014-04-01 06:38:25 +11:00
Andrew Tridgell
0191355488 AP_GPS: fixed init strings to all be in progmem
and sent async ...
2014-04-01 06:38:25 +11:00
Andrew Tridgell
bc0c9ad6d5 AP_InertialNav: fixed example build 2014-04-01 06:38:25 +11:00
Andrew Tridgell
35c111a63a AP_AHRS: fixed example build 2014-04-01 06:38:25 +11:00
Andrew Tridgell
7b2d56a8cb AC_Fence: disable example build
fails to build with compiler error
2014-04-01 06:38:25 +11:00
Andrew Tridgell
3b8c6e629d AC_AttitudeControl: updated example for new GPS API 2014-04-01 06:38:25 +11:00
Andrew Tridgell
c2486d8d6e AP_GPS: updated examples for new API
removed old per-driver examples, and updates AUTO example
2014-04-01 06:38:25 +11:00
Andrew Tridgell
d04d33a02d AP_InertialNav: convert to new GPS API 2014-04-01 06:38:24 +11:00
Andrew Tridgell
5a2e84e792 AP_NavEKF: changes for new GPS API 2014-04-01 06:38:24 +11:00
Andrew Tridgell
b7a2db716b AP_Arming: convert to new GPS API 2014-04-01 06:38:24 +11:00
Andrew Tridgell
eb67948171 AP_Mount: convert to new GPS API 2014-04-01 06:38:24 +11:00
Andrew Tridgell
f07e4dee52 AP_AHRS: convert to new GPS API 2014-04-01 06:38:24 +11:00
Andrew Tridgell
31d3b6555f DataFlash: convert to new GPS API 2014-04-01 06:38:23 +11:00
Andrew Tridgell
368daf89f1 AP_GPS: new GPS API
This is a complete rewrite of the GPS driver structure, with a static
main driver and separate backend drivers. This will allow proper
support for multiple GPSes, and will allow parameters to be set on the
GPS object
2014-04-01 06:38:23 +11:00
Andrew Tridgell
2dd92832dc AP_GPS: support multiple AP_GPS_Auto drivers
move all static variables into a dynamically allocated structure in
the AUTO driver which gets freed when we have found a GPS type
2014-04-01 06:38:23 +11:00
Andrew Tridgell
3c4389180e AP_GPS: removed GPS_406 driver
this driver was untested and badly structured. If we want to support
the 406 we can revive it and do it properly
2014-04-01 06:38:23 +11:00
Jonathan Challinger
f0fc0397d3 Notify: add arming failure tone 2014-03-31 20:34:27 +09:00
Randy Mackay
7bb981f2df AP_Notify: correct dos formatting 2014-03-31 20:34:24 +09:00
Andrew Tridgell
31082f4ce2 AP_Mission: fixed a bug re-entering AUTO
this fixes a bug found by Marco where we would continue in CRUISE mode
with no waypoint if we re-entered AUTO after a mission reset
2014-03-31 06:18:07 +11:00
Randy Mackay
93f8d53d1b Mission: make get_prev_nav_cmd_index const 2014-03-30 23:09:54 +09:00
Randy Mackay
b15d4379d8 AC_WPNav: use atan2f, make methods const 2014-03-30 23:09:51 +09:00
Randy Mackay
3ad635feeb AC_AttControl: 45deg/sec yaw rate for Auto, RTL 2014-03-30 15:44:14 +09:00
Randy Mackay
d27ca53a9d AC_WPNav: spline sets origin vel to zero when no prev segment
Issue caught by Michael Oborne
2014-03-30 15:19:18 +09:00
Randy Mackay
7dfde39e19 AC_WPNav: advance_spline to use dt 2014-03-30 15:02:07 +09:00
Randy Mackay
c0458b786a AC_WPNav: check acceleration is non zero 2014-03-30 11:52:44 +09:00
Randy Mackay
f0f3688172 AC_WPNav: rounder corners for short spline segments 2014-03-30 11:52:41 +09:00
priseborough
9c5f564dc5 AP_NavEKF : Fixes bug in initial earth magnetic field states
The calculation for these states was not being bias corrected
2014-03-30 07:43:52 +11:00
Randy Mackay
7bff8e9312 AC_AttControl: constrain earth frame yaw angle error
This temporarily resolves the wobble we see in Auto when the target
heading is suddenly changed leading to a large yaw angle error
2014-03-29 20:42:21 +09:00
Randy Mackay
197683d539 WPNav: clean up spline comments 2014-03-29 17:57:47 +09:00
priseborough
e1819bb53a AP_NavEKF : Add initial parameter defaults for Copter, Rover and Plane 2014-03-29 14:06:43 +11:00
Randy Mackay
ac339a0289 Mission: add decoding of NAV_SPLINE command 2014-03-28 09:23:30 +09:00
Randy Mackay
e7be622eef GCS_MAVLink: generate after adding NAV_SPLINE cmd 2014-03-28 09:23:28 +09:00
Randy Mackay
519d5fc444 GCS_MAVLink: add MAV_CMD_NAV_SPLINE_WAYPOINT cmd
This is the same as a NAV_WAYPOINT except that the vehicle flies a
spline curved path to the destination
2014-03-28 09:23:23 +09:00
Randy Mackay
24eb195aa3 WPNav: add yaw control for straight line wp nav 2014-03-28 09:23:13 +09:00
Randy Mackay
b42b12f7be AC_WPNav: add get_spline_yaw 2014-03-28 09:23:07 +09:00
Randy Mackay
f2d9ad41aa Mission: minor comment update 2014-03-28 09:22:56 +09:00
Randy Mackay
e5e71ce371 WPNav: add spline support 2014-03-28 09:22:53 +09:00
Michael Day
e1d193f539 GCS_MAVLink: Generated code from message additions for autofence. 2014-03-27 09:26:20 +11:00
Michael Day
c5ebd120f1 GCS_MAVLink: XML for MAV_CMD_DO_FENCE_ENABLE and MAV_SYS_STATUS_GEOFENCE 2014-03-27 09:26:20 +11:00
priseborough
55c60b8f07 AP_NavEKF : Reduce Magnetometer innovation consistency check threshold 2014-03-26 21:29:47 +11:00
priseborough
45b1a2fa46 AP_NavEKF : Reduce GPS position innovation consistency fail threshold
This patch reduces the maximum acceptable GPS jump from approximately 16 to 8 metres
This will provide copters with more protection for close in loiter situations
2014-03-26 21:29:45 +11:00
Andrew Tridgell
8c0c9c317e RC_Channel: prevent a numerical exception with bad mount parameters 2014-03-26 17:38:27 +11:00
Andrew Tridgell
bafc664750 AP_NavEKF: use APM_BUILD_TYPE() macro 2014-03-26 12:42:11 +11:00
Andrew Tridgell
fbec098e2f AP_Vehicle: added APM_BUILD_TYPE() macro
this makes checking build type less fragile
2014-03-26 12:41:53 +11:00
Andrew Tridgell
e3792f9b26 AP_NavEKF: added a mechanism for per-vehicle-type defaults in EKF 2014-03-26 12:30:17 +11:00
Andrew Tridgell
6b2f0b9553 AP_Vehicle: added defines for main vehicle types 2014-03-26 12:15:45 +11:00
Andrew Tridgell
6bf2b5033e DataFlash: support logging up to 14 RC input channels 2014-03-25 16:39:19 +11:00
Andrew Tridgell
6039eab442 RC_Channel: support up to 12 aux channels on PX4
this allows RC13 and RC14 to work correctly as aux outputs on Pixhawk
2014-03-25 15:42:48 +11:00
Andrew Tridgell
64772cede8 GCS_MAVLink: rebuild MAVLink headers 2014-03-25 14:47:43 +11:00
Andrew Tridgell
d24547b390 GCS_MAVLink: merge latest msgs from upstream 2014-03-25 14:47:05 +11:00
Andrew Tridgell
6eee2421cc AP_HAL: removed RCInput valid_channels() and added new_input() and num_channels()
the valid_channels() method was inconsistently implemented between
boards, and served two quite different purposes. It is clearer as two
functions
2014-03-25 14:39:41 +11:00
Andrew Tridgell
27dbf608c8 DataFlash: fixed a build warning 2014-03-25 13:31:21 +11:00
Andrew Tridgell
2a9a89e020 HAL_PX4: fixes for merged upstream PX4Firmware 2014-03-25 10:30:00 +11:00
priseborough
17cdac7bc8 AP_NavEKF : Clean up angle and mag field initialisation
This path reduces duplicated code, eliminates unused variables and
causes the earth magnetic field states to be reset when exiting static mode
which will occur every time copter is armed. This enables copters to be
powered on and initialised inside vehicles or houses, without bad earth
field values affecting flight.
2014-03-24 19:54:48 +11:00
Andrew Tridgell
f05b90bfd2 GCS_MAVLink: fixed some compiler warnings 2014-03-24 12:52:39 +11:00
Andrew Tridgell
0af35bd636 AP_Mission: fixed some compiler warnings 2014-03-24 12:52:27 +11:00
Andrew Tridgell
2763393908 AP_InertialSensor: fixed some compiler warnings 2014-03-24 12:52:16 +11:00
Andrew Tridgell
c6f3e0a81c AP_GPS: fixed example builds 2014-03-24 12:20:34 +11:00
Andrew Tridgell
271ba3a6bc AP_InertialNav: fixed example build 2014-03-24 12:03:47 +11:00
Andrew Tridgell
1b1a92251f DataFlash: allow drivers to setup their own logging formats
this allows drivers to ask the dataflash driver to add new log formats
2014-03-24 12:03:31 +11:00
Andrew Tridgell
5630bb1ef6 AP_GPS: added detailed hardware status logging for uBlox
this gives us noise, jamming and RF information from the uBlox
protocol. This will hopefully allow a more detailed investigation of
antenna choices and RF interference
2014-03-24 12:02:37 +11:00
Andrew Tridgell
7ff293ca38 AP_GPS: added DataFlash to GPS init to allow for detailed logging
this will allow GPS drivers to log much more detailed device specific
information
2014-03-24 12:01:13 +11:00