华为云用户手册

  • 回放图层 在回放图层区域,可以选择不同图层,多层次观看3D回放视频。 真值物体:包含选项有真值物体类型及ID、物体模型,可控制真值物体显示或隐藏。 预测算法:可显示或隐藏除主车以外,他车的朝向前的行驶轨迹。 定位算法:可显示或隐藏主车的定位(通过算法计算出的信息)和真值(实际信息)的坐标信息。 规控算法:可显示或隐藏“主车局部规划轨迹”和“主车全局规划轨迹”。 高精地图:显示“路面”、“车道线”、“车道参考线”、“中心车道线”、“交通信号”,可控制对应功能显示或者隐藏。 动态场景:显示场景trigger信息,目前支持设置了Distance,ReachPosition,End Of Road,Collision,OffRoad,Time Head Way,Time To Collision,Acceleration,StandStill,Speed,Relative Speed,Traveled Distance,Relative Distance这几类trigger。地图会以的图标展现,鼠标单击图标时,地图中会出现trigger的详细信息。 当有trigger作用于某个交通参与物时,且该trigger自身没有position。该交通参与物模型上会显示trigger图标。(注:Time To Collision类型的trigger可能包含position信息,但是该position代表目标位置,不是其本身位置,所以此类trigger也会显示在交通参与物上)。 一个trigger作用于多个交通参与物时,涉及到的交通参与物都会带有trigger图标。 一个交通参与物带有多个trigger时,只会显示一个trigger图标,鼠标悬浮上去,会在右上角列出所有trigger的内容。
  • 动作 lane_offset 动作主体:车辆vehicle 结束时间:当动作主体actor 到达目标偏移offset 处时,动作结束. 是否支持modifier:否 参数:参数如下表,支持位置参数和关键字参数.参数target 非必选项,不设置target 时采用绝对偏移,设置target 时采用相对偏移. 表1 lane_offset参数 Parameter Type Mandatory Description offset length yes Signed number in meters the vehicle should respect as an offset from the center of the current lane. rate_peak speed yes Target value for the peak lateral velocity that must be achieved during the action. dynamics_shape dynamics_shape yes Geometrical shape of the LaneOffsetAction's dynamics. target entity no Reference entity. offset值不能超出当前所在lane的宽度范围. 绝对偏移 m_shape: dynamics_shape = step Ego.lane_offset(0.8m, 0.5mps, m_shape) 相对偏移 m_shape: dynamics_shape = linear side_vehicle.lane_offset(offset:1.0m, rate_peak: 1.5mps, dynamics_shape:m_shape, target: Ego) 父主题: 动作 Actions
  • 仿真任务结果 仿真算法的质量由仿真结果呈现,仿真服务模块以自动驾驶过程中关键指标的检测结果为依据对仿真算法进行评测,回放可查看场景,信号查看器是对仿真结果的展示。 仿真任务结果展示可以有以下几种,按钮可单击条件判断为如下:(如果文件不存在,界面会报错提示) 回放按钮:录制模式下即可单击。 算法日志按钮:录制模式下,关联了算法的情况下可单击。 评测日志按钮:录制模式下,关联了自定义评测镜像的情况下可单击。 仿真pb文件按钮:录制模式下可单击。 评测pb文件按钮:任何模式下都可单击。 信号查看器按钮:任何模式下都可单击。 算法pb文件按钮:录制模式下使用使用自定义算法,并开启Datahub才可单击下载。 所有可下载的结果均不建议使用过长场景名称,如果场景名过长,浏览器会有文件名截取行为,具体截取长度因浏览器、操作系统以及文件下载路径不同而有所区别,以实际情况为准。
  • 逻辑场景管理 逻辑场景功能可批量生成仿真场景,扩充仿真场景库,为自动驾驶开发提供海量仿真场景。自定义逻辑场景的可以进行修改、删除操作,并支持仿真器A和仿真器B。创建泛化场景时,由于仿真器A的不同版本之间存在主车id不固定的问题,为了保证规控算法和评测算法能正确判断找到主车,泛化的场景文件的主车名称(name)字段应该为Ego。 逻辑场景中场景是完全独立存储与使用的,在逻辑场景生成的泛化场景非常多,其中有价值的场景比例低,如果存储到场景中会对场景模块造成冲击,当前如果认为逻辑场景中保存的个别场景价值高,可以采用下载场景文件到本地再上传到场景模块的方式保留该逻辑场景。 逻辑场景 泛化场景 父主题: 场景管理
  • 应对对向车辆占道(Encroaching vehicle)检测 在双向车道路上, 会存在主车与对向车辆存在横向冲突的情况, 应对对向车辆冲突行驶检测的目的是判断主车在这种情况下, 能否进行适当的转向和减速避让, 从而保证安全性。 其中主车需要进行避让的前提条件是: 当主车前端与对向行驶的车道纵向距离一定范围内(本设计取10m), 并且主车与对向车辆的横向距离小于两者一半车宽的和。 当满足该条件后, 如果主车没有进行转向避让和减速避让, 则对应的检测不通过。 减速避让检测不通过是指主车的加速度大于0。 其中转向避让检测考虑到中国是靠右行使, 在设计该类测试场景时, 对向车会是在主车的左侧。 转向避让检测不通过是指主车没有向右边转向。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_REGION。 父主题: 内置评测指标说明
  • catalog 目录catalog可使一些元素得以重复使用,在目录catalog中参数化类型是可维护的,并且可以在场景文件中 被引用仿真器A尚未支持使用catalog. catalog list ENUM_CATALOG = ("vehicle_catalog", "controller_catalog", "pedestrian_catalog", "misc_object_catalog") vehicle_catalog:场景中可复用的车辆类型列表. controller_catalog:场景中可复用的控制器类型列表. pedestrian_catalog:场景中可复用的行人类型列表. misc_object_catalog:场景中可复用的杂项对象类型列表. 父主题: Enum Lists
  • 动作 acquire_position 动作主体:车辆vehicle或行人pedestrian 结束时间:当动作主体actor 获取目标位置position 时,动作结束. 是否支持modifier:否 参数表: 参数如下表,pose_3d是point和orientation的组合结构, point可以使用xyz_point或 odr_point或road_point中的任意一个,orientation非必选项. 表1 acquire_position参数 Parameter Type Mandatory Description target pose_3d yes target position. acquire_position与acquire_position_init的使用方法相同,但由于不是初始动作,可以设置触发条件. 仿真器A对于acquire_position_init的支持程度更好,如无需设置触发条件,建议使用acquire_position_init. 仿真器B尚未支持acquire_position动作. 代码样例见acquire_position_init. 父主题: 动作 Actions
  • 套件用例相关操作 在“用例列表”,还可以进行以下操作。 表2 套件用例相关操作 任务 操作步骤 在线查看用例 单击用例列表后的操作栏中的“查看场景”,可选择在线仿真器,在线查看用例。 复用用例 单击操作栏中“另存为”,输入名称,即可生成另一个名称的用例。 删除用例 单击操作栏中“从套件中删除”,删除用例,删除后无法恢复,请谨慎操作。 查询用例 在页面右侧,可按照“用例名称”、“用例ID”查询用例,也可在搜索框中输入搜索内容对用例进行查询。
  • position_3d 定义:笛卡尔(XYZ)坐标系中的三维位置(position). 用途:设置坐标系中的三维位置,用于构成xyz_point. 参数:参数如下表. 表1 position_3d参数 Parameter Type Mandatory Description x length yes position on the x-axis. y length yes position on the y-axis. z length yes position on the z-axis. 代码样例 my_position: position_3d with: keep(it.x == 150.0m) keep(it.y == 200.0m) keep(it.z == 0.0m) 父主题: Struct
  • 场景组成说明 场景文件的主体是一个场景剧本storyboard,用户需要在storyboard前先声明将会使用的路网RoadNetwork、参数Parameter,和实体Entities。然后在Storyboard中通过InitActions对实体进行初始化(给定初始速度和位置)。通过场景故事Story中实体Entities间的一个个动作集Act来展开场景。对于动作集Act 内的每个行为Action,用户还可以通过Wait设置一个或多个触发条件。
  • 场景文件结构 场景文件结构样例 OpenSCENARIO2.0 ├─ RoadNetwork │ ├─ LogicFile │ └─ SceneGraphFile (0..1) ├─ ParameterDeclarations (0..1) ├─ Entities │ └─ Entity (1+) └─ Storyboard ├─ StopTrigger ├─ InitActions │ ├─ AssignInitSpeedAction │ └─ AssignInitPositionAction └─ Story └─ Act (1+) ├─ StartTrigger (Wait) │ └─ ConditionGroup │ └─ Condition (1+) └─ Action
  • 预警系统激活(Warning)检测 预警系统激活用于评价算法是否激活以下五项预警功能: 盲区预警 前方碰撞预警 车道偏离预警 泊车碰撞预警 后方横向车流预警 当算法pb中检测到预警项且状态为STATE_ACTIVE,则视该预警为激活态,否则为非激活态;当预警状态从非激活态转变为激活态,视为激活一次; 有些场景本身不需要激活预警:例如当一个场景中主车未泊车时,不需要激活泊车碰撞预警,此时如果激活预警反而说明主车算法出错;也有一些场景需要特定次数的激活预警:例如当一个场景中主车驾驶过程中会碰到n个盲区,此时必须正好激活n次才能证明主车算法通过;因此我们支持让用户设置各项子指标是否需要预警和期望的预警次数; 默认期望的预警次数为-1,此时只要该预警功能激活至少一次,则评测项通过;当设置期望的预警次数为正数或0时(0代表期望预警功能不被激活),只有当预警功能激活次数和期望预警次数相同时,评测项才通过; 该指标仅对有算法pb的场景有效。当算法pb中未设置预警项,或预警项状态皆为STATE_UNKNOWN时,该指标也视为无效; 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_ALL。 父主题: 内置评测指标说明
  • odr_point 定义:ASAM OpenDRIVE坐标系中的位置点(point). 用途:设置实体位置,用于构成pose_3d. 参数:参数如下表. 表1 odr_point参数 Parameter Type Mandatory Description road_id string yes ASAM OpenDRIVE identifier for the road lane_id string yes ASAM OpenDRIVE identifier for the lane s length yes Coordinate along the ASAM OpenDRIVE s-axis t length yes Coordinate along the ASAM OpenDRIVE t-axis, the t-coordinate is measured from the lane centerline keep创建 my_odr: odr_point with: keep(it.road_id == '1') keep(it.lane_id == '-2') keep(it.s == 3.0m) keep(it.t == 0.0m) create创建 my_odr: odr_point = map.create_odr_point(road_id: '1',lane_id:'-2',s: 3.0m, t: 0.0m) 父主题: Struct
  • 换道(Lane Change)检测 换道检测的目的是判断主车在换道过程中的换道持续时间以及换道时的侧向加速度是否合理。 换道是指当主车所在的road id保持不变, 在某一时刻,其lane id发生变化, 在该时刻的前后一段时间内主车处于换道过程。 对于判定换道时的侧向加速度是否合理, 本设计考虑换道时刻的前后2s的时间段内的侧向加速度是否太大, 对于侧向加速度大于一定阈值(可用户自定义,本设计取2m/s2), 则换道时的侧向加速度检测不通过。 对于判断换道持续时间是否合理, 本设计以主车相对车道中心线的偏离横摆角作为换道开始和结束的判定标记, 在换道时刻之前的第一个偏离横摆角小于0.03rad的时间点为换道开始点, 在换道时刻之后第一个偏离横摆角小于0.03rad的时间点为换道结束点。 换道开始点到换道结束点的时间长度作为换道持续时间, 当换道持续时间小于某一阈值(可用户自定义,本设计取1.5s)时, 或换道时间大于某一阈值(可用户自定义,本设计取6s)时, 换道持续时间检测不通过。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • 评分方案介绍 Octopus评测指标共有30多项大类指标,当规控算法未通过某些评测指标后,评测分数应能反映算法的性能表现。 本设计根据指标的重要程度将其分为三大类: 主要指标(以下简称A类)。 次要指标(以下简称B类)。 未定义重要度指标(以下简称C类)。 本设计提供如下三种内置的评分方案: AB类log函数评分。 AB类均匀权重评分。 C类均匀权重评分。 接下来对三种评分方案进行详细介绍。 父主题: 评测分数计算介绍
  • 逻辑场景库相关操作 在“逻辑场景库”页签,还可进行以下操作。 表1 逻辑场景库相关操作 任务 操作步骤 查看逻辑场景库信息 单击左侧逻辑场景库名称,查看右侧该场景库信息以及场景库包含场景信息。 场景库信息:场景库名称、创建人、描述和创建时间等信息。 场景列表:该逻辑场景库中包含的所有场景。逻辑场景的具体操作请参考逻辑场景管理。 修改逻辑场景库信息/逻辑场景库分类信息 单击场景库名称或场景库分类后的,修改逻辑场景库或场景库分类的信息。 删除逻辑场景库/逻辑场景库分类 单击场景库名称或场景库分类后的,删除指定逻辑场景库或场景库分类。 查询逻辑场景 根据“逻辑场景名称”或“创建人”,输入搜索条件,查询逻辑场景列表中的场景。
  • ALKS样例 根据官方提供的ALKS样例,提供了一些osc2.0的场景(osc文件)及其适用于仿真器A的转化结果(xosc文件)。考虑到仿真器A的支持程度,建议在转换时选择osc1.0版本. FreeDriving FullyBlockingTarget PartiallyBlockingTarget FollowLeadVehicleEmergencyBrake CutInNoCollision CutInUnavoidableCollision CutOutFullyBlocking CutOutMultipleBlockingTargets ForwardDetectionRange 逻辑场景(以CutOutMultipleBlockingTargets为例) 父主题: 附录 Appendix
  • 修饰器 lane 用途:设定动作主体actor 所处的车道.可以修饰初始动作assign_init_position. 参数: 表1 lane参数 Parameter Type Mandatory Description lane int no Relative value of the target lane_id. same_as entity no Option to specify that the vehicle must be in the same lane as the referenced vehicle. side_of entity no Option to specify that the vehicle must be in another lane than the referenced vehicle. side side_left_right no Depending on the value the actor shall be on the right or left side of the referenced entity. How many lanes right or left of that entity is specified by the lane-parameter. offset length no Lateral offset to the target lane. side_of和same_as必须设置且仅设置一个. 使用side_of来设置车道时,必须同时使用lane和side. 使用lane+side_of m_left: side_left_right = left cut_in_vehicle.assign_init_position() with: lane(lane: 1, side_of: Ego, side: m_left) position(distance: 85.0m, behind: ego) 使用same_as m_left: side_left_right = left cut_in_vehicle.assign_init_position() with: lane(same_as: Ego) position(distance: 85.0m, behind: ego) 父主题: 修饰器 Modifiers
  • 使用规范 在线仿真服务集成了一整套完整的仿真工具链,开箱即用。 在使用新的普通用户登录在线仿真时,需修改在线仿真系统配置: 关闭桌面锁屏。 调整屏幕分辨率(默认分辨率不高,可调至适合的分辨率)。 将默认的浏览器更改为Chrome或Firefox。 在线仿真根据用户名称生成系统进程,Linux中不合法的用户名称登录在线仿真会出现异常,合法的用户名称限制如下: 只能包含小写字母、数字、下划线、中划线 。不得超过31个字符。 只能以字母和下划线开头。不可包括连续的下划线和中划线。不可包含linux的关键字或保留字。 目前在线仿真为独占式,同一台在线仿真器同一时间只允许一个用户使用,待用户释放后,才可供其他用户使用。
  • 跟车起停(Stop and Go)检测 跟车起停检测的目的是判断主车跟随前车停车后能否在前车启动后重新启动。 当主车跟随前车制动停止后, 前车重新启动后, 主车重新启动的时间要合适, 该时间允许用户自定义, 本设计默认取3s。 当重新启动时间大于指定阈值时, 则跟车起停检测不通过。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_REGION。 父主题: 内置评测指标说明
  • dynamics_shape 表示给定变量随时间或距离的变化.用于动作change_speed, change_lane. dynamics_shape list ENUM_DYNAMICS_SHAPE = ("linear", "cubic", "sinusoidal", "step") linear:变化曲线是一个线性linear 函数f(x) = f_0 +变化速率*x. cubic:变化曲线是一个三次变迁Cubical transition 函数f(x)=Ax3+B*x2+Cx+D,约束梯度在开始和结束时必须为零. sinusoidal:变化曲线是一个正弦变迁Sinusoidal transition 函数 f(x)=A*正弦(x)+B,约束梯度在开始和结束时必须为零. step:变化曲线是一个阶段变迁Step transition 函数 父主题: Enum Lists
  • split 简述:地图场景为匝道分流.lead_vehicle和主车Ego在主道的同一车道上分别以35kph和Ego_InitSpeed_Ve0的初始速度一前一后行驶,Ego设定了目标在匝道上的目标点Target_position,仿真开始后激活Ego控制器(控制器会影响Ego去往Target_position的寻路算法,但目前仿真器B尚不支持寻路动作acquire_position).控制器有时会根据lead_vehicle的位置更改主车Ego的速度. 使用xyz坐标创建终点时,由于匝道地图泛化会使终点偏移,建议在创建测评任务时为检测终点设置合适的的半径,例如"到达半径5m". 地图文件(odr) scenario Split: m_scene: scenery lane_width: length = [3m..4m] main_speed: speed = 120kph ramp_speed: speed = 60kph ramp_length: length = [300m..350m] road_aids_type: road_aids_type = "DType-2" split_1: split with: keep(it.lane_width == lane_width) keep(it.left_lane_num == 0) keep(it.right_lane_num == 3) keep(it.ramp_lane_num == 1) keep(it.main_speed == main_speed) keep(it.ramp_speed == ramp_speed) keep(it.radius_of_curvature == 200m) keep(it.ramp_length == ramp_length) keep(it.road_aids_type == road_aids_type) 场景文件(osc) import standard scenario Split: # map map: map map.set_map_file("./split.odr") # parameter Ego_InitSpeed_Ve0: speed = [90kph..110kph] Ego_InitPosition_LaneId: string = ['-1', '-2'] Ego_InitPosition_s: length = [0m..100m] Ego_Odr: odr_point = map.create_odr_point(road_id: '10', lane_id: Ego_InitPosition_LaneId, s: Ego_InitPosition_s, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == Ego_Odr) m_InitDistance: length = [60m..100m] Target_xyz: xyz_point = map.create_xyz_point(x: 445m, y: -46.5m ,z: 0.0m) Target_position: pose_3d with: keep(it.xyz_point == Target_xyz) Duration: time = 100s # entity Ego: vehicle with: keep(it.name == "Saimo") keep(it.initial_bm == "默认驾驶员") lead_vehicle: vehicle with: keep(it.name == "Saimo") keep(it.initial_bm == "默认驾驶员") # storyboard do parallel(duration: Duration): # init Ego.assign_init_position(position: Ego_InitPosition) Ego.assign_init_speed(Ego_InitSpeed_Ve0) lead_vehicle.assign_init_position() with: lane(same_as: Ego) position(distance: m_InitDistance, ahead_of: Ego) lead_vehicle.assign_init_speed(35kph) Ego.activate_controller(true, true) Ego.acquire_position(target: Target_position) 父主题: 种子地图的逻辑场景样例(仿真器B)
  • eva.proto的关键字段解释 在利用Octopus仿真平台进行批量仿真时,每个场景都会有一个评测结果,单个场景的评测结果全部保存在如数据类图所示的Evaluation类中。 Evaluation类包含以下的7个字段。 表1 Evaluation类包含的字段 字段 说明 version 用于表示当前Octopus_eva.proto的版本。 score 用户保存批量仿真中单个场景下评测算法计算出的评测得分,Octopus的评分取值为[0, 100]。 avg_speed 单个场景下自动驾驶算法控制下主车的平均车速,单位m/s。 distance 单个场景下自动驾驶算法控制下主车的行驶里程,单位m。 vis 主车关键状态量的(如速度、加速度)的时间序列数据,用于前端进行可视化曲线展示。 metrics Octopus内置了一批大类评测指标,并且每个大类评测指标下会多个子类指标。 该字段用于保存每个大类和子类评测指标的通过/未通过/无效的结果状态。 其中无效状态表示该指标在特定场景下是没意义的,如在没有交通灯的场景下,主车在交通灯前的行为检测是没有意义的。 source 是一个Source枚举类型,表示该评测算法的结果来源类型。 source共有6种类型,具体参考source。 表2 source 字段 说明 SOURCE_UNSPECIFIED 表示评测算法类型未定义。 SOURCE_CUSTOMIZED_REALTIME 用户自定义实时评测算法结果。 SOURCE_CUSTOMIZED_OFFLINE 用户自定义延时评测算法结果。 SOURCE_DEFAULT_REALTIME 八爪鱼内置实时评测算法结果。 SOURCE_DEFAULT_OFFLINE 八爪鱼内置延时评测结果。 SOURCE_MERGED 融合后的评测结果。 Evaluation中两个比较关键且复杂的字段是vis和metrics,其中vis字段类型是Visualization,metrics字段的类型是repeated Metric。 Visualization和Metric的成员组成如上数据类图所示,各个关键成员的含义如下所示。 Visualization类型包含的各个字段及其含义如下所示。 表3 Visualization类型字段 字段 说明 sim_times 仿真过程的时间序列点,以仿真开始时刻(t0)为0点,相邻时刻的时间间隔为仿真器的周期,单位为秒(s)。 frame_nums 每个仿真时刻对应的数据帧数,表明这是第几帧的数据。 stats 统计类型的数据值,是指某数据在一段时间内统计值才有展示分析的意义,如加速度均方根值(arms),随着仿真时刻不断后移,需要不断计算初始时刻(t0)到当前仿真时刻(t)的arms值。 stats字段的类型是Statistic,Statistic类型的成员具体参考stats。 vector 向量类型的数据值,是指每个时刻都会有一个对应的数据值,如加速度、速度等物理量。 vector字段的类型是Vector,Vector类型的成员具体参考vector。 表4 stats 字段 说明 type 是一个Type的枚举类型,表示该数据是哪种Octopus内置的Statistic类型。 value 该数据在每个仿真时刻对应的数值。 diplay_name 存储用户自定义的Statistic类型名称,用户自定义的数据无需对type赋值。 source 表示该数据的评测结果来源类型。 importance 表示该数据是重要类型还是次要类型。 module 表示该数据是来源于哪个算法模块。 performance 表示该数据是表示的哪个类别的算法性能。 表5 vector 字段 说明 type 是一个Type的枚举类型,表示该数据是哪种Octopus内置的Vector类型。 value 该数据在每个仿真时刻对应的数值。 diplay_name 存储用户自定义的Vector类型名称,用户自定义的数据无需对type赋值。 source 表示该数据的评测结果来源类型。 importance 表示该数据是重要类型还是次要类型。 module 表示该数据是来源于哪个算法模块。 performance 表示该数据是表示的哪个类别的算法性能。 Metric类型包含的各个字段及其含义如下所示。 表6 Metric类型字段 字段 说明 type 是一个Enum类型,表示该数据是哪种Octopus内置的大类指标类型。 status 是一个Result的枚举类型,用于表示该大类指标的评测结果。 其中Result有三种类型,分别为: RESULT_UNSPECIFIED:该状态的结果表示评测指标是无效的,如对于红绿灯检测指标,如果仿真完成后评测函数发现场景中不存在红绿灯,则该项指标的评测是没有意义的,故评测结果展示为无效。 RESULT_PASSED: 该状态的结果表示评测结果为通过。 RESULT_FAILED:该状态的结果表示评测结果为未通过。 anomalies 用于保存每个大类指标下对应的子类指标发生异常的时间点,其数据类型为repeated Anomaly,其中Anomaly类型成员如下所示: status: 是一个Result类型,与上述大类指标的status的表示相同,该字段用于存储子类指标的三种不同状态结果。 subtype:是一个Subtype的枚举类型,表示该子类指标是哪种Octopus内置的子类指标类型。 其中,对于某些没有子类指标的大类指标来说,其subtype赋值为SUBTYPE_UNSPECIFIED。 point_type:是一个PointType的枚举类型,表示该子类指标发生特殊状态(一般是指发生异常)时的时刻点用哪种形式存储起来。 其中PointType共有5种类型,参考PointType。 Points:是repeated float类型,保存每个子类指标发生特殊状态的具体时间点的值。 Stats_indices:是repeated ui32类型,表示该子指标关联的统计类数值列表。 Vector_indices:是repeated ui32类型,表示该子指标关联的时间序列数值列表。 display_name 存储用户自定义的Anomaly类型名称,表示其自定义的子类指标,用户自定义的数据无需对sub_type赋值。 importance 表示该指标的重要程度。具体参考importance。 source 表示该数据的评测结果来源类型。 module 表示该数据是来源于哪个算法模块。具体参考module。 performance 表示该数据是表示的哪个类别的算法性能。具体参考performance。 表7 PointType 字段 说明 POINT_TYPE_UNSPECIFIED 未定义的类型,遵循proto定义格式,Octopus未使用该类型,用户可根据需要对该类型赋予特定含义。 POINT_TYPE_POINT 表示该子类指标的异常时间点是离散的时间点形式,在任何时刻都可能发生异常。 POINT_TYPE_REGION 表示该子类指标的异常时间点是区间形式,一旦在某个时刻开始发生异常,则在随后一段时间内都会处于异常状态。 POINT_TYPE_ALL 表示该类指标的异常时间点是布尔形式的,从仿真开始到当前时刻的状态要么是完全通过,要么全过程都是异常的,统计类型的指标需要以这种形式表示。 POINT_TYPE_NORMAL 该类型与其他类型相反,如果该类型的点存在,则表示对应的子类指标是通过的,Octopus用该类型保存主车到达终点的时间值。 表8 importance 字段 取值 说明 CATEGORY_UNSPECIFIED 0 未定义 CATEGORY_MAJOR 1 主要 CATEGORY_MINOR 2 次要 表9 module 字段 取值 说明 MODULE_UNSPECIFIED 0 未定义 MODULE_NAVIGATION 1 导航 MODULE_LOCATION 2 定位 MODULE_PERCEPTION 3 感知 MODULE_PREDICTION 4 预测 MODULE_DECISION 5 决策 MODULE_PLANNING 6 规划 MODULE_CONTROL 7 控制 MODULE_WHOLE 8 整车 表10 performance 字段 取值 说明 PERFORMANCE_UNSPECIFIED 0 未定义 PERFORMANCE_SAFETY 1 安全性 PERFORMANCE_REGULATION 2 合规性 PERFORMANCE_COMFORT 3 舒适性 PERFORMANCE_INTELLIGENCE 4 智能型
  • 背景 Octopus内置一套评测算法,用于对自动驾驶系统的性能表现进行多维度评测。内置评测算法的评测结果按照eva.proto中的定义,序列化成pb文件保存起来。 Octopus仿真平台的前端通过解析评测pb对评测结果进行展示,目前前端展示主要分为两大方面: 各个评测指标的通过/未通过/无效的结果展示。 仿真过程中关键数据的时间序列曲线图展示。 另外,对于用户自研的评测算法的评测结果,也可以按照eva.proto,序列化成pb文件保存起来,这样Octopus的仿真平台前端能够展示用户自研评测算法的评测结果。
  • 指示标志牌前行为(Mandatory Sign)检测 指示标志牌前行为检测的目的是判断主车在这些指示标志牌前的行为是否合理,本设计考虑的指示标志牌有: 左转指示牌 右转指示牌 直行指示牌 左转直行指示牌 右转直行指示牌 左转右转指示牌 靠左行驶指示牌 靠右行驶指示牌 当主车前端超过左转指示牌, 并且主车不存在左转行为, 则左转指示牌前行为检测不通过。 当主车前端超过右转指示牌, 并且主车不存在右转行为, 则右转指示牌前行为检测不通过。 当主车前端超过直行指示牌, 并且主车不存在直行行为, 则直行指示牌前行为检测不通过。 当主车前端超过左转直行指示牌, 并且主车不存在左转直行行为, 则左转直行指示牌前行为检测不通过。 当主车前端超过右转直行指示牌, 并且主车不存在右转直行行为, 则右转直行指示牌前行为检测不通过。 当主车前端超过左转右转指示牌, 并且主车不存在左转右转行为, 则左转右转指示牌前行为检测不通过。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_REGION。 父主题: 内置评测指标说明
  • 场景库相关操作 在“场景库”页签,可对场景库进行以下操作。 表1 场景库相关操作 任务 操作步骤 查看场景库信息 单击左侧场景库名称,查看右侧该场景库信息以及场景库包含场景信息。 场景库信息:场景库名称、创建人、仿真器、描述、关联仿真任务数和创建时间等信息。 场景列表:该场景库中包含的所有场景。场景的具体操作请参考场景管理。 修改场景库信息/场景库分类信息 单击场景库名称或场景库分类后的,修改场景库或场景库分类的信息。 删除场景库/场景库分类 单击场景库名称或场景库分类后的,删除指定场景库或场景库分类。 查询场景 根据“场景名称”或“创建人”,输入搜索条件,查询场景列表中的场景。
  • 任务配置相关操作 在“任务配置”列表,可对仿真任务配置进行以下操作。 表3 任务配置相关操作 任务 操作步骤 查看算法详情 单击该任务配置所使用的算法名称,即可查看算法详情。无算法接入时页面显示“--”,使用仿真器自带的驾驶员模型控制主车。 查看评测详情 单击该任务配置所使用的评测名称,即可查看评测详情。 查看任务配置详情 单击任务配置名称,可查看任务配置详情。 图6 任务配置详情 查询任务配置 可按照"任务配置ID"、"任务配置名称"、"算法名称"、"评测名称"、"任务配置描述"查询任务配置。 删除任务配置 单击操作栏“ 删除”,删除该任务配置。删除后不可恢复,请谨慎操作。 编辑任务配置 单击操作栏“编辑”,以修改任务配置名称和描述信息。
  • distance_mode 用于触发条件object_distance和point_distance. distance_mode list ENUM_DISTANCE_MODE = ("reference_points", "bounding_boxes") reference_points:测量参考点之间的距离. bounding_boxes:测量边界框之间的距离. 父主题: Enum Lists
  • 动作 Actions 用户首先使用初始动作InitActions 来初始化实体entities ,接着使用其他动作Actions 展开实体entities 的场景故事story . 初始动作 assign_init_speed 初始动作 assign_init_position 初始动作 acquire_position_init 动作 change_speed 动作 change_lane 动作 activate_controller 动作 lane_offset 动作 acquire_position 父主题: 代码样例 Code Examples
  • 基于样例的拓展 本章的场景样例可以结合第一章介绍的各模块代码样例进行修改和拓展.以straigh场景的osc为例,设定初始位置时,除了使用st坐标系(odr_point,即osc1.0中的LanePosition)还可以使用xyz坐标系(xyz_point,即osc1.0中的WorldPosition)来替代: st坐标系(odr_point)写法: Ego_InitPosition_LaneId: string = ['-1', '-2'] Ego_InitPosition_s: length = [0m..30m] Ego_Odr: odr_point = map.create_odr_point(road_id: '10', lane_id: Ego_InitPosition_LaneId, s: Ego_InitPosition_s, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == Ego_Odr) 对应xyz坐标系(xyz_point)写法,其中y值-1.5m和-4.5m分别对应车道宽度为3m时的'-1'和'-2'车道的中心位置: y: length = [-1.5m, -4.5m] x: length = [0m..30m] Ego_xyz: xyz_point = map.create_xyz_point(x: x, y: y, z: 0.0m) Ego_InitPosition: pose_3d with: keep(it.xyz_point == Ego_xyz) 以上对等替换仅存在于odr_point的road_id固定的情形,当road_id(仿真器A中的TrackId)是一个可泛化的值时,起点可以出现在多条道路上,对应多段x和y值的组合区间,无法使用一个xyz_point直接对等泛化.此时可以使用多个动态场景来实现同等的泛化,例如: 假设地图上存在多条road,且对odr_point的road_id进行了泛化: Ego_InitPosition_Road_id: string = ['10', '1'] Ego_InitPosition_LaneId: string = ['-1', '-2'] Ego_InitPosition_s: length = [0m..30m] Ego_Odr: odr_point = map.create_odr_point(road_id: Ego_InitPosition_Road_id, lane_id: Ego_InitPosition_LaneId, s: Ego_InitPosition_s, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == Ego_Odr) 可以在两个动态场景文件中分别使用一组xyz_point来替代,例如: 第一组对应road_id为'10'的情况(同前例): y: length = [-1.5m, -4.5m] x: length = [0m..30m] Ego_xyz: xyz_point = map.create_xyz_point(x: x, y: y, z: 0.0m) Ego_InitPosition: pose_3d with: keep(it.xyz_point == Ego_xyz) 第二组对应road_id为'1'的情况,该道路与road_id为'10'的道路垂直,x值的101.5m和104.5m分别对应车道宽度为3m时的'-1'和'-2'车道的中心位置: y: length = [-40m..-10m] x: length = [101.5m, 104.5m] Ego_xyz: xyz_point = map.create_xyz_point(x: x, y: y, z: 0.0m) Ego_InitPosition: pose_3d with: keep(it.xyz_point == Ego_xyz) 父主题: 种子地图的逻辑场景样例(仿真器A)
共100000条