Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add gyroscopic torque cancellation loop for single-rotor drones #21489

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

bresch
Copy link
Member

@bresch bresch commented Apr 18, 2023

Solved Problem

Single-(rigid)rotor drones have their dynamics dominated by the gyroscopic torque generated by a fast spinning disk. That torque creates a strong coupling between the roll-pitch axes that makes almost impossible to tune correctly.

Solution

Add a feedback loop in the rate controller that cancels-out the gyroscopic torque of the drone based on the rotor speed and the angular velocity of the drone ("anti-precession loop").

Changelog Entry

For release notes:

Single ducted-fan drone support
New parameter: MC_PRECESS_GAIN
Documentation: 

Test coverage

Flown on my single ducted-fan vehicle:
https://youtu.be/u2cETOyuJ20
IMG_20230213_085309

@bresch bresch self-assigned this Apr 18, 2023
@@ -109,6 +115,7 @@ class RateControl
matrix::Vector3f _gain_d; ///< rate control derivative gain
matrix::Vector3f _lim_int; ///< integrator term maximum absolute value
matrix::Vector3f _gain_ff; ///< direct rate to torque feed forward gain only useful for helicopters
float _rotor_angular_momentum; ///< used to cancel out the gyroscopic torque generated by the rotors
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
float _rotor_angular_momentum; ///< used to cancel out the gyroscopic torque generated by the rotors
float _rotor_angular_momentum{}; ///< used to cancel out the gyroscopic torque generated by the rotors

@MaEtUgR MaEtUgR self-requested a review December 14, 2023 10:47
@bresch bresch force-pushed the pr-edf-hv branch 2 times, most recently from 1a8dcbb to ffed768 Compare January 19, 2024 08:47
const bool esc_connected = (esc_status.esc_online_flags & (1 << esc)) || (esc_report.esc_rpm != 0);

// assuming all the rotors are in the same plane, the gyroscopic torque is proportional to the
// difference between the CW and CCW rotation speed
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI for some ESCs (like certain UAVCAN setups) the RPM is reported +/-, but in a lot of other cases (like dshot) it's always reported positive.

@DronecodeBot
Copy link

This pull request has been mentioned on Discussion Forum for PX4, Pixhawk, QGroundControl, MAVSDK, MAVLink. There might be relevant details there:

https://discuss.px4.io/t/single-copter-pid-tuning/5669/9

Single (rigid) rotor aircrafts have their dynamics dominated by the
gyroscopic torque. Compensating for this effect by a feedback greatly
improves stability.
Multirotors can also benefit from this feature when the difference in
RPM between the CW and CCW rotors is large (the sum of the angular
momentum of the rotors is non zero).
Copy link

github-actions bot commented Jan 28, 2025

🔎 FLASH Analysis

px4_fmu-v5x [Total VM Diff: 2632 byte (0.13 %)]
    FILE SIZE        VM SIZE    
--------------  -------------- 
+0.1% +2.57Ki  +0.1% +2.57Ki    .text
  [NEW]    +928  [NEW]    +928    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.2%    +554  +0.2%    +554    [section .text]
  +6.0%    +356  +6.0%    +356    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
  +1.8%    +148  +1.8%    +148    ../../src/modules/control_allocator/ControlAllocator.cpp
   +14%    +148   +14%    +148    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +0.0%     +79  +0.0%     +79    ROMFS/nsh_romfsimg.c
   +12%     +72   +12%     +72    ../../src/lib/rate_control/rate_control.cpp
  +3.9%     +60  +3.9%     +60    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopterCoaxial.cpp
  +2.6%     +52  +2.6%     +52    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  +1.7%     +36  +1.7%     +36    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +3.0%     +32  +3.0%     +32    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  +2.9%     +32  +2.9%     +32    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTilts.cpp
  +2.3%     +24  +2.3%     +24    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  +0.8%     +20  +0.8%     +20    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
 -100.0%     +19 -100.0%     +19    [6 Others]
  +2.1%     +12  +2.1%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  +1.5%     +12  +1.5%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  +3.0%     +12  +3.0%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp
  +1.2%     +12  +1.2%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  +1.3%     +12  +1.3%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
  +2.5%     +12  +2.5%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessUUV.cpp
+0.1% +2.71Ki  [ = ]       0    .debug_abbrev
   +11%     +56  [ = ]       0    ../../src/lib/version/version.c
  +1.2%     +32  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW] +2.61Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.5%     +18  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
