|
15 | 15 | #ifndef AUTOWARE__LANE_DEPARTURE_CHECKER__LANE_DEPARTURE_CHECKER_HPP_
|
16 | 16 | #define AUTOWARE__LANE_DEPARTURE_CHECKER__LANE_DEPARTURE_CHECKER_HPP_
|
17 | 17 |
|
18 |
| -#include <autoware/universe_utils/geometry/boost_geometry.hpp> |
19 |
| -#include <autoware/universe_utils/geometry/pose_deviation.hpp> |
| 18 | +#include "autoware/lane_departure_checker/parameters.hpp" |
| 19 | + |
20 | 20 | #include <autoware/universe_utils/system/time_keeper.hpp>
|
21 | 21 | #include <autoware_vehicle_info_utils/vehicle_info_utils.hpp>
|
22 | 22 | #include <rosidl_runtime_cpp/message_initialization.hpp>
|
23 | 23 |
|
24 |
| -#include <autoware_planning_msgs/msg/lanelet_route.hpp> |
25 |
| -#include <autoware_planning_msgs/msg/trajectory.hpp> |
26 |
| -#include <autoware_planning_msgs/msg/trajectory_point.hpp> |
27 | 24 | #include <geometry_msgs/msg/pose_stamped.hpp>
|
28 | 25 | #include <geometry_msgs/msg/pose_with_covariance_stamped.hpp>
|
29 | 26 | #include <geometry_msgs/msg/twist_stamped.hpp>
|
|
48 | 45 |
|
49 | 46 | namespace autoware::lane_departure_checker
|
50 | 47 | {
|
51 |
| -using autoware::universe_utils::LinearRing2d; |
52 |
| -using autoware::universe_utils::PoseDeviation; |
53 | 48 | using autoware::universe_utils::Segment2d;
|
54 |
| -using autoware_planning_msgs::msg::LaneletRoute; |
55 |
| -using autoware_planning_msgs::msg::Trajectory; |
56 |
| -using autoware_planning_msgs::msg::TrajectoryPoint; |
57 | 49 | using tier4_planning_msgs::msg::PathWithLaneId;
|
58 |
| -using TrajectoryPoints = std::vector<TrajectoryPoint>; |
59 | 50 | typedef boost::geometry::index::rtree<Segment2d, boost::geometry::index::rstar<16>> SegmentRtree;
|
60 | 51 |
|
61 |
| -struct Param |
62 |
| -{ |
63 |
| - double footprint_margin_scale{0.0}; |
64 |
| - double footprint_extra_margin{0.0}; |
65 |
| - double resample_interval{0.0}; |
66 |
| - double max_deceleration{0.0}; |
67 |
| - double delay_time{0.0}; |
68 |
| - double max_lateral_deviation{0.0}; |
69 |
| - double max_longitudinal_deviation{0.0}; |
70 |
| - double max_yaw_deviation_deg{0.0}; |
71 |
| - double min_braking_distance{0.0}; |
72 |
| - // nearest search to ego |
73 |
| - double ego_nearest_dist_threshold{0.0}; |
74 |
| - double ego_nearest_yaw_threshold{0.0}; |
75 |
| -}; |
76 |
| - |
77 |
| -struct Input |
78 |
| -{ |
79 |
| - nav_msgs::msg::Odometry::ConstSharedPtr current_odom{}; |
80 |
| - lanelet::LaneletMapPtr lanelet_map{}; |
81 |
| - LaneletRoute::ConstSharedPtr route{}; |
82 |
| - lanelet::ConstLanelets route_lanelets{}; |
83 |
| - lanelet::ConstLanelets shoulder_lanelets{}; |
84 |
| - Trajectory::ConstSharedPtr reference_trajectory{}; |
85 |
| - Trajectory::ConstSharedPtr predicted_trajectory{}; |
86 |
| - std::vector<std::string> boundary_types_to_detect{}; |
87 |
| -}; |
88 |
| - |
89 |
| -struct Output |
90 |
| -{ |
91 |
| - std::map<std::string, double> processing_time_map{}; |
92 |
| - bool will_leave_lane{}; |
93 |
| - bool is_out_of_lane{}; |
94 |
| - bool will_cross_boundary{}; |
95 |
| - PoseDeviation trajectory_deviation{}; |
96 |
| - lanelet::ConstLanelets candidate_lanelets{}; |
97 |
| - TrajectoryPoints resampled_trajectory{}; |
98 |
| - std::vector<LinearRing2d> vehicle_footprints{}; |
99 |
| - std::vector<LinearRing2d> vehicle_passing_areas{}; |
100 |
| -}; |
101 |
| - |
102 | 52 | class LaneDepartureChecker
|
103 | 53 | {
|
104 | 54 | public:
|
105 |
| - LaneDepartureChecker( |
| 55 | + explicit LaneDepartureChecker( |
106 | 56 | std::shared_ptr<universe_utils::TimeKeeper> time_keeper =
|
107 | 57 | std::make_shared<universe_utils::TimeKeeper>())
|
108 | 58 | : time_keeper_(time_keeper)
|
109 | 59 | {
|
110 | 60 | }
|
111 |
| - Output update(const Input & input); |
112 | 61 |
|
113 |
| - void setParam(const Param & param, const autoware::vehicle_info_utils::VehicleInfo vehicle_info) |
| 62 | + LaneDepartureChecker( |
| 63 | + const Param & param, const autoware::vehicle_info_utils::VehicleInfo & vehicle_info, |
| 64 | + std::shared_ptr<universe_utils::TimeKeeper> time_keeper = |
| 65 | + std::make_shared<universe_utils::TimeKeeper>()) |
| 66 | + : param_(param), |
| 67 | + vehicle_info_ptr_(std::make_shared<autoware::vehicle_info_utils::VehicleInfo>(vehicle_info)), |
| 68 | + time_keeper_(time_keeper) |
114 | 69 | {
|
115 |
| - param_ = param; |
116 |
| - vehicle_info_ptr_ = std::make_shared<autoware::vehicle_info_utils::VehicleInfo>(vehicle_info); |
117 | 70 | }
|
| 71 | + Output update(const Input & input); |
118 | 72 |
|
119 | 73 | void setParam(const Param & param) { param_ = param; }
|
120 | 74 |
|
121 |
| - void setVehicleInfo(const autoware::vehicle_info_utils::VehicleInfo vehicle_info) |
122 |
| - { |
123 |
| - vehicle_info_ptr_ = std::make_shared<autoware::vehicle_info_utils::VehicleInfo>(vehicle_info); |
124 |
| - } |
125 |
| - |
126 | 75 | bool checkPathWillLeaveLane(
|
127 | 76 | const lanelet::ConstLanelets & lanelets, const PathWithLaneId & path) const;
|
128 | 77 |
|
|
0 commit comments