Commit Graph

13526 Commits

Author SHA1 Message Date
Beat Küng f6d9d77f60 param_notify_changes: set unsaved to true
This will make sure that commmander will save the params.
2017-03-14 21:43:30 +01:00
Beat Küng 0e650638e4 param: implement RW locking
This allows concurrent read access, which are much more common; reducing
potential lock contention and increasing concurrency.

Taking a lock is expensive, and the reader lock is now even more expensive.
An RCU synchronization scheme would reduce the overhead of the readers to
increasing/decreasing an atomic counter.
Thus this should only be an intermediate step until we move towards RCU.

Tested on SITL & Pixracer.
2017-03-14 21:30:53 +01:00
Beat Küng b4290b6b52 params: make param_t uint16_t on NuttX
param_t is only used as an offset and we have <1000 params, so an uint16_t
is enough.
This saves roughly 1KB of RAM. We only do that on NuttX because normal
integers have better performance in general.
Previously on amd64, this was even 64bits because it was an uintptr_t.
2017-03-14 21:30:53 +01:00
Beat Küng 45af77a543 mavlink parameters: try to send 5 params at once on USB & UDP connections
This further speeds up param loading.

On Pixracer via USB, it's possible to send up to 11 at once before the TX
buffer gets full, so there is still enough free bandwidth left.
2017-03-14 21:30:04 +01:00
Beat Küng 2873d973de mavlink: increase parameter rate from 120 to 300Hz
This speeds up parameter loading. Slow links like telemetry are unaffected,
since the mavlink loop runs only with ~100Hz.

Tested on various links, like:
- telemetry link
- pixracer WiFi
- pixracer USB
- SITL
2017-03-14 21:30:04 +01:00
Simone Guscetti cc153638d2 commander calibration_routines: fix the white led
The white led state would continue during calibration, now it return to the previus state
2017-03-14 14:25:49 +01:00
Simone Guscetti 1e4b79034f commander_helper: Add rgbled function
with priority and blink period
2017-03-14 14:25:49 +01:00
Lorenz Meier 2af5d1b929 Mission transfer: Fix retry logic
Previously the retry would not actually have been sent if nothing had been received in time.
2017-03-13 21:51:21 +01:00
Lorenz Meier 10dcb90d52 Commander: Store last manual stick setpoints only when actually in manual control mode 2017-03-13 21:08:17 +01:00
Lorenz Meier 1a3317ebab Commander: Do not abort low battery handling due to stick motion. 2017-03-13 08:42:51 +01:00
Lorenz Meier 706464d2eb Land detector: Fix param meta data 2017-03-12 14:42:19 +01:00
Lorenz Meier e4c012289f Logger: Sync setpoints and states to same rates 2017-03-12 11:10:19 +01:00
Lorenz Meier f7e4d8453d Logger: Drop position_setpoint_triplet to 5 Hz since its not required at such a high rate in analysis 2017-03-12 11:06:40 +01:00
Beat Küng 30841ee6bf send_event: separate initialization and wait until started for 'send_event start_listening' 2017-03-12 00:08:35 +01:00
Beat Küng 1177ec91e5 temperatoru_calibration: reformat comments to use doxygen style 2017-03-12 00:08:35 +01:00
Beat Küng 7cb291aa62 temperature_calibration: use a define for error code -110 2017-03-12 00:08:35 +01:00
Beat Küng 38156d862f temperature_calibration: add led indication
- starts with yellow blinking
- turns led to solid according to progress
- blink red on error, green on success
2017-03-12 00:08:35 +01:00
Beat Küng 95e8e26ae0 commander: use led_control uorb topic 2017-03-12 00:08:35 +01:00
Beat Küng b0439836f6 refactor drv_led.h: rename to drv_board_led.h
This makes it clear that it's used to control the board LED's, not external
LED's.
2017-03-12 00:08:35 +01:00
Julian Oes 404719953c commander: fix abs bug / trigger POSCTL both ways
The check if stick were touched was only working in one direction (per
axis) because fabsf was used incorrectly.

However, this check is still only a differential check triggered by
fast movement and does not trigger if someone slowly moves a stick to
the side. Also, the sensitivity depends on the rate of the commander
loop and/or the RC update loop. The correct solution would be a proper
filtering and trigger for movement.
2017-03-11 22:41:23 +01:00
Daniel Agar 0611677ee2 segway move to examples 2017-03-11 11:40:14 +01:00
Daniel Agar 89ff9f1fe3 cmake fmu-v3 fix and enable more examples
- sync posix_sitl_default and px4fmu-v4pro/v5 with fmu-v3
 - fixes #6667
