Up ストアコンプレクス (SC) 作成: 2026-09-29
更新: 2026-10-10

4足歩行ロボット > 自律型> コンピュータ > プログラミング > ストアコンプレクス

    IMU ストアと接地センサストアは,1つの MCU に置く。
    この MCU は,SBC と I2C でつなぐ。

    ここで,2つのストアの実現方法が問題になる。
    MCU は,構造上,これらを2つの実行プログラムとして置けるようにはなっていない。
    MCU に置ける実行プログラムは,1つだけである。


    そこで,つぎを機能とする実行プログラムを導入する:
      サブルーチンとして,2つのストアを実現

    これを,「ストアの複合体」 ということで,「ストアコンプレクス (store complesx, SC)」 と呼ぶことにする。


    SCは,つぎのように位置づく:

           移動覚NN   接地覚NN
            ストア     ストア
             │       │  
         │   │ <SBC> │   │
         └───┼───────┼───┘
             │  I2C  │   
         ┌───┼───────┼───┐
         │   │ <MCU> │   │
          ┌──┼───────┼──┐
          │  │  SC   │  │
          │ IMU     接地セ │
          │ ストア     ストア │
          └─────────────┘


    SC は,ストアがテナントとして入居する設備である。

    SC がすることは,
     ・通信インフラの提供
     ・ストア間のタイムシェアリング

    SC のしてはならないことは::
      ストアの処理プロセスへの割り込み


  • 通信インフラ
    通信は,回路 I2C1 と I2C2 の2つを使い,それぞれ
      移動覚NNストア ── IMU ストア
      接地覚NNストア ── 接地センサストア
    の通信にあてる。
    特に,I2C に使用するピンは,2組になる。

      I2C 通信


  • タイムシェアリング
    SC は,つぎの構造体:
      IMUストアと接地センサストアを,
      サブルーチン (内部関数) の形で実現
    この構造により,IMUストアと接地センサストアは,「ルーチンの切り替え」により交互に動くものになる。

    したがって,厳密に言えば,「ストア」 の条件とした 「マイペースを保持」 からは,外れる。
    しかし,実質的には 「マルチタスク」 になる。
    なぜか?

    ストアの処理ループは,1周の中で 「何もしない」 時間が,長い。
    例えば,センサーが 0.001秒周期で計測値を出力するのに対し,ストアは 0.02秒周期でデータを回収する,という具合。

    そこで,切り替えのタイミングをつぎのようにする:

          IMU ストア

            START
             │
          A1→│
             ↓
          IMU から
          データを取得
          成形 (→ OUT)
             │
             │
           周期時間経過?
        Yes│  │No
           ↓  ↓
         A1へ A2へ
         接地センサ ストア

            START
             │
          A2→│
             ↓
          接地センサから
          データを取得
          成形 (→ OUT)
             │
             │
           周期時間経過?
        Yes│  │No
           ↓  ↓
         A2へ A1へ

    これは,実質的につぎの 「マルチタスク」 の実現となる:

            START
             │
          A1→│
             ↓
          IMU から
          データを取得
          成形 (→ OUT)
             │
             │←B1
           周期時間経過?
        Yes│  │No
           ↓  ↓
         A1へ B1へ
            START
             │
          A2→│
             ↓
          接地センサから
          データを取得
          成形 (→ OUT)
             │
             │←B2
           周期時間経過?
        Yes│  │No
           ↓  ↓
         A2へ B2へ