Commit Graph
100 Commits
Author SHA1 Message Date
Beat Küng 3744cac1bb fix mc_att_control: re-add dropped acro parameters (#8293)
and make sure the vtol params are always initialized

This got lost in 4416c4ddb3
2017-11-15 10:08:22 -05:00
Beat Küng c2c8ed6f5c navigator: make FollowTarget::_follow_position_matricies constexpr (#8281)
The matrix is never changed and has a size of 144 bytes.
2017-11-13 12:30:33 -05:00
Beat Küng cf7140526a jMAVSim: update submodule to include fix for VMware driver 2017-11-08 10:47:57 +01:00
Beat Küng 459a71a6f1 mavlink_receiver: directly pass the result to acknowledge()
And use denied in case ulog streaming fails.
2017-10-31 22:16:06 +01:00
Beat Küng a2db639289 mavlink_receiver: disable ulog streaming via Telemetry links
Telemetry links don't have enough bandwidth for that feature. The vehicle
will return a NACK when trying to enable log streaming on such a link.
2017-10-31 22:16:06 +01:00
Beat Küng 8f7a5d0e0c mavlink_receiver: merge handle_message_command_{long,int} into a common method 2017-10-31 22:16:06 +01:00
Beat Küng 29af2343e1 fix NAV_TRAFF_AVOID param definition: needs a ;
Without that the parameter was not in parameters.xml, producing the error:
ERROR [lib__controllib] error finding param: NAV_TRAFF_AVOID
2017-10-31 11:18:49 +01:00
Beat Küng 9c8dc3941d commander: fix 'commander arm' not working in HIL mode
This got introduced with 61b0a81bf9. Due to the removed startup_in_hil flag,
this check does not work anymore, so remove it completely.
2017-10-30 20:53:58 +01:00
Beat Küng 44839208f7 jmavsim_run.sh: add more aggressive GC option
This reduces memory usage by roughly 100MB on my laptop
2017-10-27 10:43:45 +02:00
Beat Küng 083a59ebc0 Tools/jMAVSim: update submodule (updated textures & rendering) 2017-10-27 10:43:45 +02:00
Beat Küng 9b85b39c07 syslink_main: fix int type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng a2fd9ef2d0 PreflightCheck: use correct type for params (int -> int32_t) 2017-10-27 10:43:15 +02:00
Beat Küng 207fdc0f12 mc_att_control_main: use correct type for params (int -> int32_t) 2017-10-27 10:43:15 +02:00
Beat Küng c3b47b71de temperature_compensation: use correct type for params (int -> int32_t) 2017-10-27 10:43:15 +02:00
Beat Küng 96616d831e sensors: fix parameter type int -> int32_t 2017-10-27 10:43:15 +02:00
Beat Küng 8a693fa13d param: undefine CHECK_PARAM_TYPE after it's used 2017-10-27 10:43:15 +02:00
Beat Küng dbb0414e01 commander: remove unused SYS_AUTOSTART param 2017-10-27 10:43:15 +02:00
Beat Küng 8cbd772489 commander: fix wrong parameter types (these are defined as float, not int) 2017-10-27 10:43:15 +02:00
Beat Küng d74f792784 commander: fix type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng f9dedd627f camera_feedback: fix type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng ca7e6fc918 camera_trigger: fix type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng 530fdb0b61 arm_auth: make type passed to param_get() explicit 2017-10-27 10:43:15 +02:00
Beat Küng 861f5a3d11 mag_calibration: fix type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng 0dcf9775f1 LandDetector: make type passed to param_get() explicit 2017-10-27 10:43:15 +02:00
Beat Küng 41a4d07e4f logger: make type passed to param_get() explicit 2017-10-27 10:43:15 +02:00
Beat Küng c997698030 mavlink: fix type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng 07d7b29729 simulator_mavlink: fix type passed to param_get() 2017-10-27 10:43:15 +02:00
Beat Küng c35b0aa270 param: redefine type-safe versions for param_get() when used in C++ code 2017-10-27 10:43:15 +02:00
Beat Küng 8ec59f0bc9 status_display: remove unused vehicle_attitude topic 2017-10-24 13:15:14 +02:00
Beat Küng 5f1debd431 px4fmu-v2 cmake config: disable mpu9250
out of flash again...
2017-10-24 13:15:14 +02:00
Beat Küng aa92ef3ca6 airframe 4040_reaper: fix type to quad h 2017-10-19 07:45:40 +02:00
Beat Küng 8b797d9b05 logger: use int for loop counter 2017-10-18 08:40:32 +02:00
Beat Küng d930ad4e9e mavlink_orb_subscription: reduce orb_exists() check from 10Hz to 3Hz
Checking with 3Hz for new topics should be fast enough.
2017-10-18 08:40:32 +02:00
Beat Küng 7381ea8222 logger: remove unused topics commander_state & rc_channels
flight review now uses vehicle_status & manual_control_setpoint
2017-10-18 08:40:32 +02:00
Beat Küng d096ec0b61 vdev_posix: change filemap into a static list of objects instead of pointers
to avoid dynamic memory allocations & frees (specifically in orb_exists)
2017-10-18 08:40:32 +02:00
Beat Küng 2668055358 vdev: remove unused fileds from file_t 2017-10-18 08:40:32 +02:00
Beat Küng deaf125c81 logger: check for newly published topics while not logging
If logger is started very early, orb_exists() will fail for a lot of
topics, they will be advertised within the next few seconds.
Logger already dynamically adds subscriptions during logging, but if we
do that before as well, we'll avoid any delays and having to subscribe
to a lot of topics all at once.
2017-10-18 08:40:32 +02:00
Beat Küng 3be252289a logger: use orb_exists to check if we need to subscribe to the first instance
To keep track of the configured interval, we store it as negative file
descriptor, until we do the subscription.

This frees up a considerable amount of file descriptors in most use-cases.
2017-10-18 08:40:32 +02:00
Beat Küng 4c4b528842 uORBManager: fix code style 2017-10-18 08:40:32 +02:00
Beat Küng 2f2c0440c4 orb_exists: change semantics from (is published or subscribed) to (is published)
Existing users of orb_exists:
- logger (dynamic subscribe to multi-instances)
- mavlink (orb subscription)
- sdlog2
- preflightcheck (check for home_position)
- wait_for_topic shell command (it's not used)
- orb_group_count() (sensors: dynamic sensor addition)

All use-cases benefit from the changed semantics: they are really only
interested if there is a publisher, not another subscriber.
2017-10-18 08:40:32 +02:00
Beat Küng 747e392be6 px4fmu-v2 cmake config: disable team blacksheep telemetry driver
we're out of flash again :/
2017-10-17 09:56:01 +02:00
Beat Küng 291872a28d mavlink: fix flight_information: use COM_FLIGHT_UUID instead of the board id
The board id was used as flight id which does not make sense.
2017-10-17 09:56:01 +02:00
Beat Küng 85e82dca0d commander: add COM_FLIGHT_UUID param, increased upon disarm 2017-10-17 09:56:01 +02:00
Beat Küng fa8453443f fix commander: remove arming_state_changed, check for was_armed != armed.armed instead
arming_state_changed was not set in all places where an arming transition
occurred, for example when calling arm_disarm() from auto-disarm.

We did not notice because the state is published with at least 5 Hz already.
2017-10-17 09:56:01 +02:00
Beat Küng 98e6ba858d logger: change SDLOG_PROFILE into a bitset
This is more flexible, allowing a combination of sets.

The default enables the same set & rates as before
2017-10-14 14:21:11 +02:00
Beat Küng be6079bc52 logger: add high rate & debug profiles 2017-10-14 14:21:11 +02:00
Beat Küng 30bc248138 rc_check: cleanup mavlink log messages 2017-10-13 15:50:37 +02:00
Beat Küng 4da4093839 logger status output: print 'Not logging' if not actually logging 2017-10-12 16:40:47 +02:00
Beat Küng e65547b6af mpu6000: add support for revision 1 2017-10-12 14:27:04 +02:00
Beat Küng 0247d7bdd7 fmu: minor refactoring & fixes
- initialize rc lost with true
- refactor for simpler downstream code-plugin
- allow for the addition of different binding commands
- fix st24 RC lost logic
2017-10-12 08:55:24 +02:00
Beat Küng 553c8b38d2 rcS: start mavlink in normal mode on Pixracer for the WiFi module
The config mode uses high rates for many streams, leading to high CPU usage
(9-10% for the mavlink sender). The normal mode contains almost the same
set of messages but at lower rates.
This reduces the CPU load on a Pixracer by 3-4%.
2017-10-11 11:55:59 +02:00
Beat Küng e1b970c30d ver hwcmp: allow to specify multiple hardware identifiers
E.g: ver hwcmp PX4FMU_V4 PX4FMU_V5
2017-10-09 09:34:31 +02:00
Beat Küng 353caec1af temperature_calibration: check if no sensor is found 2017-10-07 10:57:53 +02:00
Beat Küng cdf17c5447 led: add MODE_FLASH 2017-10-06 20:40:02 +02:00
Beat Küng efb170d91d tap_esc: some cleanup
- use select_responder from tap_esc_common namespace (same definition)
- switch pwm output to uint16, that's what's used in send_esc_output()
- use SCHED_PRIORITY_ACTUATOR_OUTPUTS instead of SCHED_PRIORITY_MAX
2017-10-06 19:32:53 +02:00
Beat Küng 20e987faa9 estimator_status: add missing descriptions for control_mode_flags 2017-10-05 10:04:02 +02:00
Beat Küng dd98ed565e protocol_splitter: fix type comparison 2017-10-04 14:13:14 +02:00
Beat Küng 8016d69ba4 mavlink_log_handler: set current_log_filep to NULL after closing the file
It probably did not cause further issues, except that fclose() was called
on an invalid file handle later on.
2017-10-04 07:33:47 +02:00
Beat Küng 2dd34d639d commander: ignore internal commands during calibration
if vmount was enabled in mavlink mode, it was continuously sending mavlink
commmands, which lead to 'command denied during calibration: 205' messages
during calibration.
2017-10-03 07:50:27 +02:00
Beat Küng 29e85edac8 Revert "param MPC_MAN_TILT_MAX: decrease maximum from 90 to 85 degrees"
This reverts commit d6df692b7a.

The changes to attitude controller improve this a lot.
2017-10-01 15:36:21 +02:00
Beat Küng 98893c9f4f mc_att_control params: increase max roll/pitch/yaw rates to 1800
If you want to go to the limit of what the vehicle can do, you need to be
able to set it so large that it is guaranteed that it's never limited by
software.

Tests showed that it's not a problem to increase it to very high numbers.
2017-10-01 15:36:21 +02:00
Beat Küng f5d9155ab2 mc_att_control params: reduce default max acro rates from 360 to 120 deg/s
360 is too fast if you just want to hover. Next step is to add expo(),
so that we still have fine-grained control at the center and high rates
at the edges.
2017-10-01 15:36:21 +02:00
Beat Küng 55da07d3c4 mc_att_control: fix computation of yaw weight for attitude control
Previously, the yaw weight was based on the tilt angle of the attitude
setpoint (R_sp(2, 2) == cos(tilt angle)). This makes no sense, it means
the weight is low for high tilt angles even if there is no roll-pitch error
at all.

This patch changes the weight computation to be based on the tilt angle
error: the yaw weight is 1 if there is no roll-pitch error (independent
from current tilt angle), and is reduced for higher tilt angle errors.

The weight was added in 05e9a30573, without any explanation or
derivation of how and why the weight is chosen that way.

However this patch works much better in practice. The yaw control is
improved, though it can be a bit slow to converge if you do continuous &
fast roll-pitch motions (which is expected).
2017-10-01 15:36:21 +02:00
Beat Küng 2f1ca409b7 mc_att_control: add more comments to the code, better explaining what it does
No semantic changes.
2017-10-01 15:36:21 +02:00
Beat Küng 69b1bfca6c mc_att_control: fix yaw feedforwarding
The feedforwarding was applied in the wrong frame: the term is given in
global coordinates, but was directly applied to body coordinates. This
patch adds the missing transformation from global to body frame.

In addition, it moves the feedforwarding before the rate limitation, so
that we cannot exceed the configured rates.
2017-10-01 15:36:21 +02:00
Beat Küng 2cc18d2d52 mc_att_control: move the board_rotation computation to the parameters_update
It's not necessary to do this computation in each loop iteration.
2017-10-01 15:36:21 +02:00
Beat Küng 27f020af05 mc_att_control: remove the hardcoded max throttle limit of 0.9 for ACRO 2017-10-01 15:36:21 +02:00
Beat Küng 26e4756055 mavlink_ftp_test: fix unit-tests 2017-09-21 07:33:09 +02:00
Beat Küng ebd2acfc43 posix-configs: enable ftp for all mavlink instances 2017-09-21 07:33:09 +02:00
Beat Küng 5b85b26351 mavlink_ftp: keep a copy of the last reply & resend it upon duplicated seq num 2017-09-21 07:33:09 +02:00
Beat Küng b072599679 mavlink_ftp: fix alignment issue 2017-09-21 07:33:09 +02:00
Beat Küng ea587d585f mavlink_ftp: add & handle kErrFailFileExists error
This error definitions already existed in QGC
2017-09-21 07:33:09 +02:00
Beat Küng b00c93ac21 mc_pos_control_main: add clarification that we're in world frame 2017-09-19 11:44:29 +02:00
Beat Küng 05e3c58e18 mc_pos_control_main: simplify manual control handling 2017-09-19 11:44:29 +02:00
Beat Küng d6df692b7a param MPC_MAN_TILT_MAX: decrease maximum from 90 to 85 degrees
At 90 degrees the yaw is extremely unstable (tested with HIL), it
overshoots and only very slowly converges to the correct value.
This behavior is also noticable with lower angles, but not so extreme.
It definitely needs to be looked into further, but for now this makes it
safer.
2017-09-19 11:44:29 +02:00
Beat Küng 55bd35cba6 mc_pos_control_main: improve the manual input setpoints 2017-09-19 11:44:29 +02:00
Beat Küng fc51c42280 mc_pos_control_main: fix types for parameter values 2017-09-19 11:44:29 +02:00
Beat Küng 19e7ba63ee param: use separate param save lock
param save is an expensive operation that can take several 100ms. And
previously it was possible that a param_get() caller was blocked on a
save operation. If this happened due to a param change notification,
important modules, such as sensors, could have been blocked for a longer
period (and affecting the flight performance).
With this patch, this situation is not possible anymore, because a param
save now uses the reader lock and a separate file lock.

However it is still possible that a param_set() needs to wait for a save
operation, thus blocking for a longer time. param_set() thus needs to be
avoided in important modules when the system is armed.
In the case of mavlink it works, since it does not affect the flight if
the mavlink receiver is blocked over a longer time. It is only problematic
if a joystick is used as input or in offboard control.
2017-09-12 08:46:10 +02:00
Beat Küng c82deaf26f dataman: fix test for return value of px4_task_spawn_cmd
And destroy the semaphore if startup fails.

Credits for finding this go to @jeonghwan-lee
2017-09-11 02:04:27 -07:00
Beat Küng 201b2bd75e logger: remove non-existing topics arm_auth_ack & arm_auth_request 2017-09-05 18:40:53 +02:00
Beat Küng dd4be8aecf mavlink: only enable FTP if -x flag is provided 2017-08-24 19:03:58 +02:00
Beat Küng 12f1c342d0 mavlink_main: do not use message_buffer if _ftp_on
if _ftp_on is true, message_buffer was created and read, but it was
actually never written to, so this is not needed. It can only ever be
written to if _forwarding_on is true.
2017-08-24 19:03:58 +02:00
Beat Küng ca24c8e2b6 printload: add a column for the number of used file descriptors
And the maximum number of configured file descriptors.

Note that this is per group, not per thread, so that e.g. logger and
log_writer_file show the same number.
2017-08-23 08:11:44 +02:00
Beat Küng bc30a808ab DriverFramework: update submodule to latest master 2017-08-23 08:10:16 +02:00
Beat Küng 5f5dca4804 vdev: replace static list with an std::map
VDev::getDev() is used in px4_access, which is used in orb_exists. And if
the topic does not exist, it iterates over all 500 indexes, which is slow.
It was slow even if the topic existed, the map reduces runtime from linear
to logarithmic (there are around 80 items in the container).
This is only used on posix.
2017-08-23 08:10:16 +02:00
Beat Küng 409a1ce7d7 param SITL_BAT_DRAIN: add @unit s 2017-08-23 08:10:16 +02:00
Beat Küng 575e7be540 fix linux_pwm_out: return correct value for PCA9685::init() 2017-08-23 08:10:16 +02:00
Beat Küng 7a409cf843 vdev: remove unneeded devList & topicList methods 2017-08-23 08:10:16 +02:00
Beat Küng 236021cc01 vmount mavlink input: fix polling for position_setpoint_triplet
The code was violating the rule 'every successfull poll must be followed
by an orb_copy'.
The result was a busy loop.
2017-08-17 07:47:48 +02:00
Beat Küng 83643a719a nuttx config: increase CONFIG_NFILE_DESCRIPTORS from 53 to 54
This is needed when logger is logging to file and ulog streaming gets
activated.
2017-08-16 16:46:56 +02:00
Beat Küng ebafa5698d log_writer_file: register hardfault handler before opening the log file
hardfault_store_filename() opens and closes a file descriptor, so if we do
it before opening the log file, we need one file descriptor less
2017-08-16 16:46:56 +02:00
Beat Küng 9e01842c6a mavlink ulog: advertise ulog_stream topic before subscribing to ulog_stream_ack
This reduces the maximum number of needed file descriptors by 1 when using
ulog streaming.
2017-08-16 16:46:56 +02:00
Beat Küng 4eb0ffc554 vmount: update control_data if already_active is true
control_data needs to be able to be set to nullptr in case if the input
is already active. Otherwise the output will think there's always new
requests and reset it's state.
2017-08-11 14:37:48 +02:00
Beat Küng 73d23742ea vmount: rate-limit the update of the outputs
This avoids a busy-loop if the input is listening for vehicle commands and
the output publishes vehicle commands.
2017-08-11 14:37:48 +02:00
Beat Küng 923cdbcbfb vmount mavlink input: process commands only if the target matches our sys & comp id 2017-08-11 14:37:48 +02:00
Beat Küng fd05c09447 vmount: fix param types, use int32_t 2017-08-11 14:37:48 +02:00
Beat Küng 72f9371ca4 micrortps_client_main: remove unnecessary sleep(1);
... and some strange reformatting due to astyle...
2017-08-08 21:47:17 +02:00
Beat Küng 77785c01ef micrortps_client.cpp.template: avoid 0-init & check result of orb_copy 2017-08-08 21:47:17 +02:00
Beat Küng de8e0b54b6 micrortps_client_main: use new module documentation & check param range 2017-08-08 21:47:17 +02:00
Beat Küng e7d19f0a1a micrortps_client_main: add status command 2017-08-08 21:47:17 +02:00