Skip to content

Commit a9391d0

Browse files
Saitejabojja07mergify[bot]
authored andcommitted
Fix open-loop odometry by applying SpeedLimiter first (#2260)
(cherry picked from commit 7c64f3a)
1 parent 6fd6ea9 commit a9391d0

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

diff_drive_controller/src/diff_drive_controller.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)