华为云用户手册

  • junction 简述:地图场景为交叉口.lead_vehicle和主车Ego一前一后分别以LeadVehicle_TargetSpeed_Ve0和Ego_TargetSpeed_Ve0的初始速度向交叉口行驶,Ego设定了目标在右转车道上的目标点Target_position,仿真开始后激活Ego控制器(控制器会影响Ego去往Target_position的寻路算法,但目前仿真器B尚不支持寻路动作acquire_position).另一路段上有一辆车vehicle1,也以LeadVehicle_TargetSpeed_Ve0的速度朝交叉口行驶..控制器有时会根据环境车的位置更改主车Ego的速度. 地图文件(odr) scenario Junction: m_scene: scenery lane_num: int = [2, 3, 4] bikeway: bool = false sidewalk: bool = false junction_type: junction_type = ["crossroad", "T-junction"] junction_1: junction with: keep(it.lane_num == lane_num) keep(it.bikeway == bikeway) keep(it.sidewalk == sidewalk) keep(it.junction_type == junction_type) 场景文件(osc) import standard scenario Junction: # map map: map map.set_map_file("./junction.odr") # parameter Ego_TargetSpeed_Ve0: speed = [50kph..60kph] Ego_InitPosition_RoadId: string = '1' Ego_InitPosition_LaneId: string = ['-1', '-2'] Ego_InitPosition_s: length = [0m..100m] Ego_Odr: odr_point = map.create_odr_point(road_id: Ego_InitPosition_RoadId, lane_id: Ego_InitPosition_LaneId, s: Ego_InitPosition_s, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == Ego_Odr) Target_xyz: xyz_point = map.create_xyz_point(x: 225m, y: -100m ,z: 0.0m) Target_position: pose_3d with: keep(it.xyz_point == Target_xyz) LeadVehicle_TargetSpeed_Ve0: speed = 45kph Vehicle1_Odr: odr_point = map.create_odr_point(road_id: '2', lane_id: '2', s: 100.0m, t: 0.0m) m_orientation: orientation_3d with: keep(it.roll == 0.0rad) keep(it.pitch == 0.0rad) keep(it.yaw == -1.57rad) Vehicle1_InitPosition: pose_3d with: keep(it.odr_point == Vehicle1_Odr) keep(it.orientation == m_orientation) m_profile: dynamics_shape = [sinusoidal, linear, step] m_rate_peak: acceleration = [5kmphps, 10kmphps] Duration: time = [100s, 120s] # entity Ego: vehicle with: keep(it.name == "Saimo") keep(it.initial_bm == "默认驾驶员") lead_vehicle: vehicle with: keep(it.name == "Saimo") keep(it.initial_bm == "默认驾驶员") vehicle1: 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_TargetSpeed_Ve0) lead_vehicle.assign_init_position() with: lane(same_as: Ego) position(distance: 30.0m, ahead_of: Ego) lead_vehicle.assign_init_speed(LeadVehicle_TargetSpeed_Ve0) vehicle1.assign_init_position(position: Vehicle1_InitPosition) vehicle1.assign_init_speed(LeadVehicle_TargetSpeed_Ve0) Ego.activate_controller(true, true) Ego.acquire_position(target: Target_position) 父主题: 种子地图的逻辑场景样例(仿真器B)
  • 具体场景 Concrete scenario 具体场景的参数声明支持基础类型、标量(scalar)类型、枚举(enum)类型,和 结构(struct)类型: 基础类型包含int、float、bool,和string类型.可以直接在等号后赋值. scalar类型包含speed、acceleration、length、time,和angle类型.赋值时需要在值后 加上OSC2.0支持的单位(见附录Scalar units). enum类型包含side_left_right、distance_direction、distance_mode、 lane_change_side、 dynamics_shape,和 catalog.赋值时必须使用枚举列表内的值(见附录Enum list) . struct类型包含odr_point、xyz_point、position_3d、road_point、orientation_3d和pose_3d等,可以使用 keep创建.此外,odr_point、xyz_point,和road_point分别可以使用map的成员函数 create_odr_point 、 create_xyz_point 和create_road_point 来创建(OSC2.0支持的struct类型详见附录Struct). 给bool型赋值时必须使用'true'和'false',如果使用'True'或'False'或拼写错误将使语句无效. 例1:基础类型 m_road_id: string = '0' Ego_name: string = "Audi_A3_2009_black" m_lateral: bool = true 例2:scalar类型 v: speed = 5mps delay: time = 40s distance: length = 30.0m m_a: acceleration = 0.01mpss 例3:enum类型 m_side: side_left_right = right m_direction: distance_direction = longitudinal 例4:struct类型,keep创建 my_odr: odr_point with: keep(it.road_id == 0) keep(it.lane_id == -1) keep(it.s == 3.0m) keep(it.t == 0.0m) my_pos: position_3d with: keep(it.x == 1.0m) keep(it.y == 2.0m) keep(it.z == 3.0m) my_xyz: xyz_point with: keep(it.position == my_pos) my_road: road_point with: keep(it.road_id == '1') keep(it.s == 3.0m) keep(it.t == 0.0m) my_orientation: orientation_3d with: keep(it.roll == 1.0rad) keep(it.pitch == 2.0rad) keep(it.yaw == 3.0rad) my_pose: pose_3d with: keep(it.xyz_point == my_xyz) keep(it.orientation == m_orientation) m_trajectory: trajectory with: keep(it.points == [my_pose1, my_pose2, my_pose3]) keep(it.time_stamps == [0s, 5s, 20s] ) 例5:struct类型,map创建 my_odr: odr_point = map.create_odr_point(road_id: m_road_id,lane_id:'-4',s: 5.0m, t: 0.0m) my_xyz: xyz_point = map.create_xyz_point(x: 2.5m, y: 10.0m ,z: 0.0m) my_point: road_point = map.create_road_point(road_id: '1', s: 5.0m, t: 0.0m) 父主题: 参数声明 Parameter Declarations
  • 创建镜像仓库 用平台管理员账号登录Octopus平台。 在左侧菜单栏中,单击“镜像仓库 ”。 单击“新建”,填写基本信息。 图1 创建镜像仓库 名称:输入镜像仓库的名称,只能包含数字、英文、中文、下划线、中划线。 用途:根据需求,下拉框选择用途。 描述:简单描述镜像仓库,最大长度为255。 使用范围:仅支持团队,即租户内所有配置了该镜像相关权限的用户都可见可编辑。 单击“确定”,在镜像仓库列表即可查看新建的镜像仓库。
  • 静态场景样例 下文提供keep创建和create创建两种写法. 声明所有要泛化的变量,即为本例中第2-4行. 关键字merge 说明是匝道合流的种子场景,即为本例中的第6行. 明确本场景中所有参数的具体值,即为本例中的第7行到最后. scenario HighwayMerge: lane_width: length = [3m, 4m] left_lane_num: int = [0] ramp_length: length = [200m, 500m] road_aids_type: road_aids_type == "DType-1" merge_1: merge with: keep(it.lane_width == lane_width) keep(it.left_lane_num == left_lane_num) keep(it.right_lane_num == 2) keep(it.ramp_lane_num == 1) keep(it.main_speed == 120kph) keep(it.ramp_speed == 60kph) keep(it.radius_of_curvature == 200m) keep(it.ramp_length == ramp_length) keep(it.road_aids_type == road_aids_type) 声明本场景为静态场景,即为本例中第2行. 声明所有要泛化的变量,即为本例中第4行. create_merge说明是匝道合流的种子场景,即为本例中的第6行. 函数create_merge的入参即指定本场景中的所有参数具体值,即为本例中的第6-7行. scenario Merge: m_scene: scenery lane_width: length = [3m, 4m] my_road_aids_type: road_aids_type == "DType-1" m_straight: merge = m_scene.create_merge(lane_width: lane_width, left_lane_num: 0, right_lane_num: 2, main_speed: 120kph, ramp_speed: 60kph, radius_of_curvature: 200m, ramp_length: 300m, ramp_lane_num: 1, road_aids_type: my_road_aids_type) 父主题: 静态场景(地图)
  • 乘员舒适性(Driving Comfort)检测 乘员舒适性检测关注的是自动驾驶车辆行使过程中,驾驶员感受到的舒适程度。 舒适程度通常可以利用整个行使过程中的速度方差来进行客观反映,而变异系数是可以对不同速度区间舒适程度进行比较。 变异系数的公式如下所示。 表示变异系数,表示标准差,表示均值。 本设计当主车速度的变异系数大于0.15时,判定乘员舒适性检测不通过。 该指标关联的内置可视化时间序列数据为:speedX。 该指标的异常时间点记录类型为:POINT_TYPE_ALL。 父主题: 内置评测指标说明
  • 礼让行人(Polite To Pedestrian)检测 礼让行人检测的目的是判断当行人横穿马路时, 主车是否有礼让行为。 具体的礼让行为包括在行人横穿马路过程中, 进行停车已经停车距离要合适, 并且当行人离开车道后, 主车重新启动时间要合适。 其中停车距离允许用户自定义,本设计取主车前端距离行人最小距离min不低于1m,距离行人最大距离max不高于5m。 是否礼让通过判断车辆前端纵向距离行人低于min/2,速度是否大于0时,如果速度大于0,则没有进行礼让。 重新启动时间同样允许用户自定义,本设计去的默认最长重新启动时间为3s。 当主车行为不满足对应的条件时,则行人横穿马路礼让检测不通过。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • 初始动作 assign_init_position 动作主体:车辆vehicle 或行人pedestrian . 结束时间:当动作主体actor 到达指定的位置坐标时,动作结束. 是否支持modifier:是 参数:参数如下表. 表1 assign_init_position参数 Parameter Type Mandatory Description position pose_3d no Desired position assigned by the user. assign_init_position支持设置绝对位置和相对位置,设置相对位置时使用 修饰器position和修饰器lane来给出相对值. 当初始位置需要车辆转换朝向时,通过设置pose_3d的orientation来设定朝向,以与所在车道朝向一致,例如车辆所在车道和road0呈90°夹角时,设置orientation的yaw为1.57rad,否则车辆启动后会有转向行为,影响场景的正常执行. 设置初始位置时所采用的地图元素必须是对应的地图中有的元素,比如设置绝对位置create_odr_point('0', '-4', 5.0m, 0.0m)时,地图上必须有id为'0'的road,该road上必须有lane_id为 '-4'的lane,该lane至少有5.0m以上的长度.如果设置的初始位置找不到地图中的对应元素,将泛化出无效的场景. 绝对位置 m_odr: odr_point = map.create_odr_point('0', '-4', 5.0m, 0.0m) m_orientation: orientation_3d with: keep(it.roll == 0.0rad) keep(it.pitch == 0.0rad) keep(it.yaw == 1.57rad) init_position: pose_3d with: keep(it.odr_point == m_odr) keep(it.orientation == m_orientation) Ego.assign_init_position(position: init_position) 相对位置 cut_in_vehicle.assign_init_position() with: lane(lane: raletive_lane_id, side_of: Ego, side: left) position(distance: 85.0m, behind: Ego) 父主题: 动作 Actions
  • 平顺性(Ride Comfort)检测 平顺性检测通常指汽车的垂向平顺性。平顺性用加速度均方根值来衡量。 加速度均方根值计算公式如下所示。 表示变量的均方根值,表示第个值,表示值的个数。 汽车的垂向平顺性是由悬架系统决定的,自动驾驶算法对垂向平顺性几乎没有影响,其影响的是车辆的纵向和侧向平顺性。 因此,本设计平顺性检测从纵向平顺性和侧向平顺性进行考量。 平顺性检测考虑的是整个仿真时间段的加速度均方根值。当纵向或侧向加速度均方根值大于,则认为对应的纵向/侧向平顺性检测不通过。 纵向平顺性关联的内置可视化时间序列数据为:accX。横向平顺性关联的内置可视化时间序列数据为:accY。 该指标的异常时间点记录类型为:POINT_TYPE_ALL。 父主题: 内置评测指标说明
  • 执行顺序 Execution sequence OSC2.0场景剧本StoryBoard 通过执行顺序Execution Sequence 和触发器Trigger 来支持用户 设计各种场景.StoryBoard 中有parallel 和serial 两种执行指令,最外层执行指令之前需要加上do 来 使场景剧本生效.其中: parallel :同步执行下方代码块内的动作action . serial :依次执行下方代码块内的动作act . 例如下方样例中, do parallel: 下的assign_init_speed , assign_init_position 和wait elapsed(10s) 是同步执行的.而serial: 下的lead_vehicle.change_speed 在Ego.activate_controller 完成之后执行. 由于初始动作InitAction内的action同步执行,且InitAction与story之间不涉及顺序 执行,建议场景最外层统一使用parallel. 样例 m_profile: dynamics_shape = linear do parallel: # InitAction Ego.assign_init_speed(15mps) Ego.assign_init_position(position: Ego_InitPosition) # Story serial: # act1 Ego.activate_controller(true, true) lead_vehicle.change_speed(target: 20mps, rate_profile: m_profile, rate_peak: 0.3mpss) serial: # act2 wait elapsed(10s) lead_vehicle.activate_controller(true, true) 父主题: 场景剧本 StoryBoard
  • straight 简述:地图场景为直道.lead_vehicle和主车Ego在主道上分别以40kph和Ego_InitSpeed_Ve0的初始速度一前一后行驶,Ego设定了目标在主道右2车道上的目标点Target_position,同时激活Ego控制器(控制器会影响Ego去往Target_position的寻路算法,但目前仿真器B尚不支持寻路动作acquire_position),控制器有时会根据lead_vehicle的位置更改主车Ego的速度. 地图文件(odr) scenario Straight: m_scene: scenery lane_width: length = [3m..4m] right_lane_num: int = [2, 3] bikeway: bool = [true, false] sidewalk: bool = [true, false] main_speed: speed = 60kph road_length: length = [550m, 600m] straight_1: straight with: keep(it.lane_width == lane_width) keep(it.left_lane_num == 0) keep(it.right_lane_num == right_lane_num) keep(it.bikeway == bikeway) keep(it.sidewalk == sidewalk) keep(it.main_speed == main_speed) keep(it.road_length == road_length) 场景文件(osc) import standard scenario Straight: # map map: map map.set_map_file("./straight.odr") # parameter Ego_InitSpeed_Ve0: speed = [55kph..60kph] Ego_InitPosition_LaneId: string = ['-1', '-2'] Ego_InitPosition_s: length = [0m..30m] Ego_Odr: odr_point = map.create_odr_point(road_id: '1', lane_id: Ego_InitPosition_LaneId, s: Ego_InitPosition_s, t: 0.0m) Ego_InitPosition: pose_3d with: keep(it.odr_point == Ego_Odr) m_distance: length = [50m..80m] LeadVehicle_Odr: odr_point = map.create_odr_point(road_id: '1', lane_id: '-1', s: m_distance, t: 0.0m) LeadVehicle_InitPosition: pose_3d with: keep(it.odr_point == LeadVehicle_Odr) Target_xyz: xyz_point = map.create_xyz_point(x: 450m, y: -4.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(position: LeadVehicle_InitPosition) lead_vehicle.assign_init_speed(40kph) Ego.activate_controller(true, true) Ego.acquire_position(target: Target_position) 父主题: 种子地图的逻辑场景样例(仿真器B)
  • road_point 定义:路网s-t坐标系中的特定位置点(point). 用途:设置实体位置,用于构成pose_3d. 参数:参数如下表. 表1 road_point参数 Parameter Type Mandatory Description road_id string yes identifier for the road in which this point is located s length yes Coordinate along the s-axis of the corresponding road t length yes Coordinate along the t-axis of the corresponding road keep创建 my_road: road_point with keep(it.road_id == '1') keep(it.s == 5.0m) keep(it.t == 0.0m) create创建 my_point: road_point = map.create_road_point(road_id: '1', s: 5.0m, t: 0.0m) 父主题: Struct
  • straight城区直行 用途:创建straight城区直行的静态场景(地图) 参数:参数如下表. 表1 straight城区直行参数 Parameter Type Mandatory Description lane_width length yes 每个车道宽度. left_lane_num int yes 左侧车道数量. right_lane_num int yes 右侧车道数量. bikeway bool yes 是否有自行车道. sidewalk bool yes 是否有人行道. main_speed speed yes 主路的限速值. road_length length yes 主路的长度. 参数取值范围: lane_width: length = [3m..4m] left_lane_num: int = [0, 1, 2, 3, 4] right_lane_num: int = [1, 2, 3, 4] bikeway: bool = [true, false] sidewalk: bool = [true, false] main_speed: speed = [40kph..60kph] road_length: length = [150m..500m] keep创建 my_straight: straight with: keep(it.lane_width == 3m) keep(it.left_lane_num == 0) keep(it.right_lane_num == 3) keep(it.bikeway == false) keep(it.sidewalk == false) keep(it.main_speed == 60kph) keep(it.road_length == 500m) create创建 my_straight: straight = scenery.create_straight(lane_width: 3m, left_lane_num: 0, right_lane_num: 3, bikeway: false, sidewalk: false, main_speed: 60kph, road_length: 500m) 父主题: 领域模型设计
  • junction路口 用途:创建junction城区路口的静态场景(地图) 参数:参数如下表. Parameter Type Mandatory Description lane_num int yes 单方向车道数量. bikeway bool yes 是否有自行车道. sidewalk bool yes 是否有人行道. junction_type junction_type yes 路口的类型,目前支持两种类型crossroad(十字路口)和T-junction(丁字路口) 参数取值范围: lane_num: int = [1, 2, 3, 4] bikeway: bool = [true, false] sidewalk: bool = [true, false] junction_type: junction_type = ["crossroad", "T-junction"] keep创建 my_junction_type: junction_type = "crossroad" my_junction: junction with: keep(it.lane_num == 2) keep(it.bikeway == false) keep(it.sidewalk == false) keep(it.junction_type == my_junction_type) create创建 my_junction_type: junction_type = "crossroad" my_junction: junction = scenery.create_junction(lane_num: 2, bikeway: false, sidewalk: false, junction_type: my_junction_type) 父主题: 领域模型设计
  • 限速标志牌前限速(Speed Limit Sign)检测 限速标志牌前限速检测的目的是判断主车在行驶过程中遇到限速标志牌时, 速度是否符合要求。 限速标志牌分为最高限速和最低限速两种。 最高限速是指主车速度不能高于对应的限速数值, 并且不能低于最高限速的75%。 最低限速是指主车速度不能低于对应的限速数值。 当主车距离限速标志牌在道路方向的距离小于某一阈值(本设计取车辆最前端超过限速标志), 并且主车所在车道是限速标志牌的有效范围, 当主车速度高于最高限速标志数值或低于最低限速标志数值时, 限速标志牌限速检测不通过。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • lane_change_side 用于动作change_lane. lane_change_side list ENUM_LANE_CHANGE_SIDE = ("left", "right", "inside", "outside", "same") left:参考实体左侧的车道 right:参考实体右侧的车道 inside:参考实体内侧的车道 outside:参考实体外侧的车道 same:与参考实体相同的车道 父主题: Enum Lists
  • 延时评测 仿真器输出的仿真过程数据会按照OSI的GroundTruth格式存储为pb文件,根据创建任务配置时是否选择使用datahub,该仿真pb有两种格式: 使用datahub时,该仿真pb的每帧数据是GroundTruth结构,然后按照OSI标准推荐的存储格式,先按小端顺序存储4个字节,该4个字节表示下一帧GroundTruth总的字节数,然后继续4个字节,更下一帧GroundTruth的字节数,以此类推。 未使用datahub时,该仿真pb按照sim_osi.proto定义的格式进行存储,所有仿真数据帧GroundTruth存储到一个列表字段“frames”中。 仿真平台定义了sim_osi.proto和eva.proto,用于支持用户自定义评测的功能,具体的proto字段说明见请联系接口人获取仿真服务的proto协议。
  • 场景预览 场景预览当前有两种呈现方式:动态场景预览和地图场景预览。 动态场景预览:场景文件中存在完整的地图文件和动态场景文件,且动态场景文件为.xosc格式时显示。 地图场景预览:场景文件缺失或部分缺失,动态场景文件为.xml格式,场景文件解析失败或其他不支持动态场景预览的情况时显示。 动态场景预览 图6 动态场景预览页面 表2 动态场景预览页面详细说明 序号 区域名称 说明 1 动态场景预览区域 车辆的行驶轨迹,随着主车的行驶感知在主车辆周围出现的其他物体,如其他车辆、行人和交通信号等。目前可感知的物体类型请见感知物体类型。鼠标移动至道路时,道路会变红。遇到信号灯,车辆会按照红绿灯指示行驶。 2 交通参与物状态 可根据需要选择显示参与物状态。当前支持的参与物有参考线、车道、车道线、中心车道、交通信号、Trigger。 默认勾选Trigger,当出现时,单击图标,地图中会出现trigger的详细信息。 交通信号包含信号灯和交通标识牌。 3 视频播放控件 控制视频播放暂停回放按钮,支持逐帧和倍速播放。地图文件超过1MB不支持高倍速预览。 4 场景切换 视角切换:跟车、俯视、驾驶,自由。当在3D回放页面拖动鼠标时,即可切换为自由视角。 2D/3D切换:可单击“2D/3D”,可切换2D,3D场景。 地图场景预览 图7 地图场景预览页面 表3 地图场景预览页面详细说明 序号 区域名称 说明 1 地图场景预览区域 鼠标上下滚动,可以放大缩小图片,鼠标左键可旋转图片,右键可拖动图片。 2 交通参与物状态 可根据需要选择显示参与物状态。当前支持的参与物有参考线、车道、车道线、中心车道、信号灯。 3 场景刷新 单击右下方加号、减号和刷新按钮,放大、缩小、还原地图。
  • 编辑评测指标 评测类型为内置评测配置时,可为评测添加或删除评测指标,便于管理。 单击评测名称,在评测项目详情页,自定义评测配置部分,单击“编辑”。 单击“添加评测指标”,选择需要添加的指标,单击“确认”。 图3 添加评测指标 单击,对阈值进行设置,也可对重要度以及评分方案进行选择。 图4 阈值设置 重要度:可选主要和次要。 评分方案:可选主要次要log函数、主要次要均匀权重、全部均匀权重。具体介绍请查看评测分数计算介绍。 删除评测指标。 单击评测指标后“操作”栏内“删除”,删除该评测指标。 被任务使用的评测项目和镜像不能删除。 以上信息选择无误后,单击“保存”,评测指标编辑完成。
  • pose_3d 定义:三维空间的复合位置,包含位置点(odr_point或position_3d或road_point)和方向(orientation_3d)两个参数 用途:设置实体的初始位置(assign_init_speed动作)、目标位置(acquire_position动作) 参数:参数如下表. 表1 pose_3d参数 Parameter Type Mandatory Description xyz_point xyz_point no a pose in space specified in Cartesian (XYZ) coordinates. odr_point odr_point no a point expressed in ASAM OpenDRIVE coordinates. road_point road_point no a point on route network specified in S-T coordinates. orientation orientation_3d no three-dimensional orientation xyz_point、odr_point和road_point必须设置且仅设置一个,用以提供位置信息. orientation非必选项,当不设置orientation时,对应roll、pitch、yaw均为0时的方向 使用xyz_point、设置orientation my_xyz: xyz_point = map.create_xyz_point(x: 150.0m, y: 200.0m ,z: 0.0m) m_orientation: orientation_3d with: keep(it.roll == 0.0rad) keep(it.pitch == 0.0rad) keep(it.yaw == 1.57rad) my_pose: pose_3d with: keep(it.xyz_point == my_xyz) keep(it.orientation == m_orientation) 使用odr_point、不设置orientation my_odr: odr_point = map.create_odr_point(road_id: '1',lane_id:'-2',s: 3.0m, t: 0.0m) my_pose: pose_3d with: keep(it.odr_point == my_odr) 使用road_point、不设置orientation my_road: road_point with keep(it.road_id == '1') keep(it.s == 5.0m) keep(it.t == 0.0m) my_pose: pose_3d with: keep(it.road_point == my_road) 父主题: Struct
  • 仿真服务简介 Octopus仿真服务支持多种功能操作。包括用户在云上以类似操作远程桌面方式操作图形化界面的仿真软件的在线仿真服务,基于OpenSCENARIO等标准格式的仿真场景管理。泛化大量仿真场景,规控算法工程管理,多场景并行高速运行的批量仿真服务,和多样式的仿真报告查看和对比方式以及仿真过程回放等。用户可通过仿真服务完成在线仿真、仿真场景,创建仿真评测任务等。仿真服务开发流程如下。 图1 仿真服务开发流程 仿真服务操作引导如下: 在线仿真:提供类似本地开发的体验,支持客户直接使用线上仿真器开发,并无痛对接云端的场景管理:包含加载、绘制、保存等操作,并支持对仿真结果的录制文件的回放等功能。 算法管理:用于对接客户的上云算法,并支持算法的版本级管理,并可自动化触发关联的批量算法。 评测管理:支持内置评测配置和自定义评测镜像,对仿真任务中的算法展开评测。 场景管理:包含场景、场景库、逻辑场景、逻辑场景库、测试用例、测试套件等。支持页面上传、路测数据生成、泛化、在线仿真编辑等场景录入方式,支持地图、场景的在线预览,并支持场景标签等功能。 任务管理:选择仿真算法和仿真场景创建仿真任务,从行车安全、驾驶行为、乘员舒适性等角度衡量仿真算法控制效果,支持可视化仿真结果,生成任务报告。 父主题: 仿真服务
  • xyz_point 定义:笛卡尔(XYZ)坐标系中的特定位置点(point). 用途:设置实体位置,用于构成pose_3d. 参数:参数如下表. 表1 xyz_point参数 Parameter Type Mandatory Description position position_3d yes Position in Cartesian (XYZ) coordinates keep创建 my_pos: position_3d with: keep(it.x == 150.0m) keep(it.y == 200.0m) keep(it.z == 0.0m) my_xyz: xyz_point with: keep(it.position == my_pos) create创建 my_xyz: xyz_point = map.create_xyz_point(x: 150.0m, y: 200.0m ,z: 0.0m) 父主题: Struct
  • 动作 activate_controller 动作主体:车辆vehicle 结束时间:激活或停用控制器controller后,动作结束. 是否支持modifier:否 参数:参数如下表,支持位置参数和关键字参数. 表1 activate_controller参数 Parameter Type Mandatory Description lateral bool yes In lateral domain: Activate or deactivate controller defined (e.g. automated, autonomous) behavior. longitudinal bool yes In longitudinal domain: Activate or deactivate autonomous behavior. 代码样例: Ego.activate_controller(lateral:true, longitudinal:true) 父主题: 动作 Actions
  • 车头时距(Time Headway)检测 车头时距检测的目的是判断主车行驶过程中与其他交通车的车头时距是否台小。 车头时距是主车与引导车的相对相对距离除以主车的速度。 即使主车未发生碰撞, 当车头时距过小时(该阈值可用户自定义,本设计默认取2s), 发生碰撞的风险太大, 这样也是不合理的。 车头时距和碰撞时间两者都是描述碰撞风险大小的。 车头时距适合判断主车和引导车速度都很高, 但相对速度比较小的情况。 碰撞时间适合主车和引导车相对速度比较大的情况。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • 修饰器 speed 用途:设定动作主体actor 在当前阶段的速度. 可以修饰初始动作assign_init_speed . 参数: 表1 speed参数 Parameter Type Mandatory Description speed speed no A target speed value, including a speed unit. faster_than entity no set the speed target faster than another entity. slower_than entity no set the speed target slower than another entity. same_as entity no set the speed target same as another entity. faster_than、slower_than和same_as必须设置且仅设置一个. 使用faster_than和slower_than时配合speed来设置相对速度. 使用speed+faster_than cut_in_vehicle.assign_init_speed() with: speed(speed: 5mps, faster_than: Ego) 使用speed+slower_than cut_in_vehicle.assign_init_speed() with: speed(speed: 5mps, slower_than: Ego) 使用same_as cut_in_vehicle.assign_init_speed() with: speed(same_as: Ego) 父主题: 修饰器 Modifiers
  • 触发器与触发条件 Trigger and condition 用户可以使用wait+触发条件的方式来设置动作的触发条件condition ,可以使用的触发条件有: elapsed 、 object_distance、 point_distance 、time_to_collision、 time_headway 、 speed ,和acceleration . 如果不满足等待时长或触发条件,后续动作将无法执行. 使用wait来设定触发条件condition时,必须在serial:下执行,否则wait无效. 触发条件 elapsed 触发条件 object_distance 触发条件 point_distance 触发条件 time_to_collision 触发条件 time_headway 触发条件 speed 触发条件 acceleration 父主题: 代码样例 Code Examples
  • orientation_3d 定义:由Tait–Bryan角度的三个参数roll(横滚角,围绕x轴的角度)、pitch(俯仰角,围绕y轴的角度)和yaw(偏航角,围绕z轴的角度)定义的三维角度. 用途:设置实体的朝向角度、用于构成pose_3d. 参数:参数如下表. 表1 orientation_3d参数 Parameter Type Mandatory Description roll angle yes rotation angle around the x-axis. pitch angle yes rotation angle around the y-axis. yaw angle yes rotation angle around the z-axis. 根据ISO 8855的定义,角度旋转的顺序是:首先进行yaw(围绕z轴)、接着pitch(围绕新y轴),最后roll(围绕新x轴). 当实体的朝向与road0的方向相同时,无需设置orientation_3d. angle的单位一般为rad(弧度)而非degree(角度),rad = degree*pi/180, 1rad约等于57.3度(详见scalar units中的angle units一节) 与road 0的方向相反(相差180°) m_orientation: orientation_3d with: keep(it.roll == 0.0rad) keep(it.pitch == 0.0rad) keep(it.yaw == 3.14rad) 父主题: Struct
  • 压实线(Onto Solid line)检测 压实线检测的目的是判断主车行使过程中是否压到实线。 当主车与距离最近的车道线的小于主车宽度的一半时,并且该车道线的类型为OSI定义的osi3.LaneBoundary.classification.type.TYPESOLIDLINE,则认为主车的轮胎已经压到实线。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • OCTPS_INSPECTION_ATTRI_DIR OCTPS_INSPECTION_ATTRI_DIR为审核属性字段文件路径,示例:/tmp/…/attribute/inspection_attribute.json。文件内容示例如下: { "inspection": { "miss_label_error": false, #漏标 "vehicle_direction_error": false, #车头方向错误 "error_desc": "", "attribute_error": false, #属性错误 "out_range_label_error": false, #未贴合 "anchor_error": false, #锚点错误 "classification_error": false, #类别错误 "extra_label_error": false #多标 } }
  • OCTPS_DATASET_DIR 预标注任务 OCTPS_DATASET_DIR 为待标注的数据路径,示例:/tmp/label/task-2022/source/data。每一帧数据存放在单独的子文件夹,文件组织结构如下所示。 2D数据帧文件组织结构: OCTPS_DATASET_DIR/XX/…/XX/├─子文件夹1 ├─图片1.jpg #标注图片 ├─标注1.json #图片1的标注信息,非必有 ├─子文件夹2 ├─图片2.jpg #标注图片 ├─标注2.json #图片2的标注信息,非必有 3D数据帧文件组织结构: OCTPS_DATASET_DIR/XX/…/XX/├─子文件夹1 ├─点云1.pcd #已标注点云 ├─图片1.jpg #点云1对应的同时刻图片,非必有 ├─标注1.json #点云1的标注信息,非必有 ├─子文件夹2 ├─点云2.pcd #已标注点云 ├─图片2.jpg #点云2对应的同时刻图片,非必有 ├─标注2.json #点云2的所有标注信息,非必有 注:“XX/…/XX/”部分存在嵌套多个文件夹的情况,具体嵌套层数和上传的数据集目录结构有关系。 预审核任务 OCTPS_DATASET_DIR 为待审核的全量数据路径,示例:/tmp/label/task-2022/source/data。每一帧数据存放在单独的子文件夹,文件组织结构如下所示。 2D数据帧文件组织结构: OCTPS_DATASET_DIR/├─子文件夹1 ├─图片1.jpg #已标注图片 ├─labels.json #图片1的所有标注信息 ├─子文件夹2 ├─图片2.jpg #已标注图片 ├─labels.json #图片2的所有标注信息 3D数据帧文件组织结构: OCTPS_DATASET_DIR/├─子文件夹1 ├─点云1.pcd #已标注点云 ├─图片1.jpg #点云1对应的同时刻图片 ├─labels.json #点云1的所有标注信息 ├─子文件夹2 ├─点云2.pcd #已标注点云 ├─图片2.jpg #点云2对应的同时刻图片 ├─labels.json #点云2的所有标注信息 每帧数据的标注结果存放在lables.json中,具体格式及内容说明参考Octopus数据集格式说明中的labels字段。
  • OCTPS_META_PATH OCTPS_META_PATH为标注物文件路径,示例:/tmp/label/task-2022/source/meta/label_meta_infos.json。标签文件中包含了当前任务所选择的所有标注物的基本信息。预标注结果中每个标注对象所需的标注物id,可通过此文件中的id字段获取。标注物文件内容示例如下。 [ { "id": 2085, # 平台上所建标注物的ID "name": "Car", # 平台上所建标注物的名称 "color": "#d0021b", "label_shape_type": "bndbox", "attribute": "{}", "description": "car", ... ... } … … ]
共100000条