Commit Graph

615 Commits

Author SHA1 Message Date
sanderux 3ccf3bf2a8 Consistent capitalization 2017-08-09 10:35:44 +02:00
Lorenz Meier 490f40bee1 Sensors: Use temperature for airspeed validation to avoid false positives for high-performance airspeed sensors
This is required to enable new high-performance sensors which otherwise would provide incorrect readings.
2017-08-06 20:52:37 +02:00
Lorenz Meier 017a29cba1 Sensors hub: Use default scheduling priorities 2017-08-02 21:18:35 +02:00
Julien Lecoeur 2c0539ae9c Move selected power source to inst 0 only if nb bricks > 1
When trying to move the selected power source to the first publication instance
on systems where there is only one power source, the compiler issued the warning
```
../src/modules/sensors/sensors.cpp:512:54: error: array subscript is outside array bounds [-Werror=array-bounds]
         tmp_h = _battery_pub[_battery_pub_intance0ndx];
```
because it could not verify that _battery_pub_intance0ndx would always be 0.

Wrap the block between `#if BOARD_NUMBER_BRICKS > 1 [...] #endif`
to ensure no out of bound subscript and to remove the warning.

Remove unused _battery_pub_intance0ndx variable when nb bricks = 1
2017-08-01 12:59:40 -10:00
Lorenz Meier 576ad4b521 Sensors update: use correct constants 2017-08-01 12:46:59 +02:00
Lorenz Meier 5838556742 HITL handling: Enforce the use of the activation parameter for HITL configuration 2017-07-29 23:06:50 +02:00
David Sidrane 5ebe5010ac Bugfix:Sensors battery_status Intance 0 voltage was 0V for Brick 2
Both PX4Test and Beat noted if only Brick to was connected
  battery_status Intance 0 voltage was 0V for Brick2

  The priority selection logic is run prior to the subscription
  creation and only updated the priority on a change. Before the
  subscriotions were created.

  _battery_pub_intance0ndx is suposed track the location in
  the _battery_pub array that is instance 0. It is then used
  to associate (move) instance 0 with (to)  the lowest brick
  (highest priority in HW) brick that is selected in HW.

  The Bug was that before the subscriptions are created,
  _battery_pub_intance0ndx set to 1. And then and never updated.

  The fix was to only run the priority selection logic once
  the subscriptions are created.
2017-07-17 21:02:50 -10:00
David Sidrane 4b63d629a9 sensors:Added Backward compatible N Brick Support FMUV4pro & FMUv5
This change implements the publishing of batery_status messages
   for each brick on the system, using multi-pub.

   Backward compatiblity is achived by always publishing the
   batery_status of the bick that has been selected by the HW
   Power Controller (PC) on instance 0.

   The batery_status.system_source will be true in one and
   only one batery_status publication when a valid bit is
   set in system_power.brick_valid. However, if USB is connected,
   and both brikcs are not providing voltages to the PC
   that are in the Under/Over Voltage Window (set in HW)
   the system_source may be false in all publications.
2017-07-17 21:02:50 -10:00
David Sidrane 4349f49610 PX4 System:Expunge the nuttx adc structure from the system
This PR is preliminary ground work for FMUv5.

   PX4 does not use the NuttX adc driver. But used the same format
   for the data returned by the nuttx ADC driver.

   There was a fixme:in src/platforms/px4_adc.h "this needs to be
   a px4_adc_msg_s type" With this PR the need for
   src/platforms/px4_adc.h goes away as the driver drv_adc.h now
   describes the px4_adc_msg_t.
2017-07-17 22:28:29 +02:00
Nicolae Rosia 0a22a9c47c change gyro & accel dt from float to uint64. This has the benefit of
calculating the estimator timeslip correctly.

Signed-off-by: Nicolae Rosia <nicolae.rosia@gmail.com>
2017-07-16 14:08:37 +02:00
Beat Küng 05b0c412c8 sensors: extend module doc a bit 2017-07-14 11:57:11 +02:00
Beat Küng 6463bd4f6f sensors: use ModuleBase & add documentation 2017-07-14 11:57:11 +02:00
Lorenz Meier df173d4d8a Sensors: Do not update calibration when armed. Run at lower priority than attitude control and estimator
This ensures that the massive (several hundred params if temperature compensation is enabled) param load is not done in flight. We also lower the priority to ensure that attitude controllers and estimators which might consume sensor data directly execute immediately, which should reduce their latency.
2017-07-09 21:58:48 +02:00
Daniel Agar b804616ad0 preflight check airspeed use differential_pressure 2017-07-08 21:54:04 +02:00
Jan Liphardt 38fa6dcad5 Clipping of the battery current due to Int*Float
Note that Type buf_adc[i].am_data = int32_t, but everything else are floats. Suggest (float)(buf_adc[i].am_data), precisely as was done a few lines later for the voltage.
2017-07-08 10:23:36 +02:00
Beat Küng 4afa931d80 voted_sensors_update: fix mag rotation
fixes a wrong index for _mag_device_id: previously, driver_index was used
(the CAL_MAG param index), but the correct index is the uorb topic
instance.
2017-06-17 06:36:54 +02:00
Mohammed Kabir 5a96490c68 sensors : fix race condition triggered by slow-to-boot external sensors 2017-06-14 19:53:07 +02:00
Mohammed Kabir 51b23f0b57 sensors : add parameters for 4th mag into used parameters list 2017-06-14 19:53:07 +02:00
Beat Küng ce7d8d2270 sensor_mag.msg: add is_external flag & set it in the mag drivers
With this we don't have to use the ioctl MAGIOCGEXTERNAL, which does not
work on POSIX (eg. RPi).
2017-06-14 19:53:07 +02:00
Beat Küng ba3d66abba voted_sensors_update: fix invalid/stale mag data on posix
Problem: _mag_device_id is used to get the correct rotation matrix for each
mag. But on POSIX, _mag_device_id was always 0, leading to invalid rotation
matrices.
This resulted in stale mag error messages (rot matrix=0 ==> mag data=0).
_mag_device_id was 0 because there are no /dev/magX devices (eg. on RPi),
thus the mag driver could not be opened.

This patch does: get the device id from the uorb topic instead. We still
need the device handle on certain platforms to apply the calibration params
and to check if the mag is internal or external.

