跳转到内容

7.10 故障诊断部分

机器人本身提供了基础的故障诊断和健康监测的能力,能够对一些基本的异常和故障进行监控,例如关节过温、传感器失效、系统占用持续过高、电池电量过低等。

针对故障诊断有两个基本概念,分别为 Alert 告警和 Exception 故障,Alert 是 Exception 的聚类,Alert 指代一大类故障,Exception 则是某个具体的故障,例如重定位失败就是一个 Alert,对应很多种不同失败原因,每个都是一个具体的 Exception。AimMaster 上显示的一般也是 Alert,Exception 会比较多,看起来也不太直观。 如果需要持续监控机器人的异常状态,建议每隔一段时间查询一次当前的告警列表(频率不要太高,推荐 0.2 Hz 及以下的频率)。

全量告警可在 orin 机上 /agibot/software/v0/config/hds_master/database/alert_info.yaml 文件中找到。

7.10.2 获取当前告警列表 RPC 接口

Section titled “7.10.2 获取当前告警列表 RPC 接口”
接口名 pb:/aimdk.protocol.HDSService/GetAlertList
功能概述 获取当前告警列表
接口类型 HTTP JSON RPC
URL http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/GetAlertList
入参
{}
出参
{
  "data": {
    "alerts": [
      {
        "id": "c39f6ccc-85d9-4976-a2e9-08f2906cc237",
        "appeared_timestamp": "1762933137153",
        "disappeared_timestamp": "0",
        "alert_code": "A2000003",
        "state": "AlertState_ACTIVE",
        "exception_list": [
          {
            "type": "ExceptionType_Normal",
            "module_id": 81,
            "code": 100,
            "info": "急停拍下",
            "module_name": "健康管理HDS"
          }
        ],
        "description": "急停拍下",
        "level": "AlertLevel_HIDDEN_DANGERS",
        "manual_clear": true,
        "show_type": "AlertShowType_Normal",
        "solution_list": [
          {
            "type": "txt",
            "content": "请逆时针旋转急停按钮解除急停状态。"
          }
        ]
      }
    ]
  }
}
  • id: 本条告警 id

  • appeared_timestamp: 告警出现的时间戳

  • disappeared_timestamp: 告警消失的时间戳

  • alert_code: 告警码

  • state: 告警状态

    • AlertState_UNDEFINED: 未知
    • AlertState_ACTIVE: 告警中
    • AlertState_CLEARED: 已清除
    • AlertState_ExceptionChanged: 告警中异常变更
    • AlertState_Recovering: 恢复中
  • exception_list: 异常列表

  • exception_list[i].type: 异常类型

    • ExceptionType_Normal: 正常类型 该类型异常需要周期性上报、
    • ExceptionType_Trigger_Appear: 触发式异常(异常产生时上报一次) 设置该异常为产生状态
    • ExceptionType_Trigger_Disappear: 触发式异常(异常消失时上报一次) 设置该异常为消失状态
  • exception_list[i].module_id: 异常模块 ID

  • exception_list[i].code: 模块异常码

  • exception_list[i].info: 异常信息

  • exception_list[i].module_name: 模块名称

  • description: 告警描述

  • level: 告警等级

    • AlertLevel_UNDEFINED: 无告警
    • AlertLevel_FATAL: 致命告警
    • AlertLevel_SERIOUS: 严重告警
    • AlertLevel_WARNING: 警告告警
    • AlertLevel_HIDDEN_DANGERS: 当前系统存在隐患
    • AlertLevel_STATUS: 当前系统存在状态类告警
  • manual_clear: 是否支持手动清除

  • show_type: 告警展示类型

    • AlertShowType_Normal
    • AlertShowType_Toast
  • solution_list: 解决方案

  • solution_list[i].type: 解决方案类型

  • solution_list[i].content: 解决方案内容

示例脚本 examples/hds/get_alert_list.sh
备注
接口名 pb:/aimdk.protocol.HDSService/ClearAlert
功能概述 尝试清除告警,需传入告警 id
接口类型 HTTP JSON RPC
URL http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/ClearAlert
入参
{
  "id": "c92f2fdd-cea5-4209-b02f-d0eb62ae18ce"
}
  • id: 需要填入具体的 alert 的 id,可通过 GetAlertList 接口获取
出参
{
  "header": {
    "code": "1",
    "msg": "clear alert failed!",
    "trace_id": "",
    "domin": ""
  },
  "data": {
    "data": "c92f2fdd-cea5-4209-b02f-d0eb62ae18ce"
  }
}
  • data: 传入的告警 id
  • header 中返回本次清除是否成功的信息,code 为 0 代表成功
示例脚本 examples/hds/clear_alert.sh
备注
  • 急停告警虽然 manual_clear 为 true,但是仍会清除失败,需手动解除急停后才能清除
  • 一般情况下请不要调用本接口进行清除操作,请完全理解告警含义后再考虑使用本接口进行清除

除上述 GetAlertListClearAlert 接口外,还有如下接口开放

  1. GetTotalAlertList :获取系统中所有告警,包含历史信息
  2. GetAlertCount:获取系统中当前存在的所有告警个数
  3. GetExceptionEvent:获取系统中的故障事件
  4. SetShieldAlertLevel:屏蔽某个等级及其之下的所有告警

但以上接口获取信息过于冗杂或使用不方便,推荐仅使用 GetAlertListClearAlert 接口进行基本告警信息的获取和清除操作,以上各个开放接口均有示例位于 examples/hds 目录下,不详细展示其出入参等。