Skip to content

健康诊断模块

This content is not available in your language yet.

本页面放置了系统健康诊断模块(health diagnosis,HDS)包含的话题与服务的相关文档协议,以支持系统的健康诊断相关功能。

本模块在旗舰款上位于 orin 开发板上,基础款上位于 x86 开发板上,http 后端监听的端口均为 50587。

话题名话题描述订阅 or 发布消息类型备注通信后端
/aima/hds/exception模块异常码的上报接口订阅aimdk::protocol::ModuleExceptionChannelros2,http
接口名接口描述请求消息类型答复消息类型备注通信后端
pb:/aimdk.protocol.HDSService/GetAlertList获取当前的告警列表aimdk::protocol::GetAlertListReqaimdk::protocol::GetAlertListRsphttp
pb:/aimdk.protocol.HDSService/ClearAlert尝试清除当前的告警aimdk::protocol::ClearAlertReqaimdk::protocol::ClearAlertRsp如果告警清除后,继续上报,则清除失败http
pb:/aimdk.protocol.HDSService/GetTotalAlertList获取系统中所有的告警(包含历史)aimdk::protocol::GetTotalAlertListReqaimdk::protocol::GetTotalAlertListRsp需要传入 start_timestamp 与 limit_size 进行分页http
pb:/aimdk.protocol.HDSService/GetAlertCount获取系统中当前存在的所有告警个数aimdk::protocol::CommonRequestaimdk::protocol::GetAlertCountRsphttp
pb:/aimdk.protocol.HDSService/GetExceptionEvent获取系统中的故障事件aimdk::protocol::GetExceptionEventReqaimdk::protocol::GetExceptionEventRsp需要传入 start_timestamp 与 limit_size 进行分页http
pb:/aimdk.protocol.HDSService/SetShieldAlertLevel屏蔽某个等级及其之下的所有告警aimdk::protocol::SetShieldAlertLevelReqaimdk::protocol::CommonResponse谨慎使用,一般无需调用,仅由 SM 调用http

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

告警影响的模块

NameNumberDescription
AlertImpactModule_UNDEFINED0
AlertImpactModule_Task_Start1任务启动
AlertImpactModule_Task_Run2任务执行
AlertImpactModule_Autonomous_Move3自主移动
AlertImpactModule_Remote_Control_Move4遥控移动
AlertImpactModule_Single_Arm_Action5单臂动作
AlertImpactModule_Dual_Arm_Action6双臂动作
AlertImpactModule_Head_Action7头部动作
AlertImpactModule_Waist_Action8腰部动作
AlertImpactModule_Leg_Action9腿部动作
AlertImpactModule_Mapping_And_Loc10地图定位
AlertImpactModule_Obstacle_Avoidance11障碍物躲避
AlertImpactModule_Motion_Control12运动控制
AlertImpactModule_Skill13技能

降级信息

FieldTypeDescription
timestampaimdk::protocol::Timestamp该降级决策产生的时间戳
codeuint32降级策略码,映射一组降级动作
alert_levelaimdk::protocol::AlertLevel告警级别,依据当前最紧急的降级策略确定
warn_policyuint32交互告警类型

降级信息消息

topic: /aima/hds/fallback

FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::Fallback数据内容

单核CPU监控指标

FieldTypeDescription
cpuiduint32CPU id,与cpu_info列表中的索引一致
usageuint32CPU核心使用率百分比
freq_mhzuint32CPU平均频率,mhz
tempuint32CPU核心温度,°C
usage_usr_spaceuint32CPU使用率-用户空间
usage_sys_spaceuint32CPU使用率-内核空间
usage_idleuint32CPU使用率-空闲

CPU监控指标

FieldTypeDescription
cpu_infosaimdk::protocol::CpuCoreUsage[]
avg_freq_mhzuint32平均CPU频率, mhz
interruptsuint32中断数

内存使用指标

FieldTypeDescription
usagefloat内存使用百分比
swap_usagefloatswap空间使用百分比
total_mem_mbuint64总内存大小MB
available_mem_mbuint64可用内存大小

磁盘分区使用指标

