@@ -335,6 +335,10 @@ controller_interface::CallbackReturn DiffDriveController::on_configure(
335
335
cmd_vel_timeout_ = rclcpp::Duration::from_seconds (params_.cmd_vel_timeout );
336
336
publish_limited_velocity_ = params_.publish_limited_velocity ;
337
337
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
+
338
342
// TODO(christophfroehlich) remove deprecated parameters
339
343
// START DEPRECATED
340
344
if (!params_.linear .x .has_velocity_limits )
@@ -618,7 +622,9 @@ bool DiffDriveController::reset()
618
622
619
623
void DiffDriveController::reset_buffers ()
620
624
{
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 ());
622
628
// Empty out the old queue. Fill with zeros (not NaN) to catch early accelerations.
623
629
std::queue<std::array<double , 2 >> empty;
624
630
std::swap (previous_two_commands_, empty);
@@ -714,10 +720,8 @@ bool DiffDriveController::on_set_chained_mode(bool chained_mode)
714
720
std::vector<hardware_interface::CommandInterface>
715
721
DiffDriveController::on_export_reference_interfaces ()
716
722
{
717
- const int nr_ref_itfs = 2 ;
718
- reference_interfaces_.resize (nr_ref_itfs, std::numeric_limits<double >::quiet_NaN ());
719
723
std::vector<hardware_interface::CommandInterface> reference_interfaces;
720
- reference_interfaces.reserve (nr_ref_itfs );
724
+ reference_interfaces.reserve (reference_interfaces_. size () );
721
725
722
726
reference_interfaces.push_back (hardware_interface::CommandInterface (
723
727
get_node ()->get_name (), std::string (" linear/" ) + hardware_interface::HW_IF_VELOCITY,
0 commit comments