+0.1%    +176  [ = ]       0    .debug_aranges
  -5.0%      -8  [ = ]       0    ../../src/lib/version/version.c
  +4.2%      +8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW]    +176  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
+0.1%    +588  [ = ]       0    .debug_frame
+0.2% +53.7Ki  [ = ]       0    .debug_info
  +0.0%      +8  [ = ]       0    ../../src/drivers/batt_smbus/batt_smbus.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/dshot/DShot.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/heater/heater.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled/rgbled.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled_is31fl3195/rgbled_is31fl3195.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled_lp5562/rgbled_lp5562.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/osd/msp_osd/msp_osd.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina226/ina226.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina226/ina226_main.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina228/ina228.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina228/ina228_main.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina238/ina238.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina238/ina238_main.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/pm_selector_auterion/PowerMonitorSelectorAuterion.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/pwm_out/PWMOut.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/px4io/px4io.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/rc/crsf_rc/CrsfRc.cpp
 -99.6% +53.6Ki  [ = ]       0    [175 Others]
+0.1% +5.29Ki  [ = ]       0    .debug_line
  +1.6%     +44  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  +6.7%    +227  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  -1.3%     -25  [ = ]       0    ../../src/lib/version/version.c
  +1.7%    +306  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +4.0%    +169  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  -0.2%      -7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  -0.2%      -7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  -0.3%     -17  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +0.2%      +7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  -0.2%     -15  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  -0.2%      -7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  -0.1%      -3  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
  [NEW] +4.08Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.0%      +3  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
  -0.5%     -23  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTilts.cpp
  -0.2%      -8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessUUV.cpp
  +0.0%      +7  [ = ]       0    ../../src/modules/fw_rate_control/FixedwingRateControl.cpp
  +3.1%    +576  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
  +0.3%      +3  [ = ]       0    task/task_cancelpt.c
+0.2% +8.30Ki  [ = ]       0    .debug_loc
  +0.0%     +26  [ = ]       0    ../../src/drivers/uavcan/uavcan_main.cpp
  +0.0%     +32  [ = ]       0    ../../src/drivers/uavcan/uavcan_servers.cpp
  -0.1%     -15  [ = ]       0    ../../src/lib/collision_prevention/CollisionPrevention.cpp
  +3.3%    +122  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  +8.4%    +688  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  +0.2%     +15  [ = ]       0    ../../src/lib/rtl/rtl_time_estimator.cpp
  -0.2%     -13  [ = ]       0    ../../src/lib/weather_vane/WeatherVane.cpp
  -0.1%     -15  [ = ]       0    ../../src/modules/airspeed_selector/airspeed_selector_main.cpp
  -0.6%     -15  [ = ]       0    ../../src/modules/commander/HealthAndArmingChecks/checks/baroCheck.cpp
  -0.1%     -15  [ = ]       0    ../../src/modules/commander/failure_detector/FailureDetector.cpp
  +2.5%    +552  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +8.0%    +342  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +1.7%     +56  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  +1.0%     +42  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  +0.8%     +48  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +1.0%     +49  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopterCoaxial.cpp
  +0.9%     +45  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  +1.5%     +33  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp
  +0.9%     +98  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  +1.2%     +56  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
 -99.6% +6.22Ki  [ = ]       0    [23 Others]
+0.2% +3.08Ki  [ = ]       0    .debug_ranges
  +9.3%     +80  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
   +16%    +280  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  -2.6%      -8  [ = ]       0    ../../src/lib/version/version.c
  +3.2%    +256  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +5.0%     +64  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +1.2%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  +1.1%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  +1.2%     +24  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +1.9%     +32  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopterCoaxial.cpp
  +0.5%      +8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  +1.6%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp
  +0.8%     +24  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  +0.9%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  +1.0%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
  [NEW] +1.57Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +1.2%     +32  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
  -0.4%      -8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTilts.cpp
  +1.6%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessUUV.cpp
  +0.3%     +24  [ = ]       0    ../../src/modules/fw_rate_control/FixedwingRateControl.cpp
  +4.2%    +432  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
 -99.6%    +209  [ = ]       0    [2 Others]
