更新

「AMR ↔ ロボット犬」自前ミドルウェア最小アーキテクチャ:unitree_sdk2/ROS2 ↔ 配車オーケストレーション ↔ docking(PoC 技術起点・要確認草案)

机器狗AMR子母车中间件架构unitree_sdk2ROS2DDSVDA5050docking调度PoC大冢商会

⚠️ 本稿はアーキテクチャ草案で、製品仕様ではない。 目的は、姉妹編に繰り返し現れる結論「親子車の集成はミドルウェア自前構築しかない」を、実際に組める最小の一枚図に落とすこと。列挙の I/F・プロトコル(unitree_sdk2 の DDS、VDA5050 の MQTT/JSON)は各 SDK/標準の公式文書と実 PoC 検証が基準;本稿の外部リンクは curl 200。「最小」= PoC 範囲で、一つの閉ループを通すのに必要なモジュールだけを意図的に描き、量産級の冗長/安全認証/多機配車拡張は含めない(段階 2/3 で追加)。

🌐 本稿が答えること

二つの姉妹編が同じ一文を指す:GO2 選定 は「GO2 に既製 AMR 解はなく、集成は自前構築しかない——それこそ差別化」、SEER M4 導入経路 は「SEER と組まなくてもベンチマークとして自前構築可」。では『自前構築』は何を作るのか? 本稿はそれを最小アーキテクチャ + 作業時系列として描き、PoC 段階 1 の技術起点とする。

親子車の概念/事例は 親子車研究;三つの融合形態は 融合編;既製を買う経路は SEER M4 導入経路。

🧱 一、なぜ「自前ミドルウェア」か(結論を一文で受ける)

  • ロボット犬(GO2/B2 等)は既製の AMR 対接製品がなく、VDA5050 にも非対応(VDA5050 は 2D 車輪式 AMR 専用)——GO2 選定 参照。
  • ゆえに「AMR が犬を運び、犬が階段を登る」閉ループでは、親車と子車のオーケストレーション・対接・協調に既製プロトコルが無く、ミドルウェア層を自分で書くしかない。
  • この層こそ事業企画書の「ソフト × ハード」の堀:ハード(AMR・犬)は全て既製を買い、オーケストレーションは自社。SEER はこれを製品にした(SEER 編);自前構築は「mini 版を自分で・完全自主可制で作る」こと。

🗺️ 二、最小アーキテクチャ(一枚図・三層)

╔══════════════════════════════════════════════════════════════════╗
║      自社ミドルウェア / 配車オーケストレーション (中核・全て自社)      ║
║                                                                    ║
║   ┌───────────────┐  ┌───────────────┐  ┌────────────────────┐   ║
║   │ タスク状態機    │  │ 地図 / 自己位置  │  │ Docking 協調制御     │   ║
║   │ Orchestrator  │  │ 融合           │  │ ハンドシェイク protocol│  ║
║   │ (デッドロック無)│  │ (親車↔犬 座標)  │  │ (乗車/降車・復位)    │   ║
║   └───────┬───────┘  └───────────────┘  └─────────┬──────────┘   ║
║           │          監視 / HMI / ログ / 警報            │           ║
╚═══════════╪═══════════════════════════════════════════════╪═══════╝
            │                                               │
   ① 親車 I/F │ VDA5050 (MQTT/JSON) か ベンダ API     ② 子車 I/F │ DDS/ROS2/WebRTC
            │                                               │
   ┌────────▼─────────┐      ═══ docking ═══       ┌────────▼──────────┐
   │   親車  AMR        │      物理対接面 +          │  子車  ロボット犬   │
   │  (既製 · 車輪式)   │◄── 充電/復位/施錠 ──►    │ (GO2 EDU で起ち上げ)│
   │  重貨運搬·平地長距  │                          │ 階段·ラスト 100m   │
   └──────────────────┘                          └───────────────────┘
     既存 AGV 再利用可                            unitree_sdk2 / unitree_ros2

図を読む三点:

  • 左右の I/F は異機種:親車は産業 AMR の流儀(VDA5050 か ベンダ API)、子車は宇樹の流儀(DDS/ROS2)——ミドルウェアの最初の仕事は両者を一つの内部タスク言語に翻訳すること。
  • 最も価値があるのは「オーケストレーション層」:ハード能力を生まず、「いつ・誰に・何を・どう引き継ぐか」を生む——これが自社ソフト。
  • docking は物理 + プロトコルの二層:機械対接面(乗降・施錠・任意で充電)と、ソフトのハンドシェイク(犬の固定/降車を確認して初めて親車が動ける)——安全インタロックはこの層。

🔌 三、層別インタフェース一覧(自前構築が実際に対接するもの)

