27 #include "gtest/gtest_prod.h" 29 #include "modules/localization/proto/localization.pb.h" 30 #include "modules/map/relative_map/proto/navigation.pb.h" 31 #include "modules/planning/proto/planning.pb.h" 32 #include "modules/prediction/proto/prediction_obstacle.pb.h" 65 void Init(
double start_velocity = 0.0,
66 double start_acceleration = 0.0)
override;
72 void Start()
override;
82 void Reset()
override;
88 const std::shared_ptr<apollo::planning::ADCTrajectory> &trajectory);
89 void OnRoutingResponse(
90 const std::shared_ptr<apollo::routing::RoutingResponse> &routing);
91 void OnReceiveNavigationInfo(
92 const std::shared_ptr<apollo::relative_map::NavigationInfo>
94 void OnPredictionObstacles(
95 const std::shared_ptr<apollo::prediction::PredictionObstacles>
101 bool PerfectControlModel(
102 apollo::common::TrajectoryPoint *point,
103 apollo::canbus::Chassis::GearPosition *gear_position);
105 void PublishChassis(
double cur_speed,
106 apollo::canbus::Chassis::GearPosition gear_position);
108 void PublishLocalization(
const apollo::common::TrajectoryPoint &point);
110 void PublishDummyPrediction();
112 void InitTimerAndIO();
114 void InitStartPoint(
double start_velocity,
double start_acceleration);
118 void SetStartPoint(
const apollo::common::TrajectoryPoint &point);
122 void ClearPlanning();
124 void InternalReset();
128 std::unique_ptr<cyber::Node> node_;
130 std::shared_ptr<cyber::Reader<apollo::localization::LocalizationEstimate>>
131 localization_reader_;
132 std::shared_ptr<cyber::Reader<apollo::planning::ADCTrajectory>>
134 std::shared_ptr<cyber::Reader<apollo::routing::RoutingResponse>>
135 routing_response_reader_;
136 std::shared_ptr<cyber::Reader<apollo::relative_map::NavigationInfo>>
138 std::shared_ptr<cyber::Reader<apollo::prediction::PredictionObstacles>>
141 std::shared_ptr<cyber::Writer<apollo::localization::LocalizationEstimate>>
142 localization_writer_;
143 std::shared_ptr<cyber::Writer<apollo::canbus::Chassis>> chassis_writer_;
144 std::shared_ptr<cyber::Writer<apollo::prediction::PredictionObstacles>>
148 std::unique_ptr<cyber::Timer> sim_control_timer_;
151 std::unique_ptr<cyber::Timer> sim_prediction_timer_;
154 static constexpr
double kSimControlIntervalMs = 10;
155 static constexpr
double kSimPredictionIntervalMs = 100;
158 std::shared_ptr<apollo::planning::ADCTrajectory> current_trajectory_;
161 int prev_point_index_ = 0;
162 int next_point_index_ = 0;
165 bool received_planning_ =
false;
168 bool re_routing_triggered_ =
false;
171 bool enabled_ =
false;
174 bool start_point_from_localization_ =
false;
177 bool send_dummy_prediction_ =
true;
180 apollo::common::Header current_routing_header_;
182 apollo::common::TrajectoryPoint prev_point_;
183 apollo::common::TrajectoryPoint next_point_;
185 common::PathPoint adc_position_;
190 FRIEND_TEST(SimControlTest, Test);
191 FRIEND_TEST(SimControlTest, TestDummyPrediction);
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Definition: map_service.h:40
void Init(double start_velocity=0.0, double start_acceleration=0.0) override
setup callbacks and timer
bool IsEnabled() const
Definition: sim_control.h:59
SimControl(const MapService *map_service)
Constructor of SimControl.
A module that simulates a 'perfect control' algorithm, which assumes an ideal world where the car can...
Definition: sim_control.h:51
Interface of simulated control algorithm.
Definition: sim_control_interface.h:31
void RunOnce() override
Main logic of the simulated control algorithm.
void Stop() override
Stops the timer.
void Start() override
Starts the timer to publish simulated localization and chassis messages.
void Reset() override
Resets the internal state.