Commit Graph
337 Commits
Author SHA1 Message Date
Dennis Mannhart f297c45f78 mc_pos_control_main:
for landing, set velocity to zero and consider thrust_sp in body frame
instead of NED frame. Also limit thrust_sp_body_z to be larger than 0.0f
2017-01-28 16:23:04 +01:00
Lorenz Meier f961a12d9a MC position controller: Stop XY control once ground contact is established 2017-01-28 16:23:04 +01:00
Matthias Grob 34080be68b mc_pos_control: removed special mode switch calculation
because it is not needed anymore with feed forward thrust
it even produced aggressive twitches when used together with the feed forward thrust
2017-01-25 22:42:45 +01:00
Matthias Grob db581fa5e8 mc_pos_control: hotfix for possible thrust below minimum thrust setting
Hotfix after a crash because of a heavily negative desired thrust that got clipped to 0 by the mixer.
0 thrust meant no more attitude tracking.
2017-01-19 18:05:57 +01:00
Lorenz Meier 12767c8538 MC position controller: Stop holding position once ground contact is established.
This ensures the system does not tip over on landings. Tested in SITL with a GPS drift model.
2017-01-16 08:25:26 -08:00
Matthias Grob 39f9647291 mc_pos_control: fixed float literals and commented calculations 2017-01-16 08:25:26 -08:00
Matthias Grob 5f3cbbbbc2 mc_pos_control: changed thrust calculation to 3D projection onto body z axis
until now the desired thrust was simply the absolute value of the thrust setpoint vector
but a multicopter is only capable of producing thrust in its (negative) body z axis
this leads to excess thrust during attitude tracking errors

one important use case is:
trying to land with minimal thrust in NED z axis against gravity
but the position controller still correcting some small horizontal estimation errors
then this prevents unwanted thrust in a completely wrong direction
2017-01-16 08:25:26 -08:00
Julian Oes d63db203ba mc_pos_control: don't publish attitude sp 2x 2017-01-16 08:25:26 -08:00
Matthias Grob 5529023ec1 mc_pos_control: added feed forward hover thrust
the velocity controller was misusing the integral part to account for the constant gravitational force offset
the hover throttle from the parameter is now is now directly used as feed forward for the thrust in world z direction
the integrator compensates for inaccurate paarameter but should now be idealy zero
2017-01-16 08:25:26 -08:00
Lorenz Meier 1511838919 Pos control: header cleanup 2016-12-27 21:00:51 +01:00
devbharat 5a8c542d46 Added checks for setting mpc saturation flags 2016-12-27 17:38:00 +01:00
Matthias Grob eda7848e16 mc_pos_control small refactoring while studying 2016-12-21 08:40:16 +01:00
Dennis Mannhart 22733b1501 mc_pos_control: dont run alt-control when landing 2016-12-15 10:17:03 +01:00
Julian Oes ef7ade52b1 mc_pos_control: stay landing even after freefall
This fixes the following case:
1. VTOL in auto mission descends to land
2. _in_landing is set to true correctly
3. _lnd_reached_ground is set to true because it's detected, motors idle.
4. The vehicle might drop for a few centimeters and _acc_z_lp goes back
   up above 4m/s^2, so freefall is detected.
5. The motors spin up again, and _in_landing and _lnd_reached_ground are
   both reset to false.
6. Since we're floating at a few centimeters, we can't actyally get to
   _vel_z_lp > 0.5, and therefore _in_landing is never triggered after.
7. Thus we never finish the landing.

This is fixed by only resetting _lnd_reached_ground to false but
leaving _in_landing true.
2016-12-15 10:17:03 +01:00
Julian Oes 70fec788d9 mc_pos_control: allow takeoff in offboard mode 2016-12-15 10:17:03 +01:00
Julian Oes 072ba51064 mc_pos_control_main: changes got lost in rebase 2016-12-15 10:17:03 +01:00
Julian Oes b285827f52 mc_pos_control: remove leftover printf 2016-12-15 10:17:03 +01:00
Julian Oes 65b8bcae12 mc_pos_control: always require takeoff setpoint
Problem: The drone started taking off in LOITER (HOLD) mode even if on
ground and did not do a proper takeoff jump. The effect was mostly a
hovering close above ground or tilting/flipping because of integrator
wind-up.

Solution: Stay at minimum throttle until a takeoff setpoint is issued.
2016-12-15 10:17:03 +01:00
Julian Oes c64b8c7095 mc_pos_control: always use fabsf and not fabs 2016-12-15 10:17:03 +01:00
Julian Oes e01eaf172a Add body/NED frame for offboard velocity control
This adds the possibility to use offboard velocity control in the body
frame and not just the NED (world) frame.

