<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Physical AI Hub</title>
    <link>https://physicalaihub.net/</link>
    <description>Recent content on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Sat, 07 Nov 2026 14:46:34 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/index.xml" rel="self" type="application/rss+xml" />
    <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-vision-open-vocabulary-task-specific-recognition/</link>
      <pubDate>Thu, 05 Nov 2026 15:22:58 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-vision-open-vocabulary-task-specific-recognition/</guid>
      <description>&lt;p&gt;語彙を広げるほどロボットが賢くなるのか、それとも判断を狭く保つことが安全につながるのかが、このテーマの出発点です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;認識対象が頻繁に変わり、未知物体の発見や自然言語による対象指定が必要なら、オープンボキャブラリー認識を第一候補にする。一方、棚卸しSKUやピッキング対象が固定され、誤検出のコストと再現性が重い場合は、タスク限定認識を基本にするのが妥当だ。&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;オープンボキャブラリー認識は、学習時に固定したクラスIDだけでなく、推論時にテキストクエリなどで指定した語彙の対象を認識・検出する方式である。画像と自然言語の対応を学習したモデルでは、テキストラベルを指定したゼロショット分類が可能になる。OWL-ViT、Grounding DINO、ViLDは、この考え方を物体検出へ適用する代表例である。&lt;/p&gt;&#xA;&lt;p&gt;一方、タスク限定認識は、業務で扱う対象とラベル定義をあらかじめ限定し、その範囲で分類・検出する構成を指す。対象が固定されているなら、必要なクラス、属性、拒否条件を明確に設計しやすい。反復的なピッキングや固定SKUの棚卸しでは、語彙を広げることよりも、定義した対象を安定して扱うことが優先される。&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;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;オープンボキャブラリー候補生成\nテキストクエリで対象を指定&#34;]&#xA;  B --&gt; C{&#34;候補の信頼度と対象条件を確認&#34;}&#xA;  C --&gt;|&#34;未知・低信頼度、または条件不一致&#34;| D[&#34;拒否・再観測・人手確認&#34;]&#xA;  C --&gt;|&#34;検証対象として受理&#34;| E[&#34;タスク限定分類&#34;]&#xA;  E --&gt; F[&#34;属性・姿勢・把持可能性を検証&#34;]&#xA;  F --&gt; G{&#34;信頼度と安全規則を確認&#34;}&#xA;  G --&gt;|&#34;条件を満たす&#34;| H[&#34;ロボット動作&#34;]&#xA;  G --&gt;|&#34;条件を満たさない&#34;| D&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;固定SKU、反復ピッキング、固定部品&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;h2 id=&#34;実装での使い分け&#34;&gt;実装での使い分け&lt;/h2&gt;&#xA;&lt;p&gt;探索フェーズでは、画像入力に対してテキストクエリを変えながら候補を生成し、未知または低信頼度の候補をそのまま行動へ渡さない構成が考えられる。運用フェーズでは、候補に対してタスク限定の分類、属性確認、姿勢推定、把持可能性判定を行い、最後に信頼度と安全規則による行動ゲートを置く。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2実行時パラメータ設計：動的変更・検証・適用境界をどう決めるか</title>
      <link>https://physicalaihub.net/posts/ros2-runtime-parameter-safety-design/</link>
      <pubDate>Wed, 04 Nov 2026 15:01:42 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-runtime-parameter-safety-design/</guid>
      <description>&lt;p&gt;実行中に設定を変えられるROS 2の柔軟性は、適用境界をどう設計するかで安全性が変わります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2の実行時パラメータ変更は、再起動なしの運用に役立ちます。ただし、変更できることと、安全に運転中へ即時反映できることは別です。影響範囲が限定された値だけを動的変更の対象にし、型・値域・単位・相互依存関係を検証したうえで、関連パラメータを原子的に更新します。&lt;/p&gt;&#xA;&lt;p&gt;制御ゲイン、速度・加速度上限、衝突判定閾値などは、安全な制御周期境界、またはLifecycle NodeのInactive状態で反映する設計が基本です。資源の再確保、通信設定、QoS、コンポーネント構成の変更を伴う値は、Lifecycle遷移や再起動を適用境界にします。認証・認可、監視、監査、ロールバックまでを一つの運用フローとして設計することが、運用性と安全性を両立する条件です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ適用境界が必要か&#34;&gt;なぜ適用境界が必要か&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2のパラメータはノードに関連付けられ、ノードのパラメータサービスから取得・設定できます。変更はParameterEventとして通知できるため、再起動せずにセンサー閾値や診断設定を調整し、変更を監視できます。&lt;/p&gt;&#xA;&lt;p&gt;一方、パラメータ機構が支援するのは、主に型やAPIレベルの整合性です。制御安定性、機械的安全、停止距離、センサー間の依存関係まで自動判定するわけではありません。数値として正しいゲインでも、ロボットの機構や制御周期との組み合わせによって安全とは限らないため、「変更可能か」と「運転中に反映できるか」を分けて判断します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;パラメータ変更の仕組み&#34;&gt;パラメータ変更の仕組み&lt;/h2&gt;&#xA;&lt;p&gt;パラメータは宣言して使用し、宣言時に型や説明を付与します。ParameterDescriptorでは、&lt;code&gt;read_only&lt;/code&gt;、動的型付け、整数・浮動小数点の範囲、追加制約などを記述できます。ただし、メタデータだけでドメイン固有の安全条件が満たされるわけではありません。必要な値域や組み合わせ条件は、対象ディストリビューションのAPI仕様を確認し、ノード側の検証処理でも明示します。&lt;/p&gt;&#xA;&lt;p&gt;ノードにはパラメータ変更コールバックを登録できます。コールバックは値が確定する前に候補を検証し、要求を受け入れるか拒否する場所です。ここでアクチュエータを操作したり、再帰的に別のパラメータ変更を呼び出したりせず、検証と実際の適用を分離します。&lt;/p&gt;&#xA;&lt;p&gt;複数のパラメータが関係する場合は、通常の&lt;code&gt;set_parameters&lt;/code&gt;ではなく&lt;code&gt;set_parameters_atomically&lt;/code&gt;を使います。&lt;code&gt;set_parameters&lt;/code&gt;は非原子的で、各パラメータの結果を個別に返します。これに対し、&lt;code&gt;set_parameters_atomically&lt;/code&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; C[&#34;型・値域・単位・相互依存を検証&#34;]&#xA;  C --&gt; D{&#34;検証に成功?&#34;}&#xA;  D -- &#34;いいえ&#34; --&gt; E[&#34;変更を拒否して記録&#34;]&#xA;  D -- &#34;はい&#34; --&gt; F[&#34;set_parameters_atomicallyで候補を更新&#34;]&#xA;  F --&gt; G{&#34;適用境界を満たす?&#34;}&#xA;  G -- &#34;いいえ&#34; --&gt; H[&#34;安全な制御周期境界またはInactiveまで保留&#34;]&#xA;  H --&gt; I[&#34;実値へ適用&#34;]&#xA;  G -- &#34;はい&#34; --&gt; I&#xA;  I --&gt; J[&#34;動作・制御状態・異常を監視&#34;]&#xA;  I --&gt; K[&#34;ParameterEventと外部監査ログを記録&#34;]&#xA;  J --&gt; L{&#34;異常を検知?&#34;}&#xA;  L -- &#34;いいえ&#34; --&gt; M[&#34;変更後状態を継続監視&#34;]&#xA;  L -- &#34;はい&#34; --&gt; N[&#34;旧設定へ復元、停止、または再起動&#34;]&#xA;  K --&gt; M&#xA;  N --&gt; O[&#34;復旧結果を記録&#34;]&lt;/pre&gt;&lt;figcaption&gt;パラメータの受付、検証、原子的更新、適用、監視、監査、異常時の復旧を分離した安全な変更フロー。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;lifecycleと適用タイミング&#34;&gt;Lifecycleと適用タイミング&lt;/h2&gt;&#xA;&lt;p&gt;Lifecycle Nodeには、Unconfigured、Inactive、Activeなどの状態と、configure、activate、deactivate、cleanupなどの遷移があります。どの状態でパラメータを適用し、どの資源を再構成するかはノード実装が定義します。Inactive状態だから自動的にアクチュエータ出力が停止する、という保証もありません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>移動マニピュレーターの全身動作計画：台車とアームを同時に最適化する方法</title>
      <link>https://physicalaihub.net/posts/mobile-manipulator-whole-body-motion-planning/</link>
      <pubDate>Tue, 03 Nov 2026 15:28:56 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/mobile-manipulator-whole-body-motion-planning/</guid>
      <description>&lt;p&gt;台車とアームを別々に安全と判断しても、全身では別の問題が現れる点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;移動マニピュレーターの全身動作計画では、台車とアームを別々に計画するのではなく、台車姿勢とアーム関節を結合した一つの構成空間として扱うのが基本です。平面移動なら台車状態をSE(2)、高さや姿勢も変化するならSE(3)として表し、全身状態を &lt;code&gt;q=[q_base,q_arm]&lt;/code&gt; とします。&lt;/p&gt;&#xA;&lt;p&gt;この状態と軌道に対して、エンドエフェクタの可到達性、台車・アーム・把持物を含む衝突、支持多角形に基づく安定性を同じ検証ループで評価します。衝突と安定性はハード制約、可操作性、経路長、台車移動量、クリアランスなどは目的関数またはソフト制約として分けると、設計意図を明確にできます。&lt;/p&gt;&#xA;&lt;p&gt;MoveItのPlanning Sceneはロボット状態、環境中の衝突物、付着物を管理し、衝突判定に利用できます。一方、Nav2のフットプリントは主に台車外形を2Dコストマップ上で扱う仕組みです。これらだけでアームの掃引体積やペイロード依存の安定性まで自動的に統合されるわけではないため、共有状態モデルと追加の妥当性判定が必要です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ統合が必要なのか&#34;&gt;なぜ統合が必要なのか&lt;/h2&gt;&#xA;&lt;p&gt;台車だけを見れば障害物を避けていても、アームのリンクや把持物が接触することがあります。反対に、アームの逆運動学が解けても、その姿勢で重心が支持領域の外側へ移動すれば、転倒余裕が小さくなる可能性があります。台車姿勢が変われば、同じ関節値でもエンドエフェクタの位置、障害物との距離、可到達性が変化するためです。&lt;/p&gt;&#xA;&lt;p&gt;Nav2では円形または多角形のフットプリントを設定し、台車の衝突・通行可能性をコストマップで評価します。しかし、アームのリンク形状、把持物、アームの動作による掃引体積までは自動的に表しません。MoveItのPlanning Sceneはロボットリンクと環境形状を含む3D衝突モデルに向いていますが、Nav2のフットプリントや安定性評価との同期は別途設計する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用語と内部の仕組み&#34;&gt;用語と内部の仕組み&lt;/h2&gt;&#xA;&lt;p&gt;可到達性はアーム単体の性質ではありません。台車姿勢と、エンドエフェクタに許される位置・姿勢の組み合わせとして評価します。Task Space Regionは許容されるエンドエフェクタの位置・姿勢領域を表し、その範囲でのIK可解性を計画へ組み込むために利用できます。&lt;/p&gt;&#xA;&lt;p&gt;候補状態 &lt;code&gt;q&lt;/code&gt; について、まず台車姿勢とアーム関節から全リンクの姿勢を計算します。次に、エンドエフェクタが目標領域に入るか、IKが解けるかを確認します。そのうえで、台車、アーム、把持物と環境の衝突を判定し、支持多角形と重心投影、または設定した転倒余裕を評価します。アーム姿勢、ペイロード、把持物の位置が変わると重心も変わるため、安定性はアーム計画から切り離せません。&lt;/p&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;/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;  S[&#34;環境センサ・ロボット状態&#34;] --&gt; W[&#34;共有ワールドモデル\n台車・アーム・把持物・環境・予約済み空間&#34;]&#xA;  W --&gt; B[&#34;台車候補姿勢・粗い経路の生成&#34;]&#xA;  W --&gt; Q[&#34;全身状態 q=[q_base,q_arm] の生成&#34;]&#xA;  B --&gt; Q&#xA;  Q --&gt; IK[&#34;全身IK・可到達性評価\nTask Space Region を確認&#34;]&#xA;  IK --&gt;|&#34;可解&#34;| C[&#34;全身衝突判定\n台車・アーム・把持物・環境&#34;]&#xA;  IK --&gt;|&#34;不可解&#34;| R[&#34;候補を除外&#34;]&#xA;  C --&gt;|&#34;衝突なし&#34;| ST[&#34;安定性評価\n支持多角形・重心投影・設定した安定余裕&#34;]&#xA;  C --&gt;|&#34;衝突あり&#34;| R&#xA;  ST --&gt;|&#34;条件を満たす&#34;| O[&#34;軌道最適化\n経路長・台車移動量・可操作性・クリアランス&#34;]&#xA;  ST --&gt;|&#34;条件を満たさない&#34;| R&#xA;  O --&gt; V[&#34;補間軌道全体の検証\n状態と軌道区間の衝突・安定性&#34;]&#xA;  V --&gt;|&#34;妥当&#34;| E[&#34;軌道実行&#34;]&#xA;  V --&gt;|&#34;不妥当&#34;| R&#xA;  E --&gt; X[&#34;環境またはロボット状態の変化&#34;]&#xA;  X --&gt; S&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;台車候補や粗い経路を先に作り、全身IK・衝突・安定性で絞り込む&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;候補生成、全身IK、最適化、軌道検証を組み合わせる&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;現実的な出発点は階層型です。まず台車候補姿勢、または粗いベース経路を生成します。次に各候補について全身IKと可到達性を評価し、目標を実現できる候補だけを残します。その後、Planning Sceneなどで台車・アーム・把持物・環境の衝突を判定し、安定性評価を加えた全身計画または軌道最適化を行います。最後に補間された軌道全体を検証し、環境やロボット状態が変化した場合は再計画します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>自律ドッキングの実装設計：位置合わせ・接近制御・充電接続を分解する</title>
      <link>https://physicalaihub.net/posts/robot-autonomous-docking-localization-control-charging/</link>
      <pubDate>Sun, 01 Nov 2026 14:47:08 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-autonomous-docking-localization-control-charging/</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;ul&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;/ul&gt;&#xA;&lt;h2 id=&#34;内部の仕組み不確実性を順にゲート化する&#34;&gt;内部の仕組み：不確実性を順にゲート化する&lt;/h2&gt;&#xA;&lt;p&gt;代表的な構成は、通常のナビゲーションでステージング地点へ移動し、その後にドック固有の処理を実行する段階構成です。汎用フレームワークでは、ステージング位置の取得、相対位置の精密化、最終接近、ドッキング状態、充電状態を別々の処理として設計できます。一方、組み込み型ロボットでは、これらが一つのDockアクションに隠蔽されることもあります。抽象化の違いであり、段階的に確認する考え方と矛盾しません。&lt;/p&gt;&#xA;&lt;p&gt;相対位置推定に使うセンサーは一つに決まりません。実装に応じて、赤外線、カメラ、レーザー・距離センサー、LiDAR、接触センサーなどが候補になります。重要なのは、センサー名を先に固定することではなく、各段階で何を観測し、どの状態を確定させるかを明確にすることです。&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;  C --&gt; D[&#34;相対位置・姿勢を精密化&#34;]&#xA;  D --&gt; E[&#34;低速接近&#34;]&#xA;  E --&gt; F[&#34;接触・ドッキング状態を検証&#34;]&#xA;  F --&gt; G[&#34;充電状態を検証&#34;]&#xA;  G --&gt; H[&#34;ドッキング成功&#34;]&#xA;&#xA;  B --&gt;|&#34;到達不可・タイムアウト&#34;| R[&#34;停止または再位置推定&#34;]&#xA;  D --&gt;|&#34;姿勢誤差・観測不安定&#34;| S[&#34;停止または後退&#34;]&#xA;  E --&gt;|&#34;障害物・異常接触・タイムアウト&#34;| S&#xA;  F --&gt;|&#34;停止・姿勢・ドック状態が未成立&#34;| T[&#34;後退して制限回数内で再試行&#34;]&#xA;  G --&gt;|&#34;充電未成立・タイムアウト&#34;| T&#xA;  S --&gt; R&#xA;  T --&gt;|&#34;再位置推定後&#34;| C&#xA;  T --&gt;|&#34;再試行上限超過&#34;| U[&#34;異常通知または遠隔介入&#34;]&#xA;  R --&gt;|&#34;復旧可能&#34;| B&lt;/pre&gt;&lt;figcaption&gt;大域自己位置推定からドック相対位置合わせへ段階的に切り替え、ドッキングと充電を分離して検証する制御フロー。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;図では、ステーションの同定と大域移動から始め、ステージング地点でドック基準の相対座標へ切り替えます。相対位置・姿勢を確認した後に低速接近し、接触・ドッキングを検証します。最後に充電状態を確認し、途中で条件を満たせなければ後退または再位置推定へ戻ります。&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-teleoperation-autonomy-handover/</link>
      <pubDate>Fri, 30 Oct 2026 14:33:57 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-teleoperation-autonomy-handover/</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;そのため、設計対象はトリガーだけではない。旧制御主体がいつ指令権を失ったか、新しい主体がいつ取得したか、操作者がどの状態を見ているか、引き継ぎに失敗した場合にどこへ遷移するかまでを、制御契約として定義する必要がある。ISO 12100:2010も、意図する使用と合理的に予見可能な誤使用を含むリスクアセスメントとリスク低減を示しており、モード切替もその対象として扱うのが妥当である。&lt;a href=&#34;https://www.iso.org/standard/51528.html&#34; target=&#34;_blank&#34; rel=&#34;noopener nofollow&#34;&gt;ISO 12100:2010&lt;/a&gt;&#xA;&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;strong&gt;共有自律&lt;/strong&gt;は、人間の方策とロボットの方策を組み合わせる設計で、意図検出、制御権の裁定、状態や意図の伝達が主要な論点になる。&lt;/p&gt;&#xA;&lt;p&gt;共有自律には、人間とロボットの指令を連続的に混合するpolicy blendingと、明示的な裁定によって一方へ制御権を渡す方式がある。すべての用途で優れた単一方式が定まっているわけではないため、責任主体と安全制約を明確にできるかで選ぶべきである。&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;予定外の物体、作業対象、経路、タスク状態が現れる&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;数値閾値は一般化できない。安全包絡、信頼度、通信遅延、タイムアウトの値は、ロボットの速度や質量、環境、作業対象、運用地域、適用規格によって変わるため、対象機のリスク分析と検証で定める。NIST AI Risk Management Frameworkは役割・責任、リスク測定、継続的監視、リスク対応を扱うが、具体的なロボットの切替閾値は規定していない。&lt;a href=&#34;https://www.nist.gov/itl/ai-risk-management-framework&#34; target=&#34;_blank&#34; rel=&#34;noopener nofollow&#34;&gt;NIST AI RMF&lt;/a&gt;&#xA;&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;  A[&#34;自律制御\n運動指令の主体: 自律系&#34;] --&gt;|&#34;安全包絡への接近・認識不確実性・タスク例外・人間要求&#34;| B[&#34;引き継ぎ要求&#34;]&#xA;  B --&gt; C[&#34;引き継ぎ待ち\n状態・通信・認証・準備状態を確認&#34;]&#xA;  C --&gt;|&#34;旧主体の権限喪失を確認\n制御権リースを解放&#34;| D[&#34;遠隔操作\n運動指令の主体: 操作者&#34;]&#xA;  C --&gt;|&#34;確認失敗・承認失敗・危険状態&#34;| E[&#34;安全停止または\n最小リスク状態&#34;]&#xA;  D --&gt;|&#34;ハートビート途切れ・端末無応答\n許容遅延超過・リース期限切れ&#34;| E&#xA;  D --&gt;|&#34;自律系への復帰条件を確認\n制御権を明示的に解放&#34;| F[&#34;復旧&#34;]&#xA;  E --&gt;|&#34;原因除去・安全確認・復旧承認&#34;| F&#xA;  F --&gt;|&#34;新しい制御権を単一主体へ付与&#34;| A&#xA;  S[&#34;独立した安全監視層\n速度・位置・侵入・停止条件を監視&#34;] -.-&gt;|&#34;必要時に指令を拒否・遮断&#34;| A&#xA;  S -.-&gt;|&#34;必要時に指令を拒否・遮断&#34;| D&#xA;  S -.-&gt;|&#34;通常の権限裁定とは分離&#34;| E&lt;/pre&gt;&lt;figcaption&gt;引き継ぎ条件の評価、旧制御主体の権限喪失確認、新しい主体への制御権付与、通信異常時の安全遷移を状態機械として示す。&lt;/figcaption&gt;&lt;/figure&gt;&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;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;基本形として採用しやすいのは、単一オーナー方式である。自律系、遠隔操作者、保守・設定系のうち、運動指令を発行できる主体を常に一つにする。アクセス強制と最小権限の考え方は、主体ごとの権限分離に利用できるが、NIST SP 800-53自体はロボット安全規格ではない。&lt;a href=&#34;https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final&#34; target=&#34;_blank&#34; rel=&#34;noopener nofollow&#34;&gt;NIST SP 800-53 Rev. 5&lt;/a&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>学習方策を安全に動かすランタイム保証：監視・シールド・フォールバックの設計</title>
      <link>https://physicalaihub.net/posts/robot-learning-policy-runtime-assurance/</link>
      <pubDate>Thu, 29 Oct 2026 14:33:48 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-learning-policy-runtime-assurance/</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;ただし、シールドや制御バリア関数（CBF）があるだけで安全性が自動的に保証されるわけではありません。モデル、状態推定、入力制約、計算時間、フォールバックの妥当性が前提を満たす必要があります。実機では、監視器そのものの故障、センサー欠測、通信遅延、アクチュエータ飽和まで含めて設計対象にします。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜランタイム保証が必要か&#34;&gt;なぜランタイム保証が必要か&lt;/h2&gt;&#xA;&lt;p&gt;VLA、模倣学習、強化学習の方策は、認識やタスク遂行を柔軟に扱える一方、出力をそのまま物理系へ適用できるとは限りません。モデルの意味的な信頼度やOODスコアだけでは、接触力、関節限界、急激な速度変化といった低レベルの危険を十分に判定できるか確認できません。&lt;/p&gt;&#xA;&lt;p&gt;そこで、学習方策の性能と安全性を同じモジュールに背負わせず、独立した安全側の仕組みを設けます。Simplex型の考え方では、高機能だが事前に信頼性を証明しにくいコントローラと、より単純で検証しやすい安全コントローラを併用し、監視と切り替えによって安全側を選択します。&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;CBF&lt;/strong&gt;は、安全集合の前向き不変性を保つ条件を制御入力の制約として表現します。方策が出した入力を、二次計画問題（CBF-QP）などで安全条件を満たす入力へ修正する設計に利用できます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;リカバリ方策&lt;/strong&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; E[&#34;状態推定&#34;]&#xA;  E --&gt; P[&#34;学習方策\nVLA・模倣学習・強化学習&#34;]&#xA;  P --&gt; M[&#34;独立したランタイム監視器&#34;]&#xA;  E --&gt; M&#xA;  M --&gt; C[&#34;現在状態・方策出力・予測状態を制約評価&#34;]&#xA;  C --&gt; A[&#34;通常指令を許可&#34;]&#xA;  C --&gt; F[&#34;安全側へ指令を修正\nCBF-QP・速度制限・トルク制限&#34;]&#xA;  C --&gt; R[&#34;リカバリ方策へ切り替え&#34;]&#xA;  C --&gt; X[&#34;停止&#34;]&#xA;  A --&gt; W[&#34;ウォッチドッグ確認&#34;]&#xA;  F --&gt; W&#xA;  R --&gt; W&#xA;  W --&gt; O[&#34;制約検査済み指令&#34;]&#xA;  X --&gt; O&#xA;  O --&gt; Act[&#34;アクチュエータ&#34;]&lt;/pre&gt;&lt;figcaption&gt;学習方策をアクチュエータへ直接接続せず、独立した監視層で指令を評価・修正する構成を示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;1制御周期の処理&#34;&gt;1制御周期の処理&lt;/h2&gt;&#xA;&lt;p&gt;実装では、監視器をアクチュエータ指令の直前に置きます。概念的なデータフローは、センサー取得、状態推定、学習方策の推論、短時間先の予測、制約評価、指令の許可または修正、ウォッチドッグ確認、アクチュエータ出力です。&lt;/p&gt;&#xA;&lt;p&gt;監視対象は少なくとも次の三つに分けます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>冗長ロボットの逆運動学設計：可到達性・特異点・関節限界を評価する順序</title>
      <link>https://physicalaihub.net/posts/redundant-manipulator-inverse-kinematics-constraints/</link>
      <pubDate>Tue, 27 Oct 2026 13:48:35 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/redundant-manipulator-inverse-kinematics-constraints/</guid>
      <description>&lt;p&gt;冗長マニピュレーターでは、IKの成否だけでなく、その解を軌道全体で維持できるかが設計上の焦点になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;冗長マニピュレーターの逆運動学では、可到達性、特異点、関節限界に普遍的な固定順序があるわけではありません。実装上は、まず目標姿勢のフレームや表現を確認し、粗い幾何的可到達性で明らかな失敗を除外します。その後、関節限界をハード制約として含むIKを解き、反復中から生成軌道までヤコビ行列の特異性を継続的に監視する構成が実用的です。&lt;/p&gt;&#xA;&lt;p&gt;7自由度以上の機構では、同じ手先姿勢に複数の関節解が存在し得ます。そこで冗長自由度を、関節限界からの距離、操作性、姿勢の望ましさ、軌道の連続性といった二次目的に使います。解が見つかったかだけでなく、その解が実機で継続的に動かせるかを評価することが重要です。&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;は、ヤコビ行列による手先速度と関節速度の関係が悪化する状態として扱えます。代表的な評価には、最小特異値、条件数、Yoshikawaの操作性指標などがあります。指標や危険とみなす閾値に普遍的な一つの答えはありません。&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;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;目標の入力を検証する&lt;/strong&gt;&lt;br&gt;&#xA;目標姿勢の座標フレーム、位置、姿勢表現を確認します。ここが誤っていると、IKソルバーを変更しても正しい解は得られません。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;粗い可到達性を確認する&lt;/strong&gt;&lt;br&gt;&#xA;明らかに機構の範囲外にある目標を、反復計算の前に除外します。これは最終判定ではなく、高コストなIKを不要な対象へ実行しないためのスクリーニングです。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;関節限界付きでIKを解く&lt;/strong&gt;&lt;br&gt;&#xA;関節の下限・上限は、解を得た後の検査項目ではなく、可能ならソルバー内のハード制約にします。制約を満たす解がなければ、幾何的に到達可能でも実行可能な目標ではありません。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;反復中に特異性を監視する&lt;/strong&gt;&lt;br&gt;&#xA;最終候補だけでなく、反復計算中や複数の冗長解を比較する段階でもヤコビ行列を確認します。特異点近傍では擬似逆行列による更新が不安定になり得るため、減衰最小二乗法などで発散を抑える方法があります。ただし減衰を強くするとタスク誤差が残るというトレードオフがあります。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;二次目的で候補解を選ぶ&lt;/strong&gt;&lt;br&gt;&#xA;複数解がある場合は、関節限界までの余裕、操作性、望ましい姿勢、直前解との連続性などを評価します。主タスクの誤差を満たすことが前提であり、二次目的だけで主タスクを犠牲にしてはいけません。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;軌道全体を検証する&lt;/strong&gt;&lt;br&gt;&#xA;1点のIK解が妥当でも、軌道の途中で関節限界に近づいたり、特異点に入ったりすることがあります。最終的には軌道上の関節限界余裕、特異性、速度、加速度を確認します。衝突、ケーブル干渉、トルク限界などは、この三項目とは別の制約として追加評価が必要です。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;粗い可到達性を前段のスクリーニングとして使い、関節限界付きIK、特異性の継続監視、二次目的による解選択、軌道全体の検証を行う実装フロー。固定的な普遍順序ではなく、実用上の評価構成を示しています。&#34;&gt;flowchart TD&#xA;  A[&#34;目標姿勢の入力を検証\n座標フレーム・位置・姿勢表現&#34;] --&gt; B[&#34;粗い幾何的可到達性を確認&#34;]&#xA;  B --&gt; C{&#34;明らかな範囲外か&#34;}&#xA;  C --&gt;|&#34;はい&#34;| X[&#34;対象外として除外&#34;]&#xA;  C --&gt;|&#34;いいえ&#34;| D[&#34;関節限界をハード制約に含めてIKを実行&#34;]&#xA;  D --&gt; E[&#34;反復中にヤコビ行列の特異性を監視&#34;]&#xA;  E --&gt; F{&#34;特異点近傍または数値不安定か&#34;}&#xA;  F --&gt;|&#34;はい&#34;| G[&#34;減衰や更新方法を調整\nタスク誤差とのトレードオフを確認&#34;]&#xA;  G --&gt; D&#xA;  F --&gt;|&#34;いいえ&#34;| H{&#34;制約を満たす候補解があるか&#34;}&#xA;  H --&gt;|&#34;いいえ&#34;| Y[&#34;実行可能な解なし\n初期値・条件・目標を再検討&#34;]&#xA;  H --&gt;|&#34;はい&#34;| I[&#34;複数の冗長解を比較&#34;]&#xA;  I --&gt; J[&#34;二次目的を評価\n関節限界余裕・操作性・姿勢・連続性&#34;]&#xA;  J --&gt; K[&#34;候補解を選択&#34;]&#xA;  K --&gt; L[&#34;軌道全体を検証\n関節限界余裕・特異性・速度・加速度&#34;]&#xA;  L --&gt; M{&#34;軌道全体が実行可能か&#34;}&#xA;  M --&gt;|&#34;いいえ&#34;| N[&#34;再計画または別の候補解を検討&#34;]&#xA;  N --&gt; I&#xA;  M --&gt;|&#34;はい&#34;| O[&#34;実行候補として採用&#34;]&lt;/pre&gt;&lt;figcaption&gt;粗い可到達性を前段のスクリーニングとして使い、関節限界付きIK、特異性の継続監視、二次目的による解選択、軌道全体の検証を行う実装フロー。固定的な普遍順序ではなく、実用上の評価構成を示しています。&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-long-term-memory-architecture/</link>
      <pubDate>Mon, 26 Oct 2026 13:28:05 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-long-term-memory-architecture/</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;長時間タスクでは、過去の観測や成功した操作を再利用できると、毎回ゼロから推論する必要を減らせます。一方、全履歴をVLMやVLAのコンテキストに入れ続ける方法は、履歴の増加と検索負荷を招きます。MemGPTは、モデルの主要コンテキストと外部アーカイブ記憶を分離し、必要な情報を関数呼び出しで移動・検索する構成を示しました。ロボットでも、実行モデルと長期記憶を分ける際の参考になります。&lt;/p&gt;&#xA;&lt;p&gt;ただし、3分類はロボット研究で統一された標準仕様ではありません。メモリーストリームと反省を中心に扱う構成や、コンテキストとアーカイブの階層を扱う構成もあります。ここでの3分類は、保存対象、検索条件、更新条件、実行系との接続を整理するための設計上の枠組みです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;3種類の記憶の役割&#34;&gt;3種類の記憶の役割&lt;/h2&gt;&#xA;&lt;h3 id=&#34;エピソード記憶経験の証拠&#34;&gt;エピソード記憶：経験の証拠&lt;/h3&gt;&#xA;&lt;p&gt;エピソード記憶には、時刻、場所、対象、観測、行動、成否、環境からのフィードバックを、一つの経験ログとして保存します。現在と似た状況を探す用途に向きますが、検索結果をそのまま事実や命令として扱ってはいけません。現在の知覚と照合するための状況証拠として利用します。&lt;/p&gt;&#xA;&lt;p&gt;検索キーは意味的な類似度だけでなく、場所、対象、タスク、時刻、成功履歴などを組み合わせます。Inner Monologueが示すように、物体検出やシーン状態、行動の成功・失敗を推論へ戻せば、実行中の計画を更新できます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;意味記憶抽象化された知識&#34;&gt;意味記憶：抽象化された知識&lt;/h3&gt;&#xA;&lt;p&gt;意味記憶には、複数の経験から抽象化された安定的な事実を保存します。物体と場所の関係、ユーザーや施設の好み、環境の制約などが対象です。個別の観測をそのまま蓄積するのではなく、再利用しやすい知識として扱います。&lt;/p&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;p&gt;Voyagerは、環境からのフィードバックを用いて、実行可能なコード形式のスキルを蓄積・再利用する構成を示しました。これは手続き記憶の実装例として解釈できます。ただし、未知の物体、照明、配置、摩擦条件へ安全に一般化できる範囲は、スキル表現とロボットに依存します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;読み出しと書き込みの流れ&#34;&gt;読み出しと書き込みの流れ&lt;/h2&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;エピソード記憶\n経験証拠&#34;]&#xA;  B --&gt; D[&#34;意味記憶\n制約・環境知識&#34;]&#xA;  C --&gt; E[&#34;現在の状態との照合&#34;]&#xA;  D --&gt; E&#xA;  E --&gt; F[&#34;手続き記憶\n前提条件付きスキル&#34;]&#xA;  F --&gt; G[&#34;実行可能性の再検証&#34;]&#xA;  G --&gt; H[&#34;実行器&#34;]&#xA;  H --&gt; I[&#34;行動結果・新しい観測&#34;]&#xA;  I --&gt; C&lt;/pre&gt;&lt;figcaption&gt;現在の知覚を起点に過去の記憶を検索し、手続きを再検証して実行した結果をエピソード記憶へ保存する流れ。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;読み出しでは、現在のタスクと知覚情報をメモリールータへ渡します。エピソード記憶から類似する経験を、意味記憶から関連する制約や環境知識を検索し、それらを条件として手続き記憶から候補スキルを選びます。&lt;/p&gt;&#xA;&lt;p&gt;SayCanは、言語モデルによる行動選択と、ロボットが各スキルを実行できる可能性を表すアフォーダンスを組み合わせます。この考え方は、手続きの検索と実行可能性の検証を分ける設計に対応します。実行後は、成功・失敗や環境からのフィードバックを取得し、継続または再計画します。&lt;/p&gt;&#xA;&lt;p&gt;書き込みでは、まず全試行をエピソードとして保存します。反復・整合性・信頼度を確認し、安定した事実を意味記憶へ、再利用価値と安全性を検証できた行動系列を手続き記憶へ昇格させます。&lt;/p&gt;&#xA;&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;エピソード&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;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-calibration-uncertainty-propagation-planning/</link>
      <pubDate>Fri, 23 Oct 2026 13:32:17 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-calibration-uncertainty-propagation-planning/</guid>
      <description>&lt;p&gt;校正値を高精度な固定値として扱うだけで、計画時の安全性まで十分に表せるのかが本稿の出発点です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;キャリブレーション誤差は、単一の安全マージンやXYZ各軸の独立した誤差として扱うのではなく、校正パラメータ、関節状態、認識結果などの誤差源を分けた確率分布として保持し、最終的な手先・対象物・障害物の座標へ伝播させるべきです。姿勢にはSE(3)上の局所摂動と6次元共分散を使い、局所的な非線形性であればヤコビアンによる共分散伝播を適用します。非線形性や分布の歪みが強い場合は、シグマ点法やモンテカルロ法へ切り替えます。&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;位置と回転を別々のスカラー誤差として扱うのではなく、ロボットの姿勢をSE(3)上の状態として表します。基準姿勢の近傍にある小さな変動を6次元の局所摂動で表し、その平均と6×6共分散を保持する形が基本です。共分散には、位置と回転の相関や、回転軸間の相関も含められます。&lt;/p&gt;&#xA;&lt;p&gt;ただし、共分散行列だけを保存しても意味は完全には決まりません。左摂動か右摂動か、摂動をbody frameで定義するかworld frameで定義するか、回転摂動をどのように定義するかによって、同じ6×6行列の解釈が変わります。実装では、共分散とともに摂動の定義、基準座標系、姿勢の変換規約を記録します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;共分散を座標変換へ伝播する仕組み&#34;&gt;共分散を座標変換へ伝播する仕組み&lt;/h2&gt;&#xA;&lt;p&gt;関節状態、校正パラメータ、対象物姿勢などを入力x、変換後の手先姿勢や相対姿勢を出力yとし、y=f(x)と表します。平均状態の近傍で線形化できるなら、ヤコビアンJを用いて次のように出力共分散を近似します。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Σ_y ≈ JΣ_xJᵀ&lt;/code&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;  A --&gt; C[&#34;測定誤差のモデル化&#34;]&#xA;  B --&gt; D[&#34;パラメータ平均と共分散&#34;]&#xA;  E[&#34;関節状態&#34;] --&gt; F[&#34;誤差源の統合&#34;]&#xA;  G[&#34;対象物認識結果&#34;] --&gt; F&#xA;  D --&gt; F&#xA;  C --&gt; F&#xA;  F --&gt; H[&#34;摂動規約と基準座標系を統一&#34;]&#xA;  H --&gt; I[&#34;SE(3)姿勢変換&#34;]&#xA;  I --&gt; J[&#34;ヤコビアンによる共分散伝播&#34;]&#xA;  J --&gt; K[&#34;手先・対象物・障害物の姿勢分布&#34;]&#xA;  K --&gt; L{ &#34;非線形性や分布の歪みが強いか&#34; }&#xA;  L -- &#34;いいえ&#34; --&gt; M[&#34;共分散を計画へ入力&#34;]&#xA;  L -- &#34;はい&#34; --&gt; N[&#34;シグマ点法またはモンテカルロ法&#34;]&#xA;  N --&gt; M&#xA;  M --&gt; O[&#34;確率制約または保守的形状膨張&#34;]&#xA;  M --&gt; P[&#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 style=&#34;text-align: right&#34;&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 style=&#34;text-align: right&#34;&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 style=&#34;text-align: right&#34;&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 style=&#34;text-align: right&#34;&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 style=&#34;text-align: right&#34;&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-policy-action-representation-selection/</link>
      <pubDate>Thu, 22 Oct 2026 13:27:39 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-policy-action-representation-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;速度指令は、状態を観測しながら短い時間幅で修正する閉ループ・サーボに向きます。ただし、積分、飽和、遅延、センサーノイズの影響を受けるため、方策の出力をそのままアクチュエータへ渡す設計は避けるべきです。実機では、方策と安全・制限処理を分離し、下位の制御層へ責務を分担させる構成が現実的です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜアクション表現を分けるのか&#34;&gt;なぜアクション表現を分けるのか&lt;/h2&gt;&#xA;&lt;p&gt;模倣学習やVLAでいう「アクション」は、学習方策が予測する値と、実機の低レベルコントローラが受け取る指令の両方を指すことがあります。しかし、両者を同じ表現にする必要はありません。ROS 2 JazzyのJoint Trajectory Controllerは、関節の位置、速度、加速度、effortなどのインターフェースと、軌道の補間・実行を扱います。一方、方策は手先の姿勢や相対変位を出力し、別の制御層で関節指令へ変換することもできます。&lt;/p&gt;&#xA;&lt;p&gt;したがって選定では、学習しやすさだけでなく、タスクの幾何、データの形式、機体固有性、更新周期、安全監視をどの層に置くかを確認します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;3つの表現の仕組み&#34;&gt;3つの表現の仕組み&lt;/h2&gt;&#xA;&lt;h3 id=&#34;関節空間&#34;&gt;関節空間&lt;/h3&gt;&#xA;&lt;p&gt;関節空間では、各関節の位置や速度などを出力します。関節インターフェースへ直接接続しやすく、方策から逆運動学を呼び出さずに済む点が利点です。固定ロボットで収集した関節状態・関節目標中心のデータを使う場合、学習データと実行系の対応も明確になります。ACTはALOHAのような固定された二腕機構で、関節状態・関節目標に近いアクション構成を用いています。&lt;/p&gt;&#xA;&lt;p&gt;反面、関節数、ゼロ点、可動域、リンク構成への依存が強くなります。別の機構へ移す場合、同じ数値列をそのまま利用できるとは限りません。関節値の変化だけでは、対象物に対する手先の移動を表しにくいタスクもあります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;エンドエフェクタ空間&#34;&gt;エンドエフェクタ空間&lt;/h3&gt;&#xA;&lt;p&gt;エンドエフェクタ空間では、手先の位置・姿勢、または相対的な変化を指令します。把持点や接触点など、タスクの幾何に近い表現です。Octoは複数のロボット・タスクへの適用を意識し、手先の位置・姿勢とグリッパを含む7次元のアクション表現を用いています。&lt;/p&gt;&#xA;&lt;p&gt;手先の位置・姿勢を関節指令へ変換するには、通常、逆運動学を扱う制御層が必要です。手先の速度やtwistなら、ヤコビアンや微分逆運動学による変換が候補になります。特異点、関節限界、衝突などの制約も下流の制御層で処理しなければなりません。抽象度を上げられる一方、変換器や監視機能は複雑になり得ます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;速度指令&#34;&gt;速度指令&lt;/h3&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; C1[&#34;関節目標&#34;]&#xA;  B --&gt; C2[&#34;手先 pose / twist&#34;]&#xA;  B --&gt; C3[&#34;速度指令&#34;]&#xA;  C1 --&gt; D1[&#34;スケーリング・レート制限&#34;]&#xA;  C2 --&gt; D2[&#34;逆運動学・ヤコビアン&#34;]&#xA;  C3 --&gt; D3[&#34;積分・速度制限・平滑化&#34;]&#xA;  D1 --&gt; E[&#34;関節・速度・加速度などの制限&#34;]&#xA;  D2 --&gt; E&#xA;  D3 --&gt; E&#xA;  E --&gt; F[&#34;安全監視・異常値確認・停止処理&#34;]&#xA;  F --&gt; G[&#34;サーボ層 / 関節軌道制御&#34;]&#xA;  G --&gt; H[&#34;アクチュエータ・実機&#34;]&#xA;  H --&gt; A&lt;/pre&gt;&lt;figcaption&gt;方策の出力と実機インターフェースを分離し、表現ごとの変換・制限・安全処理を下位の制御層に配置する構成を示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;図1：方策の出力表現と実機制御層の分担。表現の優劣ではなく、変換・制限・安全監視の配置を示す概念図です。&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット通信の決定論設計：TSN・DDS・制御ネットワークの役割分担</title>
      <link>https://physicalaihub.net/posts/robot-deterministic-networking-tsn-dds-control/</link>
      <pubDate>Tue, 20 Oct 2026 13:36:07 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-deterministic-networking-tsn-dds-control/</guid>
      <description>&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボット通信を決定論的に設計するには、TSN、DDS、専用制御ネットワークを同じ機能として扱わず、層と責任範囲を分けます。DDSはデータモデルと通信契約、TSNはEthernet上の時刻同期・送信スケジュール・帯域制御、専用制御ネットワークはサーボやI/Oなど厳しい制御経路の分離を担当させます。&lt;/p&gt;&#xA;&lt;p&gt;センサ、状態共有、計画、監視、診断はDDS over TSNの候補です。一方、周期やジッターの制約が厳しいサーボ・モーション通信は、EtherCATなどの専用フィールドネットワーク、またはDDS通信から独立したTSNトラフィッククラスに分けます。ただし、TSNやDDS QoSを設定しただけで、アプリケーションから見たエンドツーエンドの決定性が保証されるわけではありません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ層の分担が必要なのか&#34;&gt;なぜ層の分担が必要なのか&lt;/h2&gt;&#xA;&lt;p&gt;ロボットでは、センサから処理器、制御器、アクチュエータへデータが届くまでの遅延とジッターが動作に影響します。ネットワーク内の送信が予定どおりでも、NIC、ドライバ、OSスケジューラ、DDS実装、executor、コールバック処理、メモリ割り当てなどが遅延要因になり得ます。&lt;/p&gt;&#xA;&lt;p&gt;したがって、「DDSを使えばリアルタイムになる」「TSNを導入すれば制御周期が保証される」と単純化するのは危険です。先に制御周期、許容ジッター、最大遅延、損失への許容度を定め、その要求を各層の設定と実機検証へ割り当てます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる用語&#34;&gt;前提となる用語&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tsn&#34;&gt;TSN&lt;/h3&gt;&#xA;&lt;p&gt;TSNは単一のプロトコルではなく、IEEE 802.1を中心とする標準群です。802.1ASはブリッジドネットワーク内の時刻同期、802.1Qbvは時間に基づくゲート制御によるスケジュール通信、802.1Qccはストリームの予約や構成を扱います。必要に応じてキュー制御やフレームプリエンプションも組み合わせます。&lt;/p&gt;&#xA;&lt;p&gt;TSNは主にEthernetのスイッチ、ブリッジ、NICなどのインフラ側で、共通時刻を使い、通信をどのタイミングでどのキューから送るかを制御します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;dds&#34;&gt;DDS&lt;/h3&gt;&#xA;&lt;p&gt;DDSはデータ中心のpublish/subscribe型ミドルウェアです。Reliability、History、Deadline、LatencyBudget、LivelinessなどをQoSポリシーとして表現し、データの更新契約やミドルウェアの振る舞いを定義します。ROS 2のDDSベース通信でも、PublisherとSubscriberのQoS互換性が通信可否に影響します。&lt;/p&gt;&#xA;&lt;p&gt;一方、DDSのDeadlineやLatencyBudgetは、単独で物理ネットワークの帯域予約や802.1Qbvのゲート制御リストを設定するものではありません。DDSI-RTPSなどの転送はIP/Ethernet上で動作し、TSNはその下位のネットワークインフラとして位置づけます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;専用制御ネットワーク&#34;&gt;専用制御ネットワーク&lt;/h3&gt;&#xA;&lt;p&gt;専用制御ネットワークはOSIの特定の一層ではなく、サーボ、モーション、I/Oの通信を他のトラフィックから分離するアーキテクチャ上の選択です。物理的に別ネットワークへ分ける方法、VLANやTSNトラフィッククラスで論理分離する方法、EtherCATのような専用フィールドネットワークを使う方法があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組みと構成&#34;&gt;内部の仕組みと構成&lt;/h2&gt;&#xA;&lt;p&gt;基本構成では、アプリケーションが扱うデータ型と通信契約をDDSに置き、DDSI-RTPSなどの転送をIP/Ethernet上で動かします。その下でTSNが共通時刻、送信スケジュール、ストリーム、キューを管理します。&lt;/p&gt;&#xA;&lt;p&gt;まず802.1ASなどでネットワーク内の共通時刻を整え、通信周期や送信ウィンドウに合わせてQbvのゲート制御を構成します。必要に応じてストリームの予約や構成も行います。スケジュールはスイッチだけで完結せず、TSNブリッジやエンドポイントの設定にも依存します。&lt;/p&gt;&#xA;&lt;p&gt;サーボ経路をDDSと同じ共有ネットワークへ載せる場合は、周期、帯域、最大フレーム長、キュー、優先度、再送や輻輳時の挙動を個別に予算化します。要求が厳しい場合は、専用フィールドネットワークか独立したTSNトラフィッククラスとして、DDSの輻輳や構成不整合の影響範囲を抑えます。&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;DDSはデータモデルと通信契約、TSNはEthernet上の時刻同期と送信制御、専用制御ネットワークは厳しい周期・ジッター制約の制御経路を担当する。&#34;&gt;flowchart TB&#xA;  subgraph APP[&#34;ロボットアプリケーション&#34;]&#xA;    S[&#34;センサ・状態共有・監視・計画・診断&#34;]&#xA;    C[&#34;サーボ・モーション・I/O制御&#34;]&#xA;  end&#xA;&#xA;  subgraph DDSL[&#34;DDS通信層&#34;]&#xA;    DM[&#34;データモデルと通信契約&#34;]&#xA;    Q[&#34;QoS: Deadline・Reliability・History・LatencyBudget&#34;]&#xA;    RTPS[&#34;DDSI-RTPS&#34;]&#xA;  end&#xA;&#xA;  subgraph TSNL[&#34;TSN対応Ethernet層&#34;]&#xA;    TIME[&#34;802.1AS 共通時刻&#34;]&#xA;    SCHED[&#34;802.1Qbv スケジュール・ゲート&#34;]&#xA;    RES[&#34;ストリーム予約・キュー制御&#34;]&#xA;    NET[&#34;TSNブリッジ・スイッチ・NIC&#34;]&#xA;  end&#xA;&#xA;  subgraph FIELD[&#34;専用制御経路&#34;]&#xA;    FC[&#34;専用フィールドネットワーク&#34;]&#xA;    IO[&#34;サーボ・アクチュエータ・I/O&#34;]&#xA;  end&#xA;&#xA;  S --&gt; DM&#xA;  DM --&gt; Q&#xA;  Q --&gt; RTPS&#xA;  RTPS --&gt; NET&#xA;  TIME --&gt; NET&#xA;  SCHED --&gt; NET&#xA;  RES --&gt; NET&#xA;  NET --&gt; S&#xA;&#xA;  C --&gt; FC&#xA;  FC --&gt; IO&#xA;  FC -. &#34;状態・監視データを必要に応じて変換&#34; .-&gt; DM&#xA;&#xA;  NOTE[&#34;DDSのQoS設定だけでは、TSNの帯域予約やQbvゲート制御は自動的に決まらない&#34;]&#xA;  Q -.-&gt; NOTE&#xA;  NET -.-&gt; NOTE&lt;/pre&gt;&lt;figcaption&gt;DDSはデータモデルと通信契約、TSNはEthernet上の時刻同期と送信制御、専用制御ネットワークは厳しい周期・ジッター制約の制御経路を担当する。&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;DDS&lt;/td&gt;&#xA;          &lt;td&gt;データモデル、publish/subscribe、通信契約&lt;/td&gt;&#xA;          &lt;td&gt;状態共有、センサ、監視、計画、診断&lt;/td&gt;&#xA;          &lt;td&gt;QoS互換性、実装、再送や輻輳の挙動&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;DDSI-RTPS／IP/Ethernet&lt;/td&gt;&#xA;          &lt;td&gt;DDSデータのネットワーク転送&lt;/td&gt;&#xA;          &lt;td&gt;DDSトピックの配送&lt;/td&gt;&#xA;          &lt;td&gt;経路、最大フレーム長、下位ネットワークとの整合&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;TSN&lt;/td&gt;&#xA;          &lt;td&gt;時刻同期、送信スケジュール、帯域・キュー制御&lt;/td&gt;&#xA;          &lt;td&gt;周期性が必要な共有通信、独立した制御クラス&lt;/td&gt;&#xA;          &lt;td&gt;スイッチ・NIC対応、同期誤差、スケジュール&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&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;td&gt;ゲートウェイ、障害範囲、DDSとのデータ変換&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;状態共有、監視、計画、診断のように、データ中心の接続性と柔軟な購読関係が重要な通信ではDDSが適しています。DDS over TSNを採用する場合は、Deadline、LatencyBudget、Reliabilityなどを、TSNの周期、ゲート、帯域、キュー、最大フレーム長へ具体的に割り当てます。QoS名を設定するだけでは、TSN側の予約やスケジュールは決まりません。&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>ロボットビジョンのシャッター方式選定：動体歪み・同期・画質を比較する</title>
      <link>https://physicalaihub.net/posts/robot-vision-global-rolling-shutter-selection/</link>
      <pubDate>Fri, 16 Oct 2026 13:17:57 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-vision-global-rolling-shutter-selection/</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;v_img&lt;/code&gt;、センサーの実効読み出し時間 &lt;code&gt;T_read&lt;/code&gt;、そして認識・計測で許容できる画素誤差です。&lt;/p&gt;&#xA;&lt;p&gt;一次評価では、ローリングシャッターの行間位置ずれを &lt;code&gt;v_img × T_read&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;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;code&gt;位置ずれ ≈ v_img × T_read&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;ここで &lt;code&gt;v_img&lt;/code&gt; は画像面上の速度、&lt;code&gt;T_read&lt;/code&gt; はフレームの実効読み出し時間です。これは選定初期の目安であり、回転、加減速、深度変化を含む実際の動作では動的試験が必要です。ROIやビニングによって読み出し時間が変わる場合もあるため、カメラの設定条件をそろえて確認します。&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;FrameStartを同期しても、ローリングシャッターでは行ごとの露光時刻の差が残る。実効読み出し時間や行時間は実際の撮像設定とセンサー仕様で確認する。&#34;&gt;flowchart TB&#xA;  T0[&#34;FrameStartトリガー&#34;] --&gt; G&#xA;  subgraph G[&#34;グローバルシャッター&#34;]&#xA;    G1[&#34;行1：露光開始&#34;]&#xA;    G2[&#34;行2：露光開始&#34;]&#xA;    G3[&#34;行3：露光開始&#34;]&#xA;    G1 --- G2 --- G3&#xA;    GE[&#34;全行の露光区間が同時刻に近く重なる&#34;]&#xA;    G1 --&gt; GE&#xA;    G2 --&gt; GE&#xA;    G3 --&gt; GE&#xA;  end&#xA;  T0 --&gt; R&#xA;  subgraph R[&#34;ローリングシャッター&#34;]&#xA;    R1[&#34;行1：時刻 t0 に露光&#34;]&#xA;    R2[&#34;行2：時刻 t0 + Δt に露光&#34;]&#xA;    R3[&#34;行3：時刻 t0 + 2Δt に露光&#34;]&#xA;    R1 --&gt; R2 --&gt; R3&#xA;    RE[&#34;上端と下端で撮像時刻が異なる&#34;]&#xA;    R3 --&gt; RE&#xA;  end&#xA;  G --&gt; GT[&#34;実効読み出し時間 T_read と露光時間を仕様確認&#34;]&#xA;  R --&gt; RT[&#34;行時間・総読み出し時間 T_read・読み出し方向を仕様確認&#34;]&lt;/pre&gt;&lt;figcaption&gt;FrameStartを同期しても、ローリングシャッターでは行ごとの露光時刻の差が残る。実効読み出し時間や行時間は実際の撮像設定とセンサー仕様で確認する。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;露光時間によるモーションブラーは、行間の幾何歪みとは別の現象です。露光時間を短くすれば露光中のブラーは減りますが、ローリングシャッターの行間時間差や読み出し由来の歪みが自動的に消えるわけではありません。グローバルシャッターでも、露光中の移動、レンズ歪み、振動、照明フリッカーは残り得ます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットの電力制約をタスク計画へ反映する：3層設計の考え方</title>
      <link>https://physicalaihub.net/posts/robot-energy-aware-task-planning/</link>
      <pubDate>Wed, 14 Oct 2026 13:39:56 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-energy-aware-task-planning/</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;という3層に分けて設計するのが妥当です。上位層では、タスクの消費量だけでなく、終了後に充電地点や待機地点へ戻るエネルギー、充電時間、安全余裕を含めて実行可能性を判断します。中位層では、距離だけでなく速度、加減速、勾配、床面、積載量、停止回数、センサーなどの補機負荷を区間ごとに見積もります。下位層では、SOC、電流、温度、実測消費を取り込み、予測との差に応じて計画を更新します。&lt;/p&gt;&#xA;&lt;p&gt;SOCや残量パーセントだけでタスクを選ぶと、残量表示は十分でも帰還できない、負荷変動で作業途中に停止する、といった問題を扱いにくくなります。一方、すべてを高精度な電池モデルで計画する必要もありません。機体や運用環境に応じて、上位は粗く、中位は必要な作業単位で、下位は実測に反応できる粒度に分けることが判断の基本です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ残量表示だけでは不十分か&#34;&gt;なぜ残量表示だけでは不十分か&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2の&lt;code&gt;BatteryState&lt;/code&gt;メッセージは、電圧、電流、充電量、容量、設計容量、残量パーセント、電源状態、健全性、セル電圧などを扱います。計画器が参照する電池状態も、SOC単独ではなく、利用可能容量や電源状態、健全性を含む状態ベクトルとして定義できます。&lt;/p&gt;&#xA;&lt;p&gt;ただし、SOCは直接観測する値ではありません。クーロンカウント、電圧、電流、電池モデルなどを組み合わせて推定され、電池モデルと拡張カルマンフィルタを用いる方法もあります。負荷条件やモデル誤差によって推定値は変わるため、SOCをそのまま「今後使えるエネルギー」とみなすのは危険です。百分率、正規化容量、実容量、利用可能容量は実装によって意味が異なる場合もあります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;3つの計画粒度&#34;&gt;3つの計画粒度&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-タスク割り当て層&#34;&gt;1. タスク割り当て層&lt;/h3&gt;&#xA;&lt;p&gt;搬送や巡回などのタスクをどのロボットに割り当てるかを決める層です。判定には、タスクそのものの予測消費量、終了後の帰還エネルギー、充電に要する時間、予測誤差を吸収する安全余裕を含めます。&lt;/p&gt;&#xA;&lt;p&gt;「SOCが閾値以上なら割り当てる」という方式では、帰還経路や充電待ち時間を評価できません。複数台を運用する場合は、充電器の競合や代替ロボットの有無も判断材料になります。Open-RMFでは、フリートの状態、走行、タスク、充電を運用モデルの一部として扱い、電池容量、消費、充電、状態変化を扱う関連パッケージも提供されています。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-経路作業単位のエネルギー計画層&#34;&gt;2. 経路・作業単位のエネルギー計画層&lt;/h3&gt;&#xA;&lt;p&gt;タスクを経路や作業区間に分け、各区間のエネルギーコストを予測します。距離または時間に比例させるモデルは実装しやすい一方、速度、加減速、勾配、床面、積載量、停止回数、センサーやマニピュレーターの負荷を表現しにくい制約があります。&lt;/p&gt;&#xA;&lt;p&gt;移動ロボットの運動計画では、距離や時間だけでなくエネルギー消費を目的関数に含める考え方があります。最短経路と最小エネルギー経路は一致しない場合があるため、経路評価を距離だけに固定しないことが重要です。環境と負荷が安定しているなら距離・時間比例モデルから始め、影響が大きい条件を実測データや電池モデルで段階的に追加します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-実行時制御再計画層&#34;&gt;3. 実行時制御・再計画層&lt;/h3&gt;&#xA;&lt;p&gt;タスク開始時に電力計画を固定すると、実際の電流、温度、積載状態、路面が予測と異なった際に破綻します。実行層では、現在のSOC、電流、温度、実測消費を取り込み、残タスク、経路、充電判断を再評価します。&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; A&#xA;  A[&#34;タスク割り当て層\nタスク、充電、帰還余裕、予測誤差を評価&#34;] --&gt; B&#xA;  B[&#34;経路・作業単位のエネルギー計画層\n速度、加減速、勾配、床面、積載量、補機負荷を考慮&#34;] --&gt; C&#xA;  C[&#34;実行時制御・再計画層\nSOC、電流、温度、実測消費を短周期で監視&#34;]&#xA;  C --&gt; D[&#34;実行・走行・作業&#34;]&#xA;  D --&gt; E[&#34;実測値と予測誤差&#34;]&#xA;  E --&gt; C&#xA;  C --&gt;|&#34;帰還余裕低下・予測超過・充電状況の変化&#34;| A&#xA;  A --&gt; F[&#34;充電または待機の判断&#34;]&#xA;  F --&gt; G[&#34;充電後のタスク再開・再割り当て&#34;]&#xA;  G --&gt; A&lt;/pre&gt;&lt;figcaption&gt;タスク割り当て層は充電と帰還余裕を含めて仕事の実行可能性を判断し、経路・作業層は区間エネルギーを予測し、実行層は実測値と予測誤差を使って再計画します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;図では、タスク割り当て層が充電と帰還余裕を含めて仕事を選び、経路・作業層が区間エネルギーを予測し、実行層が実測値で予測を更新する循環を示します。&lt;/p&gt;&#xA;&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;SOC、電源状態&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;電圧、電流、SOC、容量、健全性など&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;実測消費、SOC、残タスク&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;最初の実装では、タスクごとのエネルギー予算、帰還用リザーブ、充電開始条件、緊急停止または低電力モードへの移行条件を分離すると扱いやすくなります。これらを1つの閾値にまとめると、通常の充電判断と安全上の限界が混同されます。まず距離や作業時間から予算を置き、実測データでモデルを校正する構成が現実的です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット学習のアクティブラーニング：実機データ収集を不確実性とカバレッジで最適化する</title>
      <link>https://physicalaihub.net/posts/active-learning-for-robot-real-world-data-collection/</link>
      <pubDate>Tue, 13 Oct 2026 15:39:47 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/active-learning-for-robot-real-world-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;不確実性、条件付き失敗リスク、既存データのカバレッジ不足、多様性、安全性、収集コスト&lt;/strong&gt;を組み合わせて判断します。&lt;/p&gt;&#xA;&lt;p&gt;実装の出発点としては、候補となる状態や時間窓ごとに、次のような獲得スコアを計算します。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;S(x)=w_uU(x)+w_fF(x)+w_cC(x)+w_dD(x)-w_kK(x)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;ここで、&lt;code&gt;U&lt;/code&gt;は不確実性、&lt;code&gt;F&lt;/code&gt;は条件付き失敗リスク、&lt;code&gt;C&lt;/code&gt;はカバレッジ不足、&lt;code&gt;D&lt;/code&gt;は多様性・新規性、&lt;code&gt;K&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;h2 id=&#34;判断に使う用語&#34;&gt;判断に使う用語&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;不確実性&lt;/strong&gt;は、モデルが入力に対してどれほど確信を持てないかを表します。たとえばMC dropoutでは、dropoutを有効にした確率的推論を複数回行い、予測の分散からモデル由来の不確実性を近似します。ただし、これは成功確率や失敗確率そのものではありません。センサー雑音、接触の偶然性、物体の滑りやすさのようなデータ固有の不確実性とは一致しない場合があります。&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;不確実性の選択には、MC dropout、アンサンブル分散、モデル間の行動不一致、予測エントロピー、価値関数の分散などが考えられます。失敗については、生の件数よりも条件付き失敗確率、失敗の重大度を加味した期待損失、回復可能性を考慮した優先度が適しています。&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; C[&#34;候補状態・時間窓・接触イベントを作成&#34;]&#xA;  C --&gt; D[&#34;モデル推論&#34;]&#xA;  C --&gt; E[&#34;既存データ分布の分析&#34;]&#xA;  C --&gt; F[&#34;安全性・収集コストの確認&#34;]&#xA;  D --&gt; G[&#34;不確実性を推定&#34;]&#xA;  D --&gt; H[&#34;条件付き失敗リスクを推定&#34;]&#xA;  E --&gt; I[&#34;カバレッジ不足・新規性を計算&#34;]&#xA;  G --&gt; J[&#34;獲得スコアを統合&#34;]&#xA;  H --&gt; J&#xA;  I --&gt; J&#xA;  F --&gt; J&#xA;  J[&#34;S(x)=w_uU+w_fF+w_cC+w_dD-w_kK&#34;] --&gt; K[&#34;多様性制約付きバッチ選択&#34;]&#xA;  K --&gt; L{&#34;安全確認を通過したか&#34;}&#xA;  L --&gt;|&#34;はい&#34;| M[&#34;人間デモ・自律試行・リカバリ試行を割り当て&#34;]&#xA;  L --&gt;|&#34;いいえ&#34;| N[&#34;候補を除外または条件を再設計&#34;]&#xA;  M --&gt; O[&#34;実機データを収集&#34;]&#xA;  O --&gt; P[&#34;モデルを再学習&#34;]&#xA;  P --&gt; Q[&#34;固定した層別ホールドアウトで評価&#34;]&#xA;  Q --&gt; R[&#34;未観測条件・成功率・回復率・安全性を確認&#34;]&#xA;  R --&gt; C&#xA;  N --&gt; C&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;MC dropout、アンサンブル分散、行動不一致&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;h2 id=&#34;実装の流れ&#34;&gt;実装の流れ&lt;/h2&gt;&#xA;&lt;p&gt;まず、ログにタスク名だけでなく、物体、初期姿勢、作業フェーズ、環境、照明、操作者、ロボット構成、成功・失敗、失敗の重大度、リカバリ結果を記録します。次に、既存データを条件別に分割し、状態ごとの露出回数と失敗確率を推定します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>異種ロボットを同じ現場で動かすフリート連携：タスクAPI・交通管制・設備接続の分離</title>
      <link>https://physicalaihub.net/posts/heterogeneous-robot-fleet-interoperability-design/</link>
      <pubDate>Mon, 12 Oct 2026 14:44:01 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/heterogeneous-robot-fleet-interoperability-design/</guid>
      <description>&lt;p&gt;異なるメーカーのロボットを同じ現場で動かすとき、標準プロトコルだけで全てが解決するのかが設計上の焦点になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;複数メーカーのAMRや搬送ロボットを同じ現場で運用するには、単一の巨大なAPIへ機能を集約するのではなく、&lt;strong&gt;業務タスク、フリート・交通管制、ロボット固有の実行、設備接続を別レイヤーに分ける&lt;/strong&gt;ことが基本です。VDA 5050などの標準は、上位の制御システムとロボットを接続するアダプターの境界で使い、メーカー差分をアダプター内に閉じ込めます。&lt;/p&gt;&#xA;&lt;p&gt;ドア、エレベーター、コンベヤーなどは、タスク層からPLCやメーカー固有コマンドを直接呼び出さず、設備アダプターを介して共通リソースとして公開します。通路や交差点を複数フリートが共有する場合は、予約と交通管制の権限を一つの調停主体へ集約する構成を有力な候補として検討します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜインターフェースを分けるのか&#34;&gt;なぜインターフェースを分けるのか&lt;/h2&gt;&#xA;&lt;p&gt;WMSやMESなどの業務システムが扱うのは、搬送、ピッキング、充電といった業務要求です。ロボットの走行には、機体の能力、地図、経路、状態、手動介入などの情報が必要になります。さらに複数フリートが同じ空間を共有する場合は、通路、交差点、ステーション、エレベーターの予約と交通協調が必要です。&lt;/p&gt;&#xA;&lt;p&gt;設備も単純な「開ける」「呼び出す」コマンドではありません。利用要求、予約またはリース、使用開始、完了、解放、タイムアウト、異常という状態を持つ共有資源です。業務アプリケーションと機器を直結すると、メーカー変更や設備更新の影響が上位の業務ロジックまで及びます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;標準技術の役割&#34;&gt;標準技術の役割&lt;/h2&gt;&#xA;&lt;p&gt;VDA 5050は、上位のMaster ControlとAGV・AMRの間の通信インターフェースを定義し、MQTTを介してJSON形式のメッセージを交換します。2.0.0相当の仕様では、NodeとEdgeによる経路表現やAction、注文識別子を含むOrder、State、InstantActions、Visualization、Factsheetなどを扱います。ただし、現場全体で誰が最終的な交通管制権限を持つかまでは一律に決めません。&lt;/p&gt;&#xA;&lt;p&gt;Open-RMFは、複数のロボットフリートや建物設備を協調させる枠組みです。ベンダーごとのFleet ManagerをFleet Adapterで接続し、RMF側の要求や交通協調の情報を各フリート固有APIへ変換するとともに、ロボットの状態や進捗をRMFへ戻します。&lt;/p&gt;&#xA;&lt;p&gt;MassRobotics AMR Interoperability Standardは、AMRの位置、状態、バッテリーなどを、他のAMRや周辺システムと共通形式で共有することを主な対象とします。注文を送り実行させるVDA 5050と、完全に同じ範囲ではありません。&lt;/p&gt;&#xA;&lt;p&gt;MQTTは軽量なPublish/Subscribe型プロトコルで、トピックやQoSなどの配送機能を定義しますが、ロボットタスクや設備占有の意味論は定義しません。OPC UAは情報モデル、サービス、クライアント・サーバー通信、PubSubなどを定義するため、設備側の共通インターフェースを構築する基盤候補です。ただし、設備が必要な情報モデルや仕様を実装しているかは個別確認が必要です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;推奨アーキテクチャ&#34;&gt;推奨アーキテクチャ&lt;/h2&gt;&#xA;&lt;p&gt;最上位にWMS、MES、または業務オーケストレーターを置き、その下にタスク正規化層を設けます。ここではタスク識別子、搬送元・搬送先、必要な能力、優先度などを扱います。&lt;/p&gt;&#xA;&lt;p&gt;次に交通・リソース調停層を配置します。共有通路、交差点、ステーション、エレベーターの予約を管理し、各フリートへ利用許可や交通上の要求を伝えます。ローカル制御だけで共有資源を扱う場合は、競合解決の方法と責任境界を明示します。&lt;/p&gt;&#xA;&lt;p&gt;その下にメーカー別Fleet Adapterを置き、共通タスクや交通上の要求をVDA 5050、ベンダー独自API、または対象フリートの実装へ変換します。ロボット固有の走行制御、状態、Action、手動介入の差は、この境界で吸収します。&lt;/p&gt;&#xA;&lt;p&gt;設備側には設備リソースAPIと設備アダプターを置きます。設備リソースAPIは、ドアやエレベーターを共有資源として公開し、その下でOPC UA、MQTT、PLC接続、メーカー独自インターフェースを設備ごとに扱います。&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 TB&#xA;  subgraph business[&#34;業務層&#34;]&#xA;    WMS[&#34;WMS・MES・業務オーケストレーター&#34;]&#xA;  end&#xA;&#xA;  subgraph common[&#34;共通制御・正規化層&#34;]&#xA;    TASK[&#34;タスク正規化層\nタスクID・搬送元/先・能力・優先度・期限&#34;]&#xA;    TRAFFIC[&#34;交通・リソース調停層\n共有通路・交差点・ステーション・エレベーター&#34;]&#xA;    RESOURCE[&#34;設備リソースAPI\n要求・予約・占有・完了・解放・異常&#34;]&#xA;  end&#xA;&#xA;  subgraph fleet[&#34;ロボット連携層&#34;]&#xA;    FA1[&#34;メーカー別Fleet Adapter A&#34;]&#xA;    FA2[&#34;メーカー別Fleet Adapter B&#34;]&#xA;    VDA[&#34;VDA 5050またはベンダー独自API&#34;]&#xA;    ROBOT1[&#34;ロボットフリート A&#34;]&#xA;    ROBOT2[&#34;ロボットフリート B&#34;]&#xA;  end&#xA;&#xA;  subgraph equipment[&#34;設備接続層&#34;]&#xA;    EA[&#34;設備アダプター&#34;]&#xA;    CONNECT[&#34;OPC UA・MQTT・PLC接続・設備固有インターフェース&#34;]&#xA;    DEV[&#34;ドア・エレベーター・コンベヤーなど&#34;]&#xA;  end&#xA;&#xA;  WMS --&gt; TASK&#xA;  TASK --&gt; TRAFFIC&#xA;  TASK --&gt; FA1&#xA;  TASK --&gt; FA2&#xA;  TRAFFIC --&gt; FA1&#xA;  TRAFFIC --&gt; FA2&#xA;  FA1 --&gt; VDA&#xA;  FA2 --&gt; VDA&#xA;  VDA --&gt; ROBOT1&#xA;  VDA --&gt; ROBOT2&#xA;  TRAFFIC --&gt; RESOURCE&#xA;  TASK --&gt; RESOURCE&#xA;  RESOURCE --&gt; EA&#xA;  EA --&gt; CONNECT&#xA;  CONNECT --&gt; DEV&lt;/pre&gt;&lt;figcaption&gt;業務タスク、共有空間の交通・リソース調停、メーカー別ロボット実行、設備接続を別レイヤーに分離した推奨構成。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;設備利用の流れは、要求、予約またはリースの取得、ロボットの到着、使用開始、完了、解放です。到着できない、設備が応答しない、通信が切れるといった場合は、タイムアウトや異常として通知し、占有をいつ解放するかを定義します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>人協働ロボットの近接安全設計：人の動きを推定して速度制限へつなげる方法</title>
      <link>https://physicalaihub.net/posts/collaborative-robot-human-proximity-safety-design/</link>
      <pubDate>Fri, 09 Oct 2026 14:54:15 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/collaborative-robot-human-proximity-safety-design/</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/TS 15066は速度・分離監視などの協働運転方式を扱い、ISO 12100は危険源の同定、リスク低減、妥当性確認を含む設計プロセスを示している。&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;センサー入力\n時刻付きデータ&#34;] --&gt; B[&#34;時刻同期・共通座標系への変換&#34;]&#xA;  B --&gt; C[&#34;人体・身体部位の\n占有領域を推定&#34;]&#xA;  C --&gt; D[&#34;追跡・接近速度・\n不確実性を推定&#34;]&#xA;  D --&gt; E[&#34;短時間の複数軌道を\n占有包絡として評価&#34;]&#xA;  E --&gt; F[&#34;ロボットの停止包絡と\n保護分離距離を評価&#34;]&#xA;  F --&gt; G{&#34;分離距離を\n保証できるか&#34;}&#xA;  G --&gt;|&#34;余裕がある&#34;| H[&#34;通常動作&#34;]&#xA;  G --&gt;|&#34;制限速度なら保証可能&#34;| I[&#34;速度制限&#34;]&#xA;  G --&gt;|&#34;保証できない&#34;| J[&#34;安全関連の保護停止&#34;]&#xA;  D --&gt; K{&#34;追跡・同期・検出系に\n異常があるか&#34;}&#xA;  K --&gt;|&#34;いいえ&#34;| E&#xA;  K --&gt;|&#34;はい&#34;| L[&#34;保守側へ遷移&#34;]&#xA;  L --&gt; I&#xA;  L --&gt; J&#xA;  E -.-&gt; M[&#34;予測は補助情報\n安全バリア単独ではない&#34;]&#xA;  M -.-&gt; F&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;保護分離距離の考え方では、人体の接近速度、システム全体の応答時間、ロボットの停止距離、人体または身体部位の侵入距離、センサーと位置推定の不確実性を考慮する。ISO 13855の基本関係は、接近速度をK、総応答時間をT、侵入距離をCとして &lt;code&gt;S=K×T+C&lt;/code&gt; で表される。&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-policy-transfer-across-embodiments/</link>
      <pubDate>Tue, 06 Oct 2026 15:07:23 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-policy-transfer-across-embodiments/</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;と&lt;strong&gt;機体固有層&lt;/strong&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;は、関節角ではなく、手先の位置・姿勢、速度、対象物との相対関係、グリッパー状態などで動作を表す方法です。OpenVLAの標準的なロボット操作設定では、相対エンドエフェクター姿勢とグリッパー状態を含む7次元の操作表現が使われています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;リターゲティング&lt;/strong&gt;は、操作主体や元のロボットから得た手先軌道を、移植先ロボットの運動学に合わせて変換する処理です。Universal Manipulation Interface（UMI）は、携帯型の操作インターフェースからエンドエフェクターの6自由度運動を取得し、ロボット側の運動学を使って実機アームへ移す方式を扱っています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;機体記述&lt;/strong&gt;は、リンク配置、関節軸、可動域、速度・トルク上限、エンドエフェクターの意味などを機械可読な形で表す情報です。ROS REP-103は、SI単位、右手系、軸の向きなど、ロボット間で共有する座標・単位規約を定義しています。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組み&#34;&gt;内部の仕組み&lt;/h2&gt;&#xA;&lt;p&gt;入力側では、まず単位、座標系、時間同期、カメラの外部パラメータを共通化します。画像、深度、力覚、固有受容感覚を不足分のゼロ埋めだけで統合するのではなく、モダリティ別エンコーダーや変換層に分ける構成を検討します。Octoは画像、固有受容感覚、言語、目標画像などを入力する汎用ロボット方策として設計され、新しいタスクやロボット構成へのファインチューニングを想定しています。&lt;/p&gt;&#xA;&lt;p&gt;出力は、可能な範囲でエンドエフェクター姿勢・速度、対象物相対座標、接触イベントなどの共通タスク空間に定義します。その後、機体固有層でIK、ヤコビアン制御、QP制約処理などを使い、関節指令へ変換します。機体記述から得た可動域、速度・トルク上限、セルフコリジョンなどを用いて、無効な動作をマスクまたは実行可能な指令へ投影する層は実装候補になります。ただし、機体記述からこれらを自動生成すれば全タスクで十分に機能するとは限らず、個別検証が必要です。&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; N[&#34;単位・座標系・時間同期・外部パラメータの正規化&#34;]&#xA;  N --&gt; M[&#34;モダリティ別エンコーダー／変換層&#34;]&#xA;  M --&gt; P[&#34;共有エンコーダーと共有方策&#34;]&#xA;  P --&gt; A[&#34;共通タスク空間の行動\n手先姿勢・速度・対象物相対座標・グリッパー状態&#34;]&#xA;  A --&gt; R1[&#34;機体A用アダプター&#34;]&#xA;  A --&gt; R2[&#34;機体B用アダプター&#34;]&#xA;  A --&gt; R3[&#34;機体C用アダプター&#34;]&#xA;  D1[&#34;機体記述\nリンク・関節軸・可動域・速度・トルク上限&#34;] --&gt; R1&#xA;  D1 --&gt; R2&#xA;  D1 --&gt; R3&#xA;  R1 --&gt; K1[&#34;リターゲティング・IK／QP・制約処理・グリッパー変換&#34;]&#xA;  R2 --&gt; K2[&#34;リターゲティング・IK／QP・制約処理・グリッパー変換&#34;]&#xA;  R3 --&gt; K3[&#34;リターゲティング・IK／QP・制約処理・グリッパー変換&#34;]&#xA;  K1 --&gt; O1[&#34;機体Aの関節・エンドエフェクター指令&#34;]&#xA;  K2 --&gt; O2[&#34;機体Bの関節・エンドエフェクター指令&#34;]&#xA;  K3 --&gt; O3[&#34;機体Cの関節・エンドエフェクター指令&#34;]&lt;/pre&gt;&lt;figcaption&gt;共有方策で機体に依存しにくいタスク空間の行動を生成し、機体別アダプターで運動学変換と制約処理を行う構成を示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 id=&#34;機体差と設計層の対応&#34;&gt;機体差と設計層の対応&lt;/h3&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;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;IK、ヤコビアン&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;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;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;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;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;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>ロボット制御を実機に合わせる：アクチュエーター制約をモデル化して計画へ反映する方法</title>
      <link>https://physicalaihub.net/posts/robot-actuator-constraints-modeling/</link>
      <pubDate>Mon, 05 Oct 2026 14:22:52 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-actuator-constraints-modeling/</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;この分離が必要なのは、入力をクリップしても、実際の出力トルクが同じ割合で制限されるとは限らないためです。MuJoCoのアクチュエーター機構でも、制御入力、生成力、関節へ伝達される力が別の段階として扱われています。一方、標準的なロボット制御インターフェースでは、位置・速度・加速度・ジャーク・努力量などは扱えても、量子化幅やバックラッシュ状態まで標準化されているとは限りません。伝達機構とハードウェア固有の非線形性は、追加のモデルとして実装します。&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;  P[&#34;上位計画&#34;] --&gt;|&#34;位置・速度・加速度・ジャーク・トルク制約を適用&#34;| T[&#34;時間パラメータ化された軌道&#34;]&#xA;  T --&gt; C[&#34;低レベル制御器&#34;]&#xA;  C --&gt; Q[&#34;指令値量子化&#34;]&#xA;  Q --&gt; R[&#34;速度・入力範囲の制限&#34;]&#xA;  R --&gt; E[&#34;電流・努力量の制限&#34;]&#xA;  E --&gt; A[&#34;アクチュエーターの生成力・トルク制限&#34;]&#xA;  A --&gt; B[&#34;バックラッシュ・伝達機構モデル&#34;]&#xA;  B --&gt; J[&#34;関節出力&#34;]&#xA;  J --&gt; M[&#34;実機状態&#34;]&#xA;  M --&gt; S[&#34;センサー量子化・サンプリング・遅延&#34;]&#xA;  S --&gt; C&#xA;  M --&gt; I[&#34;実機同定・検証&#34;]&#xA;  I -.-&gt;|&#34;制約値と不確実性を更新&#34;| P&#xA;  I -.-&gt;|&#34;層ごとのモデルを更新&#34;| Q&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;通常運転で継続可能な値&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;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;制約値は、定格値、連続許容値、短時間ピーク値を区別します。メーカーが示す最大トルクや最大電流は瞬間的なピーク値の場合があり、計画にそのまま使うと連続運転で余裕を失う可能性があります。通常の計画には、同定誤差と制御遅延を含む保守的な連続許容値を使い、ピーク値は時間や条件を限定して扱います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット視覚の分布外検知：未知物体を見つけて安全に行動を保留する設計</title>
      <link>https://physicalaihub.net/posts/robot-visual-ood-detection-safe-abstention/</link>
      <pubDate>Sun, 04 Oct 2026 14:37:40 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-visual-ood-detection-safe-abstention/</guid>
      <description>&lt;p&gt;未知物体を見つけることと、ロボットを安全に止めることは、同じ判定ではありません。この違いが設計の分かれ目です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの視覚認識で未知物体や分布外（OOD）入力を扱うには、最大ソフトマックス確率だけで行動可否を決めてはいけません。分類信頼度、OODスコア、物体の位置推定品質、モデル間の不一致、センサ健全性、フレーム間の一貫性を組み合わせた受理ゲートを設け、条件を満たさない入力は行動系へ渡さず、明示的な&lt;code&gt;safe-hold&lt;/code&gt;状態へ送る設計が現実的です。&lt;/p&gt;&#xA;&lt;p&gt;safe-holdでは、状況に応じて停止または減速し、再観測、再計画、人間確認などへ切り替えます。閾値は一般的な固定値ではなく、危険な誤受理を重く扱うリスク・カバレッジ評価と、照明、遮蔽、反射、モーションブラー、センサ欠損を含む実機シナリオで決める必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ未知入力への備えが必要か&#34;&gt;なぜ未知入力への備えが必要か&lt;/h2&gt;&#xA;&lt;p&gt;OOD検知は、学習時のデータ分布から外れた入力を検出する問題です。一方、オープンセット認識は、テスト時に学習時には存在しなかった未知クラスを扱う問題として整理できます。既知クラスの精度が高くても、実環境で未知物体を既知クラスの一つとして誤認すれば、把持や進入などの行動に誤った前提を渡す可能性があります。&lt;/p&gt;&#xA;&lt;p&gt;ただし、未知物体であること自体が物理的危険を意味するわけではありません。反対に、既知クラスでも遮蔽、異常姿勢、反射、ブラー、センサ故障によって危険な認識が生じる場合があります。そのため、OOD検知は安全性全体の判定器ではなく、視覚認識パイプラインの一つの警告信号として扱います。&lt;/p&gt;&#xA;&lt;h2 id=&#34;信頼度とoodスコアの前提&#34;&gt;信頼度とOODスコアの前提&lt;/h2&gt;&#xA;&lt;p&gt;最大ソフトマックス確率は、誤分類例やOOD例を検出する低コストなベースラインです。しかし、その値を正しさや安全性の確率として直接解釈することはできません。深層モデルでは、予測確率と実際の正解率が一致しない校正不良が起こり得るためです。必要に応じて校正を検討しても、分布シフト下で安全な確信度が保証されるわけではありません。&lt;/p&gt;&#xA;&lt;p&gt;候補となる方法には、特徴空間での距離、クラス条件付き分布からのMahalanobis距離、複数モデルの予測分散を利用する深層アンサンブルがあります。手法ごとに検出しやすい分布外入力が異なり、画像分類、物体検出、敵対的入力、実環境のセンサ劣化を横断して論文上の数値を直接比較することはできません。&lt;/p&gt;&#xA;&lt;p&gt;ロボットでは画像全体のOOD判定だけで不十分な場合があります。未知物体が画面の一部にあるなら、その領域を局所化し、既知物体と未知物体を区別するオープンワールド物体検出が必要です。物体検出の信頼度が低い、位置が不安定、未知領域が行動経路に重なる、といった情報を行動判断へ渡せる形にします。&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;視覚認識の出力を直接アクチュエータへ接続せず、複数の信号を受理ゲートで確認してから行動またはsafe-holdへ分岐させる。&#34;&gt;flowchart LR&#xA;  A[&#34;カメラなどのセンサ入力&#34;] --&gt; B[&#34;物体検出・分類&#34;]&#xA;  B --&gt; C[&#34;物体クラス・位置・物体性・検出信頼度&#34;]&#xA;  C --&gt; D[&#34;OOD・不確実性の評価&#34;]&#xA;  D --&gt; D1[&#34;最大確率・校正済み信頼度&#34;]&#xA;  D --&gt; D2[&#34;特徴距離&#34;]&#xA;  D --&gt; D3[&#34;モデル間の予測ばらつき&#34;]&#xA;  C --&gt; E[&#34;未知物体の領域・局所化&#34;]&#xA;  A --&gt; F[&#34;センサ健全性の確認&#34;]&#xA;  B --&gt; G[&#34;フレーム間の位置・クラスの一貫性&#34;]&#xA;  D1 --&gt; H[&#34;多段の受理ゲート&#34;]&#xA;  D2 --&gt; H&#xA;  D3 --&gt; H&#xA;  E --&gt; H&#xA;  F --&gt; H&#xA;  G --&gt; H&#xA;  H --&gt;|&#34;条件を満たす&#34;| I[&#34;行動計画へ渡す&#34;]&#xA;  H --&gt;|&#34;条件を満たさない&#34;| J[&#34;safe-hold&#34;]&#xA;  J --&gt; J1[&#34;停止または減速&#34;]&#xA;  J --&gt; J2[&#34;再観測・再計画&#34;]&#xA;  J --&gt; J3[&#34;人間確認&#34;]&lt;/pre&gt;&lt;figcaption&gt;視覚認識の出力を直接アクチュエータへ接続せず、複数の信号を受理ゲートで確認してから行動またはsafe-holdへ分岐させる。&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-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>学習ベースのロボット機能を説明可能にする安全ケースの作り方</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>ロボットの幾何キャリブレーション実践：関節誤差・工具座標・カメラ座標をどう校正するか</title>
      <link>https://physicalaihub.net/posts/robot-geometric-calibration-accuracy-validation/</link>
      <pubDate>Wed, 30 Sep 2026 14:21:31 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-geometric-calibration-accuracy-validation/</guid>
      <description>&lt;p&gt;ロボットの位置ずれは、単一の補正値だけでは説明できないことが多い点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの位置決め精度を改善するには、最初にベース、関節、フランジ、工具、カメラ、対象物の座標系と変換方向を定義する。そのうえで、関節オフセット、リンク幾何、工具先端点（TCP）、カメラ内部パラメータ、ハンドアイ変換を別々の誤差源として校正する。推定には十分な姿勢分布と外部計測器を用い、校正に使っていない姿勢で位置決め精度と繰返し精度を検証することが基本である。&lt;/p&gt;&#xA;&lt;p&gt;校正後の性能は、平均誤差だけで判断してはならない。最大誤差、試行間のばらつき、位置と姿勢の誤差、温度・荷重・速度、計測不確かさを併記し、対象工程の許容差と照合する必要がある。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ誤差を分解するのか&#34;&gt;なぜ誤差を分解するのか&lt;/h2&gt;&#xA;&lt;p&gt;指令した工具位置と実際の位置がずれる原因には、関節のゼロオフセット、リンク長・ねじれ・関節配置、フランジから工具先端までのTCP、カメラの内部パラメータ、ロボットとカメラの外部関係などがある。これらは異なる座標変換や観測量に関係するため、一つの補正値にまとめると別の姿勢で誤差が再び現れやすい。&lt;/p&gt;&#xA;&lt;p&gt;たとえばTCPの誤差をリンクパラメータへ吸収すると、校正に使った姿勢では残差が小さくても、工具の向きを変えたときにずれが現れる可能性がある。カメラのレンズ歪みをハンドアイ変換で補正する場合も、誤差源の管理が不明確になる。誤差の種類ごとに推定・保存・検証することが再利用の前提となる。&lt;/p&gt;&#xA;&lt;h2 id=&#34;座標系と運動学モデル&#34;&gt;座標系と運動学モデル&lt;/h2&gt;&#xA;&lt;p&gt;まず、各座標系の名称、親子関係、単位、変換行列の向きを記録する。ベースから関節列、フランジ、TCPへ至る関係に加え、カメラがフランジに取り付くeye-in-handか、作業空間に固定されるeye-to-handかも明示する。対象物やワールド座標系についても、どの座標からどの座標へ変換するかを定義する。&lt;/p&gt;&#xA;&lt;p&gt;運動学モデルには標準DH、修正DH、指数積形式などがある。同じ「リンク長」や「ねじれ」という名称でも、モデルが違えばパラメータの意味や符号は一致しない。したがって、数値だけを別のコントローラやソフトウェアへ移植してはならない。座標系規約、DH規約、単位、カメラ内外部パラメータの定義、コントローラとソフトウェアのバージョンを一緒に管理する。&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;カメラ内部校正はロボット運動学とは分けて行う。焦点距離、主点、レンズ歪みは、平面パターンを複数の姿勢から撮影して推定できる。次に、フランジ装着カメラとロボットの関係、または固定カメラとロボットベースの関係をハンドアイ校正で求める。これは相対運動から剛体変換を推定するAX=XB型の問題として表せるが、eye-in-handとeye-to-handでは行列の定義と変換方向が異なる。式を流用せず、座標系の定義に合わせて確認する。&lt;/p&gt;&#xA;&lt;p&gt;TCPはフランジ座標系から工具座標系への変換として扱う。リンク幾何やカメラ外部パラメータへ混ぜず、工具姿勢を変えても同じTCPが対象点を表すかを独立に確認する。&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;ロボットの幾何キャリブレーションでは、関節列からTCPまでの運動学、カメラ内部パラメータ、カメラ外部変換、対象物との関係を分けて管理し、各変換の向きと単位を明示する。&#34;&gt;flowchart LR&#xA;  B[&#34;ベース座標系&#34;] --&gt;|&#34;順運動学&#34;| J1[&#34;関節1&#34;]&#xA;  J1 --&gt; J2[&#34;関節2 … 関節列&#34;]&#xA;  J2 --&gt; F[&#34;フランジ座標系&#34;]&#xA;  F --&gt;|&#34;T_フランジ→TCP&#34;| TCP[&#34;工具座標系（TCP）&#34;]&#xA;&#xA;  F --&gt;|&#34;取り付け関係・ハンドアイ変換&#34;| CEH[&#34;カメラ座標系\neye-in-hand&#34;]&#xA;  B --&gt;|&#34;ベース→カメラ外部変換&#34;| CETH[&#34;カメラ座標系\neye-to-hand&#34;]&#xA;&#xA;  W[&#34;ワールド座標系&#34;] --&gt;|&#34;対象物の配置&#34;| T[&#34;対象物座標系&#34;]&#xA;  CEH --&gt;|&#34;画像観測&#34;| T&#xA;  CETH --&gt;|&#34;画像観測&#34;| T&#xA;&#xA;  K[&#34;カメラ内部パラメータ\n焦点距離・主点・歪み&#34;] --&gt; CEH&#xA;  K --&gt; CETH&#xA;  N[&#34;各変換の向き・単位・規約を文書化&#34;] -.-&gt; B&#xA;  N -.-&gt; TCP&#xA;  N -.-&gt; CEH&#xA;  N -.-&gt; CETH&lt;/pre&gt;&lt;figcaption&gt;ロボットの幾何キャリブレーションでは、関節列からTCPまでの運動学、カメラ内部パラメータ、カメラ外部変換、対象物との関係を分けて管理し、各変換の向きと単位を明示する。&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;TCP&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;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-task-execution-behavior-tree-state-machine-planner/</link>
      <pubDate>Tue, 29 Sep 2026 14:33:23 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-task-execution-behavior-tree-state-machine-planner/</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;は、状態と遷移を明示的に列挙するモデルである。許可された遷移、到達可能性、モードごとの不変条件を検証計画に落とし込みやすい。ドアの開閉、充電、緊急停止、手動介入、ナビゲーションの有効・無効など、相互排他的で有限個の運用モードに向く。Statechartsのように階層、直交並行性、履歴を備えた拡張もある。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;行動木&lt;/strong&gt;は、複合ノードを階層的に組み合わせて実行フローを表す。Sequenceは順番に処理し、Fallbackは代替経路を扱い、Decoratorは条件や実行規則を付加する。ノードはSuccess、Failure、Runningなどの結果を返す。サブツリーやノードプラグインを単位に、ナビゲーション、認識、把持、回復処理などの実行パターンを分割し、再利用できる。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;タスクプランナー&lt;/strong&gt;は、目標に至る手順をモデルから生成する。PDDL系では、ドメインと問題を分離し、アクションの前提条件と効果を記述する。PDDL 2.1では、時間制約、持続アクション、数値フルエントも扱える。目標、利用可能な資源、物体状態、作業順序が変わるタスクで、手順を再生成しやすい。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組みと責務分担&#34;&gt;内部の仕組みと責務分担&lt;/h2&gt;&#xA;&lt;p&gt;ハイブリッド構成では、まずプランナーが「何を、どの順序で達成するか」を決める。次に、計画の各ステップを行動木のアクションやスキルへ対応付ける。行動木は実行中の失敗を検知し、Fallback、リトライ、タイムアウト、キャンセルなどを扱う。必要なら実行結果をもとに、プランナーへ再計画を要求する。&lt;/p&gt;&#xA;&lt;p&gt;状態機械は、細かな作業手順ではなく、システム全体の運用モードを管理する。安全停止や手動介入中は行動木の実行を許可せず、条件が整った場合だけ再開させる、といった境界を明示できる。ROS 2のmanaged nodeも、Unconfigured、Inactive、Activeなどのライフサイクル状態と遷移を定義し、ノードの設定、起動、停止、クリーンアップを状態機械として管理する。&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;  G[&#34;目標・物体状態・利用可能な資源&#34;] --&gt; P[&#34;タスクプランナー\nドメイン・問題・アクションから手順を生成&#34;]&#xA;  P --&gt; T[&#34;計画されたタスク手順&#34;]&#xA;  T --&gt; B[&#34;行動木\n実行・リトライ・Fallback・タイムアウト・キャンセル&#34;]&#xA;  B --&gt; N[&#34;再利用可能なスキル\nナビゲーション・認識・把持&#34;]&#xA;  N --&gt; R[&#34;実機上の実行&#34;]&#xA;  R --&gt; M[&#34;実行結果・状態推定&#34;]&#xA;  M --&gt; B&#xA;  M -. &#34;計画が不成立または状態が変化&#34; .-&gt; P&#xA;&#xA;  S[&#34;安全・運用モードの状態機械\n安全停止・手動介入・充電など&#34;] --&gt;|&#34;実行可否を制御&#34;| B&#xA;  S --&gt;|&#34;モード遷移と不変条件&#34;| R&#xA;  L[&#34;ノードのライフサイクル状態\n設定・起動・停止・クリーンアップ&#34;] --&gt; S&#xA;&#xA;  classDef planner fill:#dbeafe,stroke:#2563eb,color:#111827;&#xA;  classDef bt fill:#dcfce7,stroke:#16a34a,color:#111827;&#xA;  classDef state fill:#ffedd5,stroke:#ea580c,color:#111827;&#xA;  class P,T planner;&#xA;  class B,N,R,M bt;&#xA;  class S,L state;&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;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;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;td&gt;Fallback、リトライ、タイムアウト&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;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;td&gt;行動木の回復と再計画&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ros-2での利用場面&#34;&gt;ROS 2での利用場面&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2では、Nav2のBT NavigatorがBehavior Treeでナビゲーションタスクを実行し、XMLで記述されたツリーとBTノードのプラグインを利用する構成を提供している。行動木を実行オーケストレーション層に置く実例として捉えられる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>自然言語からロボット行動へ：3Dグラウンディングと実行制約の設計</title>
      <link>https://physicalaihub.net/posts/robot-language-to-3d-grounding-action-constraints/</link>
      <pubDate>Mon, 28 Sep 2026 14:09:11 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-language-to-3d-grounding-action-constraints/</guid>
      <description>&lt;p&gt;自然言語の「右側」や「隣」が、ロボットにとってどの座標と距離を意味するのかが気になるテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットに自然言語を直接モータ指令として渡すのは適切ではありません。「赤い箱を棚の右側へ置く」のような指示は、対象物、参照表現、空間関係、3D目標、座標系、許容誤差、動作前提、禁止条件、完了条件へ分解し、構造化された中間表現に変換するべきです。&lt;/p&gt;&#xA;&lt;p&gt;VLMやLLMは、指示の意味解釈や操作候補の生成に使います。一方、実行前には物体の再同定、座標変換、到達可能性、衝突、視認性、把持可能性などを別の検証段階で確認します。意味の確信度が高くても、3D測位や軌道計画が成立するとは限りません。不確実性が大きければ、実行せずに確認質問、追加観測、再計画へ切り替える構成が基本になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ3dグラウンディングが必要か&#34;&gt;なぜ3Dグラウンディングが必要か&lt;/h2&gt;&#xA;&lt;p&gt;自然言語には、ロボットがそのまま利用できる座標が含まれていません。「右側」は何を基準にした右側か、「隣」はどの距離までか、「それ」はどの物体を指すのかを決める必要があります。さらに、対象を認識できても、把持姿勢やアームの可動範囲、周囲の障害物を考慮しなければ行動には変換できません。&lt;/p&gt;&#xA;&lt;p&gt;3D-LLMやSpatialVLM系の研究は、3Dシーン理解、視覚グラウンディング、物体間の距離や方向、相対位置の推論を扱います。ただし、3D上の参照対象を得られることは、安全な軌道や実行可能な把持姿勢を得たことと同じではありません。空間推論の評価結果を、そのまま実機操作の成功や安全性として扱うこともできません。&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;目標となる3D位置、3D領域、または物体姿勢&lt;/li&gt;&#xA;&lt;li&gt;許容誤差、把持や配置に必要な動作前提、禁止条件&lt;/li&gt;&#xA;&lt;li&gt;言語解釈の確信度、対象同定の確信度、3D測位の不確実性&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;処理は、おおむね次の段階に分けられます。まずVLMやLLMが、指示から対象物、操作、空間関係、候補となるスキル列を生成します。SayCanは、LLMによる言語的なタスク分解に、現在のロボット状態で各スキルを実行できるかを示すアフォーダンス値を組み合わせる方式です。言語的にもっとも自然な手順ではなく、環境で実行可能な候補を選ぶ点に意味があります。&lt;/p&gt;&#xA;&lt;p&gt;次に、画像、点群、深度、ロボット状態などから作られた3Dシーンへ、対象と関係を接地します。VoxPoserは、物体や空間関係を3Dボクセル上の価値マップとして表現し、複数の価値マップを合成して操作や経路計画へ利用する枠組みを示しています。3D目標を一点だけでなく領域や価値として持てるため、配置や経路の条件を計画器へ渡しやすくなります。&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;言語モデルの出力を直接モータ指令に接続せず、3D目標と実行制約を検証してからロボットへ渡す処理の流れ。&#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 -- &#34;いいえ&#34; --&gt; Q[&#34;確認質問または追加観測&#34;]&#xA;  Q --&gt; C&#xA;  D -- &#34;はい&#34; --&gt; E[&#34;3Dシーンへグラウンディング&#34;]&#xA;  E --&gt; F[&#34;構造化中間表現の生成&#34;]&#xA;  F --&gt; F1[&#34;対象・基準物体・座標系・3D目標・許容誤差・禁止条件&#34;]&#xA;  F1 --&gt; G[&#34;座標変換と状態統合&#34;]&#xA;  G --&gt; H[&#34;到達可能性・衝突・視認性・把持・速度・力の検証&#34;]&#xA;  H --&gt; I{&#34;実行条件を満たすか&#34;}&#xA;  I -- &#34;いいえ&#34; --&gt; R[&#34;停止・再観測・再計画&#34;]&#xA;  R --&gt; E&#xA;  I -- &#34;はい&#34; --&gt; J[&#34;モーション計画&#34;]&#xA;  J --&gt; K[&#34;ロボット実行&#34;]&#xA;  K --&gt; L[&#34;実行中の観測更新&#34;]&#xA;  L --&gt; M{&#34;完了条件を満たすか&#34;}&#xA;  M -- &#34;はい&#34; --&gt; N[&#34;完了&#34;]&#xA;  M -- &#34;いいえ&#34; --&gt; R&lt;/pre&gt;&lt;figcaption&gt;言語モデルの出力を直接モータ指令に接続せず、3D目標と実行制約を検証してからロボットへ渡す処理の流れ。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;参照表現は候補集合として扱う&#34;&gt;参照表現は候補集合として扱う&lt;/h2&gt;&#xA;&lt;p&gt;「赤い箱の隣」「それを持ち上げて」のような表現を、最初から単一の物体へ決め打ちするのは危険です。検出された物体、過去の行動履歴、3Dシーン内の空間関係を使って候補集合を作り、候補が一意になるかを確認します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットAIの電力・熱設計：長時間運用で推論性能を安定させる監視方法</title>
      <link>https://physicalaihub.net/posts/robot-ai-power-thermal-performance-monitoring/</link>
      <pubDate>Sun, 27 Sep 2026 14:06:14 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-ai-power-thermal-performance-monitoring/</guid>
      <description>&lt;p&gt;短時間のベンチマークで良好に見えるロボットAIが、長時間運用でも同じ応答性を保てるとは限りません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;Jetsonなどのエッジ計算機を搭載したロボットでは、平均FPSだけで長時間運用の安定性を判断してはいけません。温度、電力、CPU・GPU・メモリ帯域の利用率と周波数、アプリケーション遅延を同じ時系列で記録し、p95・p99遅延、最大遅延、期限超過率、キュー長を重視します。&lt;/p&gt;&#xA;&lt;p&gt;温度上昇や電力制約と実効クロック低下が、p99遅延の増加と同時に起きていれば、熱または電力に起因する性能低下を疑います。温度やクロックが安定しているのにキューだけが伸びる場合は、CPU競合、メモリ帯域、I/O、前処理・後処理などを追加で調べます。状態が悪化したときは、推論レート、処理対象フレーム、入力解像度、モデル品質を段階的に下げる閉ループ制御が有効です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ長時間の監視が必要か&#34;&gt;なぜ長時間の監視が必要か&lt;/h2&gt;&#xA;&lt;p&gt;短時間のベンチマークは、起動直後の温度や一時的な冷却条件を反映します。一方、実際のロボットでは筐体や周囲の温度、電力モード、センサー入力、制御処理などが時間とともに変化します。Jetsonの熱管理機構は温度センサー、thermal zone、冷却デバイス、トリップポイントを使い、条件に応じて周波数制御やスロットリングを行うことがあります。&lt;/p&gt;&#xA;&lt;p&gt;そのため、瞬間的な推論時間やFPSだけでは制御周期を守れるか分かりません。安全制約や周期処理を持つシステムでは、平均値よりも遅延分布の上側を見ます。p99遅延、最大遅延、期限超過率、連続した欠落フレーム数の許容値は、対象ロボットの制御仕様と安全要求から決めます。製品、冷却方式、筐体条件が異なるため、温度や電力の一律な閾値は設定できません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;監視するメトリクス&#34;&gt;監視するメトリクス&lt;/h2&gt;&#xA;&lt;p&gt;Jetsonのシステム状態は、tegrastatsで一定間隔に取得できます。RAM、SWAP、CPU・GPU・EMCなどの利用率と周波数、温度、電力情報が対象です。電力監視ではVDD_INなどの入力・レール単位の値を利用できますが、利用可能なセンサー名や値の意味は、モジュール、キャリアボード、ソフトウェア設定によって異なります。VDD_INがモジュール入力だけを示すのか、キャリアボードや周辺機器を含むのかは、対象機の回路構成とセンサー実装を確認してください。&lt;/p&gt;&#xA;&lt;p&gt;温度の調査では、tegrastatsの温度値に加えてthermal sysfsを確認します。Linuxのthermal frameworkは、thermal zoneの温度、冷却デバイス、トリップポイントをsysfs経由で公開します。これにより、単に温度が高いかだけでなく、温度管理機構の状態を確認できます。&lt;/p&gt;&#xA;&lt;p&gt;推論レイテンシはtegrastatsだけでは測れません。アプリケーション側で、入力受付、キュー待ち、前処理、推論、後処理、出力にタイムスタンプを付け、p50・p95・p99、スループット、期限超過率、キュー長を記録します。NVTXの範囲を付ければ、Nsight SystemsでCPU・CUDA・GPUのタイムラインと処理区間を対応付けられます。&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;温度、電力、実効クロック、キュー長、p99遅延などを同じ時系列に置くと、熱・電力制約とソフトウェア要因を切り分けやすくなります。VDD_INなどの電力値は、対象モジュールや回路構成に応じて測定範囲を確認します。&#34;&gt;flowchart TB&#xA;  S[&#34;同じ時刻軸で記録&#34;]&#xA;  S --&gt; T[&#34;温度センサー・thermal zone&#34;]&#xA;  S --&gt; P[&#34;利用可能な電力センサー\n例: VDD_IN&#34;]&#xA;  S --&gt; C[&#34;CPU・GPU・メモリ帯域の利用率と実効クロック&#34;]&#xA;  S --&gt; M[&#34;RAM・SWAP&#34;]&#xA;  S --&gt; A[&#34;入力受付から出力までのアプリケーション区間&#34;]&#xA;  A --&gt; Q[&#34;キュー待ち・前処理・推論・後処理・出力&#34;]&#xA;  Q --&gt; L[&#34;p95・p99・最大遅延\n期限超過率・キュー長・欠落フレーム&#34;]&#xA;  T --&gt; R[&#34;時間相関を確認&#34;]&#xA;  P --&gt; R&#xA;  C --&gt; R&#xA;  L --&gt; R&#xA;  R --&gt; H{&#34;温度上昇・クロック低下・遅延増加が重なるか&#34;}&#xA;  H --&gt;|&#34;はい&#34;| X[&#34;熱または電力制約の候補として調査&#34;]&#xA;  H --&gt;|&#34;いいえ。キューだけ増加&#34;| Y[&#34;CPU競合・メモリ帯域・I/O・前後処理を追加調査&#34;]&lt;/pre&gt;&lt;figcaption&gt;温度、電力、実効クロック、キュー長、p99遅延などを同じ時系列に置くと、熱・電力制約とソフトウェア要因を切り分けやすくなります。VDD_INなどの電力値は、対象モジュールや回路構成に応じて測定範囲を確認します。&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;tegrastats&lt;/td&gt;&#xA;          &lt;td&gt;温度、利用率、周波数、RAM・SWAP、電力&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;thermal sysfs&lt;/td&gt;&#xA;          &lt;td&gt;thermal zone、冷却デバイス、トリップポイント&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;Nsight Systems&lt;/td&gt;&#xA;          &lt;td&gt;CPU・CUDA・GPUのタイムライン&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;p95・p99遅延&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;nvpmodelはJetsonの電力モードを選択し、jetson_clocksはCPU、GPU、EMCなどのクロックを制御します。性能評価時と実運用時の設定を明示し、異なる条件の結果を混同しないことが必要です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2のセキュリティ設計入門：DDS-Securityの適用範囲と性能評価</title>
      <link>https://physicalaihub.net/posts/ros2-dds-security-authentication-authorization-design/</link>
      <pubDate>Sat, 26 Sep 2026 13:45:27 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-dds-security-authentication-authorization-design/</guid>
      <description>&lt;p&gt;ROS 2の通信保護では、暗号化の有無だけでなく、どの情報を誰に許可するかまで設計する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2の通信を保護する場合は、SROS 2を入口としてDDS-SecurityをDDSのDomainParticipantとRTPS通信に適用します。ただし、すべての通信を一律に暗号化するのではなく、発見情報、RTPSメタデータ、トピックデータごとに保護レベルを選ぶことが重要です。&lt;/p&gt;&#xA;&lt;p&gt;性能は「有効・無効」の二択では評価できません。認証のみ、完全性保護、暗号化、発見情報の保護などを段階的に比較し、採用するROS 2ディストリビューション、RMW実装、DDS実装、メッセージ特性、ハードウェアを固定して測定します。運用負荷も、初期設定だけでなく証明書・秘密鍵・権限ファイルの更新や障害対応まで含めて判断します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ適用範囲の設計が必要か&#34;&gt;なぜ適用範囲の設計が必要か&lt;/h2&gt;&#xA;&lt;p&gt;ロボットでは、センサーデータ、制御指令、状態情報などがDDSを通じて交換されます。通信相手が正しい参加者か、特定のノードにpublishやsubscribeを許すか、内容を第三者から読めなくするかは別々の課題です。認証に成功した参加者へ、すべてのトピックへのアクセスを許可する必要はありません。&lt;/p&gt;&#xA;&lt;p&gt;また、「暗号化を有効にした」という説明だけでは保護範囲が分かりません。DDS-Securityでは、発見情報、liveliness、RTPSメタデータ、トピックデータに異なる保護レベルを指定できます。署名にとどめるか暗号化まで行うかは、機密性、完全性、性能、運用負荷を合わせて決めます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用語と役割&#34;&gt;用語と役割&lt;/h2&gt;&#xA;&lt;p&gt;DDS-Securityは、DDSのDomainParticipantとRTPS通信層に適用されるセキュリティモデルです。認証、アクセス制御、暗号、ロギングなどをプラグインとして構成します。&lt;/p&gt;&#xA;&lt;p&gt;認証は参加者の識別と相互認証を担います。アクセス制御、つまり認可は、ドメイン、トピック、パーティションなどについて、その参加者がどの操作を実行できるかを判定します。暗号プラグインは、通信の暗号化や完全性保護を担当します。認証できたことと、アクセスを許可することは同じではありません。&lt;/p&gt;&#xA;&lt;p&gt;ROS 2ではSROS 2がDDS-Securityを利用するツールと統合機能を提供します。キーストアに証明書、秘密鍵、ガバナンス文書、権限文書などを格納し、エンクレーブをノードの論理的なセキュリティ境界として利用します。実行時には、キーストア、エンクレーブ、セキュリティ戦略などを環境変数やCLIで指定します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組みと適用範囲&#34;&gt;内部の仕組みと適用範囲&lt;/h2&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;ROS 2のDDS通信に対するDDS-Securityの適用範囲と、キーストア資材およびDDSを経由しない経路の扱いを示します。&#34;&gt;flowchart LR&#xA;  node[&#34;ROS 2ノード&#34;] --&gt; rclrmw[&#34;rcl / RMW&#34;]&#xA;  rclrmw --&gt; dp[&#34;DDS DomainParticipant&#34;]&#xA;&#xA;  subgraph sec[&#34;DDS-Security&#34;]&#xA;    auth[&#34;認証プラグイン&#34;]&#xA;    access[&#34;アクセス制御プラグイン&#34;]&#xA;    crypto[&#34;暗号プラグイン&#34;]&#xA;  end&#xA;&#xA;  dp --&gt; auth&#xA;  dp --&gt; access&#xA;  dp --&gt; crypto&#xA;&#xA;  subgraph ks[&#34;キーストア&#34;]&#xA;    cert[&#34;Identity certificate&#34;]&#xA;    key[&#34;Private key&#34;]&#xA;    gov[&#34;Governance文書&#34;]&#xA;    perm[&#34;Permissions文書&#34;]&#xA;  end&#xA;&#xA;  cert --&gt; auth&#xA;  key --&gt; auth&#xA;  gov --&gt; access&#xA;  perm --&gt; access&#xA;&#xA;  auth --&gt; participant[&#34;参加者の識別・相互認証&#34;]&#xA;  access --&gt; endpoint[&#34;ドメイン・トピック・パーティションの権限&#34;]&#xA;  crypto --&gt; discovery[&#34;発見情報・RTPSメタデータ&#34;]&#xA;  crypto --&gt; topic[&#34;トピックデータ&#34;]&#xA;&#xA;  participant --&gt; rtps[&#34;DDSを経由するRTPS通信&#34;]&#xA;  endpoint --&gt; rtps&#xA;  discovery --&gt; rtps&#xA;  topic --&gt; rtps&#xA;&#xA;  bypass[&#34;DDSをバイパスする経路\n独自トランスポート・実装依存のプロセス内通信など&#34;] -.-&gt; out[&#34;DDS-Securityの適用範囲外の可能性\n実装仕様の確認が必要&#34;]&lt;/pre&gt;&lt;figcaption&gt;ROS 2のDDS通信に対するDDS-Securityの適用範囲と、キーストア資材およびDDSを経由しない経路の扱いを示します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;DDS-Securityで自動的に保護されるのは、基本的にDDSを経由する通信です。独自トランスポートや、実装によってDDS通信をバイパスするプロセス内通信・共有メモリ経路まで保護されるとは限りません。コンポーネントコンテナや共有メモリを使う場合は、実際の経路をRMWとDDS実装の仕様で確認します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット行動方策の実行粒度：アクションチャンクと再計画周期の設計</title>
      <link>https://physicalaihub.net/posts/robot-action-chunking-replanning-period/</link>
      <pubDate>Thu, 24 Sep 2026 13:31:55 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-action-chunking-replanning-period/</guid>
      <description>&lt;p&gt;アクションチャンクの「長さ」と再計画の「間隔」は、同じ数字で語られがちな点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの行動方策では、1回の推論で予測する長さ &lt;strong&gt;H&lt;/strong&gt; と、次の推論まで実際に実行する長さ &lt;strong&gt;K&lt;/strong&gt; を分けて設計するべきです。Hはタスクの時間的なまとまりや先読みを表し、Kは環境変化に対する反応性と推論負荷を左右します。&lt;/p&gt;&#xA;&lt;p&gt;基本方針は、通常 &lt;strong&gt;H &amp;gt;= K&lt;/strong&gt; とし、予測した全アクションを固定的に実行しないことです。接触、物体移動、外乱、視覚変化が多い局面ではKを小さくし、安定した自由空間動作や推論コストが高い構成ではKを大きくする候補があります。ただし、最適な数値はロボット、制御周期、アクション表現、推論遅延、タスクによって変わるため、実機でHとKを組み合わせたアブレーションを行って決めます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜhとkを分けるのか&#34;&gt;なぜHとKを分けるのか&lt;/h2&gt;&#xA;&lt;p&gt;アクションチャンクとは、方策が1回の推論で単一のアクションではなく、複数ステップの連続アクション列を予測する設計です。ACT（Action Chunking with Transformers）は固定長のアクション列を予測し、時間的に重なる予測をtemporal ensembleで融合する構成を採用しています。一方、Diffusion Policyはアクション列を生成し、その一部を実行して観測を更新し、再計画するreceding-horizon controlを用います。&lt;/p&gt;&#xA;&lt;p&gt;ここで「チャンク長」という言葉を、予測する列の長さと、再計画まで実行する長さの両方に使うと、実装上の議論が曖昧になります。本稿では、予測長をH、実行してから次に推論する間隔をKと定義します。Hを長くしても、Kを短く保つことは可能です。逆にHとKを同じ値にして、予測列全体をオープンループで実行することもできますが、その場合は途中の観測を使った修正機会が減ります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;ステップ数ではなく時間で考える&#34;&gt;ステップ数ではなく時間で考える&lt;/h2&gt;&#xA;&lt;p&gt;HとKはステップ数だけでなく、低レベル制御周期 &lt;strong&gt;Δt_ctrl&lt;/strong&gt; と組み合わせて評価します。予測時間はHΔt_ctrl、再計画時間はKΔt_ctrlです。同じKでも、制御周期が異なれば、ロボットが観測なしで動く物理的な時間は変わります。&lt;/p&gt;&#xA;&lt;p&gt;さらに、観測、通信、方策推論を含むエンドツーエンド遅延を &lt;strong&gt;T_inf&lt;/strong&gt; とします。同期推論では、少なくともT_infがKΔt_ctrlを超えないかを確認する必要があります。超える場合、推論完了までに現在のアクション列を使い切る可能性があります。そのときは、アクションバッファ、非同期推論、低レベルサーボ、安全な停止・ホールド機構などを設け、推論の遅さを単純なオープンループ時間の増加として放置しないことが重要です。&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;予測長Hは先読みの長さ、再計画間隔Kは実際に実行してから次の推論を行うまでの長さを表す。基本方針はHをK以上とし、観測更新によって実行列を分割することです。&#34;&gt;flowchart LR&#xA;  A[&#34;時刻 t0：観測&#34;] --&gt; B[&#34;方策推論&#34;]&#xA;  B --&gt; C[&#34;長さHのアクション列を予測&#34;]&#xA;  C --&gt; D[&#34;最初のKステップだけ実行&#34;]&#xA;  D --&gt; E[&#34;時刻 t0+K：新しい観測&#34;]&#xA;  E --&gt; F[&#34;次のアクション列を再計画&#34;]&#xA;  F --&gt; G[&#34;新しい列の一部を実行&#34;]&#xA;  G --&gt; H[&#34;次の観測と再計画&#34;]&#xA;  C -. &#34;HΔt_ctrl：予測時間&#34; .-&gt; D&#xA;  D -. &#34;KΔt_ctrl：実行・再計画間隔&#34; .-&gt; E&#xA;  F -. &#34;予測が重なる場合&#34; .-&gt; I[&#34;temporal ensembleや加重平均で融合&#34;]&#xA;  I -. &#34;滑らかさと反応遅れを評価&#34; .-&gt; G&#xA;  C -. &#34;基本方針 H≥K&#34; .-&gt; F&lt;/pre&gt;&lt;figcaption&gt;予測長Hは先読みの長さ、再計画間隔Kは実際に実行してから次の推論を行うまでの長さを表す。基本方針はHをK以上とし、観測更新によって実行列を分割することです。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;hとkの時間軸&#34;&gt;HとKの時間軸&lt;/h2&gt;&#xA;&lt;p&gt;時刻t0で方策が長さHのアクション列を予測し、そのうち最初のKステップを実行します。t0+Kで新しい観測を取得し、次の列を予測します。新しい予測と過去の予測が同じ時刻に対応する場合は、temporal ensembleや加重平均によって融合できます。これにより、チャンク境界での入力の不連続や急変を抑えられる可能性があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットの失敗からの復旧設計：リトライ・再計画・人への引き継ぎを使い分ける</title>
      <link>https://physicalaihub.net/posts/robot-task-failure-recovery-design/</link>
      <pubDate>Wed, 23 Sep 2026 13:35:31 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-task-failure-recovery-design/</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;自律ロボットは、計画を一度生成して最後まで実行するだけでは運用できません。実行中には、観測された世界と計画が仮定した状態に差異が生じます。その差異や失敗を監視し、回復または再計画につなげる実行管理が必要です。計画、実行、監視、再計画を循環させる構成は、自律ロボットのdeliberationでも整理されています。&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;は、再試行の前に待機、後退、再配置などの処置を行うことを指します。Nav2の行動木には、主タスクの失敗後にリカバリを実行し、主タスクへ戻るRecoveryNodeや、複数のリカバリ動作を順番に試す構成があります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;再計画&lt;/strong&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;ROS 2のActionは、長時間実行される目標について、目標、フィードバック、結果、キャンセルを扱う通信方式です。実行監視や停止要求の受け渡しに利用できます。一方、ROS 2 Managed Nodeのライフサイクルは、未構成、非アクティブ、アクティブ、終了済みなどの状態と、設定、起動、停止、クリーンアップ、エラー処理の遷移を明示します。これらは、停止後の再初期化や再アクティベーションを、暗黙の再開と区別する基盤になります。&lt;/p&gt;&#xA;&lt;p&gt;行動木では、BehaviorTree.CPPのRetryやRetryUntilSuccessfulのようなデコレータで、子ノードの失敗時の再実行や回数制御を表現できます。ただし、Retryノードは再実行機構であって、安全に再実行できる条件を自動的に定義するものではありません。&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; C{&#34;危険な兆候または安全機能の作動があるか&#34;}&#xA;  C --&gt;|&#34;はい&#34;| H[&#34;安全状態へ移行&#34;]&#xA;  C --&gt;|&#34;いいえ&#34;| D[&#34;現在の状態と安全条件を確認&#34;]&#xA;  D --&gt; E{&#34;状態を信頼できるか&#34;}&#xA;  E --&gt;|&#34;いいえ&#34;| H&#xA;  E --&gt;|&#34;はい&#34;| F{&#34;原因は一時的で再実行は安全か&#34;}&#xA;  F --&gt;|&#34;はい&#34;| G[&#34;上限付きリトライ&#34;]&#xA;  G --&gt; I{&#34;回数・時間・試行予算内か&#34;}&#xA;  I --&gt;|&#34;はい&#34;| J[&#34;状態を再確認して再実行&#34;]&#xA;  J --&gt; A&#xA;  I --&gt;|&#34;いいえ&#34;| H&#xA;  F --&gt;|&#34;いいえ、前提が変化または不確実&#34;| K[&#34;再観測と状態推定の更新&#34;]&#xA;  K --&gt; L[&#34;制約を反映して再計画&#34;]&#xA;  L --&gt; M{&#34;更新後の計画は安全条件を満たすか&#34;}&#xA;  M --&gt;|&#34;はい&#34;| N[&#34;計画を検証して再開&#34;]&#xA;  N --&gt; A&#xA;  M --&gt;|&#34;いいえ&#34;| H&#xA;  H --&gt; O[&#34;失敗情報・観測・試行履歴を提示&#34;]&#xA;  O --&gt; P[&#34;人への引き継ぎ&#34;]&#xA;  P --&gt; Q[&#34;介入完了後にロボット・環境・対象物を再検証&#34;]&#xA;  Q --&gt; R{&#34;明示的な再開承認と再検証に成功したか&#34;}&#xA;  R --&gt;|&#34;はい&#34;| S[&#34;検証済みチェックポイントから再開&#34;]&#xA;  R --&gt;|&#34;いいえ&#34;| T[&#34;タスクを中止&#34;]&lt;/pre&gt;&lt;figcaption&gt;失敗原因、状態の信頼性、安全条件、試行予算に基づいて、リトライ・再計画・人への引き継ぎを選択する復旧フロー。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;3つの復旧手段の比較&#34;&gt;3つの復旧手段の比較&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;リトライ&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;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;リトライは、失敗原因が一時的である場合に限定します。通信タイムアウトのように、対象物やロボットの状態が変わっておらず、安全に再確認できるなら候補になります。ただし、回数、待機時間、バックオフ、総試行予算をあらかじめ設けます。Nav2のRecoveryNodeにも再試行回数を設定する構成がありますが、適切な回数や安全条件はタスクごとに決める必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットの3D空間表現を選ぶ：ボクセル・TSDF・点群・ニューラル表現の比較</title>
      <link>https://physicalaihub.net/posts/robot-3d-spatial-representation-selection/</link>
      <pubDate>Tue, 22 Sep 2026 13:42:06 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-3d-spatial-representation-selection/</guid>
      <description>&lt;p&gt;3Dセンサーの入力形式が同じでも、地図と計画が必要とする情報は大きく異なります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの3D空間表現は、方式の優劣ではなく、下流処理が何を問い合わせるかで選びます。未知・自由・占有を区別する地図や保守的な障害物判定には占有ボクセルが基本候補です。疎な環境や可変解像度を重視する大域地図では、占有確率をオクトツリーで管理するOctoMapを検討します。&lt;/p&gt;&#xA;&lt;p&gt;表面の融合やメッシュ生成にはTSDF、障害物までの距離や勾配を局所計画で使うならESDF、センサ直結の登録・セグメンテーション・局所認識には点群が適します。ニューラル表現は、視点合成や連続的な形状クエリなど、手法固有の機能が必要な場合の候補です。ただし、安全性が重要なオンライン衝突回避では、占有表現または保守的な距離場との併用と検証が必要です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ選択が難しいのか&#34;&gt;なぜ選択が難しいのか&lt;/h2&gt;&#xA;&lt;p&gt;同じ深度カメラやLiDARの入力でも、地図、認識、計画が必要とする情報は異なります。「このセルは占有か」「表面までの距離はいくらか」「観測点の属性は何か」「任意の座標で形状を問い合わせられるか」は別のクエリです。したがって、表現を選ぶ際は、必要なクエリ、未知領域の規則、解像度、更新頻度、メモリ、計画への接続方法を先に決めます。&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;は3D空間をセルに分ける離散化単位です。セルには占有状態、占有確率、距離などを格納できます。&lt;strong&gt;占有グリッド&lt;/strong&gt;は、セルをoccupied、free、unknown、または占有確率で管理する表現です。センサ光線に沿った自由空間の更新や、未知を残した衝突判定に向きます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;OctoMap&lt;/strong&gt;は、占有確率をオクトツリーで管理する具体的な方式です。均質な領域を上位ノードにまとめるため、固定解像度の密な3D配列に比べ、疎な環境や可変解像度に対応しやすい構成です。ボクセルという一般的な単位と、OctoMapという管理方式は同じ抽象レベルではありません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;TSDF&lt;/strong&gt;は、各ボクセルに最寄りの表面までの符号付き距離を格納し、一定の帯域で切り詰める表面中心の表現です。深度観測を重み付きで融合できます。&lt;strong&gt;ESDF&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;TSDFは「未知かどうか」より「観測された表面がどこにあるか」を扱います。深度センサからの密な表面再構成、メッシュ生成、カメラトラッキングに向く一方、占有確率や未知空間を直接表しません。TSDFだけを安全側の占有地図として使うには、表面抽出や追加の判定規則が必要です。&lt;/p&gt;&#xA;&lt;p&gt;ESDFは計画器が必要とする距離情報を直接提供します。VoxbloxはTSDFを増分更新し、そこからESDFを構築して計画に利用する構成を示しています。つまり、TSDFとESDFは競合する選択肢ではなく、観測融合と計画で連結できます。符号規約、障害物の定義、未知領域の扱いは実装ごとに確認してください。&lt;/p&gt;&#xA;&lt;p&gt;点群は点の座標に加え、法線、色、強度などの属性を保持できます。登録、特徴抽出、認識、セグメンテーションなどに直接使いやすい反面、未観測空間が自由か未知か、空間全体の占有確率は点群単体から直接は分かりません。長距離計画や保守的な衝突判定では、占有グリッドや距離場への変換が必要になることが多くなります。&lt;/p&gt;&#xA;&lt;p&gt;NeRFは位置と視線方向から放射輝度や体積密度を返す連続関数を最適化し、主用途は新規視点画像の合成です。原型のNeRFを、そのまま衝突判定用の幾何表現とはみなせません。一方、ニューラルSDF系はニューラルネットワークで連続的な符号付き距離関数を表し、ロボット向けのオンライン3D再構成や知覚に利用できます。&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;占有表現、TSDF、ESDFは保持する情報と得意な問い合わせが異なります。ESDFの符号規約や未知領域の扱いは実装ごとに確認が必要です。&#34;&gt;flowchart LR&#xA;  subgraph O[&#34;占有表現&#34;]&#xA;    O1[&#34;セル&#34;] --&gt; O2[&#34;occupied / free / unknown&#34;]&#xA;    O2 --&gt; O3[&#34;占有確率や保守的な判定&#34;]&#xA;  end&#xA;  subgraph T[&#34;TSDF&#34;]&#xA;    T1[&#34;ボクセル&#34;] --&gt; T2[&#34;表面までの符号付き距離&#34;]&#xA;    T2 --&gt; T3[&#34;切り詰め・重み付き融合&#34;]&#xA;    T3 --&gt; T4[&#34;表面再構成・メッシュ生成&#34;]&#xA;  end&#xA;  subgraph E[&#34;ESDF&#34;]&#xA;    E1[&#34;空間上の位置&#34;] --&gt; E2[&#34;障害物または表面までの距離&#34;]&#xA;    E2 --&gt; E3[&#34;距離勾配・クリアランス&#34;]&#xA;    E3 --&gt; E4[&#34;距離制約・軌道最適化&#34;]&#xA;  end&#xA;  O -.-&gt; N[&#34;未知領域の扱いは安全判定で確認&#34;]&#xA;  T -.-&gt; N&#xA;  E -.-&gt; N2[&#34;符号規約と未知領域の定義は実装ごとに確認&#34;]&lt;/pre&gt;&lt;figcaption&gt;占有表現、TSDF、ESDFは保持する情報と得意な問い合わせが異なります。ESDFの符号規約や未知領域の扱いは実装ごとに確認が必要です。&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;occupied/free/unknown、占有確率&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;OctoMap&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;TSDF&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;ESDF&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;放射輝度・密度、または連続SDF&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;一つの表現ですべてを賄う必要はありません。深度カメラやLiDARから点群を生成し、点群を占有ボクセルまたはTSDFへ融合します。計画時にはTSDFからESDFを構築し、距離制約や勾配を局所計画へ渡します。認識系では元の点群を登録やセグメンテーションに使い、必要に応じてニューラル特徴やニューラルSDFを並行利用できます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットの能動視覚設計：認識精度と行動コストから次の視点を選ぶ方法</title>
      <link>https://physicalaihub.net/posts/robot-active-vision-next-best-view/</link>
      <pubDate>Mon, 21 Sep 2026 13:40:55 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-active-vision-next-best-view/</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;**Next-Best-View（NBV）**は、複数の候補視点から、次に観測する場所を選ぶ計画問題です。情報価値には、エントロピー減少、相互情報量、未知ボクセル数、推定共分散の減少などを使えます。ただし、最適な指標は認識、位置推定、再構成、把持などの下流タスクによって変わります。&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;code&gt;score(a) = E[ΔJ | a] - λC(a)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;a&lt;/code&gt; は候補視点またはそこへ移動する行動、&lt;code&gt;E[ΔJ | a]&lt;/code&gt; は観測による期待タスク効用の増分、&lt;code&gt;C(a)&lt;/code&gt; は行動コスト、&lt;code&gt;λ&lt;/code&gt; はコストの重みです。&lt;code&gt;J&lt;/code&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;  B[&#34;現在の信念状態\n対象姿勢・地図・自己位置・分類結果&#34;] --&gt; G[&#34;候補視点を生成&#34;]&#xA;  T[&#34;タスク目標&#34;] --&gt; G&#xA;  G --&gt; P[&#34;観測予測\n可視領域・観測品質・期待結果&#34;]&#xA;  P --&gt; U[&#34;期待タスク効用を評価&#34;]&#xA;  P --&gt; C[&#34;行動コストを評価\n移動時間・距離・エネルギー・安全性&#34;]&#xA;  C --&gt; F[&#34;到達可能性・衝突を確認&#34;]&#xA;  U --&gt; S[&#34;スコア計算または制約判定&#34;]&#xA;  F --&gt; S&#xA;  S --&gt; V[&#34;次に実行する視点を選択&#34;]&#xA;  V --&gt; A[&#34;ロボットが移動・撮像&#34;]&#xA;  A --&gt; O[&#34;画像・深度情報を取得&#34;]&#xA;  O --&gt; R[&#34;信念状態と地図を更新&#34;]&#xA;  R --&gt; G&lt;/pre&gt;&lt;figcaption&gt;能動視覚では、視点を一度決めて固定するのではなく、観測後の信念状態と地図の更新を受けて次の視点を再計算します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;観測後は画像や深度情報から信念状態と地図を更新し、次の候補視点を再計算します。遮蔽、自己位置、対象姿勢、未知領域の推定は観測によって変わるため、最初の計画を最後まで固定するより、閉ループで再計画する方が未知環境や予測誤差を扱いやすくなります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット推論をエッジとクラウドに分担させる設計判断</title>
      <link>https://physicalaihub.net/posts/robot-inference-edge-cloud-boundary/</link>
      <pubDate>Sun, 20 Sep 2026 23:22:26 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-inference-edge-cloud-boundary/</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;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;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;オンデバイスに配置&#34;]&#xA;  B --&gt;|&#34;いいえ&#34;| D{&#34;許容遅延・ジッター・有効期限が厳しいか&#34;}&#xA;  D --&gt;|&#34;はい&#34;| E[&#34;オンデバイスまたは近接エッジに配置&#34;]&#xA;  D --&gt;|&#34;いいえ&#34;| F[&#34;クラウド配置を検討&#34;]&#xA;  F --&gt; G[&#34;タイムアウトを定義&#34;]&#xA;  G --&gt; H[&#34;期限切れの結果を破棄&#34;]&#xA;  H --&gt; I[&#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;オンデバイス&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;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>ロボット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-grasp-planning-uncertainty-aware-execution/</link>
      <pubDate>Sun, 23 Aug 2026 01:51:41 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-grasp-planning-uncertainty-aware-execution/</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;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;また、不確実性には少なくとも二つの側面があります。観測ノイズや接触ばらつきのように、データ自体に固有の aleatoric uncertainty と、データ不足やモデルの知識不足に由来する epistemic uncertainty です。前者は同じ条件でも結果が揺れる要因、後者は未知の対象や条件に出会ったときに予測が不安定になる要因と考えられます。対応策が異なるため、合計値だけでなく内訳を保持する設計が有用です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;belief-として状態を保持する&#34;&gt;belief として状態を保持する&lt;/h2&gt;&#xA;&lt;p&gt;部分的にしか観測できない物体姿勢、形状、接触状態、摩擦などを、単一の推定値だけで表すと、計画は誤った前提に固定されます。そこで、状態についての信念、すなわち belief として候補や確率分布を保持し、行動と観測によって更新します。把持計画と観測計画を同じ枠組みで扱えば、把持を急ぐべきか、別の視点から見直すべきかを比較できます。&lt;/p&gt;&#xA;&lt;p&gt;ただし、完全な belief-space 計画は計算量やモデル化の負担が大きくなります。実機では、候補生成、校正、実行ゲート、監視、検証、再計画、中止を状態機械として分離し、必要な範囲で近似する構成が扱いやすいでしょう。&lt;/p&gt;&#xA;&lt;h2 id=&#34;確率校正と分布ずれの確認&#34;&gt;確率校正と分布ずれの確認&lt;/h2&gt;&#xA;&lt;p&gt;意思決定に確率を使うなら、検証用データで校正します。予測確率をいくつかの信頼度ビンに分け、各ビンの平均予測値と実際の成功率を比較する reliability diagram を確認します。ECE や Brier score も、確率の整合性を評価する指標になります。分類精度が高くても、予測確率が実際の成功率と一致するとは限らないためです。&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 TD&#xA;  A[&#34;観測・状態推定&#34;] --&gt; B[&#34;把持候補を生成&#34;]&#xA;  B --&gt; C[&#34;成功確率を校正し、不確実性を分離&#34;]&#xA;  C --&gt; D[&#34;期待効用と安全制約を評価&#34;]&#xA;  D --&gt; E{&#34;安全制約を満たすか&#34;}&#xA;  E -- &#34;いいえ&#34; --&gt; X[&#34;中止・退避&#34;]&#xA;  E -- &#34;はい&#34; --&gt; F{&#34;追加観測で判断が改善する見込みがあるか&#34;}&#xA;  F -- &#34;はい&#34; --&gt; G[&#34;再観測&#34;]&#xA;  G --&gt; A&#xA;  F -- &#34;いいえ&#34; --&gt; H{&#34;実行の期待効用が許容範囲か&#34;}&#xA;  H -- &#34;いいえ&#34; --&gt; X&#xA;  H -- &#34;はい&#34; --&gt; I[&#34;把持を実行&#34;]&#xA;  I --&gt; J[&#34;実行中の観測と状態監視&#34;]&#xA;  J --&gt; K[&#34;把持状態を検証&#34;]&#xA;  K --&gt; L{&#34;検証に成功したか&#34;}&#xA;  L -- &#34;はい&#34; --&gt; M[&#34;完了&#34;]&#xA;  L -- &#34;いいえ&#34; --&gt; N{&#34;別候補や別経路に価値があるか&#34;}&#xA;  N -- &#34;はい&#34; --&gt; O[&#34;再計画&#34;]&#xA;  O --&gt; A&#xA;  N -- &#34;いいえ&#34; --&gt; X&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-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>ロボット自己位置推定のセンサーフュージョン設計：カメラ・LiDAR・IMUの役割分担</title>
      <link>https://physicalaihub.net/posts/robot-localization-camera-lidar-imu-fusion/</link>
      <pubDate>Thu, 13 Aug 2026 01:47:13 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-localization-camera-lidar-imu-fusion/</guid>
      <description>&lt;p&gt;センサーを増やすほど自己位置推定が安定するのか、環境条件から考え直せる点がこのテーマの面白さです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;導入&#34;&gt;導入&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの自己位置推定で、カメラ・LiDAR・IMUを常にすべて使えばよいとは限りません。選択の基本は、IMUを短時間の運動伝播に使い、カメラは視覚特徴、LiDARは距離と幾何形状の拘束に使うことです。明るく特徴の多い環境ではカメラ+IMU、暗所や照明変動下で幾何が豊富な環境ではLiDAR+IMUが有力です。視覚と幾何のどちらか一方が失敗しやすく、冗長性も必要なら3センサー構成を検討します。&lt;/p&gt;&#xA;&lt;p&gt;ただし、センサー数の多さだけで精度が決まるわけではありません。時刻同期、外部パラメータ、座標系、IMUバイアスを整合でき、追加される計算量と実装負荷を許容できることが前提です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ組み合わせの判断が必要か&#34;&gt;なぜ組み合わせの判断が必要か&lt;/h2&gt;&#xA;&lt;p&gt;自己位置推定は、各センサーの観測を同じ状態推定問題へ取り込む処理です。センサーには得意な時間スケールと失敗条件があります。IMUは高レートですが、バイアスやノイズを積分するため、単独では時間とともにドリフトします。カメラは再観測による相対的な拘束を与えられますが、照明やテクスチャに左右されます。LiDARは照明そのものではなく形状を観測できますが、幾何的に特徴の少ない場所や点群が疎になる条件では位置合わせが退化します。&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;imu高レートの短期伝播&#34;&gt;IMU：高レートの短期伝播&lt;/h3&gt;&#xA;&lt;p&gt;IMUは角速度と比力を取得し、姿勢・速度・位置の短時間の伝播を支えます。カメラやLiDARの観測間をつなぎ、高速運動時にも状態を更新できる点が役割です。一方、慣性積分だけでは誤差が蓄積するため、カメラやLiDARからの拘束でバイアスと状態を補正します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;カメラ特徴と外観による相対拘束&#34;&gt;カメラ：特徴と外観による相対拘束&lt;/h3&gt;&#xA;&lt;p&gt;カメラは画像特徴の追跡と、外観情報の再観測を利用します。十分な照明、視覚テクスチャ、適度なモーションがある環境では、IMUと組み合わせたVisual-Inertial Odometry（VIO）が機能します。画像特徴を一時的に追跡できない場合でも、IMUが短時間の運動拘束を提供しますが、視覚観測が長く失われれば慣性ドリフトを抑えにくくなります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;lidar距離と幾何による拘束&#34;&gt;LiDAR：距離と幾何による拘束&lt;/h3&gt;&#xA;&lt;p&gt;LiDARは点群の距離・幾何形状を使い、スキャン間またはスキャンと地図の位置合わせを行います。暗所や照明変動の影響を受けにくい環境では、IMUと組み合わせたLiDAR-Inertial Odometry（LIO）が候補になります。IMUは短時間の運動推定だけでなく、点群のモーションデスクューにも利用できます。ただし、広く平坦な場所など幾何的な手掛かりが少ない環境では、LiDARの拘束が弱くなる可能性があります。&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;IMUによる短時間伝播に、カメラの視覚拘束とLiDARの幾何拘束を組み合わせる概念図。実際の性能や処理順序は実装に依存します。&#34;&gt;flowchart LR&#xA;  I[&#34;IMU\n角速度・比力&#34;] --&gt; P[&#34;高レートの短時間伝播\n姿勢・速度・位置&#34;]&#xA;  C[&#34;カメラ\n画像特徴・再観測&#34;] --&gt; V[&#34;視覚拘束&#34;]&#xA;  L[&#34;LiDAR\n距離・点群・幾何形状&#34;] --&gt; G[&#34;幾何拘束\nスキャン間または地図との位置合わせ&#34;]&#xA;  I --&gt; D[&#34;点群のモーションデスクュー&#34;]&#xA;  D --&gt; G&#xA;  P --&gt; E[&#34;状態推定器&#34;]&#xA;  V --&gt; E&#xA;  G --&gt; E&#xA;  E --&gt; S[&#34;状態・IMUバイアスの補正&#34;]&#xA;  E -.-&gt; Q[&#34;品質指標の監視\n残差・イノベーションなど&#34;]&#xA;  E --&gt; M[&#34;推定状態&#34;]&#xA;  K[&#34;EKF系または因子グラフ・平滑化系&#34;] --&gt; E&lt;/pre&gt;&lt;figcaption&gt;IMUによる短時間伝播に、カメラの視覚拘束とLiDARの幾何拘束を組み合わせる概念図。実際の性能や処理順序は実装に依存します。&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;IMU単独&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;カメラ+IMU（VIO）&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;LiDAR+IMU（LIO）&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;カメラ+LiDAR+IMU&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;3センサー構成は、カメラとLiDARの観測が相互補完になるときに意味があります。たとえば照明条件が不安定でも形状が豊富ならLiDARが支え、幾何が一時的に弱くても視覚特徴が残っていればカメラが補います。ただし、3センサーの優位性をあらゆる条件で示す一般的な比較結果があるわけではなく、採用判断は環境、実装、計算資源に依存します。&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>ロボット視覚サーボ入門：画像ベース制御と位置ベース制御の選択</title>
      <link>https://physicalaihub.net/posts/robot-visual-servoing-image-position-based-control/</link>
      <pubDate>Fri, 24 Jul 2026 01:33:52 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-visual-servoing-image-position-based-control/</guid>
      <description>&lt;p&gt;画像上の誤差と実空間の誤差は、同じ「ずれ」でも制御設計上の意味が異なります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;視覚サーボの方式は、何を誤差として制御したいか、そして対象モデル・校正・深度情報をどの程度信頼できるかで選ぶ。画像上の特徴を目標へ合わせることが主目的で、対象の3Dモデルや絶対姿勢を十分に利用できない場合は、画像ベース視覚サーボ（IBVS）が候補になり得る。一方、対象との相対的な並進位置や回転姿勢を推定し、Cartesian空間の軌道や姿勢制約を設計したい場合は、位置ベース視覚サーボ（PBVS）が候補になる。&lt;/p&gt;&#xA;&lt;p&gt;ただし、これは一般的な性能順位ではない。深度推定、視野、初期条件、対象モデル、カメラ校正、遅延などによって結果は変わる。画像上の視認性と実空間の軌道精度を両立したい場合は、2.5D視覚サーボや、IBVSとPBVSを段階的・協調的に使うハイブリッド構成も検討対象になる。&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;ibvsとpbvs&#34;&gt;IBVSとPBVS&lt;/h2&gt;&#xA;&lt;p&gt;IBVSは、画像特徴量と目標画像特徴量の差を制御する方式である。画像上の点や輪郭などを特徴量として扱い、対象の完全な3D姿勢を明示的に復元せずに、画像上の誤差を直接小さくする。&lt;/p&gt;&#xA;&lt;p&gt;ただし、画像特徴の変化とカメラ運動の関係を表す相互作用行列には、対象までの深度、またはその近似値が必要になることが多い。したがってIBVSは、3D情報が一切不要な方式ではない。また、アイ・イン・ハンド構成では、画像特徴の変化をロボットの関節速度やエンドエフェクタ速度へ変換するため、カメラとロボット間の幾何関係が通常必要になる。完全な校正を避ける構成では、オンライン推定や適応的手法が必要になる場合があり、別途検討しなければならない。&lt;/p&gt;&#xA;&lt;p&gt;PBVSは、画像から対象物の3D姿勢を推定し、現在の状態と目標状態との差をCartesian空間で制御する方式である。並進位置は長さの単位で扱い、姿勢は回転行列、クォータニオン、軸角などで表現する。対象の幾何モデルまたは既知の3D情報、カメラの内部パラメータ、カメラとロボットの外部関係が重要になる。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組み&#34;&gt;内部の仕組み&lt;/h2&gt;&#xA;&lt;p&gt;IBVSでは、現在の画像特徴を &lt;code&gt;s&lt;/code&gt;、目標特徴を &lt;code&gt;s*&lt;/code&gt; とすると、制御器は概念的に &lt;code&gt;s - s*&lt;/code&gt; の誤差を使ってカメラまたはロボットの速度を決める。相互作用行列を介して画像特徴の変化と運動を結び付け、得られた運動をエンドエフェクタ速度や関節速度へ変換する。&lt;/p&gt;&#xA;&lt;p&gt;PBVSでは、画像特徴から対象の3D位置・姿勢を推定し、その誤差をCartesian制御器へ入力する。空間上の位置や回転姿勢を直接目標として扱える一方、推定値の誤差がそのまま制御へ影響する。対象モデル、カメラパラメータ、ハンドアイ変換の品質が前提になる。&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;IBVSは画像特徴の誤差、PBVSは推定した3D位置・姿勢の誤差をフィードバックする。どちらも画像からロボット運動への変換に必要な幾何情報や推定情報がある。&#34;&gt;flowchart LR&#xA;  subgraph IBVS[&#34;画像ベース視覚サーボ（IBVS）&#34;]&#xA;    I1[&#34;カメラ画像&#34;] --&gt; I2[&#34;画像特徴の抽出&#34;]&#xA;    I2 --&gt; I3[&#34;画像特徴の誤差 s - s*&#34;]&#xA;    I3 --&gt; I4[&#34;制御器・相互作用行列&#34;]&#xA;    I4 --&gt; I5[&#34;カメラまたはロボットの運動&#34;]&#xA;    I5 --&gt; I6[&#34;対象との相対運動&#34;]&#xA;    I6 --&gt; I1&#xA;    D1[&#34;深度または深度近似&#34;] --&gt; I4&#xA;    G1[&#34;カメラとロボットの幾何関係&#34;] --&gt; I4&#xA;  end&#xA;&#xA;  subgraph PBVS[&#34;位置ベース視覚サーボ（PBVS）&#34;]&#xA;    P1[&#34;カメラ画像&#34;] --&gt; P2[&#34;対象の3D位置・姿勢推定&#34;]&#xA;    P2 --&gt; P3[&#34;3D位置・姿勢の誤差&#34;]&#xA;    P3 --&gt; P4[&#34;Cartesian制御器&#34;]&#xA;    P4 --&gt; P5[&#34;エンドエフェクタまたはロボットの運動&#34;]&#xA;    P5 --&gt; P6[&#34;対象との相対運動&#34;]&#xA;    P6 --&gt; P1&#xA;    M1[&#34;対象モデル・既知の3D情報&#34;] --&gt; P2&#xA;    C1[&#34;カメラ内部パラメータ&#34;] --&gt; P2&#xA;    H1[&#34;ハンドアイ変換&#34;] --&gt; P4&#xA;  end&lt;/pre&gt;&lt;figcaption&gt;IBVSは画像特徴の誤差、PBVSは推定した3D位置・姿勢の誤差をフィードバックする。どちらも画像からロボット運動への変換に必要な幾何情報や推定情報がある。&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;IBVS&lt;/th&gt;&#xA;          &lt;th&gt;PBVS&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;3D位置・姿勢の誤差&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;3D情報、姿勢推定、カメラパラメータ&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;3Dモデルへの依存&lt;/td&gt;&#xA;          &lt;td&gt;完全なモデルに依存しにくい&lt;/td&gt;&#xA;          &lt;td&gt;対象モデルや既知の3D情報が重要&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;Cartesian空間の経路・姿勢&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;画像上の位置合わせや把持対象への接近では、対象の正確な3Dモデルがなくても画像特徴を目標へ近付けられるため、IBVSが候補になり得る。ただし、深度が不安定、特徴が遮蔽される、初期誤差が大きいといった条件では、その利点が小さくなる可能性がある。ピックアンドプレースでも、制御目標が「画像上で所定の位置へ合わせること」なのか、把持後の空間姿勢まで厳密に保証することなのかを分けて評価する必要がある。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Physical AIの評価設計：タスク成功率だけでなく安全性と再現性を測る方法</title>
      <link>https://physicalaihub.net/posts/physical-ai-evaluation-task-safety-reproducibility/</link>
      <pubDate>Sat, 04 Jul 2026 01:25:33 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/physical-ai-evaluation-task-safety-reproducibility/</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、特にロボットAIは、画像認識や単回のタスク成功率だけでは実運用への適性を判断できません。安全に動作したか、同じ条件で安定して再現できるか、環境やロボット個体が変わっても性能を保てるかを分けて測る必要があります。&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;RLBenchやLIBEROのようなベンチマークは、タスク集合やタスク変動を定義し、タスク成功を主要指標にしています。手法比較には有用ですが、成功条件、試行回数、タスクごとの重み、評価環境、介入の扱いが違えば、異なるベンチマークの数値は単純比較できません。&lt;/p&gt;&#xA;&lt;p&gt;成功していても、毎回人間の介入が必要、所要時間が長い、危険な接触を伴う、といった問題は残ります。NIST AI RMF 1.0も、妥当性・信頼性、安全性、セキュリティ・レジリエンス、説明可能性・透明性などを区別しています。ロボット評価でも、異なる性質を一つの数値に押し込めない設計が適しています。&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;code&gt;成功率 = 主成功条件を満たした試行数 ÷ 予定した全試行数&lt;/code&gt;&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;h3 id=&#34;安全性&#34;&gt;安全性&lt;/h3&gt;&#xA;&lt;p&gt;安全イベントは成功・失敗とは別のログにします。接触力を測れる構成では接触力も記録し、衝突、予期しない接触、保護停止、非常停止、安全制約違反、介入、ニアミスを分類します。イベントごとに重大度、発生試行、稼働時間、原因、復旧の有無を付与します。&lt;/p&gt;&#xA;&lt;p&gt;ISO/TS 15066:2016は、協働ロボットシステムと協働運転の安全要求・指針を扱い、パワー・フォース・リミッティングも対象にしています。ただし、これだけで自律移動ロボット、屋外、家庭環境、タスク固有のリスクをすべて評価できるわけではありません。&lt;/p&gt;&#xA;&lt;h3 id=&#34;反復性と再現性&#34;&gt;反復性と再現性&lt;/h3&gt;&#xA;&lt;p&gt;同じモデル、ロボット、環境、手順で複数回試す評価は、同一条件での反復性を見ます。乱数種、学習チェックポイント、初期姿勢、物体配置、照明・背景、操作者、ロボット個体、ソフトウェアやモデルのバージョンを変える試験は、条件変更への再現性を見ます。&lt;/p&gt;&#xA;&lt;p&gt;ISO 5725-1およびISO 5725-2は、同一条件での反復性と、操作者・装置・場所・時間などを変えた再現性を区別しています。一方、ISO 9283:1998は、産業用マニピュレータの位置姿勢や軌道の精度・反復性、安定時間、オーバーシュートなどを扱います。機構性能の反復性と、学習ポリシーの実験再現性は別の概念です。&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;  C --&gt; D[&#34;主成功条件を満たしたか判定&#34;]&#xA;  D --&gt;|&#34;達成&#34;| E[&#34;成功として集計&#34;]&#xA;  D --&gt;|&#34;一部達成&#34;| F[&#34;部分達成として別集計&#34;]&#xA;  D --&gt;|&#34;未達&#34;| G[&#34;失敗分類と停止理由を記録&#34;]&#xA;  C --&gt; H[&#34;安全イベントを独立ログに記録&#34;]&#xA;  H --&gt; H1[&#34;接触・衝突・保護停止・非常停止・制約違反・介入・ニアミス&#34;]&#xA;  H1 --&gt; H2[&#34;重大度・発生試行・稼働時間・原因・復旧の有無を付与&#34;]&#xA;  C --&gt; I[&#34;所要時間・介入回数・リカバリ回数を記録&#34;]&#xA;  E --&gt; J[&#34;同一条件で反復性を評価&#34;]&#xA;  F --&gt; J&#xA;  G --&gt; J&#xA;  J --&gt; K[&#34;乱数種・初期姿勢・物体配置・照明・操作者・個体・バージョンを段階的に変更&#34;]&#xA;  K --&gt; L[&#34;条件変更後の再現性を評価&#34;]&#xA;  J --&gt; M[&#34;平均・ばらつきまたは信頼区間を報告&#34;]&#xA;  L --&gt; M&#xA;  H2 --&gt; M&#xA;  I --&gt; M&#xA;  M --&gt; N[&#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;/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-contact-control-impedance-admittance-selection/</link>
      <pubDate>Mon, 29 Jun 2026 09:02:33 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-contact-control-impedance-admittance-selection/</guid>
      <description>&lt;p&gt;接触作業の制御方式は、名称よりも信号の流れを見ると選びやすくなります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;接触を伴うロボット作業でインピーダンス制御とアドミッタンス制御を選ぶときは、方式名の優劣ではなく、ロボットの下位制御器に何を入力できるか、力・トルクをどのように取得できるかを最初に確認する。トルクまたは電流指令を直接扱え、関節トルクを高い帯域で計測・推定できるなら、インピーダンス制御が自然な候補になる。一方、位置指令を主に扱うロボットに外部6軸力覚センサを組み合わせるなら、測定した力を位置・速度指令へ変換するアドミッタンス制御が実装しやすい。&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;2つの制御方式の前提&#34;&gt;2つの制御方式の前提&lt;/h2&gt;&#xA;&lt;p&gt;インピーダンス制御は、手先の運動と環境との接触力・トルクの間に、目標質量、ダンピング、剛性で定めた動的関係を実現する制御である。概念的には、目標運動と実際の運動の差から、仮想的なばね・ダンパ・質量に相当する力またはトルクを計算し、それをロボットのトルク系へ渡す。&lt;/p&gt;&#xA;&lt;p&gt;アドミッタンス制御は逆向きの構成である。測定または推定した外力・外トルクを入力とし、仮想質量、ダンピング、剛性のモデルを通じて、位置、速度、加速度の指令を生成する。その指令を下位の位置・速度制御器へ渡し、ロボットを動かす。外部6軸力覚センサを手先に配置する構成は、この方式と組み合わせやすい。&lt;/p&gt;&#xA;&lt;p&gt;この違いは、数式上の分類にとどまらない。実務では「力・トルクを出力しやすいか」「運動指令を出力しやすいか」というロボットAPIや内側制御器との適合性が、実装のしやすさを大きく左右する。&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 IMP[&#34;インピーダンス制御&#34;]&#xA;    I1[&#34;目標運動・状態誤差&#34;] --&gt; I2[&#34;仮想質量・ダンピング・剛性&#34;]&#xA;    I2 --&gt; I3[&#34;力・トルク指令&#34;]&#xA;    I3 --&gt; I4[&#34;トルク／電流系の下位制御器&#34;]&#xA;    I4 --&gt; R1[&#34;ロボット&#34;]&#xA;  end&#xA;&#xA;  subgraph ADM[&#34;アドミッタンス制御&#34;]&#xA;    A1[&#34;外力・外トルク&#34;] --&gt; A2[&#34;外部6軸力覚センサまたは外力推定&#34;]&#xA;    A2 --&gt; A3[&#34;仮想質量・ダンピング・剛性&#34;]&#xA;    A3 --&gt; A4[&#34;位置・速度・加速度指令&#34;]&#xA;    A4 --&gt; A5[&#34;位置・速度系の下位制御器&#34;]&#xA;    A5 --&gt; R2[&#34;ロボット&#34;]&#xA;  end&#xA;&#xA;  R1 --&gt; E[&#34;接触環境&#34;]&#xA;  R2 --&gt; E&#xA;  E -. &#34;接触力・運動のフィードバック&#34; .-&gt; I1&#xA;  E -. &#34;外力・外トルク&#34; .-&gt; A1&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;運動から力・トルクを生成&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;適合しやすい下位IF&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;外部6軸力覚、外力・外トルク推定、手先運動&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-world-model-predictive-control-boundary/</link>
      <pubDate>Wed, 24 Jun 2026 01:21:16 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-world-model-predictive-control-boundary/</guid>
      <description>&lt;p&gt;世界モデルを制御へ接続するとき、予測モデルと制御器を同じものとして扱ってよいのかが気になるテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットの世界モデルは、状態推定器や低レベル制御器を全面的に置き換えるものではなく、将来の状態・観測・報酬を予測して候補行動を比較する層として導入するのが現時点では妥当です。実装では、状態推定器が現在の状態または信念状態を高頻度に更新し、世界モデルがタスクレベルの将来を予測し、MPCや従来の制御器が制約付きの短時間実行を担当する階層構成が基本になります。&lt;/p&gt;&#xA;&lt;p&gt;世界モデルをMPCの予測モデルとして使う場合も、実センサーから得た推定状態で繰り返し再計画します。予測不確実性が高いときは、計画ホライズンを短くする、制約を保守的に設定する、下位の従来制御器へ切り替える、といった設計が必要です。&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;**MPC（モデル予測制御）**は、予測モデルを使って有限時間の最適化問題を繰り返し解き、最初の制御入力だけを実行して、新しい観測を得た後に再計画する方法です。制約を明示的に扱いやすく、短い時間スケールの実行に適しています。&lt;/p&gt;&#xA;&lt;h2 id=&#34;世界モデルは何を予測するのか&#34;&gt;世界モデルは何を予測するのか&lt;/h2&gt;&#xA;&lt;p&gt;画像などの高次元観測をそのまま長期予測するのではなく、観測を潜在状態へ圧縮し、その潜在空間で将来軌道を予測する構成が考えられます。各候補行動列について潜在軌道、報酬、場合によっては予測不確実性を計算し、行動を比較します。&lt;/p&gt;&#xA;&lt;p&gt;利用方法は大きく二つあります。一つは、世界モデルをオンライン計画器として使う方法です。PlaNetは画像から学習した潜在ダイナミクス上でオンライン計画を行い、PETSは確率的ニューラルネットワークのアンサンブル、軌道サンプリング、MPCを組み合わせています。後者では複数の予測を比較し、不確実性を考慮した行動選択を行います。&lt;/p&gt;&#xA;&lt;p&gt;もう一つは、世界モデル内の想像ロールアウトを方策や価値関数の学習に使う方法です。Dreamerは潜在世界モデルで将来を想像し、価値関数と方策を学習します。この場合、実行時に毎回長い軌道最適化を行うのではなく、計画計算の一部を学習済み方策へ移せます。したがって、世界モデルはMPCと同義ではありません。&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;世界モデルは、オンラインMPCなどで候補行動を比較する方式と、想像ロールアウトを方策・価値学習に利用する方式に分けて利用できます。&#34;&gt;flowchart LR&#xA;  A[&#34;観測履歴・推定状態&#34;] --&gt; B[&#34;世界モデル&#34;]&#xA;  B --&gt; C1[&#34;潜在状態の時間発展&#34;]&#xA;  B --&gt; C2[&#34;将来の報酬・不確実性&#34;]&#xA;&#xA;  subgraph P[&#34;オンライン計画に使う方式&#34;]&#xA;    D1[&#34;候補行動列&#34;] --&gt; D2[&#34;複数の軌道をロールアウト&#34;]&#xA;    D2 --&gt; D3[&#34;軌道・報酬・不確実性を比較&#34;]&#xA;    D3 --&gt; D4[&#34;最初の行動を実行&#34;]&#xA;  end&#xA;&#xA;  subgraph L[&#34;方策・価値学習に使う方式&#34;]&#xA;    E1[&#34;想像ロールアウト&#34;] --&gt; E2[&#34;価値関数・方策を学習&#34;]&#xA;    E2 --&gt; E3[&#34;学習済み方策を実行&#34;]&#xA;  end&#xA;&#xA;  C1 --&gt; D2&#xA;  C2 --&gt; D3&#xA;  C1 --&gt; E1&#xA;  D4 --&gt; F[&#34;新しい実観測&#34;]&#xA;  E3 --&gt; F&#xA;  F --&gt; A&lt;/pre&gt;&lt;figcaption&gt;世界モデルは、オンラインMPCなどで候補行動を比較する方式と、想像ロールアウトを方策・価値学習に利用する方式に分けて利用できます。&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;状態推定器＋従来制御器&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;世界モデル＋オンラインMPC&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;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;基本構成は、センサー観測を状態推定器へ入力し、得られた信念状態を世界モデルとMPCへ渡す流れです。世界モデルは複数の将来軌道、報酬、不確実性を予測します。MPCはその情報と明示的な制約を使い、短期の制御入力を選択します。実行後に得た新しい観測で状態推定を更新し、同じ処理を繰り返します。&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>リアルタイムなロボットAI基盤：推論・制御・通信の実行予算を設計する</title>
      <link>https://physicalaihub.net/posts/robot-ai-real-time-execution-budget-inference-control/</link>
      <pubDate>Sun, 14 Jun 2026 01:15:54 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-ai-real-time-execution-budget-inference-control/</guid>
      <description>&lt;p&gt;AI推論のベンチマーク値だけで、ロボット全体のリアルタイム性を判断できるのかが気になるテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットのAI処理に、制御30%、推論50%といった普遍的な固定比率はありません。先に制御ループの期限を予約し、センサー入力、アクチュエータ出力、ROS 2通信、スケジューリング干渉、安全余裕を見積もります。その残りをAIに割り当てるのではなく、AIにも独立した周期と期限を設定し、制御が推論の完了を同期的に待たない構成にするのが基本です。&lt;/p&gt;&#xA;&lt;p&gt;判断には平均推論時間ではなく、前処理、メモリ転送、GPU実行、同期、後処理、ROS 2メッセージ処理まで含むエンドツーエンドのp99.9、最大値、ジッター、期限超過率を使います。AIが期限に間に合わない場合は、直近の有効な結果を使うか、安全なフォールバックへ切り替えます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ実行予算が必要か&#34;&gt;なぜ実行予算が必要か&lt;/h2&gt;&#xA;&lt;p&gt;ロボットでは、平均的に速い処理より、まれな期限超過をどう扱うかが重要です。AIが通常は短時間で完了しても、CPUやGPU、メモリ帯域、ドライバ、ログ処理などの競合で一部の周期が遅れれば、制御の決定性は崩れます。実行予算は、周期や締切の中で各処理が使える時間を明示するための枠組みです。&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のExecutorは、待機集合から実行可能なサブスクリプション、タイマー、サービス、アクションなどを取り出してコールバックを実行します。SingleThreadedExecutorは単一スレッド、MultiThreadedExecutorは複数スレッドを使います。ただし、一般的なExecutorはハードな優先度順やFIFO実行を保証しません。&lt;/p&gt;&#xA;&lt;p&gt;Callback Groupには、同時実行を制限するMutually Exclusiveと、同時実行を許すReentrantがあります。これはコールバック間の関係を制御しますが、設定だけで締切やリアルタイム性が保証されるわけではありません。&lt;/p&gt;&#xA;&lt;p&gt;QoSにはReliability、History、Deadline、Lifespan、Livelinessなどがあります。通信の信頼性、キュー保持、更新期限、データ鮮度を設計できますが、QoSのDeadlineはデータ更新を監視する機能であり、Executorのコールバック開始時刻や処理完了時刻を保証するものではありません。&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;/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;AIの前処理、推論、後処理&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;AIを制御周期の「残り時間」に詰め込むと、推論遅延が制御期限を直接圧迫します。制御スレッドまたはリアルタイム向けExecutorはAIの結果を待たず、利用可能な結果の鮮度を確認して使う構成にします。AIの前処理やROS 2通信は別の実行資源に分け、GPU推論は可能な範囲で非同期に投入します。&lt;/p&gt;&#xA;&lt;p&gt;設計上の仮置きとして、100 Hz、10 ms周期なら、制御とI/Oを2 ms、ROS 2通信処理を1 ms、AIのエンドツーエンド処理を6 ms、安全・ジッター余裕を1 msと置けます。ただし、これは標準値でも推奨値でもありません。対象のCPU、GPU、モデル、I/O、ROS 2構成を測定して再設定する必要があります。&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;制御とI/O、通信、安全余裕を先に確保し、AIを独立した期限で実行する予算設計の仮置き例。2・1・6・1 msは推奨標準値ではなく、対象ハードウェアでの計測後に再設定する。&#34;&gt;flowchart LR&#xA;  subgraph CYCLE[&#34;100 Hz・10 ms周期の仮置き例&#34;]&#xA;    CTRL[&#34;制御・I/O\n2 ms&#34;] --&gt; COMM[&#34;ROS 2通信処理\n1 ms&#34;]&#xA;    COMM --&gt; AI[&#34;AIエンドツーエンド処理\n6 ms&#34;]&#xA;    AI --&gt; MARGIN[&#34;安全・ジッター余裕\n1 ms&#34;]&#xA;  end&#xA;  SENSOR[&#34;センサー入力&#34;] --&gt; CTRL&#xA;  AI --&gt;|&#34;期限内に取得&#34;| FRESH[&#34;鮮度を確認して\n制御で利用&#34;]&#xA;  AI --&gt;|&#34;期限超過&#34;| FALLBACK[&#34;直近の有効値\nまたは安全なフォールバック&#34;]&#xA;  FRESH --&gt; ACT[&#34;アクチュエータ出力&#34;]&#xA;  FALLBACK --&gt; ACT&#xA;  CTRL -.-&gt;|&#34;AIの完了を同期的に待たない&#34;| FRESH&lt;/pre&gt;&lt;figcaption&gt;制御とI/O、通信、安全余裕を先に確保し、AIを独立した期限で実行する予算設計の仮置き例。2・1・6・1 msは推奨標準値ではなく、対象ハードウェアでの計測後に再設定する。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;何を測るべきか&#34;&gt;何を測るべきか&lt;/h2&gt;&#xA;&lt;p&gt;AIの計測点は、センサー取得、ROS 2受信、前処理開始、ホストからデバイスへの転送、GPUカーネルの開始・終了、同期、デバイスからホストへの転送、後処理、制御入力、アクチュエータ出力です。GPU処理は非同期に実行できるため、推論APIの呼び出し時間だけでは実際の完了時間を表しません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2のノード合成を使い分ける：コンポーネント、ゼロコピー、障害分離の設計</title>
      <link>https://physicalaihub.net/posts/ros2-node-composition-zero-copy-isolation/</link>
      <pubDate>Wed, 20 May 2026 08:53:24 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-node-composition-zero-copy-isolation/</guid>
      <description>&lt;p&gt;ROS 2の「ゼロコピー」は、配置やミドルウェアの条件を分けて考える必要がある点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論高速化と障害分離は処理チェーンごとに境界を決める&#34;&gt;結論：高速化と障害分離は、処理チェーンごとに境界を決める&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2 Jazzyを前提にすると、カメラ画像やLiDAR点群のような大容量データを連続処理する場合、関連するComposable Nodeを同一プロセスのコンポーネントコンテナへ配置し、Intra-process Communicationを使う構成が有力です。通常のプロセス間DDS通信で必要になるシリアライズや外部トランスポート経由の処理を避けられるため、コピー回数、CPU負荷、通信経路上の待ち時間を減らす方向に働きます。&lt;/p&gt;&#xA;&lt;p&gt;一方、同一プロセス化は障害分離を弱めます。さらに、ゼロコピーは一律に保証されず、メッセージ型、QoS、RMW実装、基盤ミドルウェア、APIの対応状況に左右されます。したがって、通信量の大きい安定した処理チェーンは合成し、実験的なアルゴリズム、頻繁な再起動が必要なノード、障害時にも残したい機能は別プロセスまたは別コンテナへ分ける、という判断が現実的です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜノードの配置が重要なのか&#34;&gt;なぜノードの配置が重要なのか&lt;/h2&gt;&#xA;&lt;p&gt;画像や点群の処理では、センサー取得、前処理、認識、記録など複数のノードがデータを受け渡します。このとき、通信方式や実装に応じた経路・保持領域が関係し、処理段数や購読者数は遅延、CPU負荷、メモリ使用量に影響します。&lt;/p&gt;&#xA;&lt;p&gt;別プロセスに配置したノード間では、通常、ROS 2のDDS/RMW通信経路を通ります。プロセス境界を越えるためのシリアライズやバッファリングが発生しますが、プロセス単位で影響範囲を分けやすい利点があります。逆に、低遅延だけを優先して多数のノードを一つのプロセスへ集約すると、あるノードのクラッシュで同じプロセス内の複数ノードが停止し得ます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる用語&#34;&gt;前提となる用語&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Composable Node&lt;/strong&gt; は、ノードを共有ライブラリとしてビルドし、コンポーネントコンテナへ動的にロードする仕組みです。複数のノードを同一プロセスで動かせます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Intra-process Communication&lt;/strong&gt; は、同一プロセス内のPublisherとSubscription間で使える通信経路です。通常のプロセス間通信とは異なり、同一プロセス内でメッセージを受け渡し、シリアライズを避けられる場合があります。ただし、別プロセスの購読者へ配信する場合は、DDS経路が必要です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;loaned message&lt;/strong&gt; は、PublisherがRMWや基盤ミドルウェアからメモリを借りてメッセージを生成する方式です。同一プロセス内でメッセージの所有権を移動する方式とは異なります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組みとデータ経路&#34;&gt;内部の仕組みとデータ経路&lt;/h2&gt;&#xA;&lt;p&gt;同一コンテナ内のPublisherとSubscriptionでIntra-process Communicationを有効にすると、メッセージは通常のプロセス間DDS経路を通らずに処理されます。その結果、プロセス間転送用のシリアライズ、デシリアライズ、外部トランスポート経由の処理を避けられます。これは遅延とCPU負荷を下げる方向に働きますが、ROS 2全体で共通する削減値が決まっているわけではありません。&lt;/p&gt;&#xA;&lt;p&gt;また、同一プロセス内でもコピーや保持領域が完全になくなるとは限りません。Intra-process Managerの保持領域、QoSの履歴深度、キュー長、購読者数、メッセージの所有権方式によって、メッセージの保持やコピーの挙動が変わります。プロセス間転送用の中間コピーを削減できても、同一プロセス化が常にRSSを減らすとは限りません。&lt;/p&gt;&#xA;&lt;p&gt;「ゼロコピー」を判断する際は、次の経路を区別します。第一は、同一プロセス内でメッセージの所有権を移動する経路です。第二は、RMWや基盤ミドルウェアからメモリを借りるloaned messageです。第三は、共有メモリトランスポートを利用するプロセス間通信です。これらは実装上の条件が異なり、一般に同じ意味でゼロコピーと呼べるわけではありません。第四の通常のシリアライズによるプロセス間通信は、ゼロコピー方式ではなく比較対象です。&lt;/p&gt;&#xA;&lt;p&gt;loaned messageは、RMW実装、基盤ミドルウェア、メッセージ型、Publisher APIが対応している場合に利用できます。条件を満たさなければ、通常のメッセージ確保やコピーへフォールバックします。共有メモリ転送も、実装・設定依存であり、ROS 2アプリケーション全体で自動的に有効になるものではありません。&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;同一プロセス化ではプロセス間転送を減らせる一方、クラッシュ時の影響範囲が広がり得ます。別プロセス化ではDDS/RMW経路が必要になりますが、障害境界を分けやすくなります。外部プロセスへの配信には、合成構成でもDDS経路が発生します。&#34;&gt;flowchart LR&#xA;  subgraph COMPOSED[&#34;同一プロセスのComposable Container&#34;]&#xA;    C[&#34;カメラ&#34;] --&gt;|&#34;Intra-process経路&#34;| P[&#34;画像前処理&#34;]&#xA;    P --&gt;|&#34;Intra-process経路&#34;| R[&#34;認識&#34;]&#xA;    P -.-&gt;|&#34;外部購読者へはDDS経路&#34;| E[&#34;記録・監視ノード&#34;]&#xA;    C:::inside&#xA;    P:::inside&#xA;    R:::inside&#xA;  end&#xA;&#xA;  subgraph SEPARATED[&#34;別プロセス構成&#34;]&#xA;    C2[&#34;カメラプロセス&#34;] --&gt;|&#34;DDS/RMW&#34;| P2[&#34;前処理プロセス&#34;]&#xA;    P2 --&gt;|&#34;DDS/RMW&#34;| R2[&#34;認識プロセス&#34;]&#xA;    R2 --&gt;|&#34;DDS/RMW&#34;| E2[&#34;記録・監視プロセス&#34;]&#xA;    C2:::process&#xA;    P2:::process&#xA;    R2:::process&#xA;    E2:::process&#xA;  end&#xA;&#xA;  X[&#34;プロセス障害&#34;] -.-&gt;|&#34;同一アドレス空間のノードへ波及し得る&#34;| COMPOSED&#xA;  Y[&#34;プロセス障害&#34;] -.-&gt;|&#34;プロセス単位で影響範囲を分けやすい&#34;| SEPARATED&#xA;&#xA;  classDef inside fill:#e8f3ff,stroke:#3777b8,stroke-width:1px&#xA;  classDef process fill:#f5f5f5,stroke:#666,stroke-width:1px&#xA;  style COMPOSED fill:#f2f8ff,stroke:#3777b8,stroke-width:2px&#xA;  style SEPARATED fill:#fafafa,stroke:#666,stroke-width:2px&lt;/pre&gt;&lt;figcaption&gt;同一プロセス化ではプロセス間転送を減らせる一方、クラッシュ時の影響範囲が広がり得ます。別プロセス化ではDDS/RMW経路が必要になりますが、障害境界を分けやすくなります。外部プロセスへの配信には、合成構成でもDDS経路が発生します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;技術構成図&#34;&gt;graph LR&#xA;  subgraph COMPOSED[同一プロセス：Composable Container]&#xA;    C[カメラ] --&gt; P[前処理]&#xA;    P --&gt; R[認識]&#xA;  end&#xA;  E[記録・監視ノード\n外部プロセス]&#xA;  R --&gt;|DDS/RMW\nプロセス間経路| E&#xA;  P -.-&gt;|Intra-process| R&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;図では、カメラ、前処理、認識を同一プロセスへ合成し、外部の記録・監視ノードEをプロセス境界の外に置いています。PからEへ出る経路は、同一プロセス内の受け渡しではなく、DDS/RMWなどを経由するプロセス間通信です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットのセンサー異常処理設計：検出から安全な縮退運転まで</title>
      <link>https://physicalaihub.net/posts/robot-sensor-fault-detection-degraded-operation/</link>
      <pubDate>Fri, 15 May 2026 01:02:32 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-sensor-fault-detection-degraded-operation/</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;ROSの診断メッセージ仕様であるREP-107は、診断状態をOK、WARN、ERROR、STALEに分類します。ただし、各状態で停止するか、速度を制限するか、継続するかまでは規定していません。診断状態と行動ポリシーは、システム側で対応付けます。&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;メッセージが期待周期で届くか、通信相手が生存しているかを確認します。ROS 2のDeadline QoSは、連続するメッセージ間の許容最大時間を定義し、期限超過をイベントとして検出できます。Liveliness QoSは、パブリッシャーなど通信相手の生存性を監視します。&lt;/p&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;推定状態と観測値の差を調べます。robot_localizationの資料では、マハラノビス距離による拒否しきい値を設定し、予測状態から大きく外れたpose、twist、accelerationの測定値を拒否できます。通信が正常でも、推定と整合しない観測を取り込まないための方法です。&lt;/p&gt;&#xA;&lt;h3 id=&#34;整合性安全監視層&#34;&gt;整合性・安全監視層&lt;/h3&gt;&#xA;&lt;p&gt;冗長センサーがあれば、複数入力の整合性を比較できます。PX4には、センサーの状態や整合性を監視し、投票で使用センサーを選び、不健全なセンサーを投票から除外し、必要に応じてフェイルセーフへ移行する実装があります。&lt;/p&gt;&#xA;&lt;p&gt;Nav2 Collision Monitorには、入力が一定時間届かない場合にソースをstaleとして扱い、速度指令の制限や停止へ移行させる実装があります。いずれも特定のソフトウェア構成に依存する実装例であり、すべてのロボットへそのまま一般化できるわけではありません。&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;通信・データ取得層\n到着周期・生存性・タイムアウト&#34;]&#xA;  B --&gt; C[&#34;センサー値の妥当性層\n型・範囲・更新状態&#34;]&#xA;  C --&gt; D[&#34;状態推定層\n予測状態との差・外れ値拒否&#34;]&#xA;  D --&gt; E[&#34;センサー間整合性監視層\n冗長入力・推定結果の比較&#34;]&#xA;  E --&gt; F[&#34;行動・安全監視層\n安全機能の可用性を判定&#34;]&#xA;&#xA;  B -. &#34;欠損・遅延・配信停止&#34; .-&gt; G[&#34;STALEとして診断&#34;]&#xA;  C -. &#34;範囲外&#34; .-&gt; H[&#34;異常値を上位へ渡さない&#34;]&#xA;  D -. &#34;推定と大きく乖離&#34; .-&gt; I[&#34;測定値を推定更新から除外&#34;]&#xA;  E -. &#34;センサー間不一致&#34; .-&gt; J[&#34;故障入力を隔離・冗長系を検討&#34;]&#xA;&#xA;  F --&gt; K{ &#34;安全機能を維持できるか&#34; }&#xA;  K --&gt;|&#34;維持できる&#34;| L[&#34;速度・加速度・可動範囲・自律機能を制限&#34;]&#xA;  K --&gt;|&#34;代替観測を利用できる&#34;| M[&#34;冗長センサーへ切替&#34;]&#xA;  K --&gt;|&#34;必要な観測を確保できない&#34;| N[&#34;停止&#34;]&#xA;&#xA;  G --&gt; F&#xA;  H --&gt; F&#xA;  I --&gt; F&#xA;  J --&gt; F&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;STALE相当として鮮度を評価&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;表の状態名と行動の対応は、REP-107の一般規則ではありません。許容時間や安全上の意味を、対象システムごとに定義する必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボット経路計画の衝突判定設計：安全性・計算量・制御周期をどう両立するか</title>
      <link>https://physicalaihub.net/posts/robot-motion-planning-collision-checking-design/</link>
      <pubDate>Thu, 07 May 2026 08:46:36 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-motion-planning-collision-checking-design/</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;を分け、それぞれに適した精度と周期を設定します。&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;計画層は、将来の状態列として生成された経路全体を、環境モデルと照合する役割を持ちます。実行層は、実行直前や実行中に、現在のロボット状態と最新の環境で軌道を再確認します。監視層はセンサー入力を使い、危険が迫った場合の速度制限や停止を担います。&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;始点と終点だけを判定すると、その間でリンクが障害物を通り抜ける衝突を見逃す可能性があります。OMPLでは状態の有効性判定と状態間のモーション検証を分け、離散的な検証では補間状態を検査します。MoveItのOMPLインターフェースでは、&lt;code&gt;longest_valid_segment_fraction&lt;/code&gt; や &lt;code&gt;longest_valid_segment_length&lt;/code&gt; により、モーション中に許す最大セグメント長を調整できます。&lt;/p&gt;&#xA;&lt;p&gt;したがって、計画時の精度は「何Hzか」ではなく、状態空間における最大有効セグメント長として考える方が適切です。ロボット形状、障害物の薄さ、狭い隙間、姿勢変化による掃引領域を基準にします。長いリンクや大きな姿勢変化がある場合、同じ状態空間上の刻みでも空間内の移動量は大きくなり得ます。&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;状態A&#34;] --&gt; B[&#34;状態間の動き&#34;]&#xA;  B --&gt; C{&#34;セグメント長は&lt;br/&gt;形状・運動に対して適切か&#34;}&#xA;  C --&gt;|&#34;適切&#34;| D[&#34;補間状態を検査&#34;]&#xA;  C --&gt;|&#34;長すぎる&#34;| E[&#34;セグメントを細分化&#34;]&#xA;  E --&gt; D&#xA;  D --&gt; F{&#34;障害物・自己リンクとの&lt;br/&gt;干渉を検出&#34;}&#xA;  F --&gt;|&#34;衝突なし&#34;| G[&#34;次のセグメントへ&#34;]&#xA;  F --&gt;|&#34;衝突あり&#34;| H[&#34;経路を不 valid として扱う&#34;]&#xA;  G --&gt; I[&#34;状態B&#34;]&#xA;  A -.-&gt; J[&#34;端点だけの判定では&lt;br/&gt;途中の衝突を見逃し得る&#34;]&#xA;  I -.-&gt; J&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;code&gt;v_rel&lt;/code&gt;、判定周波数を &lt;code&gt;f_check&lt;/code&gt;、許容距離を &lt;code&gt;d_allow&lt;/code&gt; とすると、周期設計の概念的な目安は次のように表せます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;v_rel / f_check ≤ d_allow&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jetsonの推論性能を決める量子化・メモリ・電力の最適化手順</title>
      <link>https://physicalaihub.net/posts/jetson-on-device-inference-optimization/</link>
      <pubDate>Tue, 05 May 2026 00:55:40 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/jetson-on-device-inference-optimization/</guid>
      <description>&lt;p&gt;量子化や高クロック化は、設定を変えるだけで結果が決まるわけではありません。実機で何を測るかが、最初の分岐になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;Jetsonの推論最適化は、一般的な速度倍率を当てはめず、実機でモデル単体とエンドツーエンドの両方を計測して決めます。まず入力形状を固定し、FP16・バッチ1を基準にします。その後、INT8の精度とレイテンシ、バッチサイズ、メモリ転送と同期、CUDA Graph、電力モードを一項目ずつ比較します。&lt;/p&gt;&#xA;&lt;p&gt;INT8はメモリ使用量や推論時間を削減できる可能性がありますが、常にFP16より高速になるわけではありません。ロボット制御のように応答時間を優先するなら小さいバッチ、高スループット処理なら大きいバッチを候補にします。最終判断では、レイテンシ、スループット、精度、ピークメモリ、消費電力、温度、連続稼働時の安定性を同時に確認します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ実機計測が必要か&#34;&gt;なぜ実機計測が必要か&lt;/h2&gt;&#xA;&lt;p&gt;TensorRTの性能は、精度モードだけでなく、レイヤー実装、workspace、選択されたtactic、入出力形状、データ変換の組み合わせで決まります。対象Jetsonの世代、JetPack、TensorRT、CUDAの組み合わせによって、INT8演算子の対応やTensor Coreの利用可否も異なります。したがって、モデルの種類だけから最適設定を決めることはできません。&lt;/p&gt;&#xA;&lt;p&gt;JetsonではCPUとGPUが物理メモリを共有します。離散GPUのようなPCIe転送だけでなく、共有DRAMの帯域競合、キャッシュ、バッファの再配置、同期も性能に影響します。モデル単体のベンチマークが良くても、カメラ取得、前処理、後処理を含めると別の場所がボトルネックになる場合があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用語と仕組み&#34;&gt;用語と仕組み&lt;/h2&gt;&#xA;&lt;p&gt;FP32、FP16、INT8は、計算やテンソルを表す精度の選択肢です。低精度化によって、条件によっては演算量やテンソルのメモリ使用量を減らせます。INT8では、キャリブレーションでスケールを推定する方式と、モデルにQ/DQノードを含めて量子化を明示する方式があります。いずれも量子化後のモデル精度を評価しなければなりません。&lt;/p&gt;&#xA;&lt;p&gt;バッチサイズは一度に処理する入力数です。大きくするとGPU利用効率やスループットが向上する可能性がある一方、1リクエストあたりの待ち時間、キューイング遅延、メモリ使用量が増えます。リアルタイム制御ではバッチ1または小さいバッチ、まとめ処理では大きいバッチを比較します。&lt;/p&gt;&#xA;&lt;p&gt;入力形状が一定なら固定形状のエンジンを優先します。可変形状が必要な場合は、TensorRTのoptimization profileに最小・最適・最大形状を設定し、実際に使う形状ごとに測定します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;メモリ転送と実行制御&#34;&gt;メモリ転送と実行制御&lt;/h2&gt;&#xA;&lt;p&gt;基本的な流れは、入力取得、前処理、TensorRT推論、後処理、出力受け渡しです。前処理から後処理までのテンソルをGPU側に保持し、バッファを再利用できれば、毎フレームのCPU・GPU間コピーや不要な形式変換を減らせます。ただし、Jetsonではゼロコピーや共有バッファが常に最速とは限りません。アクセスパターンと同期コストを実測します。&lt;/p&gt;&#xA;&lt;p&gt;ホストとデバイス間の移動が必要なら、ページロックされたホストメモリ、非同期コピー、CUDA streamを候補にします。コピーと前処理、またはコピーと推論を重ね合わせられるかを確認します。Nsight Systemsでは、CPU処理、CUDA API、メモリ転送、カーネル、同期を同じタイムラインで確認できます。&lt;/p&gt;&#xA;&lt;p&gt;入力形状、バッファアドレス、実行経路が安定した反復推論では、TensorRTのCUDA Graphも候補です。実行シーケンスを再利用して、カーネル起動や実行制御のオーバーヘッドを削減できる可能性があります。動的形状や実行時に変化するアドレスがある場合は、適用条件を確認します。&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;実機で条件を固定し、モデル単体とエンドツーエンドを測定したうえで、量子化、バッチ、メモリ転送、CUDA Graph、電力設定を一項目ずつ評価する流れ。&#34;&gt;flowchart LR&#xA;  A[&#34;条件を固定\nJetson型番・JetPack・TensorRT・CUDA\n入力形状・評価データ・電力設定&#34;] --&gt; B[&#34;FP16・バッチ1を基準測定&#34;]&#xA;  B --&gt; C[&#34;モデル単体を測定&#34;]&#xA;  B --&gt; D[&#34;エンドツーエンドを測定&#34;]&#xA;  C --&gt; E[&#34;INT8を構築・精度検証&#34;]&#xA;  D --&gt; E&#xA;  E --&gt; F[&#34;バッチサイズを比較\nレイテンシ・スループット・キューイング遅延・ピークメモリ&#34;]&#xA;  F --&gt; G[&#34;転送と同期をプロファイリング\nCPU・CUDA API・コピー・カーネル・同期&#34;]&#xA;  G --&gt; H[&#34;バッファ再利用・非同期化・GPU側保持を評価&#34;]&#xA;  H --&gt; I[&#34;条件が合えばCUDA Graphを評価&#34;]&#xA;  I --&gt; J[&#34;電力モードとクロック設定を比較&#34;]&#xA;  J --&gt; K[&#34;総合判断\nレイテンシ・精度・メモリ・電力・温度・連続稼働時の安定性&#34;]&#xA;  K --&gt; L{&#34;目標要件を満たすか&#34;}&#xA;  L -- &#34;いいえ&#34; --&gt; F&#xA;  L -- &#34;はい&#34; --&gt; M[&#34;設定と測定結果を記録&#34;]&lt;/pre&gt;&lt;figcaption&gt;実機で条件を固定し、モデル単体とエンドツーエンドを測定したうえで、量子化、バッチ、メモリ転送、CUDA Graph、電力設定を一項目ずつ評価する流れ。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;再現性のある評価手順&#34;&gt;再現性のある評価手順&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;条件を固定する&lt;/strong&gt;：Jetson型番、JetPack、TensorRT、CUDA、入力形状、評価データ、電力設定を記録します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;基準を測る&lt;/strong&gt;：FP16・バッチ1を、trtexecなどでモデル単体として測定し、続いて前処理・推論・後処理を含むエンドツーエンドで測ります。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;INT8を検証する&lt;/strong&gt;：キャリブレーションまたはQ/DQ方式で構築し、精度、レイテンシ、変換処理、対応演算子を確認します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;バッチを比較する&lt;/strong&gt;：バッチ1、小さいバッチ、大きいバッチを、レイテンシ、スループット、キューイング遅延、ピークメモリで比較します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;転送と同期を調べる&lt;/strong&gt;：GPU側テンソル保持、非同期化、stream、共有バッファ、必要に応じてCUDA Graphを一つずつ比較します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;電力と連続稼働を測る&lt;/strong&gt;：nvpmodelの電力モードとjetson_clocksのクロック設定を比較し、温度やサーマルスロットリングも確認します。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&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;FP16&lt;/td&gt;&#xA;          &lt;td&gt;基準測定、低レイテンシ&lt;/td&gt;&#xA;          &lt;td&gt;比較の出発点にしやすい&lt;/td&gt;&#xA;          &lt;td&gt;INT8よりメモリや計算量が大きい場合がある&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;INT8&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;バッチ1・小バッチ&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;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;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;profileごとの性能測定が必要&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;GPU側保持・非同期化&lt;/td&gt;&#xA;          &lt;td&gt;前処理から後処理までGPUを使う構成&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;h2 id=&#34;制約と判断基準&#34;&gt;制約と判断基準&lt;/h2&gt;&#xA;&lt;p&gt;「INT8なら必ず高速」「バッチを増やせば必ず高性能」と決めつけてはいけません。対象演算子のINT8対応、Tensor Coreの利用可否、再量子化や入出力変換、TensorRT tacticによって結果は変わります。固定形状と動的形状の差、ゼロコピーの効果、CUDA Graphの改善幅も、モデルと実装によって異なります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>マルチロボットシステムの設計：タスク割り当てと経路調整を分離する方法</title>
      <link>https://physicalaihub.net/posts/multi-robot-task-allocation-traffic-management/</link>
      <pubDate>Thu, 30 Apr 2026 08:41:28 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/multi-robot-task-allocation-traffic-management/</guid>
      <description>&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;したがって、単一の巨大な最適化器にすべてを集約するより、機能を分離したうえで、移動コスト、ETA（到着予測時刻）、予約可否、混雑度を相互にフィードバックする疎結合または反復型の構成が現実的です。施設全体に関わる競合は交通管制層で扱い、ロボット近傍の急な障害物は各ロボットに任せます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ層分けが必要か&#34;&gt;なぜ層分けが必要か&lt;/h2&gt;&#xA;&lt;p&gt;タスク割り当ては、複数のロボットと複数のタスクを対応付ける問題です。ロボットの能力、作業コスト、協調条件などが制約になります。一方、Multi-Agent Path Finding（MAPF）では、複数エージェントに衝突しない経路を割り当てます。代表的な衝突には、同じ地点を同じ時刻に占有する頂点衝突と、同じ区間を逆方向に通過するエッジ衝突があります。&lt;/p&gt;&#xA;&lt;p&gt;この二つは独立ではありません。遠いロボットを割り当てれば移動コストが増え、混雑した通路を選べばETAが延びます。しかし、目的関数と制約が異なるため、責務を明示しないと、再割り当てのたびに経路予約を壊したり、局所回避に頼ってデッドロックを招いたりします。&lt;/p&gt;&#xA;&lt;h2 id=&#34;推奨する責務分担&#34;&gt;推奨する責務分担&lt;/h2&gt;&#xA;&lt;p&gt;上位のWMSやMESは、作業内容、優先度、期限、実行条件を定義します。ここでは通常、特定ロボットの細かな経路を直接決めません。&lt;/p&gt;&#xA;&lt;p&gt;フリート／タスク管理層は、候補ロボットの能力、現在位置、バッテリー、実行中タスクなどを使って担当を選びます。タスクのキューイング、ディスパッチ、実行状態の管理もこの層の責務です。&lt;/p&gt;&#xA;&lt;p&gt;交通管制層は、共有通路、交差点、エレベーター、狭い出入口など、施設全体の状態を参照しなければ扱えない競合を調整します。軌道、時間、依存関係、予約や交渉を管理し、衝突やデッドロックを避けるための計画を提供します。&lt;/p&gt;&#xA;&lt;p&gt;各ロボットのナビゲーション層は、交通管制から受け取った経路を実行し、センサーに基づいて局所的な障害物に対応します。ROS 2のNav2は、経路を生成するPlanner Serverと、経路追従の速度指令を生成するController Serverなどを分けており、上位の経路生成と近傍での実行を分離する設計例です。&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;タスク割り当て、交通管制、ロボットの局所制御を分離し、ETA、移動コスト、予約可否、状態を層間で交換する構成。&#34;&gt;flowchart TB&#xA;  WMS[&#34;WMS／MES\n作業内容・優先度・期限・実行条件&#34;] --&gt; FM[&#34;フリート／タスク管理層\n候補選定・キュー・ディスパッチ・実行状態&#34;]&#xA;  FM --&gt; FA[&#34;Fleet Adapter\nフリート接続&#34;]&#xA;  FA --&gt; NAV[&#34;各ロボットのナビゲーション層&#34;]&#xA;  NAV --&gt; PLAN[&#34;Planner\n経路生成&#34;]&#xA;  PLAN --&gt; CTRL[&#34;Controller\n経路追従・速度指令&#34;]&#xA;  SENSOR[&#34;センサー\n近傍障害物&#34;] --&gt; CTRL&#xA;  CTRL --&gt; ACT[&#34;ロボットの移動&#34;]&#xA;  FM --&gt;|&#34;予定経路・候補情報&#34;| TC[&#34;交通管制層\n共有空間・交差点・時間窓・予約&#34;]&#xA;  TC --&gt;|&#34;予約可否・ETA・混雑度&#34;| FM&#xA;  TC --&gt;|&#34;予約済み経路・時間条件&#34;| FA&#xA;  FA --&gt;|&#34;状態・位置・実行結果&#34;| FM&#xA;  classDef layer fill:#e8f1ff,stroke:#3569a8,stroke-width:1px;&#xA;  classDef robot fill:#eef8ee,stroke:#4d8b57,stroke-width:1px;&#xA;  class WMS,FM,TC layer;&#xA;  class FA,NAV,PLAN,CTRL,SENSOR,ACT robot;&lt;/pre&gt;&lt;figcaption&gt;タスク割り当て、交通管制、ロボットの局所制御を分離し、ETA、移動コスト、予約可否、状態を層間で交換する構成。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;タスク層と交通層の間には、能力、バッテリー、位置、ETA、現在の予約、再計画要求、キャンセル結果などを明示的なインターフェースとして定義するとよいでしょう。予約できない候補を割り当てない、遅延が大きくなれば別の候補を再評価する、といった反復が可能になります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>カメラとLiDARの外部キャリブレーション：点群と画像を正しく重ねる方法</title>
      <link>https://physicalaihub.net/posts/camera-lidar-extrinsic-calibration-validation/</link>
      <pubDate>Sat, 25 Apr 2026 00:51:08 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/camera-lidar-extrinsic-calibration-validation/</guid>
      <description>&lt;p&gt;画像と点群のずれは、外部変換だけでなく時刻やレンズ歪みにも現れます。切り分けを手順に組み込めるかが気になったテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;カメラとLiDARの融合で最初に固定すべきなのは、校正アルゴリズムよりも座標系、変換方向、単位、時刻基準です。そのうえで、カメラの内部パラメータとレンズ歪みを先に校正し、同期した観測からLiDAR座標系をカメラ座標系へ写す剛体変換を推定します。最後に、校正に使っていない姿勢・距離・視野・速度のデータへ点群を再投影し、誤差の大きさと分布を確認します。&lt;/p&gt;&#xA;&lt;p&gt;校正時の残差が小さいだけでは不十分です。画像上のずれが内部パラメータ、外部変換、時間オフセット、LiDARの走査遅延のどれに由来するかを条件別に切り分け、用途に応じた合格基準を定める必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ外部キャリブレーションが重要か&#34;&gt;なぜ外部キャリブレーションが重要か&lt;/h2&gt;&#xA;&lt;p&gt;カメラは画素、LiDARは3次元点として同じ対象を観測します。しかし、それぞれの座標原点や軸方向は異なります。外部パラメータに誤りがあると、LiDAR点を画像へ重ねたときに、物体の輪郭から一定方向へずれたり、距離によってずれが変化したりします。物体検出への深度付与、障害物の位置推定、画像と点群の対応付けでは、この空間的な不整合が直接結果に影響します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる用語&#34;&gt;前提となる用語&lt;/h2&gt;&#xA;&lt;p&gt;外部パラメータは、LiDAR座標系の点をカメラ座標系へ変換する回転と並進、つまり剛体変換として管理します。実装では、変換をどちら向きに適用するのか、フレーム名、長さの単位、時刻基準を明示します。フレーム間の関係は一貫したフレームツリーで管理し、同じ数値を別の座標軸定義へそのまま移植しないことが重要です。&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;1-センサーを剛体として固定する&#34;&gt;1. センサーを剛体として固定する&lt;/h3&gt;&#xA;&lt;p&gt;カメラとLiDARの取り付けを固定し、校正中に相対位置が変わらない状態を作ります。振動や取り付け部の変形が疑われる場合、得られた変換はその時点の状態に限られる可能性があります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-座標系と時刻を確認する&#34;&gt;2. 座標系と時刻を確認する&lt;/h3&gt;&#xA;&lt;p&gt;各センサーのフレーム名、軸方向、単位、変換の保存方向を記録します。さらに、ハードウェア同期の有無、LiDAR点ごとのタイムスタンプ、走査中の運動補償の有無を確認します。移動中に時間同期が不足すると、時間オフセットが空間的な外部パラメータ誤差として現れます。必要なら時間オフセットを別パラメータとして推定・検証します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-カメラ内部を校正する&#34;&gt;3. カメラ内部を校正する&lt;/h3&gt;&#xA;&lt;p&gt;平面パターンなどを複数の視点から撮影し、内部パラメータ、歪み、各撮影姿勢を推定します。単一画像だけに依存せず、複数視点の観測で結果を確認します。ここで得た投影モデルを固定してから、カメラとLiDARの外部変換へ進みます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;4-対応を集めて初期値を求める&#34;&gt;4. 対応を集めて初期値を求める&lt;/h3&gt;&#xA;&lt;p&gt;既知形状のターゲットを使う場合、LiDAR側の3次元特徴と画像側の2次元特徴、またはターゲット平面を対応付けます。十分な姿勢や視点の違いを含む観測から、まず外部変換の初期値を求めます。初期値の品質が低いと、後段の非線形最適化が適切な解へ到達しない場合があります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;5-se3上で最適化する&#34;&gt;5. SE(3)上で最適化する&lt;/h3&gt;&#xA;&lt;p&gt;初期変換を出発点に、3次元点をカメラ座標系へ変換し、内部パラメータと歪みモデルを適用して画像へ投影します。3D-2Dの再投影残差、点と平面の残差など、利用できる対応に応じた目的関数を最適化します。&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;外部キャリブレーションは、内部校正と座標・時刻の確認を分けたうえで、初期推定、SE(3)最適化、独立データによる検証の順に進めます。&#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; E[&#34;3D-2Dまたは特徴・平面の対応を作成&#34;]&#xA;  E --&gt; F[&#34;外部変換の初期値を推定&#34;]&#xA;  F --&gt; G[&#34;SE(3)上で再投影・幾何残差を最適化&#34;]&#xA;  G --&gt; H[&#34;未使用データで再投影・幾何・時間整合を検証&#34;]&#xA;  H --&gt; I[&#34;条件別の誤差を診断して合否基準を判断&#34;]&#xA;  I -. &#34;運動時のみ誤差が増える場合&#34; .-&gt; B&lt;/pre&gt;&lt;figcaption&gt;外部キャリブレーションは、内部校正と座標・時刻の確認を分けたうえで、初期推定、SE(3)最適化、独立データによる検証の順に進めます。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;ターゲット方式とターゲットレス方式&#34;&gt;ターゲット方式とターゲットレス方式&lt;/h2&gt;&#xA;&lt;p&gt;既知ターゲット方式は、対応する幾何が明確で、初期推定と残差の意味を説明しやすい方法です。一方、設置や撮影の準備が必要で、ターゲットの見え方や配置が観測条件を制限します。&lt;/p&gt;&#xA;&lt;p&gt;ターゲットを設置しない方式では、LiDAR点群の反射強度や投影情報と、画像の明るさ・外観との相互情報量を最大化する方法が提案されています。また、画像エッジなどの視覚特徴とレーザー点の幾何を使い、運用中に外部パラメータを調整する方式もあります。ただし、シーンのテクスチャ、反射率、天候、動的物体による安定性は個別データで確認する必要があります。&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;既知ターゲット&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;h2 id=&#34;融合結果の検証方法&#34;&gt;融合結果の検証方法&lt;/h2&gt;&#xA;&lt;p&gt;推定した変換でLiDAR点をカメラ座標系へ移し、深度が正の点だけを残します。その後、内部行列と歪みモデルで画像へ再投影し、次の項目を記録します。&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>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>ROS 2のQoS設計入門：センサー通信と制御通信の信頼性・遅延をどう両立するか</title>
      <link>https://physicalaihub.net/posts/ros2-qos-sensor-control-design/</link>
      <pubDate>Mon, 16 Mar 2026 00:29:08 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-qos-sensor-control-design/</guid>
      <description>&lt;p&gt;QoSは設定項目が多く、通信できない原因と遅延の原因が同じ場所に見えやすい点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2のQoSは、通信の種類ではなく「古いデータを待つべきか」「欠落を許せるか」「一定時間届かなければ停止すべきか」で決める。カメラ、LiDAR、IMUなどの高頻度センサーは、最新データを処理し続けることを優先し、まずは&lt;code&gt;SensorDataQoS&lt;/code&gt;（&lt;code&gt;KEEP_LAST&lt;/code&gt;、深度5、&lt;code&gt;BEST_EFFORT&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;）を候補にする。一方、&lt;code&gt;cmd_vel&lt;/code&gt;のような制御指令は、受信側との互換性を確認したうえで、浅いキュー、&lt;code&gt;RELIABLE&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;を出発点に検討する。ただし、再送による古い指令の到着を避けたい場合は、&lt;code&gt;BEST_EFFORT&lt;/code&gt;や短い&lt;code&gt;LIFESPAN&lt;/code&gt;の方が適することもある。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;RELIABLE&lt;/code&gt;を設定するだけでハードリアルタイム性や安全性が得られるわけではない。&lt;code&gt;DEADLINE&lt;/code&gt;、&lt;code&gt;LIFESPAN&lt;/code&gt;、受信タイムアウト、ウォッチドッグを、アプリケーションやモーター制御側の停止処理へ接続して初めて、通信断や古い指令に対する動作を設計できる。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜqosの使い分けが必要か&#34;&gt;なぜQoSの使い分けが必要か&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2のQoSは、パブリッシャーとサブスクライバーという各通信エンドポイントに設定される。メッセージ型やトピック名が同じでも、両者のQoSが互換でなければ通信は成立しない。反対に、通信が成立しても、キューに古いデータを蓄積したり、再送を待ったりする設定では、ロボットの処理に必要な鮮度を失う可能性がある。&lt;/p&gt;&#xA;&lt;p&gt;センサーと制御指令では、失われたデータの意味が異なる。高頻度センサーでは、処理が追いつかないときに過去のフレームを順番に処理するより、最新フレームへ追従したい場合が多い。制御指令では、確実な配送が必要な場面がある一方、停止後の古い指令を遅れて適用することも避けなければならない。したがって、信頼性と低遅延を単純な優劣で比較するのではなく、データの有効時間と欠落の影響を基準にする。&lt;/p&gt;&#xA;&lt;h2 id=&#34;qosポリシーの基本用語&#34;&gt;QoSポリシーの基本用語&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;HISTORY&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;保存方式。&lt;code&gt;KEEP_LAST&lt;/code&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;DEPTH&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;KEEP_LAST&lt;/code&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;RELIABILITY&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;配送保証の方式。&lt;code&gt;RELIABLE&lt;/code&gt;は再送を含む保証、&lt;code&gt;BEST_EFFORT&lt;/code&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;DURABILITY&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;DEADLINE&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;LIFESPAN&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;LIVELINESS&lt;/code&gt; / &lt;code&gt;LEASE_DURATION&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;VOLATILE&lt;/code&gt;は過去データを新規参加者へ引き渡す用途ではなく、現在流れているデータを扱う通信に向く。設定値は単独で意味を持つのではなく、送信周期、処理能力、ネットワーク条件と組み合わせて評価する。&lt;/p&gt;&#xA;&lt;h2 id=&#34;センサー通信の設計&#34;&gt;センサー通信の設計&lt;/h2&gt;&#xA;&lt;p&gt;Jazzyの&lt;code&gt;SensorDataQoS&lt;/code&gt;は、&lt;code&gt;KEEP_LAST&lt;/code&gt;、深度5、&lt;code&gt;BEST_EFFORT&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;を基本値とする事前定義プロファイルである。カメラやLiDARのようにデータ量と頻度が大きい通信では、多少の欠落よりも処理の停滞や古いデータの蓄積を避けることが優先される場合がある。そのため、浅いキューと&lt;code&gt;BEST_EFFORT&lt;/code&gt;を出発点にし、処理が常に新しい入力へ追従できるかを確認する。&lt;/p&gt;&#xA;&lt;p&gt;ただし、すべてのセンサーに同じ設定を適用してよいわけではない。欠落が許されないセンサー入力や安全判断に使う低頻度データでは、&lt;code&gt;RELIABLE&lt;/code&gt;を個別に検討する。&lt;code&gt;DEPTH&lt;/code&gt;を大きくすれば一時的な処理遅延を吸収できる可能性があるが、古いサンプルを処理する時間も増える。実機や対象ネットワークを確認せず、深度の最適値を決めることはできない。&lt;/p&gt;&#xA;&lt;h2 id=&#34;制御通信の設計&#34;&gt;制御通信の設計&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;cmd_vel&lt;/code&gt;には、ROS 2全体で強制された単一のQoS標準値はない。ドライバーやノードが選択したQoSに依存するため、トピック名だけから&lt;code&gt;RELIABLE&lt;/code&gt;や&lt;code&gt;BEST_EFFORT&lt;/code&gt;を推定してはいけない。&lt;/p&gt;&#xA;&lt;p&gt;初期案としては、&lt;code&gt;RELIABLE&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;、&lt;code&gt;KEEP_LAST&lt;/code&gt;の深度1が考えられる。これは制御指令を確実に届けることと、キューに多数の古い指令を残さないことを両立させる方向である。ただし、通信損失時の再送で古い指令が遅れて届くことを避けたいシステムでは、&lt;code&gt;BEST_EFFORT&lt;/code&gt;や短い&lt;code&gt;LIFESPAN&lt;/code&gt;も候補になる。最終判断は、受信側の要求QoS、ネットワーク損失、指令の有効時間、モーターコントローラーのタイムアウト仕様を確認して行う。&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互換性、指令の有効期限、停止監視を重視する設計の流れを示す。図中の制御QoSは初期候補であり、単一の標準解を示すものではない。&#34;&gt;flowchart LR&#xA;  S[&#34;カメラ・LiDAR・IMUなどのセンサー入力&#34;] --&gt; SQ[&#34;SensorDataQoSの初期候補\nKEEP_LAST・深度5\nBEST_EFFORT・VOLATILE&#34;]&#xA;  SQ --&gt; SP[&#34;処理ノード\n最新データへ追従&#34;]&#xA;  SP --&gt; SF[&#34;センサー処理&#34;]&#xA;&#xA;  C[&#34;cmd_velなどの制御指令&#34;] --&gt; CQ[&#34;制御QoSの初期候補\nRELIABLE・VOLATILE\nKEEP_LAST・深度1&#34;]&#xA;  CQ --&gt; CM[&#34;受信側の要求QoSと互換性を確認&#34;]&#xA;  CM --&gt;|&#34;互換&#34;| CT[&#34;期限管理\n短いLIFESPANやDEADLINEを検討&#34;]&#xA;  CT --&gt; WD[&#34;受信タイムアウト・ウォッチドッグ\n停止処理へ接続&#34;]&#xA;  WD --&gt; A[&#34;アクチュエーター側の停止動作&#34;]&#xA;  CM --&gt;|&#34;非互換&#34;| X[&#34;通信経路が成立しない\nQoSを確認・調整&#34;]&#xA;&#xA;  R[&#34;要件に応じた再評価\n欠落・遅延・古いデータの影響&#34;] -.-&gt; SQ&#xA;  R -.-&gt; CQ&#xA;  CQ -.-&gt;|&#34;古い指令の到着を避けたい場合&#34;| BE[&#34;BEST_EFFORTや短いLIFESPANも候補&#34;]&#xA;  BE -.-&gt; CT&lt;/pre&gt;&lt;figcaption&gt;センサー通信では最新データへの追従を、制御通信ではQoS互換性、指令の有効期限、停止監視を重視する設計の流れを示す。図中の制御QoSは初期候補であり、単一の標準解を示すものではない。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;図では、センサー経路を「最新データの継続処理」、制御経路を「指令の期限管理と停止監視」として分けると理解しやすい。QoS不一致の場合は、各種の遅延調整以前に通信経路そのものが成立しない。&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>
    <item>
      <title>ロボットセンサーの時刻同期設計：カメラ・LiDAR・IMUのデータを正しく重ねる方法</title>
      <link>https://physicalaihub.net/posts/robot-sensor-time-synchronization/</link>
      <pubDate>Fri, 06 Mar 2026 00:23:05 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-sensor-time-synchronization/</guid>
      <description>&lt;p&gt;センサー融合では、値の精度だけでなく「いつ取得した値か」の定義が結果を左右します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;カメラ・LiDAR・IMUの時刻同期では、近いタイムスタンプのメッセージを組み合わせるだけでは不十分です。まず、各センサーがどのクロックを使い、タイムスタンプが取得時刻、露光時刻、スキャン時刻、受信時刻のどれを表すのかを確認します。そのうえで、可能な範囲ではPTP、PPS、外部トリガーなどを使って共通の時間基準を構築し、残った固定オフセットやドリフトをログから推定します。&lt;/p&gt;&#xA;&lt;p&gt;補正では、センサー時刻を基準時刻へ変換し、IMUの状態補間、LiDARのデスキュー、カメラの露光時刻モデルを適用します。最後に、共通イベントの時刻差、運動信号の相関、推定残差、再投影誤差を確認します。ROS 2のApproximateTimeはメッセージの対応付けには使えますが、センサー内部の時計を直す機能ではありません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ時刻同期が問題になるのか&#34;&gt;なぜ時刻同期が問題になるのか&lt;/h2&gt;&#xA;&lt;p&gt;センサーフュージョンでは、同じ「時刻」のデータを重ねているつもりでも、実際には異なる時間基準、単位、エポックを参照していることがあります。センサーが生成した時刻をドライバがホスト受信時刻に置き換えている場合もあります。&lt;/p&gt;&#xA;&lt;p&gt;ずれは、主に四つに分けて考えます。一定に近い固定オフセット、クロック周波数の差によるドリフト、通信・ドライバの可変遅延、タイムスタンプが示す物理的な時刻の違いです。最後の問題は、数値に固定値を加えるだけでは解消できません。角速度をω、時刻誤差をΔtとすると、短時間近似では角度誤差は概ね|ω|×|Δt|に比例します。高速回転や急加速、動体追跡、点群の画像投影ほど同期ずれの影響が大きくなります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる時刻の意味&#34;&gt;前提となる時刻の意味&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2ではSystem Time、Steady Time、ROS Timeが区別されます。ROSの時刻とセンサーのハードウェア時刻が自動的に同一になるわけではありません。IMUメッセージのHeader stampは測定時刻として扱われますが、メッセージ定義だけでは、センサーのクロックやドライバが時刻を付与した位置までは保証されません。&lt;/p&gt;&#xA;&lt;p&gt;カメラでは、フレーム時刻が露光開始、露光中心、露光終了、転送完了のどれを示すかを確認します。ローリングシャッターでは行ごとに露光時刻が異なるため、フレーム全体を単一時刻の観測として扱えるとは限りません。&lt;/p&gt;&#xA;&lt;p&gt;LiDARの1スキャンも瞬間的な観測とは限りません。ビーム、列、パケットなどで取得時刻が異なる場合があるため、点ごとの時刻、またはセンサー固有のスキャン時刻モデルを使って運動補正します。時刻の提供粒度は機種、ファームウェア、データ形式、ドライバによって異なります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;同期の仕組みと検出方法&#34;&gt;同期の仕組みと検出方法&lt;/h2&gt;&#xA;&lt;p&gt;PTP（IEEE 1588）は、ネットワーク上のクロック間のオフセットと遅延を測定して同期する標準です。ハードウェアタイムスタンプを使える実装では、ソフトウェアだけで時刻を取得する場合より不確実性を抑えやすくなります。ただし、精度はネットワーク遅延の対称性、タイムスタンプ方式、プロファイル、実装に依存します。ptp4lでネットワーク上のクロックを同期しても、LinuxのPHC、システムクロック、センサーのタイムスタンプ経路まで自動的に同一になるわけではありません。&lt;/p&gt;&#xA;&lt;p&gt;PPSは時刻基準をそろえる手段、外部トリガーは取得イベントをそろえる手段です。ただし、対応機種、ファームウェア、ドライバによって意味が異なります。同期パルスを入力できても、センサー内部の取得からアプリケーション到着までの遅延は別途検証します。&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;各センサーの時計とタイムスタンプを共通の基準時刻へ変換し、共通タイムラインでデータを対応付ける概念図。PTPなどを有効にしても、センサーのタイムスタンプ経路や取得時刻の意味は別途確認が必要です。&#34;&gt;flowchart LR&#xA;  subgraph S1[&#34;センサー側の時刻&#34;]&#xA;    C[&#34;Camera Clock\n露光時刻モデル&#34;]&#xA;    L[&#34;LiDAR Clock\n点・パケット・スキャン時刻&#34;]&#xA;    I[&#34;IMU Clock\n測定時刻&#34;]&#xA;  end&#xA;&#xA;  P[&#34;PTP・PPS・外部トリガー\n利用可能な同期手段&#34;]&#xA;  R[&#34;Reference Clock\n共通の基準時刻&#34;]&#xA;  T[&#34;時刻変換\nt_ref = α_i × t_i + β_i&#34;]&#xA;  X[&#34;共通タイムライン\n対応付け・補間・融合&#34;]&#xA;&#xA;  P -. &#34;クロックまたは取得イベントを同期&#34; .-&gt; C&#xA;  P -. &#34;クロックまたは取得イベントを同期&#34; .-&gt; L&#xA;  P -. &#34;クロックまたは取得イベントを同期&#34; .-&gt; I&#xA;  C --&gt; T&#xA;  L --&gt; T&#xA;  I --&gt; T&#xA;  R --&gt; T&#xA;  T --&gt; X&#xA;&#xA;  D[&#34;固定オフセット β_i\nクロックレート差 α_i&#34;]&#xA;  D -. &#34;ログから推定&#34; .-&gt; T&lt;/pre&gt;&lt;figcaption&gt;各センサーの時計とタイムスタンプを共通の基準時刻へ変換し、共通タイムラインでデータを対応付ける概念図。PTPなどを有効にしても、センサーのタイムスタンプ経路や取得時刻の意味は別途確認が必要です。&lt;/figcaption&gt;&lt;/figure&gt;&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>
    <item>
      <title>イベントカメラをロボットに使う判断：高速動作・HDR・低遅延の実装上の利点と限界</title>
      <link>https://physicalaihub.net/posts/event-camera-robot-vision-selection/</link>
      <pubDate>Fri, 06 Feb 2026 08:13:12 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/event-camera-robot-vision-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;一方、静止物体の外観、色、テクスチャ、絶対輝度を使う認識では、そのまま置き換えられません。実装では、運動推定をイベントカメラ、外観認識をフレームカメラに分担させる併用構成を優先して検討するのが現実的です。&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;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 F[&#34;フレームカメラ&#34;]&#xA;    F1[&#34;一定周期で露光&#34;] --&gt; F2[&#34;フルフレームを読み出し&#34;] --&gt; F3[&#34;画像処理・推論&#34;] --&gt; F4[&#34;認識または運動推定&#34;]&#xA;    F1 -.-&gt; F5[&#34;露光条件によってモーションブラーが生じ得る&#34;]&#xA;    F2 -.-&gt; F6[&#34;絶対輝度や色を画像として取得しやすい&#34;]&#xA;  end&#xA;&#xA;  subgraph E[&#34;イベントカメラ&#34;]&#xA;    E1[&#34;各画素で対数輝度の変化を監視&#34;] --&gt; E2[&#34;しきい値を超えた輝度変化を検出&#34;] --&gt; E3[&#34;位置・時刻・極性付きイベントを非同期出力&#34;] --&gt; E4[&#34;イベント列を処理&#34;] --&gt; E5[&#34;光フロー・追跡・速度推定・オドメトリ&#34;]&#xA;    E1 -.-&gt; E6[&#34;静止した一様領域からは基本的にイベントが出にくい&#34;]&#xA;    E3 -.-&gt; E7[&#34;変化が疎ならデータ量を減らせる可能性&#34;]&#xA;    E3 -.-&gt; E8[&#34;振動・全面運動・明滅ではイベントレートが増え得る&#34;]&#xA;  end&#xA;&#xA;  E5 --&gt; H[&#34;ロボットの認識・制御&#34;]&#xA;  F4 --&gt; H&#xA;  E3 -.-&gt; D[&#34;センサの時間性能&#34;]&#xA;  E4 -.-&gt; D&#xA;  D -.-&gt; L[&#34;推論・通信・制御周期を含むエンドツーエンド遅延とは別に評価&#34;]&lt;/pre&gt;&lt;figcaption&gt;フレームカメラはフルフレームと絶対的な外観情報を扱いやすく、イベントカメラは画素単位の時間情報を利用して運動推定を行う。センサの時間性能だけでなく、推論・通信・制御を含むエンドツーエンド遅延も評価する必要がある。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;センサ内部の短い応答遅延と画素単位のタイムスタンプは、高速運動時の時間分解能を高め、フレーム撮影に伴うブラーを抑えやすくします。ただし、センサの時間性能はシステム全体の遅延ではありません。イベント処理、ノイズ除去、特徴抽出、推論、通信、制御周期まで含めて評価する必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VLAと低レベル制御の責務分担：安全で実装しやすいロボット構成とは</title>
      <link>https://physicalaihub.net/posts/vla-low-level-control-boundary/</link>
      <pubDate>Wed, 04 Feb 2026 00:09:03 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/vla-low-level-control-boundary/</guid>
      <description>&lt;p&gt;VLAの出力が細かな動作指令まで扱えるようになるほど、制御器との境界をどこに置くかが設計上の論点になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;一般的な実機システムでは、VLAをトルク・電流・PWMなどの低レベル制御ループへ直接接続するべきではありません。VLAには、画像や言語からのタスク理解、サブゴール生成、スキル選択、目標姿勢、またはアクションチャンクの生成を担当させ、その下に軌道計画、逆運動学（IK）、局所サーボ、ハードウェアインターフェース、安全監視を分離する構成が妥当です。&lt;/p&gt;&#xA;&lt;p&gt;これはVLAの能力を制限するためではありません。VLAは連続アクションや短いアクションチャンクを生成できますが、推論の遅延やジッタを管理し、関節制限・衝突制約を守り、通信断や異常時に停止する責任は、決定性を重視した専用層に置く方が安全で実装しやすいためです。&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;実時間処理では、予測可能な実行時間、遅延とジッタの管理、実時間スレッドでのメモリ確保回避などが重要です。したがって、一般的な推論処理をサーボループや非常停止と同じ層に置くと、モデルの計算時間や通信状態が物理動作の安全性へ直接影響します。特定のVLA、ロボット、GPU、センサー構成で許容できる推論周期や遅延の上限は一律には決められず、システム全体で検証する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;vlaの出力は一種類ではない&#34;&gt;VLAの出力は一種類ではない&lt;/h2&gt;&#xA;&lt;p&gt;VLAを「テキスト命令を出すモデル」とだけ捉えると、接続設計を誤ります。RT-2は、視覚・言語・ロボット動作を同じトークン系列として扱い、離散化したアクショントークンを対象ロボットのアクション空間へデコードします。OpenVLAの標準的な出力は、エンドエフェクタの位置・姿勢とグリッパ操作を含む7次元のロボットアクションです。これは一般的なモータ電流やPWMを直接出力するインターフェースではありません。&lt;/p&gt;&#xA;&lt;p&gt;一方、π0のように、連続値のロボットアクションを単一ステップではなくアクションチャンクとして生成する研究もあります。つまり、VLAを上位のタスク方策として使う構成だけでなく、より細かな動作指令を生成させる構成も可能です。ただし、アクションを生成できることと、モータレベルの安全責任を負わせることは別問題です。&lt;/p&gt;&#xA;&lt;p&gt;VLAごとに出力表現が異なるため、ロボット固有のアクション空間への変換、正規化、速度・関節・衝突などの制約処理が必要になります。&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;VLAはタスク理解や目標・アクション生成を担当し、変換、計画、局所サーボ、ハードウェア接続、安全監視を専用層に分離する構成例。具体的な周期や遅延の許容値は、対象モデルと実機システムごとに検証が必要です。&#34;&gt;flowchart TB&#xA;  subgraph upper[&#34;上位の認識・方策層&#34;]&#xA;    I[&#34;カメラ画像・言語指示&#34;] --&gt; V[&#34;VLA\nタスク理解・サブゴール生成・スキル選択&#34;]&#xA;    V --&gt; O[&#34;目標姿勢・アクションチャンクなど\nモデル固有の出力&#34;]&#xA;  end&#xA;&#xA;  subgraph bridge[&#34;ロボット固有の変換・計画層&#34;]&#xA;    T[&#34;アクション変換・正規化\n座標系・単位・範囲の検証&#34;]&#xA;    P[&#34;軌道計画・逆運動学（IK）&#34;]&#xA;  end&#xA;&#xA;  subgraph lower[&#34;決定性を重視する制御層&#34;]&#xA;    S[&#34;局所サーボ\nインピーダンス・PIDなど&#34;]&#xA;    H[&#34;ハードウェアインターフェース&#34;]&#xA;  end&#xA;&#xA;  V --&gt; T&#xA;  O --&gt; T&#xA;  T --&gt; P --&gt; S --&gt; H&#xA;&#xA;  subgraph safety[&#34;VLAから独立した安全監視&#34;]&#xA;    M[&#34;関節・速度・衝突制約\nウォッチドッグ・通信断監視&#34;]&#xA;    E[&#34;非常停止・安全状態への遷移&#34;]&#xA;    M --&gt; E&#xA;  end&#xA;&#xA;  M -.-&gt; T&#xA;  M -.-&gt; S&#xA;  M -.-&gt; H&#xA;  E -.-&gt; H&lt;/pre&gt;&lt;figcaption&gt;VLAはタスク理解や目標・アクション生成を担当し、変換、計画、局所サーボ、ハードウェア接続、安全監視を専用層に分離する構成例。具体的な周期や遅延の許容値は、対象モデルと実機システムごとに検証が必要です。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;推奨する制御階層&#34;&gt;推奨する制御階層&lt;/h2&gt;&#xA;&lt;p&gt;上位では、カメラ画像や言語指示をVLAへ入力し、タスク理解、サブゴール生成、スキル選択を行います。VLAが返す目標姿勢やアクションチャンクは、ロボット固有の変換層で関節空間などへ対応付けます。その下の軌道計画器やIKが、実行可能な経路と関節目標を生成します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロボットに触覚と力覚を加える設計判断：視覚との役割分担</title>
      <link>https://physicalaihub.net/posts/robot-tactile-force-sensing-vision-complement/</link>
      <pubDate>Sun, 25 Jan 2026 00:05:01 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-tactile-force-sensing-vision-complement/</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;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;力覚センサーは、代表的には手首に配置され、Fx、Fy、FzとTx、Ty、Tzの6成分を扱う。複数の接触が手先に与える総合的な荷重を監視できる一方、センサー単独で接触点や圧力分布を一意に復元できるとは限らない。局所接触に強い触覚と、手先全体の荷重監視に強い力覚は代替関係ではない。&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;視覚&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;手首6軸力覚&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;&#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;  C --&gt; D{&#34;接触を検出したか&#34;}&#xA;  D -- &#34;いいえ&#34; --&gt; B&#xA;  D -- &#34;はい&#34; --&gt; E[&#34;位置制御からインピーダンス制御・ハイブリッド位置力制御へ切り替え&#34;]&#xA;  E --&gt; F[&#34;押し付け力・接触時の剛性を調整&#34;]&#xA;  F --&gt; G[&#34;指先触覚で局所接触分布・把持状態を確認&#34;]&#xA;  G --&gt; H{&#34;把持不十分または滑り兆候ありか&#34;}&#xA;  H -- &#34;はい&#34; --&gt; I[&#34;把持力・手の姿勢を調整&#34;]&#xA;  I --&gt; J{&#34;再把持が必要か&#34;}&#xA;  J -- &#34;はい&#34; --&gt; I&#xA;  J -- &#34;いいえ&#34; --&gt; K[&#34;力覚で荷重・嵌合異常を監視&#34;]&#xA;  H -- &#34;いいえ&#34; --&gt; K&#xA;  K --&gt; L[&#34;視覚と接触情報を組み合わせて結果判定&#34;]&#xA;  L --&gt; M{&#34;作業結果&#34;}&#xA;  M -- &#34;完了&#34; --&gt; N[&#34;作業完了&#34;]&#xA;  M -- &#34;異常・再試行&#34; --&gt; O[&#34;停止・退避または再試行&#34;]&lt;/pre&gt;&lt;figcaption&gt;視覚は接近と初期位置決め、力覚は接触検出と荷重監視、触覚は局所的な把持状態の確認に使い、観測結果に応じて制御や再試行を切り替える。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;この流れでは、センサー値を単に追加するだけでは足りない。どの観測をどの状態遷移の条件に使うか、また力の異常を停止、退避、再試行のどれに結び付けるかを制御仕様として定義する必要がある。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2通信設計の基本：Topic・Service・Actionをどう使い分けるか</title>
      <link>https://physicalaihub.net/posts/ros2-topic-service-action-selection/</link>
      <pubDate>Sun, 18 Jan 2026 08:02:39 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-topic-service-action-selection/</guid>
      <description>&lt;p&gt;Topic・Service・Actionは、名前を覚えるより通信契約の違いから考えると整理しやすいテーマです。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2の通信方式は、処理時間だけでなく、クライアントが何を必要とするかで選びます。基本的な判断は次のとおりです。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Topic&lt;/strong&gt;：センサー値や状態など、継続的に流れるデータ&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Service&lt;/strong&gt;：短時間で完了する単発の要求と応答&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;：進捗・結果・キャンセルを扱う長時間の処理&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;「何秒以上ならAction」というROS 2共通の時間閾値はありません。完了通知、途中経過、キャンセル、再実行、複数Goalの扱いまで含むインターフェース契約で判断するのが基本です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ使い分けが必要なのか&#34;&gt;なぜ使い分けが必要なのか&lt;/h2&gt;&#xA;&lt;p&gt;ロボットでは、カメラ画像やオドメトリのように継続的に届く情報と、リセットやモード変更のような一度きりの操作が同時に存在します。さらに、ナビゲーションや軌道実行では、開始後も処理が続き、状態を確認したり途中で中断したりする必要があります。&lt;/p&gt;&#xA;&lt;p&gt;これらを一つの通信方式で表すと、通信の意味と実装が合わなくなります。長時間処理をServiceにすると進捗やキャンセルを表現しにくくなり、単純な状態配信をActionにすると構成が過剰になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる3つの用語&#34;&gt;前提となる3つの用語&lt;/h2&gt;&#xA;&lt;h3 id=&#34;topic継続的なデータ配信&#34;&gt;Topic：継続的なデータ配信&lt;/h3&gt;&#xA;&lt;p&gt;Topicは、ノード間でメッセージを交換する名前付きの通信チャネルです。Publisherが発行し、Subscriberが受け取るPublish/Subscribeモデルで、複数のPublisherとSubscriberを疎結合に接続できます。&lt;/p&gt;&#xA;&lt;p&gt;センサー値、画像、関節状態、自己位置、オドメトリなど、継続的に更新されるデータが代表例です。通常は、個々のメッセージに対する完了応答ではなく、到着したデータを継続的に利用します。&lt;/p&gt;&#xA;&lt;p&gt;ただし、Topicを選んだだけで通信品質が決まるわけではありません。Reliability、Durability、History、DepthなどのQoSをデータの性質に合わせて設定し、PublisherとSubscriberの互換性も確認する必要があります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;service短時間の要求と応答&#34;&gt;Service：短時間の要求と応答&lt;/h3&gt;&#xA;&lt;p&gt;Serviceは、クライアントがRequestを送り、サーバーがResponseを返す通信です。基本的に一つの要求に対して一つの応答を返すため、短時間で完了する単発処理に向いています。ROS 2の公式ドキュメントも、長時間実行される処理ではなく、短時間で完了する計算にServiceを使うよう説明しています。&lt;/p&gt;&#xA;&lt;p&gt;移動ロボットのリセットやモード切替、マニピュレータの設定変更、即時に返せる状態照会などが適用例です。&lt;/p&gt;&#xA;&lt;p&gt;なお、「Serviceは同期通信」という説明では、通信モデルとクライアントの待機方法を区別しなければなりません。通信契約はRequest/Responseですが、rclpyには応答をFutureで受け取る&lt;code&gt;call_async&lt;/code&gt; APIもあります。呼び出し側が非同期APIを使っても、Serviceの契約自体は変わりません。&lt;/p&gt;&#xA;&lt;h3 id=&#34;action長時間タスクの実行管理&#34;&gt;Action：長時間タスクの実行管理&lt;/h3&gt;&#xA;&lt;p&gt;Actionは、長時間実行される処理を対象とします。クライアントはGoalを送り、実行中にFeedbackを受け取り、最後にResultを取得できます。Goalのキャンセル要求も扱えます。&lt;/p&gt;&#xA;&lt;p&gt;ROS 2のActionプロトコルは、Goal送信、Result取得、キャンセル要求の3つのServiceと、FeedbackおよびStatusの2つのTopicで構成されます。利用者はAction ClientとAction Serverを通じて、タスクのライフサイクルを扱います。&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;Yes&#34;| C[&#34;Topicを選ぶ&#34;]&#xA;  C --&gt; D[&#34;QoS設定と通信相手との互換性を確認&#34;]&#xA;  B --&gt;|&#34;No&#34;| E{&#34;短時間で一つの応答を返す単発処理か&#34;}&#xA;  E --&gt;|&#34;Yes&#34;| F[&#34;Serviceを選ぶ&#34;]&#xA;  E --&gt;|&#34;No&#34;| G{&#34;長時間タスクで進捗・結果・キャンセルのいずれかを扱うか&#34;}&#xA;  G --&gt;|&#34;Yes&#34;| H[&#34;Actionを検討する&#34;]&#xA;  H --&gt; I[&#34;キャンセル、複数Goal、Goal切替のポリシーを確認&#34;]&#xA;  G --&gt;|&#34;No&#34;| J[&#34;必要な通信契約を再整理&#34;]&lt;/pre&gt;&lt;figcaption&gt;処理時間だけでなく、継続配信、応答、進捗、結果、キャンセルといった通信契約を基準に方式を選択する。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;3方式の比較&#34;&gt;3方式の比較&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;Topic&lt;/th&gt;&#xA;          &lt;th&gt;Service&lt;/th&gt;&#xA;          &lt;th&gt;Action&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;Publish/Subscribe&lt;/td&gt;&#xA;          &lt;td&gt;Request/Response&lt;/td&gt;&#xA;          &lt;td&gt;Goal/Feedback/Result&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;一つのResponse&lt;/td&gt;&#xA;          &lt;td&gt;Resultを取得&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;Feedbackを扱える&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;QoS互換性&lt;/td&gt;&#xA;          &lt;td&gt;長時間処理に不向き&lt;/td&gt;&#xA;          &lt;td&gt;停止やGoal管理は実装依存&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;移動ロボットでは、センサーノードから認識・制御ノードへ送るセンサー情報、オドメトリ、関節状態などをTopicにします。操作画面からのリセットやモード切替は、短時間で結果を返せるならServiceが候補です。目的地までのナビゲーション、ドッキング、経路追従は、実行中の状態や中断を扱うためActionが適しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIロボットの安全設計：非常停止とAI判断を分離する理由</title>
      <link>https://physicalaihub.net/posts/physical-ai-emergency-stop-separation/</link>
      <pubDate>Thu, 15 Jan 2026 00:01:44 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/physical-ai-emergency-stop-separation/</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やAI搭載ロボットでは、非常停止をAIの判断だけに依存させるべきではありません。非常停止入力、保護センサ、安全ロジック、アクチュエータ停止までの安全関連経路を、AIの通常制御・推論経路から機能的に独立させるのが基本です。AIはカメラやセンサから危険を検知し、追加の停止要求を出す補助層として扱います。&lt;/p&gt;&#xA;&lt;p&gt;ここでいう「分離」は、必ずしも別CPUや別配線を意味しません。必要な安全性能、故障時の安全状態、共通原因故障への耐性をリスクアセスメントで確認できるなら、安全コントローラや安全認証済みネットワークを使った統合も候補になります。ただし、AI系の停止要求が失敗しても、人間の非常停止や保護センサから安全状態へ移行する経路が機能しなければなりません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜai判断と非常停止を分けるのか&#34;&gt;なぜAI判断と非常停止を分けるのか&lt;/h2&gt;&#xA;&lt;p&gt;AIの認識や行動計画は、入力データ、推論処理、通信、ソフトウェアの状態に依存します。危険を認識できない場合だけでなく、推論や通常制御が停止した場合にも、安全機能まで失われる構成は避ける必要があります。&lt;/p&gt;&#xA;&lt;p&gt;機能安全で評価する対象は、AIの認識精度だけではありません。安全関連制御部に要求される性能、故障の検出、故障時にどの安全状態へ移行するか、ソフトウェアを含む設計と統合を確認します。したがって、AIモデルの精度評価やAIリスク管理の文書だけで、非常停止回路の安全妥当性を示すことはできません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用語を分けて仕様化する&#34;&gt;用語を分けて仕様化する&lt;/h2&gt;&#xA;&lt;p&gt;ISO 13850:2015では、非常停止機能は単一の人間の操作で開始される機能として扱われます。すべての運転モードで利用可能かつ作動可能で、他の機能や操作より優先され、リセットだけで再起動してはなりません。また、非常停止は安全防護の代替ではなく、補完的な安全機能です。&lt;/p&gt;&#xA;&lt;p&gt;一方、AIが自動的に出す停止要求を製品資料などで「E-stop」と呼ぶことがあります。しかし、仕様上は少なくとも次を区別する必要があります。&lt;/p&gt;&#xA;&lt;ul&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;AIによる停止要求&lt;/strong&gt;：AIの危険検知を起点とする追加の停止要求&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;AIによる停止要求を、非常停止の代替として扱うのではなく、保護停止や追加のリスク低減層として要件、故障時挙動、検証方法を別途定義することが妥当です。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組み&#34;&gt;内部の仕組み&lt;/h2&gt;&#xA;&lt;p&gt;基本構成では、非常停止ボタン、ガードスイッチ、安全スキャナなどを安全ロジックへ接続します。安全ロジックは安全関連の出力を介して、安全対応ドライブやブレーキなどを制御し、機械を定義済みの安全状態へ移行させます。AI側はカメラやセンサを入力として推論し、必要に応じて安全系へ停止要求を入力しますが、AI側から安全系を無効化する経路は設けません。&lt;/p&gt;&#xA;&lt;p&gt;安全状態がモータトルク遮断、ブレーキ適用、電源遮断、保持状態のいずれになるかは、ロボットの機構、負荷、落下や挟圧の危険によって異なります。対象機械の情報がない段階で、停止カテゴリ、停止時間、制動距離、要求PLやSILを一律に決めることはできません。&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;非常停止と保護センサを含む安全関連経路を、AIの推論・通常制御経路から機能的に分けた基本構成。AIは安全系への追加の停止要求を出せるが、安全系を無効化する経路は設けない。&#34;&gt;flowchart LR&#xA;  subgraph SAFETY[&#34;安全関連経路&#34;]&#xA;    E[&#34;非常停止ボタン&#34;] --&gt; SL[&#34;安全ロジック&#34;]&#xA;    G[&#34;ガードスイッチ&#34;] --&gt; SL&#xA;    S[&#34;安全スキャナ&#34;] --&gt; SL&#xA;    SL --&gt;|&#34;安全関連出力&#34;| D[&#34;安全対応ドライブ&#34;]&#xA;  end&#xA;&#xA;  subgraph AICTRL[&#34;AI・通常制御経路&#34;]&#xA;    C[&#34;カメラ・センサ&#34;] --&gt; INF[&#34;AI推論&#34;]&#xA;    INF --&gt; P[&#34;タスクプランナ&#34;]&#xA;    P --&gt; NC[&#34;通常コントローラ&#34;]&#xA;    NC --&gt;|&#34;通常の駆動指令&#34;| D&#xA;    INF --&gt;|&#34;補助的な停止要求&#34;| SL&#xA;  end&#xA;&#xA;  D --&gt; A[&#34;アクチュエータ&#34;]&#xA;  A --&gt; SS[&#34;定義済みの安全状態&#34;]&lt;/pre&gt;&lt;figcaption&gt;非常停止と保護センサを含む安全関連経路を、AIの推論・通常制御経路から機能的に分けた基本構成。AIは安全系への追加の停止要求を出せるが、安全系を無効化する経路は設けない。&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;AIへの依存&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;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;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;AIによる停止要求&lt;/td&gt;&#xA;          &lt;td&gt;AIの危険検知&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;設計判断では、まず「別CPUかどうか」ではなく、安全機能がAI系の故障に妨げられないかを確認します。AIの通常制御と安全関連制御を別の機能として定義し、入力、処理、出力、故障時挙動、検証責任を分けることが出発点です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jetson上でVLMと物体検出を組み合わせる推論パイプライン設計</title>
      <link>https://physicalaihub.net/posts/jetson-vlm-object-detection-pipeline/</link>
      <pubDate>Mon, 05 Jan 2026 23:57:34 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/jetson-vlm-object-detection-pipeline/</guid>
      <description>&lt;p&gt;JetsonでVLMを使うとき、毎フレーム処理させるべきか、それとも役割を分けるべきかが設計上の分岐点になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;Jetsonでカメラ認識システムを構築するなら、物体検出モデルを高頻度で動かす一次視覚ループ、VLMを必要時だけ呼び出す二次推論ループとして分離するのが基本です。検出器は物体の位置、既知クラス、信頼度、追跡情報を継続的に供給し、VLMは未知物体の説明、属性や関係性の解釈、自然言語による確認を担当します。&lt;/p&gt;&#xA;&lt;p&gt;VLMを毎フレーム実行すると計算量やメモリ使用量、レイテンシが増えやすくなります。一方、検出器だけでは説明や文脈理解が難しい場合があります。両者を同期処理で直列化するのではなく、検出器とトラッカーを継続させたままVLMを非同期実行することが、リアルタイム性と柔軟な認識を両立する判断になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ分担が必要なのか&#34;&gt;なぜ分担が必要なのか&lt;/h2&gt;&#xA;&lt;p&gt;物体検出器は、既知クラスについて画像中の位置、クラス、信頼度を取得する処理に向きます。ロボットが周囲の物体を追跡し、制御系へ一定間隔で位置情報を渡す用途では、検出器を一次ループに置くのが自然です。&lt;/p&gt;&#xA;&lt;p&gt;VLMは画像と言語を組み合わせ、画像の説明、質問応答、属性理解、物体間の関係性の解釈などを扱います。したがって、両者は完全な代替ではなく補完関係です。ただし、テキストでカテゴリを指定するオープンセット検出器もあるため、境界は固定的ではありません。必要な出力が「どこに何があるか」なのか、「どのような状態で、何と関係しているか」なのかを先に分けます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基本用語と内部の仕組み&#34;&gt;基本用語と内部の仕組み&lt;/h2&gt;&#xA;&lt;p&gt;一次ループは、カメラ入力から前処理、物体検出、トラッキングまでを高頻度で処理する経路です。ここで座標、クラス、信頼度、追跡ID、時刻情報を更新します。二次ループは、一次ループが発生させたイベントを契機に、VLMへ画像と質問や指示文を渡す経路です。&lt;/p&gt;&#xA;&lt;p&gt;呼び出し条件には、検出信頼度の低下、未知クラス候補、属性や関係性の確認要求、シーン変化、一定間隔の再評価を使えます。毎フレームではなく、不確実性や変化が生じたときに実行することで、VLMの処理量を抑えられます。&lt;/p&gt;&#xA;&lt;p&gt;VLMへは毎回フルフレームを渡す必要はありません。検出器が得たROI、クラス候補、信頼度、追跡ID、時刻情報を優先し、周囲との位置関係など空間的文脈が必要な場合だけフルフレームを追加します。ROIは対象を絞れますが、周辺情報を失う可能性があるため、質問の内容に応じて切り替えます。&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;物体検出器とトラッカーを高頻度で継続動作させ、イベント発生時だけVLMを非同期実行する構成。VLMの出力は検出結果を置き換えず、メタデータとして統合します。&#34;&gt;flowchart LR&#xA;  A[&#34;カメラ入力&#34;] --&gt; B[&#34;前処理&#34;] --&gt; C[&#34;物体検出&#34;] --&gt; D[&#34;トラッカー&#34;]&#xA;  D --&gt; E[&#34;検出メタデータ更新\n座標・クラス・信頼度・追跡ID・時刻&#34;]&#xA;  E --&gt; F[&#34;結果統合&#34;]&#xA;  E --&gt; G[&#34;イベント判定&#34;]&#xA;  G --&gt; G1[&#34;信頼度低下・未知物体候補\n属性や関係性の確認・シーン変化&#34;]&#xA;  G1 --&gt; H[&#34;非同期キュー&#34;]&#xA;  E --&gt; I[&#34;ROI・クラス候補・信頼度\n追跡ID・時刻情報&#34;]&#xA;  A -. &#34;空間的文脈が必要な場合&#34; .-&gt; J[&#34;フルフレーム&#34;]&#xA;  I --&gt; H&#xA;  J --&gt; H&#xA;  H --&gt; K[&#34;VLM推論\n画像またはROI＋質問・指示文&#34;]&#xA;  K --&gt; L[&#34;VLM結果をメタデータとして追加&#34;]&#xA;  L --&gt; F&#xA;  F --&gt; M[&#34;安全監視&#34;] --&gt; N[&#34;制御系・状況理解・オペレーター向け情報&#34;]&#xA;  D -. &#34;VLM処理中も継続動作&#34; .-&gt; E&lt;/pre&gt;&lt;figcaption&gt;物体検出器とトラッカーを高頻度で継続動作させ、イベント発生時だけVLMを非同期実行する構成。VLMの出力は検出結果を置き換えず、メタデータとして統合します。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;VLMの結果は検出結果を置き換えるのではなく、メタデータとして統合する設計が扱いやすいでしょう。VLM処理中も検出器とトラッカーを動かします。DeepStreamのようなGStreamerベースの基盤では、映像入力、前処理、推論、トラッキング、メタデータ処理を接続できます。キューで検出経路とVLM経路を分離すれば、VLMの遅延が検出器や制御系を停止させにくくなります。ただし、特定のVLMプラグインが標準提供されることや、VLMを毎フレーム処理できることを意味しません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>このサイトについて</title>
      <link>https://physicalaihub.net/about/</link>
      <pubDate>Thu, 01 Jan 2026 09:00:00 +0900</pubDate>
      <guid>https://physicalaihub.net/about/</guid>
      <description>&lt;h2 id=&#34;サイトの目的&#34;&gt;サイトの目的&lt;/h2&gt;&#xA;&lt;p&gt;Physical AI Hub は、Physical AI・Embodied AI・ロボティクス領域の技術情報を日本語で整理して届ける技術ブログです。&#xA;ニュースの速報性よりも、長期的に参照できる「技術的な問いへの答え」を重視しています。&lt;/p&gt;&#xA;&lt;h2 id=&#34;ai生成コンテンツの扱い&#34;&gt;AI生成コンテンツの扱い&lt;/h2&gt;&#xA;&lt;p&gt;記事は生成AIを用いて作成されているため、誤りが含まれる可能性があります。&#xA;重要な技術判断を行う前に、記事内で提示している一次情報を必ずご確認ください。&#xA;アイキャッチなどの生成画像には「AIによるイメージ画像」であることを明示しています。実機の写真や実測結果として提示することはありません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;免責事項&#34;&gt;免責事項&lt;/h2&gt;&#xA;&lt;p&gt;本サイトの情報の利用によって生じた損害について、運営者は責任を負いません。&#xA;記載されている製品名・サービス名は各社の商標または登録商標です。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
