OASIS SIM
  1. evaluates
OASIS SIM
  • OASIS SIM(废弃)
    • sensors
      • 获取传感器列表
      • 获取指定ID传感器
      • 创建传感器接口
      • 更新传感器
      • 删除传感器
      • 更新传感器数据
    • dynamics
      • 动力学模型查询
      • 查询指定ID动力学模型
      • 创建动力学模型
      • 更新动力学模型
      • 删除指定ID动力学模型
    • cars
      • 创建车辆
      • 更新车辆
      • 删除特定车辆
      • 获取特定车辆
      • 获取所有车辆
    • car_models
      • 获取车身模型信息
      • 获取车身模型文件信息
      • 导入车辆模型
    • jobs
      • 控制面板查询接口
      • 获取作业下的任务详情
      • 获取作业列表
      • 获取作业测试报告
      • 创建作业
      • 运行作业
      • 创建并运行新的作业
      • 终止作业
      • 重测接口
      • 更新作业信息
      • 更新作业状态信息
      • 批量删除作业
      • 批量删除作业和任务
      • 获取测试用例最新运行结果记录
    • tasks
      • 看板作业状态统计
      • 获取任务场景信息
      • 获取任务详情
      • 获取指定任务ID对应的任务详情
      • 获取任务场景信息
      • 获取任务列表
      • 获取任务详情图表信息
      • 获取任务的传感器数据
      • 终止任务
      • 操作任务状态
      • 删除指定ID任务
    • scenarios
      • 创建场景
      • 创建场景草稿
      • 删除场景
      • 更新场景
      • 更新场景草稿
      • 查找所有场景
      • 查找指定ID场景
      • 查找指定ID场景
      • 查找指定ID场景(单个场景)
      • 查找指定ID场景(多个场景)
      • 获取场景组树
      • 展示场景组
      • 搜索场景组
      • 移动场景组
      • 场景格式转换
      • 根据场景id查询路径
      • 下载场景
      • 上传场景
      • 场景泛化
      • 场景树形列表
    • scenario_groups
      • 新建场景库文件夹
      • 重命名场景组文件夹
      • 更新场景
      • 添加场景组文件夹标签
      • 删除场景组
    • scenario_elements
      • 获取所有场景元素
      • 获取场景元素相关文件信息
      • 新增静态障碍物
    • maps
      • 获取所有地图信息
      • 获取缩略图信息
      • 检查地图信息
      • 创建地图
      • 删除地图
      • 更新草稿地图
      • 地图资产导入
      • 获取地图信息
      • 上传地图
    • test_cases
      • 新建测试用例
      • 获取测试用例详情
      • 获取测试用例列表
      • 测试用例添加场景
      • 更新测试用例基础信息
      • 更新测试用例被测单元
      • 更新测试用例评测模板
      • 更新测试用例得分
      • 获取测试用例主车信息
      • 删除测试用例
      • 批量运行测试用例
      • 更新指定ID测试用例的数据得分
      • 更新测试用例场景权重
      • 更新测试用例场景分数
      • 更新测试用例的分数
    • scores
      • 获取指定ID得分
      • 获取所有得分
      • 更新指定ID得分信息
      • 获取指定ID得分的所有计分单元
      • 获取指定ID得分的指定ID的计分单元
      • 新建指定ID得分的计分单元
      • 更新指定ID得分的指定ID的计分单元
      • 批量更新指定ID得分的指定ID的计分单元的权重
      • 删除指定ID得分的指定ID的计分单元
      • 获取指定ID得分的指定ID的计分单元的所有数据
      • 获取指定ID得分的指定ID的计分单元的指定ID的数据
      • 新建指定ID得分的指定ID的计分单元的数据
      • 更新指定ID得分的指定ID的计分单元的指定ID的数据
      • 删除指定ID得分的指定ID的计分单元的指定ID的数据
    • traffic_flows
      • 交通流蓝图(已废弃)
    • controllers
      • 创建车辆控制系统
      • 修改车辆控制系统
      • 删除车辆控制系统
      • 获取指定ID车辆控制系统
      • 获取所有车辆控制系统
      • 创建算法控制系统
      • 修改算法管理系统
      • 删除算法管理系统
      • 获取指定ID算法管理系统
      • 获取算法管理系统
    • weathers
      • 查找所有天气
      • 查找指定id天气
      • 创建天气
      • 更新天气
      • 删除天气
    • lights
      • 创建光照信息
      • 更新光照信息
      • 删除光照
      • 查找所有光照信息
      • 查找指定id光照信息
    • logs(废弃)
      • 获取操作日志
      • 下载操作日志
      • 获取运行日志
    • emails
      • 发送登出邮件
      • 发送登录邮件
    • users
      • 添加用户(废弃)
      • 获取用户列表
      • 删除用户(废弃)
      • 获取用户
      • 角色修改(废弃)
      • 获取用户信息
    • evaluates
      • 创建自定义评价规则
        POST
      • 删除自定义评价规则
        DELETE
      • 更新自定义评价标准
        PUT
      • 查找指定的评价规则
        GET
      • 查找所有评价规则
        GET
      • 创建评价模板
        POST
      • 删除评价模板
        DELETE
      • 更新评价模板
        PUT
      • 查找所有评价模板
        GET
      • 查找指定的评价模板
        GET
    • file_operator
      • 上传点序文件
      • 查询所有点序文件
      • 更新点序文件
      • 删除点序文件
    • trashes(已废弃)
      • 查看回收站 Copy
      • 彻底删除资源 Copy
      • 清空回收站 Copy
      • 资源恢复 Copy
    • configs
      • 获取运行配置信息
      • 更新运行设置
    • licenses
      • 获取机器码
      • 下载生成机器码工具
      • 创建license
      • 校验license
    • 查询token
      GET
  1. evaluates

