diff --git a/evaluation/tier4_metrics_rviz_plugin/CMakeLists.txt b/evaluation/tier4_metrics_rviz_plugin/CMakeLists.txt index 8475b596..aa5d4ec1 100644 --- a/evaluation/tier4_metrics_rviz_plugin/CMakeLists.txt +++ b/evaluation/tier4_metrics_rviz_plugin/CMakeLists.txt @@ -28,4 +28,5 @@ ament_auto_package( INSTALL_TO_SHARE icons plugins + config ) diff --git a/evaluation/tier4_metrics_rviz_plugin/config/metrics_visualize_panel.param.yaml b/evaluation/tier4_metrics_rviz_plugin/config/metrics_visualize_panel.param.yaml new file mode 100644 index 00000000..187fade2 --- /dev/null +++ b/evaluation/tier4_metrics_rviz_plugin/config/metrics_visualize_panel.param.yaml @@ -0,0 +1,51 @@ +curvature: + table: true + graph: false +point_interval: + table: true + graph: false +length: + table: true + graph: false +duration: + table: true + graph: false +velocity: + table: true + graph: false +acceleration: + table: true + graph: false +jerk: + table: true + graph: false +lateral_deviation: + table: true + graph: false +yaw_deviation: + table: true + graph: false +velocity_deviation: + table: true + graph: false +stability: + table: true + graph: false +stability_frechet: + table: true + graph: false +obstacle_distance: + table: true + graph: false +obstacle_ttc: + table: true + graph: false +modified_goal_longitudinal_deviation: + table: true + graph: false +modified_goal_lateral_deviation: + table: true + graph: false +modified_goal_yaw_deviation: + table: true + graph: false diff --git a/evaluation/tier4_metrics_rviz_plugin/include/metrics_visualize_panel.hpp b/evaluation/tier4_metrics_rviz_plugin/include/metrics_visualize_panel.hpp index 3d660999..579111c3 100644 --- a/evaluation/tier4_metrics_rviz_plugin/include/metrics_visualize_panel.hpp +++ b/evaluation/tier4_metrics_rviz_plugin/include/metrics_visualize_panel.hpp @@ -35,6 +35,8 @@ #include +#include + #include #include #include @@ -244,6 +246,9 @@ private Q_SLOTS: // Stored metrics data std::unordered_map metrics_; + // Metrics configuration + YAML::Node config_; + // Utility functions for managing widget visibility based on topics void updateWidgetVisibility(const std::string & target_topic, const bool show); void showCurrentTopicWidgets(); diff --git a/evaluation/tier4_metrics_rviz_plugin/package.xml b/evaluation/tier4_metrics_rviz_plugin/package.xml index d06382bc..347d86cf 100644 --- a/evaluation/tier4_metrics_rviz_plugin/package.xml +++ b/evaluation/tier4_metrics_rviz_plugin/package.xml @@ -22,6 +22,7 @@ qtbase5-dev rclcpp rviz_common + yaml-cpp ament_lint_auto autoware_lint_common diff --git a/evaluation/tier4_metrics_rviz_plugin/src/metrics_visualize_panel.cpp b/evaluation/tier4_metrics_rviz_plugin/src/metrics_visualize_panel.cpp index b92a9a7a..1104d26e 100644 --- a/evaluation/tier4_metrics_rviz_plugin/src/metrics_visualize_panel.cpp +++ b/evaluation/tier4_metrics_rviz_plugin/src/metrics_visualize_panel.cpp @@ -15,6 +15,7 @@ #include "metrics_visualize_panel.hpp" +#include #include #include @@ -95,6 +96,11 @@ void MetricsVisualizePanel::onInitialize() const auto period = std::chrono::milliseconds(static_cast(1e3 / 10)); timer_ = raw_node_->create_wall_timer(period, [&]() { onTimer(); }); + + const std::string yaml_filepath = + ament_index_cpp::get_package_share_directory("tier4_metrics_rviz_plugin") + + "/config/metrics_visualize_panel.param.yaml"; + config_ = YAML::LoadFile(yaml_filepath); } void MetricsVisualizePanel::updateWidgetVisibility( @@ -224,12 +230,21 @@ void MetricsVisualizePanel::onMetrics( QGridLayout * all_metrics_layout = dynamic_cast(all_metrics_widget->layout()); // Add the widgets to the "All Metrics" tab layout - all_metrics_layout->addWidget(tableWidget, row, col); - all_metrics_layout->setRowStretch(row, false); - all_metrics_layout->addWidget(chartViewWidget, row + 1, col); - all_metrics_layout->setRowStretch(row + 1, true); - all_metrics_layout->setColumnStretch(col, true); - + try { + if (config_[status.name]["table"].as()) { + all_metrics_layout->addWidget(tableWidget, row, col); + } + + if (config_[status.name]["graph"].as()) { + all_metrics_layout->addWidget(chartViewWidget, row + 1, col); + } + + all_metrics_layout->setRowStretch(row, false); + all_metrics_layout->setRowStretch(row + 1, true); + all_metrics_layout->setColumnStretch(col, true); + } catch (const YAML::Exception & e) { + std::cerr << "YAML error: " << e.what() << std::endl; + } // Also add the widgets to the topic_widgets_map_ for easy management topic_widgets_map_[topic_name][status.name] = std::make_pair(tableWidget, chartViewWidget); }