障碍物决策横纵向标签
障碍物标签
障碍物优先级
# 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 意图,决策规划 没有使用
障碍物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 区别是什么?
apollo6.0 好像只有ObjectNudge 是有效的??
进一步分析代码 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.*/
障碍物 的横向标签,只有 nudge/ignore ??
ReferenceInfo 中的Path Decision 在Frame 初始化过程中,对每个path obstacle 添加标签, 这个标签代表该障碍物的存在会对无人车造成的影响。代码中仅仅利用路况以及路况中障碍物位置,初步设定了障碍物的标签,例如人行横道路况,有人,则需要建立虚拟墙,否则忽略; 那些障碍物在车道上,但是不在特殊路况下(既不在停车区也不在禁停区等特殊区域),不会分配标签;
PathDecider 仅仅只能为静态障碍物设定标签,无法为动态障碍物设定标签;
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 对动态障碍物更新标签
障碍物决策横纵向标签相关推荐
- Apollo6.0代码Lattice算法详解——Part5: 生成横纵向轨迹
Apollo6.0代码Lattice算法详解--Part5: 生成横纵向轨迹 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc中代码部分 ...
- Jquery实战——横纵向的菜单
横纵向的菜单效果,点击纵向菜单显示其子菜单.鼠标指向横菜单的时候.显示其子菜单,鼠标离开,子菜单隐藏. HTML代码: <span style="font-size:18px;&quo ...
- jquery 树形框 横_利用jQuery设计横/纵向菜单
在网页中,菜单扮演着"指路者"的角色.如何设计一个人性化的菜单呢,下面小编带着大家一起做. 效果图: 设计历程: 1.首先利用html中的 和 标签进行嵌套,搭起一个整体的框架.如 ...
- JQuery——横纵向菜单设计
JQuery就是用JS写的,方便编程的一个方法集合.jQuery就好比把一些js的效果事先做好了,并进行了封装,然后直接调用就行了.你用javascript实现一个动画效果说不定写很长的一段代码,然而 ...
- Py之Matplotlib:python包之Matplotlib库图表绘制经验总结(中英文字体修改、横坐标文字进行横/纵向显示、控制坐标轴范围等)之详细攻略
Py之Matplotlib:python包之Matplotlib库图表绘制经验总结(中英文字体修改.横坐标文字进行横/纵向显示.控制坐标轴范围等)之详细攻略 目录 1.Matplotlib库图表绘制包 ...
- 安卓运行时监听配置更改:sim卡、本地语言、键盘显示或隐藏、字体大小、UI模式、屏幕方向、屏幕布局(另一个屏幕)、可用屏幕大小(横纵向)、无屏幕大小(外接屏幕)。
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓运行时可以监听的配置更改:sim卡.本地语言.键盘显示或隐藏.字体大小.UI模式.屏幕方向.屏幕布局(另一个屏幕).可用屏幕大小(横纵向).无屏幕 ...
- Apollo代码学习(五)—横纵向控制
Apollo代码学习-横纵向控制 前言 纵向控制 横向控制 前馈控制 注意 反馈控制 总结 补充 2018.11.28 前言 在我的第一篇博文:Apollo代码学习(一)-控制模块概述中,对横纵向控制 ...
- jquery.print.js打印去掉页眉页脚和设置横纵向打印
<style media='print'> @page{ size:portrait;// 或landscape 设置横纵向打印 margin:0mm auto } </styl ...
- 自动驾驶车辆横纵向舒适性浅谈
近期针对横纵向舒适性的实车调试的基本原则作了一些简单的笔记如下:
最新文章
- 素数推断算法(高效率)
- 如何运行Perl和查看帮助
- DOS MD命令三种用法
- 编写原生的Node.js模块
- 样本量过少时,如何科学衡量喜好程度?
- java日期格式精确到分_详解Java日期格式化及其使用例子
- .NET开发框架(八)-服务器集群之网络负载平衡(视频)
- Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞
- 树莓派编译mysql卡死_关于树莓派编译工作空间卡死情况的解决办法
- 血雨腥风43载,苹果帝国背后的5个男人
- javascript使用事件委托
- 提高设计档次的8个方法
- c 普通的文本变成注释文本的快捷键_phpstrom 快捷键,记一下记一下!(life)
- javascript onbeforeunload与onunload事件
- sqli-lab(8)
- 降钙素(Cys(Acm)²·⁷)-α-CGRP (human)、125448-83-1
- 谈业务流程全生命周期管理支撑业务流程再造(3)
- CodeForces 1144D -Equalize Them All
- 小孩几岁学计算机合适,孩子几岁学电脑最合适?
- UVA818解题报告
热门文章
- 解决【不能初始化 Photoshop,因为暂存盘已满】的问题
- 如何给计算机硬盘加密上锁,一招教你如何给磁盘加密,保护自己隐私人人有责!-电脑怎么上锁...
- 洛谷题单【数据结构1-4】图的基本应用
- vue3+axios:图片链接转换成二进制文件流后并提交服务器
- AD软件如何添加SCHLIB和PCBLIB进库/Altium designer添加库文件
- 安卓如何安装linux的iso文件系统,如何使用EasyBCD 2.0引导ISO文件安装系统
- 双网卡 跃点_Windows10下如何提升双网卡提升网速叠加网卡跃点数
- 02.SVN入门笔记——VisualSVN-Server 安装与配置
- # Spring Boot
- win7系统修复exe文件关联