创建自定义评价规则

开发中
POST
/evaluates/customer_criteria

请求参数

Header 参数
Authorization
string 
必需
示例值:
bearer {{token}}
Content-Type
string 
必需
示例值:
application/json
User-Agent
string 
必需
示例值:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Body 参数application/json
name
string 
评价名称
必需
name_en
string 
可选
desc
string 
描述
可选
desc_en
string 
可选
script_content
string 
评价脚本的内容
可选
示例
{
    "name": "script_20240819_616",
    "name_en": "script_20240819_616",
    "desc": "test",
    "desc_en": "test",
    "script_content": "#!/usr/bin/env python\nimport operator\nimport numpy as np\n\n\n# ACC评估指标\n# 参考:GB/T 20608-2006 智能运输系统 自适应巡航控制系统 性能要求与检测方法\ndef ACC_Evaluation(\n    final_data: dict = {}, success_value: float = 60, comparison_operator=operator.ge\n) -> float:\n    \"\"\"\n\n    Args:\n        final_data: 场景运行整个过程 ego_vehicle 的所有数据,格式如下:\n            {\n            \"x\": [],    location 的 x 方向值\n            \"y\": [],    location 的 y 方向值\n            \"z\": [],    location 的 z 方向值\n            \"ttc\": [], 最小预期碰撞用时,自车与障碍物之间的距离除以相对速度得到TTC (Time to collision),取最小值,如果不存在前车,则为 None\n            \"thw\": [], 最小车头时距,两车车距 /本车的车速得到 THW (Time headway),取最小值,如果不存在前车,则为 None。\n            \"yaw\": [],                  偏航角度,单位弧度\n            \"roll\": [],                 滚转角度,单位弧度\n            \"pitch\": [],                俯仰角度,单位弧度\n            \"jerk\": [],                 加速度变化率\n            \"jerk_x\": [],               加速度变化率 x 方向值\n            \"jerk_y\": [],               加速度变化率 y 方向值\n            \"jerk_z\": [],               加速度变化率 z 方向值\n            \"brake\": [],                刹车 [0.0, 1.0] 之间取值\n            \"steer\": [],                方向 [-1.0, 1.0] 之间取值\n            \"throttle\": [],             油门 [0.0, 1.0] 之间取值\n            \"game_time\": [],            仿真时间,单位 s\n            \"velocity\": [],             车辆速度,单位 m/s\n            \"velocity_x\": [],           车辆速度 x 方向值\n            \"velocity_y\": [],           车辆速度 y 方向值\n            \"velocity_z\": [],           车辆速度 z 方向值\n            \"acceleration\": [],         车辆加速度,单位  m/s^2\n            \"acceleration_x\": [],       车辆加速度 x 方向值\n            \"acceleration_y\": [],       车辆加速度 y 方向值\n            \"acceleration_z\": [],       车辆加速度 z 方向值\n            \"relative_distance\": [],    相对前车距离,如果不存在前车,则为None\n            \"relative_velocity\": [],    相对前车速度,如果不存在前车,则为None\n            \"front_vehicles_count\": [], 前车数量\n        }\n\n        success_value: 该指标的期望成功值\n        comparison_operator: 比较操作符,可选择的值类型有\n            operator.gt: 表示大于 \"greaterThan\"\n            operator.lt: 表示小于 \"lessThan\"\n            operator.eq: 表示等于 \"equalTo\"\n            operator.ge: 表示大于等于 \"greaterOrEqual\"\n            operator.le: 表示小于等于 \"lessOrEqual\"\n            operator.ne: 表示不等于 \"notEqualTo\"\n\n    Returns:\n        float: 指标得分,[0, 100] 之间的浮点型数据\n    \"\"\"\n    V_LOW_LB = 5\n    THW_MIN_LB = 1.0\n    THW_STABLE_LB = 1.5\n    THW_STABLE_UB = 2.2\n    MEAN_DEACC_MAX_UB = 3.0\n    MEAN_JERK_MAX_UB = 2.5\n    ACC_MAX_UB = 2.0\n\n    # 假设1:第一个大于 ASSUMPTION_1_QUANTILE 的速度后开始开启ACC\n    ASSUMPTION_1 = True\n    ASSUMPTION_1_QUANTILE = 20\n\n    acc_starting_idx = 0\n    data_length = len(final_data[\"velocity\"])\n\n    if ASSUMPTION_1:\n        # 获得速度的百分位数\n        velocity = final_data[\"velocity\"]\n        velocity_percentile = np.percentile(velocity, ASSUMPTION_1_QUANTILE)\n\n        for i in range(data_length):\n            if velocity[i] >= velocity_percentile:\n                acc_starting_idx = i\n                break\n\n    score = 0\n\n    thw = final_data[\"thw\"][acc_starting_idx:]\n    velocity = final_data[\"velocity\"][acc_starting_idx:]\n    accelration_x = final_data[\"acceleration_x\"][acc_starting_idx:]\n    accelration = final_data[\"acceleration\"][acc_starting_idx:]\n    jerk = final_data[\"jerk\"][acc_starting_idx:]\n\n    # τ_min≥1 & 稳态跟车时距在1.5~2.2s\n    for idx, val in enumerate(velocity):\n        if val >= V_LOW_LB:\n            if thw[idx] is not None and (\n                thw[idx] < THW_STABLE_LB or thw[idx] > THW_STABLE_UB\n            ):\n                # print(f\"ACC_Evaluation: thw(={thw[idx]}) is not in the range of [1.5, 2.2]\")\n                return score + 1\n        else:\n            # ACC进行正向加速操作的前提是车速大于V_LOW\n            if accelration_x[idx] > 0:\n                # print(f\"ACC_Evaluation: acceleration_x(={accelration_x[idx]}) is not less or equal than 0\")\n                return score + 2\n            if thw[idx] is not None and thw[idx] < THW_MIN_LB:\n                # print(f\"ACC_Evaluation: thw(={thw[idx]}) is less than 1\")\n                return score + 3\n\n    score += 10\n\n    # accerlation 以两秒为长度采样求均值\n    game_time = final_data[\"game_time\"][acc_starting_idx:]\n    j = 0\n    k = 0\n    mean_accerlation = 0\n    mean_jerk = 0\n    for i, val in enumerate(game_time):\n        while j < len(game_time) and game_time[j] < val + 2:\n            j += 1\n        while k < len(game_time) and game_time[k] < val + 1:\n            k += 1\n\n        if j != len(game_time):\n            # 选出i到j之间加速度为负的数据,并求平均\n            mean_accerlation = []\n            for l1 in range(i, j):\n                if accelration[k] < 0:\n                    mean_accerlation.append(accelration[l1])\n            if len(mean_accerlation) != 0:\n                mean_accerlation = sum(mean_accerlation) / len(mean_accerlation)\n\n        if k != len(game_time):\n            # 选出i到k之间减速度变化率为负的数据,并求平均\n            mean_jerk = []\n            for l2 in range(i, k):\n                if jerk[k] < 0:\n                    mean_jerk.append(jerk[l2])\n            if len(mean_jerk) != 0:\n                mean_jerk = sum(mean_jerk) / len(mean_jerk)\n\n        # 平均减速度不大于3.0m/s^2,按2s采样\n        if mean_accerlation < 0 and mean_accerlation < -MEAN_DEACC_MAX_UB:\n            # print(f\"ACC_Evaluation: mean_accerlation(={mean_accerlation}) is less than -3.0\")\n            return score + 1\n\n        # 平均减速度变化率不大于2.5m/s^3,按1s采样\n        if mean_jerk < 0 and mean_jerk < -MEAN_JERK_MAX_UB:\n            # print(f\"ACC_Evaluation: mean_jerk(={mean_jerk}) is less than -2.5\")\n            return score + 2\n\n        # 加速度不大于2.0m/s^2\n        if accelration_x[i] > ACC_MAX_UB:\n            # print(f\"ACC_Evaluation: acceleration_x(={accelration_x[i]}) is greater than 2.0\")\n            return score + 3\n\n    # 弯道时的情况需要知道道路曲率,无法计算\n\n    score = success_value\n\n    if comparison_operator(score, success_value):\n        score = 100\n    return score\n"
}

