Skip to content

Commit c7368f9

Browse files
committed
tmp: not build passed
1 parent faa750c commit c7368f9

File tree

9 files changed

+298
-298
lines changed

9 files changed

+298
-298
lines changed

planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/common_structs.hpp

+55-57
Original file line numberDiff line numberDiff line change
@@ -23,56 +23,26 @@
2323
#include "autoware/universe_utils/ros/update_param.hpp"
2424
#include "autoware/universe_utils/ros/uuid_helper.hpp"
2525

26+
#include <pcl_ros/transforms.hpp>
2627
#include <rclcpp/rclcpp.hpp>
2728

2829
#include <tier4_metric_msgs/msg/metric.hpp>
2930
#include <tier4_metric_msgs/msg/metric_array.hpp>
3031

32+
#include <pcl/filters/voxel_grid.h>
33+
#include <pcl/segmentation/extract_clusters.h>
34+
#include <pcl_conversions/pcl_conversions.h>
35+
3136
#include <optional>
3237
#include <string>
3338
#include <vector>
3439

3540
using Metric = tier4_metric_msgs::msg::Metric;
3641
using MetricArray = tier4_metric_msgs::msg::MetricArray;
3742

38-
struct PlannerData
39-
{
40-
rclcpp::Time current_time;
41-
std::vector<TrajectoryPoint> traj_points;
42-
nav_msgs::msg::Odometry current_odometry;
43-
geometry_msgs::msg::AccelWithCovarianceStamped current_acceleration;
44-
// geometry_msgs::msg::Pose ego_pose;
45-
// double ego_vel;
46-
// double ego_acc;
47-
bool is_driving_forward;
48-
VehicleInfo vehicle_info;
49-
double ego_nearest_dist_threshold;
50-
double ego_nearest_yaw_threshold;
51-
52-
size_t findIndex(
53-
const std::vector<TrajectoryPoint> & traj_points, const geometry_msgs::msg::Pose & pose) const
54-
{
55-
return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints(
56-
traj_points, pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold);
57-
}
58-
59-
size_t findSegmentIndex(
60-
const std::vector<TrajectoryPoint> & traj_points, const geometry_msgs::msg::Pose & pose) const
61-
{
62-
return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints(
63-
traj_points, pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold);
64-
}
65-
};
66-
67-
struct PointWithStamp
43+
struct PredictedObjectBasedObstacle
6844
{
69-
rclcpp::Time stamp;
70-
geometry_msgs::msg::Point point;
71-
};
72-
73-
struct Obstacle
74-
{
75-
Obstacle(
45+
PredictedObjectBasedObstacle(
7646
const rclcpp::Time & arg_stamp, const PredictedObject & object,
7747
const geometry_msgs::msg::Pose & arg_pose, const double ego_to_obstacle_distance,
7848
const double lat_dist_from_obstacle_to_traj, const double longitudinal_velocity,
@@ -97,22 +67,6 @@ struct Obstacle
9767
}
9868
}
9969

100-
Obstacle(
101-
const rclcpp::Time & arg_stamp,
102-
const std::optional<geometry_msgs::msg::Point> & stop_collision_point,
103-
const std::optional<geometry_msgs::msg::Point> & slow_down_front_collision_point,
104-
const std::optional<geometry_msgs::msg::Point> & slow_down_back_collision_point,
105-
const double ego_to_obstacle_distance, const double lat_dist_from_obstacle_to_traj)
106-
: stamp(arg_stamp),
107-
ego_to_obstacle_distance(ego_to_obstacle_distance),
108-
lat_dist_from_obstacle_to_traj(lat_dist_from_obstacle_to_traj),
109-
precise_lat_dist(lat_dist_from_obstacle_to_traj),
110-
stop_collision_point(stop_collision_point),
111-
slow_down_front_collision_point(slow_down_front_collision_point),
112-
slow_down_back_collision_point(slow_down_back_collision_point)
113-
{
114-
}
115-
11670
rclcpp::Time stamp; // This is not the current stamp, but when the object was observed.
11771
double ego_to_obstacle_distance;
11872
double lat_dist_from_obstacle_to_traj;
@@ -129,11 +83,55 @@ struct Obstacle
12983
Shape shape;
13084
double precise_lat_dist;
13185
std::vector<PredictedPath> predicted_paths;
86+
};
87+
88+
struct PointcloudBasedObstacle
89+
{
90+
PointcloudBasedObstacle(const rclcpp::Time & arg_stamp, const pcl::PointIndices & arg_clusters)
91+
: stamp(arg_stamp), clusters(arg_clusters)
92+
{
93+
}
94+
95+
rclcpp::Time stamp; // This is not the current stamp, but when the object was observed.
96+
pcl::PointIndices clusters;
97+
};
98+
99+
struct PlannerData
100+
{
101+
rclcpp::Time current_time;
102+
std::vector<TrajectoryPoint> traj_points;
103+
nav_msgs::msg::Odometry current_odometry;
104+
geometry_msgs::msg::AccelWithCovarianceStamped current_acceleration;
105+
// geometry_msgs::msg::Pose ego_pose;
106+
// double ego_vel;
107+
// double ego_acc;
108+
bool is_driving_forward;
109+
VehicleInfo vehicle_info;
110+
double ego_nearest_dist_threshold;
111+
double ego_nearest_yaw_threshold;
112+
113+
std::vector<PredictedObjectBasedObstacle> predicted_object_based_obstacles;
114+
std::vector<PointcloudBasedObstacle> pointcloud_based_obstacles;
132115

133-
// for PointCloud
134-
std::optional<geometry_msgs::msg::Point> stop_collision_point;
135-
std::optional<geometry_msgs::msg::Point> slow_down_front_collision_point;
136-
std::optional<geometry_msgs::msg::Point> slow_down_back_collision_point;
116+
size_t findIndex(
117+
const std::vector<TrajectoryPoint> & traj_points, const geometry_msgs::msg::Pose & pose) const
118+
{
119+
return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints(
120+
traj_points, pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold);
121+
}
122+
123+
size_t findSegmentIndex(
124+
const std::vector<TrajectoryPoint> & traj_points, const geometry_msgs::msg::Pose & pose) const
125+
{
126+
return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints(
127+
traj_points, pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold);
128+
}
129+
};
130+
131+
struct PointWithStamp
132+
{
133+
rclcpp::Time stamp;
134+
geometry_msgs::msg::Point point;
137135
};
138136

139137
struct LongitudinalInfo

planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/cruise/obstacle_cruise_module.hpp

+17-14
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,8 @@ class ObstacleCruiseModule
316316
}
317317

318318
std::vector<TrajectoryPoint> plan(
319-
const std::vector<TrajectoryPoint> & base_traj_points, const std::vector<Obstacle> & obstacles,
319+
const std::vector<TrajectoryPoint> & base_traj_points,
320+
const std::vector<PredictedObjectBasedObstacle> & obstacles,
320321
const CommonBehaviorDeterminationParam & common_behavior_determination_param,
321322
const PlannerData & planner_data, const std::vector<TrajectoryPoint> & stop_traj_points)
322323
{
@@ -359,8 +360,9 @@ class ObstacleCruiseModule
359360

360361
std::vector<CruiseObstacle> determineEgoBehaviorAgainstPredictedObjectObstacles(
361362
const Odometry & odometry, const std::vector<TrajectoryPoint> & decimated_traj_points,
362-
const std::vector<Polygon2d> & decimated_traj_polys, const std::vector<Obstacle> & obstacles,
363-
const bool is_driving_forward, const VehicleInfo & vehicle_info)
363+
const std::vector<Polygon2d> & decimated_traj_polys,
364+
const std::vector<PredictedObjectBasedObstacle> & obstacles, const bool is_driving_forward,
365+
const VehicleInfo & vehicle_info)
364366
{
365367
// cruise
366368
std::vector<CruiseObstacle> cruise_obstacles;
@@ -558,15 +560,15 @@ class ObstacleCruiseModule
558560
struct DebugData
559561
{
560562
DebugData() = default;
561-
std::vector<Obstacle> intentionally_ignored_obstacles;
563+
std::vector<PredictedObjectBasedObstacle> intentionally_ignored_obstacles;
562564
std::vector<CruiseObstacle> obstacles_to_cruise;
563565
MarkerArray cruise_wall_marker;
564566
std::optional<std::vector<Metric>> cruise_metrics{std::nullopt};
565567
};
566568

567569
std::optional<CruiseObstacle> createCruiseObstacle(
568570
const Odometry & odometry, const std::vector<TrajectoryPoint> & traj_points,
569-
const std::vector<Polygon2d> & traj_polys, const Obstacle & obstacle,
571+
const std::vector<Polygon2d> & traj_polys, const PredictedObjectBasedObstacle & obstacle,
570572
const double precise_lat_dist, const bool is_driving_forward, const VehicleInfo & vehicle_info)
571573
{
572574
const auto & object_id = obstacle.uuid.substr(0, 4);
@@ -633,14 +635,14 @@ class ObstacleCruiseModule
633635
}
634636

635637
std::optional<std::vector<CruiseObstacle>> findYieldCruiseObstacles(
636-
const std::vector<Obstacle> & obstacles, const std::vector<TrajectoryPoint> & traj_points,
637-
const VehicleInfo & vehicle_info)
638+
const std::vector<PredictedObjectBasedObstacle> & obstacles,
639+
const std::vector<TrajectoryPoint> & traj_points, const VehicleInfo & vehicle_info)
638640
{
639641
if (obstacles.empty() || traj_points.empty()) return std::nullopt;
640642
const auto & p = cruise_behavior_determination_param_;
641643

642-
std::vector<Obstacle> stopped_obstacles;
643-
std::vector<Obstacle> moving_obstacles;
644+
std::vector<PredictedObjectBasedObstacle> stopped_obstacles;
645+
std::vector<PredictedObjectBasedObstacle> moving_obstacles;
644646

645647
std::for_each(
646648
obstacles.begin(), obstacles.end(),
@@ -715,7 +717,7 @@ class ObstacleCruiseModule
715717

716718
std::optional<std::vector<PointWithStamp>> createCollisionPointsForInsideCruiseObstacle(
717719
const std::vector<TrajectoryPoint> & traj_points, const std::vector<Polygon2d> & traj_polys,
718-
const Obstacle & obstacle, const bool is_driving_forward,
720+
const PredictedObjectBasedObstacle & obstacle, const bool is_driving_forward,
719721
const VehicleInfo & vehicle_info) const
720722
{
721723
const auto & object_id = obstacle.uuid.substr(0, 4);
@@ -777,7 +779,7 @@ class ObstacleCruiseModule
777779

778780
std::optional<std::vector<PointWithStamp>> createCollisionPointsForOutsideCruiseObstacle(
779781
const std::vector<TrajectoryPoint> & traj_points, const std::vector<Polygon2d> & traj_polys,
780-
const Obstacle & obstacle, const bool is_driving_forward,
782+
const PredictedObjectBasedObstacle & obstacle, const bool is_driving_forward,
781783
const VehicleInfo & vehicle_info) const
782784
{
783785
const auto & cp = common_behavior_determination_param_;
@@ -866,7 +868,7 @@ class ObstacleCruiseModule
866868
}
867869

868870
std::optional<CruiseObstacle> createYieldCruiseObstacle(
869-
const Obstacle & obstacle, const std::vector<TrajectoryPoint> & traj_points)
871+
const PredictedObjectBasedObstacle & obstacle, const std::vector<TrajectoryPoint> & traj_points)
870872
{
871873
if (traj_points.empty()) return std::nullopt;
872874
// check label
@@ -946,7 +948,7 @@ class ObstacleCruiseModule
946948
}
947949

948950
bool isFrontCollideObstacle(
949-
const std::vector<TrajectoryPoint> & traj_points, const Obstacle & obstacle,
951+
const std::vector<TrajectoryPoint> & traj_points, const PredictedObjectBasedObstacle & obstacle,
950952
const size_t first_collision_idx) const
951953
{
952954
const auto obstacle_idx =
@@ -961,7 +963,8 @@ class ObstacleCruiseModule
961963
}
962964

963965
bool isObstacleCrossing(
964-
const std::vector<TrajectoryPoint> & traj_points, const Obstacle & obstacle) const
966+
const std::vector<TrajectoryPoint> & traj_points,
967+
const PredictedObjectBasedObstacle & obstacle) const
965968
{
966969
const double diff_angle = calcDiffAngleAgainstTrajectory(traj_points, obstacle.pose);
967970

planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/node.hpp

+3-6
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@ class ObstacleCruisePlannerNode : public rclcpp::Node
5656
void onSmoothedTrajectory(const Trajectory::ConstSharedPtr msg);
5757

5858
// main functions
59-
std::vector<Obstacle> convertToObstacles(
59+
std::vector<PredictedObjectBasedObstacle> convertToPredictedObjectBasedObstacles(
6060
const Odometry & odometry, const PredictedObjects & objects,
6161
const std::vector<TrajectoryPoint> & traj_points, const PlannerData & planner_data) const;
62-
std::vector<Obstacle> convertToObstacles(
62+
std::vector<PointcloudBasedObstacle> convertToPointcloudBasedObstacles(
6363
const Odometry & odometry, const PointCloud2 & pointcloud,
6464
const std::vector<TrajectoryPoint> & traj_points, const std_msgs::msg::Header & traj_header,
6565
const PlannerData & planner_data) const;
6666
/*
6767
std::tuple<std::vector<StopObstacle>, std::vector<CruiseObstacle>, std::vector<SlowDownObstacle>>
6868
determineEgoBehaviorAgainstPointCloudObstacles(
6969
const Odometry & odometry, const std::vector<TrajectoryPoint> & traj_points,
70-
const std::vector<Obstacle> & obstacles);
70+
const std::vector<PredictedObjectBasedObstacle> & obstacles);
7171
*/
7272
std::vector<TrajectoryPoint> decimateTrajectoryPoints(
7373
const Odometry & odometry, const std::vector<TrajectoryPoint> & traj_points,
@@ -115,9 +115,6 @@ std::tuple<std::vector<StopObstacle>, std::vector<CruiseObstacle>, std::vector<S
115115
// planner
116116
std::unique_ptr<ObstacleCruiseModule> planner_ptr_{nullptr};
117117

118-
// PointCloud-based stop obstacle history
119-
// std::vector<StopObstacle> stop_pc_obstacle_history_;
120-
121118
// behavior determination parameter
122119
CommonBehaviorDeterminationParam common_behavior_determination_param_;
123120

planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/polygon_utils.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Polygon2d createOneStepPolygon(
4040

4141
std::optional<std::pair<geometry_msgs::msg::Point, double>> getCollisionPoint(
4242
const std::vector<TrajectoryPoint> & traj_points, const std::vector<Polygon2d> & traj_polygons,
43-
const Obstacle & obstacle, const double dist_to_bumper);
43+
const PredictedObjectBasedObstacle & obstacle, const double dist_to_bumper);
4444

4545
std::optional<std::pair<geometry_msgs::msg::Point, double>> getCollisionPoint(
4646
const std::vector<TrajectoryPoint> & traj_points, const size_t collision_idx,

planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/slow_down/obstacle_slow_down_module.hpp

+7-5
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ class ObstacleSlowDownModule
290290
}
291291

292292
std::vector<TrajectoryPoint> plan(
293-
const std::vector<TrajectoryPoint> & base_traj_points, const std::vector<Obstacle> & obstacles,
293+
const std::vector<TrajectoryPoint> & base_traj_points,
294294
const CommonBehaviorDeterminationParam & common_behavior_determination_param,
295295
const PlannerData & planner_data, const std::vector<TrajectoryPoint> & cruise_traj_points)
296296
{
@@ -302,7 +302,8 @@ class ObstacleSlowDownModule
302302
common_behavior_determination_param_.decimate_trajectory_step_length, 0.0);
303303

304304
const auto slow_down_obstacles = determineEgoBehaviorAgainstPredictedObjectObstacles(
305-
planner_data.current_odometry, decimated_traj_points, obstacles, planner_data.vehicle_info);
305+
planner_data.current_odometry, decimated_traj_points, planner_data.obstacles,
306+
planner_data.vehicle_info);
306307
std::optional<VelocityLimit> slow_down_vel_limit;
307308
const auto slow_down_traj_points = generateSlowDownTrajectory(
308309
planner_data, cruise_traj_points, slow_down_obstacles, slow_down_vel_limit,
@@ -324,7 +325,7 @@ class ObstacleSlowDownModule
324325
private:
325326
std::vector<SlowDownObstacle> determineEgoBehaviorAgainstPredictedObjectObstacles(
326327
const Odometry & odometry, const std::vector<TrajectoryPoint> & decimated_traj_points,
327-
const std::vector<Obstacle> & obstacles, const VehicleInfo & vehicle_info)
328+
const std::vector<PredictedObjectBasedObstacle> & obstacles, const VehicleInfo & vehicle_info)
328329
{
329330
// slow down
330331
slow_down_condition_counter_.resetCurrentUuids();
@@ -885,7 +886,8 @@ class ObstacleSlowDownModule
885886

886887
std::optional<SlowDownObstacle> createSlowDownObstacleForPredictedObject(
887888
const Odometry & odometry, const std::vector<TrajectoryPoint> & traj_points,
888-
const Obstacle & obstacle, const double precise_lat_dist, const VehicleInfo & vehicle_info)
889+
const PredictedObjectBasedObstacle & obstacle, const double precise_lat_dist,
890+
const VehicleInfo & vehicle_info)
889891
{
890892
const auto & object_id = obstacle.uuid.substr(0, 4);
891893
const auto & p = slow_down_param_;
@@ -1016,7 +1018,7 @@ class ObstacleSlowDownModule
10161018
}
10171019

10181020
std::optional<SlowDownObstacle> createSlowDownObstacleForPointCloud(
1019-
const Obstacle & obstacle, const double precise_lat_dist)
1021+
const PredictedObjectBasedObstacle & obstacle, const double precise_lat_dist)
10201022
{
10211023
if (!enable_slow_down_planning_ || !use_pointcloud_for_slow_down_) {
10221024
return std::nullopt;

0 commit comments

Comments
 (0)