Browse Source

Rework PX4 airspeed cal due to parameter name/functionality changes (#11707)

Co-authored-by: Don Gagne <don@thegagnes.com>
QGC4.4
Julian Oes 7 months ago committed by GitHub
parent
commit
5e3bc45d62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      src/AutoPilotPlugins/APM/APMRadioComponent.cc
  2. 2
      src/AutoPilotPlugins/AutoPilotPlugin.cc
  3. 4
      src/AutoPilotPlugins/AutoPilotPlugin.h
  4. 57
      src/AutoPilotPlugins/PX4/SensorsComponent.cc
  5. 11
      src/AutoPilotPlugins/PX4/SensorsComponent.h
  6. 10
      src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml
  7. 8
      src/AutoPilotPlugins/PX4/SensorsSetup.qml
  8. 2
      src/VehicleSetup/VehicleComponent.cc
  9. 4
      src/VehicleSetup/VehicleComponent.h
  10. 2
      src/VehicleSetup/VehicleSummary.qml

2
src/AutoPilotPlugins/APM/APMRadioComponent.cc

@ -124,7 +124,7 @@ void APMRadioComponent::_connectSetupTriggers(void)
void APMRadioComponent::_triggerChanged(void) void APMRadioComponent::_triggerChanged(void)
{ {
emit setupCompleteChanged(setupComplete()); emit setupCompleteChanged();
// Control mapping may have changed so we need to reset triggers // Control mapping may have changed so we need to reset triggers
_connectSetupTriggers(); _connectSetupTriggers();

2
src/AutoPilotPlugins/AutoPilotPlugin.cc

@ -47,7 +47,7 @@ void AutoPilotPlugin::_recalcSetupComplete(void)
if (_setupComplete != newSetupComplete) { if (_setupComplete != newSetupComplete) {
_setupComplete = newSetupComplete; _setupComplete = newSetupComplete;
emit setupCompleteChanged(_setupComplete); emit setupCompleteChanged();
} }
} }

4
src/AutoPilotPlugins/AutoPilotPlugin.h

@ -54,8 +54,8 @@ public:
bool setupComplete(void) const; bool setupComplete(void) const;
signals: signals:
void setupCompleteChanged(bool setupComplete); void setupCompleteChanged (void);
void vehicleComponentsChanged(void); void vehicleComponentsChanged (void);
protected: protected:
/// All access to AutoPilotPugin objects is through getInstanceForAutoPilotPlugin /// All access to AutoPilotPugin objects is through getInstanceForAutoPilotPlugin

57
src/AutoPilotPlugins/PX4/SensorsComponent.cc

@ -7,18 +7,10 @@
* *
****************************************************************************/ ****************************************************************************/
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "SensorsComponent.h" #include "SensorsComponent.h"
#include "PX4AutoPilotPlugin.h" #include "PX4AutoPilotPlugin.h"
#include "SensorsComponentController.h" #include "SensorsComponentController.h"
const char* SensorsComponent::_airspeedBreakerParam = "CBRK_AIRSPD_CHK";
const char* SensorsComponent::_airspeedDisabledParam = "FW_ARSP_MODE";
const char* SensorsComponent::_airspeedCalParam = "SENS_DPRES_OFF";
const char* SensorsComponent::_magEnabledParam = "SYS_HAS_MAG"; const char* SensorsComponent::_magEnabledParam = "SYS_HAS_MAG";
const char* SensorsComponent::_magCalParam = "CAL_MAG0_ID"; const char* SensorsComponent::_magCalParam = "CAL_MAG0_ID";
@ -27,6 +19,15 @@ SensorsComponent::SensorsComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot,
_name(tr("Sensors")) _name(tr("Sensors"))
{ {
_deviceIds = QStringList({QStringLiteral("CAL_GYRO0_ID"), QStringLiteral("CAL_ACC0_ID") }); _deviceIds = QStringList({QStringLiteral("CAL_GYRO0_ID"), QStringLiteral("CAL_ACC0_ID") });
if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) {
_airspeedCalTriggerParams << "SENS_DPRES_OFF";
if (_vehicle->firmwareMajorVersion() >= 1 && _vehicle->firmwareMinorVersion() >= 14) {
_airspeedCalTriggerParams << "SYS_HAS_NUM_ASPD";
} else {
_airspeedCalTriggerParams << "FW_ARSP_MODE" << "CBRK_AIRSPD_CHK";
}
}
} }
QString SensorsComponent::name(void) const QString SensorsComponent::name(void) const
@ -66,10 +67,17 @@ bool SensorsComponent::setupComplete(void) const
} }
if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) { if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) {
if (!_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _airspeedDisabledParam)->rawValue().toBool() && if (_vehicle->firmwareMajorVersion() >= 1 && _vehicle->firmwareMinorVersion() >= 14) {
_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _airspeedBreakerParam)->rawValue().toInt() != 162128 && if (_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "SYS_HAS_NUM_ASPD")->rawValue().toBool() &&
_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _airspeedCalParam)->rawValue().toFloat() == 0.0f) { _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "SENS_DPRES_OFF")->rawValue().toFloat() == 0.0f) {
return false; return false;
}
} else {
if (!_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "FW_ARSP_MODE")->rawValue().toBool() &&
_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "CBRK_AIRSPD_CHK")->rawValue().toInt() != 162128 &&
_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "SENS_DPRES_OFF")->rawValue().toFloat() == 0.0f) {
return false;
}
} }
} }
@ -82,7 +90,7 @@ QStringList SensorsComponent::setupCompleteChangedTriggerList(void) const
triggers << _deviceIds << _magCalParam << _magEnabledParam; triggers << _deviceIds << _magCalParam << _magEnabledParam;
if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) { if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) {
triggers << _airspeedCalParam << _airspeedBreakerParam; triggers << _airspeedCalTriggerParams;
} }
return triggers; return triggers;
@ -105,3 +113,26 @@ QUrl SensorsComponent::summaryQmlSource(void) const
return QUrl::fromUserInput(summaryQml); return QUrl::fromUserInput(summaryQml);
} }
bool SensorsComponent::_airspeedCalSupported(void) const
{
if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) {
if (_vehicle->firmwareMajorVersion() >= 1 && _vehicle->firmwareMinorVersion() >= 14) {
if (_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "SYS_HAS_NUM_ASPD")->rawValue().toBool()) {
return true;
}
} else {
if (!_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "FW_ARSP_MODE")->rawValue().toBool() &&
_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "CBRK_AIRSPD_CHK")->rawValue().toInt() != 162128) {
return true;
}
}
}
return false;
}
bool SensorsComponent::_airspeedCalRequired(void) const
{
return _airspeedCalSupported() && _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "SENS_DPRES_OFF")->rawValue().toFloat() == 0.0f;
}

11
src/AutoPilotPlugins/PX4/SensorsComponent.h

@ -24,6 +24,9 @@ class SensorsComponent : public VehicleComponent
public: public:
SensorsComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr); SensorsComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
Q_PROPERTY(bool airspeedCalSupported READ _airspeedCalSupported STORED false NOTIFY setupCompleteChanged)
Q_PROPERTY(bool airspeedCalRequired READ _airspeedCalRequired STORED false NOTIFY setupCompleteChanged)
// Virtuals from VehicleComponent // Virtuals from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const override; QStringList setupCompleteChangedTriggerList(void) const override;
@ -37,13 +40,13 @@ public:
virtual QUrl summaryQmlSource(void) const override; virtual QUrl summaryQmlSource(void) const override;
private: private:
bool _airspeedCalSupported (void) const;
bool _airspeedCalRequired (void) const;
const QString _name; const QString _name;
QVariantList _summaryItems; QVariantList _summaryItems;
QStringList _deviceIds; QStringList _deviceIds;
QStringList _airspeedCalTriggerParams;
static const char* _airspeedDisabledParam;
static const char* _airspeedBreakerParam;
static const char* _airspeedCalParam;
static const char* _magEnabledParam; static const char* _magEnabledParam;
static const char* _magCalParam; static const char* _magCalParam;

10
src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml

@ -18,12 +18,6 @@ Item {
property Fact mag0IdFact: controller.getParameterFact(-1, "CAL_MAG0_ID") property Fact mag0IdFact: controller.getParameterFact(-1, "CAL_MAG0_ID")
property Fact gyro0IdFact: controller.getParameterFact(-1, "CAL_GYRO0_ID") property Fact gyro0IdFact: controller.getParameterFact(-1, "CAL_GYRO0_ID")
property Fact accel0IdFact: controller.getParameterFact(-1, "CAL_ACC0_ID") property Fact accel0IdFact: controller.getParameterFact(-1, "CAL_ACC0_ID")
property Fact dpressOffFact: controller.getParameterFact(-1, "SENS_DPRES_OFF")
property Fact airspeedDisabledFact: controller.getParameterFact(-1, "FW_ARSP_MODE")
property Fact airspeedBreakerFact: controller.getParameterFact(-1, "CBRK_AIRSPD_CHK")
property bool _airspeedVisible: airspeedDisabledFact.value == 0 && airspeedBreakerFact.value !== 162128
property bool _airspeedCalRequired: _airspeedVisible && dpressOffFact.value === 0
Column { Column {
anchors.fill: parent anchors.fill: parent
@ -45,8 +39,8 @@ Item {
VehicleSummaryRow { VehicleSummaryRow {
labelText: qsTr("Airspeed:") labelText: qsTr("Airspeed:")
visible: _airspeedVisible visible: vehicleComponent.airspeedCalSupported
valueText: _airspeedCalRequired ? qsTr("Setup required") : qsTr("Ready") valueText: vehicleComponent.airspeedCalRequired ? qsTr("Setup required") : qsTr("Ready")
} }
} }
} }

8
src/AutoPilotPlugins/PX4/SensorsSetup.qml

@ -449,11 +449,9 @@ Item {
id: airspeedButton id: airspeedButton
width: _buttonWidth width: _buttonWidth
text: qsTr("Airspeed") text: qsTr("Airspeed")
visible: (controller.vehicle.fixedWing || controller.vehicle.vtol || controller.vehicle.airship) && visible: vehicleComponent.airspeedCalSupported &&
controller.getParameterFact(-1, "FW_ARSP_MODE").value == 0 && QGroundControl.corePlugin.options.showSensorCalibrationAirspeed &&
controller.getParameterFact(-1, "CBRK_AIRSPD_CHK").value !== 162128 && showSensorCalibrationAirspeed
QGroundControl.corePlugin.options.showSensorCalibrationAirspeed &&
showSensorCalibrationAirspeed
indicatorGreen: sens_dpres_off.value !== 0 indicatorGreen: sens_dpres_off.value !== 0
onClicked: { onClicked: {

2
src/VehicleSetup/VehicleComponent.cc

@ -64,5 +64,5 @@ void VehicleComponent::setupTriggerSignals(void)
void VehicleComponent::_triggerUpdated(QVariant /*value*/) void VehicleComponent::_triggerUpdated(QVariant /*value*/)
{ {
emit setupCompleteChanged(setupComplete()); emit setupCompleteChanged();
} }

4
src/VehicleSetup/VehicleComponent.h

@ -68,8 +68,8 @@ public:
virtual void setupTriggerSignals(void); virtual void setupTriggerSignals(void);
signals: signals:
void setupCompleteChanged(bool setupComplete); void setupCompleteChanged (void);
void setupSourceChanged(void); void setupSourceChanged (void);
protected slots: protected slots:
void _triggerUpdated(QVariant value); void _triggerUpdated(QVariant value);

2
src/VehicleSetup/VehicleSummary.qml

@ -146,6 +146,8 @@ Rectangle {
anchors.fill: parent anchors.fill: parent
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
source: modelData.summaryQmlSource source: modelData.summaryQmlSource
property var vehicleComponent: modelData
} }
} }
} }

Loading…
Cancel
Save