Commit Graph
78 Commits
Author SHA1 Message Date
Matthias Grob 26171df9fc mc_pos_control: save previous velocity setpoint after constraining, fix smooth takeoff to be still excluded from slewrate 2017-11-15 10:38:57 +01:00
Matthias Grob e12bfa30d4 mc_att_control: defualt parameters set maximal acro rates to 2/1.5 turns per second for roll,pitch/yaw 2017-10-17 16:54:16 +02:00
Matthias Grob 8b09eaf124 mc_att_control: use SuperExpo input curve for acro mode to further enhance the stick feel 2017-10-17 16:54:16 +02:00
Matthias Grob 455ba0e1b5 mathlib Functions: added SuperExpo function for stick feel enhancement 2017-10-17 16:54:16 +02:00
Matthias Grob 3ce5525b7c mc_att_control: use expo input for acro mode to allow for high input rates without loosing input sensitivity 2017-10-17 16:54:16 +02:00
Matthias Grob 2b7dcd3f34 mc_pos_control: multiple small fixes in position controller we acumulated over time during our PX4 deployment and want to contribute back 2017-10-09 10:20:29 +02:00
Matthias Grob c177d6491a mc_pos_control: simplify unnecessary complicated boolean conditions 2017-10-09 10:20:29 +02:00
Matthias Grob 5bea264a5f Matrix Quaternions: Apply simpler call for constructor and copying to all remaining modules 2017-09-21 17:44:57 +02:00
Matthias Grob 2941cea384 matrix: Switch to hamilton convention for quaternion product order and according ecl changes
Note: ecl needs to be updated at the same time
because as soon as the ecl is compiled within PX4 Firmware
the matrix submodule checked out by PX4 Firmware is used
for every call to a matrix or quaternion.
2017-09-21 17:44:57 +02:00
Matthias Grob 60c760280e mc_pos_control: fix comment typo "hight" 2017-07-07 18:25:35 +02:00
Matthias Grob b511ccd9fe mc_pos_control: integrate complete order and limits of velocity setpoint calculation
- one warn_rate_limited was missing
- vel_sp_slewrate was in the wrong order for smooth slowdown/speedup on takeoff and landing
- slow_land_gradual_velocity_limit was replaced by calls to math::gradual
- smooth takeoff speed got controllable by user input
- comments were corrected
- an additional check for the sanity of velocity setpoints was added
2017-07-07 18:25:35 +02:00
Matthias Grob 1d7f760a96 mathlib, mc_pos_control: rename functions file and add gradual linear function 2017-07-07 18:25:35 +02:00
Matthias Grob e28f8bff67 commander: make commonly spoken strings more user friendly
these technical messages might not be suitable for the user of a product
2017-06-15 07:50:41 +02:00
Matthias Grob 0c4719de3e mc_pos_control: smooth takeoff, fixed gradient of the velocity ramp by takeoff speed parameter
because we need a workaround for the broken auto takeoff logic which can start the vehicle with a loiter setpoint
in this case the very first moment is still a jump but then it gets taken over by the fix gradient ramp
this can basically be reverted after the auto takeoff logic is fixed
2017-04-27 14:05:20 +02:00
Matthias Grob b5820afa14 mc_pos_control: smooth takeoff, fixed ramp reset bug and takeoff speed limiting condition
currently when the vehicle is landed again (not after bootup) the core position controller does not run anymore
therefore the velocity limit ramp in some cases did not get reset correctly

speed limiting in auto takeoff mode only needs to be limited when the user did not take over
2017-04-27 14:05:20 +02:00
Matthias Grob 9a162a24bb mc_pos_control: improved smooth takeoff and used it for manual takeoff as well
adresses:
there were setpoint twitches at the beginning and end of my smooth takeoff routine
it was to slow and not configurable
it was only available for automatic takeoff
2017-04-27 14:05:20 +02:00
Matthias Grob 75872b0713 mc_pos_control: switched auto takeoff to clean position control to takeoff point with gradual velocity limit
auto takeoff  was pretty chaotic and bypassed the velocity controller until some magic condition
the goal of this approach is to make the behaviour and smoothness more predictable and reuse the exact same logic for manual takeoff
2017-04-27 14:05:20 +02:00
Matthias Grob 5fd6bfc18c mc_pos_control: reorder velocity setpoint limiting, adding comments 2017-04-27 14:05:20 +02:00
Matthias Grob f5964ec237 mc_pos_control: pure refactor, reduce one level of indentation in calculate_thrust_setpoint 2017-04-27 14:05:20 +02:00
Matthias Grob 40d058558b mc_pos_control: pure refactor, split up core position control into velocity and thrust setpoint generation 2017-04-27 14:05:20 +02:00
Matthias Grob fac34de11e mixer_multirotor: switched to math::constrain (#7073)
- a local implementation was used before which is not necessary
2017-04-26 15:25:05 -04:00
Matthias Grob 709bd8cb28 mc_pos_control: combine separate pitch and roll maximum tilt angles into one
because there is no sense to have different angle scalings into different directions
it would lead to unintuitive piloting experience
acceleration is directly coupled to the tilt angle regardless of possible assymetric multicopter vehicles
2017-04-20 13:20:01 +02:00
Matthias Grob d1b270d5b2 land_detector: fix sanity condition that we have ground contact when we are landed to include the hysteresis flag
because the condition was looking for the instantaneous flag and during the hysteresis time the state did not change anymore
2017-04-20 13:20:01 +02:00
Matthias Grob caecdbd60b land_detector: treat altitude mode like position mode with vertical checks but without horizontal checks
because in altitude mode we have a baro available and can therefore check vertical movement
we can not check horizontal movement but I consider the checks for landing still pretty safe
unlike in manual mode we are not allowed to disarm before land detection in altitude mode
2017-04-20 13:20:01 +02:00
Matthias Grob 2955a2c317 simulator: typo in initial output message 2017-04-12 18:58:37 +02:00
Matthias Grob 854511b14b cmake: NuttX make shell script call explicit (#6996) 2017-04-07 11:33:19 -04:00
Matthias Grob 5a00cb4770 MPU6000 driver: change default accelerometer range to +-16g
This range amkes much more sense for MAV applications.
It reduces vibration vulnerability caused by measurement range clipping.
2017-03-30 19:07:59 +02:00
Matthias Grob 72fb7a5062 mc_pos_control: added gradual landing speed logic
depending on two altitudes that can get set as parameter
the logic linearly slows down from higher land altitude 1 to slower land altitude 2
2017-03-22 15:21:34 +01:00
Matthias Grob 7434bcc693 mc_pos_control: fixed rebase and refactor errors 2017-03-22 15:21:34 +01:00
Matthias Grob 5e2f18ebaa mc_pos_control: added separate velocity control setpoint slewrate for deceleration
to improve the smooth user experience while accelerating
but not have any delay when braking
2017-03-22 15:21:34 +01:00
Matthias Grob b32e5e7ec0 mc_pos_control: fixed all pull request complaints
mainly changing parameters to BlockParams, reorder them and comment
2017-03-22 15:21:34 +01:00
Matthias Grob bfb4de0e66 startup scripts/mc_pos_control: renamed parameters after refactor 2017-03-22 15:21:34 +01:00
Matthias Grob 470c3fdc06 mc_pos_control: refactoring only in manual velocity setpoint generation 2017-03-22 15:21:34 +01:00
Matthias Grob 713ba45876 mcpos_control: remove duplicate deadzone parameters 2017-03-22 15:21:34 +01:00
Matthias Grob eec757915c mc_pos_control: switch manual vertical/z velocity curve to expo with deadzone 2017-03-22 15:21:34 +01:00
Matthias Grob bb3b26e00f logger: adjusted log_writer_file stack size
because of messages in the logs
2017-03-16 14:05:15 +01:00
Matthias Grob ca9393eb97 mc_pos_control: fix parameter description of expo for QGC parsing 2017-03-16 11:42:27 +01:00
Matthias Grob 2b90224075 land_detector: added parameter for manual position stick takeoff threshold 2017-02-28 13:05:33 +01:00
Matthias Grob 8fd27fddcd mc_pos_control: moved responsibility of the x,y stick deadzone to a mathematical function
to prevent a setpoint step when moving the stick over the border of the deadzone
and to enable very small inputs even from a control stick that needs a big deadzone
2017-02-25 11:05:53 +01:00
Matthias Grob 3a358422c4 mc_pos_control: change sign for close to ground + style fix 2017-02-23 23:26:17 +01:00
Matthias Grob e6031a97fa land_detector: added a parameter for the manual land detection stick throshold
because it is definitely something that needs to be allowed to tune or disable for different application scenarios
2017-02-23 13:18:49 +01:00
Matthias Grob 3183cbda90 land_detector: manual land detection stick throshold less strict
Even for well calibrated RC sticks 5% stick movement is a too small margin for the end user that might not land because of this.
15% is still clearly restricting the stick far down.
2017-02-22 21:56:41 +01:00
Matthias Grob 194f0c1de8 land_detector: ground detection corrected comment and clarified condition 2017-02-13 11:34:10 +01:00
Matthias Grob 9963cf532d land_detector: refactored helper method names 2017-02-13 11:34:10 +01:00
Matthias Grob c559f195ec land_detector: Hotfix to prevent ground contact detection when descending velocity is very slow with manual stick all the way down
Now the stick down check is only done in manual control and the thrust low is again mandatory to detect ground in any case.
2017-02-13 11:34:10 +01:00
Matthias Grob 9e80a6c9d6 sensors: rc filter no unstable cutoff, better initialisation, reset filter on change, constrain output
Filter gets unstable if cutoff is above sample rate/2.
Filter initial frequencies do not matter a lot because they get replaced by parameters anyways.
Filter delay values get reset to 0 when the filter is reconfigured otherwise there can be some weird spikes in the output.
Filter output gets constrained to the range again because of possible overshoot.
2017-02-02 21:24:05 +01:00
Matthias Grob 81dcba3a2a sensors: rc added low pass filter parameters 2017-02-02 21:24:05 +01:00
Matthias Grob c2be4b2b29 mc_pos_control: added exponential curve to manual x,y velocity setpoint
controlled by parameter MPC_XY_MAN_EXPO that is disabled (0) by default
2017-02-02 21:24:05 +01:00
Matthias Grob 661832ca1d mathlib: added exponential curve function 2017-02-02 21:24:05 +01:00
Matthias Grob d991285406 sensors: rc filter: added sample rate of 33.3Hz and lowpass cutoff 5Hz hardcoded for testing 2017-02-02 21:24:05 +01:00
Matthias Grob 27a4ce2691 sensors: rc added lowpass filters to the 4 main channels without useful samplerate and cutoff frequency yet 2017-02-02 21:24:05 +01:00
Matthias Grob a14dbdcfdb sensors: rc refactored min max ifs to constrain 2017-02-02 21:24:05 +01:00
Matthias Grob 480dd0922b Land detector: revision of the 2 stage landing mechanism
Ground detect: pilot want down or we are on minimum thrust by auto land but no vertical movement
-> Controller should relax x,y corrections and even ramp down desired thrust
Landed: All other conditions are eventually met
2017-01-28 16:23:04 +01:00
Matthias Grob b130913090 land_detector: made sure the 2 stage landing can not happen in one hysteresis time 2017-01-28 16:23:04 +01:00
Matthias Grob 41ff46b557 tap_esc: fixed offset to really keep the range 1200-1900
even if the input to the driver is too low or too high.
This prevents motor stalling.
NaN or Inf still stop the motor.
2017-01-28 15:24:45 +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
Matthias Grob 5b54d78128 land detector: changed minimum throttle threshold to have useful landing detection in real world scenarios 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 f95fb0f20f land detector: commented takeoff throttle values for each mode 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
Matthias Grob 7ab2958757 land_detector: added takeoff throttle threshold
if we control manually and are still landed, we want to stay idle until the pilot rises the throttle
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
Matthias Grob b79e4ab506 land detector: reverted scientific notation unwanted doubles 2016-12-26 15:36:43 +01:00
Matthias Grob 03d7b65299 land detector: refactoring ff to freefall 2016-12-26 15:36:43 +01:00
Matthias Grob 808dedf441 land detector: small refactor while studying 2016-12-26 15:36:43 +01:00
Matthias Grob eda7848e16 mc_pos_control small refactoring while studying 2016-12-21 08:40:16 +01:00
Matthias Grob f9da41fcf2 fixed rebase errors in arm switch implementation 2016-12-20 09:46:36 +01:00
Matthias Grob 0dbdde3404 Arming: made flags more understandable, added error message for rejected disarm 2016-12-20 09:46:36 +01:00
Matthias Grob f6282f5b3d Arm button fix: include the arm switch into the structure of all the checks for RC arming 2016-12-20 09:46:36 +01:00
Matthias Grob 94c8371ffe Arm button fix: toggle arming state only once per arm button press 2016-12-20 09:46:36 +01:00
Matthias Grob 8a75827d6a fixed all comments of arm button review 2016-12-20 09:46:36 +01:00
Matthias Grob aa984edd90 added an rc switch for arming and disarming with the option to use it as a button 2016-12-20 09:46:36 +01:00
Matthias Grob 537f72073d minor: uppercase typo and unused header 2016-12-20 09:46:36 +01:00
Matthias Grob d1a2f52246 fix segmentation fault when running local_position_estimator module without arguments
argv[1] was read even if argc < 2 -> segmentation fault when running without arguments
the return saves this
2016-12-12 15:25:05 +01:00
MaEtUgR d1e0cbe325 fixing all "argc < 1" to avoid segmentation fault when calling the module with no parameters
argc is never smaller than one because the first element of the array is the program name!
2016-03-13 17:52:33 +01:00
MaEtUgR 4f29c7c4db switch the modules implementing the block structure to px4_poll such that in posix_sitl simulation the poll works as expected, blocks the module and doesn't overload the CPU 2016-03-09 09:38:32 +01:00
Matthias Grob 5191731f22 make romfs pruner script windows compatible
When we open the file handle to write back the lines in binary mode, we don't change the line endings but instead leave them as they were before. This is impotant for Windows users as Python on Windows otherwise adds CRLF endings to the parameter files and they can't be correctly parsed by NuttX any more.
2015-10-01 09:59:30 +02:00