Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: sync beta branch beta/v0.27.0 with tier4/main #1270

Merged
merged 55 commits into from
Apr 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
5ff3b17
fix(lane_change): check prepare phase in intersection (#6561)
zulfaqar-azmi-t4 Apr 3, 2024
31b5a4c
fix(lane_change): fix terminal path not working in some case (#6722)
zulfaqar-azmi-t4 Apr 3, 2024
250f081
chore(goal_planner): delete unnecessary comments (#6729)
kosuke55 Apr 3, 2024
dfec62a
feat(global_parameter_loader): add gtest to global parameter loader (…
cyn-liu Apr 3, 2024
1ae7198
feat(time_synchronizer_nodelet): set input_offsets zero if it was not…
brkay54 Apr 3, 2024
d4ec8d3
refactor(object_range_splitter): rework parameters (#6705)
oguzkaganozt Apr 3, 2024
c0fcd75
feat(tier4_autoware_utils, obstacle_cruise): change to read topic by …
yuki-takagi-66 Apr 3, 2024
9735dfa
docs(perception_online_evaluator): add description about yaw rate eva…
kyoichi-sugahara Apr 4, 2024
41aab51
fix(hazard_status_converter): check current operation mode (#6733)
isamu-takagi Apr 4, 2024
f088fb4
fix(lane_change): limit prepare and lane changing length (#6734)
zulfaqar-azmi-t4 Apr 4, 2024
7d26879
feat(perception_online_evaluator): ignore reversal of orientation fro…
kosuke55 Apr 4, 2024
178841b
feat(obstacle_pointcloud_based_validator_node): skip validation when …
YoshiRi Apr 5, 2024
8046005
feat(lane_change): check prepare phase in turn direction lanes (#6726)
zulfaqar-azmi-t4 Apr 5, 2024
1eef4c0
feat(run_out): maintain run out stop wall (#6732)
danielsanchezaran Apr 5, 2024
35642a6
fix(route_handler): exception in route_handler caused by int overflow…
sebekx Apr 6, 2024
ad79997
fix(multi_object_tracker): debugger timers checks if the timer is ini…
technolojin Apr 8, 2024
52bc600
docs(mission_planner): update readme for route selector (#6576)
isamu-takagi Apr 8, 2024
1524bdd
fix(behavior_path_planner): fix behavior_path_planner node to check o…
soblin Apr 8, 2024
8617285
fix(avoidance): add update param to use rqt reconfigure (#6759)
satoshi-ota Apr 8, 2024
b98a21a
feat(avoidance): limit acceleration during avoidance maneuver (#6698)
satoshi-ota Apr 9, 2024
d682442
fix(tier4_autoware_utils): fix `-Werror=unused-parameter` (#6764)
satoshi-ota Apr 9, 2024
b09501e
feat(lane_change): use external velocity limit in safety check (#6760)
zulfaqar-azmi-t4 Apr 9, 2024
d340d10
fix(multi_object_tracker): mot timer bug fix (#6775)
technolojin Apr 9, 2024
f5c30eb
feat(multi_object_tracker): reduce publish delay (#6710)
technolojin Apr 9, 2024
094f3e6
chore(ground_segmentation): add tuning param (#6753)
badai-nguyen Apr 9, 2024
9cbd02d
fix(avoidance): bug in the logic to judge whether it's a parked vehic…
satoshi-ota Apr 9, 2024
c3b727f
fix(avoidance): fix margin param inconsistency (#6765)
satoshi-ota Apr 9, 2024
fd1a27e
fix(freespace_planning_algorithms): fix issue of astar search planner…
4swinv Apr 10, 2024
2b48d25
docs(dynamic_avoidance): fix sentence (#6782)
yuki-takagi-66 Apr 10, 2024
81c432e
chore(multi_object_tracker): change node and glog implementation (#6780)
technolojin Apr 10, 2024
9f91501
feat(fault injection): change for diagnostic graph aggregator (#6750)
KeisukeShima Apr 11, 2024
c381661
refactor(static_centerline_optimizer): admit I/F for other sources of…
takayuki5168 Apr 11, 2024
5807f7a
feat(multi_object_tracker): process modulation (#6742)
technolojin Apr 11, 2024
06bb9bd
fix(avoidance): fix invalid road bound distance calculation (#6781)
satoshi-ota Apr 11, 2024
a06122c
refactor(avoidance): rebuild parameter structure (#6786)
satoshi-ota Apr 11, 2024
e459f09
feat(static_centerline_optimizer): generate centerline from ego's tra…
takayuki5168 Apr 11, 2024
957e553
refactor(static_centerline_optimizer): clean up the code (#6794)
takayuki5168 Apr 12, 2024
8793584
docs(avoidance): use json schema (#6789)
satoshi-ota Apr 12, 2024
682a814
refactor(avoidance): unify redundant parameters (#6798)
satoshi-ota Apr 12, 2024
fd032e8
refactor(static_centerline_generator): change the package name from s…
takayuki5168 Apr 12, 2024
453d41c
fix(ground_segmentation launch): fix topic name conflict in additiona…
badai-nguyen Apr 12, 2024
9f3633d
fix(map_based_prediction): use object_buffer_time_length_ (#6772)
dkoldaev Apr 12, 2024
fae0f78
feat(start_planner): fix non-thread-safe access (#6779)
soblin Apr 12, 2024
4ff93b2
revert(lane_change): disable terminal path (#6800)
zulfaqar-azmi-t4 Apr 15, 2024
165e79d
feat(goal_planner): fix non-thread-safe access in goal_planner (#6740)
soblin Apr 15, 2024
de21d1a
revert(goal_planner): fix non-thread-safe access in goal_planner (#67…
soblin Apr 15, 2024
9544e9c
fix(intersection): detect stuck vehicle by position on detect area (#…
soblin Apr 15, 2024
d5e07a8
fix(compare_map_segmentation): add intensity field (#6807)
badai-nguyen Apr 16, 2024
729cbc6
fix(obstacle_avoidance_planner): fix mathjax visualization error (#6813)
takayuki5168 Apr 16, 2024
cf5a2ed
feat(lidar_centerpoint): output the covariance of pose and twist (#6573)
tzhong518 Apr 16, 2024
5ef5758
feat(perception_online_evaluator): add predicted path variance (#6793)
kosuke55 Apr 16, 2024
f6a734f
fix(path_smoother): fix mathjax visualization error (#6821)
takayuki5168 Apr 16, 2024
c40da9f
feat(static_centerline_generator): add script to show diff of lanelet…
takayuki5168 Apr 16, 2024
51efa6d
feat(perception_online_evaluator): better waitForDummyNode (#6827)
kosuke55 Apr 17, 2024
5ae3a05
Merge pull request #1260 from tier4/sync-upstream
tier4-autoware-public-bot[bot] Apr 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ planning/sampling_based_planner/frenet_planner/** [email protected]
planning/sampling_based_planner/path_sampler/** [email protected]
planning/sampling_based_planner/sampler_common/** [email protected]
planning/scenario_selector/** [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
planning/static_centerline_optimizer/** [email protected] [email protected]
planning/static_centerline_generator/** [email protected] [email protected]
planning/surround_obstacle_checker/** [email protected]
sensing/gnss_poser/** [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
sensing/image_diagnostics/** [email protected]
Expand Down
5 changes: 5 additions & 0 deletions build_depends.repos
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,8 @@ repositories:
type: git
url: https://github.com/MORAI-Autonomous/MORAI-ROS2_morai_msgs.git
version: main
#vehicle
vehicle/sample_vehicle_launch:
type: git
url: https://github.com/autowarefoundation/sample_vehicle_launch.git
version: main
5 changes: 5 additions & 0 deletions common/global_parameter_loader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ project(global_parameter_loader)
find_package(autoware_cmake REQUIRED)
autoware_package()

if(BUILD_TESTING)
file(GLOB_RECURSE test_files test/*.cpp)
ament_add_ros_isolated_gtest(test_global_params_launch ${test_files})
endif()

ament_auto_package(
INSTALL_TO_SHARE
launch
Expand Down
4 changes: 3 additions & 1 deletion common/global_parameter_loader/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
<buildtool_depend>ament_cmake_auto</buildtool_depend>
<buildtool_depend>autoware_cmake</buildtool_depend>

<exec_depend>vehicle_info_util</exec_depend>
<depend>sample_vehicle_description</depend>
<depend>vehicle_info_util</depend>

<test_depend>ament_cmake_ros</test_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>autoware_lint_common</test_depend>

Expand Down
44 changes: 44 additions & 0 deletions common/global_parameter_loader/test/test_global_params_launch.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright 2023 The Autoware Foundation
//
// 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.

#include <gtest/gtest.h>

#include <cstdlib>
#include <iostream>
#include <string>

TEST(TestLaunchFile, test_launch_file)
{
// Define the path of Python launch file
std::string global_params_launch_path = "global_params.launch.py";

// Define the parameters you want to pass to the launch file
std::string use_sim_time_param = "false";
std::string vehicle_model_param = "sample_vehicle";
// Construct the command to run the Python launch script with parameters
std::string command = "ros2 launch global_parameter_loader " + global_params_launch_path +
" use_sim_time:=" + use_sim_time_param +
" vehicle_model:=" + vehicle_model_param;

// Use the system() function to execute the command
int result = std::system(command.c_str());
// Check the result of running the launch file
EXPECT_EQ(result, 0);
}

int main(int argc, char * argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// 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 TIER4_AUTOWARE_UTILS__ROS__POLLING_SUBSCRIBER_HPP_
#define TIER4_AUTOWARE_UTILS__ROS__POLLING_SUBSCRIBER_HPP_

#include <rclcpp/rclcpp.hpp>

#include <string>

namespace tier4_autoware_utils
{

template <typename T>
class InterProcessPollingSubscriber
{
private:
typename rclcpp::Subscription<T>::SharedPtr subscriber_;
std::optional<T> data_;

public:
explicit InterProcessPollingSubscriber(rclcpp::Node * node, const std::string & topic_name)
{
auto noexec_callback_group =
node->create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive, false);
auto noexec_subscription_options = rclcpp::SubscriptionOptions();
noexec_subscription_options.callback_group = noexec_callback_group;

subscriber_ = node->create_subscription<T>(
topic_name, rclcpp::QoS{1},
[node]([[maybe_unused]] const typename T::ConstSharedPtr msg) { assert(false); },
noexec_subscription_options);
};
bool updateLatestData()
{
rclcpp::MessageInfo message_info;
T tmp;
// The queue size (QoS) must be 1 to get the last message data.
if (subscriber_->take(tmp, message_info)) {
data_ = tmp;
}
return data_.has_value();
};
const T & getData() const
{
if (!data_.has_value()) {
throw std::runtime_error("Bad_optional_access in class InterProcessPollingSubscriber");
}
return data_.value();
};
};

} // namespace tier4_autoware_utils

#endif // TIER4_AUTOWARE_UTILS__ROS__POLLING_SUBSCRIBER_HPP_
1 change: 1 addition & 0 deletions evaluator/perception_online_evaluator/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ 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
TIMEOUT 180
)
target_link_libraries(test_${PROJECT_NAME}
${PROJECT_NAME}_node
Expand Down
52 changes: 52 additions & 0 deletions evaluator/perception_online_evaluator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,58 @@ This module allows for the evaluation of how accurately perception results are g
- 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.
- Calculates yaw rate based on the yaw of the object received in the previous cycle to evaluate the stability of the yaw rate recognition.

### Predicted Path Deviation / Predicted Path Deviation Variance

Compare the predicted path of past objects with their actual traveled path to determine the deviation. For each object, calculate the mean distance between the predicted path points and the corresponding points on the actual path, up to the specified time step. In other words, this calculates the Average Displacement Error (ADE). The target object to be evaluated is the object from $T_N$ seconds ago, where $T_N$ is the maximum value of the prediction time horizon $[T_1, T_2, ..., T_N]$.

![path_deviation_each_object](./images/path_deviation_each_object.drawio.svg)

$$
\begin{align}
n_{points} = T / dt \\
ADE = \Sigma_{i=1}^{n_{points}} d_i / n_{points} \\
Var = \Sigma_{i=1}^{n_{points}} (d_i - ADE)^2 / n_{points}
\end{align}
$$

- $n_{points}$ : Number of points in the predicted path
- $T$ : Time horizon for prediction evaluation.
- $dt$ : Time interval of the predicted path
- $d_i$ : Distance between the predicted path and the actual traveled path at path point $i$
- $ADE$ : Mean deviation of the predicted path for the target object.
- $Var$ : Variance of the predicted path deviation for the target object.

The final predicted path deviation metrics are calculated by averaging the mean deviation of the predicted path for all objects of the same class, and then calculating the mean, maximum, and minimum values of the mean deviation.

![path_deviation](./images/path_deviation.drawio.svg)

$$
\begin{align}
ADE_{mean} = \Sigma_{j=1}^{n_{objects}} ADE_j / n_{objects} \\
ADE_{max} = max(ADE_j) \\
ADE_{min} = min(ADE_j)
\end{align}
$$

$$
\begin{align}
Var_{mean} = \Sigma_{j=1}^{n_{objects}} Var_j / n_{objects} \\
Var_{max} = max(Var_j) \\
Var_{min} = min(Var_j)
\end{align}
$$

- $n_{objects}$ : Number of objects
- $ADE_{mean}$ : Mean deviation of the predicted path through all objects
- $ADE_{max}$ : Maximum deviation of the predicted path through all objects
- $ADE_{min}$ : Minimum deviation of the predicted path through all objects
- $Var_{mean}$ : Mean variance of the predicted path deviation through all objects
- $Var_{max}$ : Maximum variance of the predicted path deviation through all objects
- $Var_{min}$ : Minimum variance of the predicted path deviation through all objects

The actual metric name is determined by the object class and time horizon. For example, `predicted_path_deviation_variance_CAR_5.00`

## Inputs / Outputs

Expand Down
Loading
Loading