@@ -155,6 +155,17 @@ controller_interface::return_type DiffDriveController::update_and_write_commands
155155 return controller_interface::return_type::OK;
156156 }
157157
158+ // Apply speed limits and update buffers
159+ double & last_linear = previous_two_commands_.back ()[0 ];
160+ double & second_to_last_linear = previous_two_commands_.front ()[0 ];
161+ double & last_angular = previous_two_commands_.back ()[1 ];
162+ double & second_to_last_angular = previous_two_commands_.front ()[1 ];
163+
164+ limiter_linear_->limit (linear_command, last_linear, second_to_last_linear, period.seconds ());
165+ limiter_angular_->limit (angular_command, last_angular, second_to_last_angular, period.seconds ());
166+ previous_two_commands_.pop ();
167+ previous_two_commands_.push ({{linear_command, angular_command}});
168+
158169 // Apply (possibly new) multipliers:
159170 const double wheel_separation = params_.wheel_separation_multiplier * params_.wheel_separation ;
160171 const double left_wheel_radius = params_.left_wheel_radius_multiplier * params_.wheel_radius ;
@@ -259,16 +270,6 @@ controller_interface::return_type DiffDriveController::update_and_write_commands
259270 }
260271 }
261272
262- double & last_linear = previous_two_commands_.back ()[0 ];
263- double & second_to_last_linear = previous_two_commands_.front ()[0 ];
264- double & last_angular = previous_two_commands_.back ()[1 ];
265- double & second_to_last_angular = previous_two_commands_.front ()[1 ];
266-
267- limiter_linear_->limit (linear_command, last_linear, second_to_last_linear, period.seconds ());
268- limiter_angular_->limit (angular_command, last_angular, second_to_last_angular, period.seconds ());
269- previous_two_commands_.pop ();
270- previous_two_commands_.push ({{linear_command, angular_command}});
271-
272273 // Publish limited velocity
273274 if (params_.publish_limited_velocity && realtime_limited_velocity_publisher_)
274275 {
0 commit comments