diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index d3d9149cd2c8d..f7603af847d1f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,5 +1,3 @@
-### Copied from .github/CODEOWNERS-manual ###
-
### Automatically generated from package.xml ###
common/autoware_ad_api_specs/** isamu.takagi@tier4.jp ryohsuke.mitsudome@tier4.jp
common/autoware_auto_common/** opensource@apex.ai satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp
@@ -23,6 +21,7 @@ common/goal_distance_calculator/** taiki.tanaka@tier4.jp
common/grid_map_utils/** maxime.clement@tier4.jp
common/interpolation/** fumiya.watanabe@tier4.jp takayuki.murooka@tier4.jp
common/kalman_filter/** koji.minoda@tier4.jp takeshi.ishita@tier4.jp yukihiro.saito@tier4.jp
+common/mission_planner_rviz_plugin/** isamu.takagi@tier4.jp
common/motion_utils/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp
common/object_recognition_utils/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp takayuki.murooka@tier4.jp yoshi.ri@tier4.jp
common/osqp_interface/** fumiya.watanabe@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp
@@ -32,7 +31,7 @@ common/polar_grid/** yukihiro.saito@tier4.jp
common/qp_interface/** fumiya.watanabe@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp
common/rtc_manager_rviz_plugin/** taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp
common/signal_processing/** ali.boyali@tier4.jp fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp
-common/tensorrt_common/** daisuke.nishimatsu@tier4.jp dan.umeda@tier4.jp manato.hirabayashi@tier4.jp
+common/tensorrt_common/** dan.umeda@tier4.jp manato.hirabayashi@tier4.jp
common/tier4_adapi_rviz_plugin/** hiroki.ota@tier4.jp isamu.takagi@tier4.jp kosuke.takeuchi@tier4.jp
common/tier4_api_utils/** isamu.takagi@tier4.jp
common/tier4_automatic_goal_rviz_plugin/** dawid.moszynski@robotec.ai kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp
@@ -55,7 +54,7 @@ common/tier4_traffic_light_rviz_plugin/** satoshi.ota@tier4.jp
common/tier4_vehicle_rviz_plugin/** yukihiro.saito@tier4.jp
common/time_utils/** christopherj.ho@gmail.com shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp
common/traffic_light_recognition_marker_publisher/** shumpei.wakabayashi@tier4.jp takeshi.miura@tier4.jp tomoya.kimura@tier4.jp
-common/traffic_light_utils/** mingyu.li@tier4.jp satoshi.ota@tier4.jp shunsuke.miura@tier4.jp
+common/traffic_light_utils/** kotaro.uetake@tier4.jp satoshi.ota@tier4.jp shunsuke.miura@tier4.jp
common/tvm_utility/** ambroise.vincent@arm.com xinyu.wang@tier4.jp
control/autonomous_emergency_braking/** mamoru.sobue@tier4.jp takamasa.horibe@tier4.jp tomoya.kimura@tier4.jp
control/control_performance_analysis/** berkay@leodrive.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp
@@ -76,6 +75,7 @@ control/vehicle_cmd_gate/** takamasa.horibe@tier4.jp tomoya.kimura@tier4.jp
evaluator/diagnostic_converter/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp takamasa.horibe@tier4.jp
evaluator/kinematic_evaluator/** dominik.jargot@robotec.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp
evaluator/localization_evaluator/** dominik.jargot@robotec.ai koji.minoda@tier4.jp
+evaluator/perception_online_evaluator/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp kotaro.uetake@tier4.jp kyoichi.sugahara@tier4.jp shunsuke.miura@tier4.jp yoshi.ri@tier4.jp
evaluator/planning_evaluator/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp
evaluator/tier4_metrics_rviz_plugin/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp
launch/tier4_autoware_api_launch/** isamu.takagi@tier4.jp ryohsuke.mitsudome@tier4.jp
@@ -118,9 +118,9 @@ perception/cluster_merger/** dai.nguyen@tier4.jp shunsuke.miura@tier4.jp yukihir
perception/compare_map_segmentation/** abrahammonrroy@yahoo.com dai.nguyen@tier4.jp yukihiro.saito@tier4.jp
perception/crosswalk_traffic_light_estimator/** satoshi.ota@tier4.jp shunsuke.miura@tier4.jp tao.zhong@tier4.jp
perception/detected_object_feature_remover/** tomoya.kimura@tier4.jp
-perception/detected_object_validation/** dai.nguyen@tier4.jp shunsuke.miura@tier4.jp yukihiro.saito@tier4.jp
-perception/detection_by_tracker/** yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
-perception/elevation_map_loader/** kosuke.takeuchi@tier4.jp taichi.higashide@tier4.jp
+perception/detected_object_validation/** dai.nguyen@tier4.jp shintaro.tomie@tier4.jp shunsuke.miura@tier4.jp yukihiro.saito@tier4.jp
+perception/detection_by_tracker/** taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
+perception/elevation_map_loader/** kosuke.takeuchi@tier4.jp shintaro.tomie@tier4.jp taichi.higashide@tier4.jp
perception/euclidean_cluster/** yukihiro.saito@tier4.jp
perception/ground_segmentation/** abrahammonrroy@yahoo.com dai.nguyen@tier4.jp shunsuke.miura@tier4.jp yukihiro.saito@tier4.jp
perception/image_projection_based_fusion/** dai.nguyen@tier4.jp koji.minoda@tier4.jp kotaro.uetake@tier4.jp shunsuke.miura@tier4.jp tao.zhong@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
@@ -130,8 +130,8 @@ perception/lidar_apollo_segmentation_tvm_nodes/** ambroise.vincent@arm.com xinyu
perception/lidar_centerpoint/** kenzo.lobos@tier4.jp koji.minoda@tier4.jp
perception/lidar_centerpoint_tvm/** carl.liu@autocore.ai xinyu.wang@tier4.jp
perception/map_based_prediction/** kotaro.uetake@tier4.jp kyoichi.sugahara@tier4.jp shunsuke.miura@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp yoshi.ri@tier4.jp
-perception/multi_object_tracker/** yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
-perception/object_merger/** yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
+perception/multi_object_tracker/** taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
+perception/object_merger/** taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
perception/object_range_splitter/** yukihiro.saito@tier4.jp
perception/object_velocity_splitter/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp yoshi.ri@tier4.jp
perception/occupancy_grid_map_outlier_filter/** abrahammonrroy@yahoo.com yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
@@ -139,17 +139,17 @@ perception/probabilistic_occupancy_grid_map/** mamoru.sobue@tier4.jp yoshi.ri@ti
perception/radar_crossing_objects_noise_filter/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
perception/radar_fusion_to_detected_object/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
perception/radar_object_clustering/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
-perception/radar_object_tracker/** satoshi.tanaka@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
+perception/radar_object_tracker/** satoshi.tanaka@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
perception/radar_tracks_msgs_converter/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
perception/shape_estimation/** yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
perception/simple_object_merger/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp yoshi.ri@tier4.jp
-perception/tensorrt_classifier/** mingyu.li@tier4.jp
-perception/tensorrt_yolox/** daisuke.nishimatsu@tier4.jp dan.umeda@tier4.jp manato.hirabayashi@tier4.jp
-perception/tracking_object_merger/** yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
+perception/tensorrt_classifier/** kotaro.uetake@tier4.jp shunsuke.miura@tier4.jp
+perception/tensorrt_yolox/** dan.umeda@tier4.jp manato.hirabayashi@tier4.jp
+perception/tracking_object_merger/** taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp
perception/traffic_light_arbiter/** kenzo.lobos@tier4.jp shunsuke.miura@tier4.jp
perception/traffic_light_classifier/** shunsuke.miura@tier4.jp yukihiro.saito@tier4.jp
-perception/traffic_light_fine_detector/** shunsuke.miura@tier4.jp tao.zhong@tier4.jp
-perception/traffic_light_map_based_detector/** yukihiro.saito@tier4.jp
+perception/traffic_light_fine_detector/** shintaro.tomie@tier4.jp shunsuke.miura@tier4.jp tao.zhong@tier4.jp
+perception/traffic_light_map_based_detector/** shunsuke.miura@tier4.jp yukihiro.saito@tier4.jp
perception/traffic_light_multi_camera_fusion/** shunsuke.miura@tier4.jp tao.zhong@tier4.jp
perception/traffic_light_occlusion_predictor/** shunsuke.miura@tier4.jp tao.zhong@tier4.jp
perception/traffic_light_visualization/** yukihiro.saito@tier4.jp
@@ -186,7 +186,7 @@ planning/costmap_generator/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp
planning/external_velocity_limit_selector/** satoshi.ota@tier4.jp shinnosuke.hirakawa@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp
planning/freespace_planner/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp
planning/freespace_planning_algorithms/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp
-planning/mission_planner/** isamu.takagi@tier4.jp kosuke.takeuchi@tier4.jp ryohsuke.mitsudome@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp
+planning/mission_planner/** isamu.takagi@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp ryohsuke.mitsudome@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp
planning/motion_velocity_smoother/** fumiya.watanabe@tier4.jp makoto.kurihara@tier4.jp satoshi.ota@tier4.jp takamasa.horibe@tier4.jp
planning/objects_of_interest_marker_interface/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp zulfaqar.azmi@tier4.jp
planning/obstacle_avoidance_planner/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp
@@ -217,7 +217,7 @@ sensing/radar_scan_to_pointcloud2/** satoshi.tanaka@tier4.jp shunsuke.miura@tier
sensing/radar_static_pointcloud_filter/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
sensing/radar_threshold_filter/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
sensing/radar_tracks_noise_filter/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taekjin.lee@tier4.jp yoshi.ri@tier4.jp
-sensing/tier4_pcl_extensions/** ryu.yamamoto@tier4.jp
+sensing/tier4_pcl_extensions/** david.wong@tier4.jp kenzo.lobos@tier4.jp ryu.yamamoto@tier4.jp
sensing/vehicle_velocity_converter/** ryu.yamamoto@tier4.jp
simulator/dummy_perception_publisher/** yukihiro.saito@tier4.jp
simulator/fault_injection/** keisuke.shima@tier4.jp
@@ -232,10 +232,12 @@ system/default_ad_api_helpers/automatic_pose_initializer/** isamu.takagi@tier4.j
system/diagnostic_graph_aggregator/** isamu.takagi@tier4.jp
system/dummy_diag_publisher/** fumihito.ito@tier4.jp tetsuhiro.kawaguchi@tier4.jp
system/dummy_infrastructure/** ryohsuke.mitsudome@tier4.jp
-system/duplicated_node_checker/** shumpei.wakabayashi@tier4.jp uken.ryu@tier4.jp
+system/duplicated_node_checker/** mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp uken.ryu@tier4.jp
system/emergency_handler/** makoto.kurihara@tier4.jp ryuta.kambe@tier4.jp tetsuhiro.kawaguchi@tier4.jp
+system/hazard_status_converter/** isamu.takagi@tier4.jp
system/mrm_comfortable_stop_operator/** makoto.kurihara@tier4.jp tomohito.ando@tier4.jp
system/mrm_emergency_stop_operator/** makoto.kurihara@tier4.jp tomohito.ando@tier4.jp
+system/mrm_handler/** makoto.kurihara@tier4.jp ryuta.kambe@tier4.jp tetsuhiro.kawaguchi@tier4.jp
system/system_error_monitor/** fumihito.ito@tier4.jp
system/system_monitor/** fumihito.ito@tier4.jp tetsuhiro.kawaguchi@tier4.jp
system/topic_state_monitor/** ryohsuke.mitsudome@tier4.jp
@@ -245,3 +247,5 @@ vehicle/external_cmd_converter/** takamasa.horibe@tier4.jp
vehicle/raw_vehicle_cmd_converter/** makoto.kurihara@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp
vehicle/steer_offset_estimator/** taiki.tanaka@tier4.jp
vehicle/vehicle_info_util/** shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp
+
+### Copied from .github/CODEOWNERS-manual ###
diff --git a/.github/workflows/build-and-test-differential.yaml b/.github/workflows/build-and-test-differential.yaml
index 3ebf73dab7ba5..e4231a12a6add 100644
--- a/.github/workflows/build-and-test-differential.yaml
+++ b/.github/workflows/build-and-test-differential.yaml
@@ -73,38 +73,3 @@ jobs:
- name: Check disk space after build
run: df -h
-
- clang-tidy-differential:
- runs-on: [self-hosted, linux, X64]
- container: ghcr.io/autowarefoundation/autoware-universe:humble-latest-cuda
- needs: build-and-test-differential
- steps:
- - name: Check out repository
- uses: actions/checkout@v3
- with:
- fetch-depth: 0
-
- - name: Remove exec_depend
- uses: autowarefoundation/autoware-github-actions/remove-exec-depend@v1
-
- - name: Get modified packages
- id: get-modified-packages
- uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1
-
- - name: Get modified files
- id: get-modified-files
- uses: tj-actions/changed-files@v35
- with:
- files: |
- **/*.cpp
- **/*.hpp
-
- - name: Run clang-tidy
- if: ${{ steps.get-modified-files.outputs.all_changed_files != '' }}
- uses: autowarefoundation/autoware-github-actions/clang-tidy@v1
- with:
- rosdistro: humble
- target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }}
- target-files: ${{ steps.get-modified-files.outputs.all_changed_files }}
- clang-tidy-config-url: https://raw.githubusercontent.com/autowarefoundation/autoware/main/.clang-tidy
- build-depends-repos: build_depends.repos
diff --git a/.github/workflows/json-schema-check.yaml b/.github/workflows/json-schema-check.yaml
index 332d8eebaa518..77ce4576b4952 100644
--- a/.github/workflows/json-schema-check.yaml
+++ b/.github/workflows/json-schema-check.yaml
@@ -2,13 +2,26 @@ name: json-schema-check
on:
pull_request:
- paths:
- - "**/schema/*.schema.json"
- - "**/config/*.param.yaml"
workflow_dispatch:
jobs:
+ check-if-relevant-files-changed:
+ runs-on: ubuntu-latest
+ outputs:
+ run-check: ${{ steps.paths_filter.outputs.json_or_yaml }}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: dorny/paths-filter@v3
+ id: paths_filter
+ with:
+ filters: |
+ json_or_yaml:
+ - '**/schema/*.schema.json'
+ - '**/config/*.param.yaml'
+
json-schema-check:
+ needs: check-if-relevant-files-changed
+ if: needs.check-if-relevant-files-changed.outputs.run-check == 'true'
runs-on: ubuntu-latest
steps:
- name: Check out repository
@@ -16,3 +29,11 @@ jobs:
- name: Run json-schema-check
uses: autowarefoundation/autoware-github-actions/json-schema-check@v1
+
+ no-relevant-changes:
+ needs: check-if-relevant-files-changed
+ if: needs.check-if-relevant-files-changed.outputs.run-check == 'false'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Dummy step
+ run: echo "No relevant changes, passing check"
diff --git a/README.md b/README.md
index d429cc035df1d..23d0b172554fd 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,16 @@
-# autoware.universe
+# Autoware Universe
-For Autoware's general documentation, see [Autoware Documentation](https://autowarefoundation.github.io/autoware-documentation/).
+## Welcome to Autoware Universe
-For detailed documents of Autoware Universe components, see [Autoware Universe Documentation](https://autowarefoundation.github.io/autoware.universe/).
+Autoware Universe serves as a foundational pillar within the Autoware ecosystem, playing a critical role in enhancing the core functionalities of autonomous driving technologies.
+This repository is a pivotal element of the Autoware Core/Universe concept, managing a wide array of packages that significantly extend the capabilities of autonomous vehicles.
----
+![autoware_universe_front](docs/assets/images/autoware_universe_front.png)
+
+## Getting Started
+
+To dive into the vast world of Autoware and understand how Autoware Universe fits into the bigger picture, we recommend starting with the [Autoware Documentation](https://autowarefoundation.github.io/autoware-documentation/). This resource provides a thorough overview of the Autoware ecosystem, guiding you through its components, functionalities, and how to get started with development.
+
+### Explore Autoware Universe documentation
+
+For those looking to explore the specifics of Autoware Universe components, the [Autoware Universe Documentation](https://autowarefoundation.github.io/autoware.universe/), deployed with MKDocs, offers detailed insights.
diff --git a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/package.xml b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/package.xml
index cc0ada00fa41b..da075b2648937 100644
--- a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/package.xml
+++ b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/package.xml
@@ -23,7 +23,7 @@
ament_lint_auto
autoware_lint_common
- ament_cmake
+ ament_cmake_auto
ament_cmake
diff --git a/common/tensorrt_common/package.xml b/common/tensorrt_common/package.xml
index 7d3995f93f7fe..f5a3896b55881 100644
--- a/common/tensorrt_common/package.xml
+++ b/common/tensorrt_common/package.xml
@@ -6,7 +6,6 @@
Taichi Higashide
Daisuke Nishimatsu
- Daisuke Nishimatsu
Dan Umeda
Manato Hirabayashi
diff --git a/common/tier4_control_rviz_plugin/src/tools/manual_controller.cpp b/common/tier4_control_rviz_plugin/src/tools/manual_controller.cpp
index fdd270fcce2ef..8bbb096f728ec 100644
--- a/common/tier4_control_rviz_plugin/src/tools/manual_controller.cpp
+++ b/common/tier4_control_rviz_plugin/src/tools/manual_controller.cpp
@@ -30,14 +30,6 @@ using std::placeholders::_1;
namespace rviz_plugins
{
-double lowpassFilter(
- const double current_value, const double prev_value, double cutoff, const double dt)
-{
- const double tau = 1.0 / (2.0 * M_PI * cutoff);
- const double a = tau / (dt + tau);
- return prev_value * a + (1.0 - a) * current_value;
-}
-
ManualController::ManualController(QWidget * parent) : rviz_common::Panel(parent)
{
auto * state_layout = new QHBoxLayout;
@@ -115,25 +107,23 @@ void ManualController::update()
ackermann.stamp = raw_node_->get_clock()->now();
ackermann.lateral.steering_tire_angle = steering_angle_;
ackermann.longitudinal.speed = cruise_velocity_;
- if (current_acceleration_) {
- /**
- * @brief Calculate desired acceleration by simple BackSteppingControl
- * V = 0.5*(v-v_des)^2 >= 0
- * D[V] = (D[v] - a_des)*(v-v_des) <=0
- * a_des = k_const *(v - v_des) + a (k < 0 )
- */
- const double k = -0.5;
- const double v = current_velocity_;
- const double v_des = cruise_velocity_;
- const double a = *current_acceleration_;
- const double a_des = k * (v - v_des) + a;
- ackermann.longitudinal.acceleration = std::clamp(a_des, -1.0, 1.0);
- }
+ /**
+ * @brief Calculate desired acceleration by simple BackSteppingControl
+ * V = 0.5*(v-v_des)^2 >= 0
+ * D[V] = (D[v] - a_des)*(v-v_des) <=0
+ * a_des = k_const *(v - v_des) + a (k < 0 )
+ */
+ const double k = -0.5;
+ const double v = current_velocity_;
+ const double v_des = cruise_velocity_;
+ const double a = current_acceleration_;
+ const double a_des = k * (v - v_des) + a;
+ ackermann.longitudinal.acceleration = std::clamp(a_des, -1.0, 1.0);
}
GearCommand gear_cmd;
{
const double eps = 0.001;
- if (ackermann.longitudinal.speed > eps) {
+ if (ackermann.longitudinal.speed > eps && current_velocity_ > -eps) {
gear_cmd.command = GearCommand::DRIVE;
} else if (ackermann.longitudinal.speed < -eps && current_velocity_ < eps) {
gear_cmd.command = GearCommand::REVERSE;
@@ -220,19 +210,11 @@ void ManualController::onEngageStatus(const Engage::ConstSharedPtr msg)
void ManualController::onVelocity(const VelocityReport::ConstSharedPtr msg)
{
current_velocity_ = msg->longitudinal_velocity;
- if (previous_velocity_) {
- const double cutoff = 10.0;
- const double dt = 1.0 / 10.0;
- const double acc = (current_velocity_ - *previous_velocity_) / dt;
- if (!current_acceleration_) {
- current_acceleration_ = std::make_unique(acc);
- } else {
- current_acceleration_ =
- std::make_unique(lowpassFilter(acc, *current_acceleration_, cutoff, dt));
- }
- }
- previous_velocity_ = std::make_unique(msg->longitudinal_velocity);
- prev_stamp_ = rclcpp::Time(msg->header.stamp);
+}
+
+void ManualController::onAcceleration(const AccelWithCovarianceStamped::ConstSharedPtr msg)
+{
+ current_acceleration_ = msg->accel.accel.linear.x;
}
void ManualController::onGear(const GearReport::ConstSharedPtr msg)
diff --git a/common/tier4_control_rviz_plugin/src/tools/manual_controller.hpp b/common/tier4_control_rviz_plugin/src/tools/manual_controller.hpp
index dee6f9a7aba21..aaa625bff911e 100644
--- a/common/tier4_control_rviz_plugin/src/tools/manual_controller.hpp
+++ b/common/tier4_control_rviz_plugin/src/tools/manual_controller.hpp
@@ -25,6 +25,7 @@
#include
#include "autoware_auto_vehicle_msgs/msg/velocity_report.hpp"
+#include "geometry_msgs/msg/accel_with_covariance_stamped.hpp"
#include "geometry_msgs/msg/twist.hpp"
#include
#include
@@ -40,6 +41,7 @@ namespace rviz_plugins
using autoware_auto_control_msgs::msg::AckermannControlCommand;
using autoware_auto_vehicle_msgs::msg::GearCommand;
using autoware_auto_vehicle_msgs::msg::VelocityReport;
+using geometry_msgs::msg::AccelWithCovarianceStamped;
using geometry_msgs::msg::Twist;
using tier4_control_msgs::msg::GateMode;
using EngageSrv = tier4_external_api_msgs::srv::Engage;
@@ -67,6 +69,7 @@ public Q_SLOTS: // NOLINT for Qt
void onPublishControlCommand();
void onGateMode(const GateMode::ConstSharedPtr msg);
void onVelocity(const VelocityReport::ConstSharedPtr msg);
+ void onAcceleration(const AccelWithCovarianceStamped::ConstSharedPtr msg);
void onEngageStatus(const Engage::ConstSharedPtr msg);
void onGear(const GearReport::ConstSharedPtr msg);
rclcpp::Node::SharedPtr raw_node_;
@@ -82,9 +85,7 @@ public Q_SLOTS: // NOLINT for Qt
double cruise_velocity_{0.0};
double steering_angle_{0.0};
double current_velocity_{0.0};
- rclcpp::Time prev_stamp_;
- std::unique_ptr previous_velocity_;
- std::unique_ptr current_acceleration_;
+ double current_acceleration_{0.0};
QLabel * gate_mode_label_ptr_;
QLabel * gear_label_ptr_;
diff --git a/common/traffic_light_utils/package.xml b/common/traffic_light_utils/package.xml
index 37b4d46ce356a..7adb856c3c447 100644
--- a/common/traffic_light_utils/package.xml
+++ b/common/traffic_light_utils/package.xml
@@ -4,7 +4,7 @@
traffic_light_utils
0.1.0
The traffic_light_utils package
- Mingyu Li
+ Kotaro Uetake
Shunsuke Miura
Satoshi Ota
Apache License 2.0
diff --git a/docs/assets/images/autoware_universe_front.png b/docs/assets/images/autoware_universe_front.png
new file mode 100644
index 0000000000000..e03e35d12f78b
Binary files /dev/null and b/docs/assets/images/autoware_universe_front.png differ
diff --git a/evaluator/perception_online_evaluator/CMakeLists.txt b/evaluator/perception_online_evaluator/CMakeLists.txt
new file mode 100644
index 0000000000000..f9cc0f4fa256c
--- /dev/null
+++ b/evaluator/perception_online_evaluator/CMakeLists.txt
@@ -0,0 +1,44 @@
+cmake_minimum_required(VERSION 3.14)
+project(perception_online_evaluator)
+
+find_package(autoware_cmake REQUIRED)
+autoware_package()
+
+find_package(pluginlib REQUIRED)
+
+find_package(glog REQUIRED)
+
+ament_auto_add_library(${PROJECT_NAME}_node SHARED
+ src/metrics_calculator.cpp
+ src/${PROJECT_NAME}_node.cpp
+ src/metrics/deviation_metrics.cpp
+ src/utils/marker_utils.cpp
+ src/utils/objects_filtering.cpp
+)
+
+rclcpp_components_register_node(${PROJECT_NAME}_node
+ PLUGIN "perception_diagnostics::PerceptionOnlineEvaluatorNode"
+ EXECUTABLE ${PROJECT_NAME}
+)
+
+rclcpp_components_register_node(${PROJECT_NAME}_node
+ PLUGIN "perception_diagnostics::MotionEvaluatorNode"
+ EXECUTABLE motion_evaluator
+)
+
+target_link_libraries(${PROJECT_NAME}_node glog::glog)
+
+if(BUILD_TESTING)
+ ament_add_ros_isolated_gtest(test_${PROJECT_NAME}
+ test/test_perception_online_evaluator_node.cpp
+ )
+ target_link_libraries(test_${PROJECT_NAME}
+ ${PROJECT_NAME}_node
+ )
+endif()
+
+ament_auto_package(
+ INSTALL_TO_SHARE
+ param
+ launch
+)
diff --git a/evaluator/perception_online_evaluator/README.md b/evaluator/perception_online_evaluator/README.md
new file mode 100644
index 0000000000000..b801e5f418cef
--- /dev/null
+++ b/evaluator/perception_online_evaluator/README.md
@@ -0,0 +1,43 @@
+# Perception Evaluator
+
+A node for evaluating the output of perception systems.
+
+## Purpose
+
+This module allows for the evaluation of how accurately perception results are generated without the need for annotations. It is capable of confirming performance and can evaluate results from a few seconds prior, enabling online execution.
+
+## Inner-workings / Algorithms
+
+- Calculates lateral deviation between the predicted path and the actual traveled trajectory.
+- Calculates lateral deviation between the smoothed traveled trajectory and the perceived position to evaluate the stability of lateral position recognition.
+- Calculates yaw deviation between the smoothed traveled trajectory and the perceived position to evaluate the stability of yaw recognition.
+
+## Inputs / Outputs
+
+| Name | Type | Description |
+| ----------------- | ------------------------------------------------------ | ------------------------------------------------- |
+| `~/input/objects` | `autoware_auto_perception_msgs::msg::PredictedObjects` | The predicted objects to evaluate. |
+| `~/metrics` | `diagnostic_msgs::msg::DiagnosticArray` | Diagnostic information about perception accuracy. |
+| `~/markers` | `visualization_msgs::msg::MarkerArray` | Visual markers for debugging and visualization. |
+
+## Parameters
+
+| Name | Type | Description |
+| --------------------------------- | ------------ | ------------------------------------------------------------------------------------------------ |
+| `selected_metrics` | List | Metrics to be evaluated, such as lateral deviation, yaw deviation, and predicted path deviation. |
+| `smoothing_window_size` | Integer | Determines the window size for smoothing path, should be an odd number. |
+| `prediction_time_horizons` | list[double] | Time horizons for prediction evaluation in seconds. |
+| `target_object.*.check_deviation` | bool | Whether to check deviation for specific object types (car, truck, etc.). |
+| `debug_marker.*` | bool | Debugging parameters for marker visualization (history path, predicted path, etc.). |
+
+## Assumptions / Known limits
+
+It is assumed that the current positions of PredictedObjects are reasonably accurate.
+
+## Future extensions / Unimplemented parts
+
+- Increase rate in recognition per class
+- Metrics for objects with strange physical behavior (e.g., going through a fence)
+- Metrics for splitting objects
+- Metrics for problems with objects that are normally stationary but move
+- Disappearing object metrics
diff --git a/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics/deviation_metrics.hpp b/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics/deviation_metrics.hpp
new file mode 100644
index 0000000000000..da7a23b6980b6
--- /dev/null
+++ b/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics/deviation_metrics.hpp
@@ -0,0 +1,53 @@
+// Copyright 2024 TIER IV, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef PERCEPTION_ONLINE_EVALUATOR__METRICS__DEVIATION_METRICS_HPP_
+#define PERCEPTION_ONLINE_EVALUATOR__METRICS__DEVIATION_METRICS_HPP_
+
+#include "perception_online_evaluator/stat.hpp"
+
+#include
+#include
+
+#include
+
+namespace perception_diagnostics
+{
+namespace metrics
+{
+using autoware_auto_perception_msgs::msg::PredictedPath;
+using geometry_msgs::msg::Pose;
+
+/**
+ * @brief calculate lateral deviation of the given path from the reference path
+ * @param [in] ref_path reference path
+ * @param [in] pred_path predicted path
+ * @return calculated statistics
+ */
+double calcLateralDeviation(const std::vector & ref_path, const Pose & target_pose);
+
+/**
+ * @brief calculate yaw deviation of the given path from the reference path
+ * @param [in] ref_path reference path
+ * @param [in] pred_path predicted path
+ * @return calculated statistics
+ */
+double calcYawDeviation(const std::vector & ref_path, const Pose & target_pose);
+
+std::vector calcPredictedPathDeviation(
+ const std::vector & ref_path, const PredictedPath & pred_path);
+} // namespace metrics
+} // namespace perception_diagnostics
+
+#endif // PERCEPTION_ONLINE_EVALUATOR__METRICS__DEVIATION_METRICS_HPP_
diff --git a/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics/metric.hpp b/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics/metric.hpp
new file mode 100644
index 0000000000000..8a2cddca476d4
--- /dev/null
+++ b/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics/metric.hpp
@@ -0,0 +1,75 @@
+// Copyright 2024 TIER IV, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef PERCEPTION_ONLINE_EVALUATOR__METRICS__METRIC_HPP_
+#define PERCEPTION_ONLINE_EVALUATOR__METRICS__METRIC_HPP_
+
+#include "perception_online_evaluator/stat.hpp"
+
+#include
+#include
+#include
+#include
+
+namespace perception_diagnostics
+{
+/**
+ * @brief Enumeration of trajectory metrics
+ */
+enum class Metric {
+ lateral_deviation,
+ yaw_deviation,
+ predicted_path_deviation,
+ SIZE,
+};
+
+using MetricStatMap = std::unordered_map>;
+
+static const std::unordered_map str_to_metric = {
+ {"lateral_deviation", Metric::lateral_deviation},
+ {"yaw_deviation", Metric::yaw_deviation},
+ {"predicted_path_deviation", Metric::predicted_path_deviation}};
+
+static const std::unordered_map metric_to_str = {
+ {Metric::lateral_deviation, "lateral_deviation"},
+ {Metric::yaw_deviation, "yaw_deviation"},
+ {Metric::predicted_path_deviation, "predicted_path_deviation"}};
+
+// Metrics descriptions
+static const std::unordered_map metric_descriptions = {
+ {Metric::lateral_deviation, "Lateral_deviation[m]"},
+ {Metric::yaw_deviation, "Yaw_deviation[rad]"},
+ {Metric::predicted_path_deviation, "Predicted_path_deviation[m]"}};
+
+namespace details
+{
+static struct CheckCorrectMaps
+{
+ CheckCorrectMaps()
+ {
+ if (
+ str_to_metric.size() != static_cast(Metric::SIZE) ||
+ metric_to_str.size() != static_cast(Metric::SIZE) ||
+ metric_descriptions.size() != static_cast(Metric::SIZE)) {
+ std::cerr << "[metrics/metrics.hpp] Maps are not defined for all metrics: ";
+ std::cerr << str_to_metric.size() << " " << metric_to_str.size() << " "
+ << metric_descriptions.size() << std::endl;
+ }
+ }
+} check;
+
+} // namespace details
+} // namespace perception_diagnostics
+
+#endif // PERCEPTION_ONLINE_EVALUATOR__METRICS__METRIC_HPP_
diff --git a/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics_calculator.hpp b/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics_calculator.hpp
new file mode 100644
index 0000000000000..dd6756a17f194
--- /dev/null
+++ b/evaluator/perception_online_evaluator/include/perception_online_evaluator/metrics_calculator.hpp
@@ -0,0 +1,141 @@
+// Copyright 2024 TIER IV, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef PERCEPTION_ONLINE_EVALUATOR__METRICS_CALCULATOR_HPP_
+#define PERCEPTION_ONLINE_EVALUATOR__METRICS_CALCULATOR_HPP_
+
+#include "perception_online_evaluator/metrics/deviation_metrics.hpp"
+#include "perception_online_evaluator/metrics/metric.hpp"
+#include "perception_online_evaluator/parameters.hpp"
+#include "perception_online_evaluator/stat.hpp"
+
+#include
+
+#include "autoware_auto_perception_msgs/msg/predicted_objects.hpp"
+#include "geometry_msgs/msg/pose.hpp"
+#include
+
+#include
+#include