Commit Graph

9812 Commits

Author SHA1 Message Date
Caio Marcelo de Oliveira Filho
753956bd77 AP_Dataflash: use millis/micros/panic functions 2015-11-20 12:35:00 +09:00
Caio Marcelo de Oliveira Filho
0aa520a273 AP_Terrain: use millis/micros/panic functions 2015-11-20 12:34:53 +09:00
Caio Marcelo de Oliveira Filho
c70dda526c AP_TECS: use millis/micros/panic functions 2015-11-20 12:34:46 +09:00
Caio Marcelo de Oliveira Filho
7c9a5dc1b9 AP_ServoRelayEvents: use millis/micros/panic functions 2015-11-20 12:34:39 +09:00
Caio Marcelo de Oliveira Filho
81186e5416 AP_Scheduler: use millis/micros/panic functions 2015-11-20 12:34:17 +09:00
Caio Marcelo de Oliveira Filho
82a14b183d AP_RangeFinder: use millis/micros/panic functions 2015-11-20 12:34:10 +09:00
Caio Marcelo de Oliveira Filho
5344d95ef5 AP_Rally: use millis/micros/panic functions 2015-11-20 12:34:04 +09:00
Caio Marcelo de Oliveira Filho
9639add306 AP_RPM: use millis/micros/panic functions 2015-11-20 12:33:57 +09:00
Caio Marcelo de Oliveira Filho
26c06ae3a9 AP_PerfMon: use millis/micros/panic functions 2015-11-20 12:33:33 +09:00
Caio Marcelo de Oliveira Filho
d186704724 AP_Parachute: use millis/micros/panic functions 2015-11-20 12:33:26 +09:00
Caio Marcelo de Oliveira Filho
5b06924779 AP_OpticalFlow: use millis/micros/panic functions 2015-11-20 12:33:19 +09:00
Caio Marcelo de Oliveira Filho
daee8e8e76 AP_Notify: use millis/micros/panic functions 2015-11-20 12:33:13 +09:00
Caio Marcelo de Oliveira Filho
8d882b06dd AP_NavEKF2: use millis/micros/panic functions 2015-11-20 12:32:41 +09:00
Caio Marcelo de Oliveira Filho
e3c317b96b AP_NavEKF: use millis/micros/panic functions 2015-11-20 12:32:31 +09:00
Caio Marcelo de Oliveira Filho
0b2184b818 AP_Mount: use millis/micros/panic functions 2015-11-20 12:32:24 +09:00
Caio Marcelo de Oliveira Filho
513f4fe986 AP_Motors: example uses millis/micros/panic functions 2015-11-20 12:32:16 +09:00
Caio Marcelo de Oliveira Filho
01e4265ce1 AP_Mission: example uses millis/micros/panic functions 2015-11-20 12:32:09 +09:00
Caio Marcelo de Oliveira Filho
f20a4e413c AP_Mission: use millis/micros/panic functions 2015-11-20 12:32:03 +09:00
Caio Marcelo de Oliveira Filho
8257e6ab89 AP_Math: examples use millis/micros/panic functions 2015-11-20 12:31:55 +09:00
Caio Marcelo de Oliveira Filho
5292bc0054 AP_HAL: example uses millis/micros/panic functions 2015-11-20 12:31:48 +09:00
Caio Marcelo de Oliveira Filho
d7601095fa AP_InertialSensor: use millis/micros/panic functions 2015-11-20 12:31:41 +09:00
Caio Marcelo de Oliveira Filho
87b9b4463e AP_IRLock: use millis/micros/panic functions 2015-11-20 12:31:35 +09:00
Caio Marcelo de Oliveira Filho
2314578f6f AP_HAL_VRBRAIN: use millis/micros/panic functions 2015-11-20 12:31:28 +09:00
Caio Marcelo de Oliveira Filho
85d12efbef AP_HAL_SITL: use millis/micros/panic functions 2015-11-20 12:31:20 +09:00
Caio Marcelo de Oliveira Filho
a76c9e0051 AP_HAL_PX4: use millis/micros/panic functions 2015-11-20 12:31:13 +09:00
Caio Marcelo de Oliveira Filho
7675913d5b AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
Caio Marcelo de Oliveira Filho
f03eec59d6 AP_HAL_FLYMAPLE: use millis/micros/panic functions 2015-11-20 12:30:55 +09:00
Caio Marcelo de Oliveira Filho
c33b86a783 AP_GPS: use millis/micros/panic functions 2015-11-20 12:30:48 +09:00
Caio Marcelo de Oliveira Filho
2b982d6391 AP_FrSkyTelem: use millis/micros/panic functions 2015-11-20 12:30:41 +09:00
Caio Marcelo de Oliveira Filho
032acaaee4 AP_EPM: use millis/micros/panic functions 2015-11-20 12:30:34 +09:00
Caio Marcelo de Oliveira Filho
0ae2fe6fcd AP_Declination: example uses millis/micros/panic functions 2015-11-20 12:30:27 +09:00
Caio Marcelo de Oliveira Filho
cd7cfdef91 AP_Compass: examples use millis/micros/panic functions 2015-11-20 12:30:20 +09:00
Caio Marcelo de Oliveira Filho
86954cda0e AP_CompassCalibrator: use millis/micros/panic functions 2015-11-20 12:30:14 +09:00
Caio Marcelo de Oliveira Filho
0d3fbbdd37 AP_Compass: use millis/micros/panic functions 2015-11-20 12:30:05 +09:00
Caio Marcelo de Oliveira Filho
89d6acaeaa AP_BoardConfig: use millis/micros/panic functions 2015-11-20 12:29:58 +09:00
Caio Marcelo de Oliveira Filho
3b4e18043b AP_BattMonitor: examples use millis/micros/panic functions 2015-11-20 12:29:52 +09:00
Caio Marcelo de Oliveira Filho
9eb945d24f AP_BattMonitor: use millis/micros/panic functions 2015-11-20 12:29:45 +09:00
Caio Marcelo de Oliveira Filho
8cce3067f4 AP_Baro: examples use millis/micros/panic functions 2015-11-20 12:29:38 +09:00
Caio Marcelo de Oliveira Filho
5a280838f8 AP_Baro: use millis/micros/panic functions 2015-11-20 12:29:31 +09:00
Caio Marcelo de Oliveira Filho
b8f0beab83 AP_Arming: use millis/micros/panic functions 2015-11-20 12:29:24 +09:00
Caio Marcelo de Oliveira Filho
410bbe4c26 AP_Airspeed: examples use millis/micros/panic functions 2015-11-20 12:29:16 +09:00
Caio Marcelo de Oliveira Filho
2b10e0fac0 AP_Airspeed: use millis/micros/panic functions 2015-11-20 12:29:07 +09:00
Caio Marcelo de Oliveira Filho
3a17c858e3 AP_AHRS: use millis/micros/panic functions 2015-11-20 12:29:00 +09:00
Caio Marcelo de Oliveira Filho
4ea45b8df1 AP_AHRS_NavEKF: use millis/micros/panic functions 2015-11-20 12:28:53 +09:00
Caio Marcelo de Oliveira Filho
55e61538b3 AP_AHRS_DCM: use millis/micros/panic functions 2015-11-20 12:28:45 +09:00
Caio Marcelo de Oliveira Filho
b293fb150c AP_ADC: use millis/micros/panic functions 2015-11-20 12:28:36 +09:00
Caio Marcelo de Oliveira Filho
b331ffdd91 APM_OBC: use millis/micros/panic functions 2015-11-20 12:28:28 +09:00
Caio Marcelo de Oliveira Filho
fe718a6ce8 APM_Control: use millis/micros/panic functions 2015-11-20 12:28:20 +09:00
Caio Marcelo de Oliveira Filho
e867a06383 AC_WPNav: use millis/micros/panic functions 2015-11-20 12:28:13 +09:00
Caio Marcelo de Oliveira Filho
70d0ea9151 AC_Sprayer: use millis/micros/panic functions 2015-11-20 12:28:04 +09:00
Caio Marcelo de Oliveira Filho
ccd03bcf60 AC_Fence: use millis/micros/panic functions 2015-11-20 12:27:11 +09:00
Caio Marcelo de Oliveira Filho
ea08b6115d AC_AttControl: use millis/micros/panic functions 2015-11-20 12:27:03 +09:00
Caio Marcelo de Oliveira Filho
7662c2e73f AP_HAL_VRBRAIN: implement new AP_HAL functions
Implement the new AP_HAL functions and use them in the Scheduler when
possible.
2015-11-20 12:25:42 +09:00
Caio Marcelo de Oliveira Filho
79721feb14 AP_HAL_FLYMAPLE: implement new AP_HAL functions
Implement the new AP_HAL functions and use them in the Scheduler when
possible.