FieldTypeDescription
partition_namestring分区名称
read_mbsfloat分区读取速度,MB/s
write_mbsfloat分区写入速度,MB/s
usagefloat分区使用率
read_timesuint64读请求数量/s
write_timesuint64写请求数量/s
read_await_us_totaluint64读延迟(微秒)
write_await_us_totaluint64写延迟(微秒)
read_await_us_maxuint64最大读延迟(微秒)
write_await_us_maxuint64最大写延迟(微秒)

磁盘使用指标

FieldTypeDescription
partition_infosaimdk::protocol::PartitionUsage[]分区使用情况
total_read_mbsfloat总体读取速度,MB/s
total_write_mbsfloat总体写入速度,MB/s
max_partition_read_awaituint64最大读延迟(微秒)
max_partition_write_awaituint64最大写延迟(微秒)
FieldTypeDescription
nic_namestring网卡接口名称
upload_speed_mbsfloat上传速度MB/s
download_speed_mbsfloat上传速度MB/s

网络使用指标

FieldTypeDescription
nic_infosaimdk::protocol::NetworkIterfaceUsage[]

电池状态指标

FieldTypeDescription
percentfloat剩余电量
voltagefloat电池电压大小, mV
currentfloat电池电流大小, mA
tempfloat电池温度, °C
is_pluginbool是否插入外接电源
FieldTypeDescription
app_namestring应用名称,注意不是进程名称
cpu_usagefloat应用的CPU使用率
mem_usagefloat应用的内存使用率,百分比
piduint64进程pid
thread_countuint32使用的线程数
fd_countuint32使用fd资源数量

应用进程列表

FieldTypeDescription
app_infosaimdk::protocol::AppProcInfo[]进程列表信息
NameNumberDescription
TYPE_SCHED_NORMAL0
TYPE_SCHED_FIFO1
TYPE_SCHED_RR2
TYPE_SCHED_BATCH3
TYPE_SCHED_IDLE5
TYPE_SCHED_DEADLINE6
FieldTypeDescription
app_namestring应用名称,注意不是进程名称
cpu_usagefloat应用的CPU使用率
mem_usagefloat应用的内存使用率,百分比
mem_usage_kbfloat应用的内存使用量,kb
piduint64进程pid
thread_countuint32使用的线程数
cpu_sched_policyaimdk::protocol::SCHED_POLICY进程调度策略
cpu_sched_priorityuint32进程调度优先级
FieldTypeDescription
app_hearbeatsaimdk::protocol::AppHeartBeatInfo[]
FieldTypeDescription
app_namestring应用名称,注意不是进程名
piduint64进程id
gpu_mem_usage_mbfloatGPU内存使用量,MB

Nv卡的GPU模式

NameNumberDescription
GPUPowerMode_MAXN0最大性能,30W目前
GPUPowerMode_15W1
GPUPowerMode_10W2
GPUPowerMode_5W3
GPUPowerMode_UNKNOWN99
FieldTypeDescription
app_gpu_infosaimdk::protocol::GpuProcInfo[]GPU资源使用列表
gpu_usagefloat系统GPU使用率
gpu_mem_use_percentfloat系统GPU内存使用率
mem_bandwidth_useagefloatGPU内存带宽使用率
tempuint32GPU温度
power_modeaimdk::protocol::GPUPowerMode电源模式
FieldTypeDescription
gpu_infosaimdk::protocol::GpuDeviceUsage[]
NameNumberDescription
SystemMsgType_NONE0
SystemMsgType_CPU_USAGE1
SystemMsgType_MEMORY_USAGE2
SystemMsgType_DISK_USAGE3
SystemMsgType_NETWORK_USAGE4
SystemMsgType_BATTERY_USAGE5
SystemMsgType_PROCESS_LIST6
SystemMsgType_HEARTBEAT_LIST7
SystemMsgType_GPU_USAGE8

每秒上报/aima/hds/system_status_monitor_{orin/x86}

