Apollo 10.0
自动驾驶开放平台
apollo::planning::SpeedProfileGenerator类 参考

#include <speed_profile_generator.h>

apollo::planning::SpeedProfileGenerator 的协作图:

Public 成员函数

 SpeedProfileGenerator ()=delete
 

静态 Public 成员函数

static void FillEnoughSpeedPoints (SpeedData *const speed_data)
 
static SpeedData GenerateFixedDistanceCreepProfile (const double distance, const double max_speed)
 

详细描述

在文件 speed_profile_generator.h 第 36 行定义.

构造及析构函数说明

◆ SpeedProfileGenerator()

apollo::planning::SpeedProfileGenerator::SpeedProfileGenerator ( )
delete

成员函数说明

◆ FillEnoughSpeedPoints()

void apollo::planning::SpeedProfileGenerator::FillEnoughSpeedPoints ( SpeedData *const  speed_data)
static

在文件 speed_profile_generator.cc 第 36 行定义.

36 {
37 double last_point_t = 0.0;
38 double last_point_s = 0.0;
39 if (!speed_data->empty()) {
40 last_point_t = speed_data->back().t();
41 last_point_s = speed_data->back().s();
42 }
43 if (last_point_t >= FLAGS_fallback_total_time) {
44 return;
45 }
46 for (double t = last_point_t + FLAGS_fallback_time_unit;
47 t < FLAGS_fallback_total_time; t += FLAGS_fallback_time_unit) {
48 speed_data->AppendSpeedPoint(last_point_s, t, 0.0, 0.0, 0.0);
49 }
50}

◆ GenerateFixedDistanceCreepProfile()

SpeedData apollo::planning::SpeedProfileGenerator::GenerateFixedDistanceCreepProfile ( const double  distance,
const double  max_speed 
)
static

在文件 speed_profile_generator.cc 第 52 行定义.

53 {
54 static constexpr double kConstDeceleration = -0.8; // (~3sec to fully stop)
55 static constexpr double kProceedingSpeed = 2.23; // (5mph proceeding speed)
56 const double proceeding_speed = std::fmin(max_speed, kProceedingSpeed);
57 const double distance_to_start_deceleration =
58 proceeding_speed * proceeding_speed / kConstDeceleration / 2;
59 bool is_const_deceleration_mode = distance < distance_to_start_deceleration;
60
61 double a = kConstDeceleration;
62 double t = 0.0;
63 double s = 0.0;
64 double v = proceeding_speed;
65
66 static constexpr double kDeltaT = 0.1;
67
68 SpeedData speed_data;
69 while (s < distance && v > 0) {
70 if (is_const_deceleration_mode) {
71 speed_data.AppendSpeedPoint(s, t, v, a, 0.0);
72 t += kDeltaT;
73 double v_new = std::max(0.0, v + a * t);
74 s += kDeltaT * (v + v_new) / 2;
75 v = v_new;
76 } else {
77 speed_data.AppendSpeedPoint(s, t, v, 0.0, 0.0);
78 t += kDeltaT;
79 s += kDeltaT * v;
80 if (distance - s < distance_to_start_deceleration)
81 is_const_deceleration_mode = true;
82 }
83 }
84
85 return speed_data;
86}

该类的文档由以下文件生成: