センサーが値を返し続けているときほど、通信監視だけでは異常を見逃しやすい点が気になります。
先に結論
ロボットのセンサー異常は、単一の監視箇所に集約せず、通信・データ取得、値の妥当性、状態推定、センサー間整合性、行動・安全監視の複数層で検出する設計が適しています。各層で観測できる異常が異なるためです。
欠損、異常値、不一致は同じ故障として扱いません。欠損や遅延は鮮度低下、範囲外や急激な外れ値は測定拒否、センサー間不一致は比較と故障候補の隔離として扱います。安全機能を維持できるなら速度や機能を制限し、代替観測が使えなければ停止へ移行します。
なぜ検出層を分けるのか
センサーが停止した場合、メッセージの到着間隔や通信相手の生存性を監視する層で検出しやすくなります。しかし、センサーが値を送り続けていても、固定値や環境に対してもっともらしい誤値を出すことがあります。通信が正常でも、値の意味まで正常とは限りません。
逆に、状態推定層で観測値を拒否できても、複数センサーの不一致や、安全機能に必要な観測が残っているかは別途確認が必要です。異常検出と行動決定を分け、どの層がどの種類の異常を検出したかを診断情報として伝える構成が扱いやすくなります。
前提となる用語
本稿では、欠損をメッセージが届かない、または許容される鮮度を失った状態、範囲外を扱える値域から外れた状態、外れ値を推定状態などから大きく乖離した値、不一致を複数センサーや推定結果が整合しない状態とします。
ROSの診断メッセージ仕様であるREP-107は、診断状態をOK、WARN、ERROR、STALEに分類します。ただし、各状態で停止するか、速度を制限するか、継続するかまでは規定していません。診断状態と行動ポリシーは、システム側で対応付けます。
各層の検出責務
通信・データ取得層
メッセージが期待周期で届くか、通信相手が生存しているかを確認します。ROS 2のDeadline QoSは、連続するメッセージ間の許容最大時間を定義し、期限超過をイベントとして検出できます。Liveliness QoSは、パブリッシャーなど通信相手の生存性を監視します。
これらは到着間隔や生存性を扱う機能であり、値の妥当性やタイムスタンプの意味まで検証するものではありません。
センサー値の妥当性層
型、値域、更新状態、センサー固有の自己診断などを確認し、明らかに利用できない値を上位へ渡さない層です。ただし、範囲内に収まる固定値や誤値は、この検査だけでは十分に検出できません。
状態推定層
推定状態と観測値の差を調べます。robot_localizationの資料では、マハラノビス距離による拒否しきい値を設定し、予測状態から大きく外れたpose、twist、accelerationの測定値を拒否できます。通信が正常でも、推定と整合しない観測を取り込まないための方法です。
整合性・安全監視層
冗長センサーがあれば、複数入力の整合性を比較できます。PX4には、センサーの状態や整合性を監視し、投票で使用センサーを選び、不健全なセンサーを投票から除外し、必要に応じてフェイルセーフへ移行する実装があります。
Nav2 Collision Monitorには、入力が一定時間届かない場合にソースをstaleとして扱い、速度指令の制限や停止へ移行させる実装があります。いずれも特定のソフトウェア構成に依存する実装例であり、すべてのロボットへそのまま一般化できるわけではありません。
flowchart LR
A["センサー入力"] --> B["通信・データ取得層\n到着周期・生存性・タイムアウト"]
B --> C["センサー値の妥当性層\n型・範囲・更新状態"]
C --> D["状態推定層\n予測状態との差・外れ値拒否"]
D --> E["センサー間整合性監視層\n冗長入力・推定結果の比較"]
E --> F["行動・安全監視層\n安全機能の可用性を判定"]
B -. "欠損・遅延・配信停止" .-> G["STALEとして診断"]
C -. "範囲外" .-> H["異常値を上位へ渡さない"]
D -. "推定と大きく乖離" .-> I["測定値を推定更新から除外"]
E -. "センサー間不一致" .-> J["故障入力を隔離・冗長系を検討"]
F --> K{ "安全機能を維持できるか" }
K -->|"維持できる"| L["速度・加速度・可動範囲・自律機能を制限"]
K -->|"代替観測を利用できる"| M["冗長センサーへ切替"]
K -->|"必要な観測を確保できない"| N["停止"]
G --> F
H --> F
I --> F
J --> F異常種別と行動の比較
| 異常の種類 | 主な検出層 | 処理の例 | 行動の例 |
|---|---|---|---|
| 欠損・到着間隔超過 | 通信・安全監視 | STALE相当として鮮度を評価 | 速度制限、機能停止、停止 |
| 範囲外 | 値の妥当性 | 入力から除外 | 代替入力の検討、継続可否判定 |
| 急激な外れ値 | 状態推定 | イノベーションや距離で拒否 | 推定更新から除外、機能制限 |
| センサー間不一致 | 整合性監視 | 比較、故障候補の隔離 | 冗長系切替、必要なら停止 |
| 安全観測の喪失 | 行動・安全監視 | 安全機能の可用性を評価 | 保守的状態、停止 |
表の状態名と行動の対応は、REP-107の一般規則ではありません。許容時間や安全上の意味を、対象システムごとに定義する必要があります。
縮退運転の設計
縮退は、正常運転か即時停止かの二択ではありません。まず安全機能を維持できるかを判定し、維持できるなら速度、加速度、可動範囲、自律機能などを制限します。維持できない場合は代替観測を確認し、切り替え可能なら故障入力を隔離したうえで安全機能を再評価します。代替観測がなく、安全機能を保証できない場合は停止へ移行します。
stateDiagram-v2
[*] --> NORMAL
NORMAL: 正常運転
NORMAL --> STALE: 欠損・遅延を検出
NORMAL --> REJECT: 範囲外または推定と大きく乖離
NORMAL --> ISOLATE: センサー間不一致を検出
STALE: 古いデータとして扱う
REJECT: 測定値を推定更新から除外
ISOLATE: 故障センサーを隔離
STALE --> DEGRADED_RUN: 安全機能を維持できる
REJECT --> DEGRADED_RUN: 代替入力または推定で安全機能を維持できる
ISOLATE --> DEGRADED_RUN: 冗長センサーへ切り替えられる
STALE --> SAFE_STOP: 必要な安全観測を確保できない
REJECT --> SAFE_STOP: 必要な安全観測を確保できない
ISOLATE --> SAFE_STOP: 代替観測がなく安全機能を維持できない
DEGRADED_RUN: 速度・加速度・可動範囲・自律機能を制限
SAFE_STOP: 保守的な状態を経て停止
DEGRADED_RUN --> SAFE_STOP: 安全に必要な観測を喪失
DEGRADED_RUN --> NORMAL: 異常の解消を確認し正常運転へ戻す判断
note right of DEGRADED_RUN
縮退運転は正常運転と即時停止の中間状態
end noteROS 2のManaged Nodeは、Unconfigured、Inactive、Active、Finalizedなどの状態と、設定、アクティベーション、非アクティベーション、クリーンアップの遷移を持ちます。異常時にセンサー処理ノードを非アクティブ化したり、再設定したりする基盤にできますが、ノードの状態遷移だけで機械の安全性が保証されるわけではありません。
最後に保持した値の利用、短時間の補間、推定値による継続運転を採用できる範囲は、ハザード分析と安全要求仕様なしには判断できません。復帰時も、自己診断、再同期、安定時間、再開条件を確認します。
採用判断で確認すべきこと
タイムアウト、外れ値しきい値、停止距離に、すべてのロボットへ適用できる普遍的な値はありません。センサー種別、機構、速度、環境、冗長性、検出遅延を踏まえ、ハザード分析と対象安全規格から決めます。無人搬送車では、ISO 3691-4:2020のような対象規格も確認します。
判断の第一歩は、そのセンサーが安全機能に必須か、性能向上だけに使われるかを分けることです。次に、検出からアクチュエータを安全状態へ移行するまでの遅延、代替センサーの独立性、共通原因故障への耐性を評価します。検出漏れ率、誤検出率、エンドツーエンド遅延は、資料だけでは確定できず、実機試験または安全分析で検証する対象です。
まとめ
基本方針は、検出責務を層に分け、欠損・外れ値・不一致を区別することです。通信層は到着間隔と生存性、妥当性層は形式と範囲、推定層は観測の乖離、整合性監視層は冗長入力、安全監視層は行動の保守化を担当させます。
速度制限、機能停止、冗長系切替、停止のどれを選ぶかは、固定的な順番では決まりません。安全機能を維持できるか、代替観測があるか、検出と停止にどれだけ遅延があるかを基準に、機械ごとのリスク評価で決定します。
参考情報
- ROS 2 Jazzy: About Quality of Service settings
- REP-107: Robot Operating System (ROS) Diagnostic System
- robot_localization: Configuring Sensor Inputs
- PX4: Sensor Selection and Failsafe
- Nav2 Collision Monitor
- ROS 2 Jazzy: Managed nodes
- ISO 3691-4:2020
異常を検出する仕組みと、検出後に何を止めるかを分けて設計することが、安全な縮退運転の出発点になります。
AI利用に関する注記
本サイトの記事は、複数のAIエージェントによる調査・執筆・レビューを経て公開しています。正確性と品質の向上に努めていますが、内容については必ず一次情報をご確認ください。