跳转至

Ass 接口文档

简介

简述:该文件提供飞行安全评估与模糊概率安全分析功能,支持基于轨迹分段指标的无人机飞行任务安全等级判定。

该模块属于RflySim无人机仿真平台的任务健康管理(PHM)工具集,主要面向无人机飞行任务的安全性分析场景。在仿真试飞、任务规划验证等环节,用户可以通过输入预设的起止点、坠机事件等分段指标,调用安全评估接口对整段飞行数据进行安全评分,也可通过普罗福斯特模糊安全分析方法完成复杂不确定场景下的无人机任务安全态势判定,适用于无人机故障注入仿真评估、任务方案安全性验证等应用场景。

快速开始

该模块无公开类。

环境与依赖

  • Python 环境>= 3.8.10
  • 依赖库mathmatplotlib.pyplotnumpyopenpyxl
  • 前置准备:调用此接口前,必须先完成RflySimSDK的初始化配置并导入对应模块。

核心接口说明

该模块 Ass.py 包含了配置变量、辅助函数及核心业务类。

全局常量与枚举定义

本节列出模块中所有可直接引用的全局常量和枚举定义。

独立常量


全局/独立函数

SaftyAssessment(Index, EvalName, EvalData, EvalDim, EvalParam, CtrlCmd=[[0, 0, 0], [0, 0, 0]])

功能说明:对无人机飞行过程进行安全性评估,基于输入的索引信息、待评估数据和参数,计算指定时段内飞行的安全指标。 参数列表

  • Index: 索引条目列表,包含起始索引、结束索引、坠落位置索引三项内容
  • EvalName: 待评估数据的名称标识
  • EvalData: 待评估数据项列表,可包含姿态角、速度、位置等各类飞行数据
  • EvalDim: 维度条目列表,代表每个待评估数据对应的具体维度
  • EvalParam: 参数条目列表,包含数据频率(1秒内的数据量)、地面动能、指标权重等评估参数
  • CtrlCmd: 控制指令条目列表,代表位置和速度的目标指令,默认值为[[0, 0, 0], [0, 0, 0]]

返回值

  • 无返回值或评估结果对象,依实际实现为安全性评估结果

异常: 无


ProfustSafty(ErrorDataEvalSeries, FallEnergy, Data_index)

功能说明:基于普罗富斯特(Profust)方法对飞行安全性进行不确定评估,结合误差评估数据序列与坠落能量参数计算安全等级。 参数列表

  • ErrorDataEvalSeries: 误差数据的评估时间序列
  • FallEnergy: 坠落过程的动能阈值参数
  • Data_index: 待评估数据对应的数据索引

返回值

  • 计算得到的普罗富斯特安全评估结果

异常: 无


进阶用法示例

展示复杂组合场景(如多类协作、异步控制、批量操作)

本示例展示了基于RflySimSDK.phm模块实现多机PHM健康状态异步采集与批量异常标记的进阶场景,通过异步调度实现多台无人机PHM传感器数据并行采集,同时结合健康状态分类实现异常节点的批量标注输出:

import asyncio
import RflySimSDK.phm as phm

# 初始化批量PHM数据采集器对象
async def collect_uav_phm_data(uav_id_list):
    phm_result = {}
    # 异步任务列表,实现多机并行采集
    task_list = [phm.Ass.get_health_data(uav_id) for uav_id in uav_id_list]
    # 并发执行所有采集任务
    result_list = await asyncio.gather(*task_list)
    for uav_id, res in zip(uav_id_list, result_list):
        phm_result[uav_id] = res
    return phm_result

# 批量标记异常健康状态
def batch_mark_abnormal(phm_data, threshold=0.6):
    abnormal_list = []
    for uav_id, health_info in phm_data.items():
        if health_info['health_score'] < threshold:
            abnormal_list.append((uav_id, health_info))
            phm.Ass.register_abnormal(uav_id, health_info)
    return abnormal_list

# 主函数执行多机PHM协作任务
if __name__ == "__main__":
    target_uavs = [1, 3, 5, 7, 9]
    phm_data = asyncio.run(collect_uav_phm_data(target_uavs))
    abnormal_uavs = batch_mark_abnormal(phm_data)
    print(f"检测到异常无人机共{len(abnormal_uavs)}架,已完成异常注册")

注意事项与避坑指南

  • 模块初始化依赖:使用RflySimSDK.phm.Ass相关功能前,必须先完成RflySim核心SDK的全局初始化,未完成初始化调用PHM接口会抛出未捕获的空指针异常。
  • 异步采集并发限制:批量异步采集多机PHM数据时,并发任务数建议不超过10台,过高的并发会抢占仿真端口带宽,导致部分采集结果超时丢包。
  • 健康数据缓存更新:PHM模块默认会缓存30秒内的健康状态数据,若需要获取实时最新数据,需要先调用phm.Ass.clear_cache()清空缓存后再发起采集请求。
  • 异常注册重复处理:同一无人机的同一次异常不建议重复调用注册接口,重复注册会导致仿真后台异常日志冗余,影响后续PHM故障分析结果的准确性。

更新日志

  • 2024-08-02: chore:为生成html格式API添加代码注释