diff --git a/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.cpp b/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.cpp
index e2e0099fb..f835dc84e 100644
--- a/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.cpp
+++ b/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.cpp
@@ -1,9 +1,9 @@
/**
******************************************************************************
*
- * @file configgroundvehiclemwidget.cpp
- * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
- * @author K. Sebesta & The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
+ * @file configgroundvehiclewidget.cpp
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
+ * K. Sebesta & The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup GCSPlugins GCS Plugins
* @{
* @addtogroup ConfigPlugin Config Plugin
@@ -81,15 +81,15 @@ ConfigGroundVehicleWidget::ConfigGroundVehicleWidget(QWidget *parent) :
populateChannelComboBoxes();
QStringList groundVehicleTypes;
- groundVehicleTypes << "Turnable (car)" << "Differential (tank)" << "Motorcycle";
+ groundVehicleTypes << "Car (Turnable)" << "Tank (Differential)" << "Motorcycle" << "Boat (Turnable)" << "Boat (Differential)";
m_aircraft->groundVehicleType->addItems(groundVehicleTypes);
m_aircraft->groundShape->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_aircraft->groundShape->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- // Set default model to "Turnable (car)"
+ // Set default model to "Car (Turnable)"
connect(m_aircraft->groundVehicleType, SIGNAL(currentIndexChanged(QString)), this, SLOT(setupUI(QString)));
- m_aircraft->groundVehicleType->setCurrentIndex(m_aircraft->groundVehicleType->findText("Turnable (car)"));
+ m_aircraft->groundVehicleType->setCurrentIndex(m_aircraft->groundVehicleType->findText("Car (Turnable)"));
setupUI(m_aircraft->groundVehicleType->currentText());
}
@@ -122,20 +122,65 @@ void ConfigGroundVehicleWidget::setupUI(QString frameType)
m_aircraft->gvThrottleCurve2GroupBox->setEnabled(true);
m_aircraft->groundVehicleThrottle1->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
- m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_PITCH);
+ m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
initMixerCurves(frameType);
+ if (frameType == "GroundVehicleBoat" || frameType == "Boat (Turnable)") {
+ // Boat
+ m_vehicleImg->setElementId("boat");
+ setComboCurrentIndex(m_aircraft->groundVehicleType, m_aircraft->groundVehicleType->findText("Boat (Turnable)"));
+
+ m_aircraft->gvMotor1ChannelBox->setEnabled(true);
+ m_aircraft->gvMotor2ChannelBox->setEnabled(true);
+
+ m_aircraft->gvMotor1Label->setText("First motor");
+ m_aircraft->gvMotor2Label->setText("Second motor");
+
+ m_aircraft->gvSteering1ChannelBox->setEnabled(true);
+ m_aircraft->gvSteering2ChannelBox->setEnabled(true);
+
+ m_aircraft->gvSteering1Label->setText("First rudder");
+ m_aircraft->gvSteering2Label->setText("Second rudder");
+
+ m_aircraft->gvThrottleCurve1GroupBox->setTitle("Throttle Curve 1");
+ m_aircraft->gvThrottleCurve1GroupBox->setEnabled(true);
+ m_aircraft->gvThrottleCurve2GroupBox->setTitle("Throttle Curve 2");
+ m_aircraft->gvThrottleCurve2GroupBox->setEnabled(false);
+
+ m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
+ m_aircraft->groundVehicleThrottle1->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
+
+ initMixerCurves(frameType);
+
+ // If new setup, set curves values
+ if (frameTypeSaved->getValue().toString() != "GroundVehicleBoat") {
+ m_aircraft->groundVehicleThrottle1->initLinearCurve(5, 1.0, 0.0);
+ m_aircraft->groundVehicleThrottle2->initLinearCurve(5, 1.0, 0.0);
+ }
+ } else if ((frameType == "GroundVehicleDifferential") || (frameType == "Tank (Differential)") ||
+ (frameType == "GroundVehicleDifferentialBoat") || (frameType == "Boat (Differential)")) {
+ bool is_Boat = frameType.contains("Boat");
+
+ if (is_Boat) {
+ // Boat differential
+ m_vehicleImg->setElementId("boat_diff");
+ setComboCurrentIndex(m_aircraft->groundVehicleType,
+ m_aircraft->groundVehicleType->findText("Boat (Differential)"));
+ m_aircraft->gvSteering1Label->setText("First rudder");
+ m_aircraft->gvSteering2Label->setText("Second rudder");
+ } else {
+ // Tank
+ m_vehicleImg->setElementId("tank");
+ setComboCurrentIndex(m_aircraft->groundVehicleType,
+ m_aircraft->groundVehicleType->findText("Tank (Differential)"));
+ m_aircraft->gvSteering1Label->setText("Front steering");
+ m_aircraft->gvSteering2Label->setText("Rear steering");
+ }
- if (frameType == "GroundVehicleDifferential" || frameType == "Differential (tank)") {
- // Tank
- m_vehicleImg->setElementId("tank");
- setComboCurrentIndex(m_aircraft->groundVehicleType,
- m_aircraft->groundVehicleType->findText("Differential (tank)"));
m_aircraft->gvMotor1ChannelBox->setEnabled(true);
m_aircraft->gvMotor2ChannelBox->setEnabled(true);
- m_aircraft->gvThrottleCurve1GroupBox->setEnabled(false);
m_aircraft->gvMotor1Label->setText("Left motor");
m_aircraft->gvMotor2Label->setText("Right motor");
@@ -143,34 +188,34 @@ void ConfigGroundVehicleWidget::setupUI(QString frameType)
m_aircraft->gvSteering1ChannelBox->setEnabled(false);
m_aircraft->gvSteering2ChannelBox->setEnabled(false);
- m_aircraft->gvSteering1Label->setText("Front steering");
- m_aircraft->gvSteering2Label->setText("Rear steering");
-
m_aircraft->differentialSteeringSlider1->setEnabled(true);
m_aircraft->differentialSteeringSlider2->setEnabled(true);
- m_aircraft->gvThrottleCurve1GroupBox->setTitle("Throttle curve1");
- m_aircraft->gvThrottleCurve2GroupBox->setTitle("Throttle curve2 ");
+ m_aircraft->gvThrottleCurve1GroupBox->setTitle("Throttle Curve 1");
+ m_aircraft->gvThrottleCurve1GroupBox->setEnabled(true);
+ m_aircraft->gvThrottleCurve2GroupBox->setTitle("Throttle Curve 2 ");
+ m_aircraft->gvThrottleCurve2GroupBox->setEnabled(false);
- m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_PITCH);
+ m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
m_aircraft->groundVehicleThrottle1->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
initMixerCurves(frameType);
// If new setup, set sliders to defaults and set curves values
- if (frameTypeSaved->getValue().toString() != "GroundVehicleDifferential") {
+ if ((!is_Boat && (frameTypeSaved->getValue().toString() != "GroundVehicleDifferential")) ||
+ (is_Boat && (frameTypeSaved->getValue().toString() != "GroundVehicleDifferentialBoat"))) {
m_aircraft->differentialSteeringSlider1->setValue(100);
m_aircraft->differentialSteeringSlider2->setValue(100);
- m_aircraft->groundVehicleThrottle1->initLinearCurve(5, 1.0, 0.0);
- m_aircraft->groundVehicleThrottle2->initLinearCurve(5, 1.0, 0.0);
+ m_aircraft->groundVehicleThrottle1->initLinearCurve(5, 0.8, 0.0);
+ m_aircraft->groundVehicleThrottle2->initLinearCurve(5, 0.8, 0.0);
}
} else if (frameType == "GroundVehicleMotorcycle" || frameType == "Motorcycle") {
// Motorcycle
m_vehicleImg->setElementId("motorbike");
setComboCurrentIndex(m_aircraft->groundVehicleType, m_aircraft->groundVehicleType->findText("Motorcycle"));
- m_aircraft->gvMotor1ChannelBox->setEnabled(true);
- m_aircraft->gvMotor2ChannelBox->setEnabled(false);
+ m_aircraft->gvMotor1ChannelBox->setEnabled(false);
+ m_aircraft->gvMotor2ChannelBox->setEnabled(true);
m_aircraft->gvMotor2Label->setText("Rear motor");
@@ -181,10 +226,10 @@ void ConfigGroundVehicleWidget::setupUI(QString frameType)
m_aircraft->gvSteering2Label->setText("Balancing");
// Curve1 for Motorcyle
- m_aircraft->gvThrottleCurve1GroupBox->setTitle("Throttle curve1");
+ m_aircraft->gvThrottleCurve1GroupBox->setTitle("Throttle Curve 1");
m_aircraft->gvThrottleCurve1GroupBox->setEnabled(true);
- m_aircraft->gvThrottleCurve2GroupBox->setTitle("Throttle curve2");
- m_aircraft->gvThrottleCurve2GroupBox->setEnabled(true);
+ m_aircraft->gvThrottleCurve2GroupBox->setTitle("Throttle Curve 2");
+ m_aircraft->gvThrottleCurve2GroupBox->setEnabled(false);
m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
m_aircraft->groundVehicleThrottle1->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
@@ -199,7 +244,7 @@ void ConfigGroundVehicleWidget::setupUI(QString frameType)
} else {
// Car
m_vehicleImg->setElementId("car");
- setComboCurrentIndex(m_aircraft->groundVehicleType, m_aircraft->groundVehicleType->findText("Turnable (car)"));
+ setComboCurrentIndex(m_aircraft->groundVehicleType, m_aircraft->groundVehicleType->findText("Car (Turnable)"));
m_aircraft->gvMotor1ChannelBox->setEnabled(true);
m_aircraft->gvMotor2ChannelBox->setEnabled(true);
@@ -213,12 +258,12 @@ void ConfigGroundVehicleWidget::setupUI(QString frameType)
m_aircraft->gvSteering1Label->setText("Front steering");
m_aircraft->gvSteering2Label->setText("Rear steering");
- m_aircraft->gvThrottleCurve2GroupBox->setTitle("Throttle curve2");
- m_aircraft->gvThrottleCurve2GroupBox->setEnabled(true);
- m_aircraft->gvThrottleCurve1GroupBox->setTitle("Throttle curve1");
+ m_aircraft->gvThrottleCurve1GroupBox->setTitle("Front Motor Throttle Curve");
m_aircraft->gvThrottleCurve1GroupBox->setEnabled(true);
+ m_aircraft->gvThrottleCurve2GroupBox->setTitle("Rear Motor Throttle Curve");
+ m_aircraft->gvThrottleCurve2GroupBox->setEnabled(true);
- m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_PITCH);
+ m_aircraft->groundVehicleThrottle2->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
m_aircraft->groundVehicleThrottle1->setMixerType(MixerCurve::MIXERCURVE_THROTTLE);
initMixerCurves(frameType);
@@ -288,7 +333,7 @@ void ConfigGroundVehicleWidget::refreshWidgetsValues(QString frameType)
setComboCurrentIndex(m_aircraft->gvSteering1ChannelBox, config.ground.GroundVehicleSteering1);
setComboCurrentIndex(m_aircraft->gvSteering2ChannelBox, config.ground.GroundVehicleSteering2);
- if (frameType == "GroundVehicleDifferential") {
+ if (frameType.contains("GroundVehicleDifferential")) {
// Find the channel number for Motor1
int channel = m_aircraft->gvMotor1ChannelBox->currentIndex() - 1;
if (channel > -1) {
@@ -322,7 +367,7 @@ void ConfigGroundVehicleWidget::initMixerCurves(QString frameType)
m_aircraft->groundVehicleThrottle1->initCurve(&curveValues);
} else {
// no, init a straight curve
- if (frameType == "GroundVehicleDifferential") {
+ if (frameType.contains("GroundVehicleDifferential")) {
m_aircraft->groundVehicleThrottle1->initLinearCurve(curveValues.count(), 0.8, 0.0);
} else if (frameType == "GroundVehicleCar") {
m_aircraft->groundVehicleThrottle1->initLinearCurve(curveValues.count(), 1.0, 0.0);
@@ -338,7 +383,7 @@ void ConfigGroundVehicleWidget::initMixerCurves(QString frameType)
m_aircraft->groundVehicleThrottle2->initCurve(&curveValues);
} else {
// no, init a straight curve
- if (frameType == "GroundVehicleDifferential") {
+ if (frameType.contains("GroundVehicleDifferential")) {
m_aircraft->groundVehicleThrottle2->initLinearCurve(curveValues.count(), 0.8, 0.0);
} else if (frameType == "GroundVehicleCar") {
m_aircraft->groundVehicleThrottle2->initLinearCurve(curveValues.count(), 1.0, 0.0);
@@ -363,10 +408,16 @@ QString ConfigGroundVehicleWidget::updateConfigObjectsFromWidgets()
setThrottleCurve(mixer, VehicleConfig::MIXER_THROTTLECURVE2, m_aircraft->groundVehicleThrottle2->getCurve());
// All airframe types must start with "GroundVehicle"
- if (m_aircraft->groundVehicleType->currentText() == "Turnable (car)") {
+ if (m_aircraft->groundVehicleType->currentText() == "Boat (Differential)") {
+ airframeType = "GroundVehicleDifferentialBoat";
+ setupGroundVehicleDifferential(airframeType);
+ } else if (m_aircraft->groundVehicleType->currentText() == "Boat (Turnable)") {
+ airframeType = "GroundVehicleBoat";
+ setupGroundVehicleTurnable(airframeType);
+ } else if (m_aircraft->groundVehicleType->currentText() == "Car (Turnable)") {
airframeType = "GroundVehicleCar";
- setupGroundVehicleCar(airframeType);
- } else if (m_aircraft->groundVehicleType->currentText() == "Differential (tank)") {
+ setupGroundVehicleTurnable(airframeType);
+ } else if (m_aircraft->groundVehicleType->currentText() == "Tank (Differential)") {
airframeType = "GroundVehicleDifferential";
setupGroundVehicleDifferential(airframeType);
} else {
@@ -460,13 +511,13 @@ bool ConfigGroundVehicleWidget::setupGroundVehicleDifferential(QString airframeT
// left motor
int channel = m_aircraft->gvMotor1ChannelBox->currentIndex() - 1;
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_REVERSABLEMOTOR);
- setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE2, 127);
+ setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE1, 127);
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW, yawmotor1);
// right motor
channel = m_aircraft->gvMotor2ChannelBox->currentIndex() - 1;
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_REVERSABLEMOTOR);
- setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE2, 127);
+ setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE1, 127);
setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW, -yawmotor2);
// Output success message
@@ -480,7 +531,7 @@ bool ConfigGroundVehicleWidget::setupGroundVehicleDifferential(QString airframeT
Returns False if impossible to create the mixer.
*/
-bool ConfigGroundVehicleWidget::setupGroundVehicleCar(QString airframeType)
+bool ConfigGroundVehicleWidget::setupGroundVehicleTurnable(QString airframeType)
{
// Check coherence:
// Show any config errors in GUI
@@ -517,8 +568,13 @@ bool ConfigGroundVehicleWidget::setupGroundVehicleCar(QString airframeType)
channel = m_aircraft->gvMotor2ChannelBox->currentIndex() - 1;
setMixerType(mixer, channel, VehicleConfig::MIXERTYPE_REVERSABLEMOTOR);
- setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE1, 127);
-
+ if (airframeType == "GroundVehicleCar") {
+ // Car: Throttle2 curve for 2nd motor
+ setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE2, 127);
+ } else {
+ // Boat: Throttle1 curve for both motors
+ setMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_THROTTLECURVE1, 127);
+ }
// Output success message
m_aircraft->gvStatusLabel->setText("Mixer generated");
@@ -539,7 +595,7 @@ bool ConfigGroundVehicleWidget::throwConfigError(QString airframeType)
pixmap.fill(QColor("red"));
- if (airframeType == "GroundVehicleCar") { // Car
+ if ((airframeType == "GroundVehicleCar") || (airframeType == "GroundVehicleBoat")) { // Car
if (m_aircraft->gvMotor1ChannelBox->currentText() == "None"
&& m_aircraft->gvMotor2ChannelBox->currentText() == "None") {
m_aircraft->gvMotor1ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
@@ -559,7 +615,7 @@ bool ConfigGroundVehicleWidget::throwConfigError(QString airframeType)
m_aircraft->gvSteering1ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
m_aircraft->gvSteering2ChannelBox->setItemData(0, 0, Qt::DecorationRole); // Reset color palettes
}
- } else if (airframeType == "GroundVehicleDifferential") { // Tank
+ } else if (airframeType.contains("GroundVehicleDifferential")) { // differential Tank and Boat
if (m_aircraft->gvMotor1ChannelBox->currentText() == "None"
|| m_aircraft->gvMotor2ChannelBox->currentText() == "None") {
m_aircraft->gvMotor1ChannelBox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes
diff --git a/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.h b/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.h
index b9216665b..31bdd167f 100644
--- a/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.h
+++ b/ground/gcs/src/plugins/config/cfg_vehicletypes/configgroundvehiclewidget.h
@@ -2,7 +2,8 @@
******************************************************************************
*
* @file configgroundvehiclewidget.h
- * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
+ * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup GCSPlugins GCS Plugins
* @{
* @addtogroup ConfigPlugin Config Plugin
@@ -64,7 +65,7 @@ private:
virtual void registerWidgets(ConfigTaskWidget &parent);
virtual void resetActuators(GUIConfigDataUnion *configData);
- bool setupGroundVehicleCar(QString airframeType);
+ bool setupGroundVehicleTurnable(QString airframeType);
bool setupGroundVehicleDifferential(QString airframeType);
bool setupGroundVehicleMotorcycle(QString airframeType);
diff --git a/ground/gcs/src/plugins/config/configinputwidget.cpp b/ground/gcs/src/plugins/config/configinputwidget.cpp
index d0e77a50c..9df7c0906 100644
--- a/ground/gcs/src/plugins/config/configinputwidget.cpp
+++ b/ground/gcs/src/plugins/config/configinputwidget.cpp
@@ -882,10 +882,18 @@ void ConfigInputWidget::wizardTearDownStep(enum wizardSteps step)
transmitterType = acro;
} else if (wizardUi->typeGround->isChecked()) {
transmitterType = ground;
- /* Make sure to tell controller, this is really a ground vehicle. */
+
systemSettingsData = systemSettingsObj->getData();
- systemSettingsData.AirframeType = SystemSettings::AIRFRAMETYPE_GROUNDVEHICLECAR;
- systemSettingsObj->setData(systemSettingsData);
+ /* Make sure to tell controller, this is really a ground vehicle. */
+ if ((systemSettingsData.AirframeType != SystemSettings::AIRFRAMETYPE_GROUNDVEHICLECAR) ||
+ (systemSettingsData.AirframeType != SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIAL) ||
+ (systemSettingsData.AirframeType != SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEMOTORCYCLE) ||
+ (systemSettingsData.AirframeType != SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEBOAT) ||
+ (systemSettingsData.AirframeType != SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIALBOAT)) {
+ // Apply default ground vehicle airframe
+ systemSettingsData.AirframeType = SystemSettings::AIRFRAMETYPE_GROUNDVEHICLECAR;
+ systemSettingsObj->setData(systemSettingsData);
+ }
} else {
transmitterType = heli;
}
@@ -1990,7 +1998,11 @@ void ConfigInputWidget::simpleCalibration(bool enable)
manualSettingsData = manualSettingsObj->getData();
systemSettingsData = systemSettingsObj->getData();
- if (systemSettingsData.AirframeType == SystemSettings::AIRFRAMETYPE_GROUNDVEHICLECAR) {
+ if ((systemSettingsData.AirframeType == SystemSettings::AIRFRAMETYPE_GROUNDVEHICLECAR) ||
+ (systemSettingsData.AirframeType == SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIAL) ||
+ (systemSettingsData.AirframeType == SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEMOTORCYCLE) ||
+ (systemSettingsData.AirframeType == SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEBOAT) ||
+ (systemSettingsData.AirframeType == SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIALBOAT)) {
QMessageBox::warning(this, tr("Ground Vehicle"),
tr("Please center throttle control and press OK when ready.
"));
diff --git a/ground/gcs/src/plugins/config/configvehicletypewidget.cpp b/ground/gcs/src/plugins/config/configvehicletypewidget.cpp
index 69ec26829..9e35c40d6 100644
--- a/ground/gcs/src/plugins/config/configvehicletypewidget.cpp
+++ b/ground/gcs/src/plugins/config/configvehicletypewidget.cpp
@@ -2,7 +2,7 @@
******************************************************************************
*
* @file configvehicletypewidget.cpp
- * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
* E. Lafargue, K. Sebesta & The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012
* @addtogroup GCSPlugins GCS Plugins
* @{
@@ -99,6 +99,8 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLECAR:
case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIAL:
case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEMOTORCYCLE:
+ case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEBOAT:
+ case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIALBOAT:
// ground
channelDesc = ConfigGroundVehicleWidget::getChannelDescriptions();
break;
@@ -282,9 +284,11 @@ int ConfigVehicleTypeWidget::frameCategory(QString frameType)
return ConfigVehicleTypeWidget::MULTIROTOR;
} else if (frameType == "HeliCP") {
return ConfigVehicleTypeWidget::HELICOPTER;
- } else if (frameType == "GroundVehicleCar" || frameType == "Turnable (car)"
- || frameType == "GroundVehicleDifferential" || frameType == "Differential (tank)"
- || frameType == "GroundVehicleMotorcycle" || frameType == "Motorcycle") {
+ } else if (frameType == "GroundVehicleCar" || frameType == "Car (Turnable)"
+ || frameType == "GroundVehicleDifferential" || frameType == "Tank (Differential)"
+ || frameType == "GroundVehicleMotorcycle" || frameType == "Motorcycle"
+ || frameType == "GroundVehicleBoat" || frameType == "Boat (Turnable)"
+ || frameType == "GroundVehicleDifferentialBoat" || frameType == "Boat (Differential)") {
return ConfigVehicleTypeWidget::GROUND;
} else {
return ConfigVehicleTypeWidget::CUSTOM;
diff --git a/ground/gcs/src/plugins/config/images/ground-shapes.svg b/ground/gcs/src/plugins/config/images/ground-shapes.svg
index 730da9a62..d1efcd420 100644
--- a/ground/gcs/src/plugins/config/images/ground-shapes.svg
+++ b/ground/gcs/src/plugins/config/images/ground-shapes.svg
@@ -14,9 +14,9 @@
id="Layer_1"
x="0px"
y="0px"
- width="665.06097"
- height="2346.0632"
- viewBox="0 0 665.06097 2346.0632"
+ width="804.33447"
+ height="3250.895"
+ viewBox="0 0 804.33447 3250.895"
enable-background="new 0 0 792 1008"
xml:space="preserve"
inkscape:version="0.91 r13725"
@@ -26,7 +26,7 @@
inkscape:export-ydpi="70.479134">image/svg+xml
\ No newline at end of file
diff --git a/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp
index 5ea7fea46..c8f02c137 100644
--- a/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp
+++ b/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp
@@ -2,7 +2,7 @@
******************************************************************************
*
* @file connectiondiagram.cpp
- * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup
* @{
@@ -159,6 +159,12 @@ void ConnectionDiagram::setupGraphicsScene()
case VehicleConfigurationSource::GROUNDVEHICLE_MOTORCYCLE:
elementsToShow << "motorbike";
break;
+ case VehicleConfigurationSource::GROUNDVEHICLE_BOAT:
+ elementsToShow << "boat";
+ break;
+ case VehicleConfigurationSource::GROUNDVEHICLE_DIFFERENTIAL_BOAT:
+ elementsToShow << "boat_diff";
+ break;
default:
break;
}
diff --git a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp
index be54e549e..f1836c73e 100644
--- a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp
+++ b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp
@@ -82,9 +82,11 @@ void OutputCalibrationPage::setupActuatorMinMaxAndNeutral(int motorChannelStart,
m_actuatorSettings[servoid].channelNeutral = LOW_OUTPUT_RATE_MILLISECONDS;
m_actuatorSettings[servoid].channelMax = getHighOutputRate();
m_actuatorSettings[servoid].isReversableMotor = false;
- // Car and Tank should use reversable Esc/motors
+ // Car, Tank, Boat and Boat differential should use reversable Esc/motors
if ((getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_CAR)
- || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_DIFFERENTIAL)) {
+ || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_DIFFERENTIAL)
+ || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_BOAT)
+ || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_DIFFERENTIAL_BOAT)) {
m_actuatorSettings[servoid].channelNeutral = NEUTRAL_OUTPUT_RATE_MILLISECONDS;
m_actuatorSettings[servoid].isReversableMotor = true;
// Set initial output value
@@ -290,6 +292,30 @@ void OutputCalibrationPage::setupVehicle()
setupActuatorMinMaxAndNeutral(3, 3, 2);
+ getWizard()->setActuatorSettings(m_actuatorSettings);
+ break;
+ case SetupWizard::GROUNDVEHICLE_BOAT:
+ loadSVGFile(GROUND_SVG_FILE);
+ m_wizardIndexes << 0 << 1 << 2;
+ m_vehicleElementIds << "boat" << "boat-frame" << "boat-motor" << "boat-rudder";
+ m_vehicleElementTypes << FULL << FRAME << MOTOR << SERVO;
+ m_vehicleHighlightElementIndexes << 0 << 1 << 2;
+ m_channelIndex << 0 << 3 << 0;
+
+ setupActuatorMinMaxAndNeutral(3, 3, 2);
+
+ getWizard()->setActuatorSettings(m_actuatorSettings);
+ break;
+ case SetupWizard::GROUNDVEHICLE_DIFFERENTIAL_BOAT:
+ loadSVGFile(GROUND_SVG_FILE);
+ m_wizardIndexes << 0 << 1 << 1;
+ m_vehicleElementIds << "boat_diff" << "boat_diff-frame" << "boat_diff-left-motor" << "boat_diff-right-motor";
+ m_vehicleElementTypes << FULL << FRAME << MOTOR << MOTOR;
+ m_vehicleHighlightElementIndexes << 0 << 1 << 2;
+ m_channelIndex << 0 << 0 << 1;
+
+ setupActuatorMinMaxAndNeutral(0, 1, 2);
+
getWizard()->setActuatorSettings(m_actuatorSettings);
break;
diff --git a/ground/gcs/src/plugins/setupwizard/pages/surfacepage.cpp b/ground/gcs/src/plugins/setupwizard/pages/surfacepage.cpp
index 405f1a4c9..dc5ded76b 100644
--- a/ground/gcs/src/plugins/setupwizard/pages/surfacepage.cpp
+++ b/ground/gcs/src/plugins/setupwizard/pages/surfacepage.cpp
@@ -2,7 +2,8 @@
******************************************************************************
*
* @file surfacepage.cpp
- * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2014.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2016.
+ * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2014.
* @addtogroup
* @{
* @addtogroup SurfacePage
@@ -56,12 +57,12 @@ void SurfacePage::setupSelection(Selection *selection)
"Please select the type of ground vehicle you want to create a configuration for below:"));
selection->addItem(tr("Car"),
- tr("This setup expects a traditional car with a rear motor and a front streering servo"),
+ tr("This setup expects a traditional car with a rear motor and a front steering servo."),
"car",
SetupWizard::GROUNDVEHICLE_CAR);
selection->addItem(tr("Tank"),
- tr("This setup expects a traditional vehicle using only two motors and differential steering"),
+ tr("This setup expects a traditional vehicle using only two motors and differential steering."),
"tank",
SetupWizard::GROUNDVEHICLE_DIFFERENTIAL);
@@ -69,4 +70,14 @@ void SurfacePage::setupSelection(Selection *selection)
tr("This setup currently expects a motorcyle setup, using one motor and one servo for steering."),
"motorbike",
SetupWizard::GROUNDVEHICLE_MOTORCYCLE);
+
+ selection->addItem(tr("Boat"),
+ tr("This setup currently expects a boat setup, using one motor and one servo for rudder/helm."),
+ "boat",
+ SetupWizard::GROUNDVEHICLE_BOAT);
+
+ selection->addItem(tr("Boat differential"),
+ tr("This setup expects a boat using only two motors and differential steering."),
+ "boat_diff",
+ SetupWizard::GROUNDVEHICLE_DIFFERENTIAL_BOAT);
}
diff --git a/ground/gcs/src/plugins/setupwizard/resources/connection-diagrams.svg b/ground/gcs/src/plugins/setupwizard/resources/connection-diagrams.svg
index 7a5acbdea..0792b247a 100644
--- a/ground/gcs/src/plugins/setupwizard/resources/connection-diagrams.svg
+++ b/ground/gcs/src/plugins/setupwizard/resources/connection-diagrams.svg
@@ -27,16 +27,16 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
- inkscape:window-height="983"
+ inkscape:window-height="1016"
id="namedview4616"
showgrid="false"
- inkscape:zoom="0.7387262"
- inkscape:cx="699.29419"
- inkscape:cy="537.41156"
+ inkscape:zoom="0.82128601"
+ inkscape:cx="866.11172"
+ inkscape:cy="491.62738"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
- inkscape:current-layer="layer79"
+ inkscape:current-layer="layer94"
fit-margin-top="15"
fit-margin-left="15"
fit-margin-right="15"
@@ -19258,6 +19258,240 @@
y1="1450"
x2="1490"
y2="1450" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -56391,34 +56625,34 @@
transform="matrix(1.0251161,0,0,-1.0251161,645.40289,1667.6177)">
@@ -56433,7 +56667,7 @@
transform="translate(175.5146,1564.4219)">
@@ -56455,7 +56689,7 @@
id="g10097">
@@ -56480,7 +56714,7 @@
id="g10129">
@@ -56493,7 +56727,7 @@
id="g10143">
@@ -56508,7 +56742,7 @@
transform="translate(587.4541,1567.4229)">
@@ -56530,7 +56764,7 @@
id="g10205">
@@ -56555,7 +56789,7 @@
id="g10237">
@@ -56566,17 +56800,17 @@
@@ -56612,7 +56846,7 @@
id="g10309">
@@ -56637,7 +56871,7 @@
id="g10341">
@@ -56648,22 +56882,22 @@
@@ -56725,19 +56959,19 @@
style="fill:#6b6b6b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99199998px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" />
@@ -56749,90 +56983,90 @@
style="fill:none;stroke:#000000;stroke-width:0.99212599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" />
@@ -56845,7 +57079,7 @@
style="fill:#4d4d4d;fill-rule:nonzero" />
@@ -56861,22 +57095,22 @@
@@ -56887,23 +57121,23 @@
@@ -57017,26 +57251,26 @@
sodipodi:nodetypes="ccc"
id="path9977"
style="opacity:0.6;fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotS);marker-end:url(#Arrow2Send)"
- d="m 684.6044,148.81326 l 72.17444,0 l 99.49693,-20.7551"
+ d="M 684.6044,148.81326 L 756.77884,148.81326 L 856.27577,128.05816"
stroke-miterlimit="4"
inkscape:connector-curvature="0" />
@@ -57069,13 +57303,13 @@
inkscape:connector-curvature="0"
style="fill:none;stroke:#2e2d2d;stroke-width:23.29394341;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path5043-4"
- d="m 1237.6152,301.80531 c 3.018,3e-5 5.4616,-2.09563 5.4616,-4.68391 c 0,-2.58533 -2.4453,-4.68243 -5.4616,-4.6839 l -270.99659,0.002 c -3.01799,0 -5.46165,2.09566 -5.46165,4.68392 c 0,2.58536 2.44533,4.68245 5.46179,4.68392 l 270.99645,-0.002 z" />
+ d="M 1237.6152,301.80531 C 1240.6332,301.80534 1243.0768,299.70968 1243.0768,297.1214 C 1243.0768,294.53607 1240.6315,292.43897 1237.6152,292.4375 L 966.61861,292.4395 C 963.60062,292.4395 961.15696,294.53516 961.15696,297.12342 C 961.15696,299.70878 963.60229,301.80587 966.61875,301.80734 L 1237.6152,301.80534 Z" />
+ d="M 1061.0892,39.3142 L 1138.9152,39.3142 C 1141.0666,39.3142 1147.0411,44.625059 1147.0411,51.179153 L 1147.0411,301.14395 C 1147.0411,307.70608 1141.0666,313.03305 1138.9152,313.03305 L 1067.4282,313.03305 C 1065.2743,313.03305 1057.1973,307.70608 1057.1973,301.14395 L 1057.1973,51.179153 C 1057.1973,44.625059 1065.2743,39.3142 1067.4282,39.3142" />
@@ -57113,23 +57347,23 @@
@@ -57255,7 +57489,7 @@
inkscape:connector-curvature="0"
style="fill:#b1c7eb;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5075-0"
- d="m 0,0 c 33.172,-33.223 33.172,-87.071 -0.049,-120.245 c -33.215,-33.22 -87.06,-33.22 -120.24,0 c -33.213,33.174 -33.213,87.021 0.008,120.237 C -87.066,33.214 -33.221,33.215 0,0" />
+ d="M 0,0 C 33.172,-33.223 33.172,-87.071 -0.049,-120.245 C -33.264,-153.465 -87.109,-153.465 -120.289,-120.245 C -153.502,-87.071 -153.502,-33.224 -120.281,-0.008 C -87.066,33.214 -33.221,33.215 0,0" />
@@ -57283,7 +57517,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39816-2);fill-opacity:1;stroke:none"
id="path5353-4"
- d="m 939.441,1484.164 c -3.009,-9.776 -12.107,-16.872 -22.865,-16.875 c -12.172,0 -22.205,9.107 -23.699,20.877 l 12.014,0 l -35.604,35.601 l -35.599,-35.601 l 11.283,0 c 1.64,-31.106 27.381,-55.821 58.888,-55.811 c 23.629,-0.01 44.004,13.895 53.426,33.963 l -17.844,17.846 z" />
+ d="M 939.441,1484.164 C 936.432,1474.388 927.334,1467.292 916.576,1467.289 C 904.404,1467.289 894.371,1476.396 892.877,1488.166 L 904.891,1488.166 L 869.287,1523.767 L 833.688,1488.166 L 844.971,1488.166 C 846.611,1457.06 872.352,1432.345 903.859,1432.355 C 927.488,1432.345 947.863,1446.25 957.285,1466.318 L 939.441,1484.164 Z" />
@@ -57309,7 +57543,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39814-0);fill-opacity:1;stroke:none"
id="path5385-8"
- d="m 989.162,1494.462 c -1.295,31.435 -27.178,56.541 -58.93,56.528 c -23.839,0 -44.363,-14.144 -53.666,-34.502 l 17.444,-17.442 c 3.242,9.351 12.109,16.068 22.572,16.066 c 12.092,0.01 22.066,-8.989 23.662,-20.65 l -11.103,0 l 10.3,-10.3 l 17.844,-17.846 l 7.457,-7.457 l 35.602,35.601 l -11.182,0 z" />
+ d="M 989.162,1494.462 C 987.867,1525.897 961.984,1551.003 930.232,1550.99 C 906.393,1550.99 885.869,1536.846 876.566,1516.488 L 894.01,1499.046 C 897.252,1508.397 906.119,1515.114 916.582,1515.112 C 928.674,1515.122 938.648,1506.123 940.244,1494.462 L 929.141,1494.462 L 939.441,1484.162 L 957.285,1466.316 L 964.742,1458.859 L 1000.344,1494.46 L 989.162,1494.46 Z" />
@@ -57320,12 +57554,12 @@
inkscape:connector-curvature="0"
style="fill:#48484a;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5389-0"
- d="m 969.4838,35.32925 c 11.755,11.76625 11.755,30.8375 -0.01,42.59625 c -11.75747,11.7625 -30.82997,11.7625 -42.59497,0 c -11.755,-11.75875 -11.755,-30.8275 0.01,-42.58625 c 11.7575,-11.765 30.83,-11.76625 42.59496,-0.0125" />
+ d="M 969.4838,35.32925 C 981.2388,47.0955 981.2388,66.16675 969.4738,77.9255 C 957.71633,89.688 938.64383,89.688 926.87883,77.9255 C 915.12383,66.16675 915.12383,47.098 926.88883,35.33925 C 938.64633,23.57425 957.71883,23.573 969.48379,35.32675" />
+ d="M 946.85808,66.63225 L 946.85808,52.98475 L 943.39434,55.66225 L 941.10933,52.5385 L 947.22433,48.051 L 951.26684,48.051 L 951.26684,66.63225 L 946.85808,66.63225 Z" />
@@ -57343,7 +57577,7 @@
inkscape:connector-curvature="0"
style="fill:#b1c7eb;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5059-7"
- d="m 0,0 c 33.174,-33.223 33.174,-87.071 -0.049,-120.245 c -33.217,-33.22 -87.064,-33.22 -120.246,0 c -33.215,33.174 -33.215,87.021 0.008,120.237 C -87.07,33.214 -33.223,33.215 0,0" />
+ d="M 0,0 C 33.174,-33.223 33.174,-87.071 -0.049,-120.245 C -33.266,-153.465 -87.113,-153.465 -120.295,-120.245 C -153.51,-87.071 -153.51,-33.224 -120.287,-0.008 C -87.07,33.214 -33.223,33.215 0,0" />
@@ -57366,7 +57600,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39820-6);fill-opacity:1;stroke:none"
id="path5161-8"
- d="m 1086.99,1484.162 c 3.008,-9.774 12.108,-16.87 22.864,-16.873 c 12.173,0 22.207,9.109 23.701,20.878 l -12.014,-10e-4 l 35.604,35.604 l 35.601,-35.603 l -11.285,0 c -1.641,-31.105 -27.381,-55.822 -58.889,-55.814 c -23.629,-0.01 -44.006,13.897 -53.427,33.965 l 17.845,17.844 z" />
+ d="M 1086.99,1484.162 C 1089.998,1474.388 1099.098,1467.292 1109.854,1467.289 C 1122.027,1467.289 1132.061,1476.398 1133.555,1488.167 L 1121.541,1488.166 L 1157.145,1523.77 L 1192.746,1488.167 L 1181.461,1488.167 C 1179.82,1457.062 1154.08,1432.345 1122.572,1432.353 C 1098.943,1432.343 1078.566,1446.25 1069.145,1466.318 L 1086.99,1484.162 Z" />
@@ -57392,7 +57626,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39818-1);fill-opacity:1;stroke:none"
id="path5193-7"
- d="m 1037.268,1494.462 c 1.295,31.435 27.179,56.542 58.933,56.529 c 23.84,0.01 44.363,-14.143 53.666,-34.501 l -17.443,-17.444 c -3.244,9.353 -12.111,16.07 -22.574,16.067 c -12.092,0.01 -22.067,-8.99 -23.664,-20.651 l 11.105,0 l -10.301,-10.302 l -17.845,-17.844 l -7.457,-7.457 l -35.602,35.601 l 11.182,0 z" />
+ d="M 1037.268,1494.462 C 1038.563,1525.897 1064.447,1551.004 1096.201,1550.991 C 1120.041,1551.001 1140.564,1536.848 1149.867,1516.49 L 1132.424,1499.046 C 1129.18,1508.399 1120.313,1515.116 1109.85,1515.113 C 1097.758,1515.123 1087.783,1506.123 1086.186,1494.462 L 1097.291,1494.462 L 1086.99,1484.16 L 1069.145,1466.316 L 1061.688,1458.859 L 1026.086,1494.46 L 1037.268,1494.46 Z" />
@@ -57403,12 +57637,12 @@
inkscape:connector-curvature="0"
style="fill:#48484a;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5397-5"
- d="m 1276.7533,35.32925 c 11.755,11.76625 11.755,30.8375 -0.013,42.59625 c -11.7575,11.7625 -30.83,11.7625 -42.5975,0 c -11.755,-11.75875 -11.755,-30.8275 0.013,-42.58625 c 11.7575,-11.765 30.83,-11.76625 42.5975,-0.0125" />
+ d="M 1276.7533,35.32925 C 1288.5083,47.0955 1288.5083,66.16675 1276.7403,77.9255 C 1264.9828,89.688 1245.9103,89.688 1234.1428,77.9255 C 1222.3878,66.16675 1222.3878,47.098 1234.1558,35.33925 C 1245.9133,23.57425 1264.9858,23.573 1276.7533,35.32675" />
+ d="M 1247.4308,65.38175 L 1247.4308,61.708 L 1254.6746,55.14675 C 1255.5921,54.2805 1256.1971,53.41425 1256.1971,52.2855 C 1256.1971,50.973 1255.2771,50.05425 1253.8871,50.05425 C 1252.4171,50.05425 1251.4471,51.20925 1251.2621,52.863 L 1247.0383,52.2855 C 1247.4571,48.533 1250.5021,46.30175 1254.1233,46.30175 C 1257.5358,46.30175 1260.8421,48.113 1260.8421,51.99675 C 1260.8421,54.648 1259.2933,56.1955 1257.5871,57.718 L 1253.2833,61.5505 L 1260.8683,61.5505 L 1260.8683,65.38175 L 1247.4308,65.38175 Z" />
@@ -57426,7 +57660,7 @@
inkscape:connector-curvature="0"
style="fill:#b1c7eb;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5107-4"
- d="m 0,0 c 33.172,-33.223 33.172,-87.07 -0.049,-120.244 c -33.215,-33.221 -87.06,-33.221 -120.24,0 c -33.213,33.174 -33.213,87.019 0.008,120.236 C -87.066,33.213 -33.221,33.215 0,0" />
+ d="M 0,0 C 33.172,-33.223 33.172,-87.07 -0.049,-120.244 C -33.264,-153.465 -87.109,-153.465 -120.289,-120.244 C -153.502,-87.07 -153.502,-33.225 -120.281,-0.008 C -87.066,33.213 -33.221,33.215 0,0" />
@@ -57449,7 +57683,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39826-1);fill-opacity:1;stroke:none"
id="path5225-1"
- d="m 894.977,1292.144 c 3.009,-9.774 12.107,-16.87 22.865,-16.873 c 12.172,0 22.205,9.107 23.699,20.876 l -12.014,-10e-4 l 35.604,35.603 l 35.601,-35.602 l -11.285,0 c -1.64,-31.105 -27.381,-55.82 -58.888,-55.812 c -23.627,-0.01 -44.004,13.896 -53.426,33.965 l 17.844,17.844 z" />
+ d="M 894.977,1292.144 C 897.986,1282.37 907.084,1275.274 917.842,1275.271 C 930.014,1275.271 940.047,1284.378 941.541,1296.147 L 929.527,1296.146 L 965.131,1331.749 L 1000.732,1296.147 L 989.447,1296.147 C 987.807,1265.042 962.066,1240.327 930.559,1240.335 C 906.932,1240.325 886.555,1254.231 877.133,1274.3 L 894.977,1292.144 Z" />
@@ -57475,7 +57709,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39828-6);fill-opacity:1;stroke:none"
id="path5257-5"
- d="m 845.256,1302.444 c 1.295,31.436 27.178,56.541 58.93,56.528 c 23.839,0 44.363,-14.145 53.666,-34.502 l -17.444,-17.444 c -3.242,9.354 -12.109,16.071 -22.572,16.069 c -12.092,0.01 -22.065,-8.991 -23.662,-20.651 l 11.105,0 l -10.302,-10.302 l -17.844,-17.844 l -7.457,-7.457 l -35.602,35.601 l 11.182,0 z" />
+ d="M 845.256,1302.444 C 846.551,1333.88 872.434,1358.985 904.186,1358.972 C 928.025,1358.972 948.549,1344.827 957.852,1324.47 L 940.408,1307.026 C 937.166,1316.38 928.299,1323.097 917.836,1323.095 C 905.744,1323.105 895.771,1314.104 894.174,1302.444 L 905.279,1302.444 L 894.977,1292.142 L 877.133,1274.298 L 869.676,1266.841 L 834.074,1302.442 L 845.256,1302.442 Z" />
@@ -57486,12 +57720,12 @@
inkscape:connector-curvature="0"
style="fill:#48484a;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5405-2"
- d="m 969.4838,275.35487 c 11.755,11.765 11.755,30.83501 -0.01,42.5925 c -11.75747,11.76501 -30.82997,11.76501 -42.59247,0 c -11.7575,-11.75749 -11.7575,-30.8275 0.008,-42.58499 c 11.7575,-11.765 30.83,-11.765 42.59496,-0.0125" />
+ d="M 969.4838,275.35487 C 981.2388,287.11987 981.2388,306.18988 969.4738,317.94737 C 957.71633,329.71238 938.64383,329.71238 926.88133,317.94737 C 915.12383,306.18988 915.12383,287.11987 926.88933,275.36238 C 938.64683,263.59738 957.71933,263.59738 969.48429,275.34988" />
+ d="M 948.85271,291.73913 L 948.77391,291.73913 L 944.36391,298.61663 L 948.85266,298.61663 L 948.85266,291.73913 Z M 952.94646,302.18538 L 952.94646,305.80662 L 948.82646,305.80662 L 948.82646,302.18538 L 940.08521,302.18538 L 940.08521,298.48412 L 947.64396,287.22537 L 952.92021,287.22537 L 952.92021,298.61663 L 955.49271,298.61663 L 955.49271,302.18538 L 952.94646,302.18538 Z" />
@@ -57509,7 +57743,7 @@
inkscape:connector-curvature="0"
style="fill:#b1c7eb;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5091-5"
- d="m 0,0 c 33.174,-33.223 33.174,-87.07 -0.049,-120.244 c -33.217,-33.221 -87.064,-33.221 -120.246,0 c -33.215,33.174 -33.215,87.019 0.008,120.236 C -87.07,33.213 -33.223,33.215 0,0" />
+ d="M 0,0 C 33.174,-33.223 33.174,-87.07 -0.049,-120.244 C -33.266,-153.465 -87.113,-153.465 -120.295,-120.244 C -153.51,-87.07 -153.51,-33.225 -120.287,-0.008 C -87.07,33.213 -33.223,33.215 0,0" />
@@ -57532,7 +57766,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39824-5);fill-opacity:1;stroke:none"
id="path5289-5"
- d="m 1131.455,1292.144 c -3.008,-9.776 -12.107,-16.872 -22.865,-16.875 c -12.172,0 -22.205,9.109 -23.701,20.878 l 12.015,-10e-4 l -35.605,35.603 l -35.6,-35.6 l 11.283,0 c 1.641,-31.107 27.383,-55.822 58.891,-55.814 c 23.629,-0.012 44.006,13.894 53.428,33.963 l -17.846,17.846 z" />
+ d="M 1131.455,1292.144 C 1128.447,1282.368 1119.348,1275.272 1108.59,1275.269 C 1096.418,1275.269 1086.385,1284.378 1084.889,1296.147 L 1096.904,1296.146 L 1061.299,1331.749 L 1025.699,1296.149 L 1036.982,1296.149 C 1038.623,1265.042 1064.365,1240.327 1095.873,1240.335 C 1119.502,1240.323 1139.879,1254.229 1149.301,1274.298 L 1131.455,1292.144 Z" />
@@ -57558,7 +57792,7 @@
inkscape:connector-curvature="0"
style="fill:url(#radialGradient39822-2);fill-opacity:1;stroke:none"
id="path5321-5"
- d="m 1181.178,1302.442 c -1.295,31.436 -27.182,56.543 -58.934,56.53 c -23.84,0.01 -44.363,-14.143 -53.666,-34.5 l 17.443,-17.446 c 3.245,9.354 12.112,16.071 22.575,16.069 c 12.092,0.01 22.064,-8.991 23.664,-20.651 l -11.106,0 l 10.301,-10.3 l 17.846,-17.846 l 7.457,-7.457 l 35.601,35.601 l -11.181,0 z" />
+ d="M 1181.178,1302.442 C 1179.883,1333.878 1153.996,1358.985 1122.244,1358.972 C 1098.404,1358.982 1077.881,1344.829 1068.578,1324.472 L 1086.021,1307.026 C 1089.266,1316.38 1098.133,1323.097 1108.596,1323.095 C 1120.688,1323.105 1130.66,1314.104 1132.26,1302.444 L 1121.154,1302.444 L 1131.455,1292.144 L 1149.301,1274.298 L 1156.758,1266.841 L 1192.359,1302.442 L 1181.178,1302.442 Z" />
@@ -57569,23 +57803,23 @@
inkscape:connector-curvature="0"
style="fill:#48484a;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path5413-7"
- d="m 1275.5033,275.35237 c 11.755,11.76501 11.755,30.83751 -0.013,42.595 c -11.7575,11.76501 -30.83,11.76501 -42.5975,0 c -11.755,-11.75749 -11.755,-30.8275 0.013,-42.58499 c 11.7575,-11.765 30.83,-11.765 42.5975,-0.0125" />
+ d="M 1275.5033,275.35237 C 1287.2583,287.11738 1287.2583,306.18988 1275.4903,317.94737 C 1263.7328,329.71238 1244.6603,329.71238 1232.8928,317.94737 C 1221.1378,306.18988 1221.1378,287.11987 1232.9058,275.36238 C 1244.6633,263.59738 1263.7358,263.59738 1275.5033,275.34988" />
+ d="M 1253.9396,306.30575 C 1250.5533,306.30575 1247.4833,304.83575 1246.4858,301.372 L 1250.5796,300.29575 C 1250.9221,301.5295 1252.0496,302.60575 1253.7296,302.60575 C 1254.9896,302.60575 1256.4321,301.97575 1256.4321,300.242 C 1256.4321,298.35325 1254.4908,297.802 1252.6533,297.802 L 1251.4721,297.802 L 1251.4721,294.57325 L 1252.7583,294.57325 C 1254.4121,294.57325 1256.0121,294.15325 1256.0121,292.3695 C 1256.0121,291.03075 1254.8846,290.32325 1253.6771,290.32325 C 1252.4171,290.32325 1251.4196,291.13575 1251.1321,292.39575 L 1247.0383,291.45075 C 1247.9283,288.32825 1250.8683,286.727 1253.9658,286.727 C 1257.2471,286.727 1260.5008,288.407 1260.5008,291.97575 C 1260.5008,294.02325 1259.1883,295.54575 1257.3771,296.01825 L 1257.3771,296.09695 C 1259.4771,296.59445 1260.9458,298.32695 1260.9458,300.4007 C 1260.9458,304.4682 1257.3508,306.3057 1253.9396,306.3057" />
@@ -57624,29 +57858,29 @@
transform="matrix(1,0,0,-1,0,2792.2535)">
@@ -57662,7 +57896,7 @@
transform="translate(1170.2617,1551.2617)">
@@ -57680,7 +57914,7 @@
transform="translate(977.2441,1551.2617)">
@@ -57708,7 +57942,7 @@
style="fill:url(#linearGradient10058-2)">
@@ -57729,7 +57963,7 @@
transform="translate(1170.2617,1361.2432)">
@@ -57747,7 +57981,7 @@
transform="translate(977.2441,1361.2432)">
@@ -57770,7 +58004,7 @@
id="g5159">
@@ -57796,7 +58030,7 @@
id="g5191">
@@ -57822,7 +58056,7 @@
id="g5223">
@@ -57848,7 +58082,7 @@
id="g5255">
@@ -57874,7 +58108,7 @@
id="g5287">
@@ -57900,7 +58134,7 @@
id="g5319">
@@ -57926,7 +58160,7 @@
id="g5383">
@@ -57937,47 +58171,47 @@
@@ -58017,23 +58251,23 @@
@@ -58146,13 +58380,13 @@
@@ -58190,29 +58424,29 @@
id="g5429">
@@ -58227,7 +58461,7 @@
transform="translate(1823.7813,1443.3135)">
@@ -58244,7 +58478,7 @@
transform="translate(1687.2949,1579.7949)">
@@ -58261,7 +58495,7 @@
transform="translate(1689.418,1308.9482)">
@@ -58278,7 +58512,7 @@
transform="translate(1552.9316,1445.4316)">
@@ -58300,7 +58534,7 @@
id="g5577">
@@ -58326,7 +58560,7 @@
id="g5609">
@@ -58351,7 +58585,7 @@
id="g5641">
@@ -58377,7 +58611,7 @@
id="g5673">
@@ -58402,7 +58636,7 @@
id="g5705">
@@ -58427,7 +58661,7 @@
id="g5737">
@@ -58452,7 +58686,7 @@
id="g5769">
@@ -58477,7 +58711,7 @@
id="g5801">
@@ -58488,47 +58722,47 @@
@@ -58568,23 +58802,23 @@
@@ -58696,7 +58930,7 @@
@@ -58775,7 +59009,7 @@
id="g4307">
@@ -58791,7 +59025,7 @@
transform="translate(2515.9893,1514.8203)">
@@ -58808,7 +59042,7 @@
transform="translate(2355.4863,1607.2334)">
@@ -58825,7 +59059,7 @@
transform="translate(2516.0371,1330.8896)">
@@ -58842,7 +59076,7 @@
transform="translate(2354.9951,1235.6455)">
@@ -58865,7 +59099,7 @@
id="g5929">
@@ -58891,7 +59125,7 @@
id="g5961">
@@ -58917,7 +59151,7 @@
id="g5993">
@@ -58943,7 +59177,7 @@
id="g6025">
@@ -58969,7 +59203,7 @@
id="g6057">
@@ -58995,7 +59229,7 @@
id="g6089">
@@ -59021,7 +59255,7 @@
id="g6121">
@@ -59047,7 +59281,7 @@
id="g6153">
@@ -59058,12 +59292,12 @@
@@ -59100,7 +59334,7 @@
id="g6209">
@@ -59126,7 +59360,7 @@
id="g6241">
@@ -59137,32 +59371,32 @@
@@ -59198,7 +59432,7 @@
id="g6313">
@@ -59224,7 +59458,7 @@
id="g6345">
@@ -59235,27 +59469,27 @@
@@ -59295,23 +59529,23 @@
@@ -59424,34 +59658,34 @@
@@ -59478,12 +59712,12 @@
transform="matrix(2.2864496,0,0,-2.2864496,-2586.624,2782.7411)">
@@ -59492,29 +59726,29 @@
id="g7099">
@@ -59529,7 +59763,7 @@
transform="translate(2538.3311,837.6123)">
@@ -59551,7 +59785,7 @@
id="g7199">
@@ -59576,7 +59810,7 @@
id="g7231">
@@ -59596,7 +59830,7 @@
transform="translate(2538.3311,657.5947)">
@@ -59618,7 +59852,7 @@
id="g7279">
@@ -59643,7 +59877,7 @@
id="g7311">
@@ -59663,7 +59897,7 @@
transform="translate(2538.3252,1017.5234)">
@@ -59685,7 +59919,7 @@
id="g7391">
@@ -59710,7 +59944,7 @@
id="g7359">
@@ -59721,32 +59955,32 @@
@@ -59784,7 +60018,7 @@
id="g7463">
@@ -59810,7 +60044,7 @@
id="g7495">
@@ -59831,7 +60065,7 @@
transform="translate(2056.7451,657.5947)">
@@ -59854,7 +60088,7 @@
id="g7543">
@@ -59879,7 +60113,7 @@
id="g7575">
@@ -59899,7 +60133,7 @@
transform="translate(2056.7471,1017.5234)">
@@ -59922,7 +60156,7 @@
id="g7623">
@@ -59948,7 +60182,7 @@
id="g7655">
@@ -59959,37 +60193,37 @@
@@ -60029,23 +60263,23 @@
@@ -60157,21 +60391,21 @@
@@ -60245,7 +60479,7 @@
id="g4369">
@@ -60270,7 +60504,7 @@
id="g4401">
@@ -60281,39 +60515,39 @@
@@ -60328,7 +60562,7 @@
transform="translate(429.3359,762.3701)">
@@ -60350,7 +60584,7 @@
id="g4477">
@@ -60375,7 +60609,7 @@
id="g4509">
@@ -60386,7 +60620,7 @@
@@ -60422,7 +60656,7 @@
id="g4965">
@@ -60447,7 +60681,7 @@
id="g4997">
@@ -60460,7 +60694,7 @@
id="g7881">
@@ -60475,7 +60709,7 @@
transform="translate(406.8271,782.3682)">
@@ -60497,7 +60731,7 @@
id="g7943">
@@ -60522,7 +60756,7 @@
id="g7975">
@@ -60533,7 +60767,7 @@
@@ -60557,23 +60791,23 @@
style="fill-rule:nonzero">
@@ -60611,7 +60845,7 @@
id="g5162">
@@ -60637,7 +60871,7 @@
id="g5176">
@@ -60648,7 +60882,7 @@
@@ -60686,7 +60920,7 @@
id="g5200">
@@ -60712,7 +60946,7 @@
id="g5214">
@@ -60729,19 +60963,19 @@
style="fill-rule:nonzero">
@@ -60781,23 +61015,23 @@
@@ -60909,35 +61143,35 @@
@@ -60963,7 +61197,7 @@
id="hexa-x">
@@ -61042,7 +61276,7 @@
@@ -61060,7 +61294,7 @@
@@ -61078,7 +61312,7 @@
@@ -61101,7 +61335,7 @@
@@ -61127,7 +61361,7 @@
@@ -61153,7 +61387,7 @@
@@ -61179,7 +61413,7 @@
@@ -61205,7 +61439,7 @@
@@ -61231,7 +61465,7 @@
@@ -61257,7 +61491,7 @@
@@ -61283,7 +61517,7 @@
@@ -61294,12 +61528,12 @@
@@ -61337,7 +61571,7 @@
@@ -61363,7 +61597,7 @@
@@ -61374,32 +61608,32 @@
@@ -61437,7 +61671,7 @@
@@ -61463,7 +61697,7 @@
@@ -61474,27 +61708,27 @@
@@ -61533,23 +61767,23 @@
@@ -61661,13 +61895,13 @@
@@ -61676,28 +61910,28 @@
style="opacity:0.6;fill:none;stroke:#ff0000;stroke-width:7.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotS);marker-end:url(#Arrow2Send)"
inkscape:connector-curvature="0"
stroke-miterlimit="4"
- d="m 470.3229,324.24379 l 34.1726,0.5182 m 107.5,-0.5182 l 288.48736,0 l 81.95096,-90.17068"
+ d="M 470.3229,324.24379 L 504.4955,324.76199 M 611.9955,324.24379 L 900.48286,324.24379 L 982.43382,234.07311"
id="path19792" />
@@ -61706,8 +61940,9 @@
inkscape:groupmode="layer"
id="layer14"
inkscape:label="fixed-wing-frames"
- style="display:inline"
- transform="translate(-32.46875,315.85439)">
+ style="display:none"
+ transform="translate(-32.46875,315.85439)"
+ sodipodi:insensitive="true">
@@ -61748,7 +61983,7 @@
sodipodi:nodetypes="ccccccccccscsccccccscsccccccccccccc"
inkscape:connector-curvature="0"
id="path4853"
- d="m 377.05917,2623.2856 l -0.96875,37.4376 l -0.8125,38.0623 l -1.96875,3.1564 l -283.968749,12.2186 l 0.65625,34.5314 l 283.374999,19.7187 l 2.4375,4.5938 l 5.65625,190.375 l 0,4.0625 c 0,0 1.07651,2.0384 -6.75,4.0625 c -7.82651,2.0241 -48.53125,7.6875 -48.53125,7.6875 c 0,0 -1.45881,0.5411 -1.59375,3.375 c -0.13494,2.8336 0,25.5 0,25.5 l 56.75,7.2813 c 3.14965,4.8562 3.05563,9.8278 5.25,15.375 l 2.0937,0 c 2.18253,-5.1923 2.17978,-10.5946 5.3125,-15.375 l 56.75,-7.2813 c 0,0 0.13494,-22.6663 0,-25.5 c -0.13494,-2.8338 -1.59375,-3.375 -1.59375,-3.375 c 0,0 -40.73599,-5.6634 -48.5625,-7.6875 c -7.82651,-2.0242 -6.71875,-4.0625 -6.71875,-4.0625 l 0,-4.0313 l 5.65625,-190.4062 l 2.4375,-4.5939 l 283.375,-19.7186 l 0.65625,-34.5314 l -283.9687,-12.2186 l -1.96875,-3.1563 l -0.8125,-38.0624 l -0.96875,-37.4376 c 0,10e-5 -2.11666,-36.8653 -4.04398,-37.6011 l -13.19412,0 c -1.94258,0.8205 -3.98065,37.6011 -3.98065,37.6011 z"
+ d="M 377.05917,2623.2856 L 376.09042,2660.7232 L 375.27792,2698.7855 L 373.30917,2701.9419 L 89.340421,2714.1605 L 89.996671,2748.6919 L 373.37167,2768.4106 L 375.80917,2773.0044 L 381.46542,2963.3794 L 381.46542,2967.4419 C 381.46542,2967.4419 382.54193,2969.4803 374.71542,2971.5044 C 366.88891,2973.5285 326.18417,2979.1919 326.18417,2979.1919 C 326.18417,2979.1919 324.72536,2979.733 324.59042,2982.5669 C 324.45548,2985.4005 324.59042,3008.0669 324.59042,3008.0669 L 381.34042,3015.3482 C 384.49007,3020.2044 384.39605,3025.176 386.59042,3030.7232 L 388.68412,3030.7232 C 390.86665,3025.5309 390.8639,3020.1286 393.99662,3015.3482 L 450.74662,3008.0669 C 450.74662,3008.0669 450.88156,2985.4006 450.74662,2982.5669 C 450.61168,2979.7331 449.15287,2979.1919 449.15287,2979.1919 C 449.15287,2979.1919 408.41688,2973.5285 400.59037,2971.5044 C 392.76386,2969.4802 393.87162,2967.4419 393.87162,2967.4419 L 393.87162,2963.4106 L 399.52787,2773.0044 L 401.96537,2768.4105 L 685.34037,2748.6919 L 685.99662,2714.1605 L 402.02792,2701.9419 L 400.05917,2698.7856 L 399.24667,2660.7232 L 398.27792,2623.2856 C 398.27792,2623.2857 396.16126,2586.4203 394.23394,2585.6845 L 381.03982,2585.6845 C 379.09724,2586.505 377.05917,2623.2856 377.05917,2623.2856 Z"
style="fill:#3c3c3c;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
@@ -61786,23 +62021,23 @@
@@ -61948,12 +62183,12 @@
@@ -61996,7 +62231,7 @@
id="circle3889-7-2" />
@@ -62019,252 +62254,252 @@
transform="matrix(1.0115794,-0.02798318,0.07024172,0.98661003,-60.945163,973.97741)"
id="aileron-left-raster-1-6-5-8">
@@ -62289,12 +62524,12 @@
@@ -62337,7 +62572,7 @@
id="circle3915-5-9" />
@@ -62363,252 +62598,252 @@
style="fill:none;stroke:#010101;stroke-width:0.46786007;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="_x31_63_1_-7-5-7"
- d="m 136.118,661.657 l 0,-21.22" />
+ d="M 136.118,661.657 L 136.118,640.437" />
+ d="M 140.689,661.657 L 140.689,640.437" />
+ d="M 145.233,661.657 L 145.233,640.437" />
+ d="M 149.804,661.657 L 149.804,640.437" />
+ d="M 154.348,661.657 L 154.348,640.437" />
+ d="M 158.892,661.657 L 158.892,640.437" />
+ d="M 163.463,661.657 L 163.463,640.437" />
+ d="M 168.006,661.657 L 168.006,640.437" />
+ d="M 172.578,661.657 L 172.578,640.437" />
+ d="M 177.12,661.657 L 177.12,640.437" />
+ d="M 181.664,661.657 L 181.664,640.437" />
+ d="M 186.235,661.657 L 186.235,640.437" />
+ d="M 190.779,661.657 L 190.779,640.437" />
+ d="M 195.35,661.657 L 195.35,640.437" />
+ d="M 199.894,661.657 L 199.894,640.437" />
+ d="M 204.438,661.657 L 204.438,640.437" />
+ d="M 209.009,661.657 L 209.009,640.437" />
+ d="M 213.552,661.657 L 213.552,640.437" />
+ d="M 218.124,661.657 L 218.124,640.437" />
+ d="M 222.666,661.657 L 222.666,640.437" />
+ d="M 227.211,661.657 L 227.211,640.437" />
+ d="M 236.325,661.657 L 236.325,641.241" />
+ d="M 240.896,661.657 L 240.896,641.241" />
+ d="M 245.439,661.657 L 245.439,641.241" />
+ d="M 250.012,661.657 L 250.012,641.241" />
+ d="M 254.555,661.657 L 254.555,641.241" />
+ d="M 259.098,661.657 L 259.098,641.241" />
+ d="M 263.67,661.657 L 263.67,641.241" />
+ d="M 268.213,661.657 L 268.213,641.241" />
+ d="M 272.784,661.657 L 272.784,641.241" />
+ d="M 277.328,661.657 L 277.328,641.241" />
+ d="M 281.871,661.657 L 281.871,641.241" />
+ d="M 286.442,661.657 L 286.442,641.241" />
+ d="M 290.986,661.657 L 290.986,641.241" />
+ d="M 295.558,661.657 L 295.558,641.241" />
+ d="M 300.101,661.657 L 300.101,641.241" />
+ d="M 304.645,661.657 L 304.645,641.241" />
+ d="M 309.216,661.657 L 309.216,641.241" />
+ d="M 313.76,661.657 L 313.76,641.241" />
+ d="M 318.33,661.657 L 318.33,641.241" />
+ d="M 322.874,661.657 L 322.874,641.241" />
+ d="M 327.417,661.657 L 327.417,641.241" />
+ d="M 331.989,661.657 L 331.989,641.241" />
+ d="M 336.532,661.657 L 336.532,641.241" />
+ d="M 341.104,661.657 L 341.104,641.241" />
+ d="M 345.646,661.657 L 345.646,641.241" />
+ d="M 350.19,661.657 L 350.19,641.241" />
+ d="M 354.762,661.657 L 354.762,641.241" />
+ d="M 359.306,661.657 L 359.306,641.241" />
+ d="M 231.089,661.657 L 231.089,636.359" />
@@ -62925,12 +63160,12 @@
@@ -62975,7 +63210,7 @@
id="circle3808-2" />
@@ -63030,252 +63265,252 @@
transform="translate(-9.2889168,955.33477)"
id="aileron-left-raster-1-3">
@@ -63289,12 +63524,12 @@
@@ -63339,7 +63574,7 @@
id="circle3853-8" />
@@ -63380,31 +63615,31 @@
@@ -63428,7 +63663,7 @@
transform="matrix(1.2253368,0,0,1.2253368,630.54136,-87.099306)">
+ d="M 107.091,651.979 L 103.183,631.125" />
+ d="M 116.049,650.299 L 112.142,629.445" />
+ d="M 120.516,649.463 L 116.608,628.609" />
+ d="M 124.981,648.626 L 121.074,627.772" />
+ d="M 129.475,647.785 L 125.567,626.928" />
+ d="M 133.94,646.948 L 130.033,626.092" />
+ d="M 142.898,645.269 L 138.991,624.415" />
+ d="M 147.366,644.433 L 143.458,623.579" />
+ d="M 160.817,641.912 L 157.057,621.844" />
+ d="M 165.282,641.076 L 161.522,621.009" />
+ d="M 169.776,640.232 L 166.017,620.166" />
+ d="M 174.242,639.396 L 170.482,619.33" />
+ d="M 178.707,638.56 L 174.947,618.496" />
+ d="M 183.201,637.718 L 179.441,617.654" />
+ d="M 187.666,636.882 L 183.906,616.817" />
+ d="M 192.159,636.039 L 188.399,615.974" />
+ d="M 196.625,635.203 L 192.865,615.137" />
+ d="M 201.091,634.366 L 197.331,614.299" />
+ d="M 205.583,633.524 L 201.823,613.457" />
+ d="M 210.05,632.688 L 206.29,612.623" />
+ d="M 214.543,631.846 L 210.783,611.782" />
+ d="M 219.009,631.009 L 215.249,610.944" />
+ d="M 223.475,630.172 L 219.715,610.108" />
+ d="M 227.968,629.33 L 224.209,609.264" />
+ d="M 232.434,628.494 L 228.674,608.428" />
+ d="M 236.926,627.652 L 233.166,607.584" />
+ d="M 241.392,626.815 L 237.633,606.748" />
+ d="M 245.858,625.979 L 242.098,605.913" />
+ d="M 250.352,625.136 L 246.592,605.073" />
+ d="M 254.817,624.3 L 251.058,604.235" />
+ d="M 259.31,623.458 L 255.55,603.392" />
+ d="M 263.775,622.622 L 260.015,602.555" />
+ d="M 268.241,621.784 L 264.482,601.718" />
+ d="M 272.735,620.943 L 268.975,600.876" />
+ d="M 277.201,620.106 L 273.441,600.038" />
+ d="M 151.177,643.718 L 146.518,618.854" />
+ d="M 107.091,651.979 L 103.183,631.125" />
+ d="M 116.049,650.299 L 112.142,629.445" />
+ d="M 120.516,649.463 L 116.608,628.609" />
+ d="M 124.981,648.626 L 121.074,627.772" />
+ d="M 129.475,647.785 L 125.567,626.928" />
+ d="M 133.94,646.948 L 130.033,626.092" />
+ d="M 142.898,645.269 L 138.991,624.415" />
+ d="M 147.366,644.433 L 143.458,623.579" />
+ d="M 160.817,641.912 L 157.057,621.844" />
+ d="M 165.282,641.076 L 161.522,621.009" />
+ d="M 169.776,640.232 L 166.017,620.166" />
+ d="M 174.242,639.396 L 170.482,619.33" />
+ d="M 178.707,638.56 L 174.947,618.496" />
+ d="M 183.201,637.718 L 179.441,617.654" />
+ d="M 187.666,636.882 L 183.906,616.817" />
+ d="M 192.159,636.039 L 188.399,615.974" />
+ d="M 196.625,635.203 L 192.865,615.137" />
+ d="M 201.091,634.366 L 197.331,614.299" />
+ d="M 205.583,633.524 L 201.823,613.457" />
+ d="M 210.05,632.688 L 206.29,612.623" />
+ d="M 214.543,631.846 L 210.783,611.782" />
+ d="M 219.009,631.009 L 215.249,610.944" />
+ d="M 223.475,630.172 L 219.715,610.108" />
+ d="M 227.968,629.33 L 224.209,609.264" />
+ d="M 232.434,628.494 L 228.674,608.428" />
+ d="M 236.926,627.652 L 233.166,607.584" />
+ d="M 241.392,626.815 L 237.633,606.748" />
+ d="M 245.858,625.979 L 242.098,605.913" />
+ d="M 250.352,625.136 L 246.592,605.073" />
+ d="M 254.817,624.3 L 251.058,604.235" />
+ d="M 259.31,623.458 L 255.55,603.392" />
+ d="M 263.775,622.622 L 260.015,602.555" />
+ d="M 268.241,621.784 L 264.482,601.718" />
+ d="M 272.735,620.943 L 268.975,600.876" />
+ d="M 277.201,620.106 L 273.441,600.038" />
+ d="M 151.177,643.718 L 146.518,618.854" />
@@ -64030,7 +64265,7 @@
id="circle3808-0-9-5" />
@@ -64076,12 +64311,12 @@
@@ -64126,7 +64361,7 @@
id="circle3808-0-9" />
@@ -64170,19 +64405,19 @@
id="g3577-1-6-2">
+ d="M 388.375,1470.057 L 409.069,1470.057 C 409.069,1470.057 403.881,1454.799 398.709,1454.682 C 393.533,1454.565 388.375,1470.057 388.375,1470.057 Z" />
@@ -64221,23 +64456,23 @@
@@ -64349,21 +64584,21 @@
+ d="M 388.375,1470.057 L 409.069,1470.057 C 409.069,1470.057 403.881,1454.799 398.709,1454.682 C 393.533,1454.565 388.375,1470.057 388.375,1470.057 Z" />
@@ -64454,23 +64689,23 @@
@@ -64588,19 +64823,19 @@
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.64670002;stroke-miterlimit:10"
inkscape:connector-curvature="0"
stroke-miterlimit="10"
- d="m 398.002,892.888 c -0.523,-9.188 -0.92,-18.377 -1.326,-27.563 l -0.547,-13.783 l -0.447,-13.782 c -0.135,-4.594 -0.416,-9.188 -0.63,-13.783 c -0.213,-4.595 -0.231,-9.188 -0.033,-13.78 c 0.194,-4.597 0.512,-9.189 0.972,-13.782 c 0.475,-4.596 1.061,-9.189 2.012,-13.784 c 0.055,-0.267 0.248,-0.42 0.432,-0.339 c 0.114,0.053 0.197,0.184 0.23,0.339 c 0.951,4.595 1.537,9.188 2.012,13.784 c 0.46,4.593 0.776,9.188 0.974,13.782 c 0.195,4.594 0.18,9.188 -0.033,13.78 c -0.215,4.596 -0.496,9.189 -0.631,13.783 l -0.446,13.782 l -0.547,13.783 c -0.406,9.188 -0.803,18.378 -1.326,27.563 c -0.016,0.271 -0.176,0.469 -0.359,0.445 c -0.168,-0.02 -0.294,-0.213 -0.307,-0.445 z"
+ d="M 398.002,892.888 C 397.479,883.7 397.082,874.511 396.676,865.325 L 396.129,851.542 L 395.682,837.76 C 395.547,833.166 395.266,828.572 395.052,823.977 C 394.839,819.382 394.821,814.789 395.019,810.197 C 395.213,805.6 395.531,801.008 395.991,796.415 C 396.466,791.819 397.052,787.226 398.003,782.631 C 398.058,782.364 398.251,782.211 398.435,782.292 C 398.549,782.345 398.632,782.476 398.665,782.631 C 399.616,787.226 400.202,791.819 400.677,796.415 C 401.137,801.008 401.453,805.603 401.651,810.197 C 401.846,814.791 401.831,819.385 401.618,823.977 C 401.403,828.573 401.122,833.166 400.987,837.76 L 400.541,851.542 L 399.994,865.325 C 399.588,874.513 399.191,883.703 398.668,892.888 C 398.652,893.159 398.492,893.357 398.309,893.333 C 398.141,893.313 398.015,893.12 398.002,892.888 Z"
id="path3769-8" />
+ d="M 317.151,880.135 L 317.151,866.188" />
+ d="M 320.473,880.135 L 320.473,866.188" />
+ d="M 323.776,880.135 L 323.776,866.188" />
+ d="M 327.098,880.135 L 327.098,866.188" />
+ d="M 330.401,880.135 L 330.401,866.188" />
+ d="M 333.703,880.135 L 333.703,866.188" />
+ d="M 337.026,880.135 L 337.026,866.188" />
+ d="M 340.328,880.135 L 340.328,866.188" />
+ d="M 343.651,880.135 L 343.651,866.188" />
+ d="M 346.953,880.135 L 346.953,866.188" />
+ d="M 350.255,880.135 L 350.255,866.188" />
+ d="M 353.578,880.135 L 353.578,866.188" />
+ d="M 356.881,880.135 L 356.881,866.188" />
+ d="M 360.203,880.135 L 360.203,866.188" />
+ d="M 363.505,880.135 L 363.505,866.188" />
+ d="M 366.808,880.135 L 366.808,866.188" />
+ d="M 370.13,880.135 L 370.13,866.188" />
+ d="M 373.432,880.135 L 373.432,866.188" />
+ d="M 376.755,880.135 L 376.755,866.188" />
+ d="M 380.057,880.135 L 380.057,866.188" />
+ d="M 383.36,880.135 L 383.36,866.188" />
+ d="M 389.985,880.135 L 389.985,866.714" />
+ d="M 393.308,880.135 L 393.308,866.714" />
+ d="M 396.609,880.135 L 396.609,866.714" />
+ d="M 399.934,880.135 L 399.934,866.714" />
+ d="M 403.235,880.135 L 403.235,866.714" />
+ d="M 406.536,880.135 L 406.536,866.714" />
+ d="M 409.86,880.135 L 409.86,866.714" />
+ d="M 413.161,880.135 L 413.161,866.714" />
+ d="M 416.485,880.135 L 416.485,866.714" />
+ d="M 419.786,880.135 L 419.786,866.714" />
+ d="M 423.089,880.135 L 423.089,866.714" />
+ d="M 426.411,880.135 L 426.411,866.714" />
+ d="M 429.714,880.135 L 429.714,866.714" />
+ d="M 433.036,880.135 L 433.036,866.714" />
+ d="M 436.339,880.135 L 436.339,866.714" />
+ d="M 439.642,880.135 L 439.642,866.714" />
+ d="M 442.964,880.135 L 442.964,866.714" />
+ d="M 446.267,880.135 L 446.267,866.714" />
+ d="M 449.589,880.135 L 449.589,866.714" />
+ d="M 452.892,880.135 L 452.892,866.714" />
+ d="M 456.194,880.135 L 456.194,866.714" />
+ d="M 459.517,880.135 L 459.517,866.714" />
+ d="M 462.817,880.135 L 462.817,866.714" />
+ d="M 466.142,880.135 L 466.142,866.714" />
+ d="M 469.444,880.135 L 469.444,866.714" />
+ d="M 472.745,880.135 L 472.745,866.714" />
+ d="M 476.067,880.135 L 476.067,866.714" />
+ d="M 479.372,880.135 L 479.372,866.714" />
+ d="M 386.179,880.135 L 386.179,863.506" />
+ d="M 661.634,640.438 L 661.634,661.66" />
+ d="M 657.063,640.438 L 657.063,661.66" />
+ d="M 652.519,640.438 L 652.519,661.66" />
+ d="M 647.948,640.438 L 647.948,661.66" />
+ d="M 643.405,640.438 L 643.405,661.66" />
+ d="M 638.86,640.438 L 638.86,661.66" />
+ d="M 634.29,640.438 L 634.29,661.66" />
+ d="M 629.747,640.438 L 629.747,661.66" />
+ d="M 625.175,640.438 L 625.175,661.66" />
+ d="M 620.632,640.438 L 620.632,661.66" />
+ d="M 616.089,640.438 L 616.089,661.66" />
+ d="M 611.517,640.438 L 611.517,661.66" />
+ d="M 606.974,640.438 L 606.974,661.66" />
+ d="M 602.403,640.438 L 602.403,661.66" />
+ d="M 597.858,640.438 L 597.858,661.66" />
+ d="M 593.315,640.438 L 593.315,661.66" />
+ d="M 588.743,640.438 L 588.743,661.66" />
+ d="M 584.2,640.438 L 584.2,661.66" />
+ d="M 579.628,640.438 L 579.628,661.66" />
+ d="M 575.087,640.438 L 575.087,661.66" />
+ d="M 570.542,640.438 L 570.542,661.66" />
+ d="M 561.427,641.241 L 561.427,661.657" />
+ d="M 556.856,641.241 L 556.856,661.657" />
+ d="M 552.313,641.241 L 552.313,661.657" />
+ d="M 547.741,641.241 L 547.741,661.657" />
+ d="M 543.198,641.241 L 543.198,661.657" />
+ d="M 538.655,641.241 L 538.655,661.657" />
+ d="M 534.083,641.241 L 534.083,661.657" />
+ d="M 529.54,641.241 L 529.54,661.657" />
+ d="M 524.968,641.241 L 524.968,661.657" />
+ d="M 520.425,641.241 L 520.425,661.657" />
+ d="M 515.882,641.241 L 515.882,661.657" />
+ d="M 511.31,641.241 L 511.31,661.657" />
+ d="M 506.767,641.241 L 506.767,661.657" />
+ d="M 502.194,641.241 L 502.194,661.657" />
+ d="M 497.651,641.241 L 497.651,661.657" />
+ d="M 493.108,641.241 L 493.108,661.657" />
+ d="M 488.536,641.241 L 488.536,661.657" />
+ d="M 483.993,641.241 L 483.993,661.657" />
+ d="M 479.423,641.241 L 479.423,661.657" />
+ d="M 474.878,641.241 L 474.878,661.657" />
+ d="M 470.335,641.241 L 470.335,661.657" />
+ d="M 465.763,641.241 L 465.763,661.657" />
+ d="M 461.22,641.241 L 461.22,661.657" />
+ d="M 456.649,641.241 L 456.649,661.657" />
+ d="M 452.106,641.241 L 452.106,661.657" />
+ d="M 447.563,641.241 L 447.563,661.657" />
+ d="M 442.991,641.241 L 442.991,661.657" />
+ d="M 438.446,641.241 L 438.446,661.657" />
+ d="M 566.663,636.359 L 566.663,661.657" />
+ d="M 136.118,661.657 L 136.118,640.437" />
+ d="M 140.689,661.657 L 140.689,640.437" />
+ d="M 145.233,661.657 L 145.233,640.437" />
+ d="M 149.804,661.657 L 149.804,640.437" />
+ d="M 154.348,661.657 L 154.348,640.437" />
+ d="M 158.892,661.657 L 158.892,640.437" />
+ d="M 163.463,661.657 L 163.463,640.437" />
+ d="M 168.006,661.657 L 168.006,640.437" />
+ d="M 172.578,661.657 L 172.578,640.437" />
+ d="M 177.12,661.657 L 177.12,640.437" />
+ d="M 181.664,661.657 L 181.664,640.437" />
+ d="M 186.235,661.657 L 186.235,640.437" />
+ d="M 190.779,661.657 L 190.779,640.437" />
+ d="M 195.35,661.657 L 195.35,640.437" />
+ d="M 199.894,661.657 L 199.894,640.437" />
+ d="M 204.438,661.657 L 204.438,640.437" />
+ d="M 209.009,661.657 L 209.009,640.437" />
+ d="M 213.552,661.657 L 213.552,640.437" />
+ d="M 218.124,661.657 L 218.124,640.437" />
+ d="M 222.666,661.657 L 222.666,640.437" />
+ d="M 227.211,661.657 L 227.211,640.437" />
+ d="M 236.325,661.657 L 236.325,641.241" />
+ d="M 240.896,661.657 L 240.896,641.241" />
+ d="M 245.439,661.657 L 245.439,641.241" />
+ d="M 250.012,661.657 L 250.012,641.241" />
+ d="M 254.555,661.657 L 254.555,641.241" />
+ d="M 259.098,661.657 L 259.098,641.241" />
+ d="M 263.67,661.657 L 263.67,641.241" />
+ d="M 268.213,661.657 L 268.213,641.241" />
+ d="M 272.784,661.657 L 272.784,641.241" />
+ d="M 277.328,661.657 L 277.328,641.241" />
+ d="M 281.871,661.657 L 281.871,641.241" />
+ d="M 286.442,661.657 L 286.442,641.241" />
+ d="M 290.986,661.657 L 290.986,641.241" />
+ d="M 295.558,661.657 L 295.558,641.241" />
+ d="M 300.101,661.657 L 300.101,641.241" />
+ d="M 304.645,661.657 L 304.645,641.241" />
+ d="M 309.216,661.657 L 309.216,641.241" />
+ d="M 313.76,661.657 L 313.76,641.241" />
+ d="M 318.33,661.657 L 318.33,641.241" />
+ d="M 322.874,661.657 L 322.874,641.241" />
+ d="M 327.417,661.657 L 327.417,641.241" />
+ d="M 331.989,661.657 L 331.989,641.241" />
+ d="M 336.532,661.657 L 336.532,641.241" />
+ d="M 341.104,661.657 L 341.104,641.241" />
+ d="M 345.646,661.657 L 345.646,641.241" />
+ d="M 350.19,661.657 L 350.19,641.241" />
+ d="M 354.762,661.657 L 354.762,641.241" />
+ d="M 359.306,661.657 L 359.306,641.241" />
+ d="M 231.089,661.657 L 231.089,636.359" />
@@ -65469,12 +65704,12 @@
id="g3869-7">
@@ -65530,12 +65765,12 @@
id="g3895-2">
@@ -65648,12 +65883,12 @@
transform="translate(40.63173,1364.5466)">
@@ -65755,25 +65990,25 @@
@@ -65822,7 +66057,7 @@
@@ -65861,23 +66096,23 @@
@@ -65993,19 +66228,19 @@
style="fill:#ffffff;fill-opacity:1">
@@ -66029,252 +66264,252 @@
transform="translate(0,1008)"
id="aileron-elevator-raster">
@@ -66290,252 +66525,252 @@
transform="translate(0,1008)"
id="aileron-right-raster">
@@ -66551,252 +66786,252 @@
transform="translate(0,1008)"
id="aileron-left-raster">
@@ -66809,12 +67044,12 @@
id="g3831">
@@ -66901,12 +67136,12 @@
id="g3786">
@@ -67059,12 +67294,12 @@
id="g3869-2">
@@ -67120,12 +67355,12 @@
id="g3895">
@@ -67177,35 +67412,35 @@
+ style="display:inline">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -67240,7 +68403,7 @@
sodipodi:nodetypes="zsccsccccssscccccz"
inkscape:connector-curvature="0"
id="path5603"
- d="m 144.02118,1656.0501 c 3.77414,-8.3481 105.39994,38.0437 168.13768,38.0437 c 109.66668,0 180.1875,-31.2188 180.1875,-31.2188 l 17.75,41.625 c 0,0 -38.66032,43.6771 -45.90625,66.2188 c -7.29352,22.6896 -8.61792,35.8334 -10.73662,61.4578 l -11.4665,7.6984 l -74.98438,0 c 0,-6.5773 0.8907,-14.516 1.21875,-22.5625 c 2.07095,-4.3981 3.25,-9.3167 3.25,-14.5 c 0,-18.8129 -15.24963,-34.0625 -34.0625,-34.0625 c -18.81287,0 -34.0625,15.2496 -34.0625,34.0625 c 0,8.7478 3.299,16.7177 8.71875,22.75 c -3.86935,2.3982 -15.47186,-7.2139 -26.34375,-6.9687 c -9.52653,0.042 -15.23476,-5.189 -15.3125,-13.5938 c 0,-4.5232 2.21547,-8.5346 5.59375,-11.0312 c 0.3146,-13.0978 -1.24395,-29.7117 -14.9375,-45.6876 c -38.19915,-36.5555 -120.81807,-83.883 -117.04393,-92.2311 z"
+ d="M 144.02118,1656.0501 C 147.79532,1647.702 249.42112,1694.0938 312.15886,1694.0938 C 421.82554,1694.0938 492.34636,1662.875 492.34636,1662.875 L 510.09636,1704.5 C 510.09636,1704.5 471.43604,1748.1771 464.19011,1770.7188 C 456.89659,1793.4084 455.57219,1806.5522 453.45349,1832.1766 L 441.98699,1839.875 L 367.00261,1839.875 C 367.00261,1833.2977 367.89331,1825.359 368.22136,1817.3125 C 370.29231,1812.9144 371.47136,1807.9958 371.47136,1802.8125 C 371.47136,1783.9996 356.22173,1768.75 337.40886,1768.75 C 318.59599,1768.75 303.34636,1783.9996 303.34636,1802.8125 C 303.34636,1811.5603 306.64536,1819.5302 312.06511,1825.5625 C 308.19576,1827.9607 296.59325,1818.3486 285.72136,1818.5938 C 276.19483,1818.6358 270.4866,1813.4048 270.40886,1805 C 270.40886,1800.4768 272.62433,1796.4654 276.00261,1793.9688 C 276.31721,1780.871 274.75866,1764.2571 261.06511,1748.2812 C 222.86596,1711.7257 140.24704,1664.3982 144.02118,1656.0501 Z"
style="display:inline;fill:url(#linearGradient11601);fill-opacity:1;stroke:none" />
@@ -67275,23 +68438,23 @@
@@ -67420,18 +68583,18 @@
id="g5479">
@@ -67518,12 +68681,12 @@
id="g3831-33">
@@ -67625,13 +68788,13 @@
id="g5490">
@@ -67644,7 +68807,7 @@
r="12.461923" />
@@ -67704,23 +68867,23 @@
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none">
@@ -67729,11 +68892,11 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path19631-2-8-5"
- d="m -15.116465,1673.5434 l 91.222621,-0.1041 l 51.576774,-65.0956 l 261.28532,-0.1041 l 63.42887,113.2472"
+ d="M -15.116465,1673.5434 L 76.106156,1673.4393 L 127.68293,1608.3437 L 388.96825,1608.2396 L 452.39712,1721.4868"
style="display:inline;opacity:0.6;fill:none;stroke:#ff0000;stroke-width:2.99576831;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotS);marker-end:url(#Arrow2Send)" />
@@ -67766,7 +68929,7 @@
id="g7059">
@@ -68200,7 +69363,7 @@
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path37299-4"
- d="m 650.86221,478.82431 l 25.38194,0 l -0.0868,148.6877 l 89.22265,-0.1041"
+ d="M 650.86221,478.82431 L 676.24415,478.82431 L 676.15735,627.51201 L 765.38,627.40791"
style="display:inline;opacity:0.6;fill:none;stroke:#ff0000;stroke-width:2.99576831;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotS);marker-end:url(#Arrow2Send)" />
@@ -68264,102 +69427,102 @@
@@ -68384,19 +69547,19 @@
sodipodi:nodetypes="ccscccccscccscccccccsccc"
inkscape:connector-curvature="0"
id="path7927-1"
- d="m 111.54988,2583.5313 c -4.53767,0.1369 -7.59246,2.2108 -9.65625,6 c 0,-1e-4 -15.14302,37.105 -28.5625,51.375 c -2.54215,2.7033 -5.66419,6 -9.375,6 c 0,-1e-4 -190.375,0.3641 -190.375,5.1562 l -1,36.1562 l 1,36.125 c 0,4.7922 190.375,5.1876 190.375,5.1876 c 3.71081,0 6.83285,3.2967 9.375,6 c 13.41948,14.2699 28.5625,51.3437 28.5625,51.3437 c 2.20138,4.0418 5.54158,6.1302 10.59375,6 l 233.90625,0 c 5.81914,0.2902 7.2519,-4.3344 8.6875,-8 c 9.41689,-24.045 16.90625,-54.5312 16.90625,-54.5313 c 1.35486,-6.9702 5.71209,-7.9155 9.21875,-8 l 163.21875,0 l 0,-34.125 l 0,-34.125 l -163.21875,0 c -3.50666,-0.084 -7.86389,-1.0296 -9.21875,-8 c 0,1e-4 -7.48936,-30.5174 -16.90625,-54.5624 c -1.4356,-3.6656 -2.86836,-8.2902 -8.6875,-8 l -233.90625,0 c -0.31576,-0.01 -0.63499,-0.01 -0.9375,0 z"
+ d="M 111.54988,2583.5313 C 107.01221,2583.6682 103.95742,2585.7421 101.89363,2589.5313 C 101.89363,2589.5312 86.75061,2626.6363 73.33113,2640.9063 C 70.78898,2643.6096 67.66694,2646.9063 63.95613,2646.9063 C 63.95613,2646.9062 -126.41887,2647.2704 -126.41887,2652.0625 L -127.41887,2688.2187 L -126.41887,2724.3437 C -126.41887,2729.1359 63.95613,2729.5313 63.95613,2729.5313 C 67.66694,2729.5313 70.78898,2732.828 73.33113,2735.5313 C 86.75061,2749.8012 101.89363,2786.875 101.89363,2786.875 C 104.09501,2790.9168 107.43521,2793.0052 112.48738,2792.875 L 346.39363,2792.875 C 352.21277,2793.1652 353.64553,2788.5406 355.08113,2784.875 C 364.49802,2760.83 371.98738,2730.3438 371.98738,2730.3437 C 373.34224,2723.3735 377.69947,2722.4282 381.20613,2722.3437 L 544.42488,2722.3437 L 544.42488,2688.2187 L 544.42488,2654.0937 L 381.20613,2654.0937 C 377.69947,2654.0097 373.34224,2653.0641 371.98738,2646.0937 C 371.98738,2646.0938 364.49802,2615.5763 355.08113,2591.5313 C 353.64553,2587.8657 352.21277,2583.2411 346.39363,2583.5313 L 112.48738,2583.5313 C 112.17162,2583.5213 111.85239,2583.5213 111.54988,2583.5313 Z"
style="display:inline;fill:url(#linearGradient19821);fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
@@ -68506,23 +69669,23 @@
id="text9459-1">
@@ -68564,12 +69727,12 @@
@@ -68679,7 +69842,7 @@
style="opacity:0.72250001">
@@ -68706,22 +69869,22 @@
@@ -68732,23 +69895,23 @@
@@ -68861,11 +70024,11 @@
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path19631-2-8"
- d="m 650.86221,463.39425 l 364.89049,-0.4164"
+ d="M 650.86221,463.39425 L 1015.7527,462.97785"
style="display:inline;opacity:0.6;fill:none;stroke:#ff0000;stroke-width:2.99576831;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotS);marker-end:url(#Arrow2Send)" />
diff --git a/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard-no-numbers.svg b/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard-no-numbers.svg
index 43e4306a9..a42a564b0 100644
--- a/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard-no-numbers.svg
+++ b/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard-no-numbers.svg
@@ -14,9 +14,9 @@
id="Layer_1"
x="0px"
y="0px"
- width="755.96332"
- height="1432.0494"
- viewBox="0 0 755.96331 1432.0494"
+ width="874.33447"
+ height="2009.6093"
+ viewBox="0 0 874.33446 2009.6092"
enable-background="new 0 0 792 1008"
xml:space="preserve"
inkscape:version="0.91 r13725"
@@ -26,7 +26,7 @@
inkscape:export-ydpi="70.479134">image/svg+xml
\ No newline at end of file
diff --git a/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard.svg b/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard.svg
index 3b0f53865..8cb3b63d7 100644
--- a/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard.svg
+++ b/ground/gcs/src/plugins/setupwizard/resources/ground-shapes-wizard.svg
@@ -14,9 +14,9 @@
id="Layer_1"
x="0px"
y="0px"
- width="755.96332"
- height="1769.0007"
- viewBox="0 0 755.96331 1769.0007"
+ width="914.42419"
+ height="2819.6702"
+ viewBox="0 0 914.42418 2819.6701"
enable-background="new 0 0 792 1008"
xml:space="preserve"
inkscape:version="0.91 r13725"
@@ -26,7 +26,7 @@
inkscape:export-ydpi="70.479134">image/svg+xml4
+
\ No newline at end of file
diff --git a/ground/gcs/src/plugins/setupwizard/setupwizard.cpp b/ground/gcs/src/plugins/setupwizard/setupwizard.cpp
index acfb1734e..5bb2f5833 100644
--- a/ground/gcs/src/plugins/setupwizard/setupwizard.cpp
+++ b/ground/gcs/src/plugins/setupwizard/setupwizard.cpp
@@ -2,7 +2,7 @@
******************************************************************************
*
* @file setupwizard.cpp
- * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @addtogroup GCSPlugins GCS Plugins
* @{
@@ -138,7 +138,8 @@ int SetupWizard::nextId() const
case PAGE_FIXEDWING:
case PAGE_SURFACE:
- if (getVehicleSubType() == GROUNDVEHICLE_DIFFERENTIAL) {
+ if ((getVehicleSubType() == GROUNDVEHICLE_DIFFERENTIAL) ||
+ (getVehicleSubType() == GROUNDVEHICLE_DIFFERENTIAL_BOAT)) {
return PAGE_ESC;
} else {
return PAGE_SERVO;
@@ -360,6 +361,12 @@ QString SetupWizard::getSummaryText()
case SetupWizard::GROUNDVEHICLE_MOTORCYCLE:
summary.append(tr("Motorcycle"));
break;
+ case SetupWizard::GROUNDVEHICLE_BOAT:
+ summary.append(tr("Boat"));
+ break;
+ case SetupWizard::GROUNDVEHICLE_DIFFERENTIAL_BOAT:
+ summary.append(tr("Boat differential"));
+ break;
default:
summary.append(tr("Unknown"));
break;
@@ -422,7 +429,8 @@ QString SetupWizard::getSummaryText()
// If Tricopter show tail servo speed
if (getVehicleSubType() == MULTI_ROTOR_TRI_Y || getVehicleType() == VEHICLE_FIXEDWING
- || getVehicleSubType() == GROUNDVEHICLE_MOTORCYCLE || getVehicleSubType() == GROUNDVEHICLE_CAR) {
+ || getVehicleSubType() == GROUNDVEHICLE_MOTORCYCLE || getVehicleSubType() == GROUNDVEHICLE_CAR
+ || getVehicleSubType() == GROUNDVEHICLE_BOAT) {
summary.append("
");
summary.append("").append(tr("Servo type: ")).append("");
switch (getServoType()) {
diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp
index 71e73b264..dd266f6e3 100644
--- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp
+++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp
@@ -2,7 +2,7 @@
***********************************************************************************
*
* @file vehicleconfigurationhelper.cpp
- * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup
* @{
@@ -304,11 +304,21 @@ void VehicleConfigurationHelper::applyHardwareConfiguration()
case VehicleConfigurationSource::GPS_UBX:
gpsData.DataProtocol = GPSSettings::DATAPROTOCOL_UBX;
gpsData.UbxAutoConfig = GPSSettings::UBXAUTOCONFIG_AUTOBAUDANDCONFIGURE;
+ if (m_configSource->getVehicleType() == VehicleConfigurationSource::VEHICLE_SURFACE) {
+ gpsData.UbxDynamicModel = GPSSettings::UBXDYNAMICMODEL_AUTOMOTIVE;
+ } else {
+ gpsData.UbxDynamicModel = GPSSettings::UBXDYNAMICMODEL_AIRBORNE1G;
+ }
break;
case VehicleConfigurationSource::GPS_PLATINUM:
{
gpsData.DataProtocol = GPSSettings::DATAPROTOCOL_UBX;
gpsData.UbxAutoConfig = GPSSettings::UBXAUTOCONFIG_AUTOBAUDANDCONFIGURE;
+ if (m_configSource->getVehicleType() == VehicleConfigurationSource::VEHICLE_SURFACE) {
+ gpsData.UbxDynamicModel = GPSSettings::UBXDYNAMICMODEL_AUTOMOTIVE;
+ } else {
+ gpsData.UbxDynamicModel = GPSSettings::UBXDYNAMICMODEL_AIRBORNE1G;
+ }
AuxMagSettings *magSettings = AuxMagSettings::GetInstance(m_uavoManager);
Q_ASSERT(magSettings);
AuxMagSettings::DataFields magsData = magSettings->getData();
@@ -339,6 +349,11 @@ void VehicleConfigurationHelper::applyHardwareConfiguration()
gpsData.DataProtocol = GPSSettings::DATAPROTOCOL_UBX;
gpsData.UbxAutoConfig = GPSSettings::UBXAUTOCONFIG_AUTOBAUDANDCONFIGURE;
+ if (m_configSource->getVehicleType() == VehicleConfigurationSource::VEHICLE_SURFACE) {
+ gpsData.UbxDynamicModel = GPSSettings::UBXDYNAMICMODEL_AUTOMOTIVE;
+ } else {
+ gpsData.UbxDynamicModel = GPSSettings::UBXDYNAMICMODEL_AIRBORNE1G;
+ }
if (m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_SPARKY2) {
data.SPK2_FlexiPort = HwSettings::SPK2_FLEXIPORT_I2C;
} else {
@@ -478,6 +493,12 @@ void VehicleConfigurationHelper::applyVehicleConfiguration()
case VehicleConfigurationSource::GROUNDVEHICLE_MOTORCYCLE:
setupMotorcycle();
break;
+ case VehicleConfigurationSource::GROUNDVEHICLE_BOAT:
+ setupBoat();
+ break;
+ case VehicleConfigurationSource::GROUNDVEHICLE_DIFFERENTIAL_BOAT:
+ setupBoatDiff();
+ break;
default:
break;
}
@@ -923,7 +944,6 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerChannelSettings ch
mSettings->setMixerValueRoll((qint8)100);
mSettings->setMixerValuePitch((qint8)100);
mSettings->setMixerValueYaw((qint8)100);
- maxThrottle = 1;
break;
case VehicleConfigurationSource::VEHICLE_HELI:
break;
@@ -934,14 +954,11 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerChannelSettings ch
mSettings->setMixerValueRoll((qint8)100);
mSettings->setMixerValuePitch((qint8)100);
mSettings->setMixerValueYaw((qint8)100);
- maxThrottle = 1;
break;
case VehicleConfigurationSource::GROUNDVEHICLE_CAR:
mSettings->setMixerValueRoll((qint8)100);
mSettings->setMixerValuePitch((qint8)100);
mSettings->setMixerValueYaw((qint8)100);
- maxThrottle = 1;
- minThrottle = 0;
break;
case VehicleConfigurationSource::GROUNDVEHICLE_DIFFERENTIAL:
mSettings->setMixerValueRoll((qint8)100);
@@ -950,6 +967,18 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerChannelSettings ch
maxThrottle = 0.8;
minThrottle = 0;
break;
+ case VehicleConfigurationSource::GROUNDVEHICLE_BOAT:
+ mSettings->setMixerValueRoll((qint8)100);
+ mSettings->setMixerValuePitch((qint8)100);
+ mSettings->setMixerValueYaw((qint8)100);
+ break;
+ case VehicleConfigurationSource::GROUNDVEHICLE_DIFFERENTIAL_BOAT:
+ mSettings->setMixerValueRoll((qint8)100);
+ mSettings->setMixerValuePitch((qint8)100);
+ mSettings->setMixerValueYaw((qint8)100);
+ maxThrottle = 0.8;
+ minThrottle = 0;
+ break;
default:
break;
}
@@ -960,7 +989,7 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerChannelSettings ch
break;
}
- // Apply Throttle curve max 90% for Multis, 100% for FixedWing/car/Motorbike, 80% for Tank
+ // Apply Throttle curve 0-100% for all vehicles except differential vehicles at 0-80%
QString throttlePattern = "ThrottleCurve%1";
for (int i = 1; i <= 2; i++) {
UAVObjectField *field = mSettings->getField(throttlePattern.arg(i));
@@ -1181,7 +1210,7 @@ void VehicleConfigurationHelper::resetVehicleConfig()
for (int i = 1; i <= 2; i++) {
UAVObjectField *field = mSettings->getField(throttlePattern.arg(i));
Q_ASSERT(field);
- // Set default curve at 90% max for Multirotors
+ // Set default 0 -100% Throttle curve
for (quint32 i = 0; i < field->getNumElements(); i++) {
field->setValue(i * (1.0f / (field->getNumElements() - 1)), i);
}
@@ -2326,3 +2355,69 @@ void VehicleConfigurationHelper::setupMotorcycle()
applyMixerConfiguration(channels);
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEMOTORCYCLE, guiSettings);
}
+
+void VehicleConfigurationHelper::setupBoat()
+{
+ // Typical vehicle setup
+ // 1. Setup mixer data
+ // 2. Setup GUI data
+ // 3. Apply changes
+
+ mixerChannelSettings channels[ActuatorSettings::CHANNELADDR_NUMELEM];
+ GUIConfigDataUnion guiSettings = getGUIConfigData();
+
+ // Rudder Servo (Chan 1)
+ channels[0].type = MIXER_TYPE_SERVO;
+ channels[0].throttle1 = 0;
+ channels[0].throttle2 = 0;
+ channels[0].roll = 0;
+ channels[0].pitch = 0;
+ channels[0].yaw = 100;
+
+ // Motor (Chan 4)
+ channels[3].type = MIXER_TYPE_REVERSABLEMOTOR;
+ channels[3].throttle1 = 100;
+ channels[3].throttle2 = 0;
+ channels[3].roll = 0;
+ channels[3].pitch = 0;
+ channels[3].yaw = 0;
+
+ guiSettings.ground.GroundVehicleSteering1 = 1;
+ guiSettings.ground.GroundVehicleThrottle2 = 4;
+
+ applyMixerConfiguration(channels);
+ applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEBOAT, guiSettings);
+}
+
+void VehicleConfigurationHelper::setupBoatDiff()
+{
+ // Typical vehicle setup
+ // 1. Setup mixer data
+ // 2. Setup GUI data
+ // 3. Apply changes
+
+ mixerChannelSettings channels[ActuatorSettings::CHANNELADDR_NUMELEM];
+ GUIConfigDataUnion guiSettings = getGUIConfigData();
+
+ // Left Motor (Chan 1)
+ channels[0].type = MIXER_TYPE_REVERSABLEMOTOR;
+ channels[0].throttle1 = 100;
+ channels[0].throttle2 = 0;
+ channels[0].roll = 0;
+ channels[0].pitch = 0;
+ channels[0].yaw = 100;
+
+ // Right Motor (Chan 2)
+ channels[1].type = MIXER_TYPE_REVERSABLEMOTOR;
+ channels[1].throttle1 = 100;
+ channels[1].throttle2 = 0;
+ channels[1].roll = 0;
+ channels[1].pitch = 0;
+ channels[1].yaw = -100;
+
+ guiSettings.ground.GroundVehicleThrottle1 = 1;
+ guiSettings.ground.GroundVehicleThrottle2 = 2;
+
+ applyMixerConfiguration(channels);
+ applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIALBOAT, guiSettings);
+}
diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h
index 757dbe646..31f7707ac 100644
--- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h
+++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h
@@ -2,7 +2,8 @@
******************************************************************************
*
* @file vehicleconfigurationhelper.h
- * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
+ * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup
* @{
* @addtogroup VehicleConfigurationHelper
@@ -121,6 +122,8 @@ private:
void setupCar();
void setupTank();
void setupMotorcycle();
+ void setupBoat();
+ void setupBoatDiff();
private slots:
void uAVOTransactionCompleted(UAVObject *object, bool success);
diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h
index 00e2a88fb..c9e10f531 100644
--- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h
+++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h
@@ -2,7 +2,8 @@
******************************************************************************
*
* @file vehicleconfigurationsource.h
- * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
+ * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
+ * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup
* @{
* @addtogroup VehicleConfigurationSource
@@ -63,7 +64,7 @@ public:
MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_X, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO,
MULTI_ROTOR_OCTO_X, MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS,
FIXED_WING_DUAL_AILERON, FIXED_WING_AILERON, FIXED_WING_ELEVON, FIXED_WING_VTAIL, HELI_CCPM,
- GROUNDVEHICLE_MOTORCYCLE, GROUNDVEHICLE_CAR, GROUNDVEHICLE_DIFFERENTIAL };
+ GROUNDVEHICLE_MOTORCYCLE, GROUNDVEHICLE_CAR, GROUNDVEHICLE_DIFFERENTIAL, GROUNDVEHICLE_BOAT, GROUNDVEHICLE_DIFFERENTIAL_BOAT };
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_SRXL, INPUT_HOTT_SUMD, INPUT_EXBUS, INPUT_IBUS, INPUT_UNKNOWN };
diff --git a/ground/gcs/src/share/qml/js/uav.js b/ground/gcs/src/share/qml/js/uav.js
index 967c5f8c7..789a9f52f 100644
--- a/ground/gcs/src/share/qml/js/uav.js
+++ b/ground/gcs/src/share/qml/js/uav.js
@@ -155,7 +155,7 @@ function isCC3D() {
function frameType() {
var frameTypeText = ["FixedWing", "FixedWingElevon", "FixedWingVtail", "VTOL", "HeliCP", "QuadX", "QuadP",
"Hexa+", "Octo+", "Custom", "HexaX", "HexaH", "OctoV", "OctoCoaxP", "OctoCoaxX", "OctoX", "HexaCoax",
- "Tricopter", "GroundVehicleCar", "GroundVehicleDiff", "GroundVehicleMoto"];
+ "Tricopter", "GroundCar", "GroundDiff", "GroundMoto", "GroundBoat", "GroundDiffBoat"];
if (frameTypeText.length != SystemSettings.SystemSettingsConstants.AirframeTypeCount) {
console.log("uav.js: frameType() do not match systemSettings.airframeType uavo");
diff --git a/shared/uavobjectdefinition/systemsettings.xml b/shared/uavobjectdefinition/systemsettings.xml
index f4f4f540a..0e7279495 100644
--- a/shared/uavobjectdefinition/systemsettings.xml
+++ b/shared/uavobjectdefinition/systemsettings.xml
@@ -1,7 +1,7 @@