<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>経路計画 on Physical AI Hub</title>
    <link>https://physicalaihub.net/tags/%E7%B5%8C%E8%B7%AF%E8%A8%88%E7%94%BB/</link>
    <description>Recent content in 経路計画 on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Thu, 07 May 2026 08:46:36 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/tags/%E7%B5%8C%E8%B7%AF%E8%A8%88%E7%94%BB/index.xml" rel="self" type="application/rss+xml" />
    <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>マルチロボットシステムの設計：タスク割り当てと経路調整を分離する方法</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>
  </channel>
</rss>
