mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-26 09:45:33 +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
|
### 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
|
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
|
### 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.
|
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 NAV CLIMB RATE", SETTING_NAV_AUTO_CLIMB_RATE),
|
||||||
OSD_SETTING_ENTRY("MAX AH CLIMB RATE", SETTING_NAV_MANUAL_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("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("MC HOVER THR", SETTING_NAV_MC_HOVER_THR),
|
||||||
OSD_SETTING_ENTRY("LANDING DISARM", SETTING_NAV_DISARM_ON_LANDING),
|
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_speed);
|
||||||
sbufWriteU16(dst, navConfig()->general.max_manual_climb_rate);
|
sbufWriteU16(dst, navConfig()->general.max_manual_climb_rate);
|
||||||
sbufWriteU8(dst, navConfig()->mc.max_bank_angle);
|
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);
|
sbufWriteU16(dst, currentBatteryProfile->nav.mc.hover_throttle);
|
||||||
break;
|
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_speed = sbufReadU16(src);
|
||||||
navConfigMutable()->general.max_manual_climb_rate = sbufReadU16(src);
|
navConfigMutable()->general.max_manual_climb_rate = sbufReadU16(src);
|
||||||
navConfigMutable()->mc.max_bank_angle = sbufReadU8(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);
|
currentBatteryProfileMutable->nav.mc.hover_throttle = sbufReadU16(src);
|
||||||
} else
|
} else
|
||||||
return MSP_RESULT_ERROR;
|
return MSP_RESULT_ERROR;
|
||||||
|
|
|
@ -190,6 +190,9 @@ tables:
|
||||||
- name: nav_fw_wp_turn_smoothing
|
- name: nav_fw_wp_turn_smoothing
|
||||||
values: ["OFF", "ON", "ON-CUT"]
|
values: ["OFF", "ON", "ON-CUT"]
|
||||||
enum: wpFwTurnSmoothing_e
|
enum: wpFwTurnSmoothing_e
|
||||||
|
- name: nav_mc_althold_throttle
|
||||||
|
values: ["STICK", "MID_STICK", "HOVER"]
|
||||||
|
enum: navMcAltHoldThrottle_e
|
||||||
|
|
||||||
constants:
|
constants:
|
||||||
RPYL_PID_MIN: 0
|
RPYL_PID_MIN: 0
|
||||||
|
@ -2310,11 +2313,11 @@ groups:
|
||||||
default_value: OFF
|
default_value: OFF
|
||||||
field: general.flags.landing_bump_detection
|
field: general.flags.landing_bump_detection
|
||||||
type: bool
|
type: bool
|
||||||
- name: nav_use_midthr_for_althold
|
- name: nav_mc_althold_throttle
|
||||||
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"
|
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: OFF
|
default_value: "STICK"
|
||||||
field: general.flags.use_thr_mid_for_althold
|
field: mc.althold_throttle_type
|
||||||
type: bool
|
table: nav_mc_althold_throttle
|
||||||
- name: nav_extra_arming_safety
|
- 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"
|
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"
|
default_value: "ALLOW_BYPASS"
|
||||||
|
|
|
@ -2022,6 +2022,10 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
|
|
||||||
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
||||||
}
|
}
|
||||||
|
if (STATE(MULTIROTOR) && posControl.flags.isAdjustingAltitude) {
|
||||||
|
TEXT_ATTRIBUTES_ADD_INVERTED(elemAttr);
|
||||||
|
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,6 @@ PG_RESET_TEMPLATE(navConfig_t, navConfig,
|
||||||
.general = {
|
.general = {
|
||||||
|
|
||||||
.flags = {
|
.flags = {
|
||||||
.use_thr_mid_for_althold = SETTING_NAV_USE_MIDTHR_FOR_ALTHOLD_DEFAULT,
|
|
||||||
.extra_arming_safety = SETTING_NAV_EXTRA_ARMING_SAFETY_DEFAULT,
|
.extra_arming_safety = SETTING_NAV_EXTRA_ARMING_SAFETY_DEFAULT,
|
||||||
.user_control_mode = SETTING_NAV_USER_CONTROL_MODE_DEFAULT,
|
.user_control_mode = SETTING_NAV_USER_CONTROL_MODE_DEFAULT,
|
||||||
.rth_alt_control_mode = SETTING_NAV_RTH_ALT_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
|
.posDecelerationTime = SETTING_NAV_MC_POS_DECELERATION_TIME_DEFAULT, // posDecelerationTime * 100
|
||||||
.posResponseExpo = SETTING_NAV_MC_POS_EXPO_DEFAULT, // posResponseExpo * 100
|
.posResponseExpo = SETTING_NAV_MC_POS_EXPO_DEFAULT, // posResponseExpo * 100
|
||||||
.slowDownForTurning = SETTING_NAV_MC_WP_SLOWDOWN_DEFAULT,
|
.slowDownForTurning = SETTING_NAV_MC_WP_SLOWDOWN_DEFAULT,
|
||||||
|
.althold_throttle_type = SETTING_NAV_MC_ALTHOLD_THROTTLE_DEFAULT, // STICK
|
||||||
},
|
},
|
||||||
|
|
||||||
// Fixed wing
|
// Fixed wing
|
||||||
|
|
|
@ -175,6 +175,12 @@ typedef enum {
|
||||||
WP_TURN_SMOOTHING_CUT,
|
WP_TURN_SMOOTHING_CUT,
|
||||||
} wpFwTurnSmoothing_e;
|
} wpFwTurnSmoothing_e;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
MC_ALT_HOLD_STICK,
|
||||||
|
MC_ALT_HOLD_MID,
|
||||||
|
MC_ALT_HOLD_HOVER,
|
||||||
|
} navMcAltHoldThrottle_e;
|
||||||
|
|
||||||
typedef struct positionEstimationConfig_s {
|
typedef struct positionEstimationConfig_s {
|
||||||
uint8_t automatic_mag_declination;
|
uint8_t automatic_mag_declination;
|
||||||
uint8_t reset_altitude_type; // from nav_reset_type_e
|
uint8_t reset_altitude_type; // from nav_reset_type_e
|
||||||
|
@ -217,7 +223,6 @@ typedef struct navConfig_s {
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
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 extra_arming_safety; // from navExtraArmingSafety_e
|
||||||
uint8_t user_control_mode; // NAV_GPS_ATTI or NAV_GPS_CRUISE
|
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
|
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 posDecelerationTime; // Brake time parameter
|
||||||
uint8_t posResponseExpo; // Position controller expo (taret vel expo for MC)
|
uint8_t posResponseExpo; // Position controller expo (taret vel expo for MC)
|
||||||
bool slowDownForTurning; // Slow down during WP missions when changing heading on next waypoint
|
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;
|
} mc;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -177,18 +177,15 @@ bool adjustMulticopterAltitudeFromRCInput(void)
|
||||||
void setupMulticopterAltitudeController(void)
|
void setupMulticopterAltitudeController(void)
|
||||||
{
|
{
|
||||||
const bool throttleIsLow = throttleStickIsLow();
|
const bool throttleIsLow = throttleStickIsLow();
|
||||||
|
const uint8_t throttleType = navConfig()->mc.althold_throttle_type;
|
||||||
|
|
||||||
if (navConfig()->general.flags.use_thr_mid_for_althold) {
|
if (throttleType == MC_ALT_HOLD_STICK && !throttleIsLow) {
|
||||||
altHoldThrottleRCZero = rcLookupThrottleMid();
|
// Only use current throttle if not LOW - use Thr Mid otherwise
|
||||||
}
|
|
||||||
else {
|
|
||||||
// If throttle is LOW - use Thr Mid anyway
|
|
||||||
if (throttleIsLow) {
|
|
||||||
altHoldThrottleRCZero = rcLookupThrottleMid();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
altHoldThrottleRCZero = rcCommand[THROTTLE];
|
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
|
// Make sure we are able to satisfy the deadband
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue