20
20
#include " autoware/tracking_object_merger/association/solver/ssp.hpp"
21
21
#include " autoware/tracking_object_merger/utils/utils.hpp"
22
22
23
+ #include < diagnostic_msgs/msg/diagnostic_status.hpp>
24
+
23
25
#include < Eigen/Core>
24
26
#include < Eigen/Geometry>
25
27
@@ -168,6 +170,10 @@ DecorativeTrackerMergerNode::DecorativeTrackerMergerNode(const rclcpp::NodeOptio
168
170
stop_watch_ptr_->tic (" cyclic_time" );
169
171
stop_watch_ptr_->tic (" processing_time" );
170
172
published_time_publisher_ = std::make_unique<autoware_utils::PublishedTimePublisher>(this );
173
+
174
+ // diagnostics
175
+ diagnostics_interface_ptr_ =
176
+ std::make_unique<autoware::universe_utils::DiagnosticsInterface>(this , " decorative_object_merger_node" );
171
177
}
172
178
173
179
void DecorativeTrackerMergerNode::set3dDataAssociation (
@@ -200,6 +206,7 @@ void DecorativeTrackerMergerNode::mainObjectsCallback(
200
206
const TrackedObjects::ConstSharedPtr & main_objects)
201
207
{
202
208
stop_watch_ptr_->toc (" processing_time" , true );
209
+ diagnostics_interface_ptr_->clear ();
203
210
204
211
/* transform to target merge coordinate */
205
212
TrackedObjects transformed_objects;
@@ -210,6 +217,7 @@ void DecorativeTrackerMergerNode::mainObjectsCallback(
210
217
TrackedObjects::ConstSharedPtr transformed_main_objects =
211
218
std::make_shared<TrackedObjects>(transformed_objects);
212
219
220
+ bool is_existing_sub_objects = true ;
213
221
// try to merge sub object
214
222
if (!sub_objects_buffer_.empty ()) {
215
223
// get interpolated sub objects
@@ -236,6 +244,16 @@ void DecorativeTrackerMergerNode::mainObjectsCallback(
236
244
} else {
237
245
RCLCPP_DEBUG (this ->get_logger (), " interpolated_sub_objects is null" );
238
246
}
247
+ } else {
248
+ is_existing_sub_objects = false ;
249
+ }
250
+
251
+ diagnostics_interface_ptr_->add_key_value (" is_existing_sub_objects" , is_existing_sub_objects);
252
+ if (!is_existing_sub_objects) {
253
+ std::stringstream message;
254
+ message << " Sub object is empty, so only main object is published" ;
255
+ diagnostics_interface_ptr_->update_level_and_message (
256
+ diagnostic_msgs::msg::DiagnosticStatus::WARN, message.str ());
239
257
}
240
258
241
259
// try to merge main object
@@ -249,6 +267,7 @@ void DecorativeTrackerMergerNode::mainObjectsCallback(
249
267
" debug/cyclic_time_ms" , stop_watch_ptr_->toc (" cyclic_time" , true ));
250
268
processing_time_publisher_->publish <autoware_internal_debug_msgs::msg::Float64Stamped>(
251
269
" debug/processing_time_ms" , stop_watch_ptr_->toc (" processing_time" , true ));
270
+ diagnostics_interface_ptr_->publish (tracked_objects.header .stamp );
252
271
}
253
272
254
273
/* *
@@ -259,6 +278,10 @@ void DecorativeTrackerMergerNode::mainObjectsCallback(
259
278
*/
260
279
void DecorativeTrackerMergerNode::subObjectsCallback (const TrackedObjects::ConstSharedPtr & msg)
261
280
{
281
+ if (msg->objects .empty ()) {
282
+ return ;
283
+ }
284
+
262
285
/* transform to target merge coordinate */
263
286
TrackedObjects transformed_objects;
264
287
if (!autoware::object_recognition_utils::transformObjects (
0 commit comments