FieldTypeDescription
timestampuint64时间戳,ms
cpu_usageaimdk::protocol::CpuUsage
memory_usageaimdk::protocol::MemoryUsage
disk_usageaimdk::protocol::DiskUsage
network_usageaimdk::protocol::NetworkUsage
battery_usageaimdk::protocol::BatteryUsage
process_listaimdk::protocol::ProcessList
heartbeat_listaimdk::protocol::AppHeartBeatList
gpu_usageaimdk::protocol::GpuUsage
gist_msg_typeaimdk::protocol::SystemMsgType每个插件通过SytemStatusChannel来上报自己的消息片段;汇总后的系统消息是没有gist的
gist_sequint64

屏蔽异常码请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
codestring异常码
is_permanentbool是否永久屏蔽(true: 永久屏蔽, false: 临时屏蔽,程序重启后失效) 默认永久屏蔽
is_blockedbool是否屏蔽

aimdk::protocol::GetBlockedExceptionCodeListRsp

Section titled “aimdk::protocol::GetBlockedExceptionCodeListRsp”

获取屏蔽异常码列表响应体

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
code_liststring[]屏蔽的异常码列表

设置调试模式请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
is_debugbool是否为调试模式

设置屏蔽告警等级的请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
levelaimdk::protocol::AlertLevel

查询系统中存活的告警事件响应体

FieldTypeDescription
headeraimdk::protocol::ResponseHeader
total_countint32告警总数
active_countint32活跃告警数
cleared_countint32清除告警数

清除告警请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
idstring要清除的告警码ID
FieldTypeDescription
datastring处理结果

清除告警响应体

FieldTypeDescription
headeraimdk::protocol::ResponseHeader
dataaimdk::protocol::ClearAlertRspData

获取当前告警信息请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
FieldTypeDescription
alertsaimdk::protocol::Alert[]

获取当前告警信息响应体

FieldTypeDescription
headeraimdk::protocol::ResponseHeader
dataaimdk::protocol::GetAlertListRspData当前所有的告警列表

获取所有告警信息请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
start_timestampuint64要查询告警的开始时间戳
limit_sizeint32查询个数限制
FieldTypeDescription
alertsaimdk::protocol::Alert[]

获取所有告警信息响应体

FieldTypeDescription
headeraimdk::protocol::ResponseHeader
dataaimdk::protocol::GetTotalAlertListRspData

查询指定异常事件请求体

FieldTypeDescription
headeraimdk::protocol::RequestHeader
start_timestampuint64要查询告警的开始时间戳
limit_sizeint32查询个数限制
querystring查询条件

异常信息,展示给aim-master

FieldTypeDescription
timestampaimdk::protocol::Timestamp该异常产生的时间戳
typeaimdk::protocol::ExceptionEvent::Type
codestring异常码
module_idstring异常码对应的模块ID
sub_codestring异常码对应的模块异常码
module_namestring异常码上报的模块名称
idstring异常ID
enum_namestring异常描述(可能为空)
infostring异常信息(可能为空)
alert_liststring该异常码产生的告警
is_blockedbool是否屏蔽(true: 屏蔽, false: 不屏蔽)
NameNumberDescription
UNKNOWN0
Appear1
Disappear2
FieldTypeDescription
event_listaimdk::protocol::ExceptionEvent[]

查询指定异常事件响应体

FieldTypeDescription
headeraimdk::protocol::ResponseHeader
dataaimdk::protocol::GetExceptionEventRspData

告警话题数据(/aima/hds/alert) 由告警系统产生并发布

当告警产生/消失时,会发送该Topic

FieldTypeDescription
alertaimdk::protocol::Alert
alert_countuint32当前系统中告警的个数

告警状态

告警状态分为三种:未知、告警中、已清除

NameNumberDescription
AlertState_UNDEFINED0未知(默认状态)
AlertState_ACTIVE1告警中
AlertState_CLEARED2已清除
AlertState_ExceptionChanged3告警中异常变更
AlertState_Recovering4恢复中

告警等级(健康状态)

NameNumberDescription
AlertLevel_UNDEFINED0无告警
AlertLevel_FATAL1致命告警
AlertLevel_SERIOUS2严重告警
AlertLevel_WARNING3警告告警
AlertLevel_HIDDEN_DANGERS4当前系统存在隐患
AlertLevel_STATUS5当前系统存在状态类告警