層 モジュール 対接手段 出典 / 注
子車通信 運動指令 / センサ読取 unitree_sdk2(CycloneDDS) 1
子車通信 ROS2 エコシステム橋 unitree_ros2 2
子車通信 Python 迅速試作 unitree_sdk2_python 3
子車通信 Wi-Fi/Ethernet 双系(コミュニティ参考) go2_ros2_sdk(WebRTC+DDS、fleet 無) 4
親車通信 標準配車プロトコル VDA5050(MQTT/JSON;親車対応が前提) 5
親車通信 fleet manager 参考実装 openTCS VDA5050 アダプタ 6
オーケストレーション タスク状態機 / デッドロック無 自社(marsupial 文献の Petri-net 参考) 親子車研究
オーケストレーション docking ハンドシェイク / 安全インタロック 自社(物理+プロトコル二層) 本稿
対照 同等を既製で買う SEER M4(四足+VDA5050 同一系統協調) 7

低層制御は EDU 必須:カスタム歩容/精密対接を書くなら子車は GO2 EDU(低層 rt/lowcmd 込、Air/Pro は施錠)——GO2 選定 参照。

⏱️ 四、作業時系列(一つのデッドロックフリー閉ループ)

「AMR が犬を運び、犬が登る」を状態機に分解、各ステップに進入/退出条件、marsupial 文献に倣いデッドロックフリーに(親子車研究):

[IDLE]
  │ タスク受領(目標フロア/点位)
  ▼
[AMR_DRIVE] 親車が犬を載せ平地を階段口へ走行 ──(到着)──►
[ARRIVE] 親車停止·自己位置整合 ──(検証 OK)──►
[WAKE_DOG] ミドルウェアが犬を起こす·タスク座標下達 ──►
[DOG_DISMOUNT] docking 解錠·犬が降車 ──(降車確認)──►
[DOG_TASK] 犬が階段/ラスト100m/運搬·認識 ──(タスク完了)──►
[DOG_RETURN] 犬が自律で親車の対接面へ帰還 ──►
[DOCK] docking ハンドシェイク·施錠·(任意 充電) ──(固定確認)──►
[AMR_DEPART] 親車が犬を載せ次点へ / 帰投 ──► [IDLE]

異常分岐(いずれか失敗)→[SAFE_HOLD] 停止·警報·人手介入·固定されない犬を載せて親車は動かない

安全の第一鉄則:[AMR_DEPART] の前提条件は docking ハンドシェイクで「犬固定」を確認すること——このインタロックが、座っていない犬を親車が引きずるのを防ぐ。PoC でも必須の最小安全。

⚖️ 五、自前構築 vs SEER 購入(同じ図の二つの実装)

観点 自前ミドルウェア(本稿) SEER 購入(SEER 編)
オーケストレーション層 自社でゼロから(状態機 + docking ハンドシェイク) M4 既製(四足+VDA5050 同一系統)7
子車運動制御 unitree_sdk2/ROS2 自接 SRC コントローラ既製
既存 AGV 接続 VDA5050/ベンダ API ブリッジ自書 M4 が VDA5050 で
自主可制 ✅ 完全自主 ⚠️ SEER 依存(日本代理無)
起ち上げコスト/期間 ⚠️ 高(自分で書く) ✅ 低(既製を買う)
差別化の堀 ✅ オーケストレーションは自社 IP ⚠️ オーケストレーションは SEER の
推奨 GO2 PoC 段階でまず mini 版を自前(最低コストで閉ループ検証 + 自社 IP 蓄積) 規模化/重載異機種接続時に M4 を統一 RCS として再評価

二つは排他でない:まず mini 版を自前で組み閉ループと自社 IP を蓄積、規模化で SEER が得なら、オーケストレーションの経験は「M4 + 自社上層業務」へ無縫移行できる。

🪜 六、PoC 三段階マッピング(この図をどう分期で組むか)

  • 段階 1(単機・最小閉ループ):GO2 EDU + 既製 AMR 一台 + 本図「オーケストレーション層の最小サブセット」(状態機 + docking ハンドシェイク)で「走行→降車→登攀→帰還→対接→出発」を通す。失敗コスト最小。
  • 段階 2(工場内雛形):地図/自己位置融合 + 監視 HMI を追加、驭势×国網「車犬一体」 を対標に工場内の実ルートで。
  • 段階 3(既存車隊接続/重載へ昇格):貨重確定後、重載区間を B2/B2-W に換装、親車を大塚既存 AGV に接続(VDA5050 ブリッジ)、または全体を SEER M4 へ昇格を評価——段階 1/2 のオーケストレーション・スタックを移植再利用。

⚠️ 要確認 / 追補事項

  1. この図を SVG/PNG に書き出して、大塚向け客先提案(docx/ppt)の技術ページに入れるか。
  2. 親車選定:段階 1 でどの既製 AMR を使うか(大塚既存車 or PoC 用に軽量 AMR を一台調達)——型番をくれれば親車 I/F 欄(VDA5050 か ベンダ API か)を確定する。
  3. docking 機構:物理対接面について「乗降機構 + 安全インタロック」(充電対接オプション込)の設計草案を別途起こすか。
  4. 実ルート/貨重:入手後、状態機各ステップのタイムアウト/リトライ・及び GO2→B2 昇格の臨界点を算出する。