Skip to content

Commit 9fba3e8

Browse files
authored
Fix deprecation warnings for upcoming ROS Galactic release (#631)
* Fix deprecation warnings when constructing rclcpp::Duration objects If we are constructing from nanoseconds we must be explicit about the units. Signed-off-by: Jacob Perron <[email protected]> * Fix deprecated calls to declare_parameter If a default value is not provided, then we must specify the parameter type. Signed-off-by: Jacob Perron <[email protected]> * Refactor Signed-off-by: Jacob Perron <[email protected]> * Fix other deprecated uses of rclcpp::Duration Signed-off-by: Jacob Perron <[email protected]> * Minor refactor Signed-off-by: Jacob Perron <[email protected]> * Catch exceptions when no parameter override is provided When there is a NoParameterOverrideProvided exception, the parameter is not declared so we don't need to undeclare it. Signed-off-by: Jacob Perron <[email protected]>
1 parent bbef51d commit 9fba3e8

File tree

5 files changed

+74
-42
lines changed

5 files changed

+74
-42
lines changed

src/filter_base.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ namespace robot_localization
4646
{
4747
FilterBase::FilterBase()
4848
: initialized_(false), use_control_(false),
49-
use_dynamic_process_noise_covariance_(false), control_timeout_(0),
49+
use_dynamic_process_noise_covariance_(false), control_timeout_(0, 0u),
5050
last_measurement_time_(0, 0, RCL_ROS_TIME), latest_control_time_(0),
51-
sensor_timeout_(0), debug_stream_(nullptr),
51+
sensor_timeout_(0, 0u), debug_stream_(nullptr),
5252
acceleration_gains_(TWIST_SIZE, 0.0),
5353
acceleration_limits_(TWIST_SIZE, 0.0),
5454
deceleration_gains_(TWIST_SIZE, 0.0),
@@ -99,7 +99,7 @@ void FilterBase::reset()
9999
covariance_epsilon_ *= 0.001;
100100

101101
// Assume 30Hz from sensor data (configurable)
102-
sensor_timeout_ = rclcpp::Duration(0.033333333);
102+
sensor_timeout_ = rclcpp::Duration::from_seconds(0.033333333);
103103

104104
// Initialize our last update and measurement times
105105
last_measurement_time_ = rclcpp::Time(0, 0, RCL_ROS_TIME);
@@ -197,7 +197,7 @@ void FilterBase::processMeasurement(const Measurement & measurement)
197197
"------ FilterBase::processMeasurement (" << measurement.topic_name_ <<
198198
") ------\n");
199199

200-
rclcpp::Duration delta(0);
200+
rclcpp::Duration delta(0, 0u);
201201

202202
// If we've had a previous reading, then go through the predict/update
203203
// cycle. Otherwise, set our state and covariance to whatever we get
@@ -215,7 +215,7 @@ void FilterBase::processMeasurement(const Measurement & measurement)
215215

216216
// Only want to carry out a prediction if it's
217217
// forward in time. Otherwise, just correct.
218-
if (delta > rclcpp::Duration(0)) {
218+
if (delta > rclcpp::Duration(0, 0u)) {
219219
validateDelta(delta);
220220
predict(measurement.time_, delta);
221221

@@ -247,7 +247,7 @@ void FilterBase::processMeasurement(const Measurement & measurement)
247247
initialized_ = true;
248248
}
249249

250-
if (delta >= rclcpp::Duration(0)) {
250+
if (delta >= rclcpp::Duration(0, 0u)) {
251251
// Update the last measurement and update time.
252252
// The measurement time is based on the time stamp of the
253253
// measurement, whereas the update time is based on this
@@ -337,15 +337,15 @@ void FilterBase::setState(const Eigen::VectorXd & state) {state_ = state;}
337337
void FilterBase::validateDelta(rclcpp::Duration & /*delta*/)
338338
{
339339
// TODO(someone): Need to verify this condition B'Coz
340-
// rclcpp::Duration(100000.0) value is 0.00010000000000000000479
340+
// rclcpp::Duration::from_seconds(100000.0) value is 0.00010000000000000000479
341341
// This handles issues with ROS time when use_sim_time is on and we're playing
342342
// from bags.
343-
/* if (delta > rclcpp::Duration(100000.0))
343+
/* if (delta > rclcpp::Duration::from_seconds(100000.0))
344344
{
345345
FB_DEBUG("Delta was very large. Suspect playing from bag file. Setting to
346346
0.01\n");
347347
348-
delta = rclcpp::Duration(0.01);
348+
delta = rclcpp::Duration::from_seconds(0.01);
349349
} */
350350
}
351351

src/robot_localization_estimator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ void RobotLocalizationEstimator::extrapolate(
182182
rclcpp::Time time_stamp = rclcpp::Time(
183183
boundary_state.time_stamp *
184184
1000000000);
185-
rclcpp::Duration delta_duration = rclcpp::Duration(delta * 1000000000);
185+
rclcpp::Duration delta_duration = rclcpp::Duration::from_seconds(delta);
186186
filter_->predict(time_stamp, delta_duration);
187187

188188
state_at_req_time.time_stamp = requested_time;

src/ros_filter.cpp

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

src/ros_filter_utilities.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ bool lookupTransformSafe(
193193
{
194194
return lookupTransformSafe(
195195
buffer, target_frame, source_frame, time,
196-
rclcpp::Duration(0), target_frame_trans, silent);
196+
rclcpp::Duration(0, 0u), target_frame_trans, silent);
197197
}
198198

199199
void quatToRPY(

test/test_filter_base.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ TEST(FilterBaseTest, DerivedFilterGetSet) {
138138

139139
// Simple get/set checks
140140
double timeout = 7.4;
141-
derived.setSensorTimeout(rclcpp::Duration(timeout));
142-
EXPECT_EQ(derived.getSensorTimeout(), rclcpp::Duration(timeout));
141+
derived.setSensorTimeout(rclcpp::Duration::from_seconds(timeout));
142+
EXPECT_EQ(derived.getSensorTimeout(), rclcpp::Duration::from_seconds(timeout));
143143

144144
double lastMeasTime = 3.83;
145145
derived.setLastMeasurementTime(rclcpp::Time(lastMeasTime));

0 commit comments

Comments
 (0)