Problem left: on POSIX, the check for external mag does not work.
2017-06-14 19:53:07 +02:00
Beat Küng 76f593afb0 fix voted_sensors_update: remove DevMgr::releaseHandle(h);
the 'continue' continues with the inner loop, whereas the outer loop is
responsible for opening the handle. Thus the inner loop needs to keep it
open.
2017-06-14 19:53:07 +02:00
Beat Küng af6846b9a8 fix voted_sensors_update: use int32 for param_get() 2017-06-14 19:53:07 +02:00
Beat Küng ce27e75a76 sensors: better status output 2017-06-14 19:53:07 +02:00
Lorenz Meier d104f984d4 Sensors: print airspeed validator status 2017-06-11 11:19:25 +02:00
Kabir Mohammed 5cbaaa633b FINALLY fix mag rotation issues. (#7366)
* sensors : second cut at fixing mag calibration - remove old problematic code

* sensors : use more intuitive naming for loop variables
2017-06-07 10:49:57 +02:00
davidaroyer 99799d83b1 ocpoc support: update copyright dates 2017-06-04 04:24:50 +08:00
davidaroyer a236bd1015 sensors: add support for Aerotenna OcPoC-Zynq hardware 2017-06-04 04:24:50 +08:00
Daniel Agar 5d626bd940 clang-tidy remove redundant init 2017-06-02 19:35:18 -04:00
Mohammed Kabir 0cb3eb99dc sensors : correctly handle internal magnetometer rotations 2017-06-03 02:16:58 +08:00
Mohammed Kabir 49890c61f5 sensors : require reboot for all sensor orientation changes 2017-05-27 00:31:05 +02:00
Mohammed Kabir 62b7645130 sensors : remove deprecated (since 2015) mag rotation parameter 2017-05-27 00:31:05 +02:00
Mohammed Kabir 6ee09ca16f sensors : map between driver rotation order and uORB instance order when recieving first mag message 2017-05-27 00:31:05 +02:00
Nicolae Rosia 32498009a3 navio_adc: add driver for Navio2 ADC
Signed-off-by: Nicolae Rosia <nicolae.rosia@gmail.com>
2017-05-14 17:51:02 +02:00
Paul Riseborough 3bcb710da9 voted_sensors_update: publish sensor selections (+3 squashed commits)
Squashed commits:
[290660d] voted_sensors_update: revert the new_accel_data check (and others)

The check removed the ability to detect sensor timeouts.
[c8dc7ad] sensors: publish changes to sensor selection
[dd90dec] sensors: ensure all sensor selections published first time
2017-05-03 08:37:14 +02:00
Daniel Agar f04f1d6b03 sensors HIL increase gyro and accel timeout
- fixes #7050
2017-04-25 23:52:11 +02:00
Beat Küng 0d22e97c09 sensor_params: document PWM_RATE=0 for Oneshot125 2017-04-25 12:59:12 +02:00
Mohammed Kabir 57aa41df2c sensors : decouple maximum sensor count and allow flexible maximums 2017-04-24 12:24:11 +02:00
Mohammed Kabir f0accd39f0 sensors : add support for 4th magnetometer 2017-04-24 12:24:11 +02:00
Mohamed Abdelkader Zahana 60e0ca9321 add both options (pwm/i2c) for lidar lite 2017-04-23 23:29:10 +02:00
Mohamed Abdelkader Zahana 9911a55393 use i2c for lidar lite 2017-04-23 23:29:10 +02:00
Daniel Agar c86185d4be sensors init CAL_ACC0_ID and CAL_GYRO0_ID for QGC 2017-04-18 10:54:19 +02:00
Daniel Agar 4b8bedef48 avoid double promotions 2017-04-01 20:19:28 +02:00
Beat Küng 9597e708df sensors: remove sensors_init
The initialization code is redundant and incomplete (only the first sensor
is done). I verified that all drivers already set this on startup.
For the mags, they all set their maximum supported update rate.
For the baro, the call can silently fail, as for example the MS5611 which
does not support 150Hz update. But it also sets the maximum in
initialization.

Tested on Pixhawk & pixracer.
2017-03-10 11:28:41 +01:00
Beat Küng af1984ac07 sensors: do not warn about baro in HIL mode 2017-03-10 09:00:24 +01:00
Beat Küng bc91005e7a voted_sensors_update: increase accel & gyro timeout in HIL mode 2017-03-10 09:00:24 +01:00
Beat Küng aabdc4125b ekf2: publish ekf2_timestamps topic 2017-03-04 22:47:54 +08:00
Beat Küng 881f2d2d36 sensors: add 'sensors start -hil' parameter
This does the following if given:
- don't initialize the sensors (the sensor drivers are not started)
- publish sensor_combined even in hil mode
- do not apply or publish thermal corrections
2017-03-04 05:59:10 +08:00
Beat Küng f43f3baa02 ATT_VIBE_THRESH param: move the definition of this param to sensors
since it's only used in sensors module (otherwise it could get pruned)
2017-02-25 11:02:15 +01:00
Andreas Antener a5f3f65c2b Switch assignment: added manual and stabilized switch for a default stabilized switch scheme, let FW go into Acro 2017-02-18 08:03:19 +01:00
Paul Riseborough 9858b0b491 sensors: Add calibration control parameters to QGC list 2017-02-12 09:21:37 +01:00