1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-21 11:54:15 +01:00

Merge remote-tracking branch 'origin/corvuscorax/OP-1599_positionvario-reworks' into next

This commit is contained in:
Fredrik Larsson 2014-12-14 23:45:57 +11:00
commit 4f7fc1bac7
13 changed files with 111 additions and 102 deletions

View File

@ -70,16 +70,18 @@ void plan_run_land();
/** /**
* @brief setup pathfollower for positionvario * @brief setup pathfollower for positionvario
*/ */
void plan_setup_PositionVarioFPV(); void plan_setup_CourseLock();
void plan_setup_PositionVarioLOS(); void plan_setup_PositionRoam();
void plan_setup_PositionVarioNSEW(); void plan_setup_HomeLeash();
void plan_setup_AbsolutePosition();
/** /**
* @brief run for positionvario * @brief run for positionvario
*/ */
void plan_run_PositionVarioFPV(); void plan_run_CourseLock();
void plan_run_PositionVarioLOS(); void plan_run_PositionRoam();
void plan_run_PositionVarioNSEW(); void plan_run_HomeLeash();
void plan_run_AbsolutePosition();
/** /**
* @brief setup pathplanner/pathfollower for AutoCruise * @brief setup pathplanner/pathfollower for AutoCruise

View File

@ -165,26 +165,37 @@ void plan_run_land()
/** /**
* @brief positionvario functionality * @brief positionvario functionality
*/ */
static bool vario_hold = true; static bool vario_hold = true;
static float hold_position[3]; static float hold_position[3];
static float vario_control_lowpass[3];
static float vario_course = 0.0f;
static void plan_setup_PositionVario() static void plan_setup_PositionVario()
{ {
vario_hold = true; vario_hold = true;
vario_control_lowpass[0] = 0.0f;
vario_control_lowpass[1] = 0.0f;
vario_control_lowpass[2] = 0.0f;
AttitudeStateYawGet(&vario_course);
plan_setup_positionHold(); plan_setup_positionHold();
} }
void plan_setup_PositionVarioFPV() void plan_setup_CourseLock()
{ {
plan_setup_PositionVario(); plan_setup_PositionVario();
} }
void plan_setup_PositionVarioLOS() void plan_setup_PositionRoam()
{ {
plan_setup_PositionVario(); plan_setup_PositionVario();
} }
void plan_setup_PositionVarioNSEW() void plan_setup_HomeLeash()
{
plan_setup_PositionVario();
}
void plan_setup_AbsolutePosition()
{ {
plan_setup_PositionVario(); plan_setup_PositionVario();
} }
@ -218,7 +229,7 @@ static bool normalizeDeadband(float controlVector[4])
return moving; return moving;
} }
typedef enum { FPV, LOS, NSEW } vario_type; typedef enum { COURSE, FPV, LOS, NSEW } vario_type;
static void getVector(float controlVector[4], vario_type type) static void getVector(float controlVector[4], vario_type type)
{ {
@ -249,6 +260,9 @@ static void getVector(float controlVector[4], vario_type type)
// rotate north and east - rotation angle based on type // rotate north and east - rotation angle based on type
float angle; float angle;
switch (type) { switch (type) {
case COURSE:
angle = vario_course;
break;
case NSEW: case NSEW:
angle = 0.0f; angle = 0.0f;
// NSEW no rotation takes place // NSEW no rotation takes place
@ -283,6 +297,7 @@ static void getVector(float controlVector[4], vario_type type)
static void plan_run_PositionVario(vario_type type) static void plan_run_PositionVario(vario_type type)
{ {
float controlVector[4]; float controlVector[4];
float alpha;
PathDesiredData pathDesired; PathDesiredData pathDesired;
PathDesiredGet(&pathDesired); PathDesiredGet(&pathDesired);
@ -295,6 +310,15 @@ static void plan_run_PositionVario(vario_type type)
ManualControlCommandYawGet(&controlVector[2]); ManualControlCommandYawGet(&controlVector[2]);
ManualControlCommandThrustGet(&controlVector[3]); ManualControlCommandThrustGet(&controlVector[3]);
FlightModeSettingsVarioControlLowPassAlphaGet(&alpha);
vario_control_lowpass[0] = alpha * vario_control_lowpass[0] + (1.0f - alpha) * controlVector[0];
vario_control_lowpass[1] = alpha * vario_control_lowpass[1] + (1.0f - alpha) * controlVector[1];
vario_control_lowpass[2] = alpha * vario_control_lowpass[2] + (1.0f - alpha) * controlVector[2];
controlVector[0] = vario_control_lowpass[0];
controlVector[1] = vario_control_lowpass[1];
controlVector[2] = vario_control_lowpass[2];
// check if movement is desired // check if movement is desired
if (normalizeDeadband(controlVector) == false) { if (normalizeDeadband(controlVector) == false) {
// no movement desired, re-enter positionHold at current start-position // no movement desired, re-enter positionHold at current start-position
@ -349,17 +373,23 @@ static void plan_run_PositionVario(vario_type type)
PathDesiredSet(&pathDesired); PathDesiredSet(&pathDesired);
} }
} }
void plan_run_PositionVarioFPV()
void plan_run_CourseLock()
{
plan_run_PositionVario(COURSE);
}
void plan_run_PositionRoam()
{ {
plan_run_PositionVario(FPV); plan_run_PositionVario(FPV);
} }
void plan_run_PositionVarioLOS() void plan_run_HomeLeash()
{ {
plan_run_PositionVario(LOS); plan_run_PositionVario(LOS);
} }
void plan_run_PositionVarioNSEW() void plan_run_AbsolutePosition()
{ {
plan_run_PositionVario(NSEW); plan_run_PositionVario(NSEW);
} }

View File

@ -45,12 +45,6 @@
#define ADDSEVERITY(check) severity = (severity != SYSTEMALARMS_ALARM_OK ? severity : ((check) ? SYSTEMALARMS_ALARM_OK : SYSTEMALARMS_ALARM_CRITICAL)) #define ADDSEVERITY(check) severity = (severity != SYSTEMALARMS_ALARM_OK ? severity : ((check) ? SYSTEMALARMS_ALARM_OK : SYSTEMALARMS_ALARM_CRITICAL))
/****************************
* Current checks:
* 1. If a flight mode switch allows autotune and autotune module not running
* 2. If airframe is a multirotor and either manual is available or a stabilization mode uses "none"
****************************/
// ! Check a stabilization mode switch position for safety // ! Check a stabilization mode switch position for safety
static bool check_stabilization_settings(int index, bool multirotor, bool coptercontrol); static bool check_stabilization_settings(int index, bool multirotor, bool coptercontrol);
@ -127,9 +121,6 @@ int32_t configuration_check()
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_STABILIZED6: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_STABILIZED6:
ADDSEVERITY(check_stabilization_settings(6, multirotor, coptercontrol)); ADDSEVERITY(check_stabilization_settings(6, multirotor, coptercontrol));
break; break;
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_AUTOTUNE:
ADDSEVERITY(PIOS_TASK_MONITOR_IsRunning(TASKINFO_RUNNING_AUTOTUNE));
break;
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_PATHPLANNER: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_PATHPLANNER:
{ {
// Revo supports PathPlanner and that must be OK or we are not sane // Revo supports PathPlanner and that must be OK or we are not sane
@ -141,9 +132,10 @@ int32_t configuration_check()
} }
// intentionally no break as this also needs pathfollower // intentionally no break as this also needs pathfollower
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POSITIONHOLD: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POSITIONHOLD:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POSITIONVARIOFPV: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_COURSELOCK:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POSITIONVARIOLOS: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POSITIONROAM:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POSITIONVARIONSEW: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_HOMELEASH:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_ABSOLUTEPOSITION:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_LAND: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_LAND:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POI: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_POI:
case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_RETURNTOBASE: case FLIGHTMODESETTINGS_FLIGHTMODEPOSITION_RETURNTOBASE:

View File

@ -116,7 +116,6 @@ void takeOffLocationHandlerInit();
ENTRY(STABILIZED4) \ ENTRY(STABILIZED4) \
ENTRY(STABILIZED5) \ ENTRY(STABILIZED5) \
ENTRY(STABILIZED6) \ ENTRY(STABILIZED6) \
ENTRY(AUTOTUNE) \
ENTRY(POSITIONHOLD) \ ENTRY(POSITIONHOLD) \
ENTRY(RETURNTOBASE) \ ENTRY(RETURNTOBASE) \
ENTRY(LAND) \ ENTRY(LAND) \

View File

@ -75,15 +75,6 @@ static const controlHandler handler_STABILIZED = {
}; };
static const controlHandler handler_AUTOTUNE = {
.controlChain = {
.Stabilization = false,
.PathFollower = false,
.PathPlanner = false,
},
.handler = NULL,
};
#ifndef PIOS_EXCLUDE_ADVANCED_FEATURES #ifndef PIOS_EXCLUDE_ADVANCED_FEATURES
static const controlHandler handler_PATHFOLLOWER = { static const controlHandler handler_PATHFOLLOWER = {
.controlChain = { .controlChain = {
@ -205,9 +196,10 @@ static void manualControlTask(void)
break; break;
#ifndef PIOS_EXCLUDE_ADVANCED_FEATURES #ifndef PIOS_EXCLUDE_ADVANCED_FEATURES
case FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD: case FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD:
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOFPV: case FLIGHTSTATUS_FLIGHTMODE_COURSELOCK:
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOLOS: case FLIGHTSTATUS_FLIGHTMODE_POSITIONROAM:
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIONSEW: case FLIGHTSTATUS_FLIGHTMODE_HOMELEASH:
case FLIGHTSTATUS_FLIGHTMODE_ABSOLUTEPOSITION:
case FLIGHTSTATUS_FLIGHTMODE_RETURNTOBASE: case FLIGHTSTATUS_FLIGHTMODE_RETURNTOBASE:
case FLIGHTSTATUS_FLIGHTMODE_LAND: case FLIGHTSTATUS_FLIGHTMODE_LAND:
case FLIGHTSTATUS_FLIGHTMODE_POI: case FLIGHTSTATUS_FLIGHTMODE_POI:
@ -218,9 +210,6 @@ static void manualControlTask(void)
handler = &handler_PATHPLANNER; handler = &handler_PATHPLANNER;
break; break;
#endif #endif
case FLIGHTSTATUS_FLIGHTMODE_AUTOTUNE:
handler = &handler_AUTOTUNE;
break;
// There is no default, so if a flightmode is forgotten the compiler can throw a warning! // There is no default, so if a flightmode is forgotten the compiler can throw a warning!
} }

View File

@ -68,14 +68,17 @@ void pathFollowerHandler(bool newinit)
case FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD: case FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD:
plan_setup_positionHold(); plan_setup_positionHold();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOFPV: case FLIGHTSTATUS_FLIGHTMODE_COURSELOCK:
plan_setup_PositionVarioFPV(); plan_setup_CourseLock();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOLOS: case FLIGHTSTATUS_FLIGHTMODE_POSITIONROAM:
plan_setup_PositionVarioLOS(); plan_setup_PositionRoam();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIONSEW: case FLIGHTSTATUS_FLIGHTMODE_HOMELEASH:
plan_setup_PositionVarioNSEW(); plan_setup_HomeLeash();
break;
case FLIGHTSTATUS_FLIGHTMODE_ABSOLUTEPOSITION:
plan_setup_AbsolutePosition();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_LAND: case FLIGHTSTATUS_FLIGHTMODE_LAND:
@ -92,14 +95,17 @@ void pathFollowerHandler(bool newinit)
} }
switch (flightMode) { switch (flightMode) {
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOFPV: case FLIGHTSTATUS_FLIGHTMODE_COURSELOCK:
plan_run_PositionVarioFPV(); plan_run_CourseLock();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOLOS: case FLIGHTSTATUS_FLIGHTMODE_POSITIONROAM:
plan_run_PositionVarioLOS(); plan_run_PositionRoam();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIONSEW: case FLIGHTSTATUS_FLIGHTMODE_HOMELEASH:
plan_run_PositionVarioNSEW(); plan_run_HomeLeash();
break;
case FLIGHTSTATUS_FLIGHTMODE_ABSOLUTEPOSITION:
plan_run_AbsolutePosition();
break; break;
case FLIGHTSTATUS_FLIGHTMODE_LAND: case FLIGHTSTATUS_FLIGHTMODE_LAND:
plan_run_land(); plan_run_land();

View File

@ -40,7 +40,6 @@ typedef enum {
NOTIFY_SEQUENCE_ARMED_FM_STABILIZED4 = 4, NOTIFY_SEQUENCE_ARMED_FM_STABILIZED4 = 4,
NOTIFY_SEQUENCE_ARMED_FM_STABILIZED5 = 5, NOTIFY_SEQUENCE_ARMED_FM_STABILIZED5 = 5,
NOTIFY_SEQUENCE_ARMED_FM_STABILIZED6 = 6, NOTIFY_SEQUENCE_ARMED_FM_STABILIZED6 = 6,
NOTIFY_SEQUENCE_ARMED_FM_AUTOTUNE = 7,
NOTIFY_SEQUENCE_ARMED_FM_GPS = 8, NOTIFY_SEQUENCE_ARMED_FM_GPS = 8,
NOTIFY_SEQUENCE_ARMED_FM_RTH = 9, NOTIFY_SEQUENCE_ARMED_FM_RTH = 9,
NOTIFY_SEQUENCE_ARMED_FM_LAND = 10, NOTIFY_SEQUENCE_ARMED_FM_LAND = 10,
@ -116,9 +115,6 @@ const LedSequence_t notifications[] = {
{ .time_off = 100, .time_on = 100, .color = COLOR_PURPLE, .repeats = 1, }, { .time_off = 100, .time_on = 100, .color = COLOR_PURPLE, .repeats = 1, },
{ .time_off = 500, .time_on = 100, .color = COLOR_BLUE, .repeats = 1, }, { .time_off = 500, .time_on = 100, .color = COLOR_BLUE, .repeats = 1, },
}, }, }, },
[NOTIFY_SEQUENCE_ARMED_FM_AUTOTUNE] = { .repeats = -1, .steps = {
{ .time_off = 800, .time_on = 200, .color = COLOR_BLUE, .repeats = 1, },
}, },
[NOTIFY_SEQUENCE_ARMED_FM_GPS] = { .repeats = -1, .steps = { [NOTIFY_SEQUENCE_ARMED_FM_GPS] = { .repeats = -1, .steps = {
{ .time_off = 800, .time_on = 200, .color = COLOR_GREEN, .repeats = 1, }, { .time_off = 800, .time_on = 200, .color = COLOR_GREEN, .repeats = 1, },
}, }, }, },
@ -165,22 +161,22 @@ const LedSequence_t notifications[] = {
// List of background sequences attached to each flight mode // List of background sequences attached to each flight mode
const LedSequence_t *flightModeMap[] = { const LedSequence_t *flightModeMap[] = {
[FLIGHTSTATUS_FLIGHTMODE_MANUAL] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_MANUAL], [FLIGHTSTATUS_FLIGHTMODE_MANUAL] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_MANUAL],
[FLIGHTSTATUS_FLIGHTMODE_STABILIZED1] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED1], [FLIGHTSTATUS_FLIGHTMODE_STABILIZED1] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED1],
[FLIGHTSTATUS_FLIGHTMODE_STABILIZED2] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED2], [FLIGHTSTATUS_FLIGHTMODE_STABILIZED2] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED2],
[FLIGHTSTATUS_FLIGHTMODE_STABILIZED3] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED3], [FLIGHTSTATUS_FLIGHTMODE_STABILIZED3] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED3],
[FLIGHTSTATUS_FLIGHTMODE_STABILIZED4] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED4], [FLIGHTSTATUS_FLIGHTMODE_STABILIZED4] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED4],
[FLIGHTSTATUS_FLIGHTMODE_STABILIZED5] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED5], [FLIGHTSTATUS_FLIGHTMODE_STABILIZED5] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED5],
[FLIGHTSTATUS_FLIGHTMODE_STABILIZED6] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED6], [FLIGHTSTATUS_FLIGHTMODE_STABILIZED6] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_STABILIZED6],
[FLIGHTSTATUS_FLIGHTMODE_PATHPLANNER] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_AUTO], [FLIGHTSTATUS_FLIGHTMODE_PATHPLANNER] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_AUTO],
[FLIGHTSTATUS_FLIGHTMODE_AUTOTUNE] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_AUTOTUNE], [FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
[FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS], [FLIGHTSTATUS_FLIGHTMODE_COURSELOCK] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
[FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOFPV] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS], [FLIGHTSTATUS_FLIGHTMODE_POSITIONROAM] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
[FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIOLOS] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS], [FLIGHTSTATUS_FLIGHTMODE_HOMELEASH] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
[FLIGHTSTATUS_FLIGHTMODE_POSITIONVARIONSEW] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS], [FLIGHTSTATUS_FLIGHTMODE_ABSOLUTEPOSITION] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
[FLIGHTSTATUS_FLIGHTMODE_RETURNTOBASE] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_RTH], [FLIGHTSTATUS_FLIGHTMODE_RETURNTOBASE] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_RTH],
[FLIGHTSTATUS_FLIGHTMODE_LAND] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_LAND], [FLIGHTSTATUS_FLIGHTMODE_LAND] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_LAND],
[FLIGHTSTATUS_FLIGHTMODE_POI] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS], [FLIGHTSTATUS_FLIGHTMODE_POI] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
[FLIGHTSTATUS_FLIGHTMODE_AUTOCRUISE] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS], [FLIGHTSTATUS_FLIGHTMODE_AUTOCRUISE] = &notifications[NOTIFY_SEQUENCE_ARMED_FM_GPS],
}; };
// List of alarms to show with attached sequences for each status // List of alarms to show with attached sequences for each status

