mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-04-10 02:02:21 +02:00
Merge branch 'heli_improvements'
This commit is contained in:
commit
d7e08e5686
@ -140,6 +140,7 @@ endif
|
|||||||
|
|
||||||
## UAVOBJECTS
|
## UAVOBJECTS
|
||||||
ifndef TESTAPP
|
ifndef TESTAPP
|
||||||
|
SRC += $(OPUAVSYNTHDIR)/accessorydesired.c
|
||||||
SRC += $(OPUAVSYNTHDIR)/objectpersistence.c
|
SRC += $(OPUAVSYNTHDIR)/objectpersistence.c
|
||||||
SRC += $(OPUAVSYNTHDIR)/gcstelemetrystats.c
|
SRC += $(OPUAVSYNTHDIR)/gcstelemetrystats.c
|
||||||
SRC += $(OPUAVSYNTHDIR)/flighttelemetrystats.c
|
SRC += $(OPUAVSYNTHDIR)/flighttelemetrystats.c
|
||||||
|
@ -85,8 +85,8 @@
|
|||||||
#define AUXUART_BAUDRATE 19200
|
#define AUXUART_BAUDRATE 19200
|
||||||
|
|
||||||
/* Alarm Thresholds */
|
/* Alarm Thresholds */
|
||||||
#define HEAP_LIMIT_WARNING 350
|
#define HEAP_LIMIT_WARNING 220
|
||||||
#define HEAP_LIMIT_CRITICAL 250
|
#define HEAP_LIMIT_CRITICAL 150
|
||||||
#define CPULOAD_LIMIT_WARNING 80
|
#define CPULOAD_LIMIT_WARNING 80
|
||||||
#define CPULOAD_LIMIT_CRITICAL 95
|
#define CPULOAD_LIMIT_CRITICAL 95
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "openpilot.h"
|
#include "openpilot.h"
|
||||||
|
#include "accessorydesired.h"
|
||||||
#include "actuator.h"
|
#include "actuator.h"
|
||||||
#include "actuatorsettings.h"
|
#include "actuatorsettings.h"
|
||||||
#include "systemsettings.h"
|
#include "systemsettings.h"
|
||||||
@ -74,7 +75,6 @@ static int16_t scaleChannel(float value, int16_t max, int16_t min, int16_t neutr
|
|||||||
static void setFailsafe();
|
static void setFailsafe();
|
||||||
static float MixerCurve(const float throttle, const float* curve);
|
static float MixerCurve(const float throttle, const float* curve);
|
||||||
static bool set_channel(uint8_t mixer_channel, uint16_t value);
|
static bool set_channel(uint8_t mixer_channel, uint16_t value);
|
||||||
|
|
||||||
float ProcessMixer(const int index, const float curve1, const float curve2,
|
float ProcessMixer(const int index, const float curve1, const float curve2,
|
||||||
MixerSettingsData* mixerSettings, ActuatorDesiredData* desired,
|
MixerSettingsData* mixerSettings, ActuatorDesiredData* desired,
|
||||||
const float period);
|
const float period);
|
||||||
@ -200,7 +200,35 @@ static void actuatorTask(void* parameters)
|
|||||||
bool spinWhileArmed = MotorsSpinWhileArmed == ACTUATORSETTINGS_MOTORSSPINWHILEARMED_TRUE;
|
bool spinWhileArmed = MotorsSpinWhileArmed == ACTUATORSETTINGS_MOTORSSPINWHILEARMED_TRUE;
|
||||||
|
|
||||||
float curve1 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve1);
|
float curve1 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve1);
|
||||||
float curve2 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve2);
|
//The source for the secondary curve is selectable
|
||||||
|
float curve2 = 0;
|
||||||
|
AccessoryDesiredData accessory;
|
||||||
|
switch(mixerSettings.Curve2Source) {
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_THROTTLE:
|
||||||
|
curve2 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve2);
|
||||||
|
break;
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ROLL:
|
||||||
|
curve2 = MixerCurve(desired.Roll,mixerSettings.ThrottleCurve2);
|
||||||
|
break;
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_PITCH:
|
||||||
|
curve2 = MixerCurve(desired.Pitch,mixerSettings.ThrottleCurve2);
|
||||||
|
break;
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_YAW:
|
||||||
|
curve2 = MixerCurve(desired.Yaw,mixerSettings.ThrottleCurve2);
|
||||||
|
break;
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY0:
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY1:
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY2:
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY3:
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY4:
|
||||||
|
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY5:
|
||||||
|
if(AccessoryDesiredInstGet(mixerSettings.Curve2Source - MIXERSETTINGS_CURVE2SOURCE_ACCESSORY0,&accessory) == 0)
|
||||||
|
curve2 = MixerCurve(accessory.AccessoryVal,mixerSettings.ThrottleCurve2);
|
||||||
|
else
|
||||||
|
curve2 = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
for(int ct=0; ct < MAX_MIX_ACTUATORS; ct++)
|
for(int ct=0; ct < MAX_MIX_ACTUATORS; ct++)
|
||||||
{
|
{
|
||||||
if(mixers[ct].type == MIXERSETTINGS_MIXER1TYPE_DISABLED) {
|
if(mixers[ct].type == MIXERSETTINGS_MIXER1TYPE_DISABLED) {
|
||||||
@ -228,7 +256,22 @@ static void actuatorTask(void* parameters)
|
|||||||
(status[ct] < 0) )
|
(status[ct] < 0) )
|
||||||
status[ct] = 0;
|
status[ct] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If an accessory channel is selected for direct bypass mode
|
||||||
|
// In this configuration the accessory channel is scaled and mapped
|
||||||
|
// directly to output. Note: THERE IS NO SAFETY CHECK HERE FOR ARMING
|
||||||
|
// these also will not be updated in failsafe mode. I'm not sure what
|
||||||
|
// the correct behavior is since it seems domain specific. I don't love
|
||||||
|
// this code
|
||||||
|
if( (mixers[ct].type >= MIXERSETTINGS_MIXER1TYPE_ACCESSORY0) &&
|
||||||
|
(mixers[ct].type <= MIXERSETTINGS_MIXER1TYPE_ACCESSORY2))
|
||||||
|
{
|
||||||
|
if(AccessoryDesiredInstGet(mixers[ct].type - MIXERSETTINGS_MIXER1TYPE_ACCESSORY0,&accessory) == 0)
|
||||||
|
status[ct] = accessory.AccessoryVal;
|
||||||
|
else
|
||||||
|
status[ct] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
command.Channel[ct] = scaleChannel(status[ct],
|
command.Channel[ct] = scaleChannel(status[ct],
|
||||||
ChannelMax[ct],
|
ChannelMax[ct],
|
||||||
ChannelMin[ct],
|
ChannelMin[ct],
|
||||||
@ -452,8 +495,6 @@ static void actuator_update_rate(UAVObjEvent * ev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(ARCH_POSIX) || defined(ARCH_WIN32)
|
#if defined(ARCH_POSIX) || defined(ARCH_WIN32)
|
||||||
static bool set_channel(uint8_t mixer_channel, uint16_t value) {
|
static bool set_channel(uint8_t mixer_channel, uint16_t value) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "stabilizationdesired.h"
|
#include "stabilizationdesired.h"
|
||||||
#include "flighttelemetrystats.h"
|
#include "flighttelemetrystats.h"
|
||||||
#include "flightstatus.h"
|
#include "flightstatus.h"
|
||||||
|
#include "accessorydesired.h"
|
||||||
|
|
||||||
// Private constants
|
// Private constants
|
||||||
#if defined(PIOS_MANUAL_STACK_SIZE)
|
#if defined(PIOS_MANUAL_STACK_SIZE)
|
||||||
@ -170,6 +171,11 @@ static void manualControlTask(void *parameters)
|
|||||||
uint8_t disconnected_count = 0;
|
uint8_t disconnected_count = 0;
|
||||||
uint8_t connected_count = 0;
|
uint8_t connected_count = 0;
|
||||||
|
|
||||||
|
// For now manual instantiate extra instances of Accessory Desired. In future should be done dynamically
|
||||||
|
// this includes not even registering it if not used
|
||||||
|
AccessoryDesiredCreateInstance();
|
||||||
|
AccessoryDesiredCreateInstance();
|
||||||
|
|
||||||
// Make sure unarmed on power up
|
// Make sure unarmed on power up
|
||||||
ManualControlCommandGet(&cmd);
|
ManualControlCommandGet(&cmd);
|
||||||
FlightStatusGet(&flightStatus);
|
FlightStatusGet(&flightStatus);
|
||||||
@ -266,10 +272,26 @@ static void manualControlTask(void *parameters)
|
|||||||
cmd.Throttle = scaledChannel[settings.Throttle];
|
cmd.Throttle = scaledChannel[settings.Throttle];
|
||||||
flightMode = scaledChannel[settings.FlightMode];
|
flightMode = scaledChannel[settings.FlightMode];
|
||||||
|
|
||||||
// Set accessory channels
|
AccessoryDesiredData accessory;
|
||||||
cmd.Accessory1 = (settings.Accessory1 != MANUALCONTROLSETTINGS_ACCESSORY1_NONE) ? scaledChannel[settings.Accessory1] : 0;
|
// Set Accessory 0
|
||||||
cmd.Accessory2 = (settings.Accessory2 != MANUALCONTROLSETTINGS_ACCESSORY2_NONE) ? scaledChannel[settings.Accessory2] : 0;
|
if(settings.Accessory0 != MANUALCONTROLSETTINGS_ACCESSORY0_NONE) {
|
||||||
cmd.Accessory3 = (settings.Accessory3 != MANUALCONTROLSETTINGS_ACCESSORY3_NONE) ? scaledChannel[settings.Accessory3] : 0;
|
accessory.AccessoryVal = scaledChannel[settings.Accessory0];
|
||||||
|
if(AccessoryDesiredInstSet(0, &accessory) != 0)
|
||||||
|
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
|
||||||
|
}
|
||||||
|
// Set Accessory 1
|
||||||
|
if(settings.Accessory1 != MANUALCONTROLSETTINGS_ACCESSORY1_NONE) {
|
||||||
|
accessory.AccessoryVal = scaledChannel[settings.Accessory1];
|
||||||
|
if(AccessoryDesiredInstSet(1, &accessory) != 0)
|
||||||
|
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
|
||||||
|
}
|
||||||
|
// Set Accsesory 2
|
||||||
|
if(settings.Accessory2 != MANUALCONTROLSETTINGS_ACCESSORY2_NONE) {
|
||||||
|
accessory.AccessoryVal = scaledChannel[settings.Accessory2];
|
||||||
|
if(AccessoryDesiredInstSet(2, &accessory) != 0)
|
||||||
|
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
processFlightMode(&settings, flightMode);
|
processFlightMode(&settings, flightMode);
|
||||||
processArm(&cmd, &settings);
|
processArm(&cmd, &settings);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# (all architectures)
|
# (all architectures)
|
||||||
|
|
||||||
UAVOBJSRCFILENAMES =
|
UAVOBJSRCFILENAMES =
|
||||||
|
UAVOBJSRCFILENAMES += accessorydesired
|
||||||
UAVOBJSRCFILENAMES += actuatorcommand
|
UAVOBJSRCFILENAMES += actuatorcommand
|
||||||
UAVOBJSRCFILENAMES += actuatordesired
|
UAVOBJSRCFILENAMES += actuatordesired
|
||||||
UAVOBJSRCFILENAMES += actuatorsettings
|
UAVOBJSRCFILENAMES += actuatorsettings
|
||||||
|
@ -2738,6 +2738,7 @@
|
|||||||
65E6E09912E037C800058553 /* pios_adc_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_adc_priv.h; sourceTree = "<group>"; };
|
65E6E09912E037C800058553 /* pios_adc_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_adc_priv.h; sourceTree = "<group>"; };
|
||||||
65E8C743139A6D0900E1F979 /* pios_crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_crc.c; sourceTree = "<group>"; };
|
65E8C743139A6D0900E1F979 /* pios_crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_crc.c; sourceTree = "<group>"; };
|
||||||
65E8C745139A6D1A00E1F979 /* pios_crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_crc.h; sourceTree = "<group>"; };
|
65E8C745139A6D1A00E1F979 /* pios_crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_crc.h; sourceTree = "<group>"; };
|
||||||
|
65E8C788139AA2A800E1F979 /* accessorydesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = accessorydesired.xml; sourceTree = "<group>"; };
|
||||||
65E8EF1F11EEA61E00BBF654 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../OpenPilot/Makefile; sourceTree = SOURCE_ROOT; };
|
65E8EF1F11EEA61E00BBF654 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../OpenPilot/Makefile; sourceTree = SOURCE_ROOT; };
|
||||||
65E8EF2011EEA61E00BBF654 /* Makefile.posix */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Makefile.posix; path = ../../OpenPilot/Makefile.posix; sourceTree = SOURCE_ROOT; };
|
65E8EF2011EEA61E00BBF654 /* Makefile.posix */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Makefile.posix; path = ../../OpenPilot/Makefile.posix; sourceTree = SOURCE_ROOT; };
|
||||||
65E8EF5C11EEA61E00BBF654 /* alarms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = alarms.c; path = ../../OpenPilot/System/alarms.c; sourceTree = SOURCE_ROOT; };
|
65E8EF5C11EEA61E00BBF654 /* alarms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = alarms.c; path = ../../OpenPilot/System/alarms.c; sourceTree = SOURCE_ROOT; };
|
||||||
@ -7418,6 +7419,7 @@
|
|||||||
65C35E4F12EFB2F3004811C2 /* uavobjectdefinition */ = {
|
65C35E4F12EFB2F3004811C2 /* uavobjectdefinition */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
65E8C788139AA2A800E1F979 /* accessorydesired.xml */,
|
||||||
65C35E5012EFB2F3004811C2 /* actuatorcommand.xml */,
|
65C35E5012EFB2F3004811C2 /* actuatorcommand.xml */,
|
||||||
65C35E5112EFB2F3004811C2 /* actuatordesired.xml */,
|
65C35E5112EFB2F3004811C2 /* actuatordesired.xml */,
|
||||||
65C35E5212EFB2F3004811C2 /* actuatorsettings.xml */,
|
65C35E5212EFB2F3004811C2 /* actuatorsettings.xml */,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
define connect
|
define connect
|
||||||
target remote localhost:3333
|
target remote localhost:3333
|
||||||
monitor cortex_m3 vector_catch all
|
monitor cortex_m3 vector_catch all
|
||||||
file ./build/coptercontrol/CopterControl.elf
|
file ./build/fw_coptercontrol/fw_coptercontrol.elf
|
||||||
end
|
end
|
||||||
#monitor reset halt
|
#monitor reset halt
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ SOURCES += uavobject.cpp \
|
|||||||
OTHER_FILES += UAVObjects.pluginspec
|
OTHER_FILES += UAVObjects.pluginspec
|
||||||
|
|
||||||
# Add in all of the synthetic/generated uavobject files
|
# Add in all of the synthetic/generated uavobject files
|
||||||
HEADERS += $$UAVOBJECT_SYNTHETICS/ahrsstatus.h \
|
HEADERS += $$UAVOBJECT_SYNTHETICS/accessorydesired.h \
|
||||||
|
$$UAVOBJECT_SYNTHETICS/ahrsstatus.h \
|
||||||
$$UAVOBJECT_SYNTHETICS/ahrscalibration.h \
|
$$UAVOBJECT_SYNTHETICS/ahrscalibration.h \
|
||||||
$$UAVOBJECT_SYNTHETICS/baroaltitude.h \
|
$$UAVOBJECT_SYNTHETICS/baroaltitude.h \
|
||||||
$$UAVOBJECT_SYNTHETICS/attitudeactual.h \
|
$$UAVOBJECT_SYNTHETICS/attitudeactual.h \
|
||||||
@ -69,7 +70,8 @@ HEADERS += $$UAVOBJECT_SYNTHETICS/ahrsstatus.h \
|
|||||||
$$UAVOBJECT_SYNTHETICS/flightstatus.h \
|
$$UAVOBJECT_SYNTHETICS/flightstatus.h \
|
||||||
$$UAVOBJECT_SYNTHETICS/attitudesettings.h
|
$$UAVOBJECT_SYNTHETICS/attitudesettings.h
|
||||||
|
|
||||||
SOURCES += $$UAVOBJECT_SYNTHETICS/ahrsstatus.cpp \
|
SOURCES += $$UAVOBJECT_SYNTHETICS/accessorydesired.cpp \
|
||||||
|
$$UAVOBJECT_SYNTHETICS/ahrsstatus.cpp \
|
||||||
$$UAVOBJECT_SYNTHETICS/ahrscalibration.cpp \
|
$$UAVOBJECT_SYNTHETICS/ahrscalibration.cpp \
|
||||||
$$UAVOBJECT_SYNTHETICS/baroaltitude.cpp \
|
$$UAVOBJECT_SYNTHETICS/baroaltitude.cpp \
|
||||||
$$UAVOBJECT_SYNTHETICS/attitudeactual.cpp \
|
$$UAVOBJECT_SYNTHETICS/attitudeactual.cpp \
|
||||||
|
@ -295,7 +295,7 @@ bool UAVTalk::processInputByte(quint8 rxbyte)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check the lengths match
|
// Check the lengths match
|
||||||
if ((rxPacketLength + rxLength) != packetSize)
|
if ((rxPacketLength + rxLength + (rxObj->isSingleInstance() ? 0 : 2)) != packetSize)
|
||||||
{ // packet error - mismatched packet size
|
{ // packet error - mismatched packet size
|
||||||
stats.rxErrors++;
|
stats.rxErrors++;
|
||||||
rxState = STATE_SYNC;
|
rxState = STATE_SYNC;
|
||||||
@ -805,17 +805,3 @@ quint8 UAVTalk::updateCRC(quint8 crc, const quint8* data, qint32 length)
|
|||||||
crc = crc_table[crc ^ *data++];
|
crc = crc_table[crc ^ *data++];
|
||||||
return crc;
|
return crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
10
shared/uavobjectdefinition/accessorydesired.xml
Normal file
10
shared/uavobjectdefinition/accessorydesired.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<xml>
|
||||||
|
<object name="AccessoryDesired" singleinstance="false" settings="false">
|
||||||
|
<description>Desired Auxillary actuator settings. Comes from @ref ManualControlModule.</description>
|
||||||
|
<field name="AccessoryVal" units="" type="float" elements="1"/>
|
||||||
|
<access gcs="readwrite" flight="readwrite"/>
|
||||||
|
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
||||||
|
<telemetryflight acked="false" updatemode="periodic" period="1000"/>
|
||||||
|
<logging updatemode="never" period="0"/>
|
||||||
|
</object>
|
||||||
|
</xml>
|
@ -6,11 +6,7 @@
|
|||||||
<field name="Pitch" units="%" type="float" elements="1"/>
|
<field name="Pitch" units="%" type="float" elements="1"/>
|
||||||
<field name="Yaw" units="%" type="float" elements="1"/>
|
<field name="Yaw" units="%" type="float" elements="1"/>
|
||||||
<field name="Throttle" units="%" type="float" elements="1"/>
|
<field name="Throttle" units="%" type="float" elements="1"/>
|
||||||
|
<field name="Channel" units="us" type="uint16" elements="8"/>
|
||||||
<field name="Accessory1" units="%" type="float" elements="1"/>
|
|
||||||
<field name="Accessory2" units="%" type="float" elements="1"/>
|
|
||||||
<field name="Accessory3" units="%" type="float" elements="1"/>
|
|
||||||
<field name="Channel" units="us" type="uint16" elements="8"/>
|
|
||||||
<access gcs="readwrite" flight="readwrite"/>
|
<access gcs="readwrite" flight="readwrite"/>
|
||||||
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
||||||
<telemetryflight acked="false" updatemode="periodic" period="2000"/>
|
<telemetryflight acked="false" updatemode="periodic" period="2000"/>
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
<field name="Yaw" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
<field name="Yaw" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
||||||
<field name="Throttle" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
<field name="Throttle" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
||||||
<field name="FlightMode" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
<field name="FlightMode" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
||||||
|
<field name="Accessory0" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
||||||
<field name="Accessory1" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
<field name="Accessory1" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
||||||
<field name="Accessory2" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
<field name="Accessory2" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
||||||
<field name="Accessory3" units="channel" type="enum" elements="1" options="Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,None" defaultvalue="None"/>
|
|
||||||
<field name="Arming" units="" type="enum" elements="1" options="Always Disarmed,Always Armed,Roll Left,Roll Right,Pitch Forward,Pitch Aft,Yaw Left,Yaw Right" defaultvalue="Always Disarmed"/>
|
<field name="Arming" units="" type="enum" elements="1" options="Always Disarmed,Always Armed,Roll Left,Roll Right,Pitch Forward,Pitch Aft,Yaw Left,Yaw Right" defaultvalue="Always Disarmed"/>
|
||||||
|
|
||||||
<!-- Note these options should be identical to those in StabilizationDesired.StabilizationMode -->
|
<!-- Note these options should be identical to those in StabilizationDesired.StabilizationMode -->
|
||||||
|
@ -6,22 +6,23 @@
|
|||||||
<field name="AccelTime" units="ms" type="float" elements="1" defaultvalue="0"/>
|
<field name="AccelTime" units="ms" type="float" elements="1" defaultvalue="0"/>
|
||||||
<field name="DecelTime" units="ms" type="float" elements="1" defaultvalue="0"/>
|
<field name="DecelTime" units="ms" type="float" elements="1" defaultvalue="0"/>
|
||||||
<field name="ThrottleCurve1" units="percent" type="float" elements="5" elementnames="0,25,50,75,100" defaultvalue="0,0.25,0.5,0.75,1"/>
|
<field name="ThrottleCurve1" units="percent" type="float" elements="5" elementnames="0,25,50,75,100" defaultvalue="0,0.25,0.5,0.75,1"/>
|
||||||
|
<field name="Curve2Source" units="" type="enum" elements="1" options="Throttle,Roll,Pitch,Yaw,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Throttle"/>
|
||||||
<field name="ThrottleCurve2" units="percent" type="float" elements="5" elementnames="0,25,50,75,100" defaultvalue="0,0.25,0.5,0.75,1"/>
|
<field name="ThrottleCurve2" units="percent" type="float" elements="5" elementnames="0,25,50,75,100" defaultvalue="0,0.25,0.5,0.75,1"/>
|
||||||
<field name="Mixer1Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer1Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer1Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer1Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer2Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer2Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer2Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer2Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer3Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer3Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer3Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer3Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer4Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer4Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer4Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer4Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer5Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer5Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer5Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer5Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer6Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer6Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer6Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer6Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer7Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer7Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer7Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer7Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<field name="Mixer8Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo" defaultvalue="Disabled"/>
|
<field name="Mixer8Type" units="" type="enum" elements="1" options="Disabled,Motor,Servo,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5" defaultvalue="Disabled"/>
|
||||||
<field name="Mixer8Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
<field name="Mixer8Vector" units="" type="int8" elements="5" elementnames="ThrottleCurve1,ThrottleCurve2,Roll,Pitch,Yaw" defaultvalue="0"/>
|
||||||
<access gcs="readwrite" flight="readwrite"/>
|
<access gcs="readwrite" flight="readwrite"/>
|
||||||
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
|
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user