The frame is set in the set_position_target_local_ned message and passed
on to mc_pos_control in the position_setpoint topic.
2016-12-15 10:17:03 +01:00
Julian Oes 5b132aef70 mc_pos_control: hold position at offboard vel 0
If velocity offboard control is used, it makes sense to lock/hold
position if the velocity input is 0. If this is not done, we will slowly
drift because nothing is integrating to keep the UAV at its position.
2016-12-15 10:17:03 +01:00
Julian Oes 454cd33a5e mc_pos_control: move stuff where it belongs 2016-12-15 10:17:03 +01:00
Julian Oes 0b37272d75 mc_pos_control: further reshuffling
Should not have any functional change
2016-12-15 10:17:03 +01:00
Julian Oes 61fff54cbe mc_pos_control: copy triplet in one place only 2016-12-15 10:17:03 +01:00
Julian Oes 432824d603 mc_pos_control: move attitude setpoint to function
Again, no functional change, just refactor.
2016-12-15 10:17:03 +01:00
Julian Oes c200e581c3 mc_pos_control: move control into functions
This is only a refactor with no functional change
2016-12-15 10:17:03 +01:00
Dennis Mannhart dd1ca0daa2 correctin from user input to roll and pitch 2016-12-08 15:06:00 +01:00
Dennis Mannhart 6906d966ce manual input mapping to roll and pitch 2016-12-08 15:06:00 +01:00
Dennis Mannhart c2b6381759 adjust to astyle format 2016-12-07 17:32:09 +01:00
Dennis Mannhart 5ed35e9731 added comment why reseting at this point; created variable for horizontal velocity magnitude 2016-12-07 17:32:09 +01:00
Dennis Mannhart 6865a70dea reset position setpoints once altitude condition is reached 2016-12-07 17:32:09 +01:00
Roman aabf753ecb mc_pos_control: do not do tilt compensation when hor velocity is controlled
- fixed a bug where tilt compensation was done also when the horizontal
velocity was controlled. This is not needed because in this case
the controller outputs a 3D thrust vector.

Signed-off-by: Roman <bapstroman@gmail.com>
2016-12-05 16:07:19 +01:00
Julian Oes e416a8cb83 mc_pos_control: fix takeoff bug
This resolves a bug where a takeoff would go sideways instead of
straight up. What happened was that the position setpoint got shifted
around even though there was actually no real setpoint set but only a
setpoint of type IDLE. This then lead to a position setpoint far away
from the takeoff point and therefore scary takeoffs.

This fix prevents the part of the position controller which
moves/integrates the position setpoint from running in the case of an
idle setpoint.

This bug could be reproduced by switching the vehicle to mission mode
without a valid mission, then switch to hold mode, and then send the arm
and takeoff command.
2016-12-02 17:34:00 +01:00
devbharat 4ea72f35ed Disable resetting alt/pos setpoint flags if switching to position control from auto when very close to takeoff setpoint 2016-11-21 09:05:22 +01:00
devbharat dd1821b02e Reset alt/position when entring position control from auto 2016-11-21 09:05:22 +01:00
devbharat 59c1dd7183 Always check reset flags in auto. Only set reset flags to true when required. Do not limit hor/vert setpoint acceleration when setpoints are reset. 2016-11-21 09:05:22 +01:00
Roman a61b1e089c make sure to update the reset counters every time the topic updates
Signed-off-by: Roman <bapstroman@gmail.com>
2016-11-21 07:29:21 +01:00
Roman d4c87d62f1 fixed code style
Signed-off-by: Roman <bapstroman@gmail.com>
2016-11-21 07:29:21 +01:00
tumbili b2410460a5 made position controllers handle estimator state resets 2016-11-21 07:29:21 +01:00
Lorenz Meier 7be71459f5 Offboard control (#5816)
* Fix jmavsim HITL simulation of MAV_CMD_DO_REPOSITION in the case where you have no radio attached to the PX4 and so you have disabled RC link loss for that reason (set NAV_RCL_ACT = 0) but you still want the jmavsimulation to work.  The line of code changed here causes failsafe RTL to kick in without this fix.

* Add altitude hold option using Z position control, while doing velocity control on vx and vy.

* Fix style and rebase issues
2016-11-07 12:09:41 +01:00
Beat Küng c8a79d2443 mc_pos_control_main: remove <functional> include
Avoid including <functional> which can cause problems on NuttX
2016-10-24 10:22:48 +02:00
Julian Oes 032f4df3de mc_pos_control: revert gain change 2016-10-23 16:25:15 +02:00
Julian Oes 72e46e7ed0 mc_pos_control: jump quicker
In SITL, it still takes a while until a vehicle lifts off, so it seems
sensible to raise this jump gain a bit.
2016-10-23 16:25:15 +02:00
Julian Oes ff415a4f1d mc_pos_control: correctly initialize landed state
Since orb_copy is guarded with a orb_check, we ended up not having the
corrent landed state in the beginning which could lead to some
unexpected behaviour on takeoff.
2016-10-23 16:25:15 +02:00
Julian Oes 2fff2ab9ac Add switch for landing gear, pass it to actuators 2016-10-20 23:17:05 +02:00
Lorenz Meier 3696e7722a Code style adjustments 2016-10-19 10:17:41 +02:00
Lorenz Meier a12780c88f Remove attitude setpoint matrix from attitude setpoint topic 2016-10-19 10:17:41 +02:00
Andreas Antener f3b5c243e5 UT: added method to test float values
MC pos control tests: added tests to all configs that include them
2016-10-10 23:05:44 +02:00
Andreas Antener 9a219da9c2 Refactored cross sphere line tracking and added a unittest to verify correct operation 2016-10-10 23:05:44 +02:00
Andreas Antener c2e0246650 MC pos control: realize when we are on the trajectory but passed the target waypoint 2016-10-10 23:05:44 +02:00