View File

@ -102,7 +102,6 @@ int32_t StabilizationInitialize()
StabilizationSettingsBank3Initialize(); StabilizationSettingsBank3Initialize();
RateDesiredInitialize(); RateDesiredInitialize();
ManualControlCommandInitialize(); // only used for PID bank selection based on flight mode switch ManualControlCommandInitialize(); // only used for PID bank selection based on flight mode switch
// Code required for relay tuning
sin_lookup_initalize(); sin_lookup_initalize();
stabilizationOuterloopInit(); stabilizationOuterloopInit();

View File

@ -78,32 +78,32 @@
units="" units=""
type="enum" type="enum"
elements="6" elements="6"
options="Manual,Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6,Autotune,PositionHold,PositionVarioFPV,PositionVarioLOS,PositionVarioNSEW,ReturnToBase,Land,PathPlanner,POI,AutoCruise" options="Manual,Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6,PositionHold,CourseLock,PositionRoam,HomeLeash,AbsolutePosition,ReturnToBase,Land,PathPlanner,POI,AutoCruise"
defaultvalue="Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6" defaultvalue="Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6"
limits="\ limits="\
%0401NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0401NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0402NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0402NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0903NE:POI:PathPlanner:Autotune:AutoCruise:Land;\ %0903NE:POI:PathPlanner:AutoCruise:Land;\
\ \
%0401NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0401NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0402NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0402NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0903NE:POI:PathPlanner:Autotune:AutoCruise:Land;\ %0903NE:POI:PathPlanner:AutoCruise:Land;\
\ \
%0401NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0401NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0402NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0402NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0903NE:POI:PathPlanner:Autotune:AutoCruise:Land;\ %0903NE:POI:PathPlanner:AutoCruise:Land;\
\ \
%0401NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0401NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0402NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0402NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0903NE:POI:PathPlanner:Autotune:AutoCruise:Land;\ %0903NE:POI:PathPlanner:AutoCruise:Land;\
\ \
%0401NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0401NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0402NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0402NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0903NE:POI:PathPlanner:Autotune:AutoCruise:Land;\ %0903NE:POI:PathPlanner:AutoCruise:Land;\
\ \
%0401NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0401NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0402NE:Autotune:PositionHold:PositionVarioFPV:PositionVarioLOS:PositionVarioNSEW:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\ %0402NE:PositionHold:CourseLock:PositionRoam:HomeLeash:AbsolutePosition:ReturnToBase:Land:PathPlanner:POI:AutoCruise,\
%0903NE:POI:PathPlanner:Autotune:AutoCruise:Land;"/> %0903NE:POI:PathPlanner:AutoCruise:Land;"/>
<field name="ArmedTimeout" units="ms" type="uint16" elements="1" defaultvalue="30000"/> <field name="ArmedTimeout" units="ms" type="uint16" elements="1" defaultvalue="30000"/>
<field name="ArmingSequenceTime" units="ms" type="uint16" elements="1" defaultvalue="1000"/> <field name="ArmingSequenceTime" units="ms" type="uint16" elements="1" defaultvalue="1000"/>
@ -111,9 +111,8 @@
<field name="DisableSanityChecks" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="FALSE"/> <field name="DisableSanityChecks" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="FALSE"/>
<field name="ReturnToBaseAltitudeOffset" units="m" type="float" elements="1" defaultvalue="10"/> <field name="ReturnToBaseAltitudeOffset" units="m" type="float" elements="1" defaultvalue="10"/>
<field name="LandingVelocity" units="m" type="float" elements="1" defaultvalue="0.4"/> <field name="LandingVelocity" units="m" type="float" elements="1" defaultvalue="0.4"/>
<field name="PositionHoldOffset" units="m" type="float" elementnames="Horizontal,Vertical" defaultvalue="10,2"/> <field name="PositionHoldOffset" units="m" type="float" elementnames="Horizontal,Vertical" defaultvalue="30,15" description="stick sensitivity for position roam modes"/>
<!-- optimized for current vtolpathfollower, <field name="VarioControlLowPassAlpha" units="" type="float" elements="1" defaultvalue="0.98" description="stick low pass filter for position roam modes"/>
for fixed wing pathfollower set to Horizontal=500,Vertical=5 -->
<access gcs="readwrite" flight="readwrite"/> <access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/> <telemetrygcs acked="true" updatemode="onchange" period="0"/>
<telemetryflight acked="true" updatemode="onchange" period="0"/> <telemetryflight acked="true" updatemode="onchange" period="0"/>

