Commit Graph

8651 Commits

Author SHA1 Message Date
Lucas De Marchi
c66800dfec AP_InertialSensor: add singleton interface
In order to allow other libraries to use the InertialSensor we need a
way to let them to get the only instance of InertialSensor. The
conventional way to do a singleton would be to let the constructor
private and force it to be instantiated from the get_instance() method.

Here however we just call panic() on the constructor if there's already
an instance alive. This allows us to let the vehicles as is. Later we
can change it so they call the get_instance() method instead.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
565c18603d AP_InertialSensor: MPU6000: export auxiliary bus 2015-08-28 12:39:08 +10:00
Lucas De Marchi
caae933c28 AP_InertialSensor: Add support for auxiliary buses
Add an AuxiliaryBus class that can be derived for specific
implementations in inertial sensor backends. It's an abstract
implementation so other libraries can use the auxiliary bus exported. In
order for this to succeed the backend implementation must split the
initialization of the sensor from the actual sample collecting, like is
done in MPU6000.

When AP_InertialSensor::get_auxiliary_bus() is called it will execute
following steps:
	a) Force the backends to be detected if it's the first time it's
	   being called
	b) Find the backend identified by the id
	c) call get_auxiliary_bus() on the backend so other libraries can
	   that AuxiliaryBus to initialize a slave device

Slave devices can be used by calling AuxiliaryBus::request_next_slave()
and are owned by the caller until AuxiliaryBus::register_periodic_read()
is called. From that time on the AuxiliaryBus object takes its ownership.
This way it's possible to do the necessary cleanup later without
introducing refcounts, that we don't have support to.

Between these 2 functions the caller can configure the slave device by
doing its specific initializations by calling the passthrough_*
functions. After the initial configuration and register_periodic_read()
is called only read() can be called.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
3cb6f391d4 AP_InertialSensor: MPU6000: split detection and initialization 2015-08-28 12:39:08 +10:00
Lucas De Marchi
7d9579c5d8 AP_InertialSensor: identify backend with ID
Identify backend with an id, allowing other libraries to connect to
them. This is different from the _product_id member because it
identifies the sensor, not the board the sensor is in, which is
meaningless for our use case.
2015-08-28 12:39:07 +10:00
Lucas De Marchi
22c787058e AP_InertialSensor: allow to split detection and initialization
This allows backends to have a separate detection and initialization
logic. It doesn't change any backend yet and with the current code
there's no change in behavior either. This only allows
AP_InertialSensor::_detect_backend() to be called earlier so
AP_InertialSensor object can be used by other libraries. If it's not
called, later on AP_InertialSensor::init() will detect and start all
backends.
2015-08-28 12:39:07 +10:00
Lucas De Marchi
f7954ee885 AP_InertialSensor: MPU6000: allow to read generic block
We were able to read only the block of registers that are part of the
data output from accelerometer/gyroscope. In order to support reading
the external sensors we need support for reading a generic block of
registers.
2015-08-28 12:39:07 +10:00
Lucas De Marchi
b5da8ad61f AP_InertialSensor: MPU6000: rename method
We're reading the sensor data available in MPU6000 so name the method
accordingly, which is also the same name used in MPU9250.
2015-08-28 12:39:07 +10:00
Lucas De Marchi
d9a4d3e777 AP_InertialSensor: MPU6000: fix leaking samples 2015-08-28 12:39:07 +10:00
Lucas De Marchi
f18dd17377 AP_InertialSensor: fix typos
resister->register and fix copy and paste error from MPU6000 to MPU925.
2015-08-28 12:39:07 +10:00
squilter
426dab5078 GCS_MAVLink: update severities and remove old enum 2015-08-28 10:04:35 +10:00
squilter
4a51dcc14d GCS_Console: update severities 2015-08-28 10:04:35 +10:00
squilter
dfc35cca8b AP_InertialSensor: update severities 2015-08-28 10:04:35 +10:00
squilter
ddda407ff3 AP_Arming: update severities 2015-08-28 10:04:35 +10:00
Paul Riseborough
21f873662c AP_NavEKF: Prevent false triggering of optical flow takeoff detection
Now that we have a pre-arm check in place to detect bad lidar, the motion check is unnecessary and can false trigger for copters with flexible undercarriages or on uneven ground.
2015-08-27 20:57:38 +09:00
Randy Mackay
1271e531e2 Mission: sanity check location 2015-08-27 15:15:56 +09:00
Randy Mackay
9ef6abf613 AP_GPS: config file for Ublox M8N
This is not directly used by the driver but this directory is where we place the recommended GPS config files
2015-08-27 09:54:22 +09:00
Tom Pittenger
749c0c190f AP_Baro - fix BARO_ALT_OFFSET param
This param seems to have been un-implemented. This is putting it back in. Adds a meter offset to the calculated altitude form the baro sensors.
Also changes it from int8 to float
2015-08-26 13:16:05 +10:00
Randy Mackay
bb891a62d3 BattMonitor: fix parameter descriptions 2015-08-26 11:17:48 +09:00
squilter
9d3a906602 GCS_Common: accept any type of severity, not just the old enum 2015-08-25 14:04:37 +09:00
Tom Pittenger
816d1f0e1b AP_GPS: resolve compiler warning re init order 2015-08-25 13:51:33 +09:00
Tom Pittenger
072d35b9cc AP_HAL_PX4: remove unused var 2015-08-25 13:51:21 +09:00
fillycheezstake
39dae7a156 Mount: fix for STORM32 serial ver 78e and higher
This fixes the structs to be compatible with the changes OlliW made to
the gimbal firmware.
http://www.olliw.eu/storm32bgc-wiki/Serial_Communication
2015-08-25 13:45:33 +09:00
Leonard Hall
c357cb8f84 Copter: increase default thrust expo to 0.65 2015-08-23 16:42:05 +09:00
ziltoid2
0b1a997800 AP_IntertialSensor: don't require acceleration calibration in hil mode 2015-08-23 16:48:48 +10:00
Randy Mackay
15fc689085 AC_WPNav: remove unused get_wp_radius 2015-08-23 11:06:19 +09:00
dgrat
58e2ac4e56 Filter: Template implementation for <Filter>
There are implementations for float, Vector2f and Vector3f for the Low
Pass Filter and the *2p filter.  I tried to implement these filters
with one common template implementation.  This implementation saves
some lines of code and reduced the redundancy.  One could save even
more code if the currently overloaded isinf/isnan functions and checks
can be removed.

Signed-off-by: Daniel Frenzel <dgdanielf@gmail.com>
2015-08-23 11:17:02 +10:00
Tom Pittenger
2620a57700 AP_InertialSensor: Added is_still() check
very strict check that all axis are not vibrating much at all
new param: INS_STILL_THRESH used to be a vibration threshold for different platforms
// @Description: Threshold to tolerate vibration to determine if vehicle is motionless. This depends on the frame type and if there is a constant vibration due to motors before launch or after landing. Total motionless is about 0.05. Suggested values: Planes/rover use 0.1, multirotors use 1, tradHeli uses 5
2015-08-23 10:34:17 +10:00
squilter
fb1bb3f571 GCS_MAVLink: make arguments mandatory for send_autopilot_version 2015-08-23 09:21:59 +09:00
Andrew Tridgell
e889886e07 AP_HAL: start with the vehicle disarmed
this prevents a race condition on startup that can cause a UAVCAN ESC
to run while the vehicle is booting
2015-08-23 09:49:52 +10:00
Andrew Tridgell
31f20db139 AP_GPS: provide hdop and speed accuracy with UAVCAN GPS 2015-08-23 09:49:52 +10:00
squilter
c4c63da163 GCS_MAVLink: send_autopilot_version accepts version 2015-08-21 22:40:51 +09:00
Randy Mackay
a317fb40fc GCS_MAVLink: version update after common.xml change 2015-08-21 22:40:50 +09:00
squilter
c10e90f837 GCS_MAVLink: regenerate common 2015-08-21 22:40:49 +09:00
Randy Mackay
79c9269891 GCS_MAVLink: rename FIRMWARE_VERSION_TYPE and fully qualify items 2015-08-21 22:40:48 +09:00
squilter
6621ecc68f GCS_MAVLink: Add FIRMWARE_RELEASE_TYPE to common.xml 2015-08-21 22:40:47 +09:00
Tom Pittenger
220163e269 AP_InertialSensor: correct USE param storage index
USE, USE2, USE3 have 20, 21, 21 but should be 20, 21, 22
2015-08-21 11:35:37 +09:00
Michael Day
a5e1d8e902 AP_Mission: Give CONINTUE_AND_CHANGE_ALT a parameter: climb/descend
Param 1 denotes which direction the user expects the plane to
travel when changing altitude:

0 = no expectation, command completes when within 5 m of altitude.
1 = climb expected, command completes at or above altitude.
2 = descent expected, command completes at or below altitude.
2015-08-20 11:37:17 +10:00
Randy Mackay
ec2bc5e41d NavEKF: use maxf when retrieving vibration levels
This reduces the performance hit that was caused by multiple calls to get_vibration_levels
2015-08-19 16:44:36 +09:00
Randy Mackay
46c652e42f Math: maxf and minf functions 2015-08-19 16:44:34 +09:00
Randy Mackay
629a5fd714 NavEKF: IMUSwitchState enum 2015-08-19 16:44:31 +09:00
Randy Mackay
c179ed5253 NavEKF: IMU ratio set to primary accel when neither IMU is used
This forces the EKF IMU ratio to indicate which IMU is used except that it will be "0" in the unlikely case that the third IMU is used
2015-08-19 16:44:28 +09:00
Paul Riseborough
559cc29635 AP_NavEKF: Add hysteresis to IMU switching logic 2015-08-19 16:44:26 +09:00
Paul Riseborough
12e884ba6b AP_NavEKF: Modify method used to check for vibration errors
This method checks for consistency between accelerometer readings and switches to the unit with the lowest vibration of the difference exceeds 0.3g
The threshold of 1.7 m/s/s corresponds to a maximum tilt error of 10 deg assuming one IMU is good, one is bad and the EKF is using the bad IMU.
2015-08-19 16:44:24 +09:00
Randy Mackay
a7569e3a61 AHRS_NavEKF: integrate INS use_accel 2015-08-19 16:44:22 +09:00
Randy Mackay
7f46cc9059 AHRS_DCM: integrate INS use_accel 2015-08-19 16:44:19 +09:00
Randy Mackay
0b981d38e8 NavEKF: incorporate use_gyro and use_accel 2015-08-19 16:44:17 +09:00
Randy Mackay
e5615ec349 INS: add USE parameters 2015-08-19 16:44:15 +09:00
Randy Mackay
affbd67c43 InertialSensor: add vibration monitoring of 2nd IMU 2015-08-19 16:44:12 +09:00
Tom Pittenger
1dd8b9d363 GCS_MAVLink: add support for try send mission_item_reached
also moved most of send_item_reached into common library
2015-08-19 15:26:32 +10:00