告警解决方案

FieldTypeDescription
typestring
contentstring

告警展示类型

NameNumberDescription
AlertShowType_Normal0
AlertShowType_Toast1

告警信息

FieldTypeDescription
idstring告警ID
appeared_timestampuint64告警产生的时间辍
disappeared_timestampuint64告警消失的时间辍
alert_codestring告警码
stateaimdk::protocol::AlertState告警状态
exception_listaimdk::protocol::ModuleException[]当前告警包含的异常列表
descriptionstring告警描述
levelaimdk::protocol::AlertLevel告警等级
manual_clearbool是否支持手动清除
show_typeaimdk::protocol::AlertShowType告警展示类型
solution_listaimdk::protocol::AlertSolution[]告警解决方案列表

异常类型

NameNumberDescription
ExceptionType_Normal0正常类型 该类型异常需要周期性上报
ExceptionType_Trigger_Appear1触发式异常(异常产生时上报一次) 设置该异常为产生状态
ExceptionType_Trigger_Disappear2触发式异常(异常消失时上报一次) 设置该异常为消失状态

模块异常信息,由各个模块上报

FieldTypeDescription
timestampaimdk::protocol::Timestamp该异常产生的时间戳
typeaimdk::protocol::ExceptionType异常类型
module_iduint32模块ID
codeuint32模块异常码
infostring异常信息
module_namestring模块名称

系统健康zhan topic:

@deprecated TE,SM 在 v0.7 版本弃用后,删除该接口

FieldTypeDescription
headeraimdk::protocol::HeaderHeader 包含时间辍
alert_levelaimdk::protocol::AlertLevel告警等级
alert_impact_rangeaimdk::protocol::AlertImpactName[]告警影响范围
demotion_iduint32降级方案id

模块异常上报channel topic:(/aima/hds/exception) 告警系统订阅该话题

FieldTypeDescription
timestampaimdk::protocol::Timestamp该帧消息发布的时间辍
exception_listaimdk::protocol::ModuleException[]该帧异常包含的异常码列表

提供 Http Curl 示例, 如果在 ORIN 之外电脑上调用需要将 192.168.100.110 替换为实际的机器人 IP 地址,如果是在 ORIN 上使用,则不需要替换。

Terminal window
curl --location --request POST 'http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/GetAlertList' \
--header 'Content-Type: application/json' \
--data-raw '{}'

清除告警前,需要先获取到告警的 id, 可以通过 GetAlertList 获取到告警的 id。此接口为尝试清除告警,如果告警清除后,继续上报,则清除失败。

Terminal window
curl --location --request POST 'http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/ClearAlert' \
--header 'Content-Type: application/json' \
--data-raw '{"id":"d0062056-1d4f-43ec-a36c-18fc149a5781"}'

获取系统中所有的告警(包含历史)

Section titled “获取系统中所有的告警(包含历史)”
Terminal window
curl --location --request POST 'http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/GetTotalAlertList' \
--header 'Content-Type: application/json' \
--data-raw '{}'

获取系统中当前存在的所有告警个数

Section titled “获取系统中当前存在的所有告警个数”
Terminal window
curl --location --request POST 'http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/GetAlertCount' \
--header 'Content-Type: application/json' \
--data-raw '{}'
Terminal window
curl --location --request POST 'http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/GetExceptionEvent' \
--header 'Content-Type: application/json' \
--data-raw '{}'

如果系统中某个故障码误报,可以通过此接口屏蔽该故障码,屏蔽后,该故障码将不会上报给上层。 其中:

  • code 为故障码,可从 GetExceptionEvent 接口获取,
  • is_permanent 为是否永久屏蔽(true: 永久屏蔽, false: 临时屏蔽,程序重启后失效),
  • is_block 为是否屏蔽(true: 屏蔽, false: 取消屏蔽)。
Terminal window
curl --location --request POST 'http://192.168.100.110:50587/rpc/aimdk.protocol.HDSService/SetShieldExceptionCode' \
--header 'Content-Type: application/json' \
--data-raw '{
"code": "0x5100000005",
"is_permanent": true,
"is_block": true
}'