Commit Graph
100 Commits
Author SHA1 Message Date
Matthias Grob 2baa5ca4d7 minor build fixes and ignored warnings for GCC 9 (#14159)
- px4io task_main_trampoline add return
 - iridiumsbd main_loop_helper add return
 - drivers/uavcan ignore Wcast-align, Wdeprecated-copy, and Waddress-of-packed-member for now
 - flashparams ignore Wvla-larger-than
 - test_time fix printf type
2020-04-02 10:24:36 -04:00
Matthias Grob ab6606aa46 PreFlightCheck: fix magnometer typo 2020-04-02 13:53:47 +02:00
Matthias Grob 70c28c7274 mc_pos_control_params: update MPC_POS_MODE description
- remove deprecated sport mode
- clarify wording
2020-04-02 11:52:44 +02:00
Matthias Grob 49d22edc33 battery: cell voltage fill refactor 2020-03-31 09:14:50 +02:00
Matthias Grob bda072512a rc.vtol_defaults: reduce maximum jerk to 4.5 m/s³ based on testing feedback
@fury1895 reported very valuable feedback from testing
the acceleration feed-forward on VTOL:
> MPC_JERK_MAX 4.5 (from 5 on it felt too aggressive)
> MPC_JERK_AUTO 4
> some hovering, some transitions, and a mission. Everything good.
> I'd say you feel the difference in position mode and you see it in
> Auto modes. Great improvement!
2020-03-30 09:58:39 +02:00
Matthias Grob f6ceb08522 FlightTaskTransition: don't overwrite setpoints with estimates
Previously acceleration setpoints were not executed and just used
to pass a possible rough initialization value for the next task. Now
they get executed by the multicopter controller and hence
overwriting them with rough estimates doesn't work anymore.
2020-03-30 09:58:39 +02:00
Matthias Grob 58fd3e2ddc PositionControl: fix horizontal integral anti-windup 2020-03-30 09:58:39 +02:00
Matthias Grob 91057fe024 FlighTasks: remove FlightTaskSport
This mode was just kept as an example after
its usage in a single case. It's basically untested
and doesn't make much sense anymore since it's
incompatible with the jerk limited trajectory
implementations. It's implementation only switched
hte configuration parameter of the velocity resulting
from maximum stick deflection to be
MPC_XY_VEL_MAX instead of MPC_VEL_MANUAL.
This is according to todays understanding undesired
because when hitting that limit the position
controller has no room for corrections anymore.

Also it saves some flash space on omnibus to remove
the task at this point and makes romm for the
acceleration feed-forward.
2020-03-30 09:58:39 +02:00
Matthias Grob bc2579f3be mc_pos_control_params: lower jerk configuration
because of tighter tracking with acceleration feed-forward.
2020-03-30 09:58:39 +02:00
Matthias Grob b79b095ce7 FlightTasks: adapt to acceleration based control 2020-03-30 09:58:39 +02:00
Matthias Grob b3d7445059 PositionControl: acceleration based control strategy 2020-03-30 09:58:39 +02:00
Matthias Grob 1d2ac41edc ControlMath: adding limitTilt() helper function
which takes care of limiting the lilt angle of a "body" vector with
respect to a "world" vector. Both vectors have to be unit length!
2020-03-30 09:58:39 +02:00
Matthias Grob aa53cabaa4 PositionControl: remove confusing uMin uMax alias 2020-03-30 09:58:39 +02:00
Matthias Grob 6602e8d16b Support python3 only systems
Ubuntu 20.04 and latest Cygwin come with no Python 2 and no link
from python to python3. To not mess with the system we detect
python3 for seamless support.
2020-03-28 17:02:24 +00:00
Matthias Grob b8576cccc8 AttitudeControlTest: add scale testing for yaw weight 2020-03-28 17:51:59 +01:00
Matthias Grob 96bbc63eb1 AttitudeControl: let the user set yaw weight directly via parameter
instead of infering the yaw weight from the gains which can lead to
unexpected results depending on the particular vehicle tuning.
2020-03-28 17:51:59 +01:00
Matthias Grob 6570e1fe40 appveyor: switch to Cygwin toolchain v0.9
to have packaging python 3 package.
See https://github.com/PX4/windows-toolchain/releases/tag/v0.9
2020-03-24 13:31:41 +00:00
Matthias Grob d0349fcf07 mc_pos_control: allow zero thrust during takeoff and landing
Otherwise the takeoff ramp doesn't start with zero thrust and
the land thrust cut cannot cut to zero.
2020-03-18 20:36:05 +01:00
Matthias Grob 5027c68c0a mc_pos_control: handle takeoff and landing thrust limit the same way
The landing thrust limit was after the position controller and
could be inconsistent with what the takeoff limit did. This
resulted in different thrust values sequentially getting applied
during landing.
2020-03-18 20:36:05 +01:00
Matthias Grob 3049a3d14d mc_pos_control: prevent takeoff with thrust setpoint
This was only necessary for stabilized mode before #10805.
The  unit length thrust setpoint will anyways not be available
anymore soon because it gets replaced with the acceleration
setpoint in m/s².
2020-03-18 20:36:05 +01:00
Matthias Grob 1f98ebdb47 mc_pos_control: switch order of setpoint amendment
to make sure the takeoff limitation is always done last.
2020-03-18 20:36:05 +01:00
Matthias Grob fb1b6a0ab9 mc_pos_control: hotfix for takeoff ramp stuck with NAN
Reported by @dusan19 in #13973.
2020-03-17 16:19:35 +01:00
Matthias Grob eb3b0f6b55 mathlib: get rid of now duplicate sign() function
Instead use the one that was copied to the matrix library in
https://github.com/PX4/Matrix/pull/116/
2020-03-17 10:01:42 +01:00
Matthias Grob d313b0417a AttitudeControl: Take advantage of Quaternion.canonical()
Introduced by @kamilritz in
https://github.com/PX4/Matrix/pull/116/
2020-03-17 10:01:42 +01:00
Matthias Grob 2dccc0dcfc posix.h: remove duplicate stdint.h include 2020-03-12 17:49:37 +00:00
Matthias Grob f90d3671c0 vehicle_attitude_setpoint: get rid of unused q_d_valid flag 2020-02-27 09:17:52 +01:00
Matthias Grob 46f76cb621 Commander: enable RC override in takeoff
and remaining auto modes which are used more rarely.
2020-02-26 10:22:33 +01:00
Matthias Grob 1d89351149 Commander: clarify the rc override message
Message says novice understanable what happened.
2020-02-20 17:25:53 +01:00
Matthias Grob 69af6386b3 mc_pos_control_main: remove obsolete input setpoint assignments
These assignments were temporary for correct logging of the input
setpoint which now properly also comes out of the controller again.

This is reverting the hotfix from:
dee8d200d8
2020-01-30 07:28:18 -05:00
Matthias Grob b75c1308f9 PositionControl: replace interfacemapping checks
Removing the skip_controller and interfaceMapping
concept and replacing it with a single method checking
if the position control update was successful and
return the result in the PositionControl.update().
2020-01-30 07:28:18 -05:00
Matthias Grob e06fff94bb PositionControl: handle yaw NAN inputs 2020-01-30 07:28:18 -05:00
Matthias Grob dcc0339773 PositionControl: calculate velocity integral once using Vector3f 2020-01-30 07:28:18 -05:00
Matthias Grob 9109d22c28 PositionControl: simplify horizontal thrust limiting 2020-01-30 07:28:18 -05:00
Matthias Grob 83653d6581 PositionControl: readd direct thrust setpoint support
This restores original horizontal thrust setpoint execution
that I intentionally broke three commits ago. It's necessary
for correct stick to tilt mapping of FlightTaskManualAltitude.
2020-01-30 07:28:18 -05:00
Matthias Grob 282d46efcb PositionControl: add feed-forwards with addIfNotNan() 2020-01-30 07:28:18 -05:00
Matthias Grob 62fb06bd58 PositionControl: calculate velocity PID once using Vector3f 2020-01-30 07:28:18 -05:00
Matthias Grob 5bd8da2286 PositionControl: temporarily remove direct thrust setpoint support
This commit temporarily breaks direct horizontal thrust setpoint execution
which is used by FlightTaskManualAltitude. This is necessary to allow for
PositionControl cleanup namely calculating the whole velocity PID in one
Vector3f formula.

Having this in a separate commit is useful since it reduces indentation
of a bigger code block.
2020-01-30 07:28:18 -05:00
Matthias Grob e53ae45188 ControlMath: add addIfNotNan helper functions 2020-01-30 07:28:18 -05:00
Matthias Grob 1e06f6bbd2 mc_pos_control: fix derivative spike when regaining velocity estimate
When having no velocity estimate the derivative was updated with zero.
When losing the velocity estimate this is fine since the resulting
derivative spike doesn't get used and acceleration is set to NAN.
But when regaining the velocity estimate the spike from zero to
the first estimated velocity gets used as acceleration in the position
controller and results in a twitch.

To solve this I use the derivative reset I introduced in pr #13522
commit b64abf48b2
2020-01-18 10:57:12 +01:00
Matthias Grob a6cc972b5c mc_pos_control: do not use invalid vz estimate 2020-01-18 10:57:12 +01:00
Matthias Grob 4d83170746 mc_pos_control: do not ignore EKF vz with terrain following
This caused bad altitude control performance when enabling
terrain following. It even leads to complete vertical control
instability in case dist_bottom is inaccurate.

Relying on the estimator states is the way to go instead of
silently using one altitude source as state.
2020-01-18 10:57:12 +01:00
Matthias Grob 322e773250 appveyor: switch to toolchain version 0.8
which has the python package pyros-genmsg
installed.
2020-01-13 21:48:35 +00:00
Matthias Grob 98a3910b06 mavlink battery_status: report actual cell voltages 2020-01-13 21:29:40 +01:00
Matthias Grob 6184f4691a commander_params: remove duplicate rc override title
I merged the duplicate title because the pr was from
a private fork branch and already delayed.
2020-01-09 18:39:04 +01:00
Matthias Grob 1484dfed6a FlightTasks: remove deprecated AutoLine mission task 2020-01-06 15:39:07 +01:00
Matthias Grob ffff35a597 Unit tests: use EXPECT_FLOAT_EQ for float comparisons
as precaution to prevent failing tests because of small potential
rounding errors on certain platforms or compilares.
2019-12-26 12:53:07 +01:00
Matthias Grob ee62d0296f ControlMathTest: consistent short float literal notation 2019-12-26 12:53:07 +01:00
Matthias Grob ad148fdfad ControlMathTest: switch back to direct EXPECT_EQ calls for Vectors
Since the google test calls matrix::operator==()
which calls matrix::isEqual().
2019-12-26 12:53:07 +01:00
Matthias Grob de95e3d274 commander: remove manual mode before geofence handling 2019-12-23 12:18:27 -05:00
Matthias Grob a46add9a93 PositionControl: isolate skip controller, leave away unnecessary include 2019-12-18 15:57:48 +01:00
Matthias Grob 8441bdb9b5 PositionControl: remove complicated internal control flags 2019-12-18 15:57:48 +01:00
Matthias Grob 83e51ad192 PositionControl: remove speed_xy constraint since it's anyways unused 2019-12-18 15:57:48 +01:00
Matthias Grob a4a9d50a97 ControlMath: refactor thrustToAttitude calculation 2019-12-18 15:57:48 +01:00
Matthias Grob 1a5b06d0cf FlightTasks: refactor NAN initializations, spacing 2019-12-18 15:57:48 +01:00
Matthias Grob ab4473319a Takeoff: add proper unit test 2019-12-18 15:57:48 +01:00
Matthias Grob 42dbddb156 mc_pos_control: adopt to module internal include convention 2019-12-18 15:57:48 +01:00
Matthias Grob 2303071df4 PositionControl: simplify constraint conditions 2019-12-18 15:57:48 +01:00
Matthias Grob 121d743049 PositionControl: clear setter interface naming, order, description 2019-12-18 15:57:48 +01:00
Matthias Grob a3d30fc970 mc_pos_control/FlightTask: apply nit-pick review findings 2019-12-11 14:03:16 +01:00
Matthias Grob 904ab16558 Fix trailing whitespace, EOF newline, indentation 2019-12-09 13:22:19 +01:00
Matthias Grob 633469dd8c FixedWingPositionControl: ommit */ with ///< doxygen comments 2019-11-28 11:21:05 -05:00
Matthias Grob 4a28c8180b FlightTaskManualAltitude: yawspeed filter remove line with no effect, comments
FlightTaskManualAltitude: declaration order

Addressing @bkueng's review comments.
2019-11-25 11:55:47 +01:00
Matthias Grob 28755d5bbf att_control: remove resetting the attitude setpoint
since the position controller publishes them again already when disarmed.
2019-11-24 11:06:03 -05:00
Matthias Grob d3bd251ffc mc_pos_control: start flight task already when disarmed
such that the controller always publishes attitude setpoints and there are no initialization issues.
2019-11-24 11:06:03 -05:00
Matthias Grob 6589aa5f71 posix rcS: remove overwriting default altitude 2019-11-22 13:36:05 -05:00
Matthias Grob ccb21e3c4b navigator: remove double member initialization 2019-11-22 13:36:05 -05:00
Matthias Grob 06f667a8b3 vtol_att_control: convert angle in one line 2019-11-22 13:36:05 -05:00
Matthias Grob 9f545ae3cf navigator: convert to radians in configuration getter 2019-11-22 13:36:05 -05:00
Matthias Grob dee8d200d8 mc_pos_control: fix position setpoints being logged as zero when NAN (#13557)
This issue was found by @khabir and reported over slack.
It resulted from the split up of the big pr #12072 into #13262.
I took over the interface while the internal states still stayed the
hard to understand internal ones. One of the follow up refactors will
fix this completely and the entire legacy setpoint restore block can
be removed.
2019-11-21 16:03:13 -05:00
Matthias Grob b63044393e PositionControl: remove unwanted debug printfs 2019-11-21 00:52:09 +01:00
Matthias Grob 1bef35d843 PositionControl: correct float initialization literals
according to @bresch's review
2019-11-20 11:42:09 +01:00
Matthias Grob bd491c8511 PositionControl: add unit tests for directions and limits 2019-11-20 11:42:09 +01:00
Matthias Grob 25a445d5f8 PositionControl: remove parameter dependency
to make the class easier to understand,
more modular and easily unit testable
2019-11-20 11:42:09 +01:00
Matthias Grob b64abf48b2 mc_pos_control: reset velocity derivatives 2019-11-19 22:18:01 +01:00
Matthias Grob 675af4f5f9 uavcan_kinetis: fix flexcan code style
* flexcan: fix code style
* flexcan: exclude from style check to avoid that a different version of astyle breaks indentation again
2019-11-12 20:50:54 -05:00
Matthias Grob 1a79f75f94 Commander: start pulling arming related parts into separate folder
* PreFlightCheck: remove unused reportFailures flag
* Commander: pull all pre flight checks together on the PreFlightCheck class
* PreFlightCheck: separate checks into their own files
2019-11-05 11:25:59 -05:00
Matthias Grob b6de83117e PositionControl: fix attitude setpoint timestamp
The plot of the attitude setpoint in the log did not show any values
because the message timestamp that the position control module sets
was overwritten by the PositionControl attitude generation.
2019-11-05 13:05:16 +01:00
Matthias Grob c6cc9f0902 mc_pos_control: fix cutting thrust when landed
by applying it directly to the attitude setpoint which is the output of
the position controller.

The problem was that before the input to the attitude setpoint generation
was adjusted to generate a level attitude with zero thrust keeping the
heading. I refactored the PositionControl class in #13262 to directly
generate the attitude setpoint output. So here I'm adjusting the attitude
setpoint to do the exact same thing as before but without interleaving
with the PositionControl logic.
2019-11-05 13:05:16 +01:00
Matthias Grob 2416d0fc63 mc_pos_control: remove unused function declarations 2019-11-04 15:07:06 -05:00
Matthias Grob cc06009932 pre-commit: fix indentation style 2019-11-02 09:49:46 -04:00
Matthias Grob 5c0692e59e pre-commit: add error messages for style issues 2019-11-02 09:49:46 -04:00
Matthias Grob 933ff8d480 Remove duplicate EOF trailing newlines
because they can screw up git when merging branches.
2019-11-02 09:49:46 -04:00
Matthias Grob be545db44f mc_pos_control: reuse timestamp to reduce hrt calls 2019-10-26 06:11:18 +02:00
Matthias Grob d0084766ff PositionControl: make getters const functions 2019-10-26 06:11:18 +02:00
Matthias Grob f70d4d21a1 PositionControl: add getter for output attitude setpoint 2019-10-26 06:11:18 +02:00
Matthias Grob 198605d258 PositionControl: add getter for output position setpoint 2019-10-26 06:11:18 +02:00
Matthias Grob 40edd33078 mc_pos_control: reduce scope of attitude setpoint
No need for a gloabl state since it gets produced freshly
by the controller and then published.
2019-10-24 14:58:57 +02:00
Matthias Grob 79334958a9 WeatherVane: only update with last row of rotation matrix 2019-10-24 14:58:57 +02:00
Matthias Grob 9c25b987bc vehicle_local_position_setpoint: make acceleration and jerk arrays 2019-10-24 14:58:57 +02:00
Matthias Grob f317d227ef arch.sh: get rid of ignition-cmake workaround
The AUR repository got fixed upstream after
I reported the issue. I tested on a fresh machine
so we can get rid of the workaround that was necessary. See
https://aur.archlinux.org/packages/ignition-cmake/#comment-712301
2019-10-24 08:50:18 +02:00
Matthias Grob 38651ceee1 mc_pos_control: address @bresch's review comments 2019-10-23 17:33:47 +02:00
Matthias Grob d60e1e2774 ControlMath: switch to gtest for unit tessting 2019-10-23 17:33:47 +02:00
Matthias Grob ad60f6d786 PositionControl: make it self contained library 2019-10-23 17:33:47 +02:00
Matthias Grob 08ec6a28f0 mc_att_control: remove TPA
because it's mostly unused and we have thrust curve correction
see parameter THR_MDL_FAC
2019-10-18 15:54:09 -04:00
Matthias Grob 22c4bb498c FlightTaskDescend: set no vertical thrust when commanding velocity 2019-10-18 16:18:19 +02:00
Matthias Grob 5f53ae1253 mc_pos_control: execute failsafe with invalid setpoints 2019-10-18 16:18:19 +02:00
Matthias Grob cefa7ec5dc arch.sh: use nproc instead of grepping /proc/cpuinfo 2019-10-17 12:48:04 -04:00
Matthias Grob a053b7f69b vtol_att_control_main: only reset thrust when disarmed
to see flaps moving according to attitude control before arming
and not have tailsitter elevons move to follow north heading.
2019-10-16 16:30:38 +02:00
Matthias Grob 45a53726d6 LandDetector: switch to uORB::Publication 2019-10-16 00:47:01 -04:00
Matthias Grob 679e4fedf5 LandDetector: switch land flags to properies instead of one state 2019-10-16 00:47:01 -04:00