Commit Graph

12939 Commits

Author SHA1 Message Date
Andrew Tridgell
17a117b324 AP_Compass: be a bit less verbose in startup 2016-11-25 17:50:23 +11:00
Andrew Tridgell
0e4b8781b2 AP_Compass: auto-detect LIS3MDL compass 2016-11-25 17:50:23 +11:00
Andrew Tridgell
b6b2919126 AP_Compass: don't panic on too many compasses
just use the first ones found. Panicing because you have too many
isn't useful
2016-11-25 17:50:23 +11:00
Andrew Tridgell
40ef68f104 AP_Compass: added a LIS3MDL compass driver 2016-11-25 17:50:23 +11:00
Andrew Tridgell
f3a778f980 AP_InertialSensor: fixed freeing of fifo buffer 2016-11-25 17:50:19 +11:00
Andrew Tridgell
6f28c61c8d AP_InertialSensor: changed SIZE to LEN
thanks to Lucas for suggestion
2016-11-25 17:50:19 +11:00
hiro2233
cb7f46d653 AP_InertialSensor: fixed handling of user_ctrl register
with aux bus implementations
2016-11-25 17:50:18 +11:00
Andrew Tridgell
29bbee421e HAL_PX4: enable sharing of SPI bus with PX4 with DMA 2016-11-25 17:50:18 +11:00
Andrew Tridgell
9b4c588c09 AP_InertialSensor: adapt drivers for SPI-DMA capable systems
no longer need accumulate() transfers with SPI enabled DMA on stm32
2016-11-25 17:49:58 +11:00
Andrew Tridgell
3fad5ca065 HAL_PX4: implement DMA allocation routines 2016-11-25 17:49:58 +11:00
Andrew Tridgell
e42bb20052 AP_HAL: added dma allocation routines to hal.util 2016-11-25 17:49:58 +11:00
Andrew Tridgell
28daddaaf2 AP_InertialSensor: don't use accumulate approach on Linux or I2C 2016-11-25 17:49:57 +11:00
Andrew Tridgell
d9c8db7024 AP_InertialSensor: implement a new strategy for fast sampling
this moves to using a 1p filter on the high rate data, followed by
averaging down to 1kHz then a 2p filter to apply configured cutoff
frequency.

It also fixes the FIFO reset to not cause data corruption. We need to
disable all FIFO channels before doing the reset, and wait for the
FIFO to stop in the sensor.

Finally it moves sampling of the MPU6000 and MPU9250 into the main
thread. That significantly improves scheduling performance as we no
longer get long FIFO SPI transfers happening during other tasks. All
transfers happen at the start of the fast loop. That makes timing much
more predictable.

