Skip to content

Commit 9567de0

Browse files
tpoignonecmamueluth
authored andcommitted
Fix reference in chained diff drive controller (ros-controls#1529)
1 parent c039069 commit 9567de0

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

diff_drive_controller/src/diff_drive_controller.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,10 @@ controller_interface::CallbackReturn DiffDriveController::on_configure(
335335
cmd_vel_timeout_ = rclcpp::Duration::from_seconds(params_.cmd_vel_timeout);
336336
publish_limited_velocity_ = params_.publish_limited_velocity;
337337

338+
// Allocate reference interfaces if needed
339+
const int nr_ref_itfs = 2;
340+
reference_interfaces_.resize(nr_ref_itfs, std::numeric_limits<double>::quiet_NaN());
341+
338342
// TODO(christophfroehlich) remove deprecated parameters
339343
// START DEPRECATED
340344
if (!params_.linear.x.has_velocity_limits)
@@ -618,7 +622,9 @@ bool DiffDriveController::reset()
618622

619623
void DiffDriveController::reset_buffers()
620624
{
621-
reference_interfaces_ = std::vector<double>(2, std::numeric_limits<double>::quiet_NaN());
625+
std::fill(
626+
reference_interfaces_.begin(), reference_interfaces_.end(),
627+
std::numeric_limits<double>::quiet_NaN());
622628
// Empty out the old queue. Fill with zeros (not NaN) to catch early accelerations.
623629
std::queue<std::array<double, 2>> empty;
624630
std::swap(previous_two_commands_, empty);
@@ -714,10 +720,8 @@ bool DiffDriveController::on_set_chained_mode(bool chained_mode)
714720
std::vector<hardware_interface::CommandInterface>
715721
DiffDriveController::on_export_reference_interfaces()
716722
{
717-
const int nr_ref_itfs = 2;
718-
reference_interfaces_.resize(nr_ref_itfs, std::numeric_limits<double>::quiet_NaN());
719723
std::vector<hardware_interface::CommandInterface> reference_interfaces;
720-
reference_interfaces.reserve(nr_ref_itfs);
724+
reference_interfaces.reserve(reference_interfaces_.size());
721725

722726
reference_interfaces.push_back(hardware_interface::CommandInterface(
723727
get_node()->get_name(), std::string("linear/") + hardware_interface::HW_IF_VELOCITY,

0 commit comments

Comments
 (0)