joint_diagnostics(SUB)
关节诊断流:订阅逐关节的状态字 / 电流 / 母线电压 / 温度 / 错误码。帧变长,仅含在线关节,用每条的nid 定位关节。本流与 joint_states 共用同一条设备流,调低其中一个的推送频率,另一个会同步降低,见 joint_states(SUB)。
error_code_current 用静态方法 WujiHand2.describe_error(code) 解码,返回对象含 code、错误名、desc、cause、resolution、severity(Warning / DeferredStop / ImmediateStop / Fatal)与 clear_policy(AutoClear / ManualClear / NonClearable)。用 cause 与 resolution 确认故障原因和处理方式。未知错误码返回 None。直接打印诊断条目对象时,错误码按 16 进制显示。
关节角请用
joint_states 流的 position,诊断流不含关节角。comm_diag(GET,1 Hz)
通信诊断:每秒返回 5 根手指的吞吐 / 错误率。Flash 日志导出(诊断)
out_dir 中写入一个 flash_<serial>_<YYYY-MM-DD_HHMMSS>.jsonl 文件。省略 out_dir 时,文件保存到 ~/.wuji/logs。
SDK 先写入临时文件,导出完成后再将其保存为 JSONL 文件。导出失败时,SDK 会自动清理临时文件,输出目录中不会出现残缺的导出结果。
固件 v2.6.0 及更高版本支持同一设备的并发导出。更早的固件请依次导出。多个会话同时导出同一设备的日志时,SDK 会自动重试。若重试后仍无法完成,本次导出会报设备忙。SDK 会清除临时文件,不会保留未完成的日志。
数据类型
JointDiagnosticsFrame / JointDiagnosticsEntry
关节诊断帧:hand.joint_diagnostics().subscribe() 流的帧类型。变长,仅含在线关节。
HandCommunicationDiagnostics
通信诊断数据。StatusWord
状态字:JointDiagnosticsEntry 的status_word 字段类型,SDK 暴露的公开状态视图。
Hand2CommSummary
帧级通信健康摘要:JointDiagnosticsFrame 的comm 字段类型,同时覆盖设备内部总线与 SDK 本地端到端(以太网)两段。设备内部快照由 SDK 常驻任务以 1 Hz 自动刷新,无需手动轮询。
设备内部字段的判读:
age_ms 以及每关节的 comm_* 字段同属一份快照,由 SDK 以 1 Hz 刷新。固件升级进行期间会有意跳过这次刷新,因此短暂的陈旧值属预期状态而非故障。用 comm_get_failures 区分两种情况:age_ms 增大而 comm_get_failures 不变 = 正在有意跳过,comm_get_failures 持续增加 = 刷新本身在失败。异常处理
所有 SDK 操作错误统一抛WujiException,消息中携带错误类型前缀(Disconnected、Timeout、PathNotFound、SchemaMismatch、SerializeError、…)。业务侧按需 try / except 即可。
设备故障码
关节诊断的error_code_current 与错误历史记录的 error_code 都是 u16 设备故障码,用 WujiHand2.describe_error() 解码。
设备故障码按 0xSCNN 布局,但不要自行拆解 hex 位——describe_error() 返回的 severity 与 clear_policy 字段以字符串形式携带同样信息,布局变化时仍然正确。把码值当作不透明标识:记录日志、展示给用户、写进故障报告。解码成功时用返回的 severity 与 clear_policy 判断处置方式。describe_error() 返回 None(未知码)时不要访问这些字段,保留原始数值用于记录与上报。
- Python
- C
Python:本页前文已展示 Python 接口。