Thanks to Leonard and Paul for help with this design!
2016-11-25 17:49:57 +11:00
Andrew Tridgell
b165e025d9 Filter: added new constructor for 1p filter
allow both sample rate and cutoff to be specified in constructor
2016-11-25 17:49:57 +11:00
Andrew Tridgell
7220dc15f9 HAL_PX4: adjusted bus speeds on invensense sensors 2016-11-25 17:49:57 +11:00
Andrew Tridgell
5934a099a4 AP_HAL: added support for more SRXL varients
based on work by Roman Seb <roman-29188@gmx.de>
2016-11-24 22:54:23 +11:00
priseborough
0a177d04fd AP_NavEKF2: Simply core switch implementation
Functionally equivalent
2016-11-24 19:58:10 +09:00
priseborough
7d48054e6f AP_NavEKF2: Group GPS innovation tests when compiling error score 2016-11-24 19:58:07 +09:00
Randy Mackay
e9ea06bd10 AP_NavEKF2: minor comment fix 2016-11-24 19:58:03 +09:00
Randy Mackay
a32068a973 AC_WPNav: remove ekf position reset handler
This has been migrated to the position control library
2016-11-24 19:58:00 +09:00
Randy Mackay
1012333eef AC_PosControl: add ekf position reset handling
Previously this was in AC_WPNav and used only for loiter but it should work for any flight modes that use horizontal or vertical position control
2016-11-24 19:57:56 +09:00
Randy Mackay
c615bac1cd AP_AHRS: add getLastPosDownReset accessor 2016-11-24 19:57:53 +09:00
Randy Mackay
6406e34016 AC_WPNav: remove unused _loiter_step member 2016-11-24 19:57:50 +09:00
priseborough
0df45703f1 AP_NavEKF2: Fix errors in position reset delta publishing 2016-11-24 19:57:47 +09:00
priseborough
f6021c959d AP_NavEKF2: capture and publish vertical position reset deltas
Calculate the change in vertical position due to a internal EKF state reset or a EKF core switch
2016-11-24 19:57:45 +09:00
priseborough
e62863f9a1 AP_NavEKF2: Reduce unnecessary EKF core switching
1) Do not switch to a core until its states have been updated.
2) Distinguish between mandated switches required for health failure and optional switches required due to innovation checks failing.
3) Apply hyseresis to innovation check levels
2016-11-24 19:57:41 +09:00
murata
de153ce1d7 AP_NavEKF: Correct the setting process of variable dAngBiasSigma. 2016-11-24 03:24:18 +00:00
murata
ec42ddfb4e AP_NavEKF: style changes (tab to spaces, etc.)
AP_NavEKF: style changes (tab to spaces, etc.)

AP_NavEKF: style changes (tab to spaces, etc.)
2016-11-24 03:24:18 +00:00
ShingoMatsuura
e9feb7bdda AP_RangeFilnder: moved the const buffer definition to the header and changed from '8' to 'sizeof(send_request_buffer)' 2016-11-23 10:28:38 -08:00
ShingoMatsuura
f97ede9865 AP_RangeFilnder: change send_request_buffer member variable to const and other fixes 2016-11-23 10:28:38 -08:00
ShingoMatsuura
e8ff156fa6 AP_RangeFilnder: add clear buffer at INIT state and change send_buffer to member variable to reduce CRC computation for sending request 2016-11-23 10:28:38 -08:00
ShingoMatsuura
c1c643e56e AP_RangeFinder: remove clear buffer in send_request 2016-11-23 10:28:38 -08:00
Leonard Hall
ea0e413b04 AC_AttControl: do not limit rate if ATC_ACCEL_MAX param is zero 2016-11-23 14:43:29 +09:00
murata
ae927e1775 DataFlash: Adjust the return value to the type of the method.
DataFlash: Adjust the return value to the type of the method.
2016-11-22 10:07:16 -08:00
Lucas De Marchi
f9b0f9164a AP_HAL_Linux: add TODO to AnalogIn_Raspilot
This is especially bad for raspilot since it has a spi bus shared for
all the peripherals.
2016-11-21 18:11:31 -02:00
Lucas De Marchi
87c6d5da13 AP_InertialSensor: replace panic() with return
When blocking forever there's no reason to call panic later since it
will never going to be reached. This reduces binary size in a few bytes
since the message isn't required anymore.
2016-11-21 18:04:10 -02:00
Andrew Tridgell
c2125a0078 AP_Baro: wait forever for semaphore on startup 2016-11-21 18:04:10 -02:00
Andrew Tridgell
6f82ec0642 HAL_Linux: convert RASPilot drivers to thread per bus 2016-11-21 18:04:10 -02:00
Andrew Tridgell
6129b1abb6 AP_InertialSensor: wait forever for semaphore on startup
some boards take a silly amount of time to get semaphore on startup
2016-11-21 17:57:21 -02:00
Julien Beraud
d50fd3a6cd AP_OpticalFlow: fix onboard init
mistake in patch to avoid segfault which enabled
AP_OpticalFlow_Linux instead of AP_OpticalFlow_Onboard.
Store a reference to ahrs in order to execute init later, when
ahrs is initialized.
2016-11-21 16:38:59 -02:00
Michael du Breuil
d97861d685 AP_GPS: Ublox: Skip SBAS request if we don't want to alter it 2016-11-21 14:15:19 +09:00
Randy Mackay
b7f95d9c25 AP_RangeFinder: remove serial.end and begin
Also some formatting changes
2016-11-21 14:07:01 +09:00
Randy Mackay
99fafcb495 RangeFinder: add uLanding to TYPE parameter description 2016-11-21 13:52:15 +09:00
Ricardo de Almeida Gonzaga
148fa03d6b AP_RangeFinder: support MaxBotix Serial rangefinders
This has been tested with LV-MaxSonar®-EZ1 MB1010
2016-11-21 11:21:56 +09:00
Randy Mackay
44c5fee90d AP_RangeFinder: formatting fixes for uLanding 2016-11-21 11:07:41 +09:00
davidaroyer
69bc4c42c9 AP_RangeFinder: Add support for Aerotenna uLanding radar altimeter 2016-11-21 11:07:41 +09:00
davidaroyer
faa534cf64 AP_SerialManager: Add support for Aerotenna uLanding radar altimeter 2016-11-21 11:07:41 +09:00
Jonathan Challinger
22517422f9 AP_Motors: add option to disable motor PWM output while disarmed 2016-11-21 10:49:21 +09:00
Andrew Tridgell
6c09758447 AP_RangeFinder: removed momentary spikes in PulsedLight I2C Lidar 2016-11-21 10:30:04 +11:00
Andrew Tridgell
252f90ba36 HAL_PX4: drop I2C speed to 100kHz
reduce I2C errors on long cables for all sensors
2016-11-21 10:29:52 +11:00
Andrew Tridgell
b3ac4fcb72 GCS_MAVLINK: speed up USB log download
makes it about 2x as fast on Pixhawk
2016-11-20 18:41:25 +11:00
Lucas De Marchi
504de3ea9e AP_HAL_Linux: RCInput_RPI: fix whitespaces
Also add/change some minor coding style issues, reducing scope of
variables.
2016-11-19 14:05:22 -02:00
Lucas De Marchi
aadc1643fc AP_HAL_Linux: reduce speed of MPU* devices
After introducing the temperature check we are resetting the fifo
several times due to difference in temperature.
2016-11-19 14:05:22 -02:00
Lucas De Marchi
8d3361cef4 AP_HAL_Linux: RCInput_RPI: fix using Util class on constructor
Program received signal SIGSEGV, Segmentation fault.
0x000b8760 in Linux::UtilRPI::get_rpi_version() const ()
(gdb) bt
 #0  0x000b8760 in Linux::UtilRPI::get_rpi_version() const ()
 #1  0x000b57ac in Linux::RCInput_RPI::RCInput_RPI() ()
 #2  0x0000acfc in _GLOBAL__sub_I__ZN9HAL_LinuxC2Ev ()
 #3  0x000e1600 in __libc_csu_init ()
 #4  0x76cad228 in __libc_start_main (main=0x7efff774, argc=1994186752,
     argv=0x76cad228 <__libc_start_main+168>, init=0xe15b4 <__libc_csu_init>,
     fini=0xe1614 <__libc_csu_fini>, rtld_fini=0x76fdf464 <_dl_fini>,
     stack_end=0x7efff774) at libc-start.c:246
 #5  0x0000afa4 in _start ()
2016-11-19 14:05:22 -02:00
Lucas De Marchi
bc476e1987 AP_ADC: fix ADS1115 instantiation
This can't be called on constructor since hal may not be initialized at
that time.
2016-11-19 14:05:22 -02:00
Andrew Tridgell
216cf53922 AP_InertialSensor: handle FIFO overflow for MPU6k and 9250
this prevents temporary corruption of INS data on FIFO overflow
2016-11-19 12:54:22 +11:00
Lucas De Marchi
c6b0a71c47 AP_Compass: Calibrator: use inplace initializer on array 2016-11-18 20:03:30 -02:00
Siddharth Bharat Purohit
b36ee10e7c AP_Compass: fix wrong memset in compass calibrator 2016-11-18 20:03:30 -02:00
Siddharth Bharat Purohit
451c2f146d AP_AccelCal: fix bug preventing accel cal fit to run more than one iteration
The check for fitness being smaller than the last value should use the
absolute value, to mean the fitness isn't changing since last iteration.
It's currently always quiting the function after the first iteration.

