Skip to main content

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 日志导出(诊断)

SDK 会在 out_dir 中写入一个 flash_<serial>_<YYYY-MM-DD_HHMMSS>.jsonl 文件。省略 out_dir 时,文件保存到 ~/.wuji/logs。 SDK 先写入临时文件,导出完成后再将其保存为 JSONL 文件。导出失败时,SDK 会自动清理临时文件,输出目录中不会出现残缺的导出结果。
固件 v2.6.0 及更高版本支持同一设备的并发导出。更早的固件请依次导出。多个会话同时导出同一设备的日志时,SDK 会自动重试。若重试后仍无法完成,本次导出会报设备忙。SDK 会清除临时文件,不会保留未完成的日志。
日志导出要求设备固件和 Wuji SDK 使用兼容版本。版本不匹配时,导出会报错且不会生成日志文件。请同步升级设备固件和 Wuji 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 持续增加 = 刷新本身在失败。
计数器饱和,不回绕:本表所有计数达到上限后即停在上限(16 位的 e2e_reordered、e2e_duplicates、rpc_retries、rpc_timeouts、comm_get_failures 停在 65535,32 位的停在 4294967295),不会归零重新计数。1 kHz 流长时间运行时确实可能触顶,因此应按两次采样之间的增量判读,而非当作全生命周期的绝对累计值。

异常处理

所有 SDK 操作错误统一抛 WujiException,消息中携带错误类型前缀(Disconnected、Timeout、PathNotFound、SchemaMismatch、SerializeError、…)。业务侧按需 try / except 即可。
完整异常类型清单见 Wuji SDK 附录 — Python 异常类型,断开后的重连写法见 Wuji SDK 最佳实践 — 重连策略。

设备故障码

关节诊断的 error_code_current 与错误历史记录的 error_code 都是 u16 设备故障码,用 WujiHand2.describe_error() 解码。 设备故障码按 0xSCNN 布局,但不要自行拆解 hex 位——describe_error() 返回的 severity 与 clear_policy 字段以字符串形式携带同样信息,布局变化时仍然正确。把码值当作不透明标识:记录日志、展示给用户、写进故障报告。解码成功时用返回的 severity 与 clear_policy 判断处置方式。describe_error() 返回 None(未知码)时不要访问这些字段,保留原始数值用于记录与上报。
Python:本页前文已展示 Python 接口。