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

feat(planning_test_utils): update test manager for all planning modules #3364

Merged
Show file tree
Hide file tree
Changes from 131 commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
eb0a5e0
add planning_interface_test_manager class
kyoichi-sugahara Mar 7, 2023
344e379
add counter function
kyoichi-sugahara Mar 7, 2023
f8c926b
temp
kyoichi-sugahara Mar 7, 2023
4430bc9
temp
kyoichi-sugahara Mar 8, 2023
499a74b
add interface test for motion_velocity_smoother
kyoichi-sugahara Mar 9, 2023
ed1978e
add param in default_motion_velocity_smoother,param.yaml
kyoichi-sugahara Mar 9, 2023
dbfc4bf
successfully launch target node
kyoichi-sugahara Mar 9, 2023
27eacec
successfully build the test
kyoichi-sugahara Mar 9, 2023
1a4d135
add test for test_motion_velocity_smoother
kyoichi-sugahara Mar 10, 2023
74ed1c5
add abnormal trajectory test
kyoichi-sugahara Mar 10, 2023
7f36977
delete unnecessary part
kyoichi-sugahara Mar 10, 2023
47d31b2
style(pre-commit): autofix
pre-commit-ci[bot] Mar 10, 2023
594c100
Merge branch 'main' into test/planning_interface_test_manager
kyoichi-sugahara Mar 10, 2023
a43c2a6
style(pre-commit): autofix
pre-commit-ci[bot] Mar 10, 2023
dacb4ad
run pre-commit
kyoichi-sugahara Mar 10, 2023
01f808a
add declaration
kyoichi-sugahara Mar 10, 2023
ffdbfb6
refactor
kyoichi-sugahara Mar 10, 2023
a15c52a
refactor
kyoichi-sugahara Mar 10, 2023
ce7b7d4
Refactor callback functions for standardization
kyoichi-sugahara Mar 10, 2023
c221226
refacotoring
kyoichi-sugahara Mar 10, 2023
00c1eff
Merge branch 'autowarefoundation:main' into test/planning_interface_t…
kyoichi-sugahara Mar 13, 2023
66440db
refactored
kyoichi-sugahara Mar 14, 2023
6c78f15
Refactor functions into a single template function
kyoichi-sugahara Mar 14, 2023
84d896e
Refactor
kyoichi-sugahara Mar 14, 2023
fa928a3
style(pre-commit): autofix
pre-commit-ci[bot] Mar 14, 2023
19ce731
refactor
kyoichi-sugahara Mar 14, 2023
6cd13f8
relete unnecessary definition
kyoichi-sugahara Mar 14, 2023
46d8e69
Revert "delete unnecessary definition"
kyoichi-sugahara Mar 14, 2023
b456156
delete unnecessary definition
kyoichi-sugahara Mar 14, 2023
ff4d345
delete unnecessary definition
kyoichi-sugahara Mar 14, 2023
f55cded
temp
kyoichi-sugahara Mar 14, 2023
d7c496d
delete module dependent part
kyoichi-sugahara Mar 14, 2023
2b21168
temp
kyoichi-sugahara Mar 14, 2023
f6f75ba
delete unnecessary arg
kyoichi-sugahara Mar 14, 2023
074bf60
Merge branch 'test/planning_interface_test_motion_velocity_smoother' …
kyoichi-sugahara Mar 14, 2023
2dc37b8
Merge branch 'test/planning_interface_test_surround_obstacle_checker'…
kyoichi-sugahara Mar 14, 2023
d0c403b
apply motion_velocity_smoother change
kyoichi-sugahara Mar 14, 2023
ff3f4dc
add interface test for obstacle stop planner
kyoichi-sugahara Mar 14, 2023
53f6b83
run pre-commit
kyoichi-sugahara Mar 14, 2023
14656f6
add test fot obstacle_cruise_planner
kyoichi-sugahara Mar 14, 2023
195fe74
temp
kyoichi-sugahara Mar 15, 2023
9b51f8e
add test fot planning_vaildator
kyoichi-sugahara Mar 15, 2023
e171cf6
add interface test for freespace_planner_node
kyoichi-sugahara Mar 16, 2023
cf84482
add interface test for obstacle_stop_planner with slow down
kyoichi-sugahara Mar 16, 2023
80600f1
add part of interface test for freespace
kyoichi-sugahara Mar 16, 2023
9f61338
change package name
kyoichi-sugahara Mar 16, 2023
dd9e078
apply change of package name
kyoichi-sugahara Mar 16, 2023
9bde070
temp
kyoichi-sugahara Mar 17, 2023
63d02fd
temp
kyoichi-sugahara Mar 17, 2023
a07ef97
temp
kyoichi-sugahara Mar 17, 2023
b895bb1
temp
kyoichi-sugahara Mar 17, 2023
baa78d4
temp
kyoichi-sugahara Mar 17, 2023
b21aaa0
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Mar 20, 2023
cfdedfd
Merge branch 'autowarefoundation:main' into test/planning_interface_t…
kyoichi-sugahara Mar 23, 2023
c593d1c
merge
kyoichi-sugahara Mar 23, 2023
dc8bf4f
fix build error
kyoichi-sugahara Mar 23, 2023
35319ec
temp commit for debug
kyoichi-sugahara Mar 23, 2023
dabc947
add planning interface test manager for scenario selector
kyoichi-sugahara Mar 24, 2023
a35703b
refactor
kyoichi-sugahara Mar 24, 2023
f172a69
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Mar 24, 2023
903e4fa
temp
kyoichi-sugahara Mar 24, 2023
9f8b179
refactor
kyoichi-sugahara Mar 24, 2023
c6de62f
update parameter
kyoichi-sugahara Mar 24, 2023
3eaa013
temp for behavior_path_planner
kyoichi-sugahara Mar 24, 2023
95cf183
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Mar 29, 2023
1cd2907
add param file
kyoichi-sugahara Mar 29, 2023
5c5de66
add test free space planner module
kyoichi-sugahara Mar 30, 2023
99617aa
update map
kyoichi-sugahara Mar 30, 2023
2096ef2
add test for behavior path planner
kyoichi-sugahara Mar 30, 2023
c0a20af
merge from main
kyoichi-sugahara Apr 4, 2023
8084161
temp
kyoichi-sugahara Apr 4, 2023
e2571df
pass freespace test
kyoichi-sugahara Apr 4, 2023
28ae1b3
pass freespace test
kyoichi-sugahara Apr 4, 2023
b05b5c1
update map
kyoichi-sugahara Apr 4, 2023
18f7aab
update map detection area
kyoichi-sugahara Apr 4, 2023
5957fa6
add no stopping area
kyoichi-sugahara Apr 4, 2023
7d3d405
temp
kyoichi-sugahara Apr 4, 2023
cb13725
temp
kyoichi-sugahara Apr 5, 2023
2578d72
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 5, 2023
8832c65
for print debug
kyoichi-sugahara Apr 5, 2023
82ea461
update param
kyoichi-sugahara Apr 5, 2023
c25db8d
temp
kyoichi-sugahara Apr 5, 2023
a233e09
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 5, 2023
b82805e
temp
kyoichi-sugahara Apr 5, 2023
5103535
add param file
kyoichi-sugahara Apr 5, 2023
f955ea3
refactor(behavior_path_planner): remove unnecessary functions (#3271)
purewater0901 Apr 5, 2023
b8fcf1c
Revert "temp"
kyoichi-sugahara Apr 5, 2023
d65f404
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 5, 2023
c380195
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 5, 2023
d5bbdf9
suppress build error (-Werror=pedantic)
kyoichi-sugahara Apr 5, 2023
71a12d4
add interface test for behavior_velocity_planner
kyoichi-sugahara Apr 7, 2023
322ad4e
build success
kyoichi-sugahara Apr 7, 2023
d6b213a
temp
kyoichi-sugahara Apr 7, 2023
b0cac21
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 7, 2023
e97f6ca
temp
kyoichi-sugahara Apr 8, 2023
173b290
add param
kyoichi-sugahara Apr 8, 2023
8ee2ff9
temp
kyoichi-sugahara Apr 8, 2023
83e9f83
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 11, 2023
652aca5
pass test
kyoichi-sugahara Apr 11, 2023
0430968
pass test
kyoichi-sugahara Apr 11, 2023
450d6c9
build success
kyoichi-sugahara Apr 11, 2023
14a919b
update param
kyoichi-sugahara Apr 11, 2023
9244f3e
temp
kyoichi-sugahara Apr 11, 2023
12997b6
temp
kyoichi-sugahara Apr 11, 2023
2a44e35
Merge branch 'main' into test/planning_interface_test_latest
kyoichi-sugahara Apr 11, 2023
8d19195
delete param file
kyoichi-sugahara Apr 11, 2023
18ea340
Resolve differences outside of parameter files
kyoichi-sugahara Apr 12, 2023
63a6a18
update test manager
kyoichi-sugahara Apr 12, 2023
50e5b07
update test manager
kyoichi-sugahara Apr 12, 2023
034b882
upload cloud map
kyoichi-sugahara Apr 12, 2023
1a9b338
fix typo
kyoichi-sugahara Apr 12, 2023
aee2797
refactor utils
kyoichi-sugahara Apr 12, 2023
abeeb61
refactor utils
kyoichi-sugahara Apr 12, 2023
68b6073
refactor test_manager
kyoichi-sugahara Apr 12, 2023
47d3ebb
refactor
kyoichi-sugahara Apr 12, 2023
6c3dd7d
temp
kyoichi-sugahara Apr 12, 2023
6cbdd54
modify test for obstacle cruise planner
kyoichi-sugahara Apr 12, 2023
d2bb94e
modify test for obstacle_stop_planner
kyoichi-sugahara Apr 12, 2023
fa2d235
refactor
kyoichi-sugahara Apr 12, 2023
c676edd
revert parameter change
kyoichi-sugahara Apr 12, 2023
efb5d50
add obstacle_avoidance_planner
kyoichi-sugahara Apr 12, 2023
259da6a
Revert "add obstacle_avoidance_planner"
kyoichi-sugahara Apr 12, 2023
81b1094
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 12, 2023
ca05a03
change file name
kyoichi-sugahara Apr 12, 2023
b630c7a
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 12, 2023
ddb7e8c
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 12, 2023
b718a96
change file name
kyoichi-sugahara Apr 12, 2023
245172f
modify CMake
kyoichi-sugahara Apr 12, 2023
b4dbc63
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 12, 2023
b33b181
refactor
kyoichi-sugahara Apr 12, 2023
82ab215
refactor
kyoichi-sugahara Apr 13, 2023
3781a75
add some code for behavior_velocity_planner
kyoichi-sugahara Apr 13, 2023
ad1998d
add prototype declaration
kyoichi-sugahara Apr 13, 2023
68234e8
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 13, 2023
38bd7c0
add depend package
kyoichi-sugahara Apr 13, 2023
55b1ce7
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 13, 2023
ada2cd8
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 14, 2023
24ca1e9
Merge branch 'main' into feat/update-test-manager
kyoichi-sugahara Apr 14, 2023
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
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ TEST(PlanningModuleInterfaceTest, testPlanningInterfaceWithVariousTrajectoryInpu
{
rclcpp::init(0, nullptr);

auto test_manager = std::make_shared<planning_test_utils::PlanningIntefaceTestManager>();
auto test_manager = std::make_shared<planning_test_utils::PlanningInterfaceTestManager>();

auto node_options = rclcpp::NodeOptions{};

Expand All @@ -39,7 +39,7 @@ TEST(PlanningModuleInterfaceTest, testPlanningInterfaceWithVariousTrajectoryInpu

node_options.arguments(
{"--ros-args", "--params-file",
motion_velocity_smoother_dir + "/config/default_motion_velocity_smoother.param.yaml",
motion_velocity_smoother_dir + "/config/test_default_motion_velocity_smoother.param.yaml",
"--params-file", motion_velocity_smoother_dir + "/config/default_common.param.yaml",
"--params-file", motion_velocity_smoother_dir + "/config/JerkFiltered.param.yaml"});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,38 +21,39 @@

#include <vector>

TEST(PlanningModuleInterfaceTest, testPlanningInterfaceWithVariousTrajectoryInput)
TEST(PlanningModuleInterfaceTest, NodeTestWithExceptionTrajectory)
{
rclcpp::init(0, nullptr);

auto test_manager = std::make_shared<planning_test_utils::PlanningIntefaceTestManager>();
auto test_manager = std::make_shared<planning_test_utils::PlanningInterfaceTestManager>();

auto node_options = rclcpp::NodeOptions{};

test_manager->declareVehicleInfoParams(node_options);
test_manager->declareNearestSearchDistanceParams(node_options);

const auto obstacle_cruise_planner_dir =
ament_index_cpp::get_package_share_directory("obstacle_cruise_planner");

const auto planning_test_utils_dir =
ament_index_cpp::get_package_share_directory("planning_test_utils");

node_options.arguments(
{"--ros-args", "--params-file",
obstacle_cruise_planner_dir + "/config/default_common.param.yaml", "--params-file",
obstacle_cruise_planner_dir + "/config/obstacle_cruise_planner.param.yaml"});
{"--ros-args", "--params-file", planning_test_utils_dir + "/config/test_common.param.yaml",
"--params-file", planning_test_utils_dir + "/config/test_nearest_search.param.yaml",
"--params-file", planning_test_utils_dir + "/config/test_vehicle_info.param.yaml",
"--params-file", obstacle_cruise_planner_dir + "/config/default_common.param.yaml",
"--params-file", obstacle_cruise_planner_dir + "/config/obstacle_cruise_planner.param.yaml"});

auto test_target_node =
std::make_shared<motion_planning::ObstacleCruisePlannerNode>(node_options);

// publish necessary topics from test_manager
test_manager->publishOdometry(test_target_node, "obstacle_cruise_planner/input/odometry");
test_manager->publishPointCloud(test_target_node, "obstacle_cruise_planner/input/vector_map");
test_manager->publishPredictedObjects(test_target_node, "obstacle_cruise_planner/input/objects");
test_manager->publishAcceleration(test_target_node, "obstacle_cruise_planner/input/acceleration");

// set subscriber for test_target_node
// set subscriber with topic name: obstacle_cruise_planner → test_node_
test_manager->setTrajectorySubscriber("obstacle_cruise_planner/output/trajectory");

// setting topic name of subscribing topic
// set obstacle_cruise_planners input topic name(this topic is changed to test node):
test_manager->setTrajectoryInputTopicName("obstacle_cruise_planner/input/trajectory");

// test for normal trajectory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,28 @@

#include <vector>

TEST(PlanningModuleInterfaceTest, testPlanningInterfaceWithVariousTrajectoryInput)
TEST(PlanningModuleInterfaceTest, NodeTestWithExceptionTrajectory)
{
rclcpp::init(0, nullptr);

auto test_manager = std::make_shared<planning_test_utils::PlanningIntefaceTestManager>();
auto test_manager = std::make_shared<planning_test_utils::PlanningInterfaceTestManager>();

auto node_options = rclcpp::NodeOptions{};

test_manager->declareVehicleInfoParams(node_options);
test_manager->declareNearestSearchDistanceParams(node_options);
node_options.append_parameter_override("enable_slow_down", false);

const auto planning_test_utils_dir =
ament_index_cpp::get_package_share_directory("planning_test_utils");
const auto obstacle_stop_planner_dir =
ament_index_cpp::get_package_share_directory("obstacle_stop_planner");

node_options.append_parameter_override("enable_slow_down", false);

node_options.arguments(
{"--ros-args", "--params-file", obstacle_stop_planner_dir + "/config/common.param.yaml",
"--params-file", obstacle_stop_planner_dir + "/config/adaptive_cruise_control.param.yaml",
"--params-file", obstacle_stop_planner_dir + "/config/obstacle_stop_planner.param.yaml"});
{"--ros-args", "--params-file", planning_test_utils_dir + "/config/test_common.param.yaml",
"--params-file", planning_test_utils_dir + "/config/test_nearest_search.param.yaml",
"--params-file", planning_test_utils_dir + "/config/test_vehicle_info.param.yaml",
"--params-file", obstacle_stop_planner_dir + "/config/common.param.yaml", "--params-file",
obstacle_stop_planner_dir + "/config/adaptive_cruise_control.param.yaml", "--params-file",
obstacle_stop_planner_dir + "/config/obstacle_stop_planner.param.yaml"});

auto test_target_node = std::make_shared<motion_planning::ObstacleStopPlannerNode>(node_options);

Expand All @@ -51,10 +54,10 @@ TEST(PlanningModuleInterfaceTest, testPlanningInterfaceWithVariousTrajectoryInpu
test_manager->publishExpandStopRange(
test_target_node, "obstacle_stop_planner/input/expand_stop_range");

// set subscriber for test_target_node
// set subscriber with topic name: obstacle stop planner → test_node_
test_manager->setTrajectorySubscriber("obstacle_stop_planner/output/trajectory");

// setting topic name of subscribing topic
// set obstacle stop planner's input topic name(this topic is changed to test node):
test_manager->setTrajectoryInputTopicName("obstacle_stop_planner/input/trajectory");

// test for normal trajectory
Expand Down
2 changes: 2 additions & 0 deletions planning/planning_test_utils/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ ament_auto_add_library(planning_test_utils SHARED
)

ament_auto_package(INSTALL_TO_SHARE
config
test_map
)
15 changes: 15 additions & 0 deletions planning/planning_test_utils/config/test_common.param.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**:
ros__parameters:
# constraints param for normal driving
normal:
min_acc: -1.0 # min deceleration [m/ss]
max_acc: 1.0 # max acceleration [m/ss]
min_jerk: -1.0 # min jerk [m/sss]
max_jerk: 1.0 # max jerk [m/sss]

# constraints to be observed
limit:
min_acc: -2.5 # min deceleration limit [m/ss]
max_acc: 1.0 # max acceleration limit [m/ss]
min_jerk: -1.5 # min jerk limit [m/sss]
max_jerk: 1.5 # max jerk limit [m/sss]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/**:
ros__parameters:
# ego
ego_nearest_dist_threshold: 3.0 # [m]
ego_nearest_yaw_threshold: 1.046 # [rad] = 60 [deg]
12 changes: 12 additions & 0 deletions planning/planning_test_utils/config/test_vehicle_info.param.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**:
ros__parameters:
wheel_radius: 0.39
wheel_width: 0.42
wheel_base: 2.74 # between front wheel center and rear wheel center
wheel_tread: 1.63 # between left wheel center and right wheel center
front_overhang: 1.0 # between front wheel center and vehicle front
rear_overhang: 1.03 # between rear wheel center and vehicle rear
left_overhang: 0.1 # between left wheel center and vehicle left
right_overhang: 0.1 # between right wheel center and vehicle right
vehicle_height: 2.5
max_steer_angle: 0.70 # [rad]
Original file line number Diff line number Diff line change
Expand Up @@ -15,97 +15,217 @@
#ifndef PLANNING_INTERFACE_TEST_MANAGER__PLANNING_INTERFACE_TEST_MANAGER_HPP_
#define PLANNING_INTERFACE_TEST_MANAGER__PLANNING_INTERFACE_TEST_MANAGER_HPP_

#include <component_interface_specs/planning.hpp>
#include <component_interface_utils/rclcpp.hpp>
#include <rclcpp/rclcpp.hpp>

#include <autoware_adapi_v1_msgs/msg/operation_mode_state.hpp>
#include <autoware_auto_control_msgs/msg/ackermann_control_command.hpp>
#include <autoware_auto_mapping_msgs/msg/had_map_bin.hpp>
#include <autoware_auto_perception_msgs/msg/predicted_objects.hpp>
#include <autoware_auto_perception_msgs/msg/traffic_signal_array.hpp>
#include <autoware_auto_planning_msgs/msg/path.hpp>
#include <autoware_auto_planning_msgs/msg/path_with_lane_id.hpp>
#include <autoware_auto_planning_msgs/msg/trajectory.hpp>
#include <autoware_auto_vehicle_msgs/msg/steering_report.hpp>
#include <autoware_planning_msgs/msg/lanelet_route.hpp>
#include <geometry_msgs/msg/accel_with_covariance_stamped.hpp>
#include <geometry_msgs/msg/point.hpp>
#include <geometry_msgs/msg/pose_stamped.hpp>
#include <geometry_msgs/msg/quaternion.hpp>
#include <nav_msgs/msg/occupancy_grid.hpp>
#include <nav_msgs/msg/odometry.hpp>
#include <sensor_msgs/msg/point_cloud2.hpp>
#include <std_msgs/msg/bool.hpp>
#include <tf2_msgs/msg/tf_message.hpp>
#include <tier4_api_msgs/msg/crosswalk_status.hpp>
#include <tier4_api_msgs/msg/intersection_status.hpp>
#include <tier4_planning_msgs/msg/expand_stop_range.hpp>
#include <tier4_planning_msgs/msg/lateral_offset.hpp>
#include <tier4_planning_msgs/msg/scenario.hpp>
#include <tier4_planning_msgs/msg/velocity_limit.hpp>
#include <tier4_v2x_msgs/msg/virtual_traffic_light_state_array.hpp>

#include <boost/optional.hpp>

#include <gtest/gtest.h>
#include <tf2_ros/buffer.h>
#include <tf2_ros/transform_listener.h>
#include <time.h>

#include <chrono>
#include <memory>
#include <string>

namespace planning_test_utils
{
using autoware_adapi_v1_msgs::msg::OperationModeState;
using autoware_auto_mapping_msgs::msg::HADMapBin;
using autoware_auto_perception_msgs::msg::PredictedObjects;
using autoware_auto_perception_msgs::msg::TrafficSignalArray;
using autoware_auto_planning_msgs::msg::Path;
using autoware_auto_planning_msgs::msg::PathWithLaneId;
using autoware_auto_planning_msgs::msg::Trajectory;
using autoware_auto_vehicle_msgs::msg::SteeringReport;
using autoware_planning_msgs::msg::LaneletRoute;
using geometry_msgs::msg::AccelWithCovarianceStamped;
using geometry_msgs::msg::Point;
using geometry_msgs::msg::PoseStamped;
using geometry_msgs::msg::Quaternion;
using geometry_msgs::msg::TransformStamped;
using nav_msgs::msg::OccupancyGrid;
using nav_msgs::msg::Odometry;
using planning_interface::Route;
using sensor_msgs::msg::PointCloud2;
using tf2_msgs::msg::TFMessage;
using tier4_api_msgs::msg::CrosswalkStatus;
using tier4_api_msgs::msg::IntersectionStatus;
using tier4_planning_msgs::msg::ExpandStopRange;
using tier4_planning_msgs::msg::LateralOffset;
using tier4_planning_msgs::msg::Scenario;
using tier4_planning_msgs::msg::VelocityLimit;
using tier4_v2x_msgs::msg::VirtualTrafficLightStateArray;

class PlanningIntefaceTestManager
class PlanningInterfaceTestManager
{
public:
PlanningIntefaceTestManager() {}
PlanningInterfaceTestManager();

void declareVehicleInfoParams(rclcpp::NodeOptions & node_options);
void declareNearestSearchDistanceParams(rclcpp::NodeOptions & node_options);

void publishOdometry(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishInitialPose(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishMaxVelocity(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishPointCloud(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishAcceleration(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishPredictedObjects(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishExpandStopRange(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishOccupancyGrid(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishCostMap(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishMap(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishScenario(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishLaneDrivingScenario(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishParkingScenario(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishParkingState(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishTrajectory(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishRoute(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishTF(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishInitialPoseTF(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishLateralOffset(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishOperationModeState(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishTrafficSignals(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishExternalTrafficSignals(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishVirtualTrafficLightState(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishExternalCrosswalkStates(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishExternalIntersectionStates(
rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishInitialPoseData(rclcpp::Node::SharedPtr target_node, std::string topic_name);

void setTrajectoryInputTopicName(std::string topic_name);
void setParkingTrajectoryInputTopicName(std::string topic_name);
void setLaneDrivingTrajectoryInputTopicName(std::string topic_name);
void setRouteInputTopicName(std::string topic_name);
void setPathInputTopicName(std::string topic_name);
void setPathWithLaneIdTopicName(std::string topic_name);

void setTrajectorySubscriber(std::string topic_name);
void setScenarioSubscriber(std::string topic_name);
void setPathWithLaneIdSubscriber(std::string topic_name);
void setRouteSubscriber(std::string topic_name);
void setPathSubscriber(std::string topic_name);

void testWithNominalTrajectory(rclcpp::Node::SharedPtr target_node);
void testWithAbnormalTrajectory(rclcpp::Node::SharedPtr target_node);

void testWithNominalRoute(rclcpp::Node::SharedPtr target_node);
void testWithAbnormalRoute(rclcpp::Node::SharedPtr target_node);

void testWithBehaviorNominalRoute(rclcpp::Node::SharedPtr target_node);

void testWithNominalPathWithLaneId(rclcpp::Node::SharedPtr target_node);

int getReceivedTopicNum();

private:
// Publisher
// Publisher (necessary for node running)
rclcpp::Publisher<Odometry>::SharedPtr odom_pub_;
rclcpp::Publisher<Odometry>::SharedPtr initial_pose_pub_;
rclcpp::Publisher<VelocityLimit>::SharedPtr max_velocity_pub_;
rclcpp::Publisher<PointCloud2>::SharedPtr point_cloud_pub_;
rclcpp::Publisher<AccelWithCovarianceStamped>::SharedPtr acceleration_pub_;
rclcpp::Publisher<PredictedObjects>::SharedPtr predicted_objects_pub_;
rclcpp::Publisher<TFMessage>::SharedPtr TF_pub_;
rclcpp::Publisher<SteeringReport>::SharedPtr steering_pub_;
rclcpp::Publisher<Path>::SharedPtr path_pub_;
rclcpp::Publisher<OccupancyGrid>::SharedPtr occupancy_grid_pub_;
rclcpp::Publisher<VelocityLimit>::SharedPtr max_velocity_pub_;
rclcpp::Publisher<ExpandStopRange>::SharedPtr expand_stop_range_pub_;
rclcpp::Publisher<AccelWithCovarianceStamped>::SharedPtr acceleration_pub_;

// Subscriber (necessary for node running)
rclcpp::Publisher<OccupancyGrid>::SharedPtr occupancy_grid_pub_;
rclcpp::Publisher<OccupancyGrid>::SharedPtr cost_map_pub_;
rclcpp::Publisher<HADMapBin>::SharedPtr map_pub_;
rclcpp::Publisher<Scenario>::SharedPtr scenario_pub_;
rclcpp::Publisher<Scenario>::SharedPtr parking_scenario_pub_;
rclcpp::Publisher<Scenario>::SharedPtr lane_driving_scenario_pub_;
rclcpp::Publisher<std_msgs::msg::Bool>::SharedPtr parking_state_pub_;
rclcpp::Publisher<Trajectory>::SharedPtr trajectory_pub_;
rclcpp::Publisher<LaneletRoute>::SharedPtr route_pub_;
rclcpp::Publisher<TFMessage>::SharedPtr TF_pub_;
rclcpp::Publisher<TFMessage>::SharedPtr initial_pose_tf_pub_;
rclcpp::Publisher<LateralOffset>::SharedPtr lateral_offset_pub_;
rclcpp::Publisher<OperationModeState>::SharedPtr operation_mode_state_pub_;
rclcpp::Publisher<TrafficSignalArray>::SharedPtr traffic_signals_pub_;
rclcpp::Publisher<TrafficSignalArray>::SharedPtr external_traffic_signals_pub_;
rclcpp::Publisher<VirtualTrafficLightStateArray>::SharedPtr virtual_traffic_light_states_pub_;
rclcpp::Publisher<CrosswalkStatus>::SharedPtr external_crosswalk_states_pub_;
rclcpp::Publisher<IntersectionStatus>::SharedPtr external_intersection_states_pub_;

// Subscriber
rclcpp::Subscription<Trajectory>::SharedPtr traj_sub_;
rclcpp::Subscription<VelocityLimit>::SharedPtr max_velocity_sub_;
rclcpp::Subscription<LaneletRoute>::SharedPtr route_sub_;
rclcpp::Subscription<Scenario>::SharedPtr scenario_sub_;
rclcpp::Subscription<PathWithLaneId>::SharedPtr path_with_lane_id_sub_;
rclcpp::Subscription<Path>::SharedPtr path_sub_;

// Publisher for testing
// Publisher for testing(trajectory)
rclcpp::Publisher<Trajectory>::SharedPtr normal_trajectory_pub_;
rclcpp::Publisher<Trajectory>::SharedPtr abnormal_trajectory_pub_;

// Publisher for testing(route)
rclcpp::Publisher<LaneletRoute>::SharedPtr normal_route_pub_;
rclcpp::Publisher<LaneletRoute>::SharedPtr abnormal_route_pub_;

// Publisher for testing(route)
rclcpp::Publisher<LaneletRoute>::SharedPtr behavior_normal_route_pub_;

// Publisher for testing(PathWithLaneId)
rclcpp::Publisher<PathWithLaneId>::SharedPtr normal_path_with_lane_id_pub_;
rclcpp::Publisher<PathWithLaneId>::SharedPtr abnormal_path_with_lane_id_pub_;

std::string input_trajectory_name_;
std::string input_parking_trajectory_name_;
std::string input_lane_driving_trajectory_name_;
std::string input_route_name_;
std::string input_path_name_;
std::string input_path_with_lane_id_name_;

// Node
rclcpp::Node::SharedPtr test_node_ =
std::make_shared<rclcpp::Node>("planning_interface_test_node");
size_t count_{0};
rclcpp::Node::SharedPtr test_node_;

void publishNominalTrajectory(std::string topic_name);
std::string map_frame_ = "map";
size_t count_{0};
std::shared_ptr<tf2_ros::Buffer> tf_buffer_;
std::shared_ptr<tf2_ros::TransformListener> tf_listener_;
void publishNominalTrajectory(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishAbnormalTrajectory(
rclcpp::Node::SharedPtr target_node, const Trajectory & abnormal_trajectory);
}; // class PlanningIntefaceTestManager
boost::optional<PoseStamped> transform_pose(const PoseStamped & input);

void publishNominalRoute(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishAbnormalRoute(
rclcpp::Node::SharedPtr target_node, const LaneletRoute & abnormal_route);

void publishBehaviorNominalRoute(rclcpp::Node::SharedPtr target_node, std::string topic_name);
void publishNominalPathWithLaneId(rclcpp::Node::SharedPtr target_node, std::string topic_name);

void set_initial_state_with_transform(Odometry::SharedPtr & odometry);
TransformStamped get_transform_msg(const std::string parent_frame, const std::string child_frame);
}; // class PlanningInterfaceTestManager

} // namespace planning_test_utils

Expand Down
Loading