障碍物决策横纵向标签
障礙物標(biāo)簽
障礙物優(yōu)先級(jí)
# prediction/proto/feature.protomessage ObstaclePriority {enum Priority {CAUTION = 1;NORMAL = 2;IGNORE = 3;}optional Priority priority = 25 [default = NORMAL]; }# prediction/proto/predicition_obstacle.protomessage ObstacleIntent {enum Type {UNKNOWN = 0;STOP = 1;STATIONARY = 2;MOVING = 3;CHANGE_LANE = 4;LOW_ACCELERATION = 5;HIGH_ACCELERATION = 6;LOW_DECELERATION = 7;HIGH_DECELERATION = 8;}optional Type type = 1 [default = UNKNOWN]; }message PredictionObstacle {optional apollo.perception.PerceptionObstacle perception_obstacle = 1;optional double timestamp = 2; // GPS time in seconds// the length of the time for this prediction (e.g. 10s)optional double predicted_period = 3;// can have multiple trajectories per obstaclerepeated Trajectory trajectory = 4;// estimated obstacle intentoptional ObstacleIntent intent = 5;optional ObstaclePriority priority = 6;optional bool is_static = 7 [default = false];// Feature history latest -> earliest sequencerepeated Feature feature = 8; }障礙物intent 意圖,決策規(guī)劃 沒(méi)有使用
障礙物priority? reference_line_info, isRelativeObstacle / IsCautionObstacle 用于排除障礙物
障礙物是否橫跨車道兩邊
感知給出障礙物屬性- static
決策proto
# planning/proto/decision.protomessage ObjectIgnore {}message ObjectStop {optional StopReasonCode reason_code = 1;optional double distance_s = 2; // in meters// When stopped, the front center of vehicle should be at this point.optional apollo.common.PointENU stop_point = 3;// When stopped, the heading of the vehicle should be stop_heading.optional double stop_heading = 4;repeated string wait_for_obstacle = 5; }// dodge the obstacle in lateral direction when driving message ObjectNudge {enum Type {LEFT_NUDGE = 1; // drive from the left side of the obstacleRIGHT_NUDGE = 2; // drive from the right side of the obstacleNO_NUDGE = 3; // No nudge is set.};optional Type type = 1;// minimum lateral distance in meters. positive if type = LEFT_NUDGE// negative if type = RIGHT_NUDGEoptional double distance_l = 2; }message ObjectYield {optional double distance_s = 1; // minimum longitudinal distance in metersoptional apollo.common.PointENU fence_point = 2;optional double fence_heading = 3;optional double time_buffer = 4; // minimum time buffer required after the// obstacle reaches the intersect point. }message ObjectFollow {optional double distance_s = 1; // minimum longitudinal distance in metersoptional apollo.common.PointENU fence_point = 2;optional double fence_heading = 3; }message ObjectOvertake {optional double distance_s = 1; // minimum longitudinal distance in metersoptional apollo.common.PointENU fence_point = 2;optional double fence_heading = 3;optional double time_buffer = 4; // minimum time buffer required before the// obstacle reaches the intersect point. }message ObjectSidePass {enum Type {LEFT = 1;RIGHT = 2;};optional Type type = 1; }// unified object decision while estop message ObjectAvoid {}message ObjectStatic {}message ObjectDynamic {}message ObjectMotionType {oneof motion_tag {ObjectStatic static = 1;ObjectDynamic dynamic = 2;} }message ObjectDecisionType {oneof object_tag {ObjectIgnore ignore = 1;ObjectStop stop = 2;ObjectFollow follow = 3;ObjectYield yield = 4;ObjectOvertake overtake = 5;ObjectNudge nudge = 6;ObjectAvoid avoid = 7;ObjectSidePass side_pass = 8;} }message ObjectStatus {optional ObjectMotionType motion_type = 1;optional ObjectDecisionType decision_type = 2; }message ObjectDecision {optional string id = 1;optional int32 perception_id = 2;repeated ObjectDecisionType object_decision = 3; }message ObjectDecisions {repeated ObjectDecision decision = 1; }message MainStop {optional StopReasonCode reason_code = 1;optional string reason = 2;// When stopped, the front center of vehicle should be at this point.optional apollo.common.PointENU stop_point = 3;// When stopped, the heading of the vehicle should be stop_heading.optional double stop_heading = 4;optional apollo.routing.ChangeLaneType change_lane_type = 5; }message MainCruise {// cruise current laneoptional apollo.routing.ChangeLaneType change_lane_type = 1; }ObjectSidePass / ObjectAvoid / ObjectNudge 區(qū)別是什么?
apollo6.0 好像只有ObjectNudge 是有效的??
進(jìn)一步分析代碼 path_decider.cc / speed_limit_decider.cc
planning/proto/planning_status.proto
message PathDeciderStatus {enum LaneBorrowDirection {LEFT_BORROW = 1; // borrow left neighbor laneRIGHT_BORROW = 2; // borrow right neighbor lane}optional int32 front_static_obstacle_cycle_counter = 1 [default = 0];optional int32 able_to_use_self_lane_counter = 2 [default = 0];optional bool is_in_path_lane_borrow_scenario = 3 [default = false];optional string front_static_obstacle_id = 4 [default = ""];repeated LaneBorrowDirection decided_side_pass_direction = 5; }Obstacle.cc
/** @brief This is the class that associates an Obstacle with its path* properties. An obstacle's path properties relative to a path.* The `s` and `l` values are examples of path properties.* The decision of an obstacle is also associated with a path.** The decisions have two categories: lateral decision and longitudinal* decision.* Lateral decision includes: nudge, ignore.* Lateral decision safety priority: nudge > ignore.* Longitudinal decision includes: stop, yield, follow, overtake, ignore.* Decision safety priorities order: stop > yield >= follow > overtake > ignore** Ignore decision belongs to both lateral decision and longitudinal decision,* and it has the lowest priority.*/障礙物 的橫向標(biāo)簽,只有 nudge/ignore? ??
ReferenceInfo 中的Path Decision 在Frame 初始化過(guò)程中,對(duì)每個(gè)path obstacle 添加標(biāo)簽, 這個(gè)標(biāo)簽代表該障礙物的存在會(huì)對(duì)無(wú)人車造成的影響。代碼中僅僅利用路況以及路況中障礙物位置,初步設(shè)定了障礙物的標(biāo)簽,例如人行橫道路況,有人,則需要建立虛擬墻,否則忽略; 那些障礙物在車道上,但是不在特殊路況下(既不在停車區(qū)也不在禁停區(qū)等特殊區(qū)域),不會(huì)分配標(biāo)簽;
PathDecider 僅僅只能為靜態(tài)障礙物設(shè)定標(biāo)簽,無(wú)法為動(dòng)態(tài)障礙物設(shè)定標(biāo)簽;
PathBoundDecider
主要生成4種
| fallback | ||
| regular | ||
| lanechange | ||
| left/rigit/no_borrow + lane_borrow_type | ||
| self | ||
| pullover |
fallback
regular/pullover
regular/self
regular/lanechange
regular/left[|right/no-borrow]/laneborrowtype
SpeedDecider 對(duì)動(dòng)態(tài)障礙物更新標(biāo)簽
總結(jié)
以上是生活随笔為你收集整理的障碍物决策横纵向标签的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 金蝶盘点机PDA条码管理系统WMS系统具
- 下一篇: UE4学习-密室逃脱源码和可执行程序的下