mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-30 15:52:12 +01:00
Remove some redundant "elevon" stuff for now. Will come back later when proper "elevon + rudder" artwork exists. Currently no different from vtail anyway...
Enabled proper channel mixing settings inside the FixedWing wizard Output configuration screen. Attempt to set GUIConfigDataUnion to fixedwing
This commit is contained in:
parent
6e5e7e4dd3
commit
9e417f5ee5
@ -86,7 +86,7 @@ ConfigFixedWingWidget::ConfigFixedWingWidget(QWidget *parent) :
|
|||||||
populateChannelComboBoxes();
|
populateChannelComboBoxes();
|
||||||
|
|
||||||
QStringList fixedWingTypes;
|
QStringList fixedWingTypes;
|
||||||
fixedWingTypes << "Elevator aileron rudder" << "Elevon" << "Vtail";
|
fixedWingTypes << "Elevator aileron rudder" << "Vtail";
|
||||||
m_aircraft->fixedWingType->addItems(fixedWingTypes);
|
m_aircraft->fixedWingType->addItems(fixedWingTypes);
|
||||||
|
|
||||||
// Set default model to "Elevator aileron rudder"
|
// Set default model to "Elevator aileron rudder"
|
||||||
@ -134,23 +134,6 @@ 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 == "FixedWingElevon" || frameType == "Elevon") {
|
|
||||||
plane->setElementId("vtail");
|
|
||||||
setComboCurrentIndex(m_aircraft->fixedWingType, m_aircraft->fixedWingType->findText("Elevon"));
|
|
||||||
m_aircraft->fwAileron1Label->setText("Elevon 1");
|
|
||||||
m_aircraft->fwAileron2Label->setText("Elevon 2");
|
|
||||||
m_aircraft->fwElevator1ChannelBox->setEnabled(false);
|
|
||||||
m_aircraft->fwElevator2ChannelBox->setEnabled(false);
|
|
||||||
m_aircraft->fwRudder1ChannelBox->setEnabled(true);
|
|
||||||
m_aircraft->fwRudder2ChannelBox->setEnabled(true);
|
|
||||||
|
|
||||||
m_aircraft->fwElevator1Label->setText("Elevator 1");
|
|
||||||
m_aircraft->fwElevator2Label->setText("Elevator 2");
|
|
||||||
m_aircraft->elevonLabel1->setText("Roll");
|
|
||||||
m_aircraft->elevonLabel2->setText("Pitch");
|
|
||||||
|
|
||||||
m_aircraft->elevonSlider1->setEnabled(true);
|
|
||||||
m_aircraft->elevonSlider2->setEnabled(true);
|
|
||||||
} else if (frameType == "FixedWingVtail" || frameType == "Vtail") {
|
} else if (frameType == "FixedWingVtail" || frameType == "Vtail") {
|
||||||
plane->setElementId("vtail");
|
plane->setElementId("vtail");
|
||||||
setComboCurrentIndex(m_aircraft->fixedWingType, m_aircraft->fixedWingType->findText("Vtail"));
|
setComboCurrentIndex(m_aircraft->fixedWingType, m_aircraft->fixedWingType->findText("Vtail"));
|
||||||
@ -192,7 +175,7 @@ void ConfigFixedWingWidget::setupEnabledControls(QString frameType)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frameType == "Vtail" || frameType == "Elevon") {
|
if (frameType == "Vtail" || frameType == "vtail") {
|
||||||
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);
|
||||||
@ -263,18 +246,9 @@ void ConfigFixedWingWidget::refreshWidgetsValues(QString frameType)
|
|||||||
setComboCurrentIndex(m_aircraft->fwRudder1ChannelBox, fixed.FixedWingYaw1);
|
setComboCurrentIndex(m_aircraft->fwRudder1ChannelBox, fixed.FixedWingYaw1);
|
||||||
setComboCurrentIndex(m_aircraft->fwRudder2ChannelBox, fixed.FixedWingYaw2);
|
setComboCurrentIndex(m_aircraft->fwRudder2ChannelBox, fixed.FixedWingYaw2);
|
||||||
|
|
||||||
if (frameType == "FixedWingElevon") {
|
if (frameType == "FixedWingVtail") {
|
||||||
// If the airframe is elevon, restore the slider setting
|
// If the airframe is vtail, restore the slider setting
|
||||||
// Find the channel number for Elevon1 (FixedWingRoll1)
|
// Find the channel number for Elevon1 (FixedWingRoll1)
|
||||||
int channel = m_aircraft->fwAileron1ChannelBox->currentIndex() - 1;
|
|
||||||
if (channel > -1) {
|
|
||||||
// If for some reason the actuators were incoherent, we might fail here, hence the check.
|
|
||||||
m_aircraft->elevonSlider1->setValue(
|
|
||||||
getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL) * 100);
|
|
||||||
m_aircraft->elevonSlider2->setValue(
|
|
||||||
getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH) * 100);
|
|
||||||
}
|
|
||||||
} else if (frameType == "FixedWingVtail") {
|
|
||||||
int channel = m_aircraft->fwElevator1ChannelBox->currentIndex() - 1;
|
int channel = m_aircraft->fwElevator1ChannelBox->currentIndex() - 1;
|
||||||
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.
|
||||||
@ -308,10 +282,7 @@ QString ConfigFixedWingWidget::updateConfigObjectsFromWidgets()
|
|||||||
if (m_aircraft->fixedWingType->currentText() == "Elevator aileron rudder") {
|
if (m_aircraft->fixedWingType->currentText() == "Elevator aileron rudder") {
|
||||||
airframeType = "FixedWing";
|
airframeType = "FixedWing";
|
||||||
setupFrameFixedWing(airframeType);
|
setupFrameFixedWing(airframeType);
|
||||||
} else if (m_aircraft->fixedWingType->currentText() == "Elevon") {
|
} else if (m_aircraft->fixedWingType->currentText() == "vtail") {
|
||||||
airframeType = "FixedWingElevon";
|
|
||||||
setupFrameElevon(airframeType);
|
|
||||||
} else { // "Vtail"
|
|
||||||
airframeType = "FixedWingVtail";
|
airframeType = "FixedWingVtail";
|
||||||
setupFrameVtail(airframeType);
|
setupFrameVtail(airframeType);
|
||||||
}
|
}
|
||||||
@ -404,76 +375,6 @@ bool ConfigFixedWingWidget::setupFrameFixedWing(QString airframeType)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Setup Elevon
|
|
||||||
*/
|
|
||||||
bool ConfigFixedWingWidget::setupFrameElevon(QString airframeType)
|
|
||||||
{
|
|
||||||
// Check coherence:
|
|
||||||
// Show any config errors in GUI
|
|
||||||
if (throwConfigError(airframeType)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
GUIConfigDataUnion config = getConfigData();
|
|
||||||
resetActuators(&config);
|
|
||||||
|
|
||||||
config.fixedwing.FixedWingRoll1 = m_aircraft->fwAileron1ChannelBox->currentIndex();
|
|
||||||
config.fixedwing.FixedWingRoll2 = m_aircraft->fwAileron2ChannelBox->currentIndex();
|
|
||||||
config.fixedwing.FixedWingYaw1 = m_aircraft->fwRudder1ChannelBox->currentIndex();
|
|
||||||
config.fixedwing.FixedWingYaw2 = m_aircraft->fwRudder2ChannelBox->currentIndex();
|
|
||||||
config.fixedwing.FixedWingThrottle = m_aircraft->fwEngineChannelBox->currentIndex();
|
|
||||||
|
|
||||||
setConfigData(config);
|
|
||||||
|
|
||||||
UAVDataObject *mixer = dynamic_cast<UAVDataObject *>(getObjectManager()->getObject(QString("MixerSettings")));
|
|
||||||
Q_ASSERT(mixer);
|
|
||||||
resetMotorAndServoMixers(mixer);
|
|
||||||
|
|
||||||
// Save the curve:
|
|
||||||
// ... and compute the matrix:
|
|
||||||
// In order to make code a bit nicer, we assume:
|
|
||||||
// - Channel dropdowns start with 'None', then 0 to 7
|
|
||||||
|
|
||||||
// 1. Assign the servo/motor/none for each channel
|
|
||||||
|
|
||||||
double value;
|
|
||||||
|
|
||||||
// motor
|
|
||||||
int channel = m_aircraft->fwEngineChannelBox->currentIndex() - 1;
|
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_MOTOR);
|
|
||||||
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
|
|
||||||
channel = m_aircraft->fwAileron1ChannelBox->currentIndex() - 1;
|
|
||||||
if (channel > -1) {
|
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
|
||||||
value = (double)(m_aircraft->elevonSlider2->value() * 1.27);
|
|
||||||
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;
|
|
||||||
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_SERVO);
|
|
||||||
value = (double)(m_aircraft->elevonSlider2->value() * 1.27);
|
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_PITCH, value);
|
|
||||||
value = (double)(m_aircraft->elevonSlider1->value() * 1.27);
|
|
||||||
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL, -value);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_aircraft->fwStatusLabel->setText("Mixer generated");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Setup VTail
|
Setup VTail
|
||||||
*/
|
*/
|
||||||
@ -592,27 +493,6 @@ bool ConfigFixedWingWidget::throwConfigError(QString airframeType)
|
|||||||
m_aircraft->fwAileron1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
m_aircraft->fwAileron1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
||||||
m_aircraft->fwRudder1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
m_aircraft->fwRudder1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
||||||
}
|
}
|
||||||
} else if (airframeType == "FixedWingElevon") {
|
|
||||||
if (m_aircraft->fwEngineChannelBox->currentText() == "None") {
|
|
||||||
m_aircraft->fwEngineChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
|
||||||
error = true;
|
|
||||||
} else {
|
|
||||||
m_aircraft->fwEngineChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_aircraft->fwAileron1ChannelBox->currentText() == "None") {
|
|
||||||
m_aircraft->fwAileron1ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
|
||||||
error = true;
|
|
||||||
} else {
|
|
||||||
m_aircraft->fwAileron1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_aircraft->fwAileron2ChannelBox->currentText() == "None") {
|
|
||||||
m_aircraft->fwAileron2ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
|
||||||
error = true;
|
|
||||||
} else {
|
|
||||||
m_aircraft->fwAileron2ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
|
|
||||||
}
|
|
||||||
} else if (airframeType == "FixedWingVtail") {
|
} else if (airframeType == "FixedWingVtail") {
|
||||||
if (m_aircraft->fwEngineChannelBox->currentText() == "None") {
|
if (m_aircraft->fwEngineChannelBox->currentText() == "None") {
|
||||||
m_aircraft->fwEngineChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
m_aircraft->fwEngineChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
|
||||||
|
@ -67,7 +67,6 @@ private:
|
|||||||
virtual void resetActuators(GUIConfigDataUnion *configData);
|
virtual void resetActuators(GUIConfigDataUnion *configData);
|
||||||
|
|
||||||
bool setupFrameFixedWing(QString airframeType);
|
bool setupFrameFixedWing(QString airframeType);
|
||||||
bool setupFrameElevon(QString airframeType);
|
|
||||||
bool setupFrameVtail(QString airframeType);
|
bool setupFrameVtail(QString airframeType);
|
||||||
|
|
||||||
void updateAirframe(QString multiRotorType);
|
void updateAirframe(QString multiRotorType);
|
||||||
|
@ -68,9 +68,11 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
|
|||||||
QStringList channelDesc;
|
QStringList channelDesc;
|
||||||
switch (systemSettingsData.AirframeType) {
|
switch (systemSettingsData.AirframeType) {
|
||||||
case SystemSettings::AIRFRAMETYPE_FIXEDWING:
|
case SystemSettings::AIRFRAMETYPE_FIXEDWING:
|
||||||
|
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
||||||
|
break;
|
||||||
case SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON:
|
case SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON:
|
||||||
|
// do nothing for elevon support for the time being.
|
||||||
case SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL:
|
case SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL:
|
||||||
// fixed wing
|
|
||||||
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
channelDesc = ConfigFixedWingWidget::getChannelDescriptions();
|
||||||
break;
|
break;
|
||||||
case SystemSettings::AIRFRAMETYPE_HELICP:
|
case SystemSettings::AIRFRAMETYPE_HELICP:
|
||||||
@ -268,8 +270,7 @@ QString ConfigVehicleTypeWidget::frameCategory(QString frameType)
|
|||||||
{
|
{
|
||||||
QString category;
|
QString category;
|
||||||
|
|
||||||
if (frameType == "FixedWing" || frameType == "Elevator aileron rudder" || frameType == "FixedWingElevon"
|
if (frameType == "FixedWing" || frameType == "Elevator aileron rudder" || frameType == "FixedWingVtail" || frameType == "Vtail") {
|
||||||
|| frameType == "Elevon" || frameType == "FixedWingVtail" || frameType == "Vtail") {
|
|
||||||
category = "Fixed Wing";
|
category = "Fixed Wing";
|
||||||
} else if (frameType == "Tri" || frameType == "Tricopter Y" || frameType == "QuadX" || frameType == "Quad X"
|
} else if (frameType == "Tri" || frameType == "Tricopter Y" || frameType == "QuadX" || frameType == "Quad X"
|
||||||
|| frameType == "QuadP" || frameType == "Quad +" || frameType == "Hexa" || frameType == "Hexacopter"
|
|| frameType == "QuadP" || frameType == "Quad +" || frameType == "Hexa" || frameType == "Hexacopter"
|
||||||
|
@ -83,10 +83,10 @@ void FixedWingPage::resizeEvent(QResizeEvent *event)
|
|||||||
void FixedWingPage::setupFixedWingTypesCombo()
|
void FixedWingPage::setupFixedWingTypesCombo()
|
||||||
{
|
{
|
||||||
ui->typeCombo->addItem(tr("Aileron, Elevator, Rudder"), SetupWizard::FIXED_WING_AILERON);
|
ui->typeCombo->addItem(tr("Aileron, Elevator, Rudder"), SetupWizard::FIXED_WING_AILERON);
|
||||||
m_descriptions << tr("A description for aileron driven fixed wing stuff goes here... ");
|
m_descriptions << tr("This setup currently expects a traditional 4 channel setup including two ailerons (not connected by Y adapter), an elevator and a rudder. ");
|
||||||
|
|
||||||
ui->typeCombo->addItem(tr("V-Tail, or Elevon"), SetupWizard::FIXED_WING_VTAIL);
|
ui->typeCombo->addItem(tr("V-Tail"), SetupWizard::FIXED_WING_VTAIL);
|
||||||
m_descriptions << tr("A description for vtail driven fixed wing stuff goes here... ");
|
m_descriptions << tr("This setup currently expects a flying-wing setup, an elevon plus rudder setup is not yet supported. Setup should include only two elevons, and should explicitly not include a rudder.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedWingPage::updateAvailableTypes()
|
void FixedWingPage::updateAvailableTypes()
|
||||||
|
@ -147,10 +147,29 @@ void OutputCalibrationPage::setupVehicle()
|
|||||||
ui->vehicleView->setScene(m_vehicleScene);
|
ui->vehicleView->setScene(m_vehicleScene);
|
||||||
}
|
}
|
||||||
qDebug() << "no clue what a wizard index is!";
|
qDebug() << "no clue what a wizard index is!";
|
||||||
m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1;
|
m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1;
|
||||||
m_vehicleElementIds << "fixed-aileron" << "aileron";
|
m_vehicleElementIds << "fixed-aileron" << "aileron";
|
||||||
m_vehicleHighlightElementIndexes << 0 << 1;
|
m_vehicleHighlightElementIndexes << 0 << 1;
|
||||||
m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5;
|
m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4;
|
||||||
|
|
||||||
|
// see Servo city for an example. 1500 usec is center on MS85mg for example. - http://www.servocity.com/html/hs-85mg__mighty_micro.html
|
||||||
|
// make sure Aileron servo one does not go to an extreme value
|
||||||
|
m_actuatorSettings[1].channelMin = 1500;
|
||||||
|
m_actuatorSettings[1].channelNeutral = 1500;
|
||||||
|
m_actuatorSettings[1].channelMax = 1500;
|
||||||
|
// make sure Aileron servo two does not go to an extreme value
|
||||||
|
m_actuatorSettings[2].channelMin = 1500;
|
||||||
|
m_actuatorSettings[2].channelNeutral = 1500;
|
||||||
|
m_actuatorSettings[2].channelMax = 1500;
|
||||||
|
// make sure Elevator servo one does not go to an extreme value
|
||||||
|
m_actuatorSettings[3].channelMin = 1500;
|
||||||
|
m_actuatorSettings[4].channelNeutral = 1500;
|
||||||
|
m_actuatorSettings[3].channelMax = 1500;
|
||||||
|
// make sure Rudder servo one does not go to an extreme value
|
||||||
|
m_actuatorSettings[4].channelMin = 1500;
|
||||||
|
m_actuatorSettings[4].channelNeutral = 1500;
|
||||||
|
m_actuatorSettings[4].channelMax = 1500;
|
||||||
|
|
||||||
getWizard()->setActuatorSettings(m_actuatorSettings);
|
getWizard()->setActuatorSettings(m_actuatorSettings);
|
||||||
break;
|
break;
|
||||||
case SetupWizard::FIXED_WING_VTAIL:
|
case SetupWizard::FIXED_WING_VTAIL:
|
||||||
@ -160,10 +179,20 @@ void OutputCalibrationPage::setupVehicle()
|
|||||||
ui->vehicleView->setScene(m_vehicleScene);
|
ui->vehicleView->setScene(m_vehicleScene);
|
||||||
}
|
}
|
||||||
qDebug() << "no clue what a wizard index is!";
|
qDebug() << "no clue what a wizard index is!";
|
||||||
m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1;
|
m_wizardIndexes << 0 << 1 << 1 << 1;
|
||||||
m_vehicleElementIds << "fixed-vtail" << "vtail";
|
m_vehicleElementIds << "fixed-vtail" << "vtail";
|
||||||
m_vehicleHighlightElementIndexes << 0 << 1;
|
m_vehicleHighlightElementIndexes << 0 << 1;
|
||||||
m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5;
|
m_channelIndex << 0 << 0 << 1 << 2;
|
||||||
|
|
||||||
|
// make sure elevon servo one does not go to an extreme value
|
||||||
|
m_actuatorSettings[1].channelMin = 1500;
|
||||||
|
m_actuatorSettings[1].channelNeutral = 1500;
|
||||||
|
m_actuatorSettings[1].channelMax = 1500;
|
||||||
|
// make sure elevon servo two does not go to an extreme value
|
||||||
|
m_actuatorSettings[2].channelMin = 1500;
|
||||||
|
m_actuatorSettings[2].channelNeutral = 1500;
|
||||||
|
m_actuatorSettings[2].channelMax = 1500;
|
||||||
|
|
||||||
getWizard()->setActuatorSettings(m_actuatorSettings);
|
getWizard()->setActuatorSettings(m_actuatorSettings);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -219,9 +219,6 @@ void VehicleConfigurationHelper::applyVehicleConfiguration()
|
|||||||
case VehicleConfigurationSource::FIXED_WING_AILERON:
|
case VehicleConfigurationSource::FIXED_WING_AILERON:
|
||||||
setupAileron();
|
setupAileron();
|
||||||
break;
|
break;
|
||||||
/* case VehicleConfigurationSource::FIXED_WING_ELEVON:
|
|
||||||
setupElevon();
|
|
||||||
break; */
|
|
||||||
case VehicleConfigurationSource::FIXED_WING_VTAIL:
|
case VehicleConfigurationSource::FIXED_WING_VTAIL:
|
||||||
setupVtail();
|
setupVtail();
|
||||||
break;
|
break;
|
||||||
@ -1304,7 +1301,6 @@ void VehicleConfigurationHelper::setupOctoCopter()
|
|||||||
applyMultiGUISettings(frame, guiSettings);
|
applyMultiGUISettings(frame, guiSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is all wrong... I just copied the Tricopter stuff
|
|
||||||
void VehicleConfigurationHelper::setupVtail()
|
void VehicleConfigurationHelper::setupVtail()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1314,41 +1310,32 @@ void VehicleConfigurationHelper::setupVtail()
|
|||||||
channels[0].type = MIXER_TYPE_MOTOR;
|
channels[0].type = MIXER_TYPE_MOTOR;
|
||||||
channels[0].throttle1 = 100;
|
channels[0].throttle1 = 100;
|
||||||
channels[0].throttle2 = 0;
|
channels[0].throttle2 = 0;
|
||||||
channels[0].roll = 100;
|
channels[0].roll = 0;
|
||||||
channels[0].pitch = 50;
|
channels[0].pitch = 0;
|
||||||
channels[0].yaw = 0;
|
channels[0].yaw = 0;
|
||||||
|
|
||||||
channels[1].type = MIXER_TYPE_MOTOR;
|
channels[1].type = MIXER_TYPE_SERVO;
|
||||||
channels[1].throttle1 = 100;
|
channels[1].throttle1 = 0;
|
||||||
channels[1].throttle2 = 0;
|
channels[1].throttle2 = 0;
|
||||||
channels[1].roll = -100;
|
channels[1].roll = -100;
|
||||||
channels[1].pitch = 50;
|
channels[1].pitch = 50;
|
||||||
channels[1].yaw = 0;
|
channels[1].yaw = 0;
|
||||||
|
|
||||||
channels[2].type = MIXER_TYPE_MOTOR;
|
channels[2].type = MIXER_TYPE_SERVO;
|
||||||
channels[2].throttle1 = 100;
|
channels[2].throttle1 = 0;
|
||||||
channels[2].throttle2 = 0;
|
channels[2].throttle2 = 0;
|
||||||
channels[2].roll = 0;
|
channels[2].roll = 100;
|
||||||
channels[2].pitch = -100;
|
channels[2].pitch = -50;
|
||||||
channels[2].yaw = 0;
|
channels[2].yaw = 0;
|
||||||
|
|
||||||
channels[3].type = MIXER_TYPE_SERVO;
|
guiSettings.fixedwing.FixedWingThrottle = 1;
|
||||||
channels[3].throttle1 = 0;
|
guiSettings.fixedwing.FixedWingRoll1 = 2;
|
||||||
channels[3].throttle2 = 0;
|
guiSettings.fixedwing.FixedWingRoll2 = 3;
|
||||||
channels[3].roll = 0;
|
|
||||||
channels[3].pitch = 0;
|
|
||||||
channels[3].yaw = 100;
|
|
||||||
|
|
||||||
guiSettings.multi.VTOLMotorNW = 1;
|
|
||||||
guiSettings.multi.VTOLMotorNE = 2;
|
|
||||||
guiSettings.multi.VTOLMotorS = 3;
|
|
||||||
guiSettings.multi.TRIYaw = 4;
|
|
||||||
|
|
||||||
applyMixerConfiguration(channels);
|
applyMixerConfiguration(channels);
|
||||||
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL, guiSettings);
|
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL, guiSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is all wrong... I just copied the Tricopter stuff
|
|
||||||
void VehicleConfigurationHelper::setupAileron()
|
void VehicleConfigurationHelper::setupAileron()
|
||||||
{
|
{
|
||||||
// Typical vehicle setup
|
// Typical vehicle setup
|
||||||
@ -1362,24 +1349,31 @@ void VehicleConfigurationHelper::setupAileron()
|
|||||||
channels[0].type = MIXER_TYPE_MOTOR;
|
channels[0].type = MIXER_TYPE_MOTOR;
|
||||||
channels[0].throttle1 = 100;
|
channels[0].throttle1 = 100;
|
||||||
channels[0].throttle2 = 0;
|
channels[0].throttle2 = 0;
|
||||||
channels[0].roll = 100;
|
channels[0].roll = 0;
|
||||||
channels[0].pitch = 50;
|
channels[0].pitch = 0;
|
||||||
channels[0].yaw = 0;
|
channels[0].yaw = 0;
|
||||||
|
|
||||||
channels[1].type = MIXER_TYPE_MOTOR;
|
channels[1].type = MIXER_TYPE_SERVO;
|
||||||
channels[1].throttle1 = 100;
|
channels[1].throttle1 = 0;
|
||||||
channels[1].throttle2 = 0;
|
channels[1].throttle2 = 0;
|
||||||
channels[1].roll = -100;
|
channels[1].roll = -100;
|
||||||
channels[1].pitch = 50;
|
channels[1].pitch = 0;
|
||||||
channels[1].yaw = 0;
|
channels[1].yaw = 0;
|
||||||
|
|
||||||
channels[2].type = MIXER_TYPE_MOTOR;
|
channels[2].type = MIXER_TYPE_SERVO;
|
||||||
channels[2].throttle1 = 100;
|
channels[2].throttle1 = 0;
|
||||||
channels[2].throttle2 = 0;
|
channels[2].throttle2 = 0;
|
||||||
channels[2].roll = 0;
|
channels[2].roll = 100;
|
||||||
channels[2].pitch = -100;
|
channels[2].pitch = 0;
|
||||||
channels[2].yaw = 0;
|
channels[2].yaw = 0;
|
||||||
|
|
||||||
|
channels[3].type = MIXER_TYPE_SERVO;
|
||||||
|
channels[3].throttle1 = 0;
|
||||||
|
channels[3].throttle2 = 0;
|
||||||
|
channels[3].roll = 0;
|
||||||
|
channels[3].pitch = 100;
|
||||||
|
channels[3].yaw = 0;
|
||||||
|
|
||||||
channels[3].type = MIXER_TYPE_SERVO;
|
channels[3].type = MIXER_TYPE_SERVO;
|
||||||
channels[3].throttle1 = 0;
|
channels[3].throttle1 = 0;
|
||||||
channels[3].throttle2 = 0;
|
channels[3].throttle2 = 0;
|
||||||
@ -1387,60 +1381,12 @@ void VehicleConfigurationHelper::setupAileron()
|
|||||||
channels[3].pitch = 0;
|
channels[3].pitch = 0;
|
||||||
channels[3].yaw = 100;
|
channels[3].yaw = 100;
|
||||||
|
|
||||||
guiSettings.multi.VTOLMotorNW = 1;
|
guiSettings.fixedwing.FixedWingThrottle = 1;
|
||||||
guiSettings.multi.VTOLMotorNE = 2;
|
guiSettings.fixedwing.FixedWingRoll1 = 2;
|
||||||
guiSettings.multi.VTOLMotorS = 3;
|
guiSettings.fixedwing.FixedWingRoll2 = 3;
|
||||||
guiSettings.multi.TRIYaw = 4;
|
guiSettings.fixedwing.FixedWingPitch1 = 4;
|
||||||
|
guiSettings.fixedwing.FixedWingYaw1 = 5;
|
||||||
|
|
||||||
applyMixerConfiguration(channels);
|
applyMixerConfiguration(channels);
|
||||||
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL, guiSettings);
|
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGAILERON, guiSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is all wrong... I just copied the Tricopter stuff
|
|
||||||
void VehicleConfigurationHelper::setupElevon()
|
|
||||||
{
|
|
||||||
// Typical vehicle setup
|
|
||||||
// 1. Setup mixer data
|
|
||||||
// 2. Setup GUI data
|
|
||||||
// 3. Apply changes
|
|
||||||
|
|
||||||
mixerChannelSettings channels[10];
|
|
||||||
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
|
||||||
|
|
||||||
channels[0].type = MIXER_TYPE_MOTOR;
|
|
||||||
channels[0].throttle1 = 100;
|
|
||||||
channels[0].throttle2 = 0;
|
|
||||||
channels[0].roll = 100;
|
|
||||||
channels[0].pitch = 50;
|
|
||||||
channels[0].yaw = 0;
|
|
||||||
|
|
||||||
channels[1].type = MIXER_TYPE_MOTOR;
|
|
||||||
channels[1].throttle1 = 100;
|
|
||||||
channels[1].throttle2 = 0;
|
|
||||||
channels[1].roll = -100;
|
|
||||||
channels[1].pitch = 50;
|
|
||||||
channels[1].yaw = 0;
|
|
||||||
|
|
||||||
channels[2].type = MIXER_TYPE_MOTOR;
|
|
||||||
channels[2].throttle1 = 100;
|
|
||||||
channels[2].throttle2 = 0;
|
|
||||||
channels[2].roll = 0;
|
|
||||||
channels[2].pitch = -100;
|
|
||||||
channels[2].yaw = 0;
|
|
||||||
|
|
||||||
channels[3].type = MIXER_TYPE_SERVO;
|
|
||||||
channels[3].throttle1 = 0;
|
|
||||||
channels[3].throttle2 = 0;
|
|
||||||
channels[3].roll = 0;
|
|
||||||
channels[3].pitch = 0;
|
|
||||||
channels[3].yaw = 100;
|
|
||||||
|
|
||||||
guiSettings.multi.VTOLMotorNW = 1;
|
|
||||||
guiSettings.multi.VTOLMotorNE = 2;
|
|
||||||
guiSettings.multi.VTOLMotorS = 3;
|
|
||||||
guiSettings.multi.TRIYaw = 4;
|
|
||||||
|
|
||||||
applyMixerConfiguration(channels);
|
|
||||||
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON, guiSettings);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -105,7 +105,6 @@ private:
|
|||||||
void setupOctoCopter();
|
void setupOctoCopter();
|
||||||
void setupVtail();
|
void setupVtail();
|
||||||
void setupAileron();
|
void setupAileron();
|
||||||
void setupElevon();
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void uAVOTransactionCompleted(UAVObject *object, bool success);
|
void uAVOTransactionCompleted(UAVObject *object, bool success);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user