+0.1% +2.11Ki  [ = ]       0    .debug_str
  +0.2%    +106  [ = ]       0    
  +0.1%     +16  [ = ]       0    ../../src/drivers/batt_smbus/batt_smbus.cpp
   +12%     +30  [ = ]       0    ../../src/lib/control_allocation/actuator_effectiveness/ActuatorEffectiveness.cpp
  +2.2%     +19  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
   +18%     +10  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  +0.7%    +258  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +3.7%     +23  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +0.9%      +8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  -3.7%     -64  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  [NEW]    +704  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.3%     +92  [ = ]       0    ../../src/modules/fw_rate_control/FixedwingRateControl.cpp
  +0.1%     +12  [ = ]       0    ../../src/modules/mc_att_control/mc_att_control_main.cpp
  +5.7%    +972  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
  -0.6%     -27  [ = ]       0    ../../src/modules/sensors/vehicle_angular_velocity/VehicleAngularVelocity.cpp
-1.4%      -3  [ = ]       0    .shstrtab
+0.2% +1.12Ki  [ = ]       0    .strtab
  -8.1%     -32  [ = ]       0    ../../src/lib/version/version.c
   +16%     +99  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW]    +804  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.3%    +276  [ = ]       0    [section .strtab]
+0.1%    +640  [ = ]       0    .symtab
  +2.7%     +16  [ = ]       0    ../../platforms/common/Serial.cpp
  +1.2%     +16  [ = ]       0    ../../src/drivers/imu/analog_devices/adis16507/ADIS16507.cpp
  -9.1%     -16  [ = ]       0    ../../src/drivers/magnetometer/qmc5883l/qmc5883l_main.cpp
  +1.2%     +16  [ = ]       0    ../../src/drivers/uavcan/uavcan_drivers/stm32/driver/src/uc_stm32_clock.cpp
  +0.4%     +16  [ = ]       0    ../../src/lib/parameters/parameters.cpp
  +6.2%     +16  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  -7.0%     -64  [ = ]       0    ../../src/lib/version/version.c
  -4.5%     -16  [ = ]       0    ../../src/lib/wind_estimator/WindEstimator.cpp
  +3.4%     +16  [ = ]       0    ../../src/modules/commander/lm_fit.cpp
   +12%     +48  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW]    +368  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +5.6%     +16  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp
  +0.3%     +16  [ = ]       0    ../../src/modules/fw_pos_control/FixedwingPositionControl.cpp
  -0.7%     -16  [ = ]       0    ../../src/modules/mc_pos_control/MulticopterPositionControl.cpp
  -1.1%     -16  [ = ]       0    ../../src/modules/simulation/sensor_gps_sim/SensorGpsSim.cpp
  +0.4%    +224  [ = ]       0    [section .symtab]
 -14.3%     -16  [ = ]       0    chip/stm32_timerisr.c
   +33%     +16  [ = ]       0    msg/topics_sources/differential_pressure.cpp
-22.5% -2.57Ki  [ = ]       0    [Unmapped]
+0.2% +77.7Ki  +0.1% +2.57Ki    TOTAL

px4_fmu-v6x [Total VM Diff: 2744 byte (0.13 %)]
    FILE SIZE        VM SIZE    
--------------  -------------- 
+0.1% +2.62Ki  +0.1% +2.62Ki    .text
  [NEW]    +928  [NEW]    +928    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.2%    +557  +0.2%    +557    [section .text]
  +6.0%    +356  +6.0%    +356    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
  +1.8%    +148  +1.8%    +148    ../../src/modules/control_allocator/ControlAllocator.cpp
   +14%    +148   +14%    +148    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +0.1%     +95  +0.1%     +95    ROMFS/nsh_romfsimg.c
   +12%     +72   +12%     +72    ../../src/lib/rate_control/rate_control.cpp
  +3.9%     +60  +3.9%     +60    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopterCoaxial.cpp
  +2.6%     +52  +2.6%     +52    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  +0.2%     +40  +0.2%     +40    ../../src/lib/parameters/parameters.cpp
  +1.7%     +36  +1.7%     +36    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +3.0%     +32  +3.0%     +32    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  +2.9%     +32  +2.9%     +32    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTilts.cpp
  +2.3%     +24  +2.3%     +24    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  +0.8%     +20  +0.8%     +20    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
 -99.9%     +20 -99.9%     +20    [5 Others]
  +2.1%     +12  +2.1%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  +1.5%     +12  +1.5%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  +3.0%     +12  +3.0%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp
  +1.2%     +12  +1.2%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  +1.3%     +12  +1.3%     +12    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
