提交 a4fb1e9a 编写于 作者: S siyangy 提交者: Calvin Miao

Add routing callback to sim control

上级 410e856b
...@@ -40,8 +40,9 @@ SimControl::SimControl() ...@@ -40,8 +40,9 @@ SimControl::SimControl()
: prev_point_index_(0), : prev_point_index_(0),
next_point_index_(0), next_point_index_(0),
received_planning_(false), received_planning_(false),
initial_start_(true) { initial_start_(true),
if (FLAGS_enable_sim_control) { enabled_(FLAGS_enable_sim_control) {
if (enabled_) {
RoutingResult routing; RoutingResult routing;
if (!GetProtoFromFile(FLAGS_routing_result_file, &routing)) { if (!GetProtoFromFile(FLAGS_routing_result_file, &routing)) {
AWARN << "Unable to read start point from file: " AWARN << "Unable to read start point from file: "
...@@ -70,13 +71,16 @@ void SimControl::SetStartPoint(const RoutingResult& routing) { ...@@ -70,13 +71,16 @@ void SimControl::SetStartPoint(const RoutingResult& routing) {
prev_point_index_ = next_point_index_ = 0; prev_point_index_ = next_point_index_ = 0;
received_planning_ = false; received_planning_ = false;
Start(); if (enabled_) {
Start();
}
} }
void SimControl::Start() { void SimControl::Start() {
if (initial_start_) { if (initial_start_) {
// Setup planning data callback. // Setup planning and routing result data callback.
AdapterManager::SetPlanningCallback(&SimControl::OnPlanning, this); AdapterManager::SetPlanningCallback(&SimControl::OnPlanning, this);
AdapterManager::SetRoutingResultCallback(&SimControl::SetStartPoint, this);
// Start timer to publish localiztion and chassis messages. // Start timer to publish localiztion and chassis messages.
sim_control_timer_ = AdapterManager::CreateTimer( sim_control_timer_ = AdapterManager::CreateTimer(
...@@ -172,6 +176,8 @@ void SimControl::PublishChassis(double lambda) { ...@@ -172,6 +176,8 @@ void SimControl::PublishChassis(double lambda) {
chassis.set_engine_started(true); chassis.set_engine_started(true);
chassis.set_driving_mode(Chassis::COMPLETE_AUTO_DRIVE); chassis.set_driving_mode(Chassis::COMPLETE_AUTO_DRIVE);
chassis.set_gear_location(Chassis::GEAR_DRIVE); chassis.set_gear_location(Chassis::GEAR_DRIVE);
// TODO(siyangy): set the real steering percentage.
chassis.set_steering_percentage(0.0);
double cur_speed = Interpolate(prev_point_.v(), next_point_.v(), lambda); double cur_speed = Interpolate(prev_point_.v(), next_point_.v(), lambda);
chassis.set_speed_mps(cur_speed); chassis.set_speed_mps(cur_speed);
......
...@@ -95,6 +95,10 @@ class SimControl { ...@@ -95,6 +95,10 @@ class SimControl {
// Whether it is the first time the SimControl gets started. // Whether it is the first time the SimControl gets started.
bool initial_start_; bool initial_start_;
// Whether the sim control is enabled.
// TODO(siyangy): This could be toggled by frontend.
bool enabled_;
apollo::common::TrajectoryPoint prev_point_; apollo::common::TrajectoryPoint prev_point_;
apollo::common::TrajectoryPoint next_point_; apollo::common::TrajectoryPoint next_point_;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册