33 if (
nullptr == reference_line_info) {
34 AERROR <<
"DriveReferenceLineInfo is nullptr";
38 state->set_is_in_junction(
53 current_path_data.
path_label().find(
"lane_change") != std::string::npos) {
62 if (current_path_data.
path_label().find(
"left") != std::string::npos) {
64 }
else if (current_path_data.
path_label().find(
"right") !=
69 if (current_path_data.
path_label().find(
"fallback") != std::string::npos) {
70 state->set_is_fallback(
true);
80 double route_lane_start_s = 0.0;
81 double route_lane_end_s = 0.0;
82 for (
const auto& seg : reference_line_info->
Lanes()) {
83 const auto& turn_type = seg.lane->lane().turn();
85 route_lane_start_s = route_lane_end_s;
86 route_lane_end_s += seg.end_s - seg.start_s;
88 AINFO <<
"s: " << route_lane_start_s <<
", " << route_lane_end_s
89 <<
", ego s: " << adc_s;
90 AINFO <<
"turn_type: " << turn_type;
92 if (route_lane_end_s < adc_s) {
95 if (route_lane_start_s < adc_s + 0.01) {
96 state->set_cur_turn_info(seg.lane->lane().turn());
102 state->mutable_next_turn_info()->set_turn_type(turn_type);
103 state->mutable_next_turn_info()->set_dis_to_turn(route_lane_start_s -
114 const auto path_decision = reference_line_info->
path_decision();
115 double nearest_nudge_obs_dis = 1000.0;
119 !sl_polygon.OverlapeWithReferCenter()) {
123 const Obstacle* perception_obs = path_decision.Find(sl_polygon.id());
124 if (!perception_obs) {
125 AERROR <<
"Failed to find obstacle : " << sl_polygon.id();
129 auto nudge_obstacle_debug = state->add_nudge_obstacle();
130 nudge_obstacle_debug->set_is_blocked(
false);
132 nudge_obstacle_debug->set_type(
135 nudge_obstacle_debug->set_type(
138 nudge_obstacle_debug->set_type(
140 nudge_obstacle_debug->set_is_blocked(
true);
143 if (sl_polygon.MinS() - adc_sl_boundary.
end_s() < nearest_nudge_obs_dis) {
144 nearest_nudge_obs_dis = sl_polygon.MinS() - adc_sl_boundary.
end_s();
147 nudge_obstacle_debug->mutable_obstacle()->set_id(perception_obs->
Id());
148 nudge_obstacle_debug->mutable_obstacle()->mutable_sl_boundary()->CopyFrom(
151 const auto& reference_line_towing_l =
153 double towing_l = 0.0;
154 if (reference_line_towing_l.size() > 0) {
155 towing_l = reference_line_towing_l.at(0);
157 if (nearest_nudge_obs_dis < 6.0 &&
158 std::abs((adc_sl_boundary.
start_l() + adc_sl_boundary.
end_l()) * 0.5 -
159 towing_l) > FLAGS_driving_state_nudge_check_l) {
160 state->set_is_nudging(
true);
162 state->set_is_nudging(
false);