mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-03-15 07:29:15 +01:00
Attempt adding in the proper Mixer setting constructs for Elevon setup.
This commit is contained in:
parent
b9733363b3
commit
1f74a78263
@ -94,7 +94,7 @@ ConfigFixedWingWidget::ConfigFixedWingWidget(QWidget *parent) :
|
|||||||
// Set default model to "Elevator aileron rudder"
|
// Set default model to "Elevator aileron rudder"
|
||||||
m_aircraft->fixedWingType->setCurrentIndex(m_aircraft->fixedWingType->findText("Elevator aileron rudder"));
|
m_aircraft->fixedWingType->setCurrentIndex(m_aircraft->fixedWingType->findText("Elevator aileron rudder"));
|
||||||
|
|
||||||
// setupUI(m_aircraft->fixedWingType->currentText());
|
setupUI(m_aircraft->fixedWingType->currentText());
|
||||||
|
|
||||||
connect(m_aircraft->fixedWingType, SIGNAL(currentIndexChanged(QString)), this, SLOT(setupUI(QString)));
|
connect(m_aircraft->fixedWingType, SIGNAL(currentIndexChanged(QString)), this, SLOT(setupUI(QString)));
|
||||||
updateEnableControls();
|
updateEnableControls();
|
||||||
@ -138,6 +138,8 @@ void ConfigFixedWingWidget::setupUI(QString frameType)
|
|||||||
|
|
||||||
m_aircraft->elevonSlider1->setEnabled(false);
|
m_aircraft->elevonSlider1->setEnabled(false);
|
||||||
m_aircraft->elevonSlider2->setEnabled(false);
|
m_aircraft->elevonSlider2->setEnabled(false);
|
||||||
|
} else if (frameType == "FixedWingVtail" || frameType == "Vtail") {
|
||||||
|
// do nothing for now
|
||||||
} else if (frameType == "FixedWingElevon" || frameType == "Elevon") {
|
} else if (frameType == "FixedWingElevon" || frameType == "Elevon") {
|
||||||
plane->setElementId("elevon");
|
plane->setElementId("elevon");
|
||||||
setComboCurrentIndex(m_aircraft->fixedWingType, m_aircraft->fixedWingType->findText("Elevon"));
|
setComboCurrentIndex(m_aircraft->fixedWingType, m_aircraft->fixedWingType->findText("Elevon"));
|
||||||
@ -152,7 +154,7 @@ void ConfigFixedWingWidget::setupUI(QString frameType)
|
|||||||
|
|
||||||
m_aircraft->fwAileron1Label->setText("Aileron 1");
|
m_aircraft->fwAileron1Label->setText("Aileron 1");
|
||||||
m_aircraft->fwAileron2Label->setText("Aileron 2");
|
m_aircraft->fwAileron2Label->setText("Aileron 2");
|
||||||
m_aircraft->elevonLabel1->setText("Rudder");
|
m_aircraft->elevonLabel1->setText("Roll");
|
||||||
m_aircraft->elevonLabel2->setText("Pitch");
|
m_aircraft->elevonLabel2->setText("Pitch");
|
||||||
|
|
||||||
m_aircraft->elevonSlider1->setEnabled(true);
|
m_aircraft->elevonSlider1->setEnabled(true);
|
||||||
@ -182,7 +184,9 @@ void ConfigFixedWingWidget::setupEnabledControls(QString frameType)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frameType == "Elevon" || frameType == "elevon") {
|
if (frameType == "Vtail" || frameType == "vtail") {
|
||||||
|
// enableComboBoxes(this, CHANNELBOXNAME, 3, true);
|
||||||
|
} else if (frameType == "Elevon" || frameType == "Elevon") {
|
||||||
enableComboBoxes(this, CHANNELBOXNAME, 3, true);
|
enableComboBoxes(this, CHANNELBOXNAME, 3, true);
|
||||||
} else if (frameType == "aileron" || frameType == "Elevator aileron rudder") {
|
} else if (frameType == "aileron" || frameType == "Elevator aileron rudder") {
|
||||||
enableComboBoxes(this, CHANNELBOXNAME, 4, true);
|
enableComboBoxes(this, CHANNELBOXNAME, 4, true);
|
||||||
@ -250,8 +254,6 @@ void ConfigFixedWingWidget::refreshWidgetsValues(QString frameType)
|
|||||||
setComboCurrentIndex(m_aircraft->fwAileron2ChannelBox, fixed.FixedWingRoll2);
|
setComboCurrentIndex(m_aircraft->fwAileron2ChannelBox, fixed.FixedWingRoll2);
|
||||||
setComboCurrentIndex(m_aircraft->fwElevator1ChannelBox, fixed.FixedWingPitch1);
|
setComboCurrentIndex(m_aircraft->fwElevator1ChannelBox, fixed.FixedWingPitch1);
|
||||||
setComboCurrentIndex(m_aircraft->fwElevator2ChannelBox, fixed.FixedWingPitch2);
|
setComboCurrentIndex(m_aircraft->fwElevator2ChannelBox, fixed.FixedWingPitch2);
|
||||||
setComboCurrentIndex(m_aircraft->fwRudder1ChannelBox, fixed.FixedWingYaw1);
|
|
||||||
setComboCurrentIndex(m_aircraft->fwRudder2ChannelBox, fixed.FixedWingYaw2);
|
|
||||||
|
|
||||||
if (frameType == "FixedWingElevon") {
|
if (frameType == "FixedWingElevon") {
|
||||||
// If the airframe is elevon, restore the slider setting
|
// If the airframe is elevon, restore the slider setting
|
||||||
@ -260,7 +262,7 @@ void ConfigFixedWingWidget::refreshWidgetsValues(QString frameType)
|
|||||||
if (channel > -1) {
|
if (channel > -1) {
|
||||||
// If for some reason the actuators were incoherent, we might fail here, hence the check.
|
// If for some reason the actuators were incoherent, we might fail here, hence the check.
|
||||||
m_aircraft->elevonSlider1->setValue(
|
m_aircraft->elevonSlider1->setValue(
|
||||||
getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW) * 100);
|
getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL) * 100);
|
||||||
m_aircraft->elevonSlider2->setValue(
|
m_aircraft->elevonSlider2->setValue(
|
||||||
getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH) * 100);
|
getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH) * 100);
|
||||||
}
|
}
|
||||||
@ -319,7 +321,7 @@ QString ConfigFixedWingWidget::updateConfigObjectsFromWidgets()
|
|||||||
{ 0, 0, 0 },
|
{ 0, 0, 0 },
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
setupFixedWingMixer(mixerMatrix);
|
setupFixedWingElevonMixer(mixerMatrix);
|
||||||
|
|
||||||
m_aircraft->fwStatusLabel->setText(tr("Configuration OK"));
|
m_aircraft->fwStatusLabel->setText(tr("Configuration OK"));
|
||||||
|
|
||||||
@ -483,74 +485,77 @@ bool ConfigFixedWingWidget::setupFrameElevon(QString airframeType)
|
|||||||
|
|
||||||
// 1. Assign the servo/motor/none for each channel
|
// 1. Assign the servo/motor/none for each channel
|
||||||
|
|
||||||
double value;
|
|
||||||
|
|
||||||
// motor
|
// motor
|
||||||
int channel = m_aircraft->fwEngineChannelBox->currentIndex() - 1;
|
int channel = m_aircraft->fwEngineChannelBox->currentIndex() - 1;
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_MOTOR);
|
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_MOTOR);
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE1, 127);
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE1, 127);
|
||||||
|
|
||||||
// rudders
|
|
||||||
channel = m_aircraft->fwRudder1ChannelBox->currentIndex() - 1;
|
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW, 127);
|
|
||||||
|
|
||||||
channel = m_aircraft->fwRudder2ChannelBox->currentIndex() - 1;
|
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW, -127);
|
|
||||||
|
|
||||||
// ailerons
|
// ailerons
|
||||||
channel = m_aircraft->fwAileron1ChannelBox->currentIndex() - 1;
|
channel = m_aircraft->fwAileron1ChannelBox->currentIndex() - 1;
|
||||||
if (channel > -1) {
|
if (channel > -1) {
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
||||||
value = (double)(m_aircraft->elevonSlider2->value() * 1.27);
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL, 127);
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH, value);
|
|
||||||
value = (double)(m_aircraft->elevonSlider1->value() * 1.27);
|
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL, value);
|
|
||||||
|
|
||||||
|
|
||||||
channel = m_aircraft->fwAileron2ChannelBox->currentIndex() - 1;
|
channel = m_aircraft->fwAileron2ChannelBox->currentIndex() - 1;
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
||||||
value = (double)(m_aircraft->elevonSlider2->value() * 1.27);
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL, -127);
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH, value);
|
}
|
||||||
value = (double)(m_aircraft->elevonSlider1->value() * 1.27);
|
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL, -value);
|
// elevon
|
||||||
|
channel = m_aircraft->fwElevator1ChannelBox->currentIndex() - 1;
|
||||||
|
if (channel > -1) {
|
||||||
|
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
||||||
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH, 127);
|
||||||
|
|
||||||
|
channel = m_aircraft->fwElevator2ChannelBox->currentIndex() - 1;
|
||||||
|
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
||||||
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH, -127);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_aircraft->fwStatusLabel->setText("Mixer generated");
|
m_aircraft->fwStatusLabel->setText("Mixer generated");
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function sets up the elevon fixed wing mixer values.
|
Helper function: setupElevonServo
|
||||||
*/
|
*/
|
||||||
bool ConfigFixedWingWidget::setupFixedWingMixer(double mixerFactors[8][3])
|
void ConfigFixedWingWidget::setupElevonServo(int channel, double pitch, double roll)
|
||||||
{
|
{
|
||||||
UAVDataObject *mixer = dynamic_cast<UAVDataObject *>(getObjectManager()->getObject(QString("MixerSettings")));
|
UAVDataObject *mixer = dynamic_cast<UAVDataObject *>(getObjectManager()->getObject(QString("MixerSettings")));
|
||||||
|
|
||||||
|
Q_ASSERT(mixer);
|
||||||
|
|
||||||
|
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
||||||
|
|
||||||
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL, roll * 127);
|
||||||
|
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH, pitch * 127);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function sets up the elevon fixed wing mixer values.
|
||||||
|
*/
|
||||||
|
bool ConfigFixedWingWidget::setupFixedWingElevonMixer(double mixerFactors[8][3]){
|
||||||
|
UAVDataObject *mixer = dynamic_cast<UAVDataObject *>(getObjectManager()->getObject(QString("MixerSettings")));
|
||||||
|
|
||||||
Q_ASSERT(mixer);
|
Q_ASSERT(mixer);
|
||||||
resetMotorAndServoMixers(mixer);
|
resetMotorAndServoMixers(mixer);
|
||||||
|
|
||||||
// and enable only the relevant channels:
|
// and enable only the relevant channels:
|
||||||
// double pFactor = (double)m_aircraft->fwPitchMixLevel->value() / 100.0;
|
double pFactor = (double)m_aircraft->elevonSlider1->value() / 100.0;
|
||||||
// double rFactor = (double)m_aircraft->fwRollMixLevel->value() / 100.0;
|
double rFactor = (double)m_aircraft->elevonSlider2->value() / 100.0;
|
||||||
//invertMotors = m_aircraft->MultirotorRevMixerCheckBox->isChecked();
|
|
||||||
// double yFactor = (double)m_aircraft->fwYawMixLevel->value() / 100.0;
|
|
||||||
|
|
||||||
QList<QComboBox *> mmList;
|
QList<QComboBox *> mmList;
|
||||||
mmList << m_aircraft->fwEngineChannelBox << m_aircraft->fwAileron1ChannelBox
|
mmList << m_aircraft->fwEngineChannelBox << m_aircraft->fwAileron1ChannelBox
|
||||||
<< m_aircraft->fwAileron2ChannelBox << m_aircraft->fwElevator1ChannelBox
|
<< m_aircraft->fwAileron2ChannelBox << m_aircraft->fwElevator1ChannelBox
|
||||||
<< m_aircraft->fwElevator2ChannelBox << m_aircraft->fwRudder1ChannelBox
|
<< m_aircraft->fwElevator2ChannelBox;
|
||||||
<< m_aircraft->fwRudder2ChannelBox;
|
|
||||||
|
|
||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
if (mmList.at(i)->isEnabled()) {
|
if (mmList.at(i)->isEnabled()) {
|
||||||
int channel = mmList.at(i)->currentIndex() - 1;
|
int channel = mmList.at(i)->currentIndex() - 1;
|
||||||
if (channel > -1) {
|
if (channel > -1) {
|
||||||
qDebug() << "code needs to be written here!";
|
setupElevonServo(channel, mixerFactors[i][0] * pFactor, rFactor * mixerFactors[i][1]);
|
||||||
// setupQuadMotor(channel, mixerFactors[i][0] * pFactor, rFactor * mixerFactors[i][1],
|
|
||||||
// yFactor * mixerFactors[i][2]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -604,20 +609,21 @@ bool ConfigFixedWingWidget::throwConfigError(QString airframeType)
|
|||||||
m_aircraft->fwEngineChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
m_aircraft->fwEngineChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_aircraft->fwAileron1ChannelBox->currentText() == "None") {
|
if (m_aircraft->fwElevator1ChannelBox->currentText() == "None") {
|
||||||
m_aircraft->fwAileron1ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
m_aircraft->fwElevator1ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
||||||
error = true;
|
error = true;
|
||||||
} else {
|
} else {
|
||||||
m_aircraft->fwAileron1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
m_aircraft->fwElevator1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_aircraft->fwAileron2ChannelBox->currentText() == "None") {
|
if (m_aircraft->fwElevator2ChannelBox->currentText() == "None") {
|
||||||
m_aircraft->fwAileron2ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
m_aircraft->fwElevator2ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
||||||
error = true;
|
error = true;
|
||||||
} else {
|
} else {
|
||||||
m_aircraft->fwAileron2ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
m_aircraft->fwElevator2ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
m_aircraft->fwStatusLabel->setText(QString("<font color='red'>ERROR: Assign all necessary channels</font>"));
|
m_aircraft->fwStatusLabel->setText(QString("<font color='red'>ERROR: Assign all necessary channels</font>"));
|
||||||
}
|
}
|
||||||
|
@ -66,8 +66,10 @@ private:
|
|||||||
virtual void resetActuators(GUIConfigDataUnion *configData);
|
virtual void resetActuators(GUIConfigDataUnion *configData);
|
||||||
|
|
||||||
bool setupFrameFixedWing(QString airframeType);
|
bool setupFrameFixedWing(QString airframeType);
|
||||||
|
bool setupFrameVtail(QString airframeType);
|
||||||
bool setupFrameElevon(QString airframeType);
|
bool setupFrameElevon(QString airframeType);
|
||||||
bool setupFixedWingMixer(double mixerFactors[8][3]);
|
bool setupFixedWingMixer(double mixerFactors[8][3]);
|
||||||
|
bool setupFixedWingElevonMixer(double mixerFactors[8][3]);
|
||||||
void setupMotors(QList<QString> motorList);
|
void setupMotors(QList<QString> motorList);
|
||||||
|
|
||||||
void updateAirframe(QString multiRotorType);
|
void updateAirframe(QString multiRotorType);
|
||||||
|
@ -71,10 +71,12 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
|
|||||||
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
||||||
break;
|
break;
|
||||||
case SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON:
|
case SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON:
|
||||||
// do nothing for elevon support for the time being.
|
|
||||||
case SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL:
|
|
||||||
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
||||||
break;
|
break;
|
||||||
|
case SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL:
|
||||||
|
// do nothing for vtail support for the time being.
|
||||||
|
// channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
||||||
|
break;
|
||||||
case SystemSettings::AIRFRAMETYPE_HELICP:
|
case SystemSettings::AIRFRAMETYPE_HELICP:
|
||||||
// helicp
|
// helicp
|
||||||
channelDesc = ConfigCcpmWidget::getChannelDescriptions();
|
channelDesc = ConfigCcpmWidget::getChannelDescriptions();
|
||||||
|
@ -125,6 +125,9 @@ void ConnectionDiagram::setupGraphicsScene()
|
|||||||
case VehicleConfigurationSource::FIXED_WING_ELEVON:
|
case VehicleConfigurationSource::FIXED_WING_ELEVON:
|
||||||
elementsToShow << "elevon";
|
elementsToShow << "elevon";
|
||||||
break;
|
break;
|
||||||
|
case VehicleConfigurationSource::FIXED_WING_VTAIL:
|
||||||
|
elementsToShow << "vtail";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,9 @@ void FixedWingPage::updateImageAndDescription()
|
|||||||
case SetupWizard::FIXED_WING_ELEVON:
|
case SetupWizard::FIXED_WING_ELEVON:
|
||||||
elementId = "elevon";
|
elementId = "elevon";
|
||||||
break;
|
break;
|
||||||
|
// case SetupWizard::FIXED_WING_VTAIL:
|
||||||
|
// elementId = "vtail";
|
||||||
|
// break;
|
||||||
default:
|
default:
|
||||||
elementId = "";
|
elementId = "";
|
||||||
break;
|
break;
|
||||||
|
@ -239,6 +239,9 @@ QString SetupWizard::getSummaryText()
|
|||||||
case SetupWizard::FIXED_WING_ELEVON:
|
case SetupWizard::FIXED_WING_ELEVON:
|
||||||
summary.append(tr("Elevon"));
|
summary.append(tr("Elevon"));
|
||||||
break;
|
break;
|
||||||
|
// case SetupWizard::FIXED_WING_VTAIL:
|
||||||
|
// summary.append(tr("Vtail"));
|
||||||
|
// break;
|
||||||
default:
|
default:
|
||||||
summary.append(tr("Unknown"));
|
summary.append(tr("Unknown"));
|
||||||
break;
|
break;
|
||||||
|
@ -224,6 +224,9 @@ void VehicleConfigurationHelper::applyVehicleConfiguration()
|
|||||||
case VehicleConfigurationSource::FIXED_WING_ELEVON:
|
case VehicleConfigurationSource::FIXED_WING_ELEVON:
|
||||||
setupElevon();
|
setupElevon();
|
||||||
break;
|
break;
|
||||||
|
case VehicleConfigurationSource::FIXED_WING_VTAIL:
|
||||||
|
// setupVtail();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1378,7 +1381,7 @@ void VehicleConfigurationHelper::setupElevon()
|
|||||||
guiSettings.fixedwing.FixedWingRoll2 = 3;
|
guiSettings.fixedwing.FixedWingRoll2 = 3;
|
||||||
|
|
||||||
applyMixerConfiguration(channels);
|
applyMixerConfiguration(channels);
|
||||||
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL, guiSettings);
|
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON, guiSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VehicleConfigurationHelper::setupAileron()
|
void VehicleConfigurationHelper::setupAileron()
|
||||||
|
@ -103,6 +103,7 @@ private:
|
|||||||
void setupQuadCopter();
|
void setupQuadCopter();
|
||||||
void setupHexaCopter();
|
void setupHexaCopter();
|
||||||
void setupOctoCopter();
|
void setupOctoCopter();
|
||||||
|
void setupVtail();
|
||||||
void setupElevon();
|
void setupElevon();
|
||||||
void setupAileron();
|
void setupAileron();
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ public:
|
|||||||
enum VEHICLE_SUB_TYPE { MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS,
|
enum VEHICLE_SUB_TYPE { MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS,
|
||||||
MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO,
|
MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO,
|
||||||
MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_AILERON,
|
MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_AILERON,
|
||||||
FIXED_WING_ELEVON, HELI_CCPM };
|
FIXED_WING_VTAIL, FIXED_WING_ELEVON, HELI_CCPM };
|
||||||
enum ESC_TYPE { ESC_RAPID, ESC_LEGACY, ESC_UNKNOWN };
|
enum ESC_TYPE { ESC_RAPID, ESC_LEGACY, ESC_UNKNOWN };
|
||||||
enum INPUT_TYPE { INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSMX10, INPUT_DSMX11, INPUT_DSM2, INPUT_UNKNOWN };
|
enum INPUT_TYPE { INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSMX10, INPUT_DSMX11, INPUT_DSM2, INPUT_UNKNOWN };
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user