[ = ]       0  +0.1%     +64    .bss
  [ = ]       0  +6.9%     +60    [section .bss]
  [ = ]       0  +1.4%      +8    ../../src/lib/parameters/parameters.cpp
  [ = ]       0  -0.1%      -4    ../../platforms/nuttx/src/px4/common/board_dma_alloc.c
+0.1% +2.71Ki  [ = ]       0    .debug_abbrev
   +11%     +56  [ = ]       0    ../../src/lib/version/version.c
  +1.2%     +32  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW] +2.61Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.5%     +18  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
+0.1%    +176  [ = ]       0    .debug_aranges
  -5.0%      -8  [ = ]       0    ../../src/lib/version/version.c
  +4.2%      +8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW]    +176  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
+0.1%    +600  [ = ]       0    .debug_frame
+0.2% +53.2Ki  [ = ]       0    .debug_info
  +0.0%      +8  [ = ]       0    ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/dshot/DShot.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/heater/heater.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled/rgbled.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled_is31fl3195/rgbled_is31fl3195.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled_lp5562/rgbled_lp5562.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/osd/msp_osd/msp_osd.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina226/ina226.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina226/ina226_main.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina228/ina228.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina228/ina228_main.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina238/ina238.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/ina238/ina238_main.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/power_monitor/pm_selector_auterion/PowerMonitorSelectorAuterion.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/pwm_out/PWMOut.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/px4io/px4io.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/rc_input/RCInput.cpp
  +0.0%      +8  [ = ]       0    ../../src/drivers/uavcan/actuators/esc.cpp
 -99.6% +53.0Ki  [ = ]       0    [164 Others]
+0.1% +5.32Ki  [ = ]       0    .debug_line
  +1.6%     +44  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  +0.2%     +37  [ = ]       0    ../../src/lib/parameters/parameters.cpp
  +6.7%    +227  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  -1.3%     -25  [ = ]       0    ../../src/lib/version/version.c
  +1.7%    +306  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +4.0%    +169  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  -0.2%      -7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  -0.2%      -7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  -0.3%     -17  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +0.2%      +7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  -0.2%     -15  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  -0.2%      -7  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  -0.1%      -3  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
  [NEW] +4.08Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.0%      +3  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
  -0.5%     -23  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTilts.cpp
  -0.2%      -8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessUUV.cpp
  -0.0%      -1  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp
  +0.0%      +7  [ = ]       0    ../../src/modules/fw_rate_control/FixedwingRateControl.cpp
  +3.1%    +576  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
 -99.8%      +2  [ = ]       0    [1 Others]
+0.2% +8.15Ki  [ = ]       0    .debug_loc
  +0.2%     +15  [ = ]       0    ../../src/drivers/osd/msp_osd/msp_osd.cpp
  -0.0%      -4  [ = ]       0    ../../src/drivers/uavcan/uavcan_main.cpp
  +0.0%      +4  [ = ]       0    ../../src/drivers/uavcan/uavcan_servers.cpp
  +0.1%     +15  [ = ]       0    ../../src/lib/collision_prevention/CollisionPrevention.cpp
  +3.3%    +122  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  -0.0%      -2  [ = ]       0    ../../src/lib/parameters/parameters.cpp
  +8.4%    +688  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  +0.1%     +15  [ = ]       0    ../../src/modules/airspeed_selector/airspeed_selector_main.cpp
  +2.5%    +552  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +8.0%    +342  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +1.7%     +56  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  +1.0%     +42  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  +0.8%     +48  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +1.0%     +49  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopterCoaxial.cpp
  +0.9%     +45  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  +1.5%     +33  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp
  +0.9%     +98  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  +1.2%     +56  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  +1.2%     +57  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
  [NEW] +4.24Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
 -99.9% +1.73Ki  [ = ]       0    [18 Others]
+0.3% +3.13Ki  [ = ]       0    .debug_ranges
  +9.3%     +80  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
  +0.4%     +56  [ = ]       0    ../../src/lib/parameters/parameters.cpp
   +16%    +280  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  -2.6%      -8  [ = ]       0    ../../src/lib/version/version.c
  +3.2%    +256  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +5.0%     +64  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +1.2%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  +1.1%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp
  +1.2%     +24  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopter.cpp
  +1.9%     +32  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessHelicopterCoaxial.cpp
  +0.5%      +8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  +1.6%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp
  +0.8%     +24  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessRotors.cpp
  +0.9%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessStandardVTOL.cpp
  +1.0%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTailsitterVTOL.cpp
  [NEW] +1.57Ki  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +1.2%     +32  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
  -0.4%      -8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTilts.cpp
  +1.6%     +16  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessUUV.cpp
  +0.3%     +24  [ = ]       0    ../../src/modules/fw_rate_control/FixedwingRateControl.cpp
 -98.9%    +638  [ = ]       0    [3 Others]
+0.1% +2.11Ki  [ = ]       0    .debug_str
  +0.2%    +106  [ = ]       0    
  +0.0%     +16  [ = ]       0    ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
   +12%     +30  [ = ]       0    ../../src/lib/control_allocation/actuator_effectiveness/ActuatorEffectiveness.cpp
  +2.2%     +19  [ = ]       0    ../../src/lib/control_allocation/control_allocation/ControlAllocation.cpp
   +18%     +10  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  +0.7%    +258  [ = ]       0    ../../src/modules/control_allocator/ControlAllocator.cpp
  +3.7%     +23  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  +0.9%      +8  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessCustom.cpp
  -3.7%     -64  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessMCTilt.cpp
  [NEW]    +704  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.3%     +92  [ = ]       0    ../../src/modules/fw_rate_control/FixedwingRateControl.cpp
  +0.1%     +12  [ = ]       0    ../../src/modules/mc_att_control/mc_att_control_main.cpp
  +5.7%    +972  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
  -0.5%     -27  [ = ]       0    ../../src/modules/sensors/vehicle_angular_velocity/VehicleAngularVelocity.cpp
+0.5%      +1  [ = ]       0    .shstrtab
+0.2% +1.12Ki  [ = ]       0    .strtab
  -8.1%     -32  [ = ]       0    ../../src/lib/version/version.c
   +16%     +99  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW]    +804  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +0.8%     +13  [ = ]       0    ../../src/modules/land_detector/LandDetector.cpp
  +0.3%    +276  [ = ]       0    [section .strtab]
  -1.4%     -13  [ = ]       0    src/modules/flight_mode_manager/FlightTasks_generated.cpp
+0.1%    +640  [ = ]       0    .symtab
  +6.2%     +16  [ = ]       0    ../../platforms/nuttx/src/px4/stm/stm32_common/io_pins/pwm_servo.c
  -1.1%     -16  [ = ]       0    ../../src/drivers/adc/ads1115/ads1115_main.cpp
  -1.2%     -16  [ = ]       0    ../../src/drivers/imu/analog_devices/adis16470/ADIS16470.cpp
  +1.0%     +16  [ = ]       0    ../../src/drivers/uavcan/uavcan_drivers/stm32h7/driver/src/uc_stm32h7_can.cpp
  +6.2%     +16  [ = ]       0    ../../src/lib/rate_control/rate_control.cpp
  +2.1%     +16  [ = ]       0    ../../src/lib/sensor_calibration/Magnetometer.cpp
  -7.0%     -64  [ = ]       0    ../../src/lib/version/version.c
  -4.5%     -16  [ = ]       0    ../../src/lib/wind_estimator/WindEstimator.cpp
   +12%     +48  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp
  [NEW]    +368  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessThrustVectoring.cpp
  +5.9%     +16  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp
  +2.1%     +16  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp
  +0.3%     +16  [ = ]       0    ../../src/modules/fw_pos_control/FixedwingPositionControl.cpp
  +1.5%     +16  [ = ]       0    ../../src/modules/land_detector/LandDetector.cpp
  +1.1%     +16  [ = ]       0    ../../src/modules/mc_rate_control/MulticopterRateControl.cpp
  +0.9%     +16  [ = ]       0    ../../src/modules/vtol_att_control/vtol_att_control_main.cpp
  +0.3%    +176  [ = ]       0    [section .symtab]
 -14.3%     -16  [ = ]       0    chip/stm32_timerisr.c
   +33%     +16  [ = ]       0    msg/topics_sources/differential_pressure.cpp
-3.8% -2.62Ki  [ = ]       0    [Unmapped]
+0.2% +77.1Ki  +0.1% +2.68Ki    TOTAL

Updated: 2025-01-28T14:34:08

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants