华为云用户手册

  • 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) 父主题: 领域模型设计
  • 平稳起步(Gentle Start)检测 汽车起步时加速度太大会给人带来不舒适的感受。平稳起步检测的目的是判断自动驾驶车辆起步过程中加速度是否过大。 起步过程的判定是指车辆当前速度为0,并在0.5s后速度大于,这个0.5s内的时间段为起步过程。 起步过程中如果加速度大于一定阈值(本设计取),则判定起步加速度过大,起步不平稳。 该指标关联的内置可视化时间序列数据为:speedX,accX。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • 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) 父主题: 领域模型设计
  • “Octopus_data_collection.yaml”配置文件说明 数据包中必须含有“Octopus_data_collection.yaml”配置文件,且配置文件中采集时间、车辆名称、ego_tf关键字为必填项,各类型传感器的名字必须和文件夹名称一致,格式也必须与规范相匹配,否则会导致数据上传失败。 配置文件,主要包括车辆名称、传感器信息和标定ID等信息,详情参考如下: # 华为八爪鱼自动驾驶云服务数据采集说明 cardrive: collect_time: 2020-11-01T08:00:00+08:00 #数据包采集日期,精确到小时即可 station: '腾飞' #选填 数据采集地点名称,站点名称 car: vehicle_name: 'test0805' #车辆名称,仅支持在八爪鱼平台创建的车辆 route: 'shuttlebus_30km' #选填 车辆行驶路线 mode: 'auto' #选填 路线驾驶意图, auto代表自动驾驶, manual代表人工驾驶采集 tags: #选填 数据包对应标签ID description: '' #选填 数据包描述 data_type: OpenData #必填 数据包类型,转换后的OpenData数据中包含ocotopus_data_collection.yaml文件 map_id:'' #选填,高精地图ID,字符串类型,配备后才可在回放数据界面展示高精地图信息。 folders: #必填,传感器信息(硬盘递送选填,obs导入和本地直传必填) camera: #camera类型传感器 数量不超过20个 - name: camera_03encode format: jpg lidar: #lidar类型传感器 数量不超过10个 - name: pandar format: pcd gnss: #gnss类型传感器 数量不超过1个 - name: inspvax format: proto3 radar: #radar类型传感器 数量不超过10个 - name: pandar format: pcd vehicle: #vehicle类型传感器 数量不超过1个 - name: holo_VehicleInfoMagotan format: proto3 ego_tf: #ego_tf类型传感器 数量不超过1个 - name: localization_info format: proto3 object_array_vision: - #object_array_vision类型传感器 数量不超过5个 - name: tracked_objects format: proto3 tag_record: #tag_record类型传感器 数量不超过1个 - name: tag_record format: proto3 planning_trajectory: #planning_trajectory类型传感器 数量不超过1个 - name: planning_trajectory format: proto3 predicted_objects: #predicted_objects类型传感器 数量不超过1个 - name: prediction_prediction_obstacles format: proto3 control: #control类型传感器 数量不超过1个 - name: holo_ControlCommand format: proto3 routing_path: # routing_path类型传感器 数量不超过1个 - name: routing_routing_response_viz format: proto3 traffic_light_info: # traffic_light_info类型传感器 数量不超过1个 - name: traffic_light format: proto3
  • 数据类型 Octopus平台对数据有以下要求: 数据类型:包括各传感器数据、车辆数据、目标推理数据、自车坐标姿态以及标签记录数据等。 数据格式:Octopus OpenData格式。其中相机采集数据文件后缀为“.jpg”,激光雷达采集数据文件后缀为“.pcd”,其他采集数据文件后缀为“.pb”(谷歌定义的protobuf格式文件)。 详情请参考表1 数据类型和消息topic对应关系。 消息topic具体格式要求请参考“消息topic格式规范”。 接收到的消息topic示例请参考“消息topic格式示例”。 除上述数据外,数据包中必须含有“Octopus_data_collection.yaml”配置文件。 自车相关或每个传感器设备,都对应一个消息topic。 采集数据的topic名称支持自定义,包含中英文、数字、“_”“-”,不得超过64个字符。 表1 数据类型和消息topic对应关系 分类 数据类型 消息topic(示例) 文件后缀 备注 传感器 相机(camera) camera_front .jpg 录制车辆路况图像数据。 激光雷达(lidar) lidar_roof_0 .pcd 以发射激光束探测目标的位置、速度等特征量的雷达系统,探测车辆周围的目标位置,监测移动速度。 位置数据(gnss) gnss_raw .pb 通过卫星导航系统,定位车辆位置。 毫米波雷达(radar) RADAR_FRONT .pcd 工作在毫米波波段探测的雷达,探测车辆周围的目标位置,监测移动速度。 车辆数据 自车坐标和姿态数据(ego_tf) ego_tf .pb 定位自车所处位置以及当前车辆姿态。 车辆数据(vehicle) vehicle .pb 车辆底盘信息。 规划推理数据 目标推理数据(object_array_vision) object_array_vision .pb 感知数据信息。 标签数据 标签记录数据(tag_record) tag_record .pb 在车端标记驾驶过程中人工和自动驾驶路段以及其他重要信息。 控制数据 控制指令(control) control .pb 自车的方向盘转角、加速度值等控制数据。 规划路径 规划轨迹(planning_trajectory) planning_trajectory .pb 自车规划行驶路径。 预测路径 预测跟踪(predicted_objects) predicted_objects .pb 感知目标的预测路径。 全局规划 全局路径(routing_path) routing_path .pb 自车全局规划路径。 交通灯 交通灯信息(traffic_light_info) traffic_light_info .pb 红绿灯。
  • 使用场景 Octopus平台接收到原始数据(Rosbag包)后,将对数据进行解包、轨迹和接管分析等操作,用于数据总览、数据场景、数据回放、标注服务等模块,请用户结合实际需求,准备好相应模块所需数据。 Octopus平台转换后的OpenData数据服务模块所需数据请见下表: 表2 数据和模块对应关系 类型 消息 数据总览 数据场景 数据回放 标注服务 相机 camera - - √ √ 激光雷达 lidar - - √ √ 位置数据 gnss √ - √ - 自车坐标姿态 ego_tf - √ √ - 车辆数据 vehicle - √ √ - 感知推理 object_array_vision - √ √ - 接管及打标签信息 tag_record - - √ - 控制指令 control - - √ - 规划轨迹 planning_trajectory - - √ - 预测跟踪 predicted_objects - - √ - 全局规划 routing_path - - √ - 交通灯 traffic_light_info - - √ - 毫米波雷达 radar - - √ -
  • 使用规范 在线仿真服务集成了一整套完整的仿真工具链,开箱即用。 在使用新的普通用户登录在线仿真时,需修改在线仿真系统配置: 关闭桌面锁屏。 调整屏幕分辨率(默认分辨率不高,可调至适合的分辨率)。 将默认的浏览器更改为Chrome或Firefox。 在线仿真根据用户名称生成系统进程,Linux中不合法的用户名称登录在线仿真会出现异常,合法的用户名称限制如下: 只能包含小写字母、数字、下划线、中划线 。不得超过31个字符。 只能以字母和下划线开头。不可包括连续的下划线和中划线。不可包含linux的关键字或保留字。 目前在线仿真为独占式,同一台在线仿真器同一时间只允许一个用户使用,待用户释放后,才可供其他用户使用。
  • 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
  • 换道(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类均匀权重评分。 接下来对三种评分方案进行详细介绍。 父主题: 评测分数计算介绍
  • 具体场景 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
  • Palette 目录 标注文件目录结构 +--- images | +--- 000000.png | +--- 000001.png | +--- 000002.png +--- labels | +--- 000000.png | +--- 000001.png | +--- 000002.png 推理文件目录结构 +--- 000000.png +--- 000001.png +--- 000002.png 示例标注/推理文件 2D语义分割-palette.png
  • Octopus 目录 标注文件目录结构 +--- 1599625710056 | +--- 1599625710056.jpg | +--- 1599625710056.json +--- 1599625740054 | +--- 1599625740054.jpg | +--- 1599625740054.json 推理文件目录结构 +--- 1599625710056 | +--- 1599625710056.json +--- 1599625740054 | +--- 1599625740054.json 示例标注/推理文件 2D语义分割-Octopus.json { "image_meta_info": { "size": { "height": 1024, "width": 2048 } }, "labels": [ { "shape_type": "polygon", "label_meta_name": "road", "serial_number": 1, "label_meta_id": 0, "polygon": {"size": 3, "points": [{"xpoint": 1706, "ypoint": 1023}, {"xpoint": 1709, "ypoint": 1023}, {"xpoint": 1709, "ypoint": 1020}]} }, { "shape_type": "polygon", "label_meta_name": "bicycle", "serial_number": 25, "label_meta_id": 18, "polygon": {"size": 20, "points": [{"xpoint": 1006, "ypoint": 476}, {"xpoint": 1002, "ypoint": 476}, {"xpoint": 997, "ypoint": 479}, {"xpoint": 994, "ypoint": 483}, {"xpoint": 994, "ypoint": 491}, {"xpoint": 990, "ypoint": 497}, {"xpoint": 989, "ypoint": 500}, {"xpoint": 988, "ypoint": 502}, {"xpoint": 979, "ypoint": 503}, {"xpoint": 971, "ypoint": 507}, {"xpoint": 971, "ypoint": 524}, {"xpoint": 979, "ypoint": 533}, {"xpoint": 992, "ypoint": 534}, {"xpoint": 1004, "ypoint": 530}, {"xpoint": 1009, "ypoint": 525}, {"xpoint": 1009, "ypoint": 514}, {"xpoint": 1007, "ypoint": 497}, {"xpoint": 1007, "ypoint": 490}, {"xpoint": 1011, "ypoint": 483}, {"xpoint": 1008, "ypoint": 478}]} } ] }
  • 编译任务日志查看下载 编译任务运行过程中生成日志,编译任务模块提供了日志的查看以及下载功能,支持用户查看编译任务的运行情况。编译任务生成的日志文件有以下四种: train-{id}-{index}.log:用户实际训练任务的训练日志。 train-{id}-{index}-init.log:Octopus平台提供的前置数据的准备日志。 train-{id}-{index}-sidecar.log:Octopus平台提供的任务流程控制日志,包括日志同步、结果上传。 octopus-train-{id}-{index}-supplemental.logs: Octopus平台任务异常退出或停止产生的错误信息输出日志,运行正常时不产生该日志。 在该编译任务的详情页面,单击“任务日志”,可查看该编译任务日志详情。支持下载至本地。如果日志较多,用户可在搜索框中输入关键字,查找指定日志内容。 如图,在日志服务页面中的日志列表部分详细展示了该编译任务包含的日志文件的大小以及最近写入时间。单击文件后的“查看”,该文件的详细执行过程则在日志详情部分展示。用户也可在日志文件后的“操作”栏中,单击“下载”,即可将该日志文件下载到本地查看。 图4 任务日志
  • 编译任务相关操作 在“编译任务”列表,可对任务进行以下操作。 表1 编译任务相关操作 任务 操作步骤 查找任务 在搜索输入框中输入搜索条件,按回车键即可查询。 查看任务详情 单击任务名称,可在任务详情页查看该任务详情、参数详情、编译版本、任务日志和资源在占用情况。 任务详情:任务ID、名称、描述、状态、资源类型等信息。 参数详情:训练算法参数以及环境参数信息。 编译版本:同一个源模型使用不同芯片编译,生成的结果为该模型的不同版本。 任务日志:任务运行过程中生成的日志信息,详情请查看编译任务日志查看下载。 资源占用情况:显示任务占用的CPU、内存、GPU及显存占用率百分比的折线图,详情请查看资源占用情况。 删除任务 单击操作栏的“删除”,删除单个任务。 勾选多个任务,单击列表上方的“删除”,可批量删除任务。 创建新任务 单击操作栏内的“创建新任务”,输入新任务名称(以“任务组名-自定义名称”的形式)和是否删除原有任务选项,同时可重新选择需要修改的参数。 停止任务 单击该条任务后的“停止”,对停止编译任务。 编译任务相关操作与任务所处状态约束关系请见下表: 表2 操作与状态约束关系 作业状态 创建新任务 删除 停止 排队中 - √ √ 提交中 - - - 提交失败 √ √ - 运行中 - - √ 运行异常 √ √ - 已完成 √ √ - 停止中 - - - 停止失败 - √ - 已停止 √ √ - 删除中 - - - 删除失败 - √ -
  • 资源占用情况 在任务运行中,资源占用情况模块显示任务占用的CPU、内存百分比的折线图。默认显示CPU占用情况折线图。 图5 资源占用情况 双击任一图例:显示全部资源占用折线图。 单击指定图例:只显示该图例折线图。 此模块也可显示多个计算节点运行任务时,资源占用的情况。 如果选择2个计算节点运行任务,则可选择查看单个节点资源占用情况。 资源占用情况功能模块,需要用户在制作自定义镜像时安装psutil与pynvml,参考命令如下: pip install psutil pynvml 如果未安装psutil与pynvml,则页面无法显示资源使用状况。
  • 动作 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
  • distance_mode 用于触发条件object_distance和point_distance. distance_mode list ENUM_DISTANCE_MODE = ("reference_points", "bounding_boxes") reference_points:测量参考点之间的距离. bounding_boxes:测量边界框之间的距离. 父主题: Enum Lists
  • 编辑评测指标 评测类型为内置评测配置时,可为评测添加或删除评测指标,便于管理。 单击评测名称,在评测项目详情页,自定义评测配置部分,单击“编辑”。 单击“添加评测指标”,选择需要添加的指标,单击“确认”。 图3 添加评测指标 单击,对阈值进行设置,也可对重要度以及评分方案进行选择。 图4 阈值设置 重要度:可选主要和次要。 评分方案:可选主要次要log函数、主要次要均匀权重、全部均匀权重。具体介绍请查看评测分数计算介绍。 删除评测指标。 单击评测指标后“操作”栏内“删除”,删除该评测指标。 被任务使用的评测项目和镜像不能删除。 以上信息选择无误后,单击“保存”,评测指标编辑完成。
  • 仿真服务简介 Octopus仿真服务支持多种功能操作。包括用户在云上以类似操作远程桌面方式操作图形化界面的仿真软件的在线仿真服务,基于OpenSCENARIO等标准格式的仿真场景管理。泛化大量仿真场景,规控算法工程管理,多场景并行高速运行的批量仿真服务,和多样式的仿真报告查看和对比方式以及仿真过程回放等。用户可通过仿真服务完成在线仿真、仿真场景,创建仿真评测任务等。仿真服务开发流程如下。 图1 仿真服务开发流程 仿真服务操作引导如下: 在线仿真:提供类似本地开发的体验,支持客户直接使用线上仿真器开发,并无痛对接云端的场景管理:包含加载、绘制、保存等操作,并支持对仿真结果的录制文件的回放等功能。 算法管理:用于对接客户的上云算法,并支持算法的版本级管理,并可自动化触发关联的批量算法。 评测管理:支持内置评测配置和自定义评测镜像,对仿真任务中的算法展开评测。 场景管理:包含场景、场景库、逻辑场景、逻辑场景库、测试用例、测试套件等。支持页面上传、路测数据生成、泛化、在线仿真编辑等场景录入方式,支持地图、场景的在线预览,并支持场景标签等功能。 任务管理:选择仿真算法和仿真场景创建仿真任务,从行车安全、驾驶行为、乘员舒适性等角度衡量仿真算法控制效果,支持可视化仿真结果,生成任务报告。 父主题: 仿真服务
  • Lidar激光雷达标定文件模板 标定文件名:“lidar_right_999.yaml” 文件内容示例: Pandar40: rotation_vel2veh_matrix: rows: 3 cols: 3 data: [0.999365,0.0349167,0.00707821,-0.034795,0.999256,-0.0166374,-0.00765387,0.0163806,0.999837] tanslation_vel2veh_vector: rows: 3 cols: 1 data: [0.00915069,1.34196,1.38] rotation_veh_vel_euler: yaw: -1.9940678960476272 pitch: 0.43853880056948835 roll: 0.9386082809708912 translation_veh_vel: x: 0.00915069 y: 1.34196 z: 1.38 timeshift_vel_veh: 0.000000000 父主题: 标定文件模板
  • 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的仿真平台前端能够展示用户自研评测算法的评测结果。
  • 绿灯通行(Drive Through Green Light)检测 绿灯通行检测的目的是判断主车在接近十字路口后, 如果是绿灯, 主车是否直接通行而没有停止。 另外,当交通灯由红灯变为绿灯后, 主车重新启动的时间是否太大。 本设计认为在绿灯状态下, 如果前方没有行人和引导车的情况下, 主车在停止线前20m范围内发生停车行为, 则绿灯前直接通行不通过。 当交通灯由红灯变为绿灯后, 如果主车重新启动的时间大于一定阈值(本设计取3s), 则绿灯后重新启动时间太大。 该指标关联的内置可视化时间序列数据为:暂无。 该指标的异常时间点记录类型为:POINT_TYPE_POINT。 父主题: 内置评测指标说明
  • 动作 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
  • 评测列表 在评测列表,还可以进行以下操作: 表1 评测列表相关操作 任务 操作步骤 搜索评测 在搜索框中输入关键字搜索相关评测。支持通过评测名称和评测ID搜索。 查看评测详情 单击评测名称,页面跳转至评测详情页。 编辑评测 单击操作栏中的“编辑”,可编辑评测的信息。 说明: 当内置评测是system_default时,只支持编辑“评测模式”。 删除评测 单击操作栏中的“删除”,可删除该评测。 父主题: 评测管理
  • 修饰器 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
  • Octopus 目录 标注文件目录结构 +--- 1611801018801 | +--- 1611801018801.json | +--- 1611801018801.pcd +--- 1611801024401 | +--- 1611801024401.json | +--- 1611801024401.pcd 推理文件目录结构 +--- 1611801018801 | +--- 1611801018801.json +--- 1611801024401 | +--- 1611801024401.json 示例标注文件 3D目标追踪-Octopus标注.json { "frame_id": 0, "labels": [ { "cube_3d": { "location": { "z": -0.010374438202406334, "y": 54.14756705529089, "x": 3.386641177177716 }, "serial_number": 0, "dimensions": { "height": 2.6135754585266113, "width": 2.7737574577331543, "length": 5.917389392852783 }, "rotation": {"x": 0, "y": 0, "z": 4.729842272904634} }, "serial_number": 0, "shape_type": "cube_3d", "label_meta_name": "厢式货车", "label_meta_id": 598 }, { "cube_3d": { "location": { "z": 1.1376991421138332, "y": 40.2855870175903, "x": -3.224063568250358 }, "serial_number": 1, "dimensions": { "height": 2.3640241622924805, "width": 1.4068853855133057, "length": 11.719782829284668 }, "rotation": {"x": 0, "y": 0, "z": 4.71238898038469} }, "serial_number": 0, "shape_type": "cube_3d", "label_meta_name": "大型车", "label_meta_id": 493 } ] } 示例推理文件 3D目标检测-Octopus推理.json { "frame_id": 0, "labels": [ { "label_meta_name": "厢式货车", "cube_3d": { "serial_number": 1, "location": { "x": 3.38, "y": 54.14, "z": -0.010 }, "dimensions": { "length": 5.91, "width": 2.77, "height": 2.61 }, "rotation": { "x": 0, "y": 0, "z": 4.72 } }, "score": 0.89 }, { "label_meta_name": "厢式货车", "cube_3d": { "serial_number": 1, "location": { "z": 0.07, "y": -12.98, "x": 3.84 }, "dimensions": { "height": 3.23, "width": 2.64, "length": 6.50 }, "rotation": { "x": 0, "y": 0, "z": 4.71 } }, "score": 0.82 } ] }
  • 绘制对象 单击点云标注任务,单击任意一帧,进入人工标注。 选择标注工具。 单击左侧工具栏“AI标注”(快捷键b)。 图2 选择标注工具 选择标注类别。 标注下拉列表页选择一标注名,进入标注状态。 图3 选择标注类别 框选标注物。 图4 框选标注物 调整三视图。 依据标注规范要求,结合下方真实图片中对应标注物大小,调整点云图像中标注物三视图中标注框。 图5 调整三视图 调整2D框(只适用于联合标注) 单击2D图片。 图6 单击2D图片 开启联合按钮。 图7 开启联合按钮 针对点云框对应的2D框进行调整大小。 图8 调整2D框 修改标注类别。 右键单击目标图形,可进入选择类别的跳出框,即可修改类别。 图9 修改标注类别 修改额外属性。 右键单击目标图形,如果目标含有额外属性,单击即可选择属性。 修改对象ID。 右键单击目标图形,可以在对象ID栏手动输入数值来修改ID。
  • 自定义属性相关操作 在“自定义属性”列表,还可以完成以下操作。 表1 自定义属性相关操作 任务 操作步骤 查询自定义属性 根据“属性名称”或“属性值”筛选,在搜索框中输入搜索条件,即可查询。 删除自定义属性 选择单个自定义属性,单击操作栏的“删除”,删除单个自定义属性。 勾选多个自定义属性,单击列表上方的“批量删除”,可批量删除自定义属性。 说明: 只允许删除未被通用存储内的数据引用的自定义属性。如果选择的数据被引用,则会提示不允许删除。
共100000条