However for Gauss Newton we anyway want to run as many iterations as we
can, because there are ups and downs along the iteration so we might get
say best result where before and after iterations were bad. The lines
above takes care that sane and the best is selected.
2016-11-18 20:03:30 -02:00
Tom Pittenger
11229d2588 SITL: fix whitespace 2016-11-18 10:42:10 -08:00
ori ganoni
631b5c3ebc adding turbulance to SITL 2016-11-17 20:06:35 -08:00
Andrew Tridgell
18d4286166 AP_InertialSensor: fixed pixfalcon 9250 detection 2016-11-18 14:24:39 +11:00
Peter Barker
fd5f79b238 AC_PrecLand: a pure-ArduPilot simulated SITL precision land backend 2016-11-18 09:41:56 +09:00
Peter Barker
4df4ba1956 AC_PrecLand: make SITL_Gazebo an alternate backend
Preprocessor directives were used to hack in the use
of AP_IRLock_SITL.  Instead, make it a full backend itself.
2016-11-18 09:41:56 +09:00
Peter Barker
d2285ace6c AC_PrecLand: remove unneeded empty handle_msg 2016-11-18 09:41:56 +09:00
Peter Barker
03710beb18 AC_PrecLand: make handle_msg impure and do nothing 2016-11-18 09:41:56 +09:00
Peter Barker
1eca4e128d AC_WPNav: method to retrieve current desired pilot accels 2016-11-18 09:41:56 +09:00
Andrew Tridgell
cb1a5d4c74 AP_InertialSensor: take semaphore for update of accumulators
this fixes a race in update of delta angle and delta velocity between
backend and frontend
2016-11-18 06:32:17 +11:00
Pierre Kancir
84aaca7c6e SITL: add missing break 2016-11-17 13:46:10 +00:00
Peter Barker
cf5ed25c9e AP_HAL_Linux: do not attempt realtime when compiling Replay 2016-11-16 22:25:18 -02:00
Julien Beraud
ac3f49b06f RPIOUART_Driver: fix warning
cast PKT_MAX_REGS to uint32_t to be able to compare without a warning
2016-11-16 17:37:15 -02:00
Julien Beraud
dc86a53862 OpticalFlow: move onboard alloc to init()
No reason to keep it in the constructor
2016-11-16 20:38:00 +11:00
Andrew Tridgell
f3f1f6b0b6 AP_InertialSensor: fixed gyro orientation on l3gd20H on pixhawk 2016-11-16 20:33:56 +11:00
Michael Oborne
fbeafa0d0a Update AP_BoardConfig.cpp 2016-11-16 16:00:12 +11:00
Michael Oborne
e7e3478a58 AP_BoardConfig: add extra uavcan options
this enables the display of dynamic id assignment, which prevents the need for a serial connection to the esc, for first config.
2016-11-16 16:00:12 +11:00
Peter Barker
37c2c0a822 AP_Stats: fix variable reset time bug
Use Jan 1st 2016 as epoch time rather than Unix epoch.

PixHawk's 32-bit floats can't store a 32-bit timestamp.
2016-11-16 09:14:01 +09:00
Andrew Tridgell
6af00027ab AP_InertialSensor: removed unused variables
thanks to Francisco for noticing
2016-11-16 08:41:06 +11:00
Pierre Kancir
86c8145bd9 SITL: Change Flighgear port with instance number 2016-11-16 08:27:48 +11:00
Pierre Kancir
c4b5bd4bd9 SITL: revert fg view to activate by default and use flag to disable it 2016-11-16 08:27:48 +11:00
Pierre Kancir
e2b939df39 SITL: rename simin to rcin for better readability 2016-11-16 08:27:48 +11:00
Pierre Kancir
59c84c637e SITL: make fg view optional 2016-11-16 08:27:48 +11:00
Francisco Ferreira
bfbb275577 AP_InertialSensor: on accel cal failure don't save values to zero
When the accel calibration fails leave the previous values saved but set them to defaults (scale default is ones, not zeros) and notify the GCS
This fixes an arithmetic exception when doing a second accel cal after the first one failed
2016-11-15 11:42:54 -08:00
Francisco Ferreira
a3fcebc501 AP_Param: add set_and_notify to vectors 2016-11-15 11:42:54 -08:00
Francisco Ferreira
e763896b6a AP_AccelCal: send and receive MAV_CMD_ACCELCAL_VEHICLE_POS
Message is sent at a maximum of 1Hz
Status text is sent, but if command is received it stops and only uses commands
2016-11-15 11:42:54 -08:00
Francisco Ferreira
7463d4c8f7 GCS_MAVLink: add function to send command requesting vehicle position during accel cal 2016-11-15 11:42:54 -08:00
Francisco Ferreira
bc661f013e AP_AccelCal: use vehicle position values from MAVLink enum 2016-11-15 11:42:54 -08:00
Francisco Ferreira
c07f377eb1 AP_AccelCal: make collect_sample responsible for state changes
Also only set the snoop if the step has changed
2016-11-15 11:42:54 -08:00
Andrew Tridgell
624178f3be AP_InertialSensor: added INS_FAST_SAMPLE parameter
this allows enable/disable of fast sampling per IMU, making
experimentation easier.

It also fixes the fast sampling to always average over 8 samples, and
fixes the 9250 to use the correct accumulator when not doing fast
sampling
2016-11-15 21:16:40 +11:00
Andrew Tridgell
c0303ffe8a AP_InertialSensor: temporarily disable fast sampling
a problem has been found with the filtering with fast sampling on
ICM-20608 and MPU9250. Disable until it is solved.
2016-11-14 18:18:17 +11:00
Andrew Tridgell
ae2dc5570e AP_Proximity: added SITL proximity backend
using fence points for avoidance
2016-11-14 15:53:43 +09:00
Andrew Tridgell
b16226dddf AP_Baro: fixed a bug with corrupted conversions in MS5611 driver
the datasheet says that if you get back zero in an ADC read that the
next value can be corrupt. I have seen this happen on the FMUv1,
leading to bad altitude readings
2016-11-13 17:08:06 +11:00
Andrew Tridgell
ac4b100ae4 AP_BoardConfig: use in-tree drivers for FMUv1 2016-11-13 16:21:17 +11:00
Andrew Tridgell
14a26bee6c AP_HAL: fixed ms5611 address on FMUv1 2016-11-13 16:21:05 +11:00
Andrew Tridgell
00938f7dbb HAL_PX4: fixed enabled channels in init
now this is called from AP_BoardConfig we need to not clear enabled
channels
2016-11-13 13:16:22 +11:00
Andrew Tridgell
0502eca7fc HAL_PX4: removed unused variable 2016-11-13 13:16:22 +11:00
Andrew Tridgell
c794ad9ee8 AP_InertialSensor: use smaller FIFO buffers
this allows for reading multiple chunks from the fifo per callback
2016-11-13 13:16:22 +11:00
Michael Oborne
c62050dc1b AP_GPS_SBF: fix accuracy reported by driver 2016-11-12 16:42:35 +09:00
Andrew Tridgell
5f3c14ea01 AP_RangeFinder: fixed tabs -> spaces 2016-11-12 14:18:15 +11:00
Andrew Tridgell
41018feb3a HAL_PX4: split I2C transfers
this avoids SCL low with a stop condition, which doesn't work with
some devices
2016-11-12 14:18:14 +11:00
Andrew Tridgell
0c7dd99d7e AP_RangeFinder: support LidarLite V2 using in-tree driver
needs to run in continuous mode
2016-11-12 14:18:14 +11:00