@@ -150,7 +150,14 @@ void InputStream::getObjectsOlderThan(
150
150
const rclcpp::Time & object_latest_time, const rclcpp::Time & object_oldest_time,
151
151
ObjectsList & objects_list)
152
152
{
153
- assert (object_latest_time.nanoseconds () > object_oldest_time.nanoseconds ());
153
+ if (object_latest_time < object_oldest_time) {
154
+ RCLCPP_WARN (
155
+ node_.get_logger (),
156
+ " InputManager::getObjectsOlderThan %s: Invalid object time interval, object_latest_time: %f, "
157
+ " object_oldest_time: %f" ,
158
+ long_name_.c_str (), object_latest_time.seconds (), object_oldest_time.seconds ());
159
+ return ;
160
+ }
154
161
155
162
for (const auto & object : objects_que_) {
156
163
const rclcpp::Time object_time = rclcpp::Time (object.header .stamp );
@@ -251,6 +258,16 @@ void InputManager::getObjectTimeInterval(
251
258
object_oldest_time = object_oldest_time < latest_exported_object_time_
252
259
? latest_exported_object_time_
253
260
: object_oldest_time;
261
+
262
+ // check the object time interval is valid
263
+ if (object_oldest_time > object_latest_time) {
264
+ RCLCPP_WARN (
265
+ node_.get_logger (),
266
+ " InputManager::getObjectTimeInterval Invalid object time interval, object_latest_time: %f, "
267
+ " object_oldest_time: %f" ,
268
+ (now - object_latest_time).seconds (), (now - object_oldest_time).seconds ());
269
+ object_oldest_time = object_latest_time - rclcpp::Duration::from_seconds (1.0 );
270
+ }
254
271
}
255
272
256
273
void InputManager::optimizeTimings ()
0 commit comments