mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 06:15:16 +03:00
Launch Control
Adds a race start assistance system that allows the pilot to pitch forward and then release the sticks with the quad holding position for the race start.
This commit is contained in:
parent
8609346f21
commit
e4dc93b128
14 changed files with 377 additions and 17 deletions
|
@ -42,6 +42,7 @@
|
|||
#include "pg/pg.h"
|
||||
|
||||
#include "fc/config.h"
|
||||
#include "fc/core.h"
|
||||
#include "fc/controlrate_profile.h"
|
||||
#include "fc/rc_controls.h"
|
||||
#include "fc/runtime_config.h"
|
||||
|
@ -243,6 +244,64 @@ static CMS_Menu cmsx_menuRateProfile = {
|
|||
.entries = cmsx_menuRateProfileEntries
|
||||
};
|
||||
|
||||
#ifdef USE_LAUNCH_CONTROL
|
||||
static uint8_t cmsx_launchControlMode;
|
||||
static uint8_t cmsx_launchControlTriggerMode;
|
||||
static uint8_t cmsx_launchControlThrottlePct;
|
||||
static uint8_t cmsx_launchControlAngleLimit;
|
||||
static uint8_t cmsx_launchControlGain;
|
||||
|
||||
static long cmsx_launchControlOnEnter(void)
|
||||
{
|
||||
const pidProfile_t *pidProfile = pidProfiles(pidProfileIndex);
|
||||
|
||||
cmsx_launchControlMode = pidProfile->launchControlMode;
|
||||
cmsx_launchControlTriggerMode = pidProfile->launchControlTriggerMode;
|
||||
cmsx_launchControlThrottlePct = pidProfile->launchControlThrottlePct;
|
||||
cmsx_launchControlAngleLimit = pidProfile->launchControlAngleLimit;
|
||||
cmsx_launchControlGain = pidProfile->launchControlGain;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long cmsx_launchControlOnExit(const OSD_Entry *self)
|
||||
{
|
||||
UNUSED(self);
|
||||
|
||||
pidProfile_t *pidProfile = pidProfilesMutable(pidProfileIndex);
|
||||
|
||||
pidProfile->launchControlMode = cmsx_launchControlMode;
|
||||
pidProfile->launchControlTriggerMode = cmsx_launchControlTriggerMode;
|
||||
pidProfile->launchControlThrottlePct = cmsx_launchControlThrottlePct;
|
||||
pidProfile->launchControlAngleLimit = cmsx_launchControlAngleLimit;
|
||||
pidProfile->launchControlGain = cmsx_launchControlGain;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static OSD_Entry cmsx_menuLaunchControlEntries[] = {
|
||||
{ "-- LAUNCH CONTROL --", OME_Label, NULL, pidProfileIndexString, 0 },
|
||||
|
||||
{ "MODE", OME_TAB, NULL, &(OSD_TAB_t) { &cmsx_launchControlMode, LAUNCH_CONTROL_MODE_COUNT - 1, osdLaunchControlModeNames}, 0 },
|
||||
{ "TRIGGER MODE", OME_TAB, NULL, &(OSD_TAB_t) { &cmsx_launchControlTriggerMode, LAUNCH_CONTROL_TRIGGER_MODE_COUNT - 1, osdLaunchControlTriggerModeNames}, 0 },
|
||||
{ "TRIGGER THROTTLE", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_launchControlThrottlePct, 0, 50, 1 } , 0 },
|
||||
{ "ANGLE LIMIT", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_launchControlAngleLimit, 0, 80, 1 } , 0 },
|
||||
{ "ITERM GAIN", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_launchControlGain, 0, 200, 1 } , 0 },
|
||||
{ "BACK", OME_Back, NULL, NULL, 0 },
|
||||
{ NULL, OME_END, NULL, NULL, 0 }
|
||||
};
|
||||
|
||||
static CMS_Menu cmsx_menuLaunchControl = {
|
||||
#ifdef CMS_MENU_DEBUG
|
||||
.GUARD_text = "LAUNCH",
|
||||
.GUARD_type = OME_MENU,
|
||||
#endif
|
||||
.onEnter = cmsx_launchControlOnEnter,
|
||||
.onExit = cmsx_launchControlOnExit,
|
||||
.entries = cmsx_menuLaunchControlEntries,
|
||||
};
|
||||
#endif
|
||||
|
||||
static uint8_t cmsx_feedForwardTransition;
|
||||
static uint8_t cmsx_angleStrength;
|
||||
static uint8_t cmsx_horizonStrength;
|
||||
|
@ -303,6 +362,10 @@ static OSD_Entry cmsx_menuProfileOtherEntries[] = {
|
|||
#ifdef USE_THROTTLE_BOOST
|
||||
{ "THR BOOST", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_throttleBoost, 0, 100, 1 } , 0 },
|
||||
#endif
|
||||
#ifdef USE_LAUNCH_CONTROL
|
||||
{"LAUNCH CONTROL", OME_Submenu, cmsMenuChange, &cmsx_menuLaunchControl, 0 },
|
||||
#endif
|
||||
|
||||
|
||||
{ "BACK", OME_Back, NULL, NULL, 0 },
|
||||
{ NULL, OME_END, NULL, NULL, 0 }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue