diff --git a/src/AutoPilotPlugins/Common/RadioComponentController.cc b/src/AutoPilotPlugins/Common/RadioComponentController.cc index bf5a65dbb7aaf08754820bc7b92aaab805bfc443..8ae567dbfd80b550b63c83887e814ba2b41309ee 100644 --- a/src/AutoPilotPlugins/Common/RadioComponentController.cc +++ b/src/AutoPilotPlugins/Common/RadioComponentController.cc @@ -786,16 +786,20 @@ void RadioComponentController::_writeCalibration(void) paramFact->setRawValue((float)info->rcMax); } - // APM has a backwards interpretation of "reversed" on the Pitch control. So be careful. - float reversedParamValue; - if (_px4Vehicle() || info->function != rcCalFunctionPitch) { - reversedParamValue = info->reversed ? -1.0f : 1.0f; - } else { - reversedParamValue = info->reversed ? 1.0f : -1.0f; - } - paramFact = getParameterFact(FactSystem::defaultComponentId, revTpl.arg(oneBasedChannel)); - if (paramFact) { - paramFact->setRawValue(reversedParamValue); + // For multi-rotor we can determine reverse setting during radio cal. For anything other than multi-rotor, servo installation + // may affect channel reversing so we can't automatically determine it. + if (_vehicle->multiRotor()) { + // APM multi-rotor has a backwards interpretation of "reversed" on the Pitch control. So be careful. + float reversedParamValue; + if (_px4Vehicle() || info->function != rcCalFunctionPitch) { + reversedParamValue = info->reversed ? -1.0f : 1.0f; + } else { + reversedParamValue = info->reversed ? 1.0f : -1.0f; + } + paramFact = getParameterFact(FactSystem::defaultComponentId, revTpl.arg(oneBasedChannel)); + if (paramFact) { + paramFact->setRawValue(reversedParamValue); + } } }