@@ -72,12 +72,12 @@ RosFilter<T>::RosFilter(const rclcpp::NodeOptions & options)
7272 static_diag_error_level_(diagnostic_msgs::msg::DiagnosticStatus::OK),
7373 frequency_(30.0 ),
7474 gravitational_acceleration_(9.80665 ),
75- history_length_(0 ),
75+ history_length_(0ns ),
7676 latest_control_(),
7777 last_set_pose_time_(0 , 0 , RCL_ROS_TIME),
7878 latest_control_time_(0 , 0 , RCL_ROS_TIME),
79- tf_timeout_(0 ),
80- tf_time_offset_(0 )
79+ tf_timeout_(0ns ),
80+ tf_time_offset_(0ns )
8181{
8282 tf_buffer_ = std::make_unique<tf2_ros::Buffer>(this ->get_clock ());
8383 tf_listener_ = std::make_unique<tf2_ros::TransformListener>(*tf_buffer_);
@@ -604,7 +604,7 @@ void RosFilter<T>::integrateMeasurements(const rclcpp::Time & current_time)
604604 const std::string first_measurement_topic =
605605 first_measurement->topic_name_ ;
606606 // revertTo may invalidate first_measurement
607- if (!revertTo (first_measurement_time - rclcpp::Duration (1 ))) {
607+ if (!revertTo (first_measurement_time - rclcpp::Duration (1ns ))) {
608608 RF_DEBUG (
609609 " ERROR: history interval is too small to revert to time " <<
610610 filter_utilities::toSec (first_measurement_time) << " \n " );
@@ -815,7 +815,10 @@ void RosFilter<T>::loadParams()
815815 // Try to resolve tf_prefix
816816 std::string tf_prefix = " " ;
817817 std::string tf_prefix_path = " " ;
818- this ->declare_parameter (" tf_prefix" );
818+ try {
819+ this ->declare_parameter <std::string>(" tf_prefix" );
820+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
821+ }
819822 if (this ->get_parameter (" tf_prefix" , tf_prefix_path)) {
820823 // Append the tf prefix in a tf2-friendly manner
821824 filter_utilities::appendPrefix (tf_prefix, map_frame_id_);
@@ -833,19 +836,17 @@ void RosFilter<T>::loadParams()
833836
834837 // Transform future dating
835838 double offset_tmp = this ->declare_parameter (" transform_time_offset" , 0.0 );
836- tf_time_offset_ =
837- rclcpp::Duration (filter_utilities::secToNanosec (offset_tmp));
839+ tf_time_offset_ = rclcpp::Duration::from_seconds (offset_tmp);
838840
839841 // Transform timeout
840842 double timeout_tmp = this ->declare_parameter (" transform_timeout" , 0.0 );
841- tf_timeout_ = rclcpp::Duration ( filter_utilities::secToNanosec (timeout_tmp) );
843+ tf_timeout_ = rclcpp::Duration::from_seconds (timeout_tmp);
842844
843845 // Update frequency and sensor timeout
844846 frequency_ = this ->declare_parameter (" frequency" , 30.0 );
845847
846848 double sensor_timeout = this ->declare_parameter (" sensor_timeout" , 1.0 / frequency_);
847- filter_.setSensorTimeout (
848- rclcpp::Duration (filter_utilities::secToNanosec (sensor_timeout)));
849+ filter_.setSensorTimeout (rclcpp::Duration::from_seconds (sensor_timeout));
849850
850851 // Determine if we're in 2D mode
851852 two_d_mode_ = this ->declare_parameter (" two_d_mode" , false );
@@ -865,8 +866,7 @@ void RosFilter<T>::loadParams()
865866 " specified. Absolute value will be assumed." ;
866867 }
867868
868- history_length_ = rclcpp::Duration (
869- filter_utilities::secToNanosec (std::abs (history_length_double)));
869+ history_length_ = rclcpp::Duration::from_seconds (std::abs (history_length_double));
870870
871871 // Whether we reset filter on jump back in time
872872 reset_on_time_jump_ = this ->declare_parameter (" reset_on_time_jump" , false );
@@ -883,7 +883,10 @@ void RosFilter<T>::loadParams()
883883 control_timeout = this ->declare_parameter (" control_timeout" , 0.0 );
884884
885885 if (use_control_) {
886- this ->declare_parameter (" control_config" );
886+ try {
887+ this ->declare_parameter <std::vector<bool >>(" control_config" );
888+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
889+ }
887890 if (this ->get_parameter (" control_config" , control_update_vector)) {
888891 if (control_update_vector.size () != TWIST_SIZE) {
889892 std::cerr << " Control configuration must be of size " << TWIST_SIZE <<
@@ -899,7 +902,10 @@ void RosFilter<T>::loadParams()
899902 use_control_ = false ;
900903 }
901904
902- this ->declare_parameter (" acceleration_limits" );
905+ try {
906+ this ->declare_parameter <std::vector<double >>(" acceleration_limits" );
907+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
908+ }
903909 if (this ->get_parameter (" acceleration_limits" , acceleration_limits)) {
904910 if (acceleration_limits.size () != TWIST_SIZE) {
905911 std::cerr << " Acceleration configuration must be of size " << TWIST_SIZE <<
@@ -915,7 +921,10 @@ void RosFilter<T>::loadParams()
915921 acceleration_limits.resize (TWIST_SIZE, 1.0 );
916922 }
917923
918- this ->declare_parameter (" acceleration_gains" );
924+ try {
925+ this ->declare_parameter <std::vector<double >>(" acceleration_gains" );
926+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
927+ }
919928 if (this ->get_parameter (" acceleration_gains" , acceleration_gains)) {
920929 const int size = acceleration_gains.size ();
921930 if (size != TWIST_SIZE) {
@@ -929,7 +938,10 @@ void RosFilter<T>::loadParams()
929938 }
930939 }
931940
932- this ->declare_parameter (" deceleration_limits" );
941+ try {
942+ this ->declare_parameter <std::vector<double >>(" deceleration_limits" );
943+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
944+ }
933945 if (this ->get_parameter (" deceleration_limits" , deceleration_limits)) {
934946 if (deceleration_limits.size () != TWIST_SIZE) {
935947 std::cerr << " Deceleration configuration must be of size " << TWIST_SIZE <<
@@ -945,7 +957,10 @@ void RosFilter<T>::loadParams()
945957 deceleration_limits = acceleration_limits;
946958 }
947959
948- this ->declare_parameter (" deceleration_gains" );
960+ try {
961+ this ->declare_parameter <std::vector<double >>(" deceleration_gains" );
962+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
963+ }
949964 if (this ->get_parameter (" deceleration_gains" , deceleration_gains)) {
950965 const int size = deceleration_gains.size ();
951966 if (size != TWIST_SIZE) {
@@ -977,7 +992,10 @@ void RosFilter<T>::loadParams()
977992 dynamic_process_noise_covariance);
978993
979994 std::vector<double > initial_state;
980- this ->declare_parameter (" initial_state" );
995+ try {
996+ this ->declare_parameter <std::vector<double >>(" initial_state" );
997+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
998+ }
981999 if (this ->get_parameter (" initial_state" , initial_state)) {
9821000 if (initial_state.size () != STATE_SIZE) {
9831001 std::cerr << " Initial state must be of size " << STATE_SIZE <<
@@ -1066,15 +1084,17 @@ void RosFilter<T>::loadParams()
10661084 ss << " odom" << topic_ind++;
10671085 std::string odom_topic_name = ss.str ();
10681086 std::string odom_topic;
1069- this ->declare_parameter (odom_topic_name);
1087+ try {
1088+ this ->declare_parameter <std::string>(odom_topic_name);
1089+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
1090+ }
10701091
10711092 rclcpp::Parameter parameter;
10721093 if (this ->get_parameter (odom_topic_name, parameter)) {
10731094 more_params = true ;
10741095 odom_topic = parameter.as_string ();
10751096 } else {
10761097 more_params = false ;
1077- this ->undeclare_parameter (odom_topic_name);
10781098 }
10791099
10801100 if (more_params) {
@@ -1217,15 +1237,17 @@ void RosFilter<T>::loadParams()
12171237 ss << " pose" << topic_ind++;
12181238 std::string pose_topic_name = ss.str ();
12191239 std::string pose_topic;
1220- this ->declare_parameter (pose_topic_name);
1240+ try {
1241+ this ->declare_parameter <std::string>(pose_topic_name);
1242+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
1243+ }
12211244
12221245 rclcpp::Parameter parameter;
12231246 if (this ->get_parameter (pose_topic_name, parameter)) {
12241247 more_params = true ;
12251248 pose_topic = parameter.as_string ();
12261249 } else {
12271250 more_params = false ;
1228- this ->undeclare_parameter (pose_topic_name);
12291251 }
12301252
12311253 if (more_params) {
@@ -1335,15 +1357,17 @@ void RosFilter<T>::loadParams()
13351357 ss << " twist" << topic_ind++;
13361358 std::string twist_topic_name = ss.str ();
13371359 std::string twist_topic;
1338- this ->declare_parameter (twist_topic_name);
1360+ try {
1361+ this ->declare_parameter <std::string>(twist_topic_name);
1362+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
1363+ }
13391364
13401365 rclcpp::Parameter parameter;
13411366 if (this ->get_parameter (twist_topic_name, parameter)) {
13421367 more_params = true ;
13431368 twist_topic = parameter.as_string ();
13441369 } else {
13451370 more_params = false ;
1346- this ->undeclare_parameter (twist_topic_name);
13471371 }
13481372
13491373 if (more_params) {
@@ -1417,15 +1441,17 @@ void RosFilter<T>::loadParams()
14171441 ss << " imu" << topic_ind++;
14181442 std::string imu_topic_name = ss.str ();
14191443 std::string imu_topic;
1420- this ->declare_parameter (imu_topic_name);
1444+ try {
1445+ this ->declare_parameter <std::string>(imu_topic_name);
1446+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
1447+ }
14211448
14221449 rclcpp::Parameter parameter;
14231450 if (this ->get_parameter (imu_topic_name, parameter)) {
14241451 more_params = true ;
14251452 imu_topic = parameter.as_string ();
14261453 } else {
14271454 more_params = false ;
1428- this ->undeclare_parameter (imu_topic_name);
14291455 }
14301456
14311457 if (more_params) {
@@ -1663,7 +1689,7 @@ void RosFilter<T>::loadParams()
16631689
16641690 filter_.setControlParams (
16651691 control_update_vector,
1666- rclcpp::Duration ( filter_utilities::secToNanosec (control_timeout) ),
1692+ rclcpp::Duration::from_seconds (control_timeout),
16671693 acceleration_limits, acceleration_gains, deceleration_limits,
16681694 deceleration_gains);
16691695
@@ -1727,7 +1753,10 @@ void RosFilter<T>::loadParams()
17271753 process_noise_covariance.setZero ();
17281754 std::vector<double > process_noise_covar_flat;
17291755
1730- this ->declare_parameter (" process_noise_covariance" );
1756+ try {
1757+ this ->declare_parameter <std::vector<double >>(" process_noise_covariance" );
1758+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
1759+ }
17311760 if (this ->get_parameter (
17321761 " process_noise_covariance" ,
17331762 process_noise_covar_flat))
@@ -1754,7 +1783,10 @@ void RosFilter<T>::loadParams()
17541783 initial_estimate_error_covariance.setZero ();
17551784 std::vector<double > estimate_error_covar_flat;
17561785
1757- this ->declare_parameter (" initial_estimate_covariance" );
1786+ try {
1787+ this ->declare_parameter <std::vector<double >>(" initial_estimate_covariance" );
1788+ } catch (const rclcpp::exceptions::NoParameterOverrideProvided &) {
1789+ }
17581790 if (this ->get_parameter (
17591791 " initial_estimate_covariance" ,
17601792 estimate_error_covar_flat))
0 commit comments