From 71e673bec29f350bfddeed95960a50d463f75b46 Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Sun, 15 Mar 2026 11:43:23 -0800 Subject: [PATCH] fix(mc_rate_control): remove redundant uORB copy in rate setpoint path (#26755) Subscription::update() already copies data into the destination buffer, making the subsequent copy() call redundant. This eliminates an unnecessary memcpy every cycle on the 400 Hz rate control loop. --- src/modules/mc_rate_control/MulticopterRateControl.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/modules/mc_rate_control/MulticopterRateControl.cpp b/src/modules/mc_rate_control/MulticopterRateControl.cpp index 4e8f5c700c..7bfb83037b 100644 --- a/src/modules/mc_rate_control/MulticopterRateControl.cpp +++ b/src/modules/mc_rate_control/MulticopterRateControl.cpp @@ -179,12 +179,10 @@ MulticopterRateControl::Run() } } else if (_vehicle_rates_setpoint_sub.update(&vehicle_rates_setpoint)) { - if (_vehicle_rates_setpoint_sub.copy(&vehicle_rates_setpoint)) { - _rates_setpoint(0) = PX4_ISFINITE(vehicle_rates_setpoint.roll) ? vehicle_rates_setpoint.roll : rates(0); - _rates_setpoint(1) = PX4_ISFINITE(vehicle_rates_setpoint.pitch) ? vehicle_rates_setpoint.pitch : rates(1); - _rates_setpoint(2) = PX4_ISFINITE(vehicle_rates_setpoint.yaw) ? vehicle_rates_setpoint.yaw : rates(2); - _thrust_setpoint = Vector3f(vehicle_rates_setpoint.thrust_body); - } + _rates_setpoint(0) = PX4_ISFINITE(vehicle_rates_setpoint.roll) ? vehicle_rates_setpoint.roll : rates(0); + _rates_setpoint(1) = PX4_ISFINITE(vehicle_rates_setpoint.pitch) ? vehicle_rates_setpoint.pitch : rates(1); + _rates_setpoint(2) = PX4_ISFINITE(vehicle_rates_setpoint.yaw) ? vehicle_rates_setpoint.yaw : rates(2); + _thrust_setpoint = Vector3f(vehicle_rates_setpoint.thrust_body); } // run the rate controller