Skip to content

Commit 11e2774

Browse files
frenet planner
Signed-off-by: Zulfaqar Azmi <zulfaqar.azmi@tier4.jp>
1 parent 1586372 commit 11e2774

File tree

9 files changed

+630
-82
lines changed

9 files changed

+630
-82
lines changed

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/structs/data.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ struct CommonData
250250
LanesPolygonPtr lanes_polygon_ptr;
251251
TransientData transient_data;
252252
PathWithLaneId current_lanes_path;
253+
PathWithLaneId target_lanes_path;
253254
ModuleType lc_type;
254255
Direction direction;
255256

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/structs/path.hpp

+32-2
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,57 @@
1919
#include "autoware/behavior_path_planner_common/turn_signal_decider.hpp"
2020
#include "autoware/behavior_path_planner_common/utils/path_shifter/path_shifter.hpp"
2121

22+
#include <autoware_frenet_planner/structures.hpp>
23+
2224
#include <tier4_planning_msgs/msg/path_with_lane_id.hpp>
2325

26+
#include <utility>
2427
#include <vector>
2528

2629
namespace autoware::behavior_path_planner::lane_change
2730
{
31+
enum class PathType { ConstantJerk = 0, FrenetPlanner };
32+
2833
using autoware::behavior_path_planner::TurnSignalInfo;
2934
using tier4_planning_msgs::msg::PathWithLaneId;
35+
struct TrajectoryGroup
36+
{
37+
PathWithLaneId prepare;
38+
PathWithLaneId target_lane_ref_path;
39+
std::vector<double> target_lane_ref_path_dist;
40+
LaneChangePhaseMetrics prepare_metric;
41+
frenet_planner::Trajectory lane_changing;
42+
frenet_planner::FrenetState initial_state;
43+
44+
TrajectoryGroup() = default;
45+
TrajectoryGroup(
46+
PathWithLaneId prepare, PathWithLaneId target_lane_ref_path,
47+
std::vector<double> target_lane_ref_path_dist, LaneChangePhaseMetrics prepare_metric,
48+
frenet_planner::Trajectory lane_changing, frenet_planner::FrenetState initial_state)
49+
: prepare(std::move(prepare)),
50+
target_lane_ref_path(std::move(target_lane_ref_path)),
51+
target_lane_ref_path_dist(std::move(target_lane_ref_path_dist)),
52+
prepare_metric(prepare_metric),
53+
lane_changing(std::move(lane_changing)),
54+
initial_state(initial_state)
55+
{
56+
}
57+
};
58+
3059
struct Path
3160
{
61+
Info info;
3262
PathWithLaneId path;
3363
ShiftedPath shifted_path;
34-
Info info;
64+
TrajectoryGroup frenet_path;
65+
PathType type = PathType::ConstantJerk;
3566
};
3667

3768
struct Status
3869
{
3970
Path lane_change_path;
4071
bool is_safe{false};
4172
bool is_valid_path{false};
42-
double start_distance{0.0};
4373
};
4474
} // namespace autoware::behavior_path_planner::lane_change
4575

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/path.hpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
#ifndef AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__PATH_HPP_
16-
#define AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__PATH_HPP_
17-
1815
#include "autoware/behavior_path_lane_change_module/structs/data.hpp"
1916
#include "autoware/behavior_path_lane_change_module/structs/path.hpp"
2017

@@ -26,6 +23,7 @@ namespace autoware::behavior_path_planner::utils::lane_change
2623
{
2724
using behavior_path_planner::LaneChangePath;
2825
using behavior_path_planner::lane_change::CommonDataPtr;
26+
using behavior_path_planner::lane_change::TrajectoryGroup;
2927

3028
/**
3129
* @brief Generates a prepare segment for a lane change maneuver.
@@ -98,5 +96,11 @@ LaneChangePath construct_candidate_path(
9896
const LaneChangeInfo & lane_change_info, const PathWithLaneId & prepare_segment,
9997
const PathWithLaneId & target_lane_reference_path,
10098
const std::vector<std::vector<int64_t>> & sorted_lane_ids);
99+
100+
/// @brief generate lane change candidate paths using the Frenet planner
101+
std::vector<lane_change::TrajectoryGroup> generate_frenet_candidates(
102+
const CommonDataPtr & common_data_ptr, const PathWithLaneId & prev_module_path,
103+
const std::vector<LaneChangePhaseMetrics> & metrics);
104+
105+
std::optional<LaneChangePath> get_candidate_path(const TrajectoryGroup & trajectory_group);
101106
} // namespace autoware::behavior_path_planner::utils::lane_change
102-
#endif // AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__PATH_HPP_

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/utils.hpp

+13
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
#include <autoware/route_handler/route_handler.hpp>
2626
#include <autoware/universe_utils/geometry/boost_geometry.hpp>
27+
#include <autoware_frenet_planner/structures.hpp>
28+
#include <autoware_sampler_common/transform/spline_transform.hpp>
2729

2830
#include <autoware_perception_msgs/msg/predicted_objects.hpp>
2931
#include <geometry_msgs/msg/pose_stamped.hpp>
@@ -56,6 +58,7 @@ using behavior_path_planner::lane_change::LCParamPtr;
5658
using behavior_path_planner::lane_change::ModuleType;
5759
using behavior_path_planner::lane_change::PathSafetyStatus;
5860
using behavior_path_planner::lane_change::TargetLaneLeadingObjects;
61+
using behavior_path_planner::lane_change::TrajectoryGroup;
5962
using geometry_msgs::msg::Point;
6063
using geometry_msgs::msg::Pose;
6164
using geometry_msgs::msg::Twist;
@@ -83,6 +86,10 @@ bool path_footprint_exceeds_target_lane_bound(
8386
const CommonDataPtr & common_data_ptr, const PathWithLaneId & path, const VehicleInfo & ego_info,
8487
const double margin = 0.1);
8588

89+
void filter_out_of_bound_trajectories(
90+
const CommonDataPtr & common_data_ptr,
91+
std::vector<lane_change::TrajectoryGroup> & trajectory_groups);
92+
8693
std::vector<DrivableLanes> generateDrivableLanes(
8794
const std::vector<DrivableLanes> & original_drivable_lanes, const RouteHandler & route_handler,
8895
const lanelet::ConstLanelets & current_lanes, const lanelet::ConstLanelets & lane_change_lanes);
@@ -432,5 +439,11 @@ std::vector<std::vector<PoseWithVelocityStamped>> convert_to_predicted_paths(
432439
* @return true if the pose is within the target or target neighbor polygons, false otherwise.
433440
*/
434441
bool is_valid_start_point(const lane_change::CommonDataPtr & common_data_ptr, const Pose & pose);
442+
443+
std::vector<PoseWithVelocityStamped> convert_to_predicted_path(
444+
const CommonDataPtr & common_data_ptr, const lane_change::TrajectoryGroup & frenet_candidate,
445+
[[maybe_unused]] const size_t deceleration_sampling_num);
446+
447+
double calc_limit(const CommonDataPtr & common_data_ptr, const Pose & lc_end_pose);
435448
} // namespace autoware::behavior_path_planner::utils::lane_change
436449
#endif // AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__UTILS_HPP_

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/package.xml

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
<depend>autoware_behavior_path_planner</depend>
2525
<depend>autoware_behavior_path_planner_common</depend>
26+
<depend>autoware_frenet_planner</depend>
2627
<depend>autoware_motion_utils</depend>
2728
<depend>autoware_rtc_interface</depend>
2829
<depend>autoware_universe_utils</depend>

0 commit comments

Comments
 (0)