@@ -778,30 +778,38 @@ void GoalPlannerModule::updateData()
778
778
pull_over_path_recv, clock_->now (), static_target_objects, dynamic_target_objects,
779
779
planner_data_, occupancy_grid_map_, is_current_safe, parameters_, goal_searcher,
780
780
debug_data_.ego_polygons_expanded );
781
+ const auto new_decision_state = path_decision_controller_.get_current_state ();
781
782
782
783
auto [lane_parking_response, freespace_parking_response] = syncWithThreads ();
784
+
785
+ // NOTE: currently occupancy_grid_map_ must be used after syncWithThreads
786
+ goal_searcher.update (goal_candidates_, occupancy_grid_map_, planner_data_, static_target_objects);
787
+
783
788
if (context_data_) {
784
789
context_data_.value ().update (
785
- path_decision_controller_. get_current_state (). is_stable_safe , static_target_objects,
786
- dynamic_target_objects, prev_decision_state,
790
+ new_decision_state. is_stable_safe , static_target_objects, dynamic_target_objects ,
791
+ prev_decision_state,
787
792
isStopped (
788
793
odometry_buffer_stopped_, planner_data_->self_odometry , parameters_.th_stopped_time ,
789
794
parameters_.th_stopped_velocity ),
790
795
std::move (lane_parking_response), std::move (freespace_parking_response));
791
796
} else {
792
797
context_data_.emplace (
793
- path_decision_controller_. get_current_state (). is_stable_safe , static_target_objects,
794
- dynamic_target_objects, prev_decision_state,
798
+ new_decision_state. is_stable_safe , static_target_objects, dynamic_target_objects ,
799
+ prev_decision_state,
795
800
isStopped (
796
801
odometry_buffer_stopped_, planner_data_->self_odometry , parameters_.th_stopped_time ,
797
802
parameters_.th_stopped_velocity ),
798
803
std::move (lane_parking_response), std::move (freespace_parking_response));
799
804
}
800
- const auto & ctx_data = context_data_.value ();
801
- goal_searcher.update (
802
- goal_candidates_, occupancy_grid_map_, planner_data_, ctx_data.static_target_objects );
803
805
auto & ctx_data_mut = context_data_.value ();
804
806
807
+ if (!decided_time_ && new_decision_state.state == PathDecisionState::DecisionKind::DECIDED) {
808
+ decided_time_ = clock_->now ();
809
+ // TODO(soblin): do not "plan" in updateData
810
+ if (ctx_data_mut.pull_over_path_opt ) decideVelocity (ctx_data_mut.pull_over_path_opt .value ());
811
+ }
812
+
805
813
if (!isActivated ()) {
806
814
return ;
807
815
}
@@ -814,13 +822,6 @@ void GoalPlannerModule::updateData()
814
822
}
815
823
}
816
824
}
817
-
818
- if (!last_approval_data_) {
819
- last_approval_data_ =
820
- std::make_unique<LastApprovalData>(clock_->now (), planner_data_->self_odometry ->pose .pose );
821
- // TODO(soblin): do not "plan" in updateData
822
- if (ctx_data_mut.pull_over_path_opt ) decideVelocity (ctx_data_mut.pull_over_path_opt .value ());
823
- }
824
825
}
825
826
826
827
void GoalPlannerModule::processOnExit ()
@@ -829,7 +830,6 @@ void GoalPlannerModule::processOnExit()
829
830
resetPathReference ();
830
831
debug_marker_.markers .clear ();
831
832
context_data_ = std::nullopt;
832
- last_approval_data_.reset ();
833
833
}
834
834
835
835
bool GoalPlannerModule::isExecutionRequested () const
@@ -1850,7 +1850,7 @@ bool GoalPlannerModule::hasFinishedCurrentPath(const PullOverContextData & ctx_d
1850
1850
{
1851
1851
universe_utils::ScopedTimeTrack st (__func__, *time_keeper_);
1852
1852
1853
- if (!last_approval_data_ ) {
1853
+ if (!decided_time_ ) {
1854
1854
return false ;
1855
1855
}
1856
1856
@@ -1860,10 +1860,10 @@ bool GoalPlannerModule::hasFinishedCurrentPath(const PullOverContextData & ctx_d
1860
1860
1861
1861
// check if enough time has passed since last approval
1862
1862
// this is necessary to give turn signal for enough time
1863
- const bool has_passed_enough_time_from_approval =
1864
- (clock_->now () - last_approval_data_-> time ).seconds () >
1863
+ const bool has_passed_enough_time_from_decided =
1864
+ (clock_->now () - decided_time_. value () ).seconds () >
1865
1865
planner_data_->parameters .turn_signal_search_time ;
1866
- if (!has_passed_enough_time_from_approval ) {
1866
+ if (!has_passed_enough_time_from_decided ) {
1867
1867
return false ;
1868
1868
}
1869
1869
0 commit comments