Caio Marcelo de Oliveira Filho
6fc60e2d5e
AP_HAL: remove unused init() from the interface
...
And make run() pure virtual to ensure future implementations provide it.
2015-10-21 09:16:08 +11:00
Caio Marcelo de Oliveira Filho
fe1dd1be25
AP_HAL_VRBRAIN: implement HAL::run()
2015-10-21 09:16:08 +11:00
Caio Marcelo de Oliveira Filho
0dab23c4df
AP_HAL_PX4: implement HAL::run()
2015-10-21 09:16:08 +11:00
Caio Marcelo de Oliveira Filho
3fe1d86c80
AP_HAL_AVR: implement HAL::run() for APM1 and APM2
2015-10-21 09:16:08 +11:00
Caio Marcelo de Oliveira Filho
51bc25a2ab
AP_HAL_FLYMAPLE: implement HAL::run()
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho
32dc822470
AP_HAL_Linux: implement HAL::run()
...
Added a note about the different ordering between setup callback and
scheduler initialized call.
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho
c6292ff097
AP_HAL_SITL: implement HAL::run()
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho
346ab77c27
AP_HAL_Empty: implement HAL::run()
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho
72cd5ef185
AP_HAL: add run() method
...
Add run method, that encapsulate any mainloop logic on behalf of the
client code. The setup/loop functions are passed via a HAL::Callbacks
interface. The AP_HAL_MAIN() macro should be kept as trivial as
possible.
This interface should be implemented by the existing vehicle objects. To
make easy for the examples (that don't have the equivalent of vehicle
objects), a FunCallbacks was added to bridge to the functions directly.
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho
ec52df991c
build: compile only the HAL files needed by the board
...
Instead of requiring every program to specify the HAL related modules,
let the build system do it (in practice everything we compiled depended
on HAL anyway). This allow including only the necessary files in the
compilation.
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho
2e464a53c2
AP_HAL: make code not depend on concrete HAL implementations
...
The switching between different AP_HAL was happening by giving different
definitions of AP_HAL_BOARD_DRIVER, and the programs would use it to
instantiate.
A program or library code would have to explicitly include (and depend)
on the concrete implementation of the HAL, even when using it only via
interface.
The proposed change move this dependency to be link time. There is a
AP_HAL::get_HAL() function that is used by the client code. Each
implementation of HAL provides its own definition of this function,
returning the appropriate concrete instance.
Since this replaces the job of AP_HAL_BOARD_DRIVER, the definition was
removed.
The static variables for PX4 and VRBRAIN were named differently to avoid
shadowing the extern symbol 'hal'.
2015-10-21 09:16:07 +11:00
Andrew Tridgell
79d85f7e10
AP_AHRS: wait for up to 10 samples to get a valid accel vector
...
the initial accel vectors can be invalid
2015-10-21 09:09:11 +11:00
Andrew Tridgell
eac91430a2
AP_AHRS: update _dcm_attitude() on reset()
...
this prevents the roll/pitch being overwritten by the AHRS_NavEKF
update code on next update
2015-10-21 08:58:30 +11:00
Jonathan Challinger
c35605fa04
AP_AHRS_DCM: align tilt during initialization
2015-10-21 08:34:02 +11:00
Jonathan Challinger
78af6d61de
AP_Compass: only play compass cal cancel tone if a cal was running
2015-10-21 08:24:49 +11:00
Jonathan Challinger
3b480bd6ec
AP_InertialSensor: fix order of accelerometer corrections
2015-10-21 08:22:36 +11:00
Jonathan Challinger
562db11159
AP_Compass: fix potential AP_Notify concurrency problem
2015-10-20 20:54:02 +09:00
Andrew Tridgell
3af4a7fee7
autotest: make CopterAVC use EKF2
...
this gives some testing of EKF2 in autotest
2015-10-20 21:00:59 +11:00
Paul Riseborough
cd8b9c7d26
AP_NavEKF: prevent high rate mag data locking out other data fusion
2015-10-20 20:16:04 +11:00
Paul Riseborough
ab8c28a7cc
AP_NavEKF: Fix bug allowing takeoff in GPS modes without aiding
...
The legacy EKF switches GPs aiding on on arming, whereas the new EKF switches it on based on GPS data quality.
This means the decision to arm and therefore the predicted solution flags must now reflect the actual status of the navigation solution as it will no longer change when motor arming occurs.
2015-10-20 20:16:00 +11:00
Paul Riseborough
e076ed7f66
AP_NavEKF2: Remove compiler warning message
2015-10-20 18:16:16 +11:00
Andrew Tridgell
b0aa7cb990
DataFlash: use new perf API
2015-10-20 18:16:16 +11:00
Andrew Tridgell
cb0f7cb370
NavEKF2: use new perf counter API
2015-10-20 18:16:15 +11:00
Andrew Tridgell
f66966ccae
NavEKF: use new perf counter API
2015-10-20 18:16:15 +11:00
Andrew Tridgell
8dbb51c64e
HAL_PX4: implement AP_HAL::Util perf calls for PX4
2015-10-20 18:09:57 +11:00
Andrew Tridgell
28fa05c965
AP_HAL: added generic perf counter
...
simple wrapper around PX4 API, but ready for use by other HALs
2015-10-20 18:09:57 +11:00
Randy Mackay
3f9d62d6b4
Copter: 3.3.1-rc1 release notes
2015-10-20 16:00:41 +09:00
Randy Mackay
1858a0544f
Copter: guided takeoff checks auto-armed status
...
This resolves an edge case in which the vehicle could takeoff with auto-armed false
2015-10-20 15:51:55 +09:00
Andrew Tridgell
16bc7d8b2e
Tools: fixed datestamp on compiler download
2015-10-20 15:54:44 +11:00
Andrew Tridgell
279a320f44
Tools: switch autobuild to 4.9 compiler
2015-10-20 15:28:13 +11:00
Paul Riseborough
60c2e81d19
AP_NavEKF2: Apply optimisations to declination fusion covariance update
...
These are the same type of optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:41 +11:00
Paul Riseborough
0054291cf4
AP_NavEKF2: Apply optimisations to side-slip fusion covariance update
...
These are the same optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:40 +11:00
Paul Riseborough
5e4bc4e954
AP_NavEKF2: Apply optimisations to airspeed fusion covariance update
...
These are the same optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:40 +11:00
Paul Riseborough
a29147d6d2
AP_NavEKF2: Apply optimisations to optical flow covariance update
...
These are the same optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:40 +11:00
Paul Riseborough
b5e43288d4
AP_NavEKF2: Down to 12 from 14 usec for perf test[8]
2015-10-20 15:21:40 +11:00
Paul Riseborough
0f530bb5a0
AP_NavEKF2: Correct comments
2015-10-20 15:21:40 +11:00
Andrew Tridgell
d1dfd5fd01
AP_NavEKF2: use common header for optimisation level and irq disable
2015-10-20 15:21:40 +11:00
Andrew Tridgell
a017ae7e00
AP_NavEKF2: down to 218us for test[9]
2015-10-20 15:21:40 +11:00
Andrew Tridgell
fc23be8025
AP_NavEKF2: enable fine grained perf tuning for mag fusion
2015-10-20 15:21:40 +11:00
Andrew Tridgell
b6c1352e4c
AP_NavEKF2: added 10 test perf counters
...
used for fine grained performance tuning
2015-10-20 15:21:40 +11:00
Paul Riseborough
824436dfb6
AP_NavEKF2: Explicitly define constants as floats
2015-10-20 15:21:40 +11:00
Paul Riseborough
2fbd050418
AP_NavEKF2: Use blended accelerometer data
...
If high vibration levels cause offsets between the two, it switches to the accelerometer with lower vibration levels. The default behaviour is to use the average of both accelerometers.
2015-10-20 15:21:40 +11:00
Paul Riseborough
240ea92947
AP_NavEKF: Re-center gyro bias limits on arming
...
Allows the gyro bias to vary by up to +-10 deg/second before and after arming.
2015-10-20 15:21:39 +11:00
Paul Riseborough
8515dda727
AP_NavEKF: Fix bug in vertical position derivative calculation
2015-10-20 15:21:39 +11:00
Paul Riseborough
2b13020c19
AP_NavEKF2: Fix bug in vertical position derivative calculation
2015-10-20 15:21:39 +11:00
Paul Riseborough
f6ad79688e
AP_NavEKF2: Update start sequence console messages
2015-10-20 15:21:39 +11:00
Paul Riseborough
6b3e114cd6
AP_NavEKF: Enable EKF1 to be disabled to reduce frame over-runs
2015-10-20 15:21:39 +11:00
Paul Riseborough
1a1236f764
AP_NavEKF2: Update magnetometer fusion documentation
2015-10-20 15:21:39 +11:00
Paul Riseborough
8526a8ba7e
AP_NavEKF2: Level processor loading between frames
...
Don't fuse other measurements on the same frame that magnetometer measurements arrive if running at a high frame rate as there will be insufficient time to complete other operations.
2015-10-20 15:21:39 +11:00
Paul Riseborough
225b81baf4
AP_NavEKF2: Prevent users breaking filter by setting excessive time delays
...
If time deelays greater than the IMU buffer length are used, then it is possible for measurements to be dropped.
2015-10-20 15:21:39 +11:00