Because the functions are in a namespace, there's no need to do the
define/undef trick and avoid the globals millis() and micros() provided
by libmaple.
2015-11-20 12:25:41 +09:00
Caio Marcelo de Oliveira Filho
8db8b9b355 AP_HAL_PX4: implement new AP_HAL functions
Implement the new AP_HAL functions and use them in the Scheduler when
possible.
2015-11-20 12:25:40 +09:00
Caio Marcelo de Oliveira Filho
ff016c4b5a AP_HAL_Linux: implement new AP_HAL functions
Implement the new AP_HAL functions and use them in the Scheduler when
possible.

The '_sketch_start_time' was renamed and moved as a detail of
implementation of the functions code. It allows the code to return time
starting from zero.

The 'stopped_clock_usec' was renamed to follow convention in the file
and add a getter so that AP_HAL functions can reach it. It's not a
problem this getter is public because in practice, regular code
shouldn't even access the Linux::Scheduler directly -- only code that
should is from Linux implementation.
2015-11-20 12:25:39 +09:00
Caio Marcelo de Oliveira Filho
3ef77617fd AP_HAL_SITL: implement new AP_HAL functions
Implement the new AP_HAL functions and use them in the Scheduler when
possible.

The '_sketch_start_time' was renamed and moved as a detail of
implementation of the functions code. It allows the code to return time
starting from zero.

