67 {
68
69 double v = raw_point_feature.speed_feature().v();
70 auto* speed_feature = point_feature->mutable_speed_input_feature();
71 speed_feature->set_s(raw_point_feature.speed_feature().s());
72 speed_feature->set_t(raw_point_feature.speed_feature().t());
73 speed_feature->set_v(v);
74 speed_feature->set_acc(raw_point_feature.speed_feature().a());
75 speed_feature->set_jerk(raw_point_feature.speed_feature().j());
76 speed_feature->set_speed_limit(
77 raw_point_feature.speed_feature().speed_limit());
78
79 double kappa = raw_point_feature.path_feature().cartesian_coord().kappa();
80 double lateral_acc = v * v * kappa;
81
82 speed_feature->set_path_curvature_abs(std::fabs(kappa));
83 speed_feature->set_lateral_acc(lateral_acc);
84
85
86 for (int i = 0; i < raw_point_feature.speed_feature().virtual_decision_size();
87 ++i) {
88 const auto& obj_decision =
89 raw_point_feature.speed_feature().virtual_decision(i);
90 auto* input_decision = speed_feature->add_virtual_obs_feature();
91 map_obstacle_feature(obj_decision, input_decision);
92 }
93
94
95 for (int i = 0; i < raw_point_feature.speed_feature().stop_size(); ++i) {
96 const auto& obj_decision = raw_point_feature.speed_feature().stop(i);
97 auto* input_decision = speed_feature->add_stop_obs_feature();
98 map_obstacle_feature(obj_decision, input_decision);
99 }
100
101
102 for (int i = 0; i < raw_point_feature.speed_feature().overtake_size(); ++i) {
103 const auto& obj_decision = raw_point_feature.speed_feature().overtake(i);
104 auto* input_decision = speed_feature->add_overtake_obs_feature();
105 map_obstacle_feature(obj_decision, input_decision);
106 }
107
108
109
110 for (int i = 0; i < raw_point_feature.speed_feature().follow_size(); ++i) {
111 const auto& obj_decision = raw_point_feature.speed_feature().follow(i);
112 auto* input_decision = speed_feature->add_follow_obs_feature();
113 map_obstacle_feature(obj_decision, input_decision);
114 }
115
116
117 for (int i = 0; i < raw_point_feature.speed_feature().nudge_size(); ++i) {
118 const auto& obj_decision = raw_point_feature.speed_feature().nudge(i);
119 auto* input_decision = speed_feature->add_nudge_obs_feature();
120 map_nudge_obs_feature(obj_decision, input_decision);
121 }
122
123
124 for (int i = 0; i < raw_point_feature.speed_feature().sidepass_front_size();
125 ++i) {
126 const auto& obj_decision =
127 raw_point_feature.speed_feature().sidepass_front(i);
128 auto* input_decision = speed_feature->add_sidepass_front_obs_feature();
129 map_sidepass_obs_feature(obj_decision, input_decision);
130 }
131 for (int i = 0; i < raw_point_feature.speed_feature().sidepass_rear_size();
132 ++i) {
133 const auto& obj_decision =
134 raw_point_feature.speed_feature().sidepass_rear(i);
135 auto* input_decision = speed_feature->add_sidepass_rear_obs_feature();
136 map_sidepass_obs_feature(obj_decision, input_decision);
137 }
139}