Commit Graph

60 Commits

Author SHA1 Message Date
Gone4Dirt 431cc25dca AP_MotorsHeli: Consolidate all autorotation state into its own class within RSC 2024-10-11 09:54:26 +11:00
bnsgeyer e30b4bf090 AP_MotorsHeli: fix cooldown feature with new autorotation RSC library 2024-10-06 14:33:57 +11:00
Peter Barker 90af3043bc AP_Motors: avoid use of AP_Logger.h in library headers
this pulls in many more headers, we should avoid using it whereever we can
2024-09-04 09:51:49 +10:00
Gone4Dirt 7271a469fd AP_MotorsHeli: Move heli logging down to motors 2024-08-14 23:39:01 -04:00
Iampete1 287e9726d7 AP_Motors: Heli: RotorControlState to enum class 2023-12-19 10:38:49 +11:00
Peter Barker 6efc6d0f2d AP_Motors: correct compilation when GCS library not available 2023-12-12 11:41:47 +11:00
Iampete1 97541f82d0 AP_Motors: Heli RSC: remove incorrect set range call 2023-06-27 09:04:18 +10:00
Gone4Dirt 4b2c1368bd AP_MotorsHeli: move rotor_speed_above_critical to RSC so that it is actually used 2023-05-08 19:05:17 -04:00
Iampete1 81f3d3edda AP_Motors: Heli: get_output_mask return only motors 2023-05-05 22:20:16 -04:00
Bill Geyer eba850d9ef AP_MotorsHeli: better governor power recovery from autorotation 2023-02-05 17:54:33 -05:00
Bill Geyer 40d18f46cf AP_MotorsHeli: Change AROT_PCT to AROT_IDLE 2023-02-05 17:54:33 -05:00
Bill Geyer a209bd15eb AP_Motors: style formatting MotorsHeli_RSC.cpp 2023-02-05 17:54:33 -05:00
Bill Geyer a27ccb8294 AP_MotorsHeli: add support for manual autorotation
AP_MotorsHeli: fix runup from idle bug

AP_MotorsHeli: don't let rotor_runup_output go below critical speed in autorotation

AP_MotorsHeli: set autorototate flag false after landing
2023-02-05 17:54:33 -05:00
Ferruccio1984 e935913f95 AP_Motors: Support for Autorotation implementation
-enables faster re-spool(user settable timer) after power engagement
-flare&touchdown controllers;
-rangefinder for distance from ground evaluation;
-higher refresh rate for rangefinder;
-attitude targets implementation for "guided" autorotation;
-retrieve zero lift collective position
2023-02-05 17:54:33 -05:00
Peter Barker d21aa2a1ed AP_Motors: add and use AP_RPM_ENABLED
... and backend-specific equivalents
2022-09-20 09:28:27 +10:00
Bill Geyer f7b420f131 AP_Motors: move turbine start to update_turbine_start and style cleanup 2022-02-23 14:22:47 +09:00
Ferruccio1984 3a67b17142 AP_Motors: tradheli support for turbine start 2022-02-23 14:22:47 +09:00
Bill Geyer afaff18bd0 AP_Motors: modifications based on suggested changes 2021-12-14 22:50:05 -05:00
Bill Geyer a8d74c6414 AP_Motors: Tradheli- add governor engaged message over GCS 2021-12-14 22:50:05 -05:00
Bill Geyer 2ac157b188 AP_Motors: Tradheli- fix governor spool up bug 2021-12-14 22:50:05 -05:00
MidwestAire 22c2329063 AP_Motors:Heli_RSC - throttle curve _control_output does not need a constrain_float
- change lower limit of governor enaged output to 150% of idle speed
- add governor_reset() function
- remove governor defaults from header
- rearrange governor metadata in alphabetical order, assign new eeprom slot for rpm
2021-12-14 22:50:05 -05:00
MidwestAire 77f0fdf112 AP_Motors:clean up whitespace in heli motors class 2021-12-14 22:50:05 -05:00
Bill Geyer ea90217e09 AP_Motors: fix heli RSC parameter indices 2021-12-14 22:50:05 -05:00
Bill Geyer 05e8285f93 AP_Motors: use RPM singleton to get rpm in RSC 2021-12-14 22:50:05 -05:00
MidwestAire 301238fb8a AP_Motors:Heli_RSC - update governor to new torque integrating design with autothrottle 2021-12-14 22:50:05 -05:00
MidwestAire 42a131522b AP_Motors:Heli - new rotor speed control modes for autothrottle governor 2021-12-14 22:50:05 -05:00
Bill Geyer 3b40df133e AP_Motors: add spool down complete flag 2021-12-05 22:12:13 -05:00
Iampete1 b595beab10 AP_Motors: set ouput scaled with float 2021-10-20 18:29:58 +11:00
Gone4Dirt 6dc100728f AP_Motors: Fix spelling of autorotation flag 2021-02-08 22:09:49 -05:00
Gone4Dirt 1b7672a84f AP_Motors: Correctly adjust heli run up timer in bailout 2020-05-28 18:50:08 -04:00
Gone4Dirt b2d2bf61da AP_Motors: Support autorotation windows on external governors 2020-05-20 21:56:09 -04:00
bnsgeyer e193c45946 AP_Motors: tradheli-update parameter display names 2019-12-10 12:21:56 +09:00
Gone4Dirt 98a4335af4 AP_Motors: Added support for autorotation 2019-11-29 08:06:10 +08:00
bnsgeyer e91402aeb6 AP_Motors: tradheli-make all RSC params part of library
AP_Motors: Tradheli-fix RSC mode change while armed