The 'stopped_clock_usec' was renamed to follow convention in the file
and add a getter so that AP_HAL functions can reach it. It's not a
problem this getter is public because in practice, regular code
shouldn't even access the SITLScheduler directly -- only code that
should is from SITL itself.
2015-11-20 12:25:38 +09:00
Caio Marcelo de Oliveira Filho
efbc7648b1 AP_HAL: create AP_HAL namespace and use for some HAL functionality
For certain basic functionality, there aren't much benefit to be able to
vary the implementation easily at runtime. So instead of using virtual
functions, use regular functions that are "resolved" at link time. The
implementation of such functions is provided per board/platform.

Examples of functions that fit this include: getting the current
time (since boot), panic'ing, getting system information, rebooting.

These functions are less likely to benefit from the indirection provided
by virtual interfaces. For more complex hardware access APIs the
indirection makes more sense and ease the testing (when we have it!).

The idea is that instead of calling

    hal.scheduler->panic("on the streets of london");

now use

    AP_HAL::panic("on the streets of london");

A less important side-effect is that call-site code gets
smaller. Currently the compiler needs to get the hal, get the scheduler
pointer, get the right function pointer in the vtable for that
scheduler. And the call must include an extra parameter ("this"). Now it
will be just a function call, with the address resolved at link time.

This patch introduces the first functions that will be in the namespace,
further patches will implementations for each board and then switch the
call-sites. The extra init() function allow any initial setup needed for
the functions to work.
2015-11-20 12:25:24 +09:00
Jonathan Challinger
f9c7f15052 AC_WPNav: WPNAV_LOIT_SPEED WPNAV_LOIT_MAXA take effect immediately 2015-11-18 22:12:39 +09:00
Paul Riseborough
ff2782b790 AP_NavEKF2: Parameter changes to reduce noise on gyro bias estimates 2015-11-18 20:17:03 +09:00
Paul Riseborough
2193103586 AP_NavEKF: Reduce time to switch after an IMU fault
This revised threshold value is still double the maximum that has been observed in flight logs so far with healthy sensors
The previous value was too slow to switch for sudden IMU gyro faults
We can afford an ocasional false trigger becasue the front end will only select another instance if it is healthy and has lower errors
2015-11-18 20:17:00 +09:00
Paul Riseborough
20798316e1 AP_NavEKF2: fix bug in performance timer 2015-11-18 20:16:58 +09:00
Randy Mackay
c9340dbeb6 AC_PosControl: run velocity controller z-axis at 400hz 2015-11-18 13:31:21 +09:00
Randy Mackay
dbc8ce1d69 AC_PosControl: default z-axis controller to 400hz
No functional change as vehicle code always sets it explicitely
2015-11-18 13:31:20 +09:00
Randy Mackay
323a527734 AC_PosControl: velocity controller uses feed-forward althold 2015-11-18 13:31:19 +09:00
Randy Mackay
4b41710261 AC_AttControl: minor comment fix 2015-11-18 13:31:18 +09:00
Caio Marcelo de Oliveira Filho
a348424551 AP_HAL: remove unused function
This was used by APM1/2 that were removed.
2015-11-18 11:50:56 +09:00
Andrew Tridgell
5561efde2b AP_NavEKF: we can assume get_sample_rate() returns a non-zero number
this fixes a build error with the previous patch
2015-11-18 11:48:50 +11:00
Paul Riseborough
e32e6cfa67 AP_NavEKF: Protect against bad delta time from the INS library
Prevent arithmetic divide by zero exceptions and handle invalid delta time in a consistent way by setting invalid times to the average.
2015-11-18 11:43:40 +11:00
Paul Riseborough
2fb5a4489b AP_NavEKF2: Prevent airspeed faults from causing excessive loss of accuracy 2015-11-18 11:39:54 +11:00
Paul Riseborough
fc6978e4d9 AP_NavEKF2: Fix error in parameter documentations 2015-11-18 11:39:54 +11:00
Paul Riseborough
f9cadaf15c AP_NavEKF2: Increase resolution of innovation consistency gate parameters
Also adds protection against setting the gate to a number that would casue numerical errors.
2015-11-18 11:39:53 +11:00
Andrew Tridgell
08ef00b431 AP_NavEKF2: fixed build with IMU_BUFFER_LENGTH change 2015-11-18 11:33:51 +11:00
Paul Riseborough
af3507ef3c AP_NavEKF2: Stop bad INS velocity spoiling height reset
We should reset the velocity as well as the height if a reasonable reset value is available.
2015-11-18 11:18:50 +11:00
Paul Riseborough
97799ef0b3 AP_NavEKF2: Ensure that GPS origin is set before using data for height 2015-11-18 11:18:50 +11:00
Paul Riseborough
b8427e5d95 AP_NavEKF2: Only allow rangefinder height option during optical flow nav 2015-11-18 11:18:50 +11:00
Paul Riseborough
c9eea98142 AP_NavEKF2: Improve terrain height estimation
The ad-hoc scaling of error growth has been replaced with a consistent method that uses the main nav filters published vertical velocity uncertainty and the terrain gradient assumption.
2015-11-18 11:18:46 +11:00
Paul Riseborough
d820a538d5 AP_NavEKF2: Make magnetometer data available status global
This assists with debugging and makes it consistent with other measurements that are buffered
2015-11-18 11:18:46 +11:00
Paul Riseborough
04228e0b3b AP_NavEKF2: Rework selection of height measurements for fusion
GPS height has been added as a measurement option along with range finder and baro
Selection of the height measurement source has been moved into a separate function
Each height source is assigned its own measurement noise
If GPS or baro alt is not able to be used, it reverts to baro
When baro is not being used, an offset is continually calculated which enables a switch to baro without a height step.
2015-11-18 11:18:42 +11:00
Paul Riseborough
80bc64ee7a AP_NavEKF2: Update parameter documentation with GPS height source option 2015-11-18 11:18:18 +11:00
Paul Riseborough
4c72a14e22 AP_NavEKF2: Add function to LPF and spike filter baro data 2015-11-18 11:18:17 +11:00
Paul Riseborough
34311bedfa AP_NavEKF2: Add data buffers for range finder data 2015-11-18 11:18:17 +11:00
Andrew Tridgell
99da195e37 AP_NavEKF2: make IMU buffer length depend on main loop rate
this fixes a problem with Replay and baro data
2015-11-18 10:20:39 +11:00
Andrew Tridgell
f36b2e415a AP_InertialSensor: fixed flymaple build 2015-11-17 08:52:49 +11:00
Andrew Tridgell
32ed0d58f3 AP_InertialSensor: fixed filter setup on 2nd accel/gyro 2015-11-16 17:57:36 +11:00
Andrew Tridgell
e1cb9beeef SITL: expose update rate to HAL_SITL
and fixed dataflash reference loop
2015-11-16 17:57:36 +11:00
Andrew Tridgell
95ca0b39a8 HAL_SITL: moved virtual INS sensor to AP_InertialSensor_SITL 2015-11-16 17:57:35 +11:00
Andrew Tridgell
4a768d47f3 AP_InertialSensor: created a SITL specific backend 2015-11-16 17:57:35 +11:00
Andrew Tridgell
2675edcb96 HAL_SITL: removed unused variables 2015-11-16 17:57:35 +11:00
Andrew Tridgell
ccd915eb67 AP_InertialSensor: moved raw gyro and accel logging to common code
this brings raw logging to non-PX4 ports
2015-11-16 17:57:35 +11:00
Andrew Tridgell
75ea8f3dc0 AP_InertialSensor: removed "have sample" logic from drivers
the frontend has all the information it needs, so we can simplify the
drivers some more
2015-11-16 17:57:35 +11:00
Andrew Tridgell
0e4bab74ba AP_InertialSensor: simplify sensor backends
use common code for filtering and update, allowing each sensor driver
to be simpler and more consistent
2015-11-16 17:57:35 +11:00
Randy Mackay
36c0beb918 GPS_UBlox: reorder init to resolve compiler warning
Also removed duplicate init of noReceivedHdop
2015-11-16 15:09:17 +09:00
Paul Riseborough
9b82b2200c AP_NavEKF2: Fix plane in-flight yaw reset
The copter method was being used for plane and the plane method was not being run due to the change in flight status not being detected.
The plane reset method did not trigger if the EKF had already dragged the velocity states along with the GPS or could align to an incorrect heading.
The method has been reworked so that it resets to the GPS course, but only if there are inconsistent angles and large innovations.
To stop a failed magnetometer causing a loss of yaw reference later in flight, if all available sensors have been tried in flight and timed out, then no further magnetoemter data will be used
2015-11-16 09:05:42 +11:00
Paul Riseborough
e8706db382 AP_NavEKF2: Update IMU tuning parameter limits 2015-11-16 09:05:42 +11:00
Paul Riseborough
0562529729 AP_NavEKF2: Tuning changes to make attitude less sensitive to GPS and compass errors 2015-11-16 09:05:42 +11:00
Andrew Tridgell
3549c717db Filter: removed reference to old 'Desktop' build 2015-11-16 08:06:05 +11:00
Andrew Tridgell
8f4ce7f20b build: removed all nocore.inoflag files
these were APM2 specific
2015-11-16 08:05:17 +11:00
Andrew Tridgell
1ffe899a18 PID: fixed example build 2015-11-16 08:04:44 +11:00
Andrew Tridgell
9ea99cba29 HAL_Linux: fixed example build 2015-11-16 08:04:35 +11:00