View File

@ -4,7 +4,7 @@
<field name="Armed" units="" type="enum" elements="1" options="Disarmed,Arming,Armed" defaultvalue="Disarmed"/> <field name="Armed" units="" type="enum" elements="1" options="Disarmed,Arming,Armed" defaultvalue="Disarmed"/>
<!-- Note these enumerated values should be the same as ManualControlSettings --> <!-- Note these enumerated values should be the same as ManualControlSettings -->
<field name="FlightMode" units="" type="enum" elements="1" options="Manual,Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6,Autotune,PositionHold,PositionVarioFPV,PositionVarioLOS,PositionVarioNSEW,ReturnToBase,Land,PathPlanner,POI,AutoCruise"/> <field name="FlightMode" units="" type="enum" elements="1" options="Manual,Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6,PositionHold,CourseLock,PositionRoam,HomeLeash,AbsolutePosition,ReturnToBase,Land,PathPlanner,POI,AutoCruise"/>
<field name="ControlChain" units="bool" type="enum" options="false,true"> <field name="ControlChain" units="bool" type="enum" options="false,true">
<elementnames> <elementnames>

View File

@ -22,7 +22,7 @@
<field name="USB_HIDPort" units="function" type="enum" elements="1" options="USBTelemetry,RCTransmitter,Disabled" defaultvalue="USBTelemetry"/> <field name="USB_HIDPort" units="function" type="enum" elements="1" options="USBTelemetry,RCTransmitter,Disabled" defaultvalue="USBTelemetry"/>
<field name="USB_VCPPort" units="function" type="enum" elements="1" options="USBTelemetry,ComBridge,DebugConsole,Disabled" defaultvalue="Disabled"/> <field name="USB_VCPPort" units="function" type="enum" elements="1" options="USBTelemetry,ComBridge,DebugConsole,Disabled" defaultvalue="Disabled"/>
<field name="OptionalModules" units="" type="enum" elementnames="CameraStab,GPS,Fault,Altitude,Airspeed,TxPID,Autotune,Battery,Overo,MagBaro,OsdHk" options="Disabled,Enabled" defaultvalue="Disabled"/> <field name="OptionalModules" units="" type="enum" elementnames="CameraStab,GPS,Fault,Altitude,Airspeed,TxPID,Battery,Overo,MagBaro,OsdHk" options="Disabled,Enabled" defaultvalue="Disabled"/>
<field name="ADCRouting" units="" type="enum" elementnames="adc0,adc1,adc2,adc3" options="Disabled,BatteryVoltage,BatteryCurrent,AnalogAirspeed,Generic" defaultvalue="Disabled"/> <field name="ADCRouting" units="" type="enum" elementnames="adc0,adc1,adc2,adc3" options="Disabled,BatteryVoltage,BatteryCurrent,AnalogAirspeed,Generic" defaultvalue="Disabled"/>
<field name="DSMxBind" units="" type="uint8" elements="1" defaultvalue="0"/> <field name="DSMxBind" units="" type="uint8" elements="1" defaultvalue="0"/>
<field name="WS2811LED_Out" units="" type="enum" elements="1" options="ServoOut1,ServoOut2,ServoOut3,ServoOut4,ServoOut5,ServoOut6,FlexiPin3,FlexiPin4,Disabled" defaultvalue="Disabled" /> <field name="WS2811LED_Out" units="" type="enum" elements="1" options="ServoOut1,ServoOut2,ServoOut3,ServoOut4,ServoOut5,ServoOut6,FlexiPin3,FlexiPin4,Disabled" defaultvalue="Disabled" />

View File

@ -30,7 +30,6 @@
<!-- optional --> <!-- optional -->
<elementname>GPS</elementname> <elementname>GPS</elementname>
<elementname>OSDGen</elementname> <elementname>OSDGen</elementname>
<elementname>Autotune</elementname>
</elementnames> </elementnames>
</field> </field>
<field name="Running" units="bool" type="enum"> <field name="Running" units="bool" type="enum">
@ -62,7 +61,6 @@
<!-- optional --> <!-- optional -->
<elementname>GPS</elementname> <elementname>GPS</elementname>
<elementname>OSDGen</elementname> <elementname>OSDGen</elementname>
<elementname>Autotune</elementname>
</elementnames> </elementnames>
<options> <options>
<option>False</option> <option>False</option>
@ -98,7 +96,6 @@
<!-- optional --> <!-- optional -->
<elementname>GPS</elementname> <elementname>GPS</elementname>
<elementname>OSDGen</elementname> <elementname>OSDGen</elementname>
<elementname>Autotune</elementname>
</elementnames> </elementnames>
</field> </field>
<access gcs="readonly" flight="readwrite"/> <access gcs="readonly" flight="readwrite"/>

View File

@ -2,8 +2,8 @@
<object name="VtolPathFollowerSettings" singleinstance="true" settings="true" category="Control"> <object name="VtolPathFollowerSettings" singleinstance="true" settings="true" category="Control">
<description>Settings for the @ref VtolPathFollowerModule</description> <description>Settings for the @ref VtolPathFollowerModule</description>
<field name="TreatCustomCraftAs" units="switch" type="enum" elements="1" options="FixedWing,VTOL" defaultvalue="FixedWing"/> <field name="TreatCustomCraftAs" units="switch" type="enum" elements="1" options="FixedWing,VTOL" defaultvalue="FixedWing"/>
<field name="HorizontalVelMax" units="m/s" type="float" elements="1" defaultvalue="5.0"/> <field name="HorizontalVelMax" units="m/s" type="float" elements="1" defaultvalue="10.0" description="maximum allowed horizontal movement velocity"/>
<field name="VerticalVelMax" units="m/s" type="float" elements="1" defaultvalue="1.0"/> <field name="VerticalVelMax" units="m/s" type="float" elements="1" defaultvalue="4.0" description="maximum allowed climb/dive velocity"/>
<field name="CourseFeedForward" units="s" type="float" elements="1" defaultvalue="1.0"/> <field name="CourseFeedForward" units="s" type="float" elements="1" defaultvalue="1.0"/>
<field name="HorizontalPosP" units="(m/s)/m" type="float" elements="1" defaultvalue="0.25"/> <field name="HorizontalPosP" units="(m/s)/m" type="float" elements="1" defaultvalue="0.25"/>
<field name="VerticalPosP" units="" type="float" elements="1" defaultvalue="0.4"/> <field name="VerticalPosP" units="" type="float" elements="1" defaultvalue="0.4"/>