@@ -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
619623void 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)
714720std::vector<hardware_interface::CommandInterface>
715721DiffDriveController::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