Commit Graph

836 Commits

Author SHA1 Message Date
Daniel Agar e69398c09f introduce uORB::PublicationQueued and transition most orb_advertise_queue usage 2019-08-04 10:08:09 -04:00
RomanBapst b75d2ce982 set trajectory generating flight task as default (MPC_POS_MODE = 3)
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2019-07-29 10:37:26 -04:00
RomanBapst 77fd290b0c added default expo for yaw and x/y/z velocity demand in position mode
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2019-07-29 10:37:26 -04:00
RomanBapst 81ae85015f changed defaults of MPC acceleration limit parameters
- vehicle will fly less aggressive
- it does not make sense to set the lower acceleration limit to something
that exceeds gravity if most of the vehicles do not support reverse thrust

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2019-07-29 10:37:26 -04:00
RomanBapst a5d3e10c67 MPC_MAN_Y_MAX: changed default from 200 to 150 deg/s
- we have set the maximum yaw-rate MC_YAWRATE_MAX to 200 degrees and it
makes senses to leave a bit of margin between what the user can demand
and what the limits of the vehicle are

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2019-07-29 10:37:26 -04:00
RomanBapst f0cdd9be60 MPC_Z_VEL_I: changed default from 0.02 to 0.1
- generally better attitude tracking
- much better altitude control immediately after takeoff (hover throttle offset)
- faster landing detection

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2019-07-29 10:37:26 -04:00
Martina Rivizzigno 8aad105265 mc_pos_control: increase stack size by 100 bytes 2019-07-15 10:58:00 +02:00
bresch 15ec73629b MPC auto - Add MPC_YAW_MODE: towards waypoint (yaw first) mode. This mode ensures that
the vehicle yaws towards the next waypoint before accelerating. This is
required for drones with front vision and aerodynamic multicopters such
as standard vtol planes or highspeed multirotors.
2019-07-11 17:46:44 +02:00
Jacob Dahl 59c555aec3 Multicopter Auto: Adjustable land speed via RC (#12220) 2019-07-08 23:55:21 -04:00
Mathieu Bresciani e54075abe8 MC pos control - Force cruise and manual speeds below max speed. (#12404)
- Force hover thrust between min and max thrust
2019-07-05 15:40:28 -04:00
Timothy Scott dce1dda871 Fixed incorrect timestamps 2019-07-03 14:39:59 +02:00
Mathieu Bresciani c5deba53a2 mc_pos_control: Explicitly convert tilt variables to radians during check and assignments 2019-06-27 11:38:21 -04:00
Timothy Scott a134da6e12 Removed is_rotor_wing, replaced with vehicle_type 2019-06-13 10:04:26 +02:00
Daniel Agar 79d4c09d59 uORB::Publication simplify and cleanup
- base class is now template
 - drop linked list
 - virtualization no longer required
2019-06-12 08:48:19 -04:00
Daniel Agar 63d582464e mc_pos_control move print_usage() to bottom of file and format 2019-06-08 03:23:50 -07:00
Daniel Agar 5669df4ca4 mc_pos_control move orb subscriptions to new uORB::Subscription 2019-06-07 09:22:35 -04:00
Julian Oes b29e5e3adb hysteresis: remove dependency/side effect on time 2019-05-27 09:57:50 +02:00
Julian Oes 7b9562e3b1 hysteresis: move out of systemlib, move to gtest
This moves the hysteresis test out of the systemlib and makes it its own
small library. Since it still depends on hrt_absolute_time this does not
link yet. My attempt to get all link dependencies together failed.
2019-05-27 09:57:50 +02:00
Matthias Grob ea48cd4970 Takeoff: address @RomanBapst's review comments 2019-05-22 22:05:38 +02:00
Matthias Grob fac3e1c3f9 mc_pos_control: switch back to velocity ramp
But fix the two crucial problems:
- When to begin the ramp?
There's a calculation now for the velocity ramp initial value
such that the resulting thrust is zero at the beginning.
- When to end the ramp?
The ramp is applied to the upwards velocity constraint and it
just ramps from the initial value to the velocity constraint
which is applied during flight. Slower/going down is always possible.
2019-05-22 22:05:38 +02:00
Matthias Grob 90c6fea408 mc_pos_control_params: user friendly default spool/rampup times 2019-05-22 22:05:38 +02:00
Matthias Grob 856d129bf8 mc_pos_control: fix updating takeoff state when no flight task is running
Without always updating the takeoff state it will not get skipped when
the takeoff happened manually and when you switch from manual to position
mode the drone goes to idle and falls.
2019-05-22 22:05:38 +02:00
Matthias Grob a9f0981aaf mc_pos_control: fix adjusting the wrong setpoint
There are two local_position_setpoint in the position controller.
One describing the setpoint the task gives to the position controller
and a second one with the output of the position controller. I corrected
the wrong one during takeoff because the new takeoff thrust ramp runs after
the controller and not before.
2019-05-22 22:05:38 +02:00
Matthias Grob ad6eb19f09 Add a Takeoff class to handle multicopter takeoff
In a deterministic way with clear states to go through.
2019-05-22 22:05:38 +02:00
Matthias Grob da533a7b1d mc_pos_control: replace takeoff velocity ramp with thrust ramp
The velocity ramp had problems with:
- different vehicle tunings resulted in the start value of the resulting
thrust ramp staring either higher and lower than zero thrust.
lower -> delay of beginning
higher -> small jump at beginning
- when a task set position and velocity at the same time during takeoff
(which AutoSmoothVel does) it resulted in a velocity setpoint
jump at the end of the ramp because the additional velocity
setpoint correction from the position controller was not considered.

The thrust ramp should now be very deterministic:
- always start at zero
- always end at the curreant thrust setpoint output
of the complete position controller
2019-05-22 22:05:38 +02:00
Matthias Grob e73218d665 mc_pos_control/FlightTasks: trigger takeoff based on task
The initial idea of the flight task architecture was that
a task can freely set it's setpoints and doesn't have to
worry about takeoff and landing. It would just takeoff
when it's landed and there's a setpoint to go up and
land when it puts a setpoint that pushes into the ground.
With the takeoff logic there are some significant interface
problems depending on the way a task is implemented:
From the setpoint is not high enough to trigger to
an unexpected takeoff because of some estimator
fluctuation affecting the setpoint. It's easiest to solve this
by allowing the task to determine when a takeoff is triggered.
If no condition is implemented by default a task is not
allowing a takeoff  and cannot be used to get the vehicle
off the ground.
2019-05-22 22:05:38 +02:00
Matthias Grob ae96e16c73 mc_pos_control: initialize takeoff altitude reference
according to @dagar's review comment.
2019-05-22 22:05:38 +02:00
Matthias Grob 8036efd7f2 mc_pos_control: refactor takeoff trigger conditions to be positive 2019-05-22 22:05:38 +02:00
Matthias Grob 5e23883376 mc_pos_control: fix smooth takeoff ramp
- start from a velocity setpoint pushing into the ground
to ramp from idle thrust up.
- start with a bit higher velocity setpoint threshold to make
sure the vehicle has a chance to really get off the ground.
- calculate ramp slope from initialization setpoint to the desired one
instead from zero to the desired. this ramps up quicker when you demand
a very small upwards velocity like the AutoLineSmoothVel and
ManualPositionSmoothVel tasks do at the beginning.
- don't stay in the takeoff ramp depending on the land detector, this
is unnecessary.
2019-05-22 22:05:38 +02:00
Matthias Grob bc77302fc9 mc_pos_control: refactor smooth takeoff names
The comments and variable names were partly misleading.
I grouped all members, hopefully gave them more
understandable names and adjusted the comments.
2019-05-22 22:05:38 +02:00
Matthias Grob 6d5d09c231 mc_pos_control: refactor smooth takeoff call
There were two rather confusing function calls one to check
if smooth takeoff needs to be ran and one that updates it.
I combined them and documented the interface correctly
making the parameters non-reference const floats.
2019-05-22 22:05:38 +02:00
Mathieu Bresciani 4b2d01dea1 MPC parameters - Update from Matthias' comments
Co-Authored-By: Matthias Grob <maetugr@gmail.com>
2019-05-17 14:15:29 +02:00
bresch b726d8df0d Add jerk parameter for auto mode MPC_JERK_AUTO. Specify when a parameter is only used in a certain manual or auto mode 2019-05-17 14:15:29 +02:00
Matthias Grob f30f12341f PositionControl: tiny minimal thrust length
To be able to still infer the direction of the thrust vector we
limit it to a minimal length even if MPC_THR_MIN is set to zero.

Note: This is a hotfix for certain specific applications.
The direction of the thrust vector in this corner case is very
likely to get into the tilt limit which is generally undesired.
2019-05-08 03:08:45 -05:00
bresch 89bc68e12b Auto - Rename MC_YAWRAUTO_MAX -> MPC_YAWRAUTO_MAX 2019-04-26 12:43:26 +02:00
Martina Rivizzigno 34b0f33098 move all obstacle avoidance interfaces to the ObstacleAvoidance library 2019-04-04 16:41:26 +02:00
Martina Rivizzigno 8c24ba9255 move injection of avoidance setpoints to flight task library 2019-04-04 16:41:26 +02:00
bresch ece49247b6 Parameter update - Rename variables in modules/mc_pos_control
using parameter_update.py script
2019-04-03 15:38:50 +02:00
bresch 99fb88ce83 AltitudeSmoothVel - Create new altitude flight task that uses the
velocity smoothing library to create a jerk-limited trajectory along the
Z axis. This FlightTask is used when MPC_POS_MODE = 3.
2019-04-03 10:43:31 +02:00
Matthias Grob 295c3fd0c5 mc_pos_control: correct tilt parameter limits
- correcting
c9e52d4386
to allow 180° maximum tilt instead of landing tilt.
- Introducing tilt limitation minimums like requested in #11473
2019-03-24 20:52:17 +01:00
Daniel Agar 1083af21e8 mc_pos_control limit to 50 Hz 2019-03-15 00:24:59 -04:00
baumanta d42b9205f9 Rename parameter MPC_OBS_AVOID to COM_OBS_AVOID and change the location to commander. 2019-03-12 11:24:33 +01:00
bresch 684e2974ac mc_pos_control_main - Re-add updateVelocityControllerIO for glitch-free position unlock 2019-02-28 21:26:13 +01:00
Matthias Grob db0283ef21 mc_pos_control: fix altitude limitation
Before if you were above the maximum altitude you could not command to
go down anymore until the position controller had overshoot to under the
maximum altitude again.
2019-02-25 18:53:05 +01:00
bresch 8f584a1496 smooth takeoff - Support smooth takeoff triggered by jerk setpoint 2019-02-25 08:07:33 +01:00
bresch 197ddd3e46 mc_pos_control - Publish trajectory setpoint directly after the FlightTask update 2019-02-13 20:56:57 +01:00
bresch c0dab47554 mc_pos_control - reduce smooth_velocity_takeoff default threshold, set initial takeoff speed to 0 and remove useless else 2019-02-13 20:56:57 +01:00
bresch e0c48d1d76 PositionControl - use dynamic constraints to saturate velocity controller for now as it is needed for the current smooth takeoff logic. Will be reverted after smooth takeoff refactor 2019-02-13 20:56:57 +01:00
bresch 106f0769fd mc_pos_control - add takeoff_ramp_time zero division guard 2019-02-13 20:56:57 +01:00
bresch 3543071eb9 Position Controller - Saturate the controllers using static parameters. Handle saturations in the flight tasks only 2019-02-13 20:56:57 +01:00