示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request POST '/evaluates/customer_criteria' \
--header 'Authorization: bearer {{token}}' \
--header 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "script_20240819_616",
    "name_en": "script_20240819_616",
    "desc": "test",
    "desc_en": "test",
    "script_content": "#!/usr/bin/env python\nimport operator\nimport numpy as np\n\n\n# ACC评估指标\n# 参考:GB/T 20608-2006 智能运输系统 自适应巡航控制系统 性能要求与检测方法\ndef ACC_Evaluation(\n    final_data: dict = {}, success_value: float = 60, comparison_operator=operator.ge\n) -> float:\n    \"\"\"\n\n    Args:\n        final_data: 场景运行整个过程 ego_vehicle 的所有数据,格式如下:\n            {\n            \"x\": [],    location 的 x 方向值\n            \"y\": [],    location 的 y 方向值\n            \"z\": [],    location 的 z 方向值\n            \"ttc\": [], 最小预期碰撞用时,自车与障碍物之间的距离除以相对速度得到TTC (Time to collision),取最小值,如果不存在前车,则为 None\n            \"thw\": [], 最小车头时距,两车车距 /本车的车速得到 THW (Time headway),取最小值,如果不存在前车,则为 None。\n            \"yaw\": [],                  偏航角度,单位弧度\n            \"roll\": [],                 滚转角度,单位弧度\n            \"pitch\": [],                俯仰角度,单位弧度\n            \"jerk\": [],                 加速度变化率\n            \"jerk_x\": [],               加速度变化率 x 方向值\n            \"jerk_y\": [],               加速度变化率 y 方向值\n            \"jerk_z\": [],               加速度变化率 z 方向值\n            \"brake\": [],                刹车 [0.0, 1.0] 之间取值\n            \"steer\": [],                方向 [-1.0, 1.0] 之间取值\n            \"throttle\": [],             油门 [0.0, 1.0] 之间取值\n            \"game_time\": [],            仿真时间,单位 s\n            \"velocity\": [],             车辆速度,单位 m/s\n            \"velocity_x\": [],           车辆速度 x 方向值\n            \"velocity_y\": [],           车辆速度 y 方向值\n            \"velocity_z\": [],           车辆速度 z 方向值\n            \"acceleration\": [],         车辆加速度,单位  m/s^2\n            \"acceleration_x\": [],       车辆加速度 x 方向值\n            \"acceleration_y\": [],       车辆加速度 y 方向值\n            \"acceleration_z\": [],       车辆加速度 z 方向值\n            \"relative_distance\": [],    相对前车距离,如果不存在前车,则为None\n            \"relative_velocity\": [],    相对前车速度,如果不存在前车,则为None\n            \"front_vehicles_count\": [], 前车数量\n        }\n\n        success_value: 该指标的期望成功值\n        comparison_operator: 比较操作符,可选择的值类型有\n            operator.gt: 表示大于 \"greaterThan\"\n            operator.lt: 表示小于 \"lessThan\"\n            operator.eq: 表示等于 \"equalTo\"\n            operator.ge: 表示大于等于 \"greaterOrEqual\"\n            operator.le: 表示小于等于 \"lessOrEqual\"\n            operator.ne: 表示不等于 \"notEqualTo\"\n\n    Returns:\n        float: 指标得分,[0, 100] 之间的浮点型数据\n    \"\"\"\n    V_LOW_LB = 5\n    THW_MIN_LB = 1.0\n    THW_STABLE_LB = 1.5\n    THW_STABLE_UB = 2.2\n    MEAN_DEACC_MAX_UB = 3.0\n    MEAN_JERK_MAX_UB = 2.5\n    ACC_MAX_UB = 2.0\n\n    # 假设1:第一个大于 ASSUMPTION_1_QUANTILE 的速度后开始开启ACC\n    ASSUMPTION_1 = True\n    ASSUMPTION_1_QUANTILE = 20\n\n    acc_starting_idx = 0\n    data_length = len(final_data[\"velocity\"])\n\n    if ASSUMPTION_1:\n        # 获得速度的百分位数\n        velocity = final_data[\"velocity\"]\n        velocity_percentile = np.percentile(velocity, ASSUMPTION_1_QUANTILE)\n\n        for i in range(data_length):\n            if velocity[i] >= velocity_percentile:\n                acc_starting_idx = i\n                break\n\n    score = 0\n\n    thw = final_data[\"thw\"][acc_starting_idx:]\n    velocity = final_data[\"velocity\"][acc_starting_idx:]\n    accelration_x = final_data[\"acceleration_x\"][acc_starting_idx:]\n    accelration = final_data[\"acceleration\"][acc_starting_idx:]\n    jerk = final_data[\"jerk\"][acc_starting_idx:]\n\n    # τ_min≥1 & 稳态跟车时距在1.5~2.2s\n    for idx, val in enumerate(velocity):\n        if val >= V_LOW_LB:\n            if thw[idx] is not None and (\n                thw[idx] < THW_STABLE_LB or thw[idx] > THW_STABLE_UB\n            ):\n                # print(f\"ACC_Evaluation: thw(={thw[idx]}) is not in the range of [1.5, 2.2]\")\n                return score + 1\n        else:\n            # ACC进行正向加速操作的前提是车速大于V_LOW\n            if accelration_x[idx] > 0:\n                # print(f\"ACC_Evaluation: acceleration_x(={accelration_x[idx]}) is not less or equal than 0\")\n                return score + 2\n            if thw[idx] is not None and thw[idx] < THW_MIN_LB:\n                # print(f\"ACC_Evaluation: thw(={thw[idx]}) is less than 1\")\n                return score + 3\n\n    score += 10\n\n    # accerlation 以两秒为长度采样求均值\n    game_time = final_data[\"game_time\"][acc_starting_idx:]\n    j = 0\n    k = 0\n    mean_accerlation = 0\n    mean_jerk = 0\n    for i, val in enumerate(game_time):\n        while j < len(game_time) and game_time[j] < val + 2:\n            j += 1\n        while k < len(game_time) and game_time[k] < val + 1:\n            k += 1\n\n        if j != len(game_time):\n            # 选出i到j之间加速度为负的数据,并求平均\n            mean_accerlation = []\n            for l1 in range(i, j):\n                if accelration[k] < 0:\n                    mean_accerlation.append(accelration[l1])\n            if len(mean_accerlation) != 0:\n                mean_accerlation = sum(mean_accerlation) / len(mean_accerlation)\n\n        if k != len(game_time):\n            # 选出i到k之间减速度变化率为负的数据,并求平均\n            mean_jerk = []\n            for l2 in range(i, k):\n                if jerk[k] < 0:\n                    mean_jerk.append(jerk[l2])\n            if len(mean_jerk) != 0:\n                mean_jerk = sum(mean_jerk) / len(mean_jerk)\n\n        # 平均减速度不大于3.0m/s^2,按2s采样\n        if mean_accerlation < 0 and mean_accerlation < -MEAN_DEACC_MAX_UB:\n            # print(f\"ACC_Evaluation: mean_accerlation(={mean_accerlation}) is less than -3.0\")\n            return score + 1\n\n        # 平均减速度变化率不大于2.5m/s^3,按1s采样\n        if mean_jerk < 0 and mean_jerk < -MEAN_JERK_MAX_UB:\n            # print(f\"ACC_Evaluation: mean_jerk(={mean_jerk}) is less than -2.5\")\n            return score + 2\n\n        # 加速度不大于2.0m/s^2\n        if accelration_x[i] > ACC_MAX_UB:\n            # print(f\"ACC_Evaluation: acceleration_x(={accelration_x[i]}) is greater than 2.0\")\n            return score + 3\n\n    # 弯道时的情况需要知道道路曲率,无法计算\n\n    score = success_value\n\n    if comparison_operator(score, success_value):\n        score = 100\n    return score\n"
}'

返回响应

🟢200成功
application/json
Body
object {0}
示例
{
    "code": 200,
    "result": {
        "user_id": 1,
        "desc": "test",
        "company_id": 1,
        "modified_at": "2024-08-21T15:29:43.286782+08:00",
        "created_at": "2024-08-21T15:29:43.286765+08:00",
        "invalid": 0,
        "name": "script_20240819_616",
        "script_path": "./oasis_data/server/evaluation_criteria/customer_scripts/1/script_20240819_616.py",
        "system_data": false,
        "name_en": "script_20240819_616",
        "desc_en": "test",
        "id": 12
    },
    "message": ""
}
修改于 2024-11-08 09:34:25
上一页
获取用户信息
下一页
删除自定义评价规则
Built with