diff --git a/modules/planning/optimizer/BUILD b/modules/planning/optimizer/BUILD index d7a45bd36cffa039a5fcb224e8cf75fdb1173b67..3a34fc6f2875e5ea2ef1c56e89e05b62a64f4ec5 100644 --- a/modules/planning/optimizer/BUILD +++ b/modules/planning/optimizer/BUILD @@ -50,8 +50,12 @@ cc_library( "//modules/common/status", "//modules/planning/common:path_decision", "//modules/planning/common:planning_data", + "//modules/planning/common:planning_gflags", + "//modules/planning/common:speed_limit", "//modules/planning/common/path:path_data", "//modules/planning/common/speed:speed_data", + "//modules/planning/optimizer/st_graph:st_graph_boundary", + "//modules/planning/optimizer/st_graph:st_graph_point", "@eigen//:eigen", ], ) diff --git a/modules/planning/optimizer/dp_st_speed/dp_st_speed_optimizer.cc b/modules/planning/optimizer/dp_st_speed/dp_st_speed_optimizer.cc index 318bc781631cdf191c7d40623b6109ebd2586637..1d25bc67e7cee8a10ec2504c4cd2f0754ec98c82 100644 --- a/modules/planning/optimizer/dp_st_speed/dp_st_speed_optimizer.cc +++ b/modules/planning/optimizer/dp_st_speed/dp_st_speed_optimizer.cc @@ -99,6 +99,9 @@ Status DpStSpeedOptimizer::Process(const PathData& path_data, AERROR << msg; return Status(ErrorCode::PLANNING_ERROR, msg); } + + RecordSTGraphDebug(boundaries, speed_limit, *speed_data); + return Status::OK(); } diff --git a/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.cc b/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.cc index b35f49e8e78acf05296cf34b5755432d5d2db340..e7430f14de3f8b5d6fc8bdc62e5ddc3ec039ea0e 100644 --- a/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.cc +++ b/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.cc @@ -61,38 +61,6 @@ bool QpSplineStSpeedOptimizer::Init() { return true; } -void QpSplineStSpeedOptimizer::RecordSTGraphDebug( - const std::vector& boundaries, - const SpeedLimit& speed_limits, const SpeedData& speed_data) { - if (!FLAGS_enable_record_debug) { - ADEBUG << "Skip record debug info"; - return; - } - - auto debug = frame_->MutableADCTrajectory()->mutable_debug(); - auto st_graph_debug = debug->mutable_planning_data()->add_st_graph(); - st_graph_debug->set_name(name()); - for (const auto& boundary : boundaries) { - auto boundary_debug = st_graph_debug->add_boundary(); - boundary_debug->set_name(boundary.id()); - for (const auto& point : boundary.points()) { - auto point_debug = boundary_debug->add_point(); - point_debug->set_t(point.x()); - point_debug->set_s(point.y()); - } - } - - for (const auto& point : speed_limits.speed_limit_points()) { - common::SpeedPoint speed_point; - speed_point.set_s(point.first); - speed_point.set_v(point.second); - st_graph_debug->add_speed_limit()->CopyFrom(speed_point); - } - - st_graph_debug->mutable_speed_profile()->CopyFrom( - {speed_data.speed_vector().begin(), speed_data.speed_vector().end()}); -} - Status QpSplineStSpeedOptimizer::Process(const PathData& path_data, const TrajectoryPoint& init_point, const ReferenceLine& reference_line, diff --git a/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.h b/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.h index 87f43e918b622685014a732e8c03d212ff105996..c4bb23d5146d49420909c823a43e138824f0a07c 100644 --- a/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.h +++ b/modules/planning/optimizer/qp_spline_st_speed/qp_spline_st_speed_optimizer.h @@ -47,10 +47,6 @@ class QpSplineStSpeedOptimizer : public SpeedOptimizer { PathDecision* const path_decision, SpeedData* const speed_data) override; - void RecordSTGraphDebug(const std::vector& boundaries, - const SpeedLimit& speed_limits, - const SpeedData& speed_data); - QpSplineStSpeedConfig qp_spline_st_speed_config_; StBoundaryConfig st_boundary_config_; }; diff --git a/modules/planning/optimizer/speed_optimizer.cc b/modules/planning/optimizer/speed_optimizer.cc index 85121c7930b7c5ebdb3d6bb78ddd3c3baa47b74c..04ccb5a422da78ba0187161f00ee774ab87092db 100644 --- a/modules/planning/optimizer/speed_optimizer.cc +++ b/modules/planning/optimizer/speed_optimizer.cc @@ -19,6 +19,8 @@ **/ #include "modules/planning/optimizer/speed_optimizer.h" +#include "modules/planning/common/planning_gflags.h" +#include "modules/planning/common/speed_limit.h" #include @@ -35,5 +37,38 @@ apollo::common::Status SpeedOptimizer::Optimize(Frame* frame) { planning_data->mutable_speed_data()); } +void SpeedOptimizer::RecordSTGraphDebug( + const std::vector& boundaries, + const SpeedLimit& speed_limits, const SpeedData& speed_data) { + if (!FLAGS_enable_record_debug) { + ADEBUG << "Skip record debug info"; + return; + } + + auto debug = frame_->MutableADCTrajectory()->mutable_debug(); + auto st_graph_debug = debug->mutable_planning_data()->add_st_graph(); + st_graph_debug->set_name(name()); + for (const auto& boundary : boundaries) { + auto boundary_debug = st_graph_debug->add_boundary(); + boundary_debug->set_name(boundary.id()); + for (const auto& point : boundary.points()) { + auto point_debug = boundary_debug->add_point(); + point_debug->set_t(point.x()); + point_debug->set_s(point.y()); + } + } + + for (const auto& point : speed_limits.speed_limit_points()) { + common::SpeedPoint speed_point; + speed_point.set_s(point.first); + speed_point.set_v(point.second); + st_graph_debug->add_speed_limit()->CopyFrom(speed_point); + } + + st_graph_debug->mutable_speed_profile()->CopyFrom( + {speed_data.speed_vector().begin(), speed_data.speed_vector().end()}); +} + + } // namespace planning } // namespace apollo diff --git a/modules/planning/optimizer/speed_optimizer.h b/modules/planning/optimizer/speed_optimizer.h index 688119bc64f460584f79639fb7779041d7cf1987..03999ab2e6b7f0f4a58e69a026e7fcc3d743c167 100644 --- a/modules/planning/optimizer/speed_optimizer.h +++ b/modules/planning/optimizer/speed_optimizer.h @@ -26,10 +26,14 @@ #include "modules/planning/optimizer/optimizer.h" #include "modules/common/status/status.h" +#include "modules/planning/optimizer/st_graph/st_graph_boundary.h" namespace apollo { namespace planning { +class SpeedLimit; +class SpeedData; + class SpeedOptimizer : public Optimizer { public: explicit SpeedOptimizer(const std::string& name); @@ -41,6 +45,10 @@ class SpeedOptimizer : public Optimizer { const PathData& path_data, const common::TrajectoryPoint& init_point, const ReferenceLine& reference_line, PathDecision* const path_decision, SpeedData* const speed_data) = 0; + + void RecordSTGraphDebug(const std::vector& boundaries, + const SpeedLimit& speed_limits, const SpeedData& speed_data); + }; } // namespace planning