<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>MLOpsと運用監視 on Physical AI Hub</title>
    <link>https://physicalaihub.net/categories/mlops%E3%81%A8%E9%81%8B%E7%94%A8%E7%9B%A3%E8%A6%96/</link>
    <description>Recent content in MLOpsと運用監視 on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Sun, 08 Nov 2026 14:48:33 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/categories/mlops%E3%81%A8%E9%81%8B%E7%94%A8%E7%9B%A3%E8%A6%96/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Physical AIの再現可能な実験基盤：モデル・データ・機体・環境の来歴管理</title>
      <link>https://physicalaihub.net/posts/physical-ai-reproducible-experiment-provenance/</link>
      <pubDate>Sun, 08 Nov 2026 14:48:33 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/physical-ai-reproducible-experiment-provenance/</guid>
      <description>&lt;p&gt;Physical AIでは、同じモデルを使っても同じ結果にならないことがあります。差分を追える実験単位の設計が、再現性の前提になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;Physical AIの実験結果を再現可能にするには、モデルのバージョンだけを保存してはいけません。実験1回を単位とする &lt;strong&gt;Run Manifest&lt;/strong&gt; を作り、モデル、データ、コード、機体構成、実行環境、実行時の動的状態、ログや評価結果を一つの来歴グラフとして結び付けます。各要素には不変IDまたは内容ハッシュを付け、どの入力が、どの活動によって、どの成果物を生成したかを追跡できるようにします。&lt;/p&gt;&#xA;&lt;p&gt;この設計により、同じソフトウェア環境での再実行、同じ機体での物理的な再実験、異なる機体や環境での統計的再現を区別して検証できます。再現性を「同じモデルをもう一度動かせること」と狭く定義しないことが出発点です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜモデルの版管理だけでは足りないのか&#34;&gt;なぜモデルの版管理だけでは足りないのか&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの挙動は、モデルの重みだけで決まりません。学習に使ったデータと前処理、制御コードや設定、センサー校正、ファームウェア、GPUドライバ、シミュレータのワールド、電源や温度といった状態も結果に影響し得ます。&lt;/p&gt;&#xA;&lt;p&gt;機械学習システムの技術的負債に関する研究は、未宣言のデータ依存関係、設定の不整合、外部環境の変化、フィードバックループなどが、モデル単体からは見えない再現性・保守性のリスクになると指摘しています。Physical AIでは、これらに機体固有の差や時間変化が加わります。&lt;/p&gt;&#xA;&lt;p&gt;したがって、保存すべき対象は「完成したモデル」ではなく、「そのモデルが、どの条件で、どの機体上で、どの結果を出したか」という実験全体です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;来歴管理の基本用語&#34;&gt;来歴管理の基本用語&lt;/h2&gt;&#xA;&lt;p&gt;来歴を表す汎用モデルとして、W3C PROV-DMがあります。PROV-DMは、次の三つを基本要素とし、生成、使用、派生、帰属などの関係で情報の流れを表現します。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Entity&lt;/strong&gt;：データセット、モデル、ログ、動画、設定ファイルなどの成果物&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Activity&lt;/strong&gt;：学習、前処理、制御実行、評価、シミュレーションなどの活動&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Agent&lt;/strong&gt;：人、システム、サービス、実験担当組織などの主体&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Datasheets for Datasetsは、データセットの動機、構成、収集方法、前処理、用途、配布、保守を記録する方式です。Model Cardsは、モデルの用途、評価条件、性能、制約、想定外利用などをモデル単位で報告します。これらは記録項目を整理するのに役立ちますが、実験全体の改変検知や自動的な関連付けまで保証するものではありません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-manifestに何を記録するか&#34;&gt;Run Manifestに何を記録するか&lt;/h2&gt;&#xA;&lt;p&gt;Run Manifestは、実験IDと実行時刻だけを持つ台帳ではありません。各要素のIDを参照し、入力から出力までを再構成できるマニフェストです。最低限、次の領域を分けて管理します。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;領域&lt;/th&gt;&#xA;          &lt;th&gt;記録対象の例&lt;/th&gt;&#xA;          &lt;th&gt;役割&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;モデル&lt;/td&gt;&#xA;          &lt;td&gt;モデルID、チェックポイント、Model Card&lt;/td&gt;&#xA;          &lt;td&gt;使用した推論器を特定する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;データ&lt;/td&gt;&#xA;          &lt;td&gt;rawデータ、派生データ、分割、前処理、Datasheet&lt;/td&gt;&#xA;          &lt;td&gt;学習・評価入力を再構成する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;コードと設定&lt;/td&gt;&#xA;          &lt;td&gt;コミット、学習コード、制御パラメータ、設定ファイル&lt;/td&gt;&#xA;          &lt;td&gt;処理手順と条件を固定する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;機体&lt;/td&gt;&#xA;          &lt;td&gt;機体識別子、部品構成、ファームウェア、センサー・アクチュエータ設定&lt;/td&gt;&#xA;          &lt;td&gt;どの機体で実行したかを示す&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;校正と保守&lt;/td&gt;&#xA;          &lt;td&gt;校正状態、校正値、保守履歴&lt;/td&gt;&#xA;          &lt;td&gt;機体の状態差を確認する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;実行環境&lt;/td&gt;&#xA;          &lt;td&gt;OS、依存ライブラリ、コンテナ、GPU、ドライバ、ミドルウェア&lt;/td&gt;&#xA;          &lt;td&gt;ソフトウェア環境を再構成する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;シミュレーション条件&lt;/td&gt;&#xA;          &lt;td&gt;シミュレータ、ワールド、マップ、乱数シード&lt;/td&gt;&#xA;          &lt;td&gt;仮想環境と試行条件を固定する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;動的状態&lt;/td&gt;&#xA;          &lt;td&gt;電源、温度、負荷、時刻同期、実験時イベント&lt;/td&gt;&#xA;          &lt;td&gt;実行時の状態を記録する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;成果物&lt;/td&gt;&#xA;          &lt;td&gt;ログ、軌跡、動画、メトリクス、評価レポート&lt;/td&gt;&#xA;          &lt;td&gt;結果と根拠を保存する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;データはraw、派生データ、前処理済みデータを同じ名前で上書きせず、それぞれ独立したIDを付与します。学習済みチェックポイントや評価成果物も同様です。変更されるたびに新しいIDを作り、Run Manifestから参照します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Physical AIのインターフェース互換性管理：センサーから制御まで変更に強い設計を作る</title>
      <link>https://physicalaihub.net/posts/physical-ai-interface-compatibility-management/</link>
      <pubDate>Sat, 07 Nov 2026 14:46:34 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/physical-ai-interface-compatibility-management/</guid>
      <description>&lt;p&gt;ロボットの長期運用では、型が一致しているだけで安全に接続できるとは限りません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットを長期間保守するには、インターフェースをデータ型だけでなく、データの意味、単位、座標系、時刻、品質、通信条件、モデル入出力、変更手順まで含む契約として管理します。センサー、認識、計画、制御の各境界で契約を分け、互換性を層別に判定することが基本です。&lt;/p&gt;&#xA;&lt;p&gt;実装では、バージョン付きスキーマ、旧版と新版の並行運用、変換アダプター、契約テスト、実データのリプレイを組み合わせます。コンパイルが成功しても、単位や座標系の変更、QoSの不一致、モデル前処理の差、制御系の遅延増加までは検出できません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ互換性管理が難しいのか&#34;&gt;なぜ互換性管理が難しいのか&lt;/h2&gt;&#xA;&lt;p&gt;Physical AIの処理系は、センサー、通信ミドルウェア、推論モデル、計画器、制御器、アクチュエーターが連鎖しています。一つの変更が複数チームと実行環境に波及するため、「フィールドが同じ型か」だけでは判断できません。&lt;/p&gt;&#xA;&lt;p&gt;数値型が同じでも、単位がメートルからミリメートルに変われば値の意味は変わります。座標フレームが変われば、受信側は同じ数値を別の位置として解釈します。計測時刻と受信時刻の混同、欠測値と有効性フラグの扱いの違いも、型互換でありながら機能を壊す要因です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;管理すべき契約&#34;&gt;管理すべき契約&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2には&lt;code&gt;msg&lt;/code&gt;、&lt;code&gt;srv&lt;/code&gt;、&lt;code&gt;action&lt;/code&gt;があり、定義から複数言語向けの型と関連コードが生成されます。ただし通信の可否は型だけでなくQoSにも依存します。reliability、durability、history、depth、deadline、lifespanなどの設定がPublisherとSubscriberの間で互換しなければ、通信が成立しない場合があります。&lt;/p&gt;&#xA;&lt;p&gt;DDS-XTypesは、型の拡張性、メンバーの識別、型の割り当て可能性などを扱います。しかし、実際の利用可能範囲は、ROS 2の型サポート、RMW実装、DDSミドルウェア、設定に依存します。仕様上可能な拡張を、そのまま対象環境へ適用できるとは限りません。&lt;/p&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;座標系、フレーム名、軸の向き、回転表現&lt;/li&gt;&#xA;&lt;li&gt;計測時刻、生成時刻、受信時刻など時刻の意味&lt;/li&gt;&#xA;&lt;li&gt;共分散、有効性、欠測、品質の表現&lt;/li&gt;&#xA;&lt;li&gt;QoS、許容遅延、deadlineなどの通信条件&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;単位や座標の規約には&lt;a href=&#34;https://www.ros.org/reps/rep-0103.html&#34; target=&#34;_blank&#34; rel=&#34;noopener nofollow&#34;&gt;REP-103&lt;/a&gt;&#xA;、モバイルロボットのフレーム関係には&lt;a href=&#34;https://www.ros.org/reps/rep-0105.html&#34; target=&#34;_blank&#34; rel=&#34;noopener nofollow&#34;&gt;REP-105&lt;/a&gt;&#xA;を参照できます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;推論モデルもインターフェースである&#34;&gt;推論モデルもインターフェースである&lt;/h2&gt;&#xA;&lt;p&gt;モデルファイルのバージョンだけでは不十分です。ONNXでは、モデル形式のIRバージョン、演算子セットのバージョン、演算子仕様の変更を区別しています。入力テンソルの形状・型に加え、前処理、量子化、キャリブレーション、後処理も契約として記録します。&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;センサーからアクチュエーターまで、データの意味、通信条件、モデル入出力、制御条件を連続したインターフェース契約として管理する流れを示します。&#34;&gt;flowchart LR&#xA;  S[&#34;センサー&#34;] --&gt; SC[&#34;センサー契約\n意味・単位\n座標系・時刻\n品質・バージョン&#34;]&#xA;  SC --&gt; M[&#34;ROS 2 msg / srv / action\n型・必須性・既定値&#34;]&#xA;  M --&gt; QC[&#34;通信契約\nQoS・転送条件\n遅延・deadline・lifespan&#34;]&#xA;  QC --&gt; I[&#34;認識モデル\n入力・出力テンソル\n形状・型・前処理・後処理&#34;]&#xA;  I --&gt; PC[&#34;計画・制御契約\nコマンド・制約\n許容遅延・欠測・ジッター&#34;]&#xA;  PC --&gt; A[&#34;アクチュエーター&#34;]&#xA;  A --&gt; F[&#34;フィードバック\n計測値・時刻・品質&#34;]&#xA;  F -. &#34;契約テスト・リプレイ・影響追跡&#34; .-&gt; SC&#xA;  B1[&#34;各境界で管理する項目\nスキーマ\n座標系\n時刻\n品質\nバージョン&#34;] -. &#34;境界横断の契約&#34; .-&gt; M&#xA;  B1 -. &#34;境界横断の契約&#34; .-&gt; I&#xA;  B1 -. &#34;境界横断の契約&#34; .-&gt; PC&lt;/pre&gt;&lt;figcaption&gt;センサーからアクチュエーターまで、データの意味、通信条件、モデル入出力、制御条件を連続したインターフェース契約として管理する流れを示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;センサーの意味・単位からROS 2の型、QoSと転送、モデル入出力、計画・制御コマンド、アクチュエーターのフィードバックまでを連続した契約として捉えます。各境界にスキーマ、座標系、時刻、品質、バージョンを置くと、変更箇所と影響範囲を追跡しやすくなります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットのオンラインシステム同定：実機の変化を制御モデルへ反映する設計</title>
      <link>https://physicalaihub.net/posts/robot-online-system-identification-control/</link>
      <pubDate>Sun, 18 Oct 2026 13:15:09 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-online-system-identification-control/</guid>
      <description>&lt;p&gt;実機の変化を追従する仕組みほど、更新しない経路の設計が安全性を左右します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットのオンラインシステム同定は、推定モデルを制御器へ直接書き込む機能ではなく、監視・検証・更新を担う監督層として組み込むべきです。まずシャドーモードで入力・出力、残差、推定共分散、物理的なパラメータ範囲を確認し、条件を満たした場合だけ、非安全系の限定されたパラメータを段階的に反映します。&lt;/p&gt;&#xA;&lt;p&gt;安全停止、速度・トルク上限、保護領域、フォールバック制御は推定器から分離します。更新に失敗した場合は、直前の有効モデルまたは保守的な安全モデルへ戻せる構成にします。オンライン同定の採用判断では、追従性だけでなく、推定の確からしさ、安定性の仮定、変更管理まで確認する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜオンライン同定が必要か&#34;&gt;なぜオンライン同定が必要か&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの動特性は導入時のモデルから変化します。積載物、温度、摩擦、減速機の状態などが変われば、同じ入力に対する速度やトルクの応答も変わり得ます。固定モデルとの不一致が大きくなると、追従性能や外乱・接触検出の信頼性に影響します。&lt;/p&gt;&#xA;&lt;p&gt;一方、観測された変化が摩耗によるものとは限りません。接触、外乱、負荷変化、センサーずれ、モデル誤差も似た残差を生みます。したがって、同定器は原因を自動的に断定する装置ではなく、変化の兆候と推定の不確かさを継続的に評価する仕組みとして扱います。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる用語と仕組み&#34;&gt;前提となる用語と仕組み&lt;/h2&gt;&#xA;&lt;p&gt;システム同定とは、入力と出力のデータから対象の動特性を表すモデルやパラメータを推定することです。オンライン同定では、データを逐次処理して推定値を更新します。再帰的最小二乗法や予測誤差法は、その代表的な考え方です。&lt;/p&gt;&#xA;&lt;p&gt;忘却係数を使うと、古いデータの影響を相対的に小さくし、時間変化する動特性への追従を狙えます。ただし、忘却を強くすると変化への追従性が高まる反面、ノイズへの感度や推定バイアスが増える可能性があります。十分な励起、信号品質、推定不確かさの監視が欠かせません。&lt;/p&gt;&#xA;&lt;p&gt;残差は、測定トルクとモデルから予測したトルクとの差のように、実測値とモデル出力の差を示します。外力や衝突の検出に利用できますが、残差だけで劣化、負荷変化、接触を一意に識別できるわけではありません。励起が不足した運転では、異なる原因が同じ残差を生む可能性があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;推奨アーキテクチャ&#34;&gt;推奨アーキテクチャ&lt;/h2&gt;&#xA;&lt;p&gt;高速の制御ループと、低速の推定・保全ループを分離します。高速ループは既知の安定モデルと安全制約で動作させ、低速ループは温度、負荷、摩擦、残差、推定パラメータを蓄積します。候補モデルは妥当性検証を通過した場合だけ、非安全系の制御パラメータへ反映します。&lt;/p&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;推定共分散または信頼区間が過大でないか&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;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 DATA[&#34;観測・入力データ&#34;]&#xA;    S[&#34;センサー値&#34;]&#xA;    U[&#34;制御入力&#34;]&#xA;  end&#xA;&#xA;  subgraph EST[&#34;低速の推定・検証ループ&#34;]&#xA;    P[&#34;データ前処理&#34;]&#xA;    I[&#34;オンライン推定器&#34;]&#xA;    V[&#34;妥当性検証\n励起・残差・共分散・物理範囲&#34;]&#xA;    C[&#34;更新候補モデル&#34;]&#xA;    G[&#34;更新ゲート&#34;]&#xA;  end&#xA;&#xA;  subgraph CTRL[&#34;制御系&#34;]&#xA;    M[&#34;既知の安定モデル&#34;]&#xA;    K[&#34;制御器&#34;]&#xA;    R[&#34;非安全系のモデル補正&#34;]&#xA;  end&#xA;&#xA;  subgraph SAFE[&#34;独立した安全系&#34;]&#xA;    L[&#34;安全監視&#34;]&#xA;    T[&#34;速度・トルク上限&#34;]&#xA;    E[&#34;非常停止&#34;]&#xA;    F[&#34;フォールバック制御\n直前の有効モデルまたは安全モデル&#34;]&#xA;  end&#xA;&#xA;  S --&gt; P&#xA;  U --&gt; P&#xA;  P --&gt; I&#xA;  I --&gt; V&#xA;  V --&gt; C&#xA;  C --&gt; G&#xA;  G --&gt;|&#34;検証済みの場合のみ&#34;| R&#xA;  M --&gt; K&#xA;  R -.-&gt;|&#34;非安全系に限定&#34;| K&#xA;  K --&gt;|&#34;制御出力&#34;| T&#xA;  T --&gt;|&#34;許可された出力&#34;| ROBOT[&#34;ロボット&#34;]&#xA;  L --&gt; T&#xA;  L --&gt; E&#xA;  L --&gt; F&#xA;  G -.-&gt;|&#34;失敗時は反映しない&#34;| F&#xA;  F -.-&gt; K&lt;/pre&gt;&lt;figcaption&gt;オンライン推定の結果を直接制御器へ書き込まず、妥当性検証と更新ゲートを経て非安全系に限定して反映する。安全監視とフォールバック制御は推定器から独立させる。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;モデル更新は、&lt;code&gt;BASELINE_MODEL → SHADOW_ESTIMATION → VALIDATING → CANDIDATE_MODEL → ACTIVE_MODEL&lt;/code&gt; のような状態で管理できます。励起不足、残差異常、共分散の過大化、物理範囲からの逸脱、安全監視の介入があれば候補モデルを有効化せず、ベースラインまたは安全モデルへ戻します。ROS 2のライフサイクル状態は、Inactive状態で更新を準備し、遷移時に有効化する実装パターンの参考になります。ただし、それだけで機能安全が保証されるわけではありません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットのデジタルツイン実装：実機状態とシミュレーションを同期する設計原則</title>
      <link>https://physicalaihub.net/posts/robot-digital-twin-state-synchronization/</link>
      <pubDate>Sat, 17 Oct 2026 13:08:07 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-digital-twin-state-synchronization/</guid>
      <description>&lt;p&gt;デジタルツインの同期を「高頻度にすればよい」と考えると、ログの再現性や安全境界を見落としやすい点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論同期周期は一つに統一しない&#34;&gt;結論：同期周期は一つに統一しない&lt;/h2&gt;&#xA;&lt;p&gt;ロボットのデジタルツインでは、すべてのデータを同じ周期で同期するのではなく、データクラスごとに同期粒度、更新トリガー、許容遅延、欠損時の動作を定義するのが基本です。&lt;/p&gt;&#xA;&lt;p&gt;関節位置・速度・トルク、ベース姿勢・速度、インターロックなど、制御や安全に直結する状態は、実機の制御・計測周期または状態変化イベントに近い粒度で扱います。環境・シーン、ロボット形状、質量や摩擦などのモデルパラメータ、劣化・保全情報は、状態変更、再キャリブレーション、保全イベント、モデル再同定などを契機に更新します。運用ログは最新値への上書きではなく、後から時系列を再現できる記録として保存します。&lt;/p&gt;&#xA;&lt;p&gt;つまり、問うべきなのは「何Hzで同期するか」だけではありません。何の時刻を表すデータか、どの値を正当な実機状態とみなすか、遅延や欠損が起きたときどう扱うかを、データクラス別の同期契約として明文化することが重要です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ同期粒度が重要か&#34;&gt;なぜ同期粒度が重要か&lt;/h2&gt;&#xA;&lt;p&gt;ISO 23247は、製造要素、デジタルツイン、サービスや利用者の関係を整理する参照枠組みを示しています。一方で、すべてのロボットやデータに共通する同期周期を規定しているわけではありません。ロボットの制御周期、通信構成、シミュレータ、利用目的によって適切な粒度は変わります。&lt;/p&gt;&#xA;&lt;p&gt;また、文献によってデジタルモデル、デジタルシャドウ、デジタルツインの区分も異なります。一般には、実体からデジタル側への一方向のデータ連携と、デジタル側から実体への自動反映を含む双方向連携を区別します。監視のための読み取りと、実機へ影響を与える書き戻しを同じ経路で扱うと、権限や安全性の境界が曖昧になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;四つのデータクラスに分ける&#34;&gt;四つのデータクラスに分ける&lt;/h2&gt;&#xA;&lt;h3 id=&#34;制御安全状態&#34;&gt;制御・安全状態&lt;/h3&gt;&#xA;&lt;p&gt;関節状態、ベース状態、インターロックなどは、シミュレーションの状態推定や安全判断に直接影響します。値には取得時刻とシーケンス番号などの順序情報を付け、受信時刻だけで実機状態の時刻を表さないようにします。&lt;/p&gt;&#xA;&lt;p&gt;OPC UAのデータモデルにあるSourceTimestampとServerTimestampのように、値が生成された時刻とサーバーが受け付けた時刻を分ければ、通信遅延や到着順を分析できます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;環境シーン情報&#34;&gt;環境・シーン情報&lt;/h3&gt;&#xA;&lt;p&gt;周囲の物体、作業空間、配置、経路などは、制御状態と同じ周期で送る必要があるとは限りません。配置変更やシーン再構成をイベントとして同期し、シミュレーション側では、どの時点の環境を表す情報かを保持します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;モデル保全情報&#34;&gt;モデル・保全情報&lt;/h3&gt;&#xA;&lt;p&gt;ロボットの形状、質量、摩擦などのパラメータ、再キャリブレーション結果、劣化状態、保全履歴は、モデル再同定や保全イベントを更新トリガーにします。高頻度に送るより、変更理由、適用範囲、バージョンを管理する方が、検証と保全に向いています。&lt;/p&gt;&#xA;&lt;h3 id=&#34;運用ログ&#34;&gt;運用ログ&lt;/h3&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;データクラスごとに時刻、順序、鮮度、QoS、権威性を検査し、シミュレーション入力と改変しない原記録を分離する同期構成。&#34;&gt;flowchart LR&#xA;  subgraph Physical[&#34;実機&#34;]&#xA;    Sensor[&#34;センサー・計測&#34;]&#xA;    Controller[&#34;制御器&#34;]&#xA;    RobotState[&#34;関節・姿勢・トルク・安全状態&#34;]&#xA;    Scene[&#34;環境・シーン情報&#34;]&#xA;    Model[&#34;モデル・保全情報&#34;]&#xA;    Events[&#34;イベント・運用ログ&#34;]&#xA;    Sensor --&gt; RobotState&#xA;    Controller --&gt; RobotState&#xA;    Scene --&gt; Events&#xA;    Model --&gt; Events&#xA;    RobotState --&gt; Events&#xA;  end&#xA;&#xA;  subgraph Ingest[&#34;収集・記録&#34;]&#xA;    Collector[&#34;データ収集&#34;]&#xA;    Timestamp[&#34;時刻・順序付与\nSourceTimestamp / ServerTimestamp / シーケンス番号&#34;]&#xA;    RawLog[&#34;不変の原記録\n取得時刻・受信時刻・通信状態・版情報&#34;]&#xA;    Collector --&gt; Timestamp&#xA;    Timestamp --&gt; RawLog&#xA;  end&#xA;&#xA;  subgraph Gate[&#34;同期契約・判定&#34;]&#xA;    Contract[&#34;データクラス別の同期契約\n更新トリガー・鮮度上限・欠損時動作・権威性&#34;]&#xA;    QoS[&#34;QoS判定\nReliability・Deadline・Durability・History・Liveliness&#34;]&#xA;    Freshness[&#34;鮮度・順序・版の検査&#34;]&#xA;    Contract --&gt; QoS --&gt; Freshness&#xA;  end&#xA;&#xA;  subgraph Twin[&#34;シミュレーション&#34;]&#xA;    SimInput[&#34;シミュレーション入力&#34;]&#xA;    SimTime[&#34;シミュレーション時刻&#34;]&#xA;    Sim[&#34;デジタルツイン&#34;]&#xA;    SimInput --&gt; SimTime --&gt; Sim&#xA;  end&#xA;&#xA;  RobotState --&gt; Collector&#xA;  Scene --&gt; Collector&#xA;  Model --&gt; Collector&#xA;  Events --&gt; Collector&#xA;  Timestamp --&gt; Contract&#xA;  Timestamp --&gt; RawLog&#xA;  Freshness --&gt; SimInput&#xA;  RawLog --&gt; Replay[&#34;再生・監査・再現検証&#34;]&#xA;  Sim --&gt; CommandGate[&#34;コマンドゲート\n認証・認可・妥当性検査・範囲制限・監査&#34;]&#xA;  CommandGate -. &#34;双方向反映が必要な場合のみ&#34; .-&gt; Controller&lt;/pre&gt;&lt;figcaption&gt;データクラスごとに時刻、順序、鮮度、QoS、権威性を検査し、シミュレーション入力と改変しない原記録を分離する同期構成。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;時刻と実行方式を分ける&#34;&gt;時刻と実行方式を分ける&lt;/h2&gt;&#xA;&lt;p&gt;シミュレーション時刻は壁時計時刻と同一ではありません。ROS 2ではシステム時刻、安定した経過時間を扱う時刻、ROS時刻を区別でき、シミュレーション時には&lt;code&gt;/clock&lt;/code&gt;でROS時刻を提供できます。ROS時刻は一時停止、速度変更、時刻ジャンプの影響を受けるため、受信時刻や単調増加する経過時間と混同しない設計が必要です。&lt;/p&gt;</description>
    </item>
    <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>学習ベースのロボット機能を説明可能にする安全ケースの作り方</title>
      <link>https://physicalaihub.net/posts/robot-learning-safety-case-assurance/</link>
      <pubDate>Thu, 01 Oct 2026 14:38:11 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-learning-safety-case-assurance/</guid>
      <description>&lt;p&gt;学習モデルの評価結果を、現場で成立する安全の説明へどう接続するかが気になるテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;学習ベースのロボット機能の安全ケースは、AIモデル単体の精度を証明する文書ではありません。最上位に「定義した運用範囲と制約の中で、対象機能が許容可能な安全性を満たす」という主張を置き、危険源、安全目標、安全要求、実装上の防護、検証結果、残留リスク、運用監視へ分解します。&lt;/p&gt;&#xA;&lt;p&gt;各主張は、要求仕様、データセット、モデル、ソフトウェア構成、テスト条件、判定結果、運用記録へ追跡できるようにします。学習モデルを安全機能上の唯一の防護層とせず、異常時に停止、減速、退避などの安全側状態へ移行できる仕組みを含めることが基本です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜモデル単体の評価では不十分か&#34;&gt;なぜモデル単体の評価では不十分か&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの危険は、認識モデルの出力だけで決まりません。対象物、人との距離、作業空間、速度、力、照明、センサー、通信、ソフトウェア構成などが組み合わさって、実際のリスクになります。平均精度やテストデータ上の結果だけでは、どの環境で、どの失敗が起こり得て、失敗時に何が動作を制限するのかを説明できません。&lt;/p&gt;&#xA;&lt;p&gt;ISO 12100:2010は、意図する使用と合理的に予見可能な誤使用を含む機械の限界を定め、危険源の同定、リスクの見積もり・評価、リスク低減を反復する一般原則を示しています。学習機能を含む場合も、まずこの分析を出発点にし、AI固有の不確実性、データやモデルの変更、導入後の監視をライフサイクルへ接続します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;安全ケースを構成する枠組み&#34;&gt;安全ケースを構成する枠組み&lt;/h2&gt;&#xA;&lt;p&gt;安全ケースとは、安全性に関する主張と、それを支える論拠・証拠を構造化したものです。GSN（Goal Structuring Notation）では、ゴール、戦略、コンテキスト、前提、証拠などを用いて、主張がどの条件で成立するかを表します。ただし、GSN自体はモデル精度や残留リスクの合格値を定めません。&lt;/p&gt;&#xA;&lt;p&gt;参照する枠組みの役割は分けて扱います。ISO 12100は機械の危険源分析とリスク低減、IEC 61508は安全関連の電気・電子・プログラマブル電子システムの安全ライフサイクルや検証、ISO 10218-1:2011は産業用ロボットの安全要求を扱います。NIST AI RMF 1.0はGovern、Map、Measure、Manageの4機能でAIリスク管理を整理し、ISO/IEC 23894:2023はAIのリスク特定、分析、評価、処置、監視のガイダンスを示します。&lt;/p&gt;&#xA;&lt;p&gt;これらは同じ適用範囲の規格ではありません。AIリスク管理の文書は一律の合格閾値や認証を定めず、ISO 10218-1もサービスロボットや移動ロボット、特定の学習機能へそのまま適用できるとは限りません。対象機械、用途、法域、国内採用版との対応を確認する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;最上位主張から証拠まで分解する&#34;&gt;最上位主張から証拠まで分解する&lt;/h2&gt;&#xA;&lt;p&gt;実務では、次の順に整理するとレビューしやすくなります。&lt;/p&gt;&#xA;&lt;ol&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;：学習モデル、制限器、監視器、安全関連制御系、停止・減速・退避などが、どの要求に対応するかを明確にする。&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;/ol&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;安全ケースを、成立条件と防護、検証、残留リスク、証拠まで追跡可能な形に分解した構造です。GSN風の概念図であり、特定の合格基準を定めるものではありません。&#34;&gt;flowchart TD&#xA;  G[&#34;最上位主張：定義した運用範囲と制約の中で、機能が許容可能な安全性を満たす&#34;]&#xA;  C[&#34;運用範囲・前提：環境、対象物、人との距離、速度・力、照明、センサー、通信、モデル適用範囲&#34;]&#xA;  H[&#34;危険源と安全目標：誤認識、制御逸脱、センサー異常、通信断、適用範囲外入力&#34;]&#xA;  R[&#34;安全要求：機能、性能、環境制約、フェイルセーフ、監視、変更管理&#34;]&#xA;  P[&#34;実装上の防護：学習モデル、制限器、監視器、安全関連制御系、停止・減速・退避&#34;]&#xA;  V[&#34;検証・妥当性確認：単体試験、シミュレーション、シナリオ試験、実機試験、故障注入、解析&#34;]&#xA;  L[&#34;残留リスクと運用監視：前提、監視指標、インシデント対応、再評価条件、変更時の停止条件&#34;]&#xA;  E[&#34;証拠：試験結果、解析記録、要求との対応、構成管理情報&#34;]&#xA;  G --&gt; C&#xA;  G --&gt; H&#xA;  H --&gt; R&#xA;  C --&gt; R&#xA;  R --&gt; P&#xA;  R --&gt; V&#xA;  P --&gt; V&#xA;  V --&gt; E&#xA;  V --&gt; L&#xA;  L --&gt; E&lt;/pre&gt;&lt;figcaption&gt;安全ケースを、成立条件と防護、検証、残留リスク、証拠まで追跡可能な形に分解した構造です。GSN風の概念図であり、特定の合格基準を定めるものではありません。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;トレーサビリティを証拠の中心に置く&#34;&gt;トレーサビリティを証拠の中心に置く&lt;/h2&gt;&#xA;&lt;p&gt;検証結果を安全ケースの証拠として利用するには、その結果を生んだ構成を固定できなければなりません。要求仕様、データセット、ラベル、モデル、ソフトウェア、推論ハードウェア、テスト条件、判定結果をライフサイクル成果物として版管理し、相互に追跡可能にします。ISO/IEC 5338:2023は、AIシステムの概念化、開発、検証・妥当性確認、導入、運用、保守、廃止を含むライフサイクルプロセスを扱います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットAIの検証パイプライン：シミュレーションからHIL・実機試験へ移す方法</title>
      <link>https://physicalaihub.net/posts/robot-ai-simulation-hil-hardware-validation-pipeline/</link>
      <pubDate>Sat, 05 Sep 2026 09:21:36 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-ai-simulation-hil-hardware-validation-pipeline/</guid>
      <description>&lt;p&gt;実機を使わずに検証できる範囲を広げるほど、実機でしか分からない差分を見落とさない設計が重要になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットAIの検証は、シミュレーション、Hardware-in-the-Loop（HIL）、管理された実機試験の順に段階化するのが基本です。シミュレーションで大量のシナリオを反復し、HILで実時間性やI/O、ドライバ、計算負荷を確認し、その後に実機でセンサー較正、接触、電源、通信、安全挙動を検証します。&lt;/p&gt;&#xA;&lt;p&gt;ただし、これは一方向に進む固定工程ではありません。変更がハードウェアや安全機能に関係する場合はHILや実機試験を前倒しし、失敗時にはシミュレーションやソフトウェア統合テストへ戻るフィードバックループを設けます。判断の軸は、変更のリスク、実機との差分、再現性、安全要求です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ三つの段階を分けるのか&#34;&gt;なぜ三つの段階を分けるのか&lt;/h2&gt;&#xA;&lt;p&gt;実機だけで全テストを行うと、設備を占有し、再現性のある大量試験や並列実行が難しくなります。一方、シミュレーションだけでは、実機の遅延やジッタ、センサーの較正状態、機械的な接触・摩擦、電源状態、通信障害を十分に再現できません。&lt;/p&gt;&#xA;&lt;p&gt;そこで、検証対象を分解します。ソフトウェアの論理や制御方策はシミュレーションで広く確認し、実際の制御ハードウェアとリアルタイムの入出力はHILで確認します。最後に、シミュレーションモデルで表現しにくい物理条件と安全挙動を、管理された実機環境で確認します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用語と役割&#34;&gt;用語と役割&lt;/h2&gt;&#xA;&lt;p&gt;**SIL（Software-in-the-Loop）**は、制御ソフトウェアや複数ノードの統合を、シミュレーション環境で検証する段階です。ROS 2の&lt;code&gt;launch_testing&lt;/code&gt;のように、複数ノードを起動してプロセス間の相互作用を検証する方法は、CIで実行するソフトウェア統合テストに利用できます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;シミュレーション&lt;/strong&gt;では、物理条件、環境、センサー入力を変化させ、再現可能なシナリオを大量に実行します。視覚・環境パラメータを変えるドメインランダム化や、質量、摩擦、遅延などを変えるダイナミクスランダム化は、シミュレーションと現実の差に対するロバスト性を高める手法です。ただし、これらは実機性能や安全性を保証するものではありません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;HIL&lt;/strong&gt;は、少なくとも制御ソフトウェアまたは対象ハードウェアを実機側で動かし、プラント、センサー、アクチュエータなどの一部をシミュレータで置き換える構成です。実際の制御ハードウェアとリアルタイムシミュレーションを接続するため、実時間性、通信、I/O、ドライバ、計算資源を、実機投入前に検証できます。資料によってHILの範囲は異なり、実フライトコントローラを中心に指す場合と、制御ECU、I/O、リアルタイムのプラントモデルを含む全体を指す場合があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;推奨する検証フロー&#34;&gt;推奨する検証フロー&lt;/h2&gt;&#xA;&lt;p&gt;変更を起点に、まず高速な単体テストとSILスモークテストを実行します。ここでは、プルリクエストやコミット単位で、制御ロジック、ノード間連携、代表的な異常処理を確認します。次に、広いシナリオ集合を使ったSIL回帰を、夜間または定期的に実行します。環境やセンサー入力を変えたケースを含めることで、単一の正常系だけでは見つけにくい問題を調べられます。&lt;/p&gt;&#xA;&lt;p&gt;そのうえで、実時間性やハードウェア依存コード、通信プロトコル、センサー・アクチュエータI/O、故障処理、計算資源に影響する変更をHILへ送ります。HILでは、シミュレータからセンサー入力を与え、実際の制御ハードウェアから出力を取り出し、タイミング、通信、I/O、故障注入への応答を確認します。&lt;/p&gt;&#xA;&lt;p&gt;HILを通過した変更、またはセンサー較正、接触、安全機能、電源、実環境の通信に関係する変更は、実機ベンチへ進めます。安全に関わる試験では、通常の機能回帰とは別のテストスイートとして管理し、保護機構、中止手順、低速・低エネルギー条件、段階的な運用範囲の拡大を紐付けます。&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;検証はSIL、HIL、実機試験へ段階的に進めるが、失敗時やリスクの高い変更時には前段階へ戻るフィードバックループを設けます。&#34;&gt;flowchart LR&#xA;  A[&#34;コミット・変更&#34;] --&gt; B[&#34;単体テスト&#34;]&#xA;  B --&gt; C[&#34;SILスモーク&#34;]&#xA;  C --&gt; D[&#34;SIL回帰\n大量シナリオ&#34;]&#xA;  D --&gt; E[&#34;HIL\n実時間性・通信・I/O・故障処理&#34;]&#xA;  E --&gt; F[&#34;実機ベンチ\n較正・接触・電源・安全挙動&#34;]&#xA;  F --&gt; G[&#34;限定環境試験\n段階的な運用範囲&#34;]&#xA;  B -. &#34;失敗・修正&#34; .-&gt; H[&#34;修正・再テスト&#34;]&#xA;  C -. &#34;失敗・修正&#34; .-&gt; H&#xA;  D -. &#34;失敗・修正&#34; .-&gt; H&#xA;  E -. &#34;失敗・修正&#34; .-&gt; H&#xA;  F -. &#34;失敗・修正&#34; .-&gt; H&#xA;  H --&gt; A&#xA;  A -. &#34;変更リスクに応じて前倒し&#34; .-&gt; E&#xA;  A -. &#34;安全・接触・実環境に関係&#34; .-&gt; F&lt;/pre&gt;&lt;figcaption&gt;検証はSIL、HIL、実機試験へ段階的に進めるが、失敗時やリスクの高い変更時には前段階へ戻るフィードバックループを設けます。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;段階ごとの使い分け&#34;&gt;段階ごとの使い分け&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;段階&lt;/th&gt;&#xA;          &lt;th&gt;主な検証対象&lt;/th&gt;&#xA;          &lt;th&gt;推奨トリガー&lt;/th&gt;&#xA;          &lt;th&gt;強み&lt;/th&gt;&#xA;          &lt;th&gt;主な制約&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;SILスモーク&lt;/td&gt;&#xA;          &lt;td&gt;制御ロジック、ノード連携、基本的な異常処理&lt;/td&gt;&#xA;          &lt;td&gt;コミット、プルリクエスト&lt;/td&gt;&#xA;          &lt;td&gt;高速、反復可能、CIに組み込みやすい&lt;/td&gt;&#xA;          &lt;td&gt;実機のI/O、遅延、接触を確認できない&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;SIL回帰&lt;/td&gt;&#xA;          &lt;td&gt;多様な環境・物理条件・センサー入力&lt;/td&gt;&#xA;          &lt;td&gt;夜間、定期実行、リリース前&lt;/td&gt;&#xA;          &lt;td&gt;大量シナリオを低コストで実行できる&lt;/td&gt;&#xA;          &lt;td&gt;モデル誤差が結果に影響する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;HIL&lt;/td&gt;&#xA;          &lt;td&gt;実時間性、通信、ドライバ、I/O、計算負荷、故障処理&lt;/td&gt;&#xA;          &lt;td&gt;ハードウェア依存変更、定期実行、リリース前&lt;/td&gt;&#xA;          &lt;td&gt;実制御ハードウェアを含めて再現性を保てる&lt;/td&gt;&#xA;          &lt;td&gt;設備構築が必要で、SILより実行コストが高い&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;実機ベンチ&lt;/td&gt;&#xA;          &lt;td&gt;センサー較正、遅延・ジッタ、電源、接触、摩擦&lt;/td&gt;&#xA;          &lt;td&gt;リリース候補、安全・接触・実環境に関わる変更&lt;/td&gt;&#xA;          &lt;td&gt;実際の機械・電気条件を確認できる&lt;/td&gt;&#xA;          &lt;td&gt;実行時間、設備、人的安全管理が必要&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;限定環境試験&lt;/td&gt;&#xA;          &lt;td&gt;実環境での安全挙動と運用範囲&lt;/td&gt;&#xA;          &lt;td&gt;実機ベンチ合格後、段階的に実施&lt;/td&gt;&#xA;          &lt;td&gt;現場条件での挙動を確認できる&lt;/td&gt;&#xA;          &lt;td&gt;リスク管理と中止手順が不可欠&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;実機へ進める出口条件&#34;&gt;実機へ進める出口条件&lt;/h2&gt;&#xA;&lt;p&gt;実機試験への移行条件は、単一の性能値で決めるのではなく、検証目的ごとに定義します。少なくとも次の項目を記録します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット失敗ログの活用設計：再学習と回帰テストへつなぐデータループ</title>
      <link>https://physicalaihub.net/posts/robot-failure-log-data-loop/</link>
      <pubDate>Sat, 15 Aug 2026 09:17:15 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-failure-log-data-loop/</guid>
      <description>&lt;p&gt;失敗ログを保存するだけで、次のモデルやテストへ自然に生かせるのかが気になるテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの失敗ログを活用する中核は、件数を増やすことではなく、&lt;strong&gt;どの条件で何が起きたかを追跡できる形にし、同じ失敗を再学習用データと回帰テストへ分岐させること&lt;/strong&gt;です。改変しない生ログを起点に、エピソード、失敗イベント、失敗パターン、データセット、テストケースをIDで結びます。&lt;/p&gt;&#xA;&lt;p&gt;候補モデルの評価では、固定ホールドアウトや失敗リプレイ、シミュレーション、必要に応じた実機試験をゲートの例として用います。ただし、どこまで試験すればよいか、自動昇格を許すかは、対象タスクと安全要求に応じて決める必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜデータループが必要か&#34;&gt;なぜデータループが必要か&lt;/h2&gt;&#xA;&lt;p&gt;多くの実機システムでは、失敗時にセンサ入力、ロボット状態、制御指令、環境条件、方策やソフトウェアの版が関係します。必要な信号や版情報を欠くと、原因の切り分けや再現が難しくなり得ます。また、同じシーンのログを大量に追加しても、未見条件を評価できるとは限りません。&lt;/p&gt;&#xA;&lt;p&gt;そのため、失敗ログは単なるデバッグ記録ではなく、検出、確認、パターン化、選別、評価へ渡す入力として設計します。失敗事例を再学習に使う場合も、効果は失敗ラベル、負例の扱い、学習目的によって変わるため、改善を保証するものとして扱ってはいけません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となるデータ層&#34;&gt;前提となるデータ層&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2のrosbag2は、トピックデータの記録と再生を行う仕組みです。センサ、状態、指令を時系列で保存し、後から再生する基盤に利用できます。MCAPはスキーマ、チャネル、メッセージ、メタデータ、添付データなどを持つ時系列データ形式です。&lt;/p&gt;&#xA;&lt;p&gt;一方、RLDSはエピソードとステップの階層でデータを表し、観測、行動、報酬、終了状態などを扱います。rosbag2やMCAPが主に保存・再生を担うのに対し、RLDSは学習・評価向けの論理表現です。両者を同一スキーマとみなさず、正規化処理で変換します。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;層&lt;/th&gt;&#xA;          &lt;th&gt;役割&lt;/th&gt;&#xA;          &lt;th&gt;主な情報&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;生ログ&lt;/td&gt;&#xA;          &lt;td&gt;原記録の保存・再生&lt;/td&gt;&#xA;          &lt;td&gt;rosbag2またはMCAP、時刻、スキーマ&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;エピソード&lt;/td&gt;&#xA;          &lt;td&gt;学習・評価単位への正規化&lt;/td&gt;&#xA;          &lt;td&gt;episode_id、観測、行動、終了状態&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;失敗イベント&lt;/td&gt;&#xA;          &lt;td&gt;失敗区間の記録&lt;/td&gt;&#xA;          &lt;td&gt;event_id、時間窓、検出器、重大度、確認者&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;失敗パターン&lt;/td&gt;&#xA;          &lt;td&gt;類似失敗の集約&lt;/td&gt;&#xA;          &lt;td&gt;pattern_id、再現条件、代表例&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;データ・テスト&lt;/td&gt;&#xA;          &lt;td&gt;改善サイクルへの反映&lt;/td&gt;&#xA;          &lt;td&gt;dataset version、テストケース、結果&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;episode_id、event_id、pattern_id、policy_version、software_version、hardware_idで各層を相互参照し、データと処理の版を管理します。DVCのように、データをGitのコードやメタデータと対応付ける仕組みも利用できます。データセットの動機、構成、収集方法、前処理、用途、制約は、Datasheets for Datasetsの考え方に沿って記録すると判断を追跡しやすくなります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;失敗をパターンへ変換する流れ&#34;&gt;失敗をパターンへ変換する流れ&lt;/h2&gt;&#xA;&lt;p&gt;最初に、停止理由、安全イベント、タイムアウト、タスク判定など、確認可能なルールで失敗候補を抽出します。失敗した瞬間だけでなく、成功・失敗境界の前後を含む時間窓を切り出し、センサ、行動、環境条件、モデルとソフトウェアの版を付与します。次に、人手で失敗の有無と種類を確認します。&lt;/p&gt;&#xA;&lt;p&gt;確認済みの事例は、特徴量や埋め込みで類似例を集約し、共通する再現条件を調べます。学習中の正解率、信頼度、予測の変動を使い、典型的・曖昧・困難なデータ例を分析するDataset Cartographyの考え方も診断材料になります。ただし、これはロボットの物理的な重大度や安全リスクを直接測るものではありません。&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;  A[&#34;生ログを変更せずに収集\nrosbag2 / MCAP&#34;] --&gt; B[&#34;エピソードへ正規化\n時刻・モデル・ソフトウェア・ハードウェアの版を付与&#34;]&#xA;  B --&gt; C[&#34;ルールベースで失敗候補を抽出&#34;]&#xA;  C --&gt; D[&#34;時間窓・環境条件・センサ・行動を付与&#34;]&#xA;  D --&gt; E[&#34;人手で失敗の有無と種類を確認&#34;]&#xA;  E --&gt; F[&#34;類似事例をクラスタリング\n失敗パターンへ集約&#34;]&#xA;  F --&gt; G[&#34;重大度・未見性・不確実性・代表性・テスト状況で優先順位付け&#34;]&#xA;  G --&gt; H[&#34;版管理された学習データセット&#34;]&#xA;  G --&gt; I[&#34;回帰テストケース\n元ログ・再現条件・期待動作・閾値&#34;]&#xA;  H --&gt; J[&#34;候補モデルを学習&#34;]&#xA;  J --&gt; K[&#34;固定ホールドアウトと失敗リプレイで評価&#34;]&#xA;  I --&gt; K&#xA;  K --&gt; L[&#34;シミュレーションまたは実機の安全評価&#34;]&#xA;  L --&gt; M[&#34;段階導入&#34;]&#xA;  M --&gt; N[&#34;導入後の監視&#34;]&#xA;  N --&gt; A&#xA;  E -. &#34;未確認・追加確認&#34; .-&gt; D&lt;/pre&gt;&lt;figcaption&gt;失敗ログをパターンへ集約し、再学習と回帰テストに分岐させて、導入後の新しいログを再び収集する閉ループを示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;失敗パターンには、元ログへの参照、再現条件、期待する動作、許容閾値、乱数seedまたは環境固定条件を持たせます。「未確認」「確認済み」「再学習投入」「テスト化」「解消」「再発」といった状態を管理すれば、改善サイクルのどこにあるかを追跡できます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Physical AIの可観測性設計：センサー・推論・制御を横断して失敗を追跡する方法</title>
      <link>https://physicalaihub.net/posts/physical-ai-observability-sensor-inference-control-tracing/</link>
      <pubDate>Wed, 29 Jul 2026 09:10:27 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/physical-ai-observability-sensor-inference-control-tracing/</guid>
      <description>&lt;p&gt;ロボットの「遅い」「失敗した」という記録を、原因の追跡につながる観測へ変えるには何が必要かを整理します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの遅延や失敗を再現可能な形で調べるには、単一ノードのログではなく、センサー取得からアクチュエータ応答までを一つの実行単位として記録します。各境界に &lt;code&gt;run_id&lt;/code&gt;、&lt;code&gt;trace_id&lt;/code&gt;、&lt;code&gt;span_id&lt;/code&gt;、親子関係、メッセージのシーケンス番号、複数の時刻、処理状態を付与し、分散トレースとメッセージ記録を組み合わせるのが基本です。&lt;/p&gt;&#xA;&lt;p&gt;遅延は推論時間だけでなく、センサー取得、通信、キュー待ち、前処理、推論、制御計算、出力送信まで分解します。コード、モデル、設定、キャリブレーション、QoS、ファームウェア、乱数種、クロック設定も同じ調査単位に保存します。これにより、認識誤り、通信遅延、制御逸脱、安全停止の発生箇所と条件を追跡しやすくなります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ横断的な観測が必要か&#34;&gt;なぜ横断的な観測が必要か&lt;/h2&gt;&#xA;&lt;p&gt;Physical AIでは、センサー、ROS 2通信、前処理、推論、計画、制御、ドライバ、アクチュエータが別々の処理として動きます。「入力を受けた」というノードの記録は、センサーの露光時刻を示すとは限りません。同様に、制御コマンドをpublishした時刻と、アクチュエータが実際に受け付けた時刻も異なる可能性があります。&lt;/p&gt;&#xA;&lt;p&gt;そのため「推論が遅い」という症状だけでは、原因が通信、executorの待ち時間、キュー滞留、前処理、推論、出力送信のどこにあるか分かりません。処理経路を共通の相関情報で結び、区間ごとの時間と状態を比較できるようにします。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる仕組み&#34;&gt;前提となる仕組み&lt;/h2&gt;&#xA;&lt;p&gt;OpenTelemetryのトレースは、処理経路を複数の &lt;code&gt;span&lt;/code&gt; の集合として表します。spanには開始・終了時刻、属性、イベント、ステータスを付けられます。ログが個別の出来事、メトリクスが集計値を扱うのに対し、トレースは一回の処理経路を表します。&lt;/p&gt;&#xA;&lt;p&gt;W3C Trace Contextは、&lt;code&gt;trace-id&lt;/code&gt; や &lt;code&gt;parent-id&lt;/code&gt; などを分散コンポーネント間で伝播する標準形式を定義しています。ただし、ROS 2のDDS通信でこのコンテキストが自動的に伝播するとは確認できません。ROS 2ノード、メッセージ、middleware、またはブリッジ側で接続方法を設計する必要があります。&lt;/p&gt;&#xA;&lt;p&gt;ROS 2には、LTTngとROS 2固有のtracepointを使い、ノード、通信、コールバック、executorなどを時系列で観測する &lt;code&gt;ros2_tracing&lt;/code&gt; があります。アプリケーション固有の前処理、推論、制御には追加の計測点を設けます。&lt;code&gt;rosbag2&lt;/code&gt; はROS 2のトピックメッセージを記録・再生する仕組みで、トレースとは異なり、入力や中間メッセージを再利用するための記録系です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;計測する境界とデータフロー&#34;&gt;計測する境界とデータフロー&lt;/h2&gt;&#xA;&lt;p&gt;個別のspanまたはイベントとして、次の境界を計測します。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;センサー取得、ドライバ内のcapture&lt;/li&gt;&#xA;&lt;li&gt;middlewareへのpublishと受信&lt;/li&gt;&#xA;&lt;li&gt;キューへの投入・取り出し、callbackの開始・終了&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;各記録には、ノード名、トピック名、入力・出力時刻、成功・失敗・期限超過などの状態も含めます。高頻度センサーのペイロードをトレースへ常時埋め込むのではなく、参照ID、ハッシュ、要約統計を置き、完全なデータは別の記録系で保持する構成が扱いやすくなります。&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;センサーからアクチュエータ応答までの各境界を、run_id、trace_id、span_id、シーケンス番号、処理状態、複数の時刻で相関させる設計を示します。&#34;&gt;flowchart LR&#xA;  A[&#34;センサー取得・ドライバcapture&#34;] --&gt; B[&#34;middleware publish&#34;]&#xA;  B --&gt; C[&#34;middleware受信&#34;]&#xA;  C --&gt; D[&#34;キュー投入・取り出し&#34;]&#xA;  D --&gt; E[&#34;callback開始・終了&#34;]&#xA;  E --&gt; F[&#34;前処理&#34;]&#xA;  F --&gt; G[&#34;推論&#34;]&#xA;  G --&gt; H[&#34;計画・ポリシー出力&#34;]&#xA;  H --&gt; I[&#34;制御計算・出力生成&#34;]&#xA;  I --&gt; J[&#34;アクチュエータ送信&#34;]&#xA;  J --&gt; K[&#34;アクチュエータ応答&#34;]&#xA;  M[&#34;共通の相関情報\nrun_id または episode_id\ntrace_id・span_id・親span\nシーケンス番号・処理状態&#34;] -.-&gt; A&#xA;  M -.-&gt; B&#xA;  M -.-&gt; C&#xA;  M -.-&gt; D&#xA;  M -.-&gt; E&#xA;  M -.-&gt; F&#xA;  M -.-&gt; G&#xA;  M -.-&gt; H&#xA;  M -.-&gt; I&#xA;  M -.-&gt; J&#xA;  M -.-&gt; K&#xA;  T[&#34;時刻の併記\nSteady Time: 経過時間\nROS Time: 再生・シミュレーション\nSystem Time: ホスト間相関&#34;] -.-&gt; A&#xA;  T -.-&gt; K&lt;/pre&gt;&lt;figcaption&gt;センサーからアクチュエータ応答までの各境界を、run_id、trace_id、span_id、シーケンス番号、処理状態、複数の時刻で相関させる設計を示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;時刻を用途別に分ける&#34;&gt;時刻を用途別に分ける&lt;/h2&gt;&#xA;&lt;p&gt;遅延や経過時間の計測には、単調増加を前提とするSteady Timeを使います。シミュレーションや再生上の時系列にはROS Timeを使いますが、外部クロックやシミュレーション時間を扱える一方、クロック更新や時間のジャンプが起こり得ます。複数ホストの相関や人間向けの記録にはSystem Timeを併記します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2 Lifecycle Nodeの実践設計：起動順序・停止処理・異常復旧を状態機械で管理する</title>
      <link>https://physicalaihub.net/posts/ros2-lifecycle-node-state-management/</link>
      <pubDate>Tue, 16 Jun 2026 08:57:52 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-lifecycle-node-state-management/</guid>
      <description>&lt;p&gt;実機では、ノードの状態とアクチュエータの物理状態を同じものとして扱わない設計が特に気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2の実機システムでは、Lifecycle Nodeを単なる起動・停止フラグではなく、設定、実行、安全停止、再初期化を分ける状態機械として設計します。基本の起動経路は &lt;code&gt;Unconfigured → Inactive → Active&lt;/code&gt;、通常停止は &lt;code&gt;Active → Inactive → Unconfigured&lt;/code&gt;、最終終了は &lt;code&gt;Finalized&lt;/code&gt; へ進める構成です。遷移中の失敗や例外は &lt;code&gt;ErrorProcessing&lt;/code&gt; に分離します。&lt;/p&gt;&#xA;&lt;p&gt;ただし、Lifecycle Node単体が複数ノードの依存関係やプロセス再起動を管理するわけではありません。実機ではLifecycle Managerなどの外部オーケストレータで順序と監視を管理し、物理的な安全停止はハードウェアやコントローラ側にも実装します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ状態遷移が必要か&#34;&gt;なぜ状態遷移が必要か&lt;/h2&gt;&#xA;&lt;p&gt;通常のNodeでは、プロセス起動後に処理や通信が始まり、設定未完了のセンサーや、依存先が準備できていない制御器が動き出す可能性があります。Lifecycle Nodeは「設定済みだがまだ処理・出力を有効化していない状態」と「実際に動作する状態」を分離します。これにより、起動順序、段階的なアクティベーション、停止後の再初期化を外部から明示できます。&lt;/p&gt;&#xA;&lt;p&gt;状態照会と遷移要求には、&lt;code&gt;ChangeState&lt;/code&gt;、&lt;code&gt;GetState&lt;/code&gt;、&lt;code&gt;GetAvailableStates&lt;/code&gt;、&lt;code&gt;GetAvailableTransitions&lt;/code&gt; などの標準インターフェースを利用できます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;状態と標準遷移&#34;&gt;状態と標準遷移&lt;/h2&gt;&#xA;&lt;p&gt;Lifecycle Nodeの主要状態は次の4つです。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Unconfigured&lt;/code&gt;: 設定前、またはクリーンアップ後&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Inactive&lt;/code&gt;: 設定済みだが、処理や出力は未有効化&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Active&lt;/code&gt;: 処理と出力が有効&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Finalized&lt;/code&gt;: 終了処理後で、通常の再利用経路から外れた状態&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;移行中には &lt;code&gt;Configuring&lt;/code&gt;、&lt;code&gt;CleaningUp&lt;/code&gt;、&lt;code&gt;Activating&lt;/code&gt;、&lt;code&gt;Deactivating&lt;/code&gt;、&lt;code&gt;ShuttingDown&lt;/code&gt;、&lt;code&gt;ErrorProcessing&lt;/code&gt; があります。Configureは &lt;code&gt;Unconfigured&lt;/code&gt; から &lt;code&gt;Inactive&lt;/code&gt; へ、Activateは &lt;code&gt;Inactive&lt;/code&gt; から &lt;code&gt;Active&lt;/code&gt; へ進めます。Cleanupは &lt;code&gt;Inactive&lt;/code&gt; から &lt;code&gt;Unconfigured&lt;/code&gt; へ戻し、Shutdownは主要状態から &lt;code&gt;Finalized&lt;/code&gt; へ移します。&lt;/p&gt;&#xA;&lt;p&gt;遷移コールバックは成功、失敗、エラーの結果を返します。成功なら次の状態へ進み、失敗なら原則として遷移前の主要状態へ戻ります。エラーの場合は &lt;code&gt;ErrorProcessing&lt;/code&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;Lifecycle Node単体の起動、段階的な停止、遷移エラー時の復旧経路を示す。通常の遷移失敗では遷移前の主要状態へ戻る場合があるため、ErrorProcessingへの分岐はエラー結果を表す。&#34;&gt;flowchart LR&#xA;  U[&#34;Unconfigured&#34;] --&gt;|&#34;Configure&#34;| C[&#34;Configuring&#34;]&#xA;  C --&gt;|&#34;成功&#34;| I[&#34;Inactive&#34;]&#xA;  I --&gt;|&#34;Activate&#34;| AT[&#34;Activating&#34;]&#xA;  AT --&gt;|&#34;成功&#34;| A[&#34;Active&#34;]&#xA;  A --&gt;|&#34;Deactivate&#34;| D[&#34;Deactivating&#34;]&#xA;  D --&gt;|&#34;成功&#34;| I&#xA;  I --&gt;|&#34;Cleanup&#34;| CL[&#34;CleaningUp&#34;]&#xA;  CL --&gt;|&#34;成功&#34;| U&#xA;  U --&gt;|&#34;Shutdown&#34;| S[&#34;ShuttingDown&#34;]&#xA;  I --&gt;|&#34;Shutdown&#34;| S&#xA;  A --&gt;|&#34;Shutdown&#34;| S&#xA;  S --&gt;|&#34;完了&#34;| F[&#34;Finalized&#34;]&#xA;  C -.-&gt;|&#34;エラー&#34;| E[&#34;ErrorProcessing&#34;]&#xA;  AT -.-&gt;|&#34;エラー&#34;| E&#xA;  D -.-&gt;|&#34;エラー&#34;| E&#xA;  CL -.-&gt;|&#34;エラー&#34;| E&#xA;  S -.-&gt;|&#34;エラー&#34;| E&#xA;  E --&gt;|&#34;復旧成功&#34;| U&#xA;  E --&gt;|&#34;処理失敗・継続不可&#34;| F&#xA;  classDef main fill:#e8f1ff,stroke:#3674c5,color:#111;&#xA;  classDef transition fill:#fff4d6,stroke:#c28a00,color:#111;&#xA;  classDef error fill:#ffe5e5,stroke:#c33,color:#111;&#xA;  class U,I,A,F main;&#xA;  class C,AT,D,CL,S transition;&#xA;  class E error;&lt;/pre&gt;&lt;figcaption&gt;Lifecycle Node単体の起動、段階的な停止、遷移エラー時の復旧経路を示す。通常の遷移失敗では遷移前の主要状態へ戻る場合があるため、ErrorProcessingへの分岐はエラー結果を表す。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;コールバックの責務を分ける&#34;&gt;コールバックの責務を分ける&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;コールバック&lt;/th&gt;&#xA;          &lt;th&gt;主な責務&lt;/th&gt;&#xA;          &lt;th&gt;設計上の注意&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;on_configure&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;設定読み込み、デバイス接続、リソース確保&lt;/td&gt;&#xA;          &lt;td&gt;通常出力はまだ有効化しない&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;on_activate&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;処理・出力の有効化&lt;/td&gt;&#xA;          &lt;td&gt;設定済みの機能だけを実行状態にする&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;on_deactivate&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;処理・出力の停止&lt;/td&gt;&#xA;          &lt;td&gt;Activeから安全に停止する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;on_cleanup&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;確保済みリソースの解放&lt;/td&gt;&#xA;          &lt;td&gt;再Configureできる境界を作る&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;on_shutdown&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;終了処理&lt;/td&gt;&#xA;          &lt;td&gt;ノードを終了状態へ移す&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;on_error&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;異常処理&lt;/td&gt;&#xA;          &lt;td&gt;再利用可能性を判定する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;センサーの設定や通信資源の確保は &lt;code&gt;on_configure&lt;/code&gt;、データ処理や出力の開始は &lt;code&gt;on_activate&lt;/code&gt; に置きます。停止時は &lt;code&gt;on_deactivate&lt;/code&gt; で処理と出力を止め、再利用しない場合は &lt;code&gt;on_cleanup&lt;/code&gt; または &lt;code&gt;on_shutdown&lt;/code&gt; で資源を解放します。役割を混在させないことが、再初期化のしやすさにつながります。&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>
    <item>
      <title>ロボット学習データの収集設計：実機デモの記録形式と品質検証</title>
      <link>https://physicalaihub.net/posts/robot-learning-demonstration-data-collection/</link>
      <pubDate>Sun, 08 Mar 2026 08:24:51 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-learning-demonstration-data-collection/</guid>
      <description>&lt;p&gt;実機デモは動画として残すだけで十分なのか、という疑問から整理しました。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボット学習用の実機デモは、動画だけでなく、&lt;strong&gt;episodeの中に時系列のstepを持つデータ&lt;/strong&gt;として収集するのが基本です。各stepには、観測、行動、時刻、終了状態を紐づけ、episodeにはタスク、ロボット、センサー、キャリブレーションなどのメタデータを付与します。&lt;/p&gt;&#xA;&lt;p&gt;品質検証は、保存後に一度だけ行うのでは不十分です。まずスキーマ、配列、欠損、時刻系列を自動検査し、次に行動値や関節状態の物理的妥当性、タスク成功ラベルを確認します。最後に、episode単位でデータを分割し、同じセッションや環境が学習・検証・テストにまたがるリークを防ぎます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ収集形式が重要なのか&#34;&gt;なぜ収集形式が重要なのか&lt;/h2&gt;&#xA;&lt;p&gt;模倣学習やVLAでは、画像だけでなく、ロボットの状態と操作指令の対応を学習します。映像、関節状態、エンドエフェクタの状態、操作コマンドの時刻関係が崩れると、モデルは誤った因果関係を学習する可能性があります。また、成功デモだけを残すと、停止、失敗、やり直しといった実環境で起きる状態を扱いにくくなります。&lt;/p&gt;&#xA;&lt;p&gt;そのため、収集時点では失敗や中断も含めて保存し、後から終了理由やタスク結果を明示する設計が扱いやすくなります。ただし、成功・失敗ラベルの自動判定と人手判定のどちらが常に優れるかについて、全タスクに共通する基準はありません。タスクごとに判定方法を定義する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基本用語とデータ単位&#34;&gt;基本用語とデータ単位&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;episode&lt;/strong&gt;は、タスクの開始から終了までの一つの試行です。&lt;strong&gt;step&lt;/strong&gt;は、episode内のある時刻における観測と行動の組です。RLDSはepisodeとstepの階層を採用し、stepにobservation、action、reward、discount、is_first、is_last、is_terminalなどを持たせます。&lt;/p&gt;&#xA;&lt;p&gt;一方、robomimicはHDF5内のdemo単位に、actions、observations、rewards、donesなどを格納します。終了状態を表すフィールド名や意味は実装によって異なるため、単に&lt;code&gt;done&lt;/code&gt;という名前を合わせるだけでは不十分です。時間制限による終了と、タスクの成功・失敗による終了を区別するかを仕様に記録してください。&lt;/p&gt;&#xA;&lt;h2 id=&#34;推奨する収集スキーマ&#34;&gt;推奨する収集スキーマ&lt;/h2&gt;&#xA;&lt;p&gt;最低限、次の情報をepisode・stepに分けて保持します。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;観測&lt;/strong&gt;：カメラ画像、深度、関節位置・速度、エンドエフェクタ状態などのraw値と前処理済み値&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;：センサーごとのtimestamp、フレーム番号、制御周期、episode開始・終了時刻&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;終了情報&lt;/strong&gt;：報酬または評価値、discount、is_first、is_last、is_terminal、成功・失敗・中断の理由&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;メタデータ&lt;/strong&gt;：タスクID、ロボット構成、センサー構成、単位、座標系、カメラとロボットのキャリブレーション&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;再現性情報&lt;/strong&gt;：収集ソフトウェア、データスキーマ、前処理、設定のバージョン&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;複数のロボットやデータセットを統合する場合は、共通の論理スキーマを使いながら、元の行動空間、単位、座標系、制御周期、観測モダリティをメタデータとして残します。同じ&lt;code&gt;action&lt;/code&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;実機デモはepisodeとstepの階層で管理し、各stepに観測・行動・時刻・終了状態を、episodeにタスクやセンサーなどのメタデータを付与します。&#34;&gt;flowchart TB&#xA;  D[&#34;Dataset&#34;] --&gt; E[&#34;Episode：1回の試行&#34;]&#xA;  E --&gt; EM[&#34;Episodeメタデータ：タスクID、ロボット構成、センサー構成、キャリブレーション、単位、座標系、バージョン&#34;]&#xA;  E --&gt; S[&#34;Step：episode内のある時刻の観測と行動&#34;]&#xA;  S --&gt; T[&#34;timestamp・フレーム番号・制御周期&#34;]&#xA;  S --&gt; O[&#34;observation：画像、深度、関節状態、エンドエフェクタ状態&#34;]&#xA;  S --&gt; A[&#34;action：指令値・実行値、行動表現&#34;]&#xA;  S --&gt; R[&#34;reward・評価値・discount&#34;]&#xA;  S --&gt; F[&#34;is_first・is_last・is_terminal&#34;]&#xA;  E --&gt; X[&#34;終了情報：成功・失敗・中断・時間制限などの理由&#34;]&lt;/pre&gt;&lt;figcaption&gt;実機デモはepisodeとstepの階層で管理し、各stepに観測・行動・時刻・終了状態を、episodeにタスクやセンサーなどのメタデータを付与します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;保存形式は学習基盤で選ぶ&#34;&gt;保存形式は学習基盤で選ぶ&lt;/h2&gt;&#xA;&lt;p&gt;保存形式は一つに固定されません。重要なのは、論理的なepisode・step構造と、原仕様を失わないメタデータです。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;形式&lt;/th&gt;&#xA;          &lt;th&gt;構造・特徴&lt;/th&gt;&#xA;          &lt;th&gt;向いている場面&lt;/th&gt;&#xA;          &lt;th&gt;注意点&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;RLDS&lt;/td&gt;&#xA;          &lt;td&gt;episodeとstepを中心に、観測、行動、終了状態などを表現&lt;/td&gt;&#xA;          &lt;td&gt;step中心の学習基盤、複数データセットの統合&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;is_last&lt;/code&gt;や&lt;code&gt;is_terminal&lt;/code&gt;の意味を実装間で確認する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;robomimic HDF5&lt;/td&gt;&#xA;          &lt;td&gt;demo単位にactions、observations、rewards、donesなどを格納&lt;/td&gt;&#xA;          &lt;td&gt;robomimicを利用するロボット操作学習&lt;/td&gt;&#xA;          &lt;td&gt;HDF5内のキーとデータ型、終了状態の意味をそろえる&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Parquet・MP4系&lt;/td&gt;&#xA;          &lt;td&gt;低次元データやメタデータを表形式、映像を動画チャンクとして分離&lt;/td&gt;&#xA;          &lt;td&gt;映像と状態データを分けた運用、I/Oや管理単位を重視する場合&lt;/td&gt;&#xA;          &lt;td&gt;圧縮方式やフレーム欠落の影響をタスクごとに確認する&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;実務では、変更しないrawログ層、学習向けに正規化した層、品質検証結果とprovenanceを管理するmanifest層の三層構成が扱いやすい設計です。rawを上書きせず、変換元と変換処理のバージョンを追跡できるようにします。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