2017-03-11 11:40:14 +01:00
Beat Küng 4811ab6b13 logger: reduce rate of some topics
In SITL, logging rate reduces from 70kB/s to 45kB/s.
2017-03-11 10:30:38 +01:00
José Roberto de Souza e2aae04c95 modules: dataman: Add a ram_flash backend
This backend will keep all updated data in RAM and
persist the data between reboots using flash memory.

Using only flash memory would result in a slow backend that
would decrease the lifetime of the flash memory, using both
we can reduce the several cycles of erase & write into flash
and keep the performance of the backend almost as fast
as the RAM only backend.

Note: Do not use this backend on a sector from the same flash memory
bank as the memory bank that STM32 read instructions or it can block
the CPU from fetching instructions from flash during the erase and
write operations and cause your drone crash.
2017-03-10 11:31:07 +01:00
José Roberto de Souza 75e7cfcbe8 modules: flashparams: Change size to uint32_t
So flash sector of 64Kbyes and 128Kbytes can also be used.
2017-03-10 11:31:07 +01:00
José Roberto de Souza a2670bdbc8 modules: dataman: Move backend specific out of main routines 2017-03-10 11:31:07 +01:00
José Roberto de Souza 66d9d56525 modules: dataman: Share memory between backends
Also having just a boolean to track if backend is running.
2017-03-10 11:31:07 +01:00
Beat Küng cfcc75d444 mavlink shell: check if there's enough free buffer to send the mavlink message
if there is not, the process on the other end of the pipe will just block.
This improves reliability over slow links.
2017-03-10 11:29:09 +01:00
Beat Küng b1e27f4395 simulator: handle ctrl-c during startup correctly
This makes sure the px4 process does not hang when Ctrl-C is pressed
during startup.
2017-03-10 11:28:41 +01: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 32995a5bc1 state_machine_helper: remove unneeded code to disable sensor publication
In HIL mode we do not start the sensors anymore, so this is not needed.

Also it did not work (I did not try to find the reason, just noticed the
sensors kept publishing in HIL mode)
2017-03-10 09:00:24 +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
Julian Oes 0c926106f1 param_shmem.c: comment out locking on Snappy
The param locking doesn't seem to be working on Snapdragon, so let's
just comment it out again.
2017-03-08 15:44:31 +01:00
Julian Oes 24819ce7b1 commander: no datalink failsafe on ground
On SITL startup we got a datalink lost failsafe message whenever home
was initialized. The reason that in standalone SITL, there is usually no
datalink connected. However, on ground, we shouldn't really failsafe,
therefore it makes sense not to enter the state in the first place.
2017-03-08 05:33:32 +08:00
Beat Küng c715228b8f LandDetector: save & initialize total flight time 2017-03-08 04:19:22 +08:00
Mathieu Bresciani d67b6efda3 PixHawk Pro: Update mag IDs to have external higher priority 2017-03-07 23:43:28 +08:00
Lorenz Meier daf668e687 Fixed wing land detector: Fix RTL logic with a temporary altitude limit workaround 2017-03-07 15:48:23 +08:00
Daniel Agar e63ee9d8bd fw_att wheel controller enable param (default off) 2017-03-05 11:41:14 +08:00
Beat Küng ca05e64a9f replay: update & add some comments 2017-03-04 22:47:54 +08:00
Beat Küng eaa9e6a019 ekf2: set att.timestamp to now in replay mode before ekf is initialized
logger will always log this topic, and a 0 timestamp will look worse in
FlightPlot. This will show a period of 0 attitude instead before ekf
is initialized.
2017-03-04 22:47:54 +08:00
Beat Küng 01541bb10d logger: switch from ekf2_replay to ekf2_timestamps topic, enable by default 2017-03-04 22:47:54 +08:00
Beat Küng 1d48d7e053 ekf2 replay: add statistics output when replay finished
The error counter is an indicator that the logger missed samples or dropped
due to a too small write buffer.
2017-03-04 22:47:54 +08:00
Beat Küng 2a11a2bc0b ekf2 replay: switch from ekf2_replay to ekf2_timestamps topic 2017-03-04 22:47:54 +08:00
Beat Küng aabdc4125b ekf2: publish ekf2_timestamps topic 2017-03-04 22:47:54 +08:00
Beat Küng 473192aa81 replay: some API refactoring & extensions
in preparation to the updated ekf2 replay
2017-03-04 22:47:54 +08:00
Beat Küng ba89839f65 replay: make sure ReplayEkf2::handleTopicUpdate is protected, not private 2017-03-04 22:47:54 +08:00
Beat Küng 63203625bc replay: add ekf2 replay method (can be selected with 'export replay_mode=ekf2') 2017-03-04 22:47:54 +08:00
Beat Küng e251c64c5f refactor replay: add some overrideable methods 2017-03-04 22:47:54 +08:00
Beat Küng df8c1a1489 logger: log ekf2_replay topic if EKF2_REC_RPL is set 2017-03-04 22:47:54 +08:00