diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.qml b/src/AutoPilotPlugins/APM/APMPowerComponent.qml index 5a7ae7b1c6a9da4cd6a6eeb96391a46d9b9faef1..1a4e153fc4bd346d0485a3cbaa3da5d4929426cd 100644 --- a/src/AutoPilotPlugins/APM/APMPowerComponent.qml +++ b/src/AutoPilotPlugins/APM/APMPowerComponent.qml @@ -124,6 +124,7 @@ SetupPage { property Fact armVoltMin: controller.getParameterFact(-1, "r.BATT_ARM_VOLT", false /* reportMissing */) property Fact battAmpPerVolt: controller.getParameterFact(-1, "r.BATT_AMP_PERVLT", false /* reportMissing */) + property Fact battAmpOffset: controller.getParameterFact(-1, "BATT_AMP_OFFSET", false /* reportMissing */) property Fact battCapacity: controller.getParameterFact(-1, "BATT_CAPACITY", false /* reportMissing */) property Fact battCurrPin: controller.getParameterFact(-1, "BATT_CURR_PIN", false /* reportMissing */) property Fact battMonitor: controller.getParameterFact(-1, "BATT_MONITOR", false /* reportMissing */) @@ -208,6 +209,7 @@ SetupPage { property Fact armVoltMin: controller.getParameterFact(-1, "r.BATT2_ARM_VOLT", false /* reportMissing */) property Fact battAmpPerVolt: controller.getParameterFact(-1, "r.BATT2_AMP_PERVLT", false /* reportMissing */) + property Fact battAmpOffset: controller.getParameterFact(-1, "BATT2_AMP_OFFSET", false /* reportMissing */) property Fact battCapacity: controller.getParameterFact(-1, "BATT2_CAPACITY", false /* reportMissing */) property Fact battCurrPin: controller.getParameterFact(-1, "BATT2_CURR_PIN", false /* reportMissing */) property Fact battMonitor: controller.getParameterFact(-1, "BATT2_MONITOR", false /* reportMissing */) @@ -293,7 +295,8 @@ SetupPage { if (sensorModel.get(i).voltPin == battVoltPin.value && sensorModel.get(i).currPin == battCurrPin.value && Math.abs(sensorModel.get(i).voltMult - battVoltMult.value) < 0.001 && - Math.abs(sensorModel.get(i).ampPerVolt - battAmpPerVolt.value) < 0.0001) { + Math.abs(sensorModel.get(i).ampPerVolt - battAmpPerVolt.value) < 0.0001 && + Math.abs(sensorModel.get(i).ampOffset - battAmpOffset.value) < 0.0001) { sensorCombo.currentIndex = i return } @@ -312,6 +315,7 @@ SetupPage { currPin: 3 voltMult: 10.1 ampPerVolt: 17.0 + ampOffset: 0 } ListElement { @@ -320,6 +324,7 @@ SetupPage { currPin: 3 voltMult: 12.02 ampPerVolt: 39.877 + ampOffset: 0 } ListElement { @@ -328,6 +333,16 @@ SetupPage { currPin: 3 voltMult: 12.02 ampPerVolt: 17.0 + ampOffset: 0 + } + + ListElement { + text: qsTr("Blue Robotics Power Sense Module R2") + voltPin: 2 + currPin: 3 + voltMult: 11.000 + ampPerVolt: 37.8788 + ampOffset: 0.330 } ListElement { @@ -390,6 +405,7 @@ SetupPage { battCurrPin.value = sensorModel.get(index).currPin battVoltMult.value = sensorModel.get(index).voltMult battAmpPerVolt.value = sensorModel.get(index).ampPerVolt + battAmpOffset.value = sensorModel.get(index).ampOffset } else { } @@ -488,6 +504,27 @@ SetupPage { text: qsTr("If the current draw reported by the vehicle is largely different than the current read externally using a current meter you can adjust the amps per volt value to correct this. Click the Calculate button for help with calculating a new value.") visible: _showAdvanced } + + QGCLabel { + text: qsTr("Amps Offset:") + visible: _showAdvanced + } + + FactTextField { + width: _fieldWidth + fact: battAmpOffset + visible: _showAdvanced + } + + QGCLabel { + Layout.columnSpan: 3 + Layout.fillWidth: true + font.pointSize: ScreenTools.smallFontPointSize + wrapMode: Text.WordWrap + text: qsTr("If the vehicle reports a high current read when there is little or no current going through it, adjust the Amps Offset. It should be equal to the voltage reported by the sensor when the current is zero.") + visible: _showAdvanced + } + } // GridLayout } // Column } // Component - powerSetupComponent diff --git a/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml b/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml index 24047e61012dff653ef5f9e657ca1863084863cd..32b520d1baaff843e2918ca43b1ade0e1668f335 100644 --- a/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml +++ b/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml @@ -464,7 +464,7 @@ Set to 2 to use heading from motion capture Circuit breaker for disabling buzzer - Setting this parameter to 782097 will disable the buzzer audio notification. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK + Setting this parameter to 782097 will disable the buzzer audio notification. Setting this parameter to 782090 will disable the startup tune, while keeping all others enabled. 0 782097 true @@ -653,7 +653,7 @@ Note: ekf2 will limit the delta velocity bias estimate magnitude to be less than This is the minimum indicated airspeed at which the wing can produce 1g of lift. It is used by the airspeed sensor fault detection and failsafe calculation to detect a significant airspeed low measurement error condition and should be set based on flight test for reliable operation. The failsafe response is controlled by the COM_ASPD_FS_ACT parameter. m/s - + Time-out for auto disarm after landing A non-zero, positive value specifies the time-out period in seconds after which the vehicle will be automatically disarmed in case a landing situation has been detected during this period. The vehicle will also auto-disarm right after arming if it has not even flown, however the time will always be 10 seconds such that the pilot has enough time to take off. A negative value means that automatic disarming triggered by landing detection is disabled. -1 @@ -2829,6 +2829,7 @@ but also ignore less noise TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -2844,6 +2845,7 @@ but also ignore less noise TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -2990,6 +2992,7 @@ but also ignore less noise TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -3460,6 +3463,7 @@ Used to calculate increased terrain random walk nosie due to movementTELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -3503,6 +3507,7 @@ Used to calculate increased terrain random walk nosie due to movementTELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -3546,6 +3551,7 @@ Used to calculate increased terrain random walk nosie due to movementTELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -4142,6 +4148,14 @@ default 1.5 turns per second 3 0.01 + + Pitch rate controller gain + Global gain of the controller. This gain scales the P, I and D terms of the controller: output = MC_PITCHRATE_K * (MC_PITCHRATE_P * error + MC_PITCHRATE_I * error_integral + MC_PITCHRATE_D * error_derivative) Set MC_PITCHRATE_P=1 to implement a PID in the ideal form. Set MC_PITCHRATE_K=1 to implement a PID in the parallel form. + 0.0 + 5.0 + 4 + 0.0005 + Max pitch rate Limit for pitch rate in manual and auto modes (except acro). Has effect for large rotations in autonomous mode, to avoid large control output and mixer saturation. This is not only limited by the vehicle's properties, but also by the maximum measurement rate of the gyro. @@ -4204,6 +4218,14 @@ default 1.5 turns per second 3 0.01 + + Roll rate controller gain + Global gain of the controller. This gain scales the P, I and D terms of the controller: output = MC_ROLLRATE_K * (MC_ROLLRATE_P * error + MC_ROLLRATE_I * error_integral + MC_ROLLRATE_D * error_derivative) Set MC_ROLLRATE_P=1 to implement a PID in the ideal form. Set MC_ROLLRATE_K=1 to implement a PID in the parallel form. + 0.0 + 5.0 + 4 + 0.0005 + Max roll rate Limit for roll rate in manual and auto modes (except acro). Has effect for large rotations in autonomous mode, to avoid large control output and mixer saturation. This is not only limited by the vehicle's properties, but also by the maximum measurement rate of the gyro. @@ -4306,6 +4328,14 @@ default 1.5 turns per second 2 0.01 + + Yaw rate controller gain + Global gain of the controller. This gain scales the P, I and D terms of the controller: output = MC_YAWRATE_K * (MC_YAWRATE_P * error + MC_YAWRATE_I * error_integral + MC_YAWRATE_D * error_derivative) Set MC_YAWRATE_P=1 to implement a PID in the ideal form. Set MC_YAWRATE_K=1 to implement a PID in the parallel form. + 0.0 + 5.0 + 4 + 0.0005 + Max yaw rate 0.0 @@ -5864,6 +5894,7 @@ the setpoint will be capped to MPC_XY_VEL_MAX TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -5879,6 +5910,7 @@ the setpoint will be capped to MPC_XY_VEL_MAX TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -8456,6 +8488,20 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller + + + + Distance Sensor Rotation + Distance Sensor Rotation as MAV_SENSOR_ORIENTATION enum + True + + ROTATION_FORWARD_FACING + ROTATION_RIGHT_FACING + ROTATION_LEFT_FACING + ROTATION_BACKWARD_FACING + ROTATION_UPWARD_FACING + ROTATION_DOWNWARD_FACING @@ -8588,6 +8634,7 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -9011,6 +9058,7 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -9029,6 +9077,7 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -9044,10 +9093,27 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller + + Serial Configuration for RC Input Driver + Configure on which serial port to run RC Input Driver. Setting this to 'Disabled' will use a board-specific default port for RC input. + true + + Disabled + UART 6 + TELEM 1 + TELEM 2 + TELEM 3 + TELEM/SERIAL 4 + GPS 1 + GPS 2 + Radio Controller + + Baudrate for the GPS 1 Serial Port Configure the Baudrate for the GPS 1 Serial Port. Note: certain drivers such as the GPS can determine the Baudrate automatically. @@ -9114,6 +9180,39 @@ is less than 50% of this value 3000000 8N1 + + Baudrate for the Radio Controller Serial Port + Configure the Baudrate for the Radio Controller Serial Port. Note: certain drivers such as the GPS can determine the Baudrate automatically. + true + + Auto + 50 8N1 + 75 8N1 + 110 8N1 + 134 8N1 + 150 8N1 + 200 8N1 + 300 8N1 + 600 8N1 + 1200 8N1 + 1800 8N1 + 2400 8N1 + 4800 8N1 + 9600 8N1 + 19200 8N1 + 38400 8N1 + 57600 8N1 + 115200 8N1 + 230400 8N1 + 460800 8N1 + 500000 8N1 + 921600 8N1 + 1000000 8N1 + 1500000 8N1 + 2000000 8N1 + 3000000 8N1 + + Baudrate for the TELEM 1 Serial Port Configure the Baudrate for the TELEM 1 Serial Port. Note: certain drivers such as the GPS can determine the Baudrate automatically. @@ -9616,6 +9715,7 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller @@ -9631,6 +9731,7 @@ is less than 50% of this value TELEM/SERIAL 4 GPS 1 GPS 2 + Radio Controller diff --git a/src/VehicleSetup/Bootloader.h b/src/VehicleSetup/Bootloader.h index 6132241e08c891905bc57c8712caa4daa6952b4e..6542d7c215c9f32160b90a9b7e8e05f579330932 100644 --- a/src/VehicleSetup/Bootloader.h +++ b/src/VehicleSetup/Bootloader.h @@ -75,7 +75,8 @@ public: static const int boardIDASCV1 = 65; ///< ASC V1 board, as from USB PID static const int boardIDCrazyflie2 = 12; ///< Crazyflie 2.0 board, as from USB PID static const int boardIDOmnibusF4SD = 42; ///< Omnibus F4 SD, as from USB PID - static const int boardIDFMUK66V3 = 28; ///< FMUK66V3 board, as from USB PID + static const int boardIDFMUK66V3 = 28; ///< FMUK66V3 board, as from USB PID + static const int boardIDKakuteF7 = 123; ///< Holybro KakuteF7 board, as from USB PID /// Simulated board id for V3 which is a V2 board which supports larger flash space /// IMPORTANT: Make sure this id does not conflict with any newly added real board ids diff --git a/src/VehicleSetup/FirmwareUpgradeController.cc b/src/VehicleSetup/FirmwareUpgradeController.cc index 6e63bfd1deecf5864737441f4b03f507bdf6e0ca..0422c16a8e7fc5eb3e663d16bebac9d39eda7366 100644 --- a/src/VehicleSetup/FirmwareUpgradeController.cc +++ b/src/VehicleSetup/FirmwareUpgradeController.cc @@ -298,11 +298,19 @@ void FirmwareUpgradeController::_initFirmwareHash() { AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/crazyflie_default.px4"}, }; + //////////////////////////////////// Omnibus F4 SD firmwares ////////////////////////////////////////////////// FirmwareToUrlElement_t rgOmnibusF4SDFirmwareArray[] = { { AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/stable/omnibus_f4sd_default.px4"}, { AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/omnibus_f4sd_default.px4"}, { AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/omnibus_f4sd_default.px4"}, }; + + //////////////////////////////////// Kakute F7 firmwares ////////////////////////////////////////////////// + FirmwareToUrlElement_t rgKakuteF7FirmwareArray[] = { + { AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/stable/holybro_kakutef7_default.px4"}, + { AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/holybro_kakutef7_default.px4"}, + { AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/holybro_kakutef7_default.px4"}, + }; //////////////////////////////////// FMUK66V3 firmwares ////////////////////////////////////////////////// FirmwareToUrlElement_t rgFMUK66V3FirmwareArray[] = { @@ -392,6 +400,12 @@ void FirmwareUpgradeController::_initFirmwareHash() _rgOmnibusF4SDFirmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url); } + size = sizeof(rgKakuteF7FirmwareArray)/sizeof(rgKakuteF7FirmwareArray[0]); + for (int i = 0; i < size; i++) { + const FirmwareToUrlElement_t& element = rgKakuteF7FirmwareArray[i]; + _rgKakuteF7Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url); + } + size = sizeof(rgFMUK66V3FirmwareArray)/sizeof(rgFMUK66V3FirmwareArray[0]); for (int i = 0; i < size; i++) { const FirmwareToUrlElement_t& element = rgFMUK66V3FirmwareArray[i]; @@ -469,6 +483,9 @@ QHash* FirmwareUpgradeCo case Bootloader::boardIDOmnibusF4SD: _rgFirmwareDynamic = _rgOmnibusF4SDFirmware; break; + case Bootloader::boardIDKakuteF7: + _rgFirmwareDynamic = _rgKakuteF7Firmware; + break; case Bootloader::boardIDFMUK66V3: _rgFirmwareDynamic = _rgFMUK66V3Firmware; break; diff --git a/src/VehicleSetup/FirmwareUpgradeController.h b/src/VehicleSetup/FirmwareUpgradeController.h index 39c50804bbc315f64ef355de6c64a51e7ddcd23c..594d6756f51bd84539d1c1371336dc8137fc943d 100644 --- a/src/VehicleSetup/FirmwareUpgradeController.h +++ b/src/VehicleSetup/FirmwareUpgradeController.h @@ -217,6 +217,7 @@ private: QHash _rgASCV1Firmware; QHash _rgCrazyflie2Firmware; QHash _rgOmnibusF4SDFirmware; + QHash _rgKakuteF7Firmware; QHash _rgFMUK66V3Firmware; QHash _rgPX4FLowFirmware; QHash _rg3DRRadioFirmware;