AP_Motors: tradheli - improve RSC param metadata

AP_Motors: tradheli-put all throttle param settings in percent
2019-09-13 08:53:54 +09:00
bnsgeyer f1a32d7872 AP_Motors: Tradheli- modified thrcrv and gov parameter group names 2019-06-03 07:53:01 +09:00
ChristopherOlson b1046c7b80 AP_Motors:Heli_RSC Governor - add method of droop compensation
- improve handling of outliers from speed sensor
 - change governor_tc variable to governor_thrcurve
 - remove equals zero from variable declarations
2019-06-03 07:53:01 +09:00
bnsgeyer 4120e29614 AP_Motors: Tradheli-complete conversion of throttle curve params to percent
add conversion for throttle curve params for upgrade
2019-06-03 07:53:01 +09:00
bnsgeyer 3629541a20 AP_Motors: Tradheli - implement enable params for throttle curve and governor 2019-06-03 07:53:01 +09:00
ChristopherOlson cca58e393a AP_Motors:Heli_RSC - add support for rotor speed governor with droop speed control 2019-06-03 07:53:01 +09:00
bnsgeyer dec8c5de77 AP_Motors: convert heli code to use SRV_Channels
this converts the heli code to use the SRV_Channels output
functions. It does not change behaviour, but removes the last vehicle
type that did its own servo output calculations.  This change also
fixed servo initialization conflicts.

Note that this also allows helis to be setup with more than one
channel for a particular output (eg. two separate channels for tail
servo if they are wanted). This isn't likely to be used much, but does
make heli consistent with other vehicle types
2018-07-16 12:41:16 +10:00
bnsgeyer 690e8fd3f4 AP_Motors: TradHeli - Changed RSC mode 3 to a spline fit throttle curve 2018-03-27 09:07:03 +11:00
bnsgeyer ac2e933358 AP_Motors: Tradheli - Fixed Directdrive Variable Pitch Feature 2018-01-21 21:12:13 +11:00
Andrew Tridgell 638f1364be AP_Motors: adapt to new RC_Channel API 2017-01-12 17:39:37 +11:00
Mathieu OTHACEHE 152edf7189 Global: remove mode line from headers
Using a global .dir-locals.el file is a better alternative than
reincluding the same emacs header in every file of the project.
2016-10-24 09:42:01 -02:00
Andrew Tridgell 11975223dd AP_Motors: added H_RSC_POWER_NEGC and H_RSC_SLEWRATE
this gives more control over throttle for petrol
helis. H_RSC_POWER_NEGC allows for a asymmetric V-curve, which allows
for less power being put into the head when landing or when sitting on
the ground. That can lead to significantly less vibration and chance
of ground oscillation. A heli not being flown with aerobatics does not
need to use high throttle at negative collective pitch.

The H_RSC_SLEWRATE allows for a maximum throttle slew rate to be
set. Some petrol motors can cut if the throttle is moved too
quickly. We had this happen at a height of 6m when switching from
ALT_HOLD to STABILIZE mode. It also lowers the chance of the blades
skewing in their holders with the sudden change of power when the heli
is disarmed. In general it is a bad idea to do instantaneous large
movements of a IC engine throttle.
2016-07-03 18:29:05 +10:00
Andrew Tridgell 255bda9f9c AP_Motors: allow setting of loop rate
this allows for SCHED_LOOP_RATE in copter
2016-06-17 15:01:18 +10:00
Andrew Tridgell f58d837026 AP_Motors: fixed heli RSC output range and float conversion
adds H_RSC_PWM_MIN, H_RSC_PWM_MAX and H_RSC_PWM_REV
2016-06-04 18:33:36 +10:00
skyscraper daec4ea10e AP_Motors: Fix up after RC_Channels refactor
Further to refactor of RC_Channel class which included
adding get_xx set_xx methods, change reads and writes to the public members
to calls to  get and set functionsss

old public member(int16_t)   get function -> int16_t     set function (int16_t)
(expression where c is an object of type RC_Channel)
c.radio_in                     c.get_radio_in()           c.set_radio_in(v)
c.control_in                   c.get_control_in()         c.set_control_in(v)
c.servo_out                    c.get_servo_out()          c.set_servo_out(v)
c.pwm_out                      c.get_pwm_out()            // use existing
c.radio_out                    c.get_radio_out()          c.set_radio_out(v)
c.radio_max                    c.get_radio_max()          c.set_radio_max(v)
c.radio_min                    c.get_radio_min()          c.set_radio_min(v)
c.radio_trim                   c.get_radio_trim()         c.set_radio_trim(v);

c.min_max_configured() // return true if min and max are configured

Because data members of RC_Channels are now private and so cannot be written directly
 some overloads are provided in the Plane classes to provide the old functionality

new overload Plane::stick_mix_channel(RC_Channel *channel)
which forwards to the previously existing
void stick_mix_channel(RC_Channel *channel, int16_t &servo_out);

new overload Plane::channel_output_mixer(Rc_Channel* , RC_Channel*)const
which forwards to
(uint8_t mixing_type, int16_t & chan1, int16_t & chan2)const;

Rename functions

 RC_Channel_aux::set_radio_trim(Aux_servo_function_t function)
    to RC_Channel_aux::set_trim_to_radio_in_for(Aux_servo_function_t function)

 RC_Channel_aux::set_servo_out(Aux_servo_function_t function, int16_t value)
    to RC_Channel_aux::set_servo_out_for(Aux_servo_function_t function, int16_t value)

 Rationale:

        RC_Channel is a complicated class, which combines
        several functionalities dealing with stick inputs
        in pwm and logical units, logical and actual actuator
        outputs, unit conversion etc, etc
        The intent of this PR is to clarify existing use of
        the class. At the basic level it should now be possible
        to grep all places where private variable is set by
        searching for the set_xx function.

        (The wider purpose is to provide a more generic and
        logically simpler method of output mixing. This is a small step)
2016-05-10 16:21:15 +10:00
Randy Mackay 832a226f13 AP_MotorsHeli_RSC: rotor speeds in 0 to 1 range
Also move recalc_scalers functionality into update_rotor_ramp and update_rotor_runup
2016-04-01 11:59:30 +09:00
Andrew Tridgell 79c90d37f6 AP_Motors: apply HELI_RSC output type if available 2016-01-04 16:14:09 +11:00