18#include "nlohmann/json.hpp"
26using Json = nlohmann::json;
28SimControlManager::SimControlManager() {}
31 return FLAGS_sim_control_module_name;
35 auto *model_factory = DynamicModelFactory::Instance();
36 Json result = model_factory->RegisterDynamicModels();
47 if (!current_dynamic_model_.empty()) {
49 auto *model_factory = DynamicModelFactory::Instance();
50 model_ptr_ = model_factory->GetModelType(current_dynamic_model_);
61 auto *model_factory = DynamicModelFactory::Instance();
62 return model_factory->RegisterDynamicModel(dynamic_model_name);
64 AERROR <<
"Sim control manager is not enabled! Can not download dynamic "
71 const std::string &dynamic_model_name) {
72 auto *model_factory = DynamicModelFactory::Instance();
73 auto next_model_ptr_ = model_factory->GetModelType(dynamic_model_name);
74 if (!next_model_ptr_) {
75 AERROR <<
"Can not get dynamic model to start.Use original dynamic model!";
79 model_ptr_ = next_model_ptr_;
80 next_model_ptr_ =
nullptr;
82 current_dynamic_model_ = dynamic_model_name;
87 const std::string &dynamic_model_name) {
88 auto *model_factory = DynamicModelFactory::Instance();
89 return model_factory->UnregisterDynamicModel(dynamic_model_name);
101 AERROR <<
"Sim control is invalid,Failed to ReSetPoinstion!";
111 AERROR <<
"Sim control is invalid,Failed to restart!";
115 model_ptr_->
Start(x, y, v, a);
122 AERROR <<
"Sim control is invalid,Failed to restart!";
136 std::system(FLAGS_sim_obstacle_stop_command.data());
137 model_ptr_ =
nullptr;
138 current_dynamic_model_ =
"";
virtual void Start()=0
Starts running the simulated control algorithm, e.g., publish simulated localization and chassis mess...
virtual void Stop()=0
Stops the algorithm.
virtual void Reset()=0
Resets the internal state.
virtual void ReSetPoinstion(double x, double y, double heading)=0
Set vehicle position.
virtual void RunOnce()=0
Main logic of the simulated control algorithm.
bool DeleteDynamicModel(const std::string &dynamic_model_name)
bool AddDynamicModel(const std::string &dynamic_model_name)
nlohmann::json LoadDynamicModels()
bool ChangeDynamicModel(const std::string &dynamic_model_name)
void Stop()
module stop function
void ReSetPoinstion(double x, double y, double heading)
void Start()
module start function