診断システム¶
ROS 2標準の diagnostics を使い、計算PCとロボットの状態を監視します。診断結果は /diagnostics_agg に集約され、異常な機体を計画から除外するために使われます。
可用性と循環参照¶
診断の入力に診断結果を使うと、診断結果が可用性を変え、その可用性が診断入力を変える循環が生じます。入力ソースと診断結果を別の状態として保持してください。
Vision/Tracker/feedback ──> available_vision, available_tracker, available_feedback
│
▼
Diagnostic Publisher
│
▼
/diagnostics_agg
│
▼
available_hardware
available():(available_vision || available_tracker) && available_hardwareavailableStrict():available_vision && available_hardware && available_feedbackavailableLoose():available_vision || available_tracker
available_hardware は診断で ERROR が記録されたときだけ false になります。WARN は計画から機体を除外せず、OK でエラー状態を解除します。
監視対象¶
- 計算PC: Vision、AI planner、local planner、主要トピックの配信状態
- ロボット:
robot_{:02d}/communication、battery、robot_error - 詳細な判定値・エラー名・集約階層は実装と設定ファイルを正本とします。
確認¶
実機での異常は、Craneの指令生成、UDP送信、ロボット側中継、フィードバック受信の順に切り分けます。