Up バッファメモリ 作成: 2026-09-11
更新: 2026-10-13

4足歩行ロボット > 自律型> コンピュータ > ハードウェア > バッファメモリ

    データの流れは,モジュール間では,つぎのようになる:

     ┌───────────────────┐
     │    ┌→ 歩行脳NN ────┐ │
     │    │         目標電流値│
     │    │←───────────┤ │
     │ ┌──┼─┬────┐     │ │
     │視覚   移動覚  接地覚    │ │
     │ NN   NN  NN     │ │
     │ ↑    ↑    ↑     │ │
     └─┼────┼────┼─────┼─┘
       │    │    │     ↓  
      ドライバ ドライバ ドライバ ドライバ
       ↑    ↑    ↑     ↓  
      カメラ  IMU  接地    モータ 
                センサ       

    ここで,上の枠は 「中枢神経系」。


    しかしこの接続には,問題がある。
    モジュールごとに処理速度が違うという問題である:
      ROS2: 10〜100Hz
      NN: 50〜200Hz
      モータ制御: 1kHz(1ms周期)
      IMU: 200〜1000Hz
      カメラ: 30〜60Hz


    この問題を解決する方法は,バッファメモリである:
      それぞれが自分のタイミングで,
        バッファメモリからデータを読む
        バッファメモリにデータを書く

    しかし,バッファメモリだけでは解決できない問題がある。
    それは,つぎの問題:
      Linux はリアルタイムOSではないため,
       「それぞれが自分のタイミングで」 が実現されない
    特にモータ制御のような「1ms周期の処理」は,安定しないわけである。


    「リアルタイム性」 の問題は,
       MCU の導入
    がソルーションになる。

    そこで 「それぞれが自分のタイミングで」 の方だが,本探求は
       「ストア」 の導入
    を,ソルーションとする。
    モジュールにはストアがあてがわれ,データの流れはストア間の流れになる。

    結論から言う,これは最終的につぎの形になる:

     ┌─────────────────────┐
     │        歩行脳NN        │
     │     ┌→  ストア ─────┐  │
     │     │          目標電流値│
     │     │←───────────┤  │
     │  ┌──┼─┬────┐     │  │
     │視覚NN 移動覚NN 接地覚NN  │  │
     │ ストア  ストア   ストア   │  │
     │  ↑    ↑    ↑     │  │
     │ カメラ   │    │     │  │
     │ ストア   │    │     │  │
     │  ↑    │    │     │  │
     └──┼────┼────┼─────┼──┘
        │    │I2C │     ↓I2C 
        │  ┌─┼────┼─┐ ┌─┼─┐
        │  │ │    │ │ │ ↓ │
        │  │IMU  接地セ│ │モータ│
        │  │ストア  ストア│ │ストア│
        │  │ ↑    ↑ │ │ │ │
        │  └─┼────┼─┘ └─┼─┘
        │    │    │     ↓  
       カメラ  IMU  接地セ   モータ 

    ここで,3つの枠は,上が SBC,下の2つが MCU。
    「接地セ」 は,「接地センサ」 の略記。
    「モータ」 は,モータドライバIC + モータ。


    以下,これの実現を,
      ハードウェア >
      ソフトウェア
      プログラミング
    の3章を以て,論じていく。。