<?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%86%E3%82%B9%E3%83%88%E8%87%AA%E5%8B%95%E5%8C%96/</link>
    <description>Recent content in テスト自動化 on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Sat, 05 Sep 2026 09:21:36 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/tags/%E3%83%86%E3%82%B9%E3%83%88%E8%87%AA%E5%8B%95%E5%8C%96/index.xml" rel="self" type="application/rss+xml" />
    <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>
  </channel>
</rss>
