<?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/categories/%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3/</link>
    <description>Recent content in シミュレーション 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/%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3/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>接触作業向けロボットシミュレーションの選び方：物理エンジンと接触計算を比較する</title>
      <link>https://physicalaihub.net/posts/robot-contact-simulation-physics-engine-selection/</link>
      <pubDate>Sat, 31 Oct 2026 14:18:48 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-contact-simulation-physics-engine-selection/</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;高速衝突では、連続衝突検出（CCD）と細かい固定時間刻み、またはサブステップを候補にします。押し付け、把持、挿入、組立では、見た目の安定性だけでなく、接触力や静止摩擦から滑りへの遷移を確認します。積み重ねや多接触では、ソルバー反復回数と時間刻みを別々に変え、収束性とコストの組み合わせを評価します。&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;接触ソルバーは、物体の貫通を抑え、摩擦や拘束条件を満たすための数値計算を担います。反復回数を増やすと拘束残差やドリフトが改善する可能性がありますが、計算量も増えます。CCDは、離散的な衝突判定だけでは見落としやすい高速物体や薄い形状を扱うための仕組みです。CCD、固定時間刻み、サブステップは異なる機構であり、単純な代替策ではありません。組み合わせや代替の効果は対象タスクで確認します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;エンジンごとの設定項目&#34;&gt;エンジンごとの設定項目&lt;/h2&gt;&#xA;&lt;p&gt;本稿で参照する範囲は、PhysX 5.4.1、MuJoCo stable documentation（リリース番号は資料上で固定されていない）、Bullet3 master の User Manual（参照コミットは資料上で固定されていない）です。MuJoCoとBulletについては、再現性のために利用する実装のリリースやコミットを別途固定してください。固定されていない資料から、特定版同士の性能順位を断定することはできません。&lt;/p&gt;&#xA;&lt;p&gt;MuJoCoでは、時間刻みと積分器に加え、Newton、CG、PGSなどの拘束ソルバー、反復回数、収束許容値を設定できます。接触をソフトな制約として扱い、&lt;code&gt;solref&lt;/code&gt;、&lt;code&gt;solimp&lt;/code&gt;、摩擦パラメータ、接触形状も調整対象です。モデルベース制御で接触パラメータを明示的に調整したい場合の候補ですが、設定値を他エンジンへそのまま移植できるとは限りません。&lt;/p&gt;&#xA;&lt;p&gt;PhysX 5.4.1では、PGSとTGS、位置方向・速度方向のソルバー反復回数、接触オフセット、静止オフセット、CCDを個別に設定できます。既存基盤に合わせてこれらを調整したい場合の候補ですが、TGSの特徴から他エンジンを含む総合順位を推定してはいけません。&lt;/p&gt;&#xA;&lt;p&gt;Bulletでは、&lt;code&gt;stepSimulation&lt;/code&gt; の &lt;code&gt;maxSubSteps&lt;/code&gt; と &lt;code&gt;fixedTimeStep&lt;/code&gt; により、経過時間を固定時間刻みに分割できます。ソルバー反復回数や連続衝突検出も設定対象です。Bullet3 master はコミット未固定の資料であるため、実装を比較に使う場合は対象コミットを記録します。&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 TD&#xA;  A[&#34;接触タスクを分類&#34;] --&gt; B{&#34;主な接触レジームは？&#34;}&#xA;  B --&gt;|&#34;高速衝突・飛翔物体&#34;| C[&#34;CCD、固定時間刻み、サブステップを確認&#34;]&#xA;  C --&gt; D[&#34;トンネリング、衝突時刻、衝突インパルスを比較&#34;]&#xA;  B --&gt;|&#34;持続接触・押し付け・把持・挿入&#34;| E[&#34;接触剛性・減衰、摩擦、位置拘束反復を確認&#34;]&#xA;  E --&gt; F[&#34;侵入量、接触力、関節トルク、滑り遷移を比較&#34;]&#xA;  B --&gt;|&#34;準静的操作・組立&#34;| G[&#34;接触コンプライアンス、収束許容値、時間刻みを確認&#34;]&#xA;  G --&gt; H[&#34;力の再現性、拘束残差、軌道の収束を比較&#34;]&#xA;  B --&gt;|&#34;多接触・積み重ね&#34;| I[&#34;ソルバー方式、反復回数、時間刻みを確認&#34;]&#xA;  I --&gt; J[&#34;反復回数と時間刻みを独立に変えて収束試験&#34;]&#xA;  D --&gt; K[&#34;同じモデル、初期条件、制御入力で比較&#34;]&#xA;  F --&gt; K&#xA;  H --&gt; K&#xA;  J --&gt; K&#xA;  K --&gt; L[&#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;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;CCD、固定時間刻み、サブステップ&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;積分器、拘束ソルバー、接触パラメータ&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-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>ロボットの地図を長期運用する：環境変化の検出と再マッピング設計</title>
      <link>https://physicalaihub.net/posts/robot-long-term-map-maintenance/</link>
      <pubDate>Fri, 02 Oct 2026 14:21:39 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-long-term-map-maintenance/</guid>
      <description>&lt;p&gt;長期運用では、地図を更新する仕組みよりも、更新してよい変化を見分ける仕組みの設計が難しくなります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;長期運用するロボットの地図は、1枚のデータを観測のたびに書き換えるのではなく、少なくとも次の三つに分けて管理するのが安全です。&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;/ul&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;Nav2のCostmap 2Dは、静的地図、センサ由来の障害物情報、障害物の膨張処理などをレイヤーとして組み合わせます。センサ観測による障害物のマーキングとクリアも設定できます。この構造は、走行中の即時反応と、基準地図の恒久更新を分離する土台になります。&lt;/p&gt;&#xA;&lt;p&gt;一方、Nav2のMap Serverは地図を提供するライフサイクルノードで、地図の読み込みや保存を扱います。地図画像とYAMLメタデータには、解像度、原点、フレームなどの情報が含まれます。これらは地図版を管理する際にも重要な属性です。&lt;/p&gt;&#xA;&lt;p&gt;座標系については、ROSのREP-105で、&lt;code&gt;map&lt;/code&gt;はグローバルな基準、&lt;code&gt;odom&lt;/code&gt;は連続的だが長期的にはドリフトし得る座標系、&lt;code&gt;base_link&lt;/code&gt;はロボット本体の座標系として整理されています。基準地図を差し替えると、同じ&lt;code&gt;map&lt;/code&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;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; F[&#34;動的物体の検出・追跡&#34;]&#xA;  S --&gt; D[&#34;基準地図との差分検出&#34;]&#xA;  F --&gt; C[&#34;ライブコストマップ&#34;]&#xA;  C --&gt; N[&#34;走行安全性・経路計画&#34;]&#xA;  D --&gt; H[&#34;観測履歴\n時刻・位置・視点・再観測&#34;]&#xA;  H --&gt; P[&#34;持続性・複数視点・動的物体でないことの判定&#34;]&#xA;  P --&gt; Q[&#34;更新候補／差分パッチ&#34;]&#xA;  Q --&gt; R[&#34;再マッピング・観測ログ再生&#34;]&#xA;  R --&gt; V[&#34;検証走行・指標確認&#34;]&#xA;  V --&gt; A[&#34;承認&#34;]&#xA;  A --&gt; U[&#34;新しい地図版へ原子的に昇格&#34;]&#xA;  U --&gt; B[&#34;承認済みの基準地図&#34;]&#xA;  B --&gt; D&#xA;  U --&gt; W[&#34;旧版を不変スナップショットとして保存&#34;]&lt;/pre&gt;&lt;figcaption&gt;走行時はライブコストマップで即時対応し、恒久的な地図変更は候補化、再マッピング、検証、承認を経て別の地図版として昇格させる。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;この設計では、ライブコストマップは「今、通れるか」を判断するための層、基準地図は「環境の標準状態」を表す層、候補地図は「標準状態を変更してよいか」を審査する層です。SLAM Toolboxは通常のSLAMに加え、長期的なマッピング、既存地図を用いたローカライゼーション、地図・ポーズグラフの保存と再利用を扱うソフトウェアとして提供されています。ただし、どの変化を恒久地図へ昇格させるかは、利用側のポリシーとして定義する必要があります。&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/robotics-synthetic-data-real-data-strategy/</link>
      <pubDate>Wed, 15 Apr 2026 00:45:58 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robotics-synthetic-data-real-data-strategy/</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;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;p&gt;制御では、質量や摩擦、遅延といったパラメータを一つに固定せず、分布として扱う。さらに、接触を伴う器用な手内操作についても、視覚と物理ダイナミクスをランダム化して学習した方策を実機で評価した事例がある。ただし、これらは特定のロボット、タスク、ランダム化設定での実証であり、別の構成にそのまま一般化できるとは限らない。&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;  A[&#34;タスクを要因に分解&#34;] --&gt; B{&#34;シミュレータで再現・ラベル生成しやすいか&#34;}&#xA;  B --&gt;|&#34;比較的しやすい&#34;| C[&#34;視覚認識・照明・背景・姿勢・状態ラベル&#34;]&#xA;  C --&gt; D[&#34;合成データ中心を検討&#34;]&#xA;  B --&gt;|&#34;一部は再現可能&#34;| E[&#34;質量・摩擦・遅延を含む制御&#34;]&#xA;  E --&gt; F[&#34;ダイナミクスランダム化と実機移転確認&#34;]&#xA;  B --&gt;|&#34;再現しにくい要因が支配的&#34;| G[&#34;接触順序・柔軟性・センサー雑音・固有差&#34;]&#xA;  G --&gt; H[&#34;実機アンカーと実機微調整を重視&#34;]&#xA;  D --&gt; I[&#34;独立した実機評価&#34;]&#xA;  F --&gt; I&#xA;  H --&gt; I&#xA;  I --&gt; J[&#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;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;視覚認識、照明・背景・姿勢のばらつき&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;/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;/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;/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;/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;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;この表は固定的な処方箋ではない。特に、カメラの視野・ノイズ、アクチュエータの遅延、物体や治具の公差、柔軟性をシミュレータがどの程度表現できるかで判断は変わる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sim-to-Realの性能劣化を分解する：物理パラメータ・センサー・制御の補正手順</title>
      <link>https://physicalaihub.net/posts/sim-to-real-performance-gap-diagnosis/</link>
      <pubDate>Sat, 14 Feb 2026 00:12:29 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/sim-to-real-performance-gap-diagnosis/</guid>
      <description>&lt;p&gt;シミュレーション上の成功が実機で崩れるとき、物理モデルだけを疑う前に、ログと時間の整合性を確認したくなります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;Sim-to-Realで性能が落ちたとき、いきなり摩擦や質量を調整するのは得策ではありません。まず単位、座標系、アクションスケール、時刻、制御周期などのインターフェースを確認し、次にセンサーと遅延、アクチュエータと低レベル制御、剛体・運動学、接触・環境の順で補正します。その後、残る不確実性に対してダイナミクスランダム化、実機データによる分布更新、オンライン適応、方策の再調整を検討します。&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;strong&gt;システム同定&lt;/strong&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;h3 id=&#34;1-ログとインターフェースを監査する&#34;&gt;1. ログとインターフェースを監査する&lt;/h3&gt;&#xA;&lt;p&gt;最初に、単位、座標系、アクションのスケール、飽和処理、ログ時刻、制御周期をそろえます。センサー、制御入力、状態推定、時刻情報は同一試験単位で保存し、後から再生できる形にします。ROS 2では&lt;code&gt;ros2 bag&lt;/code&gt;に指定トピックを記録・再生できます。&lt;/p&gt;&#xA;&lt;p&gt;ここが崩れていると、後段で物理パラメータを調整しても、入力と観測の対応がずれたままになります。まず再生ログとシミュレーションの入出力インターフェースが一致するかを確認します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-センサー座標系時間を合わせる&#34;&gt;2. センサー、座標系、時間を合わせる&lt;/h3&gt;&#xA;&lt;p&gt;センサーのバイアス、ゼロ点、外部パラメータ、ノイズ、観測遅延を調べます。視覚入力を使う場合は、テクスチャ、照明、カメラ姿勢、背景、物体配置の差も対象です。実機画像に近い観測分布を作るだけでなく、視覚以外の状態推定値についても、シミュレーションと同じ前処理になっているか確認します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-アクチュエータと低レベル制御を合わせる&#34;&gt;3. アクチュエータと低レベル制御を合わせる&lt;/h3&gt;&#xA;&lt;p&gt;指令値が同じでも、モーターの応答、トルク制限、内部制御器、フィルタ、遅れによって実際の運動は変わります。脚ロボットなどでは、アクチュエータモデルをシミュレーションに含めることが、剛体パラメータを合わせることとは別の補正対象になります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;4-剛体運動学を調整する&#34;&gt;4. 剛体・運動学を調整する&lt;/h3&gt;&#xA;&lt;p&gt;質量、重心、慣性、関節減衰などを確認します。重力姿勢や自由空間の運動を使い、剛体モデルと運動学の誤差を切り分けます。MuJoCoのモデル定義では、ボディ、関節、アクチュエータ、センサー、接触・摩擦関連の要素を個別に設定でき、パラメータをカテゴリ別に管理する際の参照になります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;5-接触と環境を調整する&#34;&gt;5. 接触と環境を調整する&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;実機ログに現れる残差パターンを手掛かりに、優先して確認する原因カテゴリを切り分ける。&#34;&gt;flowchart LR&#xA;  A[&#34;実機で性能劣化&#34;] --&gt; B[&#34;残差パターンを観測&#34;]&#xA;  B --&gt; C[&#34;定常的な位置・角度オフセット&#34;]&#xA;  B --&gt; D[&#34;位相遅れ&#34;]&#xA;  B --&gt; E[&#34;自由空間での振幅差&#34;]&#xA;  B --&gt; F[&#34;接触時の衝撃・滑り&#34;]&#xA;  B --&gt; G[&#34;視覚入力時だけの失敗&#34;]&#xA;  B --&gt; H[&#34;時間変化する差&#34;]&#xA;  C --&gt; C1[&#34;ゼロ点・座標系・初期姿勢&#34;]&#xA;  D --&gt; D1[&#34;時刻・通信・制御遅延&#34;]&#xA;  E --&gt; E1[&#34;ゲイン・摩擦・慣性・アクチュエータ&#34;]&#xA;  F --&gt; F1[&#34;摩擦・剛性・接触形状・環境&#34;]&#xA;  G --&gt; G1[&#34;カメラ・レンダリング分布・前処理&#34;]&#xA;  H --&gt; H1[&#34;オンライン適応・履歴からの状態推定&#34;]&lt;/pre&gt;&lt;figcaption&gt;実機ログに現れる残差パターンを手掛かりに、優先して確認する原因カテゴリを切り分ける。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 id=&#34;6-不確実性と方策を扱う&#34;&gt;6. 不確実性と方策を扱う&lt;/h3&gt;&#xA;&lt;p&gt;点推定したモデルで実機を再現できない場合は、同定値の周囲に不確実性を持たせたダイナミクスランダム化を行います。実機ロールアウトとシミュレーション軌道の差を使い、ランダム化分布やシミュレーションパラメータを更新する方法もあります。それでも時間変化する差が残るなら、オンライン適応や残差方策を追加し、最後に方策自体を再調整します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
