1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-29 07:24:13 +01:00

Merge branch 'rel-nano-15.05' into steve/OP-1904_Display_current_TxPID_settings_on_OSD

This commit is contained in:
Steve Evans 2015-05-30 12:14:47 +01:00
commit d41808ecaf
38 changed files with 581 additions and 304 deletions

View File

@ -1,9 +1,25 @@
Release Notes - OpenPilot - Version RELEASE-15.05 RC4
Release Notes - OpenPilot - Version RELEASE-15.05 RC6
RC6 changes relative to RC5:
1. Altvario AltHold PID updates
2. Fix timer bank assignments
3. Reboot nano in wizard only when needed
4. Fix wizard limits for oneshot/pwmsync
5. Update PFD with latest flight modes
6. Add AccelTau, AccelKp and AccelKi to TxPID
7. Adding support for SRXL in vehicle wizard.
RC5 changes relative to RC4:
1. Landing flight mode now truely disarms to complete its sequence, triggered by a critical guidance alarm. Reset via change of flight mode.
2. VelocityRoam now has its own VelocityRoamHorizontalVelPID to allow independent tuning.
3. Sanity check for PWMSync & OneShot while using PWM receiver. Remove CC in hwsettings.xml
4. Wizard freeze issue on erase settings fixed.
RC4 changes relative to RC3:
1. GCS Input flight mode limit fixes hiding unsupported modes.
2. Throttle check on GPSAssist/Stabi whilst in hold removed. Now easy to fly out of hold without reducing throttle.
3. Trialling Rate instead of AxisLock on Yaw during Braking.
3. Trialing Rate instead of AxisLock on Yaw during Braking.
4. VelocityRoam now passing throttle position to AltVario. previously it was stuck in AltHold.
5. OP-1905 Fix OPLN in PPM mode blocking telemetry stream of no USB connected

View File

@ -823,7 +823,7 @@ void plan_run_AutoCruise()
#define ASSISTEDCONTROL_TIMETOSTOP_MINIMUM 0.2f // seconds
#define ASSISTEDCONTROL_TIMETOSTOP_MAXIMUM 9.0f // seconds
#define ASSISTEDCONTROL_DELAY_TO_BRAKE 1.0f // seconds
#define ASSISTEDCONTROL_TIMEOUT_MULTIPLIER 2.0f // actual deceleration rate can be 50% of desired...timeouts need to cater for this
#define ASSISTEDCONTROL_TIMEOUT_MULTIPLIER 4.0f // actual deceleration rate can be 50% of desired...timeouts need to cater for this
void plan_setup_assistedcontrol()
{
PositionStateData positionState;

View File

@ -117,6 +117,7 @@ void armHandler(bool newinit, FrameType_t frameType)
if (forcedDisArm()) {
// PathPlanner forces explicit disarming due to error condition (crash, impact, fire, ...)
armState = ARM_STATE_DISARMED;
setArmedIfChanged(FLIGHTSTATUS_ARMED_DISARMED);
return;
}
@ -346,18 +347,6 @@ static bool forcedDisArm(void)
return true;
}
#ifndef PIOS_EXCLUDE_ADVANCED_FEATURES
// check landing state if active
FlightStatusData flightStatus;
FlightStatusGet(&flightStatus);
if (flightStatus.FlightMode == FLIGHTSTATUS_FLIGHTMODE_LAND) {
StatusVtolLandData statusland;
StatusVtolLandGet(&statusland);
if (statusland.State == STATUSVTOLLAND_STATE_DISARMED) {
return true;
}
}
#endif
return false;
}

View File

@ -63,8 +63,7 @@ public:
private:
void UpdateVelocityDesired(void);
int8_t UpdateStabilizationDesired(bool yaw_attitude, float yaw_direction);
void setArmedIfChanged(FlightStatusArmedOptions val);
int8_t UpdateStabilizationDesired(void);
VtolAutoTakeoffFSM *fsm;
VtolPathFollowerSettingsData *vtolPathFollowerSettings;

View File

@ -73,7 +73,6 @@ public:
void BoundThrust(float &ulow, float &uhigh);
PathFollowerFSMState_T GetCurrentState(void);
void ConstrainStabiDesired(StabilizationDesiredData *stabDesired);
void Abort(void);
uint8_t PositionHoldState(void);
void setControlState(StatusVtolAutoTakeoffControlStateOptions controlState);
@ -138,9 +137,6 @@ protected:
void setup_disarmed(void);
void run_disarmed(uint8_t);
void setup_abort(void);
void run_abort(uint8_t);
void initFSM(void);
void setState(StatusVtolAutoTakeoffStateOptions newState, StatusVtolAutoTakeoffStateExitReasonOptions reason);
int32_t runState();
@ -150,7 +146,6 @@ protected:
void assessAltitude(void);
void setStateTimeout(int32_t count);
void fallback_to_hold(void);
static PathFollowerFSM_AutoTakeoffStateHandler_T sAutoTakeoffStateTable[AUTOTAKEOFF_STATE_SIZE];
};

View File

@ -66,7 +66,6 @@ public:
void Activate(void);
void Update(void);
PathFollowerFSMState_T GetCurrentState(void);
void Abort(void);
uint8_t PositionHoldState(void);
protected:
@ -103,7 +102,6 @@ protected:
// void updateVtolBrakeFSMStatus();
void setStateTimeout(int32_t count);
void fallback_to_hold(void);
static PathFollowerFSM_BrakeStateHandler_T sBrakeStateTable[BRAKE_STATE_SIZE];
};

View File

@ -47,7 +47,6 @@ typedef enum {
LAND_STATE_THRUSTDOWN, // Thrust down sequence
LAND_STATE_THRUSTOFF, // Thrust is now off
LAND_STATE_DISARMED, // Disarmed
LAND_STATE_ABORT, // Abort on error triggerig fallback to hold
LAND_STATE_SIZE
} PathFollowerFSM_LandState_T;
@ -75,7 +74,6 @@ public:
void ConstrainStabiDesired(StabilizationDesiredData *stabDesired);
float BoundVelocityDown(float);
void CheckPidScaler(pid_scaler *scaler);
void Abort(void);
protected:
@ -130,8 +128,6 @@ protected:
void run_thrustoff(uint8_t);
void setup_disarmed(void);
void run_disarmed(uint8_t);
void setup_abort(void);
void run_abort(uint8_t);
void initFSM(void);
void setState(StatusVtolLandStateOptions newState, StatusVtolLandStateExitReasonOptions reason);
int32_t runState();
@ -140,7 +136,6 @@ protected:
void assessAltitude(void);
void setStateTimeout(int32_t count);
void fallback_to_hold(void);
static PathFollowerFSM_LandStateHandler_T sLandStateTable[LAND_STATE_SIZE];
};

View File

@ -62,7 +62,6 @@ public:
private:
void UpdateVelocityDesired(void);
int8_t UpdateStabilizationDesired(bool yaw_attitude, float yaw_direction);
void fallback_to_hold(void);
VtolPathFollowerSettingsData *vtolPathFollowerSettings;
PIDControlNE controlNE;

View File

@ -242,6 +242,7 @@ static void pathFollowerSetActiveController(void)
if (activeController == 0) {
// Initialise
pathFollowerInitializeControllersForFrameType();
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_OK);
switch (frameType) {
case FRAME_TYPE_MULTIROTOR:
@ -273,6 +274,7 @@ static void pathFollowerSetActiveController(void)
break;
default:
activeController = 0;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_UNINITIALISED);
break;
}
break;
@ -289,6 +291,7 @@ static void pathFollowerSetActiveController(void)
break;
default:
activeController = 0;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_UNINITIALISED);
break;
}
break;
@ -305,12 +308,14 @@ static void pathFollowerSetActiveController(void)
break;
default:
activeController = 0;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_UNINITIALISED);
break;
}
break;
default:
activeController = 0;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_UNINITIALISED);
break;
}
}

View File

@ -30,6 +30,7 @@ extern "C" {
#include <math.h>
#include <pid.h>
#include <alarms.h>
#include <CoordinateConversions.h>
#include <sin_lookup.h>
#include <pathdesired.h>
@ -208,7 +209,7 @@ void VtolAutoTakeoffController::UpdateVelocityDesired()
VelocityDesiredSet(&velocityDesired);
}
int8_t VtolAutoTakeoffController::UpdateStabilizationDesired(bool yaw_attitude, float yaw_direction)
int8_t VtolAutoTakeoffController::UpdateStabilizationDesired()
{
uint8_t result = 1;
StabilizationDesiredData stabDesired;
@ -236,13 +237,8 @@ int8_t VtolAutoTakeoffController::UpdateStabilizationDesired(bool yaw_attitude,
ManualControlCommandData manualControl;
ManualControlCommandGet(&manualControl);
if (yaw_attitude) {
stabDesired.StabilizationMode.Yaw = STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE;
stabDesired.Yaw = yaw_direction;
} else {
stabDesired.StabilizationMode.Yaw = STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK;
stabDesired.Yaw = stabSettings.MaximumRate.Yaw * manualControl.Yaw;
}
// default thrust mode to cruise control
stabDesired.StabilizationMode.Thrust = STABILIZATIONDESIRED_STABILIZATIONMODE_CRUISECONTROL;
@ -259,29 +255,13 @@ void VtolAutoTakeoffController::UpdateAutoPilot()
UpdateVelocityDesired();
// yaw behaviour is configurable in vtolpathfollower, select yaw control algorithm
bool yaw_attitude = true;
float yaw = 0.0f;
fsm->GetYaw(yaw_attitude, yaw);
int8_t result = UpdateStabilizationDesired(yaw_attitude, yaw);
if (!result) {
fsm->Abort();
}
if (fsm->GetCurrentState() == PFFSM_STATE_DISARMED) {
setArmedIfChanged(FLIGHTSTATUS_ARMED_DISARMED);
int8_t result = UpdateStabilizationDesired();
if (result) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_OK);
} else {
pathStatus->Status = PATHSTATUS_STATUS_CRITICAL;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_WARNING);
}
PathStatusSet(pathStatus);
}
void VtolAutoTakeoffController::setArmedIfChanged(FlightStatusArmedOptions val)
{
if (flightStatus->Armed != val) {
flightStatus->Armed = val;
FlightStatusSet(flightStatus);
}
}

View File

@ -65,7 +65,7 @@ extern "C" {
#define TIMER_COUNT_PER_SECOND (1000 / vtolPathFollowerSettings->UpdatePeriod)
#define TIMEOUT_SLOWSTART (2 * TIMER_COUNT_PER_SECOND)
#define TIMEOUT_THRUSTUP (1 * TIMER_COUNT_PER_SECOND)
#define TIMEOUT_THRUSTDOWN (2 * TIMER_COUNT_PER_SECOND)
#define TIMEOUT_THRUSTDOWN (5 * TIMER_COUNT_PER_SECOND)
#define AUTOTAKEOFFING_SLOWDOWN_HEIGHT -5.0f
VtolAutoTakeoffFSM::PathFollowerFSM_AutoTakeoffStateHandler_T VtolAutoTakeoffFSM::sAutoTakeoffStateTable[AUTOTAKEOFF_STATE_SIZE] = {
@ -77,8 +77,7 @@ VtolAutoTakeoffFSM::PathFollowerFSM_AutoTakeoffStateHandler_T VtolAutoTakeoffFSM
[AUTOTAKEOFF_STATE_HOLD] = { .setup = &VtolAutoTakeoffFSM::setup_hold, .run = &VtolAutoTakeoffFSM::run_hold },
[AUTOTAKEOFF_STATE_THRUSTDOWN] = { .setup = &VtolAutoTakeoffFSM::setup_thrustdown, .run = &VtolAutoTakeoffFSM::run_thrustdown },
[AUTOTAKEOFF_STATE_THRUSTOFF] = { .setup = &VtolAutoTakeoffFSM::setup_thrustoff, .run = &VtolAutoTakeoffFSM::run_thrustoff },
[AUTOTAKEOFF_STATE_DISARMED] = { .setup = &VtolAutoTakeoffFSM::setup_disarmed, .run = &VtolAutoTakeoffFSM::run_disarmed },
[AUTOTAKEOFF_STATE_ABORT] = { .setup = &VtolAutoTakeoffFSM::setup_abort, .run = &VtolAutoTakeoffFSM::run_abort }
[AUTOTAKEOFF_STATE_DISARMED] = { .setup = &VtolAutoTakeoffFSM::setup_disarmed, .run = &VtolAutoTakeoffFSM::run_disarmed }
};
// pointer to a singleton instance
@ -161,21 +160,12 @@ void VtolAutoTakeoffFSM::Activate()
setState(STATUSVTOLAUTOTAKEOFF_STATE_INACTIVE, STATUSVTOLAUTOTAKEOFF_STATEEXITREASON_NONE);
}
void VtolAutoTakeoffFSM::Abort(void)
{
setState(STATUSVTOLAUTOTAKEOFF_STATE_ABORT, STATUSVTOLAUTOTAKEOFF_STATEEXITREASON_NONE);
}
PathFollowerFSMState_T VtolAutoTakeoffFSM::GetCurrentState(void)
{
switch (mAutoTakeoffData->currentState) {
case STATUSVTOLAUTOTAKEOFF_STATE_INACTIVE:
return PFFSM_STATE_INACTIVE;
break;
case STATUSVTOLAUTOTAKEOFF_STATE_ABORT:
return PFFSM_STATE_ABORT;
break;
case STATUSVTOLAUTOTAKEOFF_STATE_DISARMED:
return PFFSM_STATE_DISARMED;
@ -339,7 +329,7 @@ void VtolAutoTakeoffFSM::setControlState(StatusVtolAutoTakeoffControlStateOption
setState(STATUSVTOLAUTOTAKEOFF_STATE_HOLD, STATUSVTOLAUTOTAKEOFF_STATEEXITREASON_NONE);
break;
case STATUSVTOLAUTOTAKEOFF_CONTROLSTATE_ABORT:
setState(STATUSVTOLAUTOTAKEOFF_STATE_ABORT, STATUSVTOLAUTOTAKEOFF_STATEEXITREASON_NONE);
setState(STATUSVTOLAUTOTAKEOFF_STATE_HOLD, STATUSVTOLAUTOTAKEOFF_STATEEXITREASON_NONE);
break;
}
}
@ -540,51 +530,26 @@ void VtolAutoTakeoffFSM::run_thrustoff(__attribute__((unused)) uint8_t flTimeout
// STATE: DISARMED
void VtolAutoTakeoffFSM::setup_disarmed(void)
{
// nothing to do
mAutoTakeoffData->flConstrainThrust = false;
mAutoTakeoffData->flZeroStabiHorizontal = false;
mAutoTakeoffData->thrustLimit = -1.0f;
mAutoTakeoffData->flConstrainThrust = true;
mAutoTakeoffData->flZeroStabiHorizontal = true;
mAutoTakeoffData->observationCount = 0;
mAutoTakeoffData->boundThrustMin = -0.1f;
mAutoTakeoffData->boundThrustMax = 0.0f;
if (flightStatus->ControlChain.PathPlanner != FLIGHTSTATUS_CONTROLCHAIN_TRUE) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_CRITICAL);
}
}
void VtolAutoTakeoffFSM::run_disarmed(__attribute__((unused)) uint8_t flTimeout)
{
if (flightStatus->ControlChain.PathPlanner != FLIGHTSTATUS_CONTROLCHAIN_TRUE) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_CRITICAL);
}
#ifdef DEBUG_GROUNDIMPACT
if (mAutoTakeoffData->observationCount++ > 100) {
setState(AUTOTAKEOFF_STATE_WTG_FOR_GROUNDEFFECT, STATUSVTOLAUTOTAKEOFF_STATEEXITREASON_NONE);
}
#endif
}
void VtolAutoTakeoffFSM::fallback_to_hold(void)
{
PositionStateData positionState;
PositionStateGet(&positionState);
pathDesired->End.North = positionState.North;
pathDesired->End.East = positionState.East;
pathDesired->End.Down = positionState.Down;
pathDesired->Start.North = positionState.North;
pathDesired->Start.East = positionState.East;
pathDesired->Start.Down = positionState.Down;
pathDesired->StartingVelocity = 0.0f;
pathDesired->EndingVelocity = 0.0f;
pathDesired->Mode = PATHDESIRED_MODE_GOTOENDPOINT;
PathDesiredSet(pathDesired);
}
// abort repeatedly overwrites pathfollower's objective on a landing abort and
// continues to do so until a flight mode change.
void VtolAutoTakeoffFSM::setup_abort(void)
{
mAutoTakeoffData->boundThrustMin = vtolPathFollowerSettings->ThrustLimits.Min;
mAutoTakeoffData->boundThrustMax = vtolPathFollowerSettings->ThrustLimits.Max;
mAutoTakeoffData->flConstrainThrust = false;
mAutoTakeoffData->flZeroStabiHorizontal = false;
fallback_to_hold();
}
void VtolAutoTakeoffFSM::run_abort(__attribute__((unused)) uint8_t flTimeout)
{}

View File

@ -35,6 +35,7 @@ extern "C" {
#include <math.h>
#include <pid.h>
#include <alarms.h>
#include <CoordinateConversions.h>
#include <sin_lookup.h>
#include <pathdesired.h>
@ -138,10 +139,10 @@ void VtolBrakeController::SettingsUpdated(void)
controlNE.UpdatePositionalParameters(vtolPathFollowerSettings->HorizontalPosP);
controlNE.UpdateCommandParameters(-vtolPathFollowerSettings->BrakeMaxPitch, vtolPathFollowerSettings->BrakeMaxPitch, vtolPathFollowerSettings->BrakeVelocityFeedforward);
controlDown.UpdateParameters(vtolPathFollowerSettings->LandVerticalVelPID.Kp,
vtolPathFollowerSettings->LandVerticalVelPID.Ki,
vtolPathFollowerSettings->LandVerticalVelPID.Kd,
vtolPathFollowerSettings->LandVerticalVelPID.Beta,
controlDown.UpdateParameters(vtolPathFollowerSettings->VerticalVelPID.Kp,
vtolPathFollowerSettings->VerticalVelPID.Ki,
vtolPathFollowerSettings->VerticalVelPID.Kd,
vtolPathFollowerSettings->VerticalVelPID.Beta,
dT,
10.0f * vtolPathFollowerSettings->VerticalVelMax); // avoid constraining initial fast entry into brake
controlDown.UpdatePositionalParameters(vtolPathFollowerSettings->VerticalPosP);
@ -364,8 +365,11 @@ void VtolBrakeController::UpdateAutoPilot()
int8_t result = UpdateStabilizationDesired();
if (!result) {
fsm->Abort(); // enter PH
if (result) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_OK);
} else {
pathStatus->Status = PATHSTATUS_STATUS_CRITICAL;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_WARNING);
}
PathStatusSet(pathStatus);

View File

@ -62,7 +62,7 @@ extern "C" {
// Private constants
#define TIMER_COUNT_PER_SECOND (1000 / vtolPathFollowerSettings->UpdatePeriod)
#define BRAKE_FRACTIONALPROGRESS_STARTVELOCITYCHECK 0.95f
#define BRAKE_EXIT_VELOCITY_LIMIT 0.2f
#define BRAKE_EXIT_VELOCITY_LIMIT 0.15f
VtolBrakeFSM::PathFollowerFSM_BrakeStateHandler_T VtolBrakeFSM::sBrakeStateTable[BRAKE_STATE_SIZE] = {
[BRAKE_STATE_INACTIVE] = { .setup = 0, .run = 0 },
@ -130,11 +130,6 @@ void VtolBrakeFSM::Activate()
setState(BRAKE_STATE_BRAKE, FSMBRAKESTATUS_STATEEXITREASON_NONE);
}
void VtolBrakeFSM::Abort(void)
{
setState(BRAKE_STATE_HOLD, FSMBRAKESTATUS_STATEEXITREASON_NONE);
}
PathFollowerFSMState_T VtolBrakeFSM::GetCurrentState(void)
{
switch (mBrakeData->currentState) {

View File

@ -30,6 +30,7 @@ extern "C" {
#include <math.h>
#include <pid.h>
#include <alarms.h>
#include <CoordinateConversions.h>
#include <sin_lookup.h>
#include <pathdesired.h>
@ -266,9 +267,11 @@ void VtolLandController::UpdateAutoPilot()
fsm->GetYaw(yaw_attitude, yaw);
int8_t result = UpdateStabilizationDesired(yaw_attitude, yaw);
if (!result) {
fsm->Abort();
if (result) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_OK);
} else {
pathStatus->Status = PATHSTATUS_STATUS_CRITICAL;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_WARNING);
}
PathStatusSet(pathStatus);

View File

@ -31,6 +31,7 @@ extern "C" {
#include <math.h>
#include <pid.h>
#include <alarms.h>
#include <CoordinateConversions.h>
#include <sin_lookup.h>
#include <pathdesired.h>
@ -96,8 +97,7 @@ VtolLandFSM::PathFollowerFSM_LandStateHandler_T VtolLandFSM::sLandStateTable[LAN
[LAND_STATE_GROUNDEFFECT] = { .setup = &VtolLandFSM::setup_groundeffect, .run = &VtolLandFSM::run_groundeffect },
[LAND_STATE_THRUSTDOWN] = { .setup = &VtolLandFSM::setup_thrustdown, .run = &VtolLandFSM::run_thrustdown },
[LAND_STATE_THRUSTOFF] = { .setup = &VtolLandFSM::setup_thrustoff, .run = &VtolLandFSM::run_thrustoff },
[LAND_STATE_DISARMED] = { .setup = &VtolLandFSM::setup_disarmed, .run = &VtolLandFSM::run_disarmed },
[LAND_STATE_ABORT] = { .setup = &VtolLandFSM::setup_abort, .run = &VtolLandFSM::run_abort }
[LAND_STATE_DISARMED] = { .setup = &VtolLandFSM::setup_disarmed, .run = &VtolLandFSM::run_disarmed }
};
// pointer to a singleton instance
@ -176,25 +176,16 @@ void VtolLandFSM::Activate()
#endif
} else {
// move to error state and callback to position hold
setState(STATUSVTOLLAND_STATE_ABORT, STATUSVTOLLAND_STATEEXITREASON_NONE);
setState(STATUSVTOLLAND_STATE_DISARMED, STATUSVTOLLAND_STATEEXITREASON_NONE);
}
}
void VtolLandFSM::Abort(void)
{
setState(STATUSVTOLLAND_STATE_ABORT, STATUSVTOLLAND_STATEEXITREASON_NONE);
}
PathFollowerFSMState_T VtolLandFSM::GetCurrentState(void)
{
switch (mLandData->currentState) {
case STATUSVTOLLAND_STATE_INACTIVE:
return PFFSM_STATE_INACTIVE;
break;
case STATUSVTOLLAND_STATE_ABORT:
return PFFSM_STATE_ABORT;
break;
case STATUSVTOLLAND_STATE_DISARMED:
return PFFSM_STATE_DISARMED;
@ -431,7 +422,7 @@ void VtolLandFSM::run_wtg_for_descentrate(uint8_t flTimeout)
}
if (flTimeout) {
setState(STATUSVTOLLAND_STATE_ABORT, STATUSVTOLLAND_STATEEXITREASON_TIMEOUT);
setState(STATUSVTOLLAND_STATE_INITALTHOLD, STATUSVTOLLAND_STATEEXITREASON_TIMEOUT);
}
}
@ -638,6 +629,7 @@ void VtolLandFSM::run_thrustdown(__attribute__((unused)) uint8_t flTimeout)
void VtolLandFSM::setup_thrustoff(void)
{
mLandData->thrustLimit = -1.0f;
mLandData->flZeroStabiHorizontal = true;
mLandData->flConstrainThrust = true;
mLandData->boundThrustMin = -0.1f;
mLandData->boundThrustMax = 0.0f;
@ -653,49 +645,28 @@ void VtolLandFSM::setup_disarmed(void)
{
// nothing to do
mLandData->flConstrainThrust = false;
mLandData->flZeroStabiHorizontal = false;
mLandData->flZeroStabiHorizontal = true;
mLandData->observationCount = 0;
mLandData->boundThrustMin = -0.1f;
mLandData->boundThrustMax = 0.0f;
// force disarm unless in pathplanner mode
// to clear, a new pathfollower mode must be selected that is not land,
// and also a non-pathfollower mode selection will set this to uninitialised.
if (flightStatus->ControlChain.PathPlanner != FLIGHTSTATUS_CONTROLCHAIN_TRUE) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_CRITICAL);
}
}
void VtolLandFSM::run_disarmed(__attribute__((unused)) uint8_t flTimeout)
{
if (flightStatus->ControlChain.PathPlanner != FLIGHTSTATUS_CONTROLCHAIN_TRUE) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_CRITICAL);
}
#ifdef DEBUG_GROUNDIMPACT
if (mLandData->observationCount++ > 100) {
setState(STATUSVTOLLAND_STATE_WTGFORGROUNDEFFECT, STATUSVTOLLAND_STATEEXITREASON_NONE);
}
#endif
}
void VtolLandFSM::fallback_to_hold(void)
{
PositionStateData positionState;
PositionStateGet(&positionState);
pathDesired->End.North = positionState.North;
pathDesired->End.East = positionState.East;
pathDesired->End.Down = positionState.Down;
pathDesired->Start.North = positionState.North;
pathDesired->Start.East = positionState.East;
pathDesired->Start.Down = positionState.Down;
pathDesired->StartingVelocity = 0.0f;
pathDesired->EndingVelocity = 0.0f;
pathDesired->Mode = PATHDESIRED_MODE_GOTOENDPOINT;
PathDesiredSet(pathDesired);
}
// abort repeatedly overwrites pathfollower's objective on a landing abort and
// continues to do so until a flight mode change.
void VtolLandFSM::setup_abort(void)
{
mLandData->boundThrustMin = vtolPathFollowerSettings->ThrustLimits.Min;
mLandData->boundThrustMax = vtolPathFollowerSettings->ThrustLimits.Max;
mLandData->flConstrainThrust = false;
mLandData->flZeroStabiHorizontal = false;
fallback_to_hold();
}
void VtolLandFSM::run_abort(__attribute__((unused)) uint8_t flTimeout)
{}

View File

@ -30,6 +30,7 @@ extern "C" {
#include <math.h>
#include <pid.h>
#include <alarms.h>
#include <CoordinateConversions.h>
#include <sin_lookup.h>
#include <pathdesired.h>
@ -104,10 +105,10 @@ void VtolVelocityController::SettingsUpdated(void)
{
const float dT = vtolPathFollowerSettings->UpdatePeriod / 1000.0f;
controlNE.UpdateParameters(vtolPathFollowerSettings->HorizontalVelPID.Kp,
vtolPathFollowerSettings->HorizontalVelPID.Ki,
vtolPathFollowerSettings->HorizontalVelPID.Kd,
vtolPathFollowerSettings->HorizontalVelPID.Beta,
controlNE.UpdateParameters(vtolPathFollowerSettings->VelocityRoamHorizontalVelPID.Kp,
vtolPathFollowerSettings->VelocityRoamHorizontalVelPID.Ki,
vtolPathFollowerSettings->VelocityRoamHorizontalVelPID.Kd,
vtolPathFollowerSettings->VelocityRoamHorizontalVelPID.Beta,
dT,
vtolPathFollowerSettings->HorizontalVelMax);
@ -201,28 +202,12 @@ void VtolVelocityController::UpdateAutoPilot()
float yaw = 0.0f;
int8_t result = UpdateStabilizationDesired(yaw_attitude, yaw);
if (!result) {
fallback_to_hold();
if (result) {
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_OK);
} else {
pathStatus->Status = PATHSTATUS_STATUS_CRITICAL;
AlarmsSet(SYSTEMALARMS_ALARM_GUIDANCE, SYSTEMALARMS_ALARM_WARNING);
}
PathStatusSet(pathStatus);
}
void VtolVelocityController::fallback_to_hold(void)
{
PositionStateData positionState;
PositionStateGet(&positionState);
pathDesired->End.North = positionState.North;
pathDesired->End.East = positionState.East;
pathDesired->End.Down = positionState.Down;
pathDesired->Start.North = positionState.North;
pathDesired->Start.East = positionState.East;
pathDesired->Start.Down = positionState.Down;
pathDesired->StartingVelocity = 0.0f;
pathDesired->EndingVelocity = 0.0f;
pathDesired->Mode = PATHDESIRED_MODE_GOTOENDPOINT;
PathDesiredSet(pathDesired);
}

View File

@ -177,8 +177,8 @@ static void altitudeHoldTask(void)
break;
}
AltitudeHoldStatusSet(&altitudeHoldStatus);
thrustDemand = local_thrustDemand;
AltitudeHoldStatusSet(&altitudeHoldStatus);
}
static void VelocityStateUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)

View File

@ -36,7 +36,8 @@
#include <pios_oplinkrcvr_priv.h>
#include <taskinfo.h>
#include <pios_ws2811.h>
#include <sanitycheck.h>
#include <actuatorsettings.h>
#ifdef PIOS_INCLUDE_INSTRUMENTATION
#include <pios_instrumentation.h>
@ -52,6 +53,8 @@
*/
#include "../board_hw_defs.c"
static SystemAlarmsExtendedAlarmStatusOptions RevoNanoConfigHook();
static void ActuatorSettingsUpdatedCb(UAVObjEvent *ev);
/**
* Sensor configurations
*/
@ -764,8 +767,54 @@ void PIOS_Board_Init(void)
}
}
#endif
// Attach the board config check hook
SANITYCHECK_AttachHook(&RevoNanoConfigHook);
// trigger a config check if actuatorsettings are updated
ActuatorSettingsInitialize();
ActuatorSettingsConnectCallback(ActuatorSettingsUpdatedCb);
}
SystemAlarmsExtendedAlarmStatusOptions RevoNanoConfigHook()
{
// inhibit usage of oneshot for non supported RECEIVER port modes
uint8_t recmode;
HwSettingsRM_RcvrPortGet(&recmode);
uint8_t modes[ACTUATORSETTINGS_BANKMODE_NUMELEM];
ActuatorSettingsBankModeGet(modes);
switch ((HwSettingsRM_RcvrPortOptions)recmode) {
// Those modes allows oneshot usage
case HWSETTINGS_RM_RCVRPORT_DISABLED:
case HWSETTINGS_RM_RCVRPORT_PPM:
case HWSETTINGS_RM_RCVRPORT_PPMOUTPUTS:
case HWSETTINGS_RM_RCVRPORT_OUTPUTS:
return SYSTEMALARMS_EXTENDEDALARMSTATUS_NONE;
// inhibit oneshot for the following modes
case HWSETTINGS_RM_RCVRPORT_PWM:
for (uint8_t i = 0; i < ACTUATORSETTINGS_BANKMODE_NUMELEM; i++) {
if (modes[i] == ACTUATORSETTINGS_BANKMODE_PWMSYNC ||
modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT125) {
return SYSTEMALARMS_EXTENDEDALARMSTATUS_UNSUPPORTEDCONFIG_ONESHOT;;
}
}
return SYSTEMALARMS_EXTENDEDALARMSTATUS_NONE;
default:
break;
}
return SYSTEMALARMS_EXTENDEDALARMSTATUS_UNSUPPORTEDCONFIG_ONESHOT;;
}
// trigger a configuration check if ActuatorSettings are changed.
void ActuatorSettingsUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
{
configuration_check();
}
/**
* @}
* @}

View File

@ -12,24 +12,24 @@ Item {
// All 'manual modes' are green, 'assisted' modes in cyan
// "MANUAL","STAB 1","STAB 2", "STAB 3", "STAB 4", "STAB 5", "STAB 6",
// "POS HOLD", "COURSE LOCK", "POS ROAM", "HOME LEASH", "ABS POS", "RTB", "LAND", "PATHPLANNER", "POI", "AUTOCRUISE"
// "POS HOLD", "COURSELOCK","VEL ROAM", "HOME LEASH", "ABS POS", "RTB", "LAND", "PATHPLAN", "POI", "AUTOCRUISE", "AUTOTAKEOFF"
property variant flightmodeColors : ["gray", "green", "green", "green", "green", "green", "green",
"cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan"]
"cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan"]
// Manual,Rate,Attitude,AxisLock,WeakLeveling,VirtualBar,Acro+,Rattitude,
// AltitudeHold,AltitudeVario,CruiseControl + Auto mode (VTOL/Wing pathfollower)
// Manual,Rate,RateTrainer,Attitude,AxisLock,WeakLeveling,VirtualBar,Acro+,Rattitude,
// AltitudeHold,AltitudeVario,CruiseControl" + Auto mode (VTOL/Wing pathfollower)
// grey : 'disabled' modes
property variant thrustmodeColors : ["green", "grey", "grey", "grey", "grey", "grey", "grey", "grey",
property variant thrustmodeColors : ["green", "grey", "grey", "grey", "grey", "grey", "grey", "grey", "grey",
"green", "green", "green", "cyan"]
// SystemSettings.AirframeType 3 - 17 : VtolPathFollower, check ThrustControl
property var thrust_mode: FlightStatus.FlightMode < 7 ? StabilizationDesired.StabilizationMode_Thrust :
FlightStatus.FlightMode > 6 && SystemSettings.AirframeType > 2 && SystemSettings.AirframeType < 18
&& VtolPathFollowerSettings.ThrustControl == 1 ? 11 :
FlightStatus.FlightMode > 6 && SystemSettings.AirframeType < 3 ? 11: 0
&& VtolPathFollowerSettings.ThrustControl == 1 ? 12 :
FlightStatus.FlightMode > 6 && SystemSettings.AirframeType < 3 ? 12: 0
property real flight_time: Math.round(SystemStats.FlightTime / 1000)
@ -198,11 +198,13 @@ Item {
Rectangle {
anchors.fill: parent
color: warnings.flightmodeColors[FlightStatus.FlightMode]
// Manual,Stabilized1,Stabilized2,Stabilized3,Stabilized4,Stabilized5,Stabilized6,PositionHold,CourseLock,
// VelocityRoam,HomeLeash,AbsolutePosition,ReturnToBase,Land,PathPlanner,POI,AutoCruise,AutoTakeoff
Text {
anchors.centerIn: parent
text: ["MANUAL","STAB 1","STAB 2", "STAB 3", "STAB 4", "STAB 5", "STAB 6", "POS HOLD", "COURSELOCK",
"POS ROAM", "HOME LEASH", "ABS POS", "RTB", "LAND", "PATHPLAN", "POI", "AUTOCRUISE"][FlightStatus.FlightMode]
"VEL ROAM", "HOME LEASH", "ABS POS", "RTB", "LAND", "PATHPLAN", "POI", "AUTOCRUISE", "AUTOTAKEOFF"][FlightStatus.FlightMode]
font {
family: pt_bold.name
pixelSize: Math.floor(parent.height * 0.74)
@ -225,12 +227,12 @@ Item {
anchors.fill: parent
color: FlightStatus.FlightMode < 1 ? "grey" : warnings.thrustmodeColors[thrust_mode.toString()]
// Manual,Rate,Attitude,AxisLock,WeakLeveling,VirtualBar,Acro+,Rattitude,
// Manual,Rate,RateTrainer,Attitude,AxisLock,WeakLeveling,VirtualBar,Acro+,Rattitude,
// AltitudeHold,AltitudeVario,CruiseControl
// grey : 'disabled' modes
Text {
anchors.centerIn: parent
text: ["MANUAL"," "," ", " ", " ", " ", " ", " ",
text: ["MANUAL"," "," ", " ", " ", " ", " ", " ", " ",
"ALT HOLD", "ALT VARIO", "CRUISECTRL", "AUTO"][thrust_mode.toString()]
font {
family: pt_bold.name

View File

@ -356,8 +356,8 @@ void ConfigOutputWidget::refreshWidgetsValues(UAVObject *obj)
// Setup labels and combos for banks according to board type
if (board == 0x0903) {
// Revolution family of boards 6 timer banks
bankLabels << "1 (1-2)" << "2 (3)" << "3 (4)" << "4 (5-6)" << "5 (7-8)" << "6 (9-10)";
channelBanks << 1 << 1 << 2 << 3 << 4 << 4 << 5 << 5 << 6 << 6;
bankLabels << "1 (1-2)" << "2 (3)" << "3 (4)" << "4 (5-6)" << "5 (7,12)" << "6 (8-11)";
channelBanks << 1 << 1 << 2 << 3 << 4 << 4 << 5 << 6 << 6 << 6 << 6 << 5;
} else if (board == 0x0905) {
// Revolution Nano
bankLabels << "1 (1)" << "2 (2,7,11)" << "3 (3)" << "4 (4)" << "5 (5-6)" << "6 (8-10,12)";
@ -472,10 +472,7 @@ void ConfigOutputWidget::updateWarnings(UAVObject *)
if (systemAlarms.Alarm[SystemAlarms::ALARM_SYSTEMCONFIGURATION] > SystemAlarms::ALARM_WARNING) {
switch (systemAlarms.ExtendedAlarmStatus[SystemAlarms::EXTENDEDALARMSTATUS_SYSTEMCONFIGURATION]) {
case SystemAlarms::EXTENDEDALARMSTATUS_UNSUPPORTEDCONFIG_ONESHOT:
setWarning(tr("OneShot and PWMSync output only works with Receiver Port settings marked with '+OneShot'<br>"
"When using Receiver Port setting 'PPM_PIN8+OneShot' "
"<b><font color='%1'>Bank %2</font></b> must be set to PWM")
.arg(m_banks.at(3).color().name()).arg(m_banks.at(3).label()->text()));
setWarning(tr("OneShot and PWMSync output DO NOT work with Receiver Port is 'PWM'<br>"));
return;
}
}

View File

@ -180,6 +180,9 @@ void ConnectionDiagram::setupGraphicsScene()
case VehicleConfigurationSource::INPUT_SBUS:
elementsToShow << QString("%1sbus").arg(prefix);
break;
case VehicleConfigurationSource::INPUT_SRXL:
elementsToShow << QString("%1srxl").arg(prefix);
break;
case VehicleConfigurationSource::INPUT_DSM:
elementsToShow << QString("%1satellite").arg(prefix);
break;

View File

@ -49,6 +49,7 @@ void AutoUpdatePage::autoUpdate()
Q_ASSERT(uploader);
m_isUpdating = true;
uploader->autoUpdate(ui->eraseSettings->isChecked());
getWizard()->setRestartNeeded(true);
}
void AutoUpdatePage::updateStatus(uploader::ProgressStep status, QVariant value)

View File

@ -73,5 +73,16 @@ void EscPage::initializePage()
bool EscPage::isSynchOrOneShotAvailable()
{
return true;
bool available = true;
switch (getWizard()->getControllerType()) {
case SetupWizard::CONTROLLER_NANO:
available = getWizard()->getInputType() != SetupWizard::INPUT_PWM;
break;
default:
break;
}
return available;
}

View File

@ -55,6 +55,8 @@ bool InputPage::validatePage()
getWizard()->setInputType(SetupWizard::INPUT_SBUS);
} else if (ui->spectrumButton->isChecked()) {
getWizard()->setInputType(SetupWizard::INPUT_DSM);
} else if (ui->multiplexButton->isChecked()){
getWizard()->setInputType(SetupWizard::INPUT_SRXL);
} else {
getWizard()->setInputType(SetupWizard::INPUT_PWM);
}
@ -79,17 +81,15 @@ bool InputPage::restartNeeded(VehicleConfigurationSource::INPUT_TYPE selectedTyp
switch (selectedType) {
case VehicleConfigurationSource::INPUT_PWM:
return data.RM_RcvrPort != HwSettings::RM_RCVRPORT_PWM;
case VehicleConfigurationSource::INPUT_PPM:
return data.RM_RcvrPort != HwSettings::RM_RCVRPORT_PPM;
case VehicleConfigurationSource::INPUT_SBUS:
return data.RM_MainPort != HwSettings::RM_MAINPORT_SBUS;
case VehicleConfigurationSource::INPUT_SRXL:
return data.RM_FlexiPort != HwSettings::RM_FLEXIPORT_SRXL;
case VehicleConfigurationSource::INPUT_DSM:
// TODO: Handle all of the DSM types ?? Which is most common?
return data.RM_MainPort != HwSettings::RM_MAINPORT_DSM;
default: return true;
}
break;

View File

@ -218,6 +218,47 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="multiplexButton">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>Multiplex SRXL</string>
</property>
<property name="styleSheet">
<string notr="true">QToolButton { border: none }</string>
</property>
<property name="text">
<string>SRXL</string>
</property>
<property name="icon">
<iconset resource="../wizardResources.qrc">
<normaloff>:/setupwizard/resources/bttn-srxl-up.png</normaloff>
<normalon>:/setupwizard/resources/bttn-srxl-down.png</normalon>:/setupwizard/resources/bttn-srxl-up.png</iconset>
</property>
<property name="iconSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="autoExclusive">
<bool>true</bool>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -30,13 +30,13 @@
inkscape:window-height="928"
id="namedview4616"
showgrid="false"
inkscape:zoom="4.1218791"
inkscape:cx="466.90655"
inkscape:cy="424.49244"
inkscape:zoom="1.0702079"
inkscape:cx="547.53816"
inkscape:cy="386.12041"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="layer12"
inkscape:current-layer="layer16"
fit-margin-top="15"
fit-margin-left="15"
fit-margin-right="15"
@ -17750,6 +17750,26 @@
stop-color="#535353"
id="stop6585-0-2-1-6-2-4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6587-8-2-7"
id="linearGradient26963"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-151.00134,-881.62884)"
x1="1250"
y1="1450"
x2="1490"
y2="1450" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6587-8-2-7"
id="linearGradient27052"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-151.00134,-881.62884)"
x1="1250"
y1="1450"
x2="1490"
y2="1450" />
</defs>
<metadata
id="metadata12656">
@ -17787,6 +17807,125 @@
inkscape:label="rc-input"
style="display:inline"
transform="translate(-32.46875,315.85439)">
<g
inkscape:groupmode="layer"
id="layer16"
inkscape:label="revo-srxl"
style="display:inline">
<g
style="display:inline"
id="revo-srxl"
transform="matrix(0,0.4,-0.4,0,929.4684,-117.45414)">
<path
id="path9857-8-8-1-1-4"
d="m 1430.6302,1592 c -5.97,64.9 57.0596,195.8293 232.2275,97.9523"
stroke-miterlimit="4"
inkscape:connector-curvature="0"
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="ccc"
style="fill:none;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 1392.571,1323.8556 l 0,-286.8032 l -291.0357,0"
id="path8856-5-1-7-1-9-5-4-3-7" />
<path
sodipodi:nodetypes="ccc"
style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 1362.571,1323.8556 l -7e-4,-251.8944 l -261.035,0.1823"
id="path8856-1-2-1-9-0-9" />
<path
sodipodi:nodetypes="ccc"
style="fill:none;stroke:#000000;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 1347.571,1323.8556 l 0,-236.8032 l -246.0357,0"
id="path8856-1-5-7-7-2-9-3" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
stroke-miterlimit="4"
d="m 1308.744,1592 c 5.97,64.9 -57.0596,195.8293 -232.2275,97.9523"
id="path21749-5" />
<rect
rx="11.5"
id="rect8853-6-8-6-6-4"
style="color:#000000;fill:url(#linearGradient26963);fill-rule:nonzero;stroke:#000000;stroke-width:5.76999998;stroke-miterlimit:4;stroke-dasharray:none;enable-background:accumulate"
ry="11.5"
height="272"
width="237"
stroke-miterlimit="4"
y="1320"
x="1250" />
<g
style="font-style:normal;font-weight:normal;font-size:100px;line-height:125%;font-family:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000"
id="text4849-5-9-2-5"
transform="matrix(0,-1,1,0,-97.5,2824.5)">
<path
d="m 1337.2402,1484.8574 l 0,3.8477 q -2.2461,-1.0742 -4.2382,-1.6016 q -1.9922,-0.5273 -3.8477,-0.5273 q -3.2227,0 -4.9805,1.25 q -1.7383,1.25 -1.7383,3.5547 q 0,1.9336 1.1524,2.9296 q 1.1719,0.9766 4.4141,1.5821 l 2.3828,0.4883 q 4.414,0.8398 6.5039,2.9687 q 2.1093,2.1094 2.1093,5.6641 q 0,4.2383 -2.8515,6.4258 q -2.832,2.1875 -8.3203,2.1875 q -2.0703,0 -4.4141,-0.4688 q -2.3242,-0.4687 -4.8242,-1.3867 l 0,-4.0625 q 2.4023,1.3476 4.707,2.0312 q 2.3047,0.6836 4.5313,0.6836 q 3.3789,0 5.2148,-1.3281 q 1.836,-1.3281 1.836,-3.7891 q 0,-2.1484 -1.3282,-3.3593 q -1.3086,-1.211 -4.3164,-1.8164 l -2.4023,-0.4688 q -4.4141,-0.8789 -6.3867,-2.7539 q -1.9727,-1.875 -1.9727,-5.2148 q 0,-3.8672 2.7148,-6.0938 q 2.7344,-2.2266 7.5196,-2.2266 q 2.0508,0 4.1797,0.3711 q 2.1289,0.3711 4.3554,1.1133 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21770-9"
inkscape:connector-curvature="0" />
<path
d="m 1358.9785,1499.3887 q 1.2695,0.4297 2.461,1.8359 q 1.2109,1.4063 2.4218,3.8672 l 4.0039,7.9687 l -4.2382,0 l -3.7305,-7.4804 q -1.4453,-2.9297 -2.8125,-3.8867 q -1.3477,-0.9571 -3.6914,-0.9571 l -4.2969,0 l 0,12.3242 l -3.9453,0 l 0,-29.1601 l 8.9062,0 q 5,0 7.461,2.0898 q 2.4609,2.0899 2.4609,6.3086 q 0,2.7539 -1.289,4.5703 q -1.2696,1.8164 -3.711,2.5196 z m -9.8828,-12.2461 l 0,10.3515 l 4.9609,0 q 2.8516,0 4.2969,-1.3086 q 1.4649,-1.3281 1.4649,-3.8867 q 0,-2.5586 -1.4649,-3.8476 q -1.4453,-1.3086 -4.2969,-1.3086 l -4.9609,0 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21772-3"
inkscape:connector-curvature="0" />
<path
d="m 1371.5566,1483.9004 l 4.2383,0 l 7.2461,10.8398 l 7.2852,-10.8398 l 4.2383,0 l -9.375,14.0039 l 10,15.1562 l -4.2383,0 l -8.2032,-12.4023 l -8.2617,12.4023 l -4.2578,0 l 10.4102,-15.5664 l -9.0821,-13.5937 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21774-4"
inkscape:connector-curvature="0" />
<path
d="m 1400.3848,1483.9004 l 3.9453,0 l 0,25.8398 l 14.1992,0 l 0,3.3203 l -18.1445,0 l 0,-29.1601 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21776-8"
inkscape:connector-curvature="0" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:37.7733078px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text20525-8"
transform="matrix(0,-1,1,0,-68.75,2824.5001)">
<path
d="m 1264.1993,1413.0389 l 0,-27.0389 l 8.1707,0 l 4.9061,18.444 l 4.8507,-18.444 l 8.1892,0 l 0,27.0389 l -5.0721,0 l 0,-21.2843 l -5.3672,21.2843 l -5.2566,0 l -5.3487,-21.2843 l 0,21.2843 l -5.0721,0 z"
id="path21779-0"
inkscape:connector-curvature="0" />
<path
d="m 1295.7385,1386 l 5.4594,0 l 0,14.6446 q 0,3.4859 0.2029,4.5188 q 0.3505,1.6599 1.66,2.6743 q 1.328,0.996 3.615,0.996 q 2.324,0 3.5044,-0.9406 q 1.1804,-0.9591 1.4202,-2.3424 q 0.2397,-1.3833 0.2397,-4.5926 l 0,-14.9581 l 5.4595,0 l 0,14.2019 q 0,4.8692 -0.4427,6.8796 q -0.4427,2.0104 -1.6415,3.3937 q -1.1804,1.3833 -3.1724,2.2133 q -1.9919,0.8115 -5.2012,0.8115 q -3.8732,0 -5.8836,-0.8853 q -1.992,-0.9037 -3.154,-2.3239 q -1.1619,-1.4386 -1.5308,-3.0064 q -0.5349,-2.3239 -0.5349,-6.8612 l 0,-14.4232 z"
id="path21781-9"
inkscape:connector-curvature="0" />
<path
d="m 1323.2201,1413.0389 l 0,-26.8175 l 5.4594,0 l 0,22.2619 l 13.5748,0 l 0,4.5556 l -19.0342,0 z"
id="path21783-1"
inkscape:connector-curvature="0" />
<path
d="m 1349.4474,1413.0389 l 0,-22.4647 l -8.0231,0 l 0,-4.5742 l 21.4873,0 l 0,4.5742 l -8.0047,0 l 0,22.4647 l -5.4595,0 z"
id="path21785-1"
inkscape:connector-curvature="0" />
<path
d="m 1366.213,1413.0389 l 0,-27.0389 l 5.4595,0 l 0,27.0389 l -5.4595,0 z"
id="path21787-2"
inkscape:connector-curvature="0" />
<path
d="m 1376.8552,1413.0389 l 0,-27.0389 l 8.7609,0 q 4.9799,0 6.4923,0.4058 q 2.3239,0.6087 3.8917,2.6559 q 1.5677,2.0289 1.5677,5.2566 q 0,2.4899 -0.9037,4.1868 q -0.9038,1.6968 -2.3055,2.6743 q -1.3833,0.9591 -2.822,1.2727 q -1.955,0.3873 -5.6623,0.3873 l -3.5597,0 l 0,10.1995 l -5.4594,0 z m 5.4594,-22.4647 l 0,7.6727 l 2.988,0 q 3.2277,0 4.3159,-0.4243 q 1.0882,-0.4242 1.6968,-1.3279 q 0.6271,-0.9038 0.6271,-2.1026 q 0,-1.4756 -0.8669,-2.4346 q -0.8668,-0.9591 -2.1948,-1.1989 q -0.9775,-0.1844 -3.9286,-0.1844 l -2.6375,0 z"
id="path21789-4"
inkscape:connector-curvature="0" />
<path
d="m 1402.2342,1413.0389 l 0,-26.8175 l 5.4594,0 l 0,22.2619 l 13.5748,0 l 0,4.5556 l -19.0342,0 z"
id="path21791-4"
inkscape:connector-curvature="0" />
<path
d="m 1425.1785,1413.0389 l 0,-27.0389 l 20.0486,0 l 0,4.5742 l -14.5892,0 l 0,5.9943 l 13.5748,0 l 0,4.5556 l -13.5748,0 l 0,7.3592 l 15.1057,0 l 0,4.5556 l -20.5651,0 z"
id="path21793-5"
inkscape:connector-curvature="0" />
<path
d="m 1447.6617,1413.0389 l 9.2405,-14.1096 L 1448.5286,1386 l 6.3816,0 l 5.4226,8.6872 l 5.3118,-8.6872 l 6.3263,0 l -8.4104,13.1322 l 9.2404,13.9067 l -6.5845,0 l -5.9943,-9.3511 l -6.0128,9.3511 l -6.5476,0 z"
id="path21795-4"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer54"
@ -17799,115 +17938,115 @@
transform="translate(1.0000001,-19)">
<path
id="path8856-1-8-4-9-0"
d="M 309.08544,189.42619 L 430.46875,188.94219"
d="m 309.08544,189.42619 l 121.38331,-0.484"
inkscape:connector-curvature="0"
style="fill:none;stroke:#ec1d00;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:miter;display:inline"
style="display:inline;fill:none;stroke:#ec1d00;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:miter"
sodipodi:nodetypes="cc" />
<path
id="path8856-1-5-8-4-3-1"
d="M 309.08544,183.82619 L 430.46875,183.62059"
d="m 309.08544,183.82619 l 121.38331,-0.2056"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:miter;display:inline"
style="display:inline;fill:none;stroke:#000000;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:miter"
sodipodi:nodetypes="cc" />
<path
id="path8856-1-3-1-3-5-6"
d="M 309.08544,195.62619 L 369.77709,195.42019 L 370.12292,212.31719 L 430.46875,212.21419"
d="m 309.08544,195.62619 l 60.69165,-0.206 l 0.34583,16.897 l 60.34583,-0.103"
inkscape:connector-curvature="0"
style="fill:none;stroke:#ffffff;stroke-width:5.17476749;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
style="display:inline;fill:none;stroke:#ffffff;stroke-width:5.17476749;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#1f4697;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="M 394.76407,219.75113 L 430.56375,219.65633"
d="m 394.76407,219.75113 l 35.79968,-0.0948"
id="path8856-5-7-0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#fac204;stroke-width:5.61399984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="M 395.16407,226.51434 L 430.56375,226.51434"
d="m 395.16407,226.51434 l 35.39968,0"
id="path8856-5-1-81-9" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#32a304;stroke-width:5.61399984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="M 395.80447,233.97173 L 430.40447,233.96573"
d="m 395.80447,233.97173 l 34.6,-0.006"
id="path8856-5-1-7-8-5" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#ec6004;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="M 396.284,241.51434 L 430.71887,241.51434"
d="m 396.284,241.51434 l 34.43487,0"
id="path8856-5-1-7-1-5-2" />
<path
style="fill:none;stroke:#777777;stroke-width:5.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;display:inline"
style="display:inline;fill:none;stroke:#777777;stroke-width:5.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="M 131.51628,280.89645 C 99.179438,276.41438 56.116118,293.77498 44.942858,345.61434"
id="path9857-3-9-2-4" />
<path
style="fill:none;stroke:#6b6b6b;stroke-width:1.21428466;stroke-linecap:butt;stroke-linejoin:miter;display:inline"
style="display:inline;fill:none;stroke:#6b6b6b;stroke-width:1.21428466;stroke-linecap:butt;stroke-linejoin:miter"
inkscape:connector-curvature="0"
d="M 309.08544,198.82619 L 366.77709,198.68719 L 367.12292,215.61769 L 430.46875,215.54819"
d="m 309.08544,198.82619 l 57.69165,-0.139 l 0.34583,16.9305 l 63.34583,-0.0695"
id="path8856-4-4-3-0"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#6b6b6b;stroke-width:1.21428466;stroke-linecap:butt;stroke-linejoin:miter;display:inline"
style="display:inline;fill:none;stroke:#6b6b6b;stroke-width:1.21428466;stroke-linecap:butt;stroke-linejoin:miter"
inkscape:connector-curvature="0"
d="M 309.08544,191.82619 L 372.77709,191.68719 L 373.12292,208.61769 L 430.46875,208.54819"
d="m 309.08544,191.82619 l 63.69165,-0.139 l 0.34583,16.9305 l 57.34583,-0.0695"
id="path8856-4-4-3-4-5"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="sssccccssssss"
inkscape:connector-curvature="0"
id="rect8853-0-8-3-8"
d="M 136.31357,163.05542 L 323.35356,163.05542 C 326.94348,163.05542 329.83356,165.9455 329.83356,169.53542 L 329.83356,178.37557 L 323.83356,178.37557 L 323.83356,300.73558 L 329.834,300.73558 L 329.83356,310.97542 C 329.83341,314.56534 326.94348,317.45542 323.35356,317.45542 L 136.31357,317.45542 C 132.72364,317.45542 129.83356,314.56534 129.83356,310.97542 L 129.83356,169.53542 C 129.83356,165.9455 132.72364,163.05542 136.31357,163.05542 z"
style="color:#000000;fill:url(#linearGradient13565-9-6);fill-rule:nonzero;stroke:#000000;stroke-width:3.09599996;stroke-miterlimit:4;stroke-dasharray:none;display:inline;enable-background:accumulate" />
d="m 136.31357,163.05542 l 187.03999,0 c 3.58992,0 6.48,2.89008 6.48,6.48 l 0,8.84015 l -6,0 l 0,122.36001 l 6.00044,0 l -4.4e-4,10.23984 c -1.5e-4,3.58992 -2.89008,6.48 -6.48,6.48 l -187.03999,0 c -3.58993,0 -6.48001,-2.89008 -6.48001,-6.48 l 0,-141.44 c 0,-3.58992 2.89008,-6.48 6.48001,-6.48 z"
style="color:#000000;display:inline;fill:url(#linearGradient13565-9-6);fill-rule:nonzero;stroke:#000000;stroke-width:3.09599996;stroke-miterlimit:4;stroke-dasharray:none;enable-background:accumulate" />
<g
transform="translate(-93.48662,-127.74067)"
id="text9734-24-8-2-2"
style="font-size:22.39999962px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;display:inline;font-family:Sans">
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.39999962px;line-height:125%;font-family:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff">
<path
id="path13900-3-4"
d="M 268.82831,303.23718 L 275.81738,303.23718 C 277.89549,303.23719 279.48872,303.70021 280.59706,304.62624 C 281.71267,305.545 282.27049,306.8575 282.2705,308.56374 C 282.27049,310.27729 281.71267,311.59708 280.59706,312.52311 C 279.48872,313.44187 277.89549,313.90124 275.81738,313.90124 L 273.03925,313.90124 L 273.03925,319.56686 L 268.82831,319.56686 L 268.82831,303.23718 M 273.03925,306.28874 L 273.03925,310.84968 L 275.36894,310.84968 C 276.1856,310.84969 276.81632,310.65281 277.26113,310.25905 C 277.70591,309.85802 277.9283,309.29292 277.92831,308.56374 C 277.9283,307.83458 277.70591,307.27313 277.26113,306.87936 C 276.81632,306.48563 276.1856,306.28875 275.36894,306.28874 L 273.03925,306.28874"
d="m 268.82831,303.23718 l 6.98907,0 c 2.07811,10e-6 3.67134,0.46303 4.77968,1.38906 c 1.11561,0.91876 1.67343,2.23126 1.67344,3.9375 c -1e-5,1.71355 -0.55783,3.03334 -1.67344,3.95937 c -1.10834,0.91876 -2.70157,1.37813 -4.77968,1.37813 l -2.77813,0 l 0,5.66562 l -4.21094,0 l 0,-16.32968 m 4.21094,3.05156 l 0,4.56094 l 2.32969,0 c 0.81666,1e-5 1.44738,-0.19687 1.89219,-0.59063 c 0.44478,-0.40103 0.66717,-0.96613 0.66718,-1.69531 c -1e-5,-0.72916 -0.2224,-1.29061 -0.66718,-1.68438 c -0.44481,-0.39373 -1.07553,-0.59061 -1.89219,-0.59062 l -2.32969,0"
inkscape:connector-curvature="0" />
<path
id="path13902-9-6"
d="M 285.23456,303.23718 L 292.22363,303.23718 C 294.30174,303.23719 295.89497,303.70021 297.00331,304.62624 C 298.11892,305.545 298.67674,306.8575 298.67675,308.56374 C 298.67674,310.27729 298.11892,311.59708 297.00331,312.52311 C 295.89497,313.44187 294.30174,313.90124 292.22363,313.90124 L 289.4455,313.90124 L 289.4455,319.56686 L 285.23456,319.56686 L 285.23456,303.23718 M 289.4455,306.28874 L 289.4455,310.84968 L 291.77519,310.84968 C 292.59185,310.84969 293.22257,310.65281 293.66738,310.25905 C 294.11216,309.85802 294.33455,309.29292 294.33456,308.56374 C 294.33455,307.83458 294.11216,307.27313 293.66738,306.87936 C 293.22257,306.48563 292.59185,306.28875 291.77519,306.28874 L 289.4455,306.28874"
d="m 285.23456,303.23718 l 6.98907,0 c 2.07811,10e-6 3.67134,0.46303 4.77968,1.38906 c 1.11561,0.91876 1.67343,2.23126 1.67344,3.9375 c -1e-5,1.71355 -0.55783,3.03334 -1.67344,3.95937 c -1.10834,0.91876 -2.70157,1.37813 -4.77968,1.37813 l -2.77813,0 l 0,5.66562 l -4.21094,0 l 0,-16.32968 m 4.21094,3.05156 l 0,4.56094 l 2.32969,0 c 0.81666,1e-5 1.44738,-0.19687 1.89219,-0.59063 c 0.44478,-0.40103 0.66717,-0.96613 0.66718,-1.69531 c -1e-5,-0.72916 -0.2224,-1.29061 -0.66718,-1.68438 c -0.44481,-0.39373 -1.07553,-0.59061 -1.89219,-0.59062 l -2.32969,0"
inkscape:connector-curvature="0" />
<path
id="path13904-1-3"
d="M 301.64081,303.23718 L 307.00019,303.23718 L 310.71894,311.97624 L 314.45956,303.23718 L 319.808,303.23718 L 319.808,319.56686 L 315.82675,319.56686 L 315.82675,307.62311 L 312.06425,316.4278 L 309.3955,316.4278 L 305.633,307.62311 L 305.633,319.56686 L 301.64081,319.56686 L 301.64081,303.23718"
d="m 301.64081,303.23718 l 5.35938,0 l 3.71875,8.73906 l 3.74062,-8.73906 l 5.34844,0 l 0,16.32968 l -3.98125,0 l 0,-11.94375 l -3.7625,8.80469 l -2.66875,0 l -3.7625,-8.80469 l 0,11.94375 l -3.99219,0 l 0,-16.32968"
inkscape:connector-curvature="0" />
<path
id="path13906-1-0"
d="M 343.10487,303.75124 L 343.10487,307.20749 C 342.20799,306.80646 341.33299,306.50386 340.47987,306.29968 C 339.62674,306.09552 338.82101,305.99344 338.06269,305.99343 C 337.05643,305.99344 336.31268,306.13198 335.83144,306.40905 C 335.35018,306.68615 335.10956,307.11636 335.10956,307.69968 C 335.10956,308.13719 335.26997,308.4799 335.59081,308.7278 C 335.91893,308.96844 336.50956,309.17625 337.36269,309.35124 L 339.15644,309.71218 C 340.97205,310.07677 342.26267,310.63094 343.02831,311.37468 C 343.79392,312.11843 344.17674,313.17572 344.17675,314.54655 C 344.17674,316.3476 343.6408,317.68926 342.56894,318.57155 C 341.50434,319.44655 339.87466,319.88405 337.67988,319.88405 C 336.64445,319.88405 335.60539,319.78565 334.56269,319.58874 C 333.51998,319.39186 332.47727,319.1002 331.43456,318.71374 L 331.43456,315.15905 C 332.47727,315.71322 333.48352,316.13249 334.45331,316.41686 C 335.43039,316.69395 336.37101,316.83249 337.27519,316.83249 C 338.19393,316.83249 338.89757,316.67937 339.38613,316.37311 C 339.87466,316.06687 340.11893,315.62937 340.11894,315.06061 C 340.11893,314.5502 339.95122,314.15645 339.61581,313.87936 C 339.28768,313.60229 338.62778,313.35437 337.63613,313.13561 L 336.00644,312.77468 C 334.3731,312.42468 333.17727,311.86687 332.41894,311.10124 C 331.66789,310.33562 331.29237,309.30385 331.29238,308.00593 C 331.29237,306.3799 331.81737,305.12938 332.86738,304.25436 C 333.91737,303.37938 335.42674,302.94188 337.3955,302.94186 C 338.29237,302.94188 339.21476,303.01116 340.16269,303.14968 C 341.11059,303.28094 342.09132,303.48146 343.10487,303.75124"
d="m 343.10487,303.75124 l 0,3.45625 c -0.89688,-0.40103 -1.77188,-0.70363 -2.625,-0.90781 c -0.85313,-0.20416 -1.65886,-0.30624 -2.41718,-0.30625 c -1.00626,1e-5 -1.75001,0.13855 -2.23125,0.41562 c -0.48126,0.2771 -0.72188,0.70731 -0.72188,1.29063 c 0,0.43751 0.16041,0.78022 0.48125,1.02812 c 0.32812,0.24064 0.91875,0.44845 1.77188,0.62344 l 1.79375,0.36094 c 1.81561,0.36459 3.10623,0.91876 3.87187,1.6625 c 0.76561,0.74375 1.14843,1.80104 1.14844,3.17187 c -1e-5,1.80105 -0.53595,3.14271 -1.60781,4.025 c -1.0646,0.875 -2.69428,1.3125 -4.88906,1.3125 c -1.03543,0 -2.07449,-0.0984 -3.11719,-0.29531 c -1.04271,-0.19688 -2.08542,-0.48854 -3.12813,-0.875 l 0,-3.55469 c 1.04271,0.55417 2.04896,0.97344 3.01875,1.25781 c 0.97708,0.27709 1.9177,0.41563 2.82188,0.41563 c 0.91874,0 1.62238,-0.15312 2.11094,-0.45938 c 0.48853,-0.30624 0.7328,-0.74374 0.73281,-1.3125 c -1e-5,-0.51041 -0.16772,-0.90416 -0.50313,-1.18125 c -0.32813,-0.27707 -0.98803,-0.52499 -1.97968,-0.74375 l -1.62969,-0.36093 c -1.63334,-0.35 -2.82917,-0.90781 -3.5875,-1.67344 c -0.75105,-0.76562 -1.12657,-1.79739 -1.12656,-3.09531 c -10e-6,-1.62603 0.52499,-2.87655 1.575,-3.75157 c 1.04999,-0.87498 2.55936,-1.31248 4.52812,-1.3125 c 0.89687,2e-5 1.81926,0.0693 2.76719,0.20782 c 0.9479,0.13126 1.92863,0.33178 2.94218,0.60156"
inkscape:connector-curvature="0" />
<path
id="path13908-3-7"
d="M 347.70957,307.31686 L 351.62519,307.31686 L 351.62519,319.56686 L 347.70957,319.56686 L 347.70957,307.31686 M 347.70957,302.54811 L 351.62519,302.54811 L 351.62519,305.74186 L 347.70957,305.74186 L 347.70957,302.54811"
d="m 347.70957,307.31686 l 3.91562,0 l 0,12.25 l -3.91562,0 l 0,-12.25 m 0,-4.76875 l 3.91562,0 l 0,3.19375 l -3.91562,0 l 0,-3.19375"
inkscape:connector-curvature="0" />
<path
id="path13910-5-7"
d="M 363.74394,317.48874 C 363.20434,318.20332 362.61007,318.72832 361.96113,319.06374 C 361.31216,319.39916 360.56112,319.56686 359.708,319.56686 C 358.2132,319.56686 356.97727,318.97989 356.00019,317.80593 C 355.0231,316.62468 354.53456,315.1226 354.53456,313.29968 C 354.53456,311.46948 355.0231,309.97104 356.00019,308.80436 C 356.97727,307.63042 358.2132,307.04344 359.708,307.04343 C 360.56112,307.04344 361.31216,307.21115 361.96113,307.54655 C 362.61007,307.88198 363.20434,308.41063 363.74394,309.13249 L 363.74394,307.31686 L 367.68144,307.31686 L 367.68144,318.33093 C 367.68142,320.29968 367.05799,321.80176 365.81112,322.83718 C 364.57153,323.87988 362.77049,324.40123 360.408,324.40124 C 359.64237,324.40123 358.90227,324.34294 358.18769,324.22624 C 357.4731,324.10957 356.75487,323.93092 356.033,323.6903 L 356.033,320.63874 C 356.71841,321.03249 357.38925,321.32415 358.0455,321.51374 C 358.70174,321.71061 359.36164,321.80905 360.02519,321.80905 C 361.30851,321.80905 362.24914,321.52832 362.84706,320.96686 C 363.44497,320.4054 363.74393,319.52676 363.74394,318.33093 L 363.74394,317.48874 M 361.16269,309.8653 C 360.35331,309.86531 359.72258,310.16427 359.2705,310.76218 C 358.81841,311.3601 358.59237,312.20593 358.59238,313.29968 C 358.59237,314.4226 358.81112,315.27572 359.24863,315.85905 C 359.68612,316.4351 360.32414,316.72312 361.16269,316.72311 C 361.97935,316.72312 362.61372,316.42416 363.06581,315.82624 C 363.51789,315.22833 363.74393,314.38614 363.74394,313.29968 C 363.74393,312.20593 363.51789,311.3601 363.06581,310.76218 C 362.61372,310.16427 361.97935,309.86531 361.16269,309.8653"
d="m 363.74394,317.48874 c -0.5396,0.71458 -1.13387,1.23958 -1.78281,1.575 c -0.64897,0.33542 -1.40001,0.50312 -2.25313,0.50312 c -1.4948,0 -2.73073,-0.58697 -3.70781,-1.76093 c -0.97709,-1.18125 -1.46563,-2.68333 -1.46563,-4.50625 c 0,-1.8302 0.48854,-3.32864 1.46563,-4.49532 c 0.97708,-1.17394 2.21301,-1.76092 3.70781,-1.76093 c 0.85312,10e-6 1.60416,0.16772 2.25313,0.50312 c 0.64894,0.33543 1.24321,0.86408 1.78281,1.58594 l 0,-1.81563 l 3.9375,0 l 0,11.01407 c -2e-5,1.96875 -0.62345,3.47083 -1.87032,4.50625 c -1.23959,1.0427 -3.04063,1.56405 -5.40312,1.56406 c -0.76563,-10e-6 -1.50573,-0.0583 -2.22031,-0.175 c -0.71459,-0.11667 -1.43282,-0.29532 -2.15469,-0.53594 l 0,-3.05156 c 0.68541,0.39375 1.35625,0.68541 2.0125,0.875 c 0.65624,0.19687 1.31614,0.29531 1.97969,0.29531 c 1.28332,0 2.22395,-0.28073 2.82187,-0.84219 c 0.59791,-0.56146 0.89687,-1.4401 0.89688,-2.63593 l 0,-0.84219 m -2.58125,-7.62344 c -0.80938,1e-5 -1.44011,0.29897 -1.89219,0.89688 c -0.45209,0.59792 -0.67813,1.44375 -0.67812,2.5375 c -10e-6,1.12292 0.21874,1.97604 0.65625,2.55937 c 0.43749,0.57605 1.07551,0.86407 1.91406,0.86406 c 0.81666,10e-6 1.45103,-0.29895 1.90312,-0.89687 c 0.45208,-0.59791 0.67812,-1.4401 0.67813,-2.52656 c -1e-5,-1.09375 -0.22605,-1.93958 -0.67813,-2.5375 c -0.45209,-0.59791 -1.08646,-0.89687 -1.90312,-0.89688"
inkscape:connector-curvature="0" />
<path
id="path13912-3-0"
d="M 383.78144,312.10749 L 383.78144,319.56686 L 379.84394,319.56686 L 379.84394,318.3528 L 379.84394,313.85749 C 379.84393,312.8002 379.81844,312.07104 379.76734,311.66999 C 379.72354,311.26896 379.64337,310.97364 379.52671,310.78405 C 379.37358,310.52885 379.16576,310.33198 378.90327,310.19343 C 378.64076,310.0476 378.34181,309.97469 378.0064,309.97468 C 377.18972,309.97469 376.54806,310.29187 376.0814,310.92624 C 375.61473,311.55333 375.38139,312.42468 375.3814,313.5403 L 375.3814,319.56686 L 371.46577,319.56686 L 371.46577,307.31686 L 375.3814,307.31686 L 375.3814,309.11061 C 375.97202,308.39604 376.5991,307.87104 377.26265,307.53561 C 377.92618,307.19292 378.65899,307.02156 379.46109,307.02155 C 380.87566,307.02156 381.94753,307.45542 382.67671,308.32311 C 383.41316,309.19083 383.78138,310.45229 383.7814,312.10749"
d="m 383.78144,312.10749 l 0,7.45937 l -3.9375,0 l 0,-1.21406 l 0,-4.49531 c -10e-6,-1.05729 -0.0255,-1.78645 -0.0766,-2.1875 c -0.0438,-0.40103 -0.12397,-0.69635 -0.24063,-0.88594 c -0.15313,-0.2552 -0.36095,-0.45207 -0.62344,-0.59062 c -0.26251,-0.14583 -0.56146,-0.21874 -0.89687,-0.21875 c -0.81668,1e-5 -1.45834,0.31719 -1.925,0.95156 c -0.46667,0.62709 -0.70001,1.49844 -0.7,2.61406 l 0,6.02656 l -3.91563,0 l 0,-12.25 l 3.91563,0 l 0,1.79375 c 0.59062,-0.71457 1.2177,-1.23957 1.88125,-1.575 c 0.66353,-0.34269 1.39634,-0.51405 2.19844,-0.51406 c 1.41457,1e-5 2.48644,0.43387 3.21562,1.30156 c 0.73645,0.86772 1.10467,2.12918 1.10469,3.78438"
inkscape:connector-curvature="0" />
<path
id="path13914-2-8"
d="M 392.92519,314.05436 C 392.10852,314.05437 391.49237,314.19291 391.07675,314.46999 C 390.66841,314.74708 390.46425,315.15541 390.46425,315.69499 C 390.46425,316.19083 390.62831,316.58093 390.95644,316.8653 C 391.29185,317.14239 391.75487,317.28093 392.3455,317.28093 C 393.08195,317.28093 393.70174,317.01843 394.20488,316.49343 C 394.70799,315.96114 394.95955,315.2976 394.95956,314.5028 L 394.95956,314.05436 L 392.92519,314.05436 M 398.908,312.5778 L 398.908,319.56686 L 394.95956,319.56686 L 394.95956,317.75124 C 394.43456,318.49499 393.84393,319.03822 393.18769,319.38093 C 392.53143,319.71634 391.733,319.88405 390.79238,319.88405 C 389.52362,319.88405 388.49185,319.51582 387.69706,318.77936 C 386.90956,318.03562 386.51581,317.07312 386.51581,315.89186 C 386.51581,314.45541 387.008,313.40177 387.99238,312.73093 C 388.98404,312.0601 390.53716,311.72468 392.65175,311.72468 L 394.95956,311.72468 L 394.95956,311.41843 C 394.95955,310.79864 394.71528,310.34656 394.22675,310.06218 C 393.7382,309.77052 392.97622,309.62469 391.94081,309.62468 C 391.10227,309.62469 390.32206,309.70858 389.60019,309.87624 C 388.87831,310.04396 388.20748,310.29552 387.58769,310.63093 L 387.58769,307.64499 C 388.42623,307.44083 389.26841,307.28771 390.11425,307.18561 C 390.96008,307.07625 391.80591,307.02156 392.65175,307.02155 C 394.86112,307.02156 396.45434,307.45906 397.43144,308.33405 C 398.4158,309.20177 398.90799,310.61635 398.908,312.5778"
d="m 392.92519,314.05436 c -0.81667,1e-5 -1.43282,0.13855 -1.84844,0.41563 c -0.40834,0.27709 -0.6125,0.68542 -0.6125,1.225 c 0,0.49584 0.16406,0.88594 0.49219,1.17031 c 0.33541,0.27709 0.79843,0.41563 1.38906,0.41563 c 0.73645,0 1.35624,-0.2625 1.85938,-0.7875 c 0.50311,-0.53229 0.75467,-1.19583 0.75468,-1.99063 l 0,-0.44844 l -2.03437,0 m 5.98281,-1.47656 l 0,6.98906 l -3.94844,0 l 0,-1.81562 c -0.525,0.74375 -1.11563,1.28698 -1.77187,1.62969 c -0.65626,0.33541 -1.45469,0.50312 -2.39531,0.50312 c -1.26876,0 -2.30053,-0.36823 -3.09532,-1.10469 c -0.7875,-0.74374 -1.18125,-1.70624 -1.18125,-2.8875 c 0,-1.43645 0.49219,-2.49009 1.47657,-3.16093 c 0.99166,-0.67083 2.54478,-1.00625 4.65937,-1.00625 l 2.30781,0 l 0,-0.30625 c -1e-5,-0.61979 -0.24428,-1.07187 -0.73281,-1.35625 c -0.48855,-0.29166 -1.25053,-0.43749 -2.28594,-0.4375 c -0.83854,10e-6 -1.61875,0.0839 -2.34062,0.25156 c -0.72188,0.16772 -1.39271,0.41928 -2.0125,0.75469 l 0,-2.98594 c 0.83854,-0.20416 1.68072,-0.35728 2.52656,-0.45938 c 0.84583,-0.10936 1.69166,-0.16405 2.5375,-0.16406 c 2.20937,1e-5 3.80259,0.43751 4.77969,1.3125 c 0.98436,0.86772 1.47655,2.2823 1.47656,4.24375"
inkscape:connector-curvature="0" />
<path
id="path13916-6-8"
d="M 402.57206,302.54811 L 406.48769,302.54811 L 406.48769,319.56686 L 402.57206,319.56686 L 402.57206,302.54811"
d="m 402.57206,302.54811 l 3.91563,0 l 0,17.01875 l -3.91563,0 l 0,-17.01875"
inkscape:connector-curvature="0" />
</g>
<path
id="path22050-3"
d="M 397.284,248.51434 L 430.71887,248.51434"
d="m 397.284,248.51434 l 33.43487,0"
inkscape:connector-curvature="0"
style="fill:none;stroke:#7a00ff;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
style="display:inline;fill:none;stroke:#7a00ff;stroke-width:5.61390018;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
sodipodi:nodetypes="cc" />
</g>
</g>
@ -18306,6 +18445,126 @@
id="tspan11335">Satellite</tspan></text>
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer19"
inkscape:label="nano-srxl"
style="display:none"
sodipodi:insensitive="true">
<g
style="display:inline"
id="nano-srxl"
transform="matrix(-0.4,0,0,-0.4,1078.3424,590.20822)">
<path
id="path9857-8-8-1-1"
d="m 1430.6302,1592 c -5.97,64.9 57.0596,195.8293 232.2275,97.9523"
stroke-miterlimit="4"
inkscape:connector-curvature="0"
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
style="fill:#cccccc;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 1392.571,1323.8556 l 0,-171.0219"
id="path8856-5-1-7-1-9-5-4-3" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 1362.571,1323.8556 l 0,-171.0209"
id="path8856-1-2-1-9-0" />
<path
sodipodi:nodetypes="cc"
style="fill:#cccccc;stroke:#000000;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 1347.571,1323.8556 l 0,-171.0209"
id="path8856-1-5-7-7-2-9" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
stroke-miterlimit="4"
d="m 1308.744,1592 c 5.97,64.9 -57.0596,195.8293 -232.2275,97.9523"
id="path21749" />
<rect
rx="11.5"
id="rect8853-6-8-6-6"
style="color:#000000;fill:url(#linearGradient27052);fill-rule:nonzero;stroke:#000000;stroke-width:5.76999998;stroke-miterlimit:4;stroke-dasharray:none;enable-background:accumulate"
ry="11.5"
height="272"
width="237"
stroke-miterlimit="4"
y="1320"
x="1250" />
<g
style="font-style:normal;font-weight:normal;font-size:100px;line-height:125%;font-family:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000"
id="text4849-5-9-2"
transform="matrix(-1,0,0,-1,2737,2914.5)">
<path
d="m 1337.2402,1484.8574 l 0,3.8477 q -2.2461,-1.0742 -4.2382,-1.6016 q -1.9922,-0.5273 -3.8477,-0.5273 q -3.2227,0 -4.9805,1.25 q -1.7383,1.25 -1.7383,3.5547 q 0,1.9336 1.1524,2.9296 q 1.1719,0.9766 4.4141,1.5821 l 2.3828,0.4883 q 4.414,0.8398 6.5039,2.9687 q 2.1093,2.1094 2.1093,5.6641 q 0,4.2383 -2.8515,6.4258 q -2.832,2.1875 -8.3203,2.1875 q -2.0703,0 -4.4141,-0.4688 q -2.3242,-0.4687 -4.8242,-1.3867 l 0,-4.0625 q 2.4023,1.3476 4.707,2.0312 q 2.3047,0.6836 4.5313,0.6836 q 3.3789,0 5.2148,-1.3281 q 1.836,-1.3281 1.836,-3.7891 q 0,-2.1484 -1.3282,-3.3593 q -1.3086,-1.211 -4.3164,-1.8164 l -2.4023,-0.4688 q -4.4141,-0.8789 -6.3867,-2.7539 q -1.9727,-1.875 -1.9727,-5.2148 q 0,-3.8672 2.7148,-6.0938 q 2.7344,-2.2266 7.5196,-2.2266 q 2.0508,0 4.1797,0.3711 q 2.1289,0.3711 4.3554,1.1133 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21770"
inkscape:connector-curvature="0" />
<path
d="m 1358.9785,1499.3887 q 1.2695,0.4297 2.461,1.8359 q 1.2109,1.4063 2.4218,3.8672 l 4.0039,7.9687 l -4.2382,0 l -3.7305,-7.4804 q -1.4453,-2.9297 -2.8125,-3.8867 q -1.3477,-0.9571 -3.6914,-0.9571 l -4.2969,0 l 0,12.3242 l -3.9453,0 l 0,-29.1601 l 8.9062,0 q 5,0 7.461,2.0898 q 2.4609,2.0899 2.4609,6.3086 q 0,2.7539 -1.289,4.5703 q -1.2696,1.8164 -3.711,2.5196 z m -9.8828,-12.2461 l 0,10.3515 l 4.9609,0 q 2.8516,0 4.2969,-1.3086 q 1.4649,-1.3281 1.4649,-3.8867 q 0,-2.5586 -1.4649,-3.8476 q -1.4453,-1.3086 -4.2969,-1.3086 l -4.9609,0 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21772"
inkscape:connector-curvature="0" />
<path
d="m 1371.5566,1483.9004 l 4.2383,0 l 7.2461,10.8398 l 7.2852,-10.8398 l 4.2383,0 l -9.375,14.0039 l 10,15.1562 l -4.2383,0 l -8.2032,-12.4023 l -8.2617,12.4023 l -4.2578,0 l 10.4102,-15.5664 l -9.0821,-13.5937 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21774"
inkscape:connector-curvature="0" />
<path
d="m 1400.3848,1483.9004 l 3.9453,0 l 0,25.8398 l 14.1992,0 l 0,3.3203 l -18.1445,0 l 0,-29.1601 z"
style="font-size:40px;text-align:center;text-anchor:middle;fill:#ffffff"
id="path21776"
inkscape:connector-curvature="0" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:37.7733078px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text20525"
transform="matrix(-1,0,0,-1,2737.0002,2904.5)">
<path
d="m 1264.1993,1413.0389 l 0,-27.0389 l 8.1707,0 l 4.9061,18.444 l 4.8507,-18.444 l 8.1892,0 l 0,27.0389 l -5.0721,0 l 0,-21.2843 l -5.3672,21.2843 l -5.2566,0 l -5.3487,-21.2843 l 0,21.2843 l -5.0721,0 z"
id="path21779"
inkscape:connector-curvature="0" />
<path
d="m 1295.7385,1386 l 5.4594,0 l 0,14.6446 q 0,3.4859 0.2029,4.5188 q 0.3505,1.6599 1.66,2.6743 q 1.328,0.996 3.615,0.996 q 2.324,0 3.5044,-0.9406 q 1.1804,-0.9591 1.4202,-2.3424 q 0.2397,-1.3833 0.2397,-4.5926 l 0,-14.9581 l 5.4595,0 l 0,14.2019 q 0,4.8692 -0.4427,6.8796 q -0.4427,2.0104 -1.6415,3.3937 q -1.1804,1.3833 -3.1724,2.2133 q -1.9919,0.8115 -5.2012,0.8115 q -3.8732,0 -5.8836,-0.8853 q -1.992,-0.9037 -3.154,-2.3239 q -1.1619,-1.4386 -1.5308,-3.0064 q -0.5349,-2.3239 -0.5349,-6.8612 l 0,-14.4232 z"
id="path21781"
inkscape:connector-curvature="0" />
<path
d="m 1323.2201,1413.0389 l 0,-26.8175 l 5.4594,0 l 0,22.2619 l 13.5748,0 l 0,4.5556 l -19.0342,0 z"
id="path21783"
inkscape:connector-curvature="0" />
<path
d="m 1349.4474,1413.0389 l 0,-22.4647 l -8.0231,0 l 0,-4.5742 l 21.4873,0 l 0,4.5742 l -8.0047,0 l 0,22.4647 l -5.4595,0 z"
id="path21785"
inkscape:connector-curvature="0" />
<path
d="m 1366.213,1413.0389 l 0,-27.0389 l 5.4595,0 l 0,27.0389 l -5.4595,0 z"
id="path21787"
inkscape:connector-curvature="0" />
<path
d="m 1376.8552,1413.0389 l 0,-27.0389 l 8.7609,0 q 4.9799,0 6.4923,0.4058 q 2.3239,0.6087 3.8917,2.6559 q 1.5677,2.0289 1.5677,5.2566 q 0,2.4899 -0.9037,4.1868 q -0.9038,1.6968 -2.3055,2.6743 q -1.3833,0.9591 -2.822,1.2727 q -1.955,0.3873 -5.6623,0.3873 l -3.5597,0 l 0,10.1995 l -5.4594,0 z m 5.4594,-22.4647 l 0,7.6727 l 2.988,0 q 3.2277,0 4.3159,-0.4243 q 1.0882,-0.4242 1.6968,-1.3279 q 0.6271,-0.9038 0.6271,-2.1026 q 0,-1.4756 -0.8669,-2.4346 q -0.8668,-0.9591 -2.1948,-1.1989 q -0.9775,-0.1844 -3.9286,-0.1844 l -2.6375,0 z"
id="path21789"
inkscape:connector-curvature="0" />
<path
d="m 1402.2342,1413.0389 l 0,-26.8175 l 5.4594,0 l 0,22.2619 l 13.5748,0 l 0,4.5556 l -19.0342,0 z"
id="path21791"
inkscape:connector-curvature="0" />
<path
d="m 1425.1785,1413.0389 l 0,-27.0389 l 20.0486,0 l 0,4.5742 l -14.5892,0 l 0,5.9943 l 13.5748,0 l 0,4.5556 l -13.5748,0 l 0,7.3592 l 15.1057,0 l 0,4.5556 l -20.5651,0 z"
id="path21793"
inkscape:connector-curvature="0" />
<path
d="m 1447.6617,1413.0389 l 9.2405,-14.1096 L 1448.5286,1386 l 6.3816,0 l 5.4226,8.6872 l 5.3118,-8.6872 l 6.3263,0 l -8.4104,13.1322 l 9.2404,13.9067 l -6.5845,0 l -5.9943,-9.3511 l -6.0128,9.3511 l -6.5476,0 z"
id="path21795"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer4"
@ -18526,7 +18785,7 @@
inkscape:groupmode="layer"
id="layer3"
inkscape:label="nano-ppm"
style="display:inline">
style="display:none">
<g
id="nano-ppm"
transform="translate(-4,0)">
@ -18640,44 +18899,44 @@
id="text20057">
<path
d="m 442.45671,358.54608 l 0,-18.587 l 3.75291,0 l 0,18.587 l -3.75291,0 z"
style=""
id="path21266" />
id="path21266"
inkscape:connector-curvature="0" />
<path
d="m 461.99462,358.54608 l -3.56272,0 l 0,-6.87186 q 0,-2.18074 -0.22822,-2.81468 q -0.22821,-0.64662 -0.74804,-1.00162 q -0.50715,-0.355 -1.22984,-0.355 q -0.92554,0 -1.66091,0.50715 q -0.73536,0.50714 -1.0143,1.34394 q -0.26625,0.8368 -0.26625,3.09361 l 0,6.09846 l -3.56272,0 l 0,-13.4648 l 3.30915,0 l 0,1.97788 q 1.76234,-2.28217 4.43755,-2.28217 q 1.17912,0 2.15538,0.43108 q 0.97626,0.4184 1.47073,1.07769 q 0.50715,0.65929 0.69733,1.49609 q 0.20286,0.83679 0.20286,2.39628 l 0,8.36795 z"
style=""
id="path21268" />
id="path21268"
inkscape:connector-curvature="0" />
<path
d="m 465.51931,345.08128 l 3.32182,0 l 0,1.97788 q 0.64662,-1.0143 1.74966,-1.64823 q 1.10305,-0.63394 2.447,-0.63394 q 2.34556,0 3.98111,1.83842 q 1.63556,1.83841 1.63556,5.1222 q 0,3.37254 -1.64823,5.24899 q -1.64824,1.86377 -3.9938,1.86377 q -1.11573,0 -2.0286,-0.44375 q -0.90019,-0.44376 -1.9018,-1.52145 l 0,6.78311 l -3.56272,0 l 0,-18.587 z m 3.52468,6.50418 q 0,2.2695 0.90019,3.35987 q 0.90019,1.07769 2.19342,1.07769 q 1.24251,0 2.06663,-0.98894 q 0.82412,-1.00162 0.82412,-3.27111 q 0,-2.11735 -0.84948,-3.14433 q -0.84947,-1.02697 -2.10467,-1.02697 q -1.3059,0 -2.16806,1.0143 q -0.86215,1.00161 -0.86215,2.97949 z"
style=""
id="path21270" />
id="path21270"
inkscape:connector-curvature="0" />
<path
d="m 490.35692,358.54608 l 0,-2.01591 q -0.73537,1.07769 -1.93984,1.69894 q -1.1918,0.62126 -2.52307,0.62126 q -1.35662,0 -2.43431,-0.5959 q -1.0777,-0.5959 -1.55949,-1.67359 q -0.48179,-1.07769 -0.48179,-2.9795 l 0,-8.5201 l 3.56272,0 l 0,6.18722 q 0,2.84003 0.19018,3.48664 q 0.20286,0.63394 0.72269,1.0143 q 0.51983,0.36768 1.31859,0.36768 q 0.91286,0 1.63555,-0.49447 q 0.72269,-0.50714 0.98894,-1.24251 q 0.26625,-0.74804 0.26625,-3.63879 l 0,-5.68007 l 3.56273,0 l 0,13.4648 l -3.30915,0 z"
style=""
id="path21272" />
id="path21272"
inkscape:connector-curvature="0" />
<path
d="m 503.54279,345.08128 l 0,2.84003 l -2.43432,0 l 0,5.4265 q 0,1.64823 0.0634,1.92716 q 0.0761,0.26625 0.31696,0.44376 q 0.25358,0.1775 0.60858,0.1775 q 0.49447,0 1.4327,-0.34233 l 0.30429,2.76396 q -1.24252,0.53251 -2.81468,0.53251 q -0.96358,0 -1.73698,-0.31697 q -0.7734,-0.32964 -1.14109,-0.83679 q -0.355,-0.51983 -0.49447,-1.39466 q -0.11411,-0.62126 -0.11411,-2.51039 l 0,-5.87025 l -1.63555,0 l 0,-2.84003 l 1.63555,0 l 0,-2.67521 l 3.5754,-2.07931 l 0,4.75452 l 2.43432,0 z"
style=""
id="path21274" />
id="path21274"
inkscape:connector-curvature="0" />
<path
d="m 524.51339,355.23694 l 0,3.30914 l -12.48854,0 q 0.20286,-1.87645 1.21716,-3.55004 q 1.01429,-1.68627 4.00647,-4.46291 q 2.40896,-2.24413 2.95414,-3.04289 q 0.73537,-1.10305 0.73537,-2.18074 q 0,-1.1918 -0.64661,-1.82574 q -0.63394,-0.64661 -1.76235,-0.64661 q -1.11572,0 -1.77502,0.67197 q -0.65929,0.67197 -0.76072,2.23145 l -3.55004,-0.355 q 0.31697,-2.94146 1.99056,-4.22201 q 1.67359,-1.28055 4.18397,-1.28055 q 2.75129,0 4.32345,1.48341 q 1.57216,1.48341 1.57216,3.6895 q 0,1.2552 -0.45644,2.39628 q -0.44375,1.12841 -1.42001,2.37092 q -0.64662,0.82412 -2.33289,2.37092 q -1.68627,1.54681 -2.1427,2.05396 q -0.44376,0.50714 -0.72269,0.98894 l 7.07473,0 z"
style=""
id="path21276" />
id="path21276"
inkscape:connector-curvature="0" />
<path
d="m 454.10846,391.0036 l 0,-18.587 l 6.02239,0 q 3.42325,0 4.46291,0.27893 q 1.59752,0.4184 2.67521,1.82574 q 1.07769,1.39466 1.07769,3.61343 q 0,1.71163 -0.62126,2.87807 q -0.62125,1.16645 -1.58484,1.83842 q -0.9509,0.65929 -1.93984,0.87483 q -1.34394,0.26625 -3.89237,0.26625 l -2.44699,0 l 0,7.01133 l -3.7529,0 z m 3.7529,-15.44268 l 0,5.27435 l 2.05395,0 q 2.21878,0 2.96682,-0.29161 q 0.74805,-0.29161 1.16645,-0.91287 q 0.43107,-0.62125 0.43107,-1.44537 q 0,-1.0143 -0.5959,-1.67359 q -0.5959,-0.6593 -1.50877,-0.82412 q -0.67197,-0.12679 -2.70056,-0.12679 l -1.81306,0 z"
style=""
id="path21278" />
id="path21278"
inkscape:connector-curvature="0" />
<path
d="m 471.42759,375.71307 l 0,-3.29647 l 3.56272,0 l 0,3.29647 l -3.56272,0 z m 0,15.29053 l 0,-13.4648 l 3.56272,0 l 0,13.4648 l -3.56272,0 z"
style=""
id="path21280" />
id="path21280"
inkscape:connector-curvature="0" />
<path
d="m 490.87675,391.0036 l -3.56272,0 l 0,-6.87186 q 0,-2.18074 -0.22822,-2.81468 q -0.22822,-0.64661 -0.74805,-1.00162 q -0.50714,-0.355 -1.22983,-0.355 q -0.92555,0 -1.66091,0.50715 q -0.73537,0.50715 -1.0143,1.34394 q -0.26625,0.8368 -0.26625,3.09361 l 0,6.09846 l -3.56272,0 l 0,-13.4648 l 3.30914,0 l 0,1.97788 q 1.76234,-2.28217 4.43755,-2.28217 q 1.17912,0 2.15539,0.43108 q 0.97626,0.4184 1.47073,1.07769 q 0.50715,0.6593 0.69733,1.49609 q 0.20286,0.8368 0.20286,2.39628 l 0,8.36795 z"
style=""
id="path21282" />
id="path21282"
inkscape:connector-curvature="0" />
<path
d="m 507.92962,391.0036 l 0,-3.74022 l -7.60723,0 l 0,-3.11896 l 8.06367,-11.80389 l 2.99217,0 l 0,11.79121 l 2.30753,0 l 0,3.13164 l -2.30753,0 l 0,3.74022 l -3.44861,0 z m 0,-6.87186 l 0,-6.35204 l -4.27273,6.35204 l 4.27273,0 z"
style=""
id="path21284" />
id="path21284"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
@ -20060,7 +20319,7 @@
inkscape:groupmode="layer"
id="layer36"
inkscape:label="revo-OPGPS-v9"
style="display:none"
style="display:inline"
sodipodi:insensitive="true">
<g
id="revo-OPGPS-v9">
@ -20406,9 +20665,9 @@
<polygon
transform="matrix(1.5711089,0,0,1.5372108,235.33403,522.2062)"
id="polygon8706-1"
points="186.083,4.74 191.036,13.319 186.194,11.031 181.129,13.319 " />
points="186.194,11.031 181.129,13.319 186.083,4.74 191.036,13.319 " />
<polygon
points="181.129,13.319 186.083,4.74 191.036,13.319 186.194,11.031 "
points="191.036,13.319 186.194,11.031 181.129,13.319 186.083,4.74 "
id="polygon10148"
transform="matrix(1.5711089,0,0,1.5372108,357.19879,522.2062)" />
<g
@ -21674,7 +21933,7 @@
inkscape:groupmode="layer"
id="layer39"
inkscape:label="nano-OPGPS-v9"
style="display:inline"
style="display:none"
sodipodi:insensitive="true">
<g
id="nano-OPGPS-v9">
@ -21994,13 +22253,13 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscsscssscssccscccccscsssscscssscsssscssssssssscsscsscccccscscscssscccsccssssssccsccsccssssccccccccccsccccsccscssssssssccssssscsccscsscsscccsccsscccsscscsssccccccscccsccssscscsscssscssscssscsscssccsscccsscssscsssssscsssssssssssssscscsccsssscsssssscccsscccsssssssscssscssssscsssscccssccsccscssscccsssssssssccssssccsscsscssssssssscccsccssscccssscscccscsssscssscccssssssscccssssscsssscccccsssscsscscsssccccccsccs" />
<polygon
points="181.129,13.319 186.083,4.74 191.036,13.319 186.194,11.031 "
points="191.036,13.319 186.194,11.031 181.129,13.319 186.083,4.74 "
id="polygon8706-1-5"
transform="matrix(1.5711089,0,0,1.5372108,223.37514,520.91932)" />
<polygon
transform="matrix(1.5711089,0,0,1.5372108,345.23991,520.91932)"
id="polygon10148-2"
points="186.194,11.031 181.129,13.319 186.083,4.74 191.036,13.319 " />
points="186.083,4.74 191.036,13.319 186.194,11.031 181.129,13.319 " />
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:condensed;font-size:12px;line-height:125%;font-family:'Arial Narrow';-inkscape-font-specification:'Arial Narrow Bold Condensed';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="text10150-4"
@ -28759,7 +29018,7 @@
inkscape:groupmode="layer"
id="layer15"
inkscape:label="revo"
style="display:none">
style="display:inline">
<g
style="display:inline"
transform="translate(-1.4348189,-1.0188297)"
@ -32045,10 +32304,10 @@
cx="151.73199" />
<polygon
id="polygon8706"
points="186.083,4.74 191.036,13.319 186.194,11.031 181.129,13.319 " />
points="186.194,11.031 181.129,13.319 186.083,4.74 191.036,13.319 " />
<polygon
id="polygon8708"
points="36.083,4.74 41.036,13.319 36.194,11.031 31.129,13.319 " />
points="36.194,11.031 31.129,13.319 36.083,4.74 41.036,13.319 " />
<g
id="g8710">
<circle
@ -32230,7 +32489,7 @@
inkscape:connector-curvature="0" />
<path
id="path29449-6"
d="m 1399.5228,690.81375 -1.6886,0.18624 c -0.041,-0.34765 -0.149,-0.60425 -0.3228,-0.76981 -0.1739,-0.16555 -0.3994,-0.24832 -0.6767,-0.24833 -0.3684,10e-6 -0.6809,0.16556 -0.9375,0.49665 -0.2524,0.33112 -0.4118,1.02022 -0.478,2.06733 0.4346,-0.5132 0.9747,-0.76981 1.6203,-0.76981 0.7285,0 1.3514,0.2773 1.8687,0.8319 0.5215,0.5546 0.7822,1.27061 0.7822,2.14803 0,0.93123 -0.2731,1.67829 -0.8194,2.24116 -0.5464,0.56288 -1.2479,0.84431 -2.1046,0.84431 -0.9188,0 -1.6742,-0.35593 -2.266,-1.0678 -0.5919,-0.71602 -0.8878,-1.88729 -0.8878,-3.51384 0,-1.66793 0.3084,-2.87025 0.925,-3.60697 0.6167,-0.73669 1.4176,-1.10505 2.4026,-1.10505 0.6912,0 1.2623,0.19453 1.7135,0.58357 0.4552,0.38491 0.745,0.94572 0.8691,1.68242 m -3.9546,3.80562 c 0,0.56702 0.1304,1.00573 0.3911,1.31614 0.2608,0.30627 0.5588,0.45941 0.894,0.45941 0.3228,0 0.5918,-0.12624 0.8071,-0.3787 0.2152,-0.25247 0.3228,-0.66635 0.3228,-1.24164 0,-0.59185 -0.1159,-1.02435 -0.3477,-1.29752 -0.2317,-0.27729 -0.5215,-0.41594 -0.8691,-0.41595 -0.3353,10e-6 -0.6188,0.13245 -0.8505,0.39733 -0.2318,0.26075 -0.3477,0.64772 -0.3477,1.16093"
d="m 1399.5228,690.81375 l -1.6886,0.18624 c -0.041,-0.34765 -0.149,-0.60425 -0.3228,-0.76981 c -0.1739,-0.16555 -0.3994,-0.24832 -0.6767,-0.24833 c -0.3684,10e-6 -0.6809,0.16556 -0.9375,0.49665 c -0.2524,0.33112 -0.4118,1.02022 -0.478,2.06733 c 0.4346,-0.5132 0.9747,-0.76981 1.6203,-0.76981 c 0.7285,0 1.3514,0.2773 1.8687,0.8319 c 0.5215,0.5546 0.7822,1.27061 0.7822,2.14803 c 0,0.93123 -0.2731,1.67829 -0.8194,2.24116 c -0.5464,0.56288 -1.2479,0.84431 -2.1046,0.84431 c -0.9188,0 -1.6742,-0.35593 -2.266,-1.0678 c -0.5919,-0.71602 -0.8878,-1.88729 -0.8878,-3.51384 c 0,-1.66793 0.3084,-2.87025 0.925,-3.60697 c 0.6167,-0.73669 1.4176,-1.10505 2.4026,-1.10505 c 0.6912,0 1.2623,0.19453 1.7135,0.58357 c 0.4552,0.38491 0.745,0.94572 0.8691,1.68242 m -3.9546,3.80562 c 0,0.56702 0.1304,1.00573 0.3911,1.31614 c 0.2608,0.30627 0.5588,0.45941 0.894,0.45941 c 0.3228,0 0.5918,-0.12624 0.8071,-0.3787 c 0.2152,-0.25247 0.3228,-0.66635 0.3228,-1.24164 c 0,-0.59185 -0.1159,-1.02435 -0.3477,-1.29752 c -0.2317,-0.27729 -0.5215,-0.41594 -0.8691,-0.41595 c -0.3353,10e-6 -0.6188,0.13245 -0.8505,0.39733 c -0.2318,0.26075 -0.3477,0.64772 -0.3477,1.16093"
inkscape:connector-curvature="0" />
</g>
</g>
@ -32239,7 +32498,7 @@
inkscape:groupmode="layer"
id="layer18"
inkscape:label="nano"
style="display:inline">
style="display:none">
<g
id="controller-nano"
transform="translate(-726.76021,-465.53821)">
@ -32900,7 +33159,7 @@
inkscape:transform-center-y="95.699765"
inkscape:transform-center-x="-66.090998"
transform="matrix(0,-1.0887723,1.065281,0,1247.1905,860.25683)"
points="186.194,11.031 181.129,13.319 186.083,4.74 191.036,13.319 "
points="186.083,4.74 191.036,13.319 186.194,11.031 181.129,13.319 "
id="polygon8706-0" />
<g
transform="translate(726.6625,-66.912713)"
@ -40090,7 +40349,6 @@
<g
id="g3806-3-8">
<circle
d="m 586.448,613.99402 c 0,1.51878 -1.23122,2.75 -2.75,2.75 -1.51879,0 -2.75,-1.23122 -2.75,-2.75 0,-1.51878 1.23121,-2.75 2.75,-2.75 1.51878,0 2.75,1.23122 2.75,2.75 z"
sodipodi:ry="2.75"
sodipodi:rx="2.75"
sodipodi:cy="613.99402"

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@ -96,10 +96,15 @@ int SetupWizard::nextId() const
{
switch (getControllerType()) {
case CONTROLLER_REVO:
case CONTROLLER_NANO:
case CONTROLLER_DISCOVERYF4:
return PAGE_INPUT;
case CONTROLLER_NANO:
if (isRestartNeeded()) {
reboot();
}
return PAGE_INPUT;
case CONTROLLER_OPLINK:
default:
return PAGE_NOTYETIMPLEMENTED;

View File

@ -159,6 +159,9 @@ void VehicleConfigurationHelper::applyHardwareConfiguration()
case VehicleConfigurationSource::INPUT_DSM:
data.RM_FlexiPort = HwSettings::RM_FLEXIPORT_DSM;
break;
case VehicleConfigurationSource::INPUT_SRXL:
data.RM_FlexiPort = HwSettings::RM_FLEXIPORT_SRXL;
break;
default:
break;
}
@ -805,6 +808,9 @@ void VehicleConfigurationHelper::applyManualControlDefaults()
case VehicleConfigurationSource::INPUT_DSM:
channelType = ManualControlSettings::CHANNELGROUPS_DSMFLEXIPORT;
break;
case VehicleConfigurationSource::INPUT_SRXL:
channelType = ManualControlSettings::CHANNELGROUPS_SRXL;
break;
default:
break;
}

View File

@ -66,7 +66,7 @@ public:
GROUNDVEHICLE_MOTORCYCLE, GROUNDVEHICLE_CAR, GROUNDVEHICLE_DIFFERENTIAL };
enum ESC_TYPE { ESC_ONESHOT, ESC_SYNCHED, ESC_RAPID, ESC_STANDARD, ESC_UNKNOWN };
enum SERVO_TYPE { SERVO_ANALOG, SERVO_DIGITAL, SERVO_UNKNOWN };
enum INPUT_TYPE { INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN };
enum INPUT_TYPE { INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_SRXL, INPUT_UNKNOWN };
enum AIRSPEED_TYPE { AIRSPEED_ESTIMATE, AIRSPEED_EAGLETREE, AIRSPEED_MS4525, AIRSPEED_DISABLED };
enum GPS_TYPE { GPS_PLATINUM, GPS_UBX, GPS_NMEA, GPS_DISABLED };
enum RADIO_SETTING { RADIO_TELEMETRY, RADIO_DISABLED };

View File

@ -54,5 +54,7 @@
<file>resources/connected.png</file>
<file>resources/bttn-oneshot-dwn.png</file>
<file>resources/bttn-oneshot-up.png</file>
<file>resources/bttn-srxl-down.png</file>
<file>resources/bttn-srxl-up.png</file>
</qresource>
</RCC>

View File

@ -1008,6 +1008,14 @@ void UploaderGadgetWidget::startAutoUpdate()
void UploaderGadgetWidget::startAutoUpdateErase()
{
startAutoUpdate(true);
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectUtilManager *utilMngr = pm->getObject<UAVObjectUtilManager>();
int id = utilMngr->getBoardModel();
if (id == 0x905) {
systemReset();
}
}
void UploaderGadgetWidget::startAutoUpdate(bool erase)

View File

@ -5,8 +5,8 @@
<field name="ThrustExp" units="" type="uint8" elements="1" defaultvalue="128" />
<field name="ThrustRate" units="m/s" type="float" elements="1" defaultvalue="5" />
<field name="ThrustLimits" units="" type="float" elementnames="Min,Neutral,Max" defaultvalue="0.2, 0.5, 0.9"/>
<field name="VerticalPosP" units="(m/s)/m" type="float" elements="1" defaultvalue="0.3"/>
<field name="VerticalVelPID" units="(m/s^2)/(m/s)" type="float" elementnames="Kp,Ki,Kd,Beta" defaultvalue="0.15, 0.25, 0.005, 0.95"/>
<field name="VerticalPosP" units="(m/s)/m" type="float" elements="1" defaultvalue="0.7"/>
<field name="VerticalVelPID" units="(m/s^2)/(m/s)" type="float" elementnames="Kp,Ki,Kd,Beta" defaultvalue="0.3, 1.0, 0.0001, 0.9"/>
<access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
<telemetryflight acked="true" updatemode="onchange" period="0"/>

View File

@ -1,10 +1,6 @@
<xml>
<object name="HwSettings" singleinstance="true" settings="true" category="System">
<description>Selection of optional hardware configurations.</description>
<field name="CC_RcvrPort" units="function" type="enum" elements="1" options="Disabled+OneShot,PWM+NoOneShot,PPM+NoOneShot,PPM+PWM+NoOneShot,PPM+Outputs+NoOneShot,PPM_PIN8+OneShot, Outputs+OneShot" defaultvalue="PWM+NoOneShot"/>
<field name="CC_MainPort" units="function" type="enum" elements="1" options="Disabled,Telemetry,GPS,S.Bus,DSM,DebugConsole,ComBridge,OsdHk" defaultvalue="Telemetry"/>
<field name="CC_FlexiPort" units="function" type="enum" elements="1" options="Disabled,Telemetry,GPS,I2C,PPM,DSM,DebugConsole,ComBridge,OsdHk" defaultvalue="Disabled"/>
<field name="RV_RcvrPort" units="function" type="enum" elements="1" options="Disabled,PWM,PPM,PPM+Outputs,Outputs" defaultvalue="PWM"/>
<field name="RV_AuxPort" units="function" type="enum" elements="1" options="Disabled,Telemetry,DSM,ComAux,ComBridge,OsdHk" defaultvalue="Disabled"/>
<field name="RV_AuxSBusPort" units="function" type="enum" elements="1" options="Disabled,S.Bus,DSM,ComAux,ComBridge,OsdHk" defaultvalue="Disabled"/>
@ -28,9 +24,7 @@
<field name="ADCRouting" units="" type="enum" elementnames="adc0,adc1,adc2,adc3,adc4,adc5,adc6,adc7" options="Disabled,BatteryVoltage,BatteryCurrent,AnalogAirspeed,Generic" defaultvalue="Disabled"/>
<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,FlexiIOPin3,FlexiIOPin4,Disabled" defaultvalue="Disabled"
limits="%0905NE:ServoOut2:ServoOut3:ServoOut4:ServoOut5:ServoOut6:FlexiIOPin3:FlexiIOPin4,\
%0401NE:ServoOut1:ServoOut2:ServoOut3:ServoOut4:ServoOut5:ServoOut6:FlexiIOPin3:FlexiIOPin4,\
%0402NE:ServoOut1:ServoOut2:ServoOut3:ServoOut4:ServoOut5:ServoOut6:FlexiIOPin3:FlexiIOPin4;"
limits="%0905NE:ServoOut2:ServoOut3:ServoOut4:ServoOut5:ServoOut6:FlexiIOPin3:FlexiIOPin4;"
/>
<access gcs="readwrite" flight="readwrite"/>

View File

@ -1,7 +1,7 @@
<xml>
<object name="StatusVtolAutoTakeoff" singleinstance="true" settings="false" category="Navigation">
<description>Status of a AutoTakeoff autopilot</description>
<field name="State" units="" type="enum" elements="1" options="Inactive,CheckState,SlowStart,ThrustUp,Takeoff,Hold,ThrustDown,ThrustOff,Disarmed, Abort" default="0"/>
<field name="State" units="" type="enum" elements="1" options="Inactive,CheckState,SlowStart,ThrustUp,Takeoff,Hold,ThrustDown,ThrustOff,Disarmed" default="0"/>
<field name="AltitudeAtState" units="m" type="float" elements="10" default="0"/>
<field name="StateExitReason" units="" type="enum" elements="10" options="None,ArrivedAtAlt,ZeroThrust,PositionError,Timeout" default="0"/>
<field name="AltitudeState" units="" type="enum" elements="1" options="High,Low" default="0"/>

View File

@ -2,7 +2,7 @@
<object name="StatusVtolLand" singleinstance="true" settings="false" category="Navigation">
<description>Status of a Vtol landing sequence</description>
<field name="State" units="" type="enum" elements="1" options="Inactive,InitAltHold,WtgForDescentRate,AtDescentRate,WtgForGroundEffect,
GroundEffect,ThrustDown,ThrustOff,Disarmed, Abort" default="0"/>
GroundEffect,ThrustDown,ThrustOff,Disarmed" default="0"/>
<field name="AltitudeAtState" units="m" type="float" elements="10" default="0"/>
<field name="StateExitReason" units="" type="enum" elements="10" options="None,DescentRateOk,OnGround,BounceVelocity,BounceAccel,LowDescentRate,ZeroThrust,PositionError,Timeout" default="0"/>
<field name="targetDescentRate" units="m" type="float" elements="1"/>

View File

@ -18,14 +18,15 @@
<field name="EmergencyFallbackAttitude" units="deg" type="float" elementnames="Roll,Pitch" defaultvalue="0,-20.0"/>
<field name="EmergencyFallbackYawRate" units="(deg/s)/deg" type="float" elementnames="kP,Max" defaultvalue="2.0, 30.0"/>
<field name="MaxRollPitch" units="deg" type="float" elements="1" defaultvalue="25"/>
<field name="VelocityRoamMaxRollPitch" units="deg" type="float" elements="1" defaultvalue="20"/>
<field name="UpdatePeriod" units="ms" type="uint16" elements="1" defaultvalue="50"/>
<field name="UpdatePeriod" units="ms" type="uint16" elements="1" defaultvalue="20"/>
<field name="BrakeRate" units="m/s2" type="float" elements="1" defaultvalue="2.5"/>
<field name="BrakeMaxPitch" units="deg" type="float" elements="1" defaultvalue="25"/>
<field name="BrakeHorizontalVelPID" units="deg/(m/s)" type="float" elementnames="Kp,Ki,Kd,Beta" defaultvalue="18.0, 0.0, 0.001, 0.95"/>
<field name="BrakeVelocityFeedforward" units="deg/(m/s)" type="float" elements="1" defaultvalue="0"/>
<field name="LandVerticalVelPID" units="" type="float" elementnames="Kp,Ki,Kd,Beta" defaultvalue="0.42, 3.0, 0.02, 0.95"/>
<field name="AutoTakeoffVerticalVelPID" units="" type="float" elementnames="Kp,Ki,Kd,Beta" defaultvalue="0.42, 3.0, 0.02, 0.95"/>
<field name="VelocityRoamMaxRollPitch" units="deg" type="float" elements="1" defaultvalue="20"/>
<field name="VelocityRoamHorizontalVelPID" units="deg/(m/s)" type="float" elementnames="Kp,Ki,Kd,Beta" defaultvalue="12.0, 0.5, 0.001, 0.95"/>
<access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
<telemetryflight acked="true" updatemode="onchange" period="0"/>