mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-25 09:16:01 +03:00
first build
This commit is contained in:
parent
fd59159f71
commit
6eb19f2135
8 changed files with 88 additions and 78 deletions
|
@ -3272,6 +3272,16 @@ Max allowed above the ground altitude for terrain following mode
|
|||
|
||||
---
|
||||
|
||||
### nav_mc_althold_throttle
|
||||
|
||||
If set to STICK the FC remembers the throttle stick position when enabling ALTHOLD and treats it as the neutral midpoint for holding altitude. If set to MID_STICK or HOVER the neutral midpoint is set to the mid stick position or the hover throttle position respectively.
|
||||
|
||||
| Default | Min | Max |
|
||||
| --- | --- | --- |
|
||||
| STICK | | |
|
||||
|
||||
---
|
||||
|
||||
### nav_mc_bank_angle
|
||||
|
||||
Maximum banking angle (deg) that multicopter navigation is allowed to set. Machine must be able to satisfy this angle without loosing altitude
|
||||
|
@ -3742,16 +3752,6 @@ Enables or Disables the use of the heading PID controller on fixed wing. Heading
|
|||
|
||||
---
|
||||
|
||||
### nav_use_midthr_for_althold
|
||||
|
||||
If set to OFF, the FC remembers your throttle stick position when enabling ALTHOLD and treats it as a neutral midpoint for holding altitude
|
||||
|
||||
| Default | Min | Max |
|
||||
| --- | --- | --- |
|
||||
| OFF | OFF | ON |
|
||||
|
||||
---
|
||||
|
||||
### nav_user_control_mode
|
||||
|
||||
Defines how Pitch/Roll input from RC receiver affects flight in POSHOLD mode: ATTI - pitch/roll controls attitude like in ANGLE mode; CRUISE - pitch/roll controls velocity in forward and right direction.
|
||||
|
|
|
@ -48,7 +48,7 @@ static const OSD_Entry cmsx_menuNavSettingsEntries[] =
|
|||
OSD_SETTING_ENTRY("MAX NAV CLIMB RATE", SETTING_NAV_AUTO_CLIMB_RATE),
|
||||
OSD_SETTING_ENTRY("MAX AH CLIMB RATE", SETTING_NAV_MANUAL_CLIMB_RATE),
|
||||
OSD_SETTING_ENTRY("MC MAX BANK ANGLE", SETTING_NAV_MC_BANK_ANGLE),
|
||||
OSD_SETTING_ENTRY("MID THR FOR AH", SETTING_NAV_USE_MIDTHR_FOR_ALTHOLD),
|
||||
OSD_SETTING_ENTRY("MC ALTHOLD THROT", SETTING_NAV_MC_ALTHOLD_THROTTLE),
|
||||
OSD_SETTING_ENTRY("MC HOVER THR", SETTING_NAV_MC_HOVER_THR),
|
||||
OSD_SETTING_ENTRY("LANDING DISARM", SETTING_NAV_DISARM_ON_LANDING),
|
||||
|
||||
|
|
|
@ -1289,7 +1289,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
|||
sbufWriteU16(dst, navConfig()->general.max_manual_speed);
|
||||
sbufWriteU16(dst, navConfig()->general.max_manual_climb_rate);
|
||||
sbufWriteU8(dst, navConfig()->mc.max_bank_angle);
|
||||
sbufWriteU8(dst, navConfig()->general.flags.use_thr_mid_for_althold);
|
||||
sbufWriteU8(dst, navConfig()->mc.althold_throttle_type);
|
||||
sbufWriteU16(dst, currentBatteryProfile->nav.mc.hover_throttle);
|
||||
break;
|
||||
|
||||
|
@ -2255,7 +2255,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
|||
navConfigMutable()->general.max_manual_speed = sbufReadU16(src);
|
||||
navConfigMutable()->general.max_manual_climb_rate = sbufReadU16(src);
|
||||
navConfigMutable()->mc.max_bank_angle = sbufReadU8(src);
|
||||
navConfigMutable()->general.flags.use_thr_mid_for_althold = sbufReadU8(src);
|
||||
navConfigMutable()->mc.althold_throttle_type = sbufReadU8(src);
|
||||
currentBatteryProfileMutable->nav.mc.hover_throttle = sbufReadU16(src);
|
||||
} else
|
||||
return MSP_RESULT_ERROR;
|
||||
|
|
|
@ -190,6 +190,9 @@ tables:
|
|||
- name: nav_fw_wp_turn_smoothing
|
||||
values: ["OFF", "ON", "ON-CUT"]
|
||||
enum: wpFwTurnSmoothing_e
|
||||
- name: nav_mc_althold_throttle
|
||||
values: ["STICK", "MID_STICK", "HOVER"]
|
||||
enum: navMcAltHoldThrottle_e
|
||||
|
||||
constants:
|
||||
RPYL_PID_MIN: 0
|
||||
|
@ -2310,11 +2313,11 @@ groups:
|
|||
default_value: OFF
|
||||
field: general.flags.landing_bump_detection
|
||||
type: bool
|
||||
- name: nav_use_midthr_for_althold
|
||||
description: "If set to OFF, the FC remembers your throttle stick position when enabling ALTHOLD and treats it as a neutral midpoint for holding altitude"
|
||||
default_value: OFF
|
||||
field: general.flags.use_thr_mid_for_althold
|
||||
type: bool
|
||||
- name: nav_mc_althold_throttle
|
||||
description: "If set to STICK the FC remembers the throttle stick position when enabling ALTHOLD and treats it as the neutral midpoint for holding altitude. If set to MID_STICK or HOVER the neutral midpoint is set to the mid stick position or the hover throttle position respectively."
|
||||
default_value: "STICK"
|
||||
field: mc.althold_throttle_type
|
||||
table: nav_mc_althold_throttle
|
||||
- name: nav_extra_arming_safety
|
||||
description: "If set to ON drone won't arm if no GPS fix and any navigation mode like RTH or POSHOLD is configured. ALLOW_BYPASS allows the user to momentarily disable this check by holding yaw high (left stick held at the bottom right in mode 2) when switch arming is used"
|
||||
default_value: "ALLOW_BYPASS"
|
||||
|
|
|
@ -2022,6 +2022,10 @@ static bool osdDrawSingleElement(uint8_t item)
|
|||
|
||||
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
||||
}
|
||||
if (STATE(MULTIROTOR) && posControl.flags.isAdjustingAltitude) {
|
||||
TEXT_ATTRIBUTES_ADD_INVERTED(elemAttr);
|
||||
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,7 +107,6 @@ PG_RESET_TEMPLATE(navConfig_t, navConfig,
|
|||
.general = {
|
||||
|
||||
.flags = {
|
||||
.use_thr_mid_for_althold = SETTING_NAV_USE_MIDTHR_FOR_ALTHOLD_DEFAULT,
|
||||
.extra_arming_safety = SETTING_NAV_EXTRA_ARMING_SAFETY_DEFAULT,
|
||||
.user_control_mode = SETTING_NAV_USER_CONTROL_MODE_DEFAULT,
|
||||
.rth_alt_control_mode = SETTING_NAV_RTH_ALT_MODE_DEFAULT,
|
||||
|
@ -179,6 +178,7 @@ PG_RESET_TEMPLATE(navConfig_t, navConfig,
|
|||
.posDecelerationTime = SETTING_NAV_MC_POS_DECELERATION_TIME_DEFAULT, // posDecelerationTime * 100
|
||||
.posResponseExpo = SETTING_NAV_MC_POS_EXPO_DEFAULT, // posResponseExpo * 100
|
||||
.slowDownForTurning = SETTING_NAV_MC_WP_SLOWDOWN_DEFAULT,
|
||||
.althold_throttle_type = SETTING_NAV_MC_ALTHOLD_THROTTLE_DEFAULT, // STICK
|
||||
},
|
||||
|
||||
// Fixed wing
|
||||
|
|
|
@ -175,6 +175,12 @@ typedef enum {
|
|||
WP_TURN_SMOOTHING_CUT,
|
||||
} wpFwTurnSmoothing_e;
|
||||
|
||||
typedef enum {
|
||||
MC_ALT_HOLD_STICK,
|
||||
MC_ALT_HOLD_MID,
|
||||
MC_ALT_HOLD_HOVER,
|
||||
} navMcAltHoldThrottle_e;
|
||||
|
||||
typedef struct positionEstimationConfig_s {
|
||||
uint8_t automatic_mag_declination;
|
||||
uint8_t reset_altitude_type; // from nav_reset_type_e
|
||||
|
@ -217,7 +223,6 @@ typedef struct navConfig_s {
|
|||
|
||||
struct {
|
||||
struct {
|
||||
uint8_t use_thr_mid_for_althold; // Don't remember throttle when althold was initiated, assume that throttle is at Thr Mid = zero climb rate
|
||||
uint8_t extra_arming_safety; // from navExtraArmingSafety_e
|
||||
uint8_t user_control_mode; // NAV_GPS_ATTI or NAV_GPS_CRUISE
|
||||
uint8_t rth_alt_control_mode; // Controls the logic for choosing the RTH altitude
|
||||
|
@ -287,6 +292,7 @@ typedef struct navConfig_s {
|
|||
uint8_t posDecelerationTime; // Brake time parameter
|
||||
uint8_t posResponseExpo; // Position controller expo (taret vel expo for MC)
|
||||
bool slowDownForTurning; // Slow down during WP missions when changing heading on next waypoint
|
||||
uint8_t althold_throttle_type; // throttle zero datum type for alt hold
|
||||
} mc;
|
||||
|
||||
struct {
|
||||
|
|
|
@ -177,18 +177,15 @@ bool adjustMulticopterAltitudeFromRCInput(void)
|
|||
void setupMulticopterAltitudeController(void)
|
||||
{
|
||||
const bool throttleIsLow = throttleStickIsLow();
|
||||
const uint8_t throttleType = navConfig()->mc.althold_throttle_type;
|
||||
|
||||
if (navConfig()->general.flags.use_thr_mid_for_althold) {
|
||||
altHoldThrottleRCZero = rcLookupThrottleMid();
|
||||
}
|
||||
else {
|
||||
// If throttle is LOW - use Thr Mid anyway
|
||||
if (throttleIsLow) {
|
||||
altHoldThrottleRCZero = rcLookupThrottleMid();
|
||||
}
|
||||
else {
|
||||
if (throttleType == MC_ALT_HOLD_STICK && !throttleIsLow) {
|
||||
// Only use current throttle if not LOW - use Thr Mid otherwise
|
||||
altHoldThrottleRCZero = rcCommand[THROTTLE];
|
||||
}
|
||||
} else if (throttleType == MC_ALT_HOLD_HOVER) {
|
||||
altHoldThrottleRCZero = currentBatteryProfile->nav.mc.hover_throttle;
|
||||
} else {
|
||||
altHoldThrottleRCZero = rcLookupThrottleMid();
|
||||
}
|
||||
|
||||
// Make sure we are able to satisfy the deadband
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue