<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ロールバック on Physical AI Hub</title>
    <link>https://physicalaihub.net/tags/%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF/</link>
    <description>Recent content in ロールバック on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Wed, 07 Oct 2026 14:41:10 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/tags/%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ロボットソフトウェアの安全なOTA設計：互換性・段階展開・ロールバックの実践</title>
      <link>https://physicalaihub.net/posts/robot-software-ota-compatibility-rollback/</link>
      <pubDate>Wed, 07 Oct 2026 14:41:10 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-software-ota-compatibility-rollback/</guid>
      <description>&lt;p&gt;ロボットの更新では、配布できたことと安全に復旧できることを分けて考える必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットのOTAを安全にするには、イメージの署名検証だけでは不十分です。機体互換性をマニフェストで定義し、サーバーと機体の双方で適用可否を確認したうえで、少数のカナリアから段階展開します。さらに、起動後のセンサー、アクチュエータ、通信、バッテリー、制御ループなどをヘルスゲートとして監視し、異常時には許可された既知の正常版へ戻せるようにします。&lt;/p&gt;&#xA;&lt;p&gt;復旧方式としては、対応するブートローダーとストレージ構成がある場合、A/Bまたはデュアルバンクが有力です。ただし、運用上のロールバックと、脆弱な旧版へのダウングレードを防ぐアンチロールバックは別の制御として設計しなければなりません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ機体互換性が難しいのか&#34;&gt;なぜ機体互換性が難しいのか&lt;/h2&gt;&#xA;&lt;p&gt;同じ製品系列のロボットでも、ハードウェアリビジョン、接続されたセンサーやアクチュエータ、MCUファームウェア、OS、ブートローダーが異なることがあります。アプリケーションが起動しても、通信プロトコルやファームウェアABIが合わなければ、制御系全体を正常に動かせるとは限りません。&lt;/p&gt;&#xA;&lt;p&gt;また、アプリケーションだけを旧版へ戻しても、設定・データスキーマの移行、ブートローダー更新、他ECUとのプロトコル変更が残れば復旧は不完全です。OTAの単位は単一バイナリではなく、依存関係と適用順序を含むリリースとして定義する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;互換性契約をマニフェスト化する&#34;&gt;互換性契約をマニフェスト化する&lt;/h2&gt;&#xA;&lt;p&gt;更新マニフェストと機体インベントリを比較し、適用対象を限定します。契約に含める項目は、少なくとも次のように整理できます。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;製品系列、機体モデル、機体識別子&lt;/li&gt;&#xA;&lt;li&gt;ハードウェアリビジョン、センサー・アクチュエータ構成&lt;/li&gt;&#xA;&lt;li&gt;ブートローダー、OS、カーネル、ファームウェアABI&lt;/li&gt;&#xA;&lt;li&gt;接続ECUと通信プロトコル&lt;/li&gt;&#xA;&lt;li&gt;更新対象コンポーネント、依存関係、適用順序&lt;/li&gt;&#xA;&lt;li&gt;設定・データスキーマ&lt;/li&gt;&#xA;&lt;li&gt;シーケンス番号、最低限必要なセキュリティバージョン&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;RFC 9124は、ベンダーID、クラスID、コンポーネント、依存関係、シーケンス番号、条件、検証アルゴリズムなどをマニフェストで表す情報モデルを定義しています。Uptaneは、一般的な更新情報と、個別の車両やECUに対する適用指示を分離する構成を示しています。&lt;/p&gt;&#xA;&lt;p&gt;サーバー側では属性やインベントリによって対象を絞り込み、機体側でも受信後に再検証します。サーバーの選定だけに頼ると、古いインベントリや誤登録による誤配布を止められません。&lt;/p&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;署名検証だけでなく、互換性契約、更新前後の安全条件、段階展開、ヘルスゲート、ロールバックを組み合わせるOTAの全体フロー。&#34;&gt;flowchart LR&#xA;  A[&#34;更新イメージとマニフェストを生成&#34;] --&gt; B[&#34;署名・ハッシュ・メタデータを検証&#34;]&#xA;  B --&gt; C[&#34;サーバー側で対象機体を選定&#34;]&#xA;  C --&gt; D[&#34;機体側でインベントリと互換性契約を再検証&#34;]&#xA;  D --&gt;|&#34;不一致&#34;| X[&#34;インストール拒否&#34;]&#xA;  D --&gt;|&#34;一致&#34;| E[&#34;更新前の安全条件を確認&#34;]&#xA;  E --&gt; F[&#34;カナリア機へ展開&#34;]&#xA;  F --&gt; G[&#34;起動後ヘルスゲート&#34;]&#xA;  G --&gt; H{&#34;異常があるか&#34;}&#xA;  H --&gt;|&#34;いいえ&#34;| I[&#34;次のコホートへ拡大&#34;]&#xA;  I --&gt; J{&#34;全コホート完了か&#34;}&#xA;  J --&gt;|&#34;いいえ&#34;| F&#xA;  J --&gt;|&#34;はい&#34;| K[&#34;展開完了&#34;]&#xA;  H --&gt;|&#34;はい&#34;| L[&#34;新規展開を停止&#34;]&#xA;  L --&gt; M[&#34;許可された既知の正常版へロールバック&#34;]&#xA;  M --&gt; N[&#34;復旧状態を確認&#34;]&#xA;  N --&gt;|&#34;復旧&#34;| O[&#34;再開または中止を判断&#34;]&#xA;  N --&gt;|&#34;未復旧&#34;| P[&#34;リカバリー手順へ移行&#34;]&lt;/pre&gt;&lt;figcaption&gt;署名検証だけでなく、互換性契約、更新前後の安全条件、段階展開、ヘルスゲート、ロールバックを組み合わせるOTAの全体フロー。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;署名だけに依存しない検証&#34;&gt;署名だけに依存しない検証&lt;/h2&gt;&#xA;&lt;p&gt;安全なOTAは、未承認変更を防止する、変更を検出する、信頼できる状態へ復旧する、という多層構成で考えます。NIST SP 800-193は、プラットフォームファームウェアの保護をprevent、detect、recoverの三機能で整理しています。これはロボットの物理安全全体を直接規定するものではありませんが、更新設計の基本的な分解として利用できます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Physical AIのモデル更新を監視する：評価・カナリアリリース・ロールバック設計</title>
      <link>https://physicalaihub.net/posts/physical-ai-model-update-monitoring/</link>
      <pubDate>Sun, 05 Apr 2026 00:41:46 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/physical-ai-model-update-monitoring/</guid>
      <description>&lt;p&gt;ロボットAIの更新では、精度の改善がそのまま安全な運用を意味するのかが気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;Physical AIのモデル更新は、オフラインの認識精度だけで合否を決めてはいけません。更新前に固定シナリオ、シミュレーション、実機リプレイなどで基準性能と安全限界を記録し、更新後はタスク結果、安全イベント、入力変化、推論・通信の健全性を継続的に比較します。リリースはシャドー実行から低リスクのロボットや作業へ段階的に広げ、異常時には独立した安全系で停止またはフォールバックしたうえで、モデルだけでなく関連する実行環境を含む既知の正常版へ戻します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜモデル更新の監視が難しいのか&#34;&gt;なぜモデル更新の監視が難しいのか&lt;/h2&gt;&#xA;&lt;p&gt;Webサービスなら、エラー率やレイテンシーをリクエスト単位で追跡しやすい一方、ロボットの性能は環境、個体、作業シナリオ、センサー状態、通信状態に左右されます。入力分布が変わってもタスク結果が維持される場合があり、反対に入力変化が小さくても制御遅延やキャリブレーションのずれが危険動作につながる場合があります。&lt;/p&gt;&#xA;&lt;p&gt;NISTのAI RMF 1.0も、AIのリスクと性能はデプロイ前だけでなく運用中も測定・監視し、問題への対応や変更管理を行う考え方を示しています。したがって、更新を「モデルファイルの交換」ではなく、変更を観測し、止め、戻せる運用プロセスとして設計する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる用語&#34;&gt;前提となる用語&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;データセットシフト&lt;/strong&gt;は、学習時と運用時でデータの分布が変わる現象です。共変量シフト、事前確率シフト、概念シフトなどに分けられます。ただし、入力や予測の分布変化を検出しただけでは、タスク性能の低下や安全リスクを直接証明できません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;カナリアリリース&lt;/strong&gt;は、新版を一部の対象に限定して投入し、旧版との差を確認してから展開範囲を拡大する方法です。ロボットでは、単純なリクエスト比率ではなく、ロボット個体、拠点、作業シナリオ、危険度を単位にするほうが安全側です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;シャドー実行&lt;/strong&gt;は、新版を判断や制御への作用なしに動かし、出力や遅延を観測する段階です。実際の作業へ影響を与えない構成にできるなら、低リスクな初期評価になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;監視すべき指標は一層では足りない&#34;&gt;監視すべき指標は一層では足りない&lt;/h2&gt;&#xA;&lt;p&gt;監視項目は、少なくとも次の層に分けて設計します。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;入力層&lt;/strong&gt;：センサー分布、欠損、異常値、OOD（学習分布外）兆候&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;モデル層&lt;/strong&gt;：信頼度、予測分布、アクションの飽和や異常な偏り&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;タスク層&lt;/strong&gt;：タスク成功率、完了時間、人手介入率&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;安全層&lt;/strong&gt;：衝突、ニアミス、接触力や軌道の制約違反&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;システム層&lt;/strong&gt;：推論遅延、通信欠落、QoSのdeadline違反、liveliness&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;これらは更新前の基準値および既知の正常版と比較します。成功率が維持されていても、介入率や推論遅延が増えていれば、将来の失敗や安全余裕の縮小を示す可能性があります。逆に入力ドリフトだけを理由に直ちにロールバックするのではなく、タスク、安全、システムの観測と組み合わせて判断します。共通の閾値や必要サンプル数は製品ごとに異なるため、固定の標準値として扱ってはいけません。&lt;/p&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;入力分布やモデル出力だけでなく、タスク結果、安全イベント、システム健全性を旧版および更新前の基準値と比較する。&#34;&gt;flowchart LR&#xA;  subgraph input[&#34;入力層&#34;]&#xA;    I1[&#34;センサー分布&#34;]&#xA;    I2[&#34;欠損・異常値&#34;]&#xA;    I3[&#34;OOD兆候&#34;]&#xA;  end&#xA;  subgraph model[&#34;モデル層&#34;]&#xA;    M1[&#34;信頼度&#34;]&#xA;    M2[&#34;予測分布&#34;]&#xA;    M3[&#34;アクションの飽和・偏り&#34;]&#xA;  end&#xA;  subgraph task[&#34;タスク層&#34;]&#xA;    T1[&#34;タスク成功率&#34;]&#xA;    T2[&#34;完了時間&#34;]&#xA;    T3[&#34;人手介入率&#34;]&#xA;  end&#xA;  subgraph safety[&#34;安全層&#34;]&#xA;    S1[&#34;衝突&#34;]&#xA;    S2[&#34;ニアミス&#34;]&#xA;    S3[&#34;接触力・軌道の制約違反&#34;]&#xA;  end&#xA;  subgraph system[&#34;システム層&#34;]&#xA;    Y1[&#34;推論遅延&#34;]&#xA;    Y2[&#34;通信欠落・Deadline違反&#34;]&#xA;    Y3[&#34;Liveliness&#34;]&#xA;  end&#xA;  I1 --&gt; G[&#34;旧版・基準値との比較&#34;]&#xA;  I2 --&gt; G&#xA;  I3 --&gt; G&#xA;  M1 --&gt; G&#xA;  M2 --&gt; G&#xA;  M3 --&gt; G&#xA;  T1 --&gt; G&#xA;  T2 --&gt; G&#xA;  T3 --&gt; G&#xA;  S1 --&gt; G&#xA;  S2 --&gt; G&#xA;  S3 --&gt; G&#xA;  Y1 --&gt; G&#xA;  Y2 --&gt; G&#xA;  Y3 --&gt; G&#xA;  G --&gt; H[&#34;リリース・安全ゲート&#34;]&#xA;  H --&gt; D[&#34;継続監視・展開判断&#34;]&lt;/pre&gt;&lt;figcaption&gt;入力分布やモデル出力だけでなく、タスク結果、安全イベント、システム健全性を旧版および更新前の基準値と比較する。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;更新から全体展開までの流れ&#34;&gt;更新から全体展開までの流れ&lt;/h2&gt;&#xA;&lt;p&gt;まず、モデル、前処理・後処理、設定、制御ソフト、依存ライブラリ、キャリブレーション、実行環境を識別できる形で記録します。その組み合わせで固定シナリオと実機・シミュレーションの評価を行い、品質ゲートと安全ゲートを分けて判定します。スループットやコストの改善があっても、衝突、危険動作、安全制約違反を防ぐゲートを通過しなければ展開しません。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
