Apollo6.0轨迹预测算法分析
文章内容
分析Apollo6.0轨迹预测模块里面所使用的方法,主要是 evaluator和predictor两个模块中的函数,分析里面每个函数的作用和输入输出。最好配合代码食用 Apollo/Prediction。
Evaluator模块
Cyclists_keep_lane:
Input: curr_lane_id, lane_sequence
Output: Probability(0或1)
作用: 判断自行车每条可能路径mutable_lane_sequence的第一个lane的id是否为当前自行车所在的lane_id, 是则将该条mutable_lane_sequence的概率设为1
PedestrianInteraction:
Input: pos_x, pos_y, rel_x, rel_y
Output: trajectory
作用: 将rel_x, rel_y输入LSTM网络中, 网络输出的是每一次新的rel_x和rel_y的值,设置predicted trajectory的初始位置为pos_x, pos_y 通过上一个位置的坐标叠加一次LSTM生成的rel_x和rel_y的值获得一个新的点,计算出这个点和上一个点的位置差值得到新的rel_x和rel_y输入网络。
网络参数:
kGridSize = 2;
kEmbeddingSize = 64;
kHiddenSize = 128;
kShortTermPredictionTimeResolution = 0.4;
kShortTermPredictionPointNum = 5;
kHiddenStateUpdateCycle = 4;
疑问: social_embedding没用?
CostEvaluator:
Input: obstacle_length, obstacle_width, lane_sequence
Output: Probability
作用: 根据障碍车每条可能路径mutable_lane_sequence的第一个lane的第一个LanePoint 和 障碍物的长度宽度信息计算出该条lane_sequence的cost,cost经过一个Sigmoid函数得到这条lane_sequence的概率。
Probability = Sigmoid(Cost)
Cost = width / 2 - abs( l - length / 2 * sin(angle_diff) )
疑问: angle_diff具体含义?
CruiseMLPEvaluator:
Input: 23 + 5 * 9 + 4 * 20 = 148 个特征值
Output: probability, time_to_lane_center
作用: 根据障碍车的每条可能路径mutable_lane_sequence的148个特征值输入进mlp中,得到该条路径的probability和障碍物的time_to_lane_center,通过判断障碍物是否on lane, 采用两个不同的模型分别预测。
网络参数:
OBSTACLE_FEATURE_SIZE = 23 + 5 * 9;
INTERACTION_FEATURE_SIZE = 8;
SINGLE_LANE_FEATURE_SIZE = 4;
LANE_POINTS_SIZE = 20;
JunctionMapEvaluator:
Input: junction的12 个特征值 + junction 的 semantic_map