ハードウェア / 初代機

omicro:球体型ロボット

直径 170mm のクリア球体に M5Stamp S3、6 軸 IMU、地磁気センサ、駆動輪と補助輪を収めた初代機。スマートフォン・iPad・Apple Watch から複数台を同時に操作できる、シリーズの土台。

M5Stamp S3 MPU6050 TB6612FNG NeoPixel
omicro:球体型ロボット

The article body is in Japanese only. See the header above for the English summary, or switch to for the full text.

1. はじめに

omicroは、スマートフォンやタブレット、Apple WatchからBluetoothで直感的に操作可能な球体型ロボットです。完全に保護された設計により、STEAM教育に適した構造を持ち、360度全方向に対応する駆動システムを搭載しています。また、ハンドジェスチャーによる操作も可能であり、複数のロボットを同時に制御する機能も備えています。これにより、教育現場でのプログラミング教育やロボット工学の実習、家庭での子供たちの学習支援、研究開発におけるロボティクス研究、イベントや展示会でのインタラクティブなデモンストレーションなど、多岐にわたる応用が可能です。

omicro at Maker Faire omicro 内部構造 詳細 omicro 動作中

2. システム構成

omicroの動作には、ハードウェアとソフトウェアの連携による以下の手順が必要です:

2.0 システムセットアップ手順

sequenceDiagram
    participant Setup as 初期設定
    participant omicro as omicroシステム
    participant Control as 制御開始
    
    Setup->>omicro: 設置・接続・キャリブレーション
    omicro->>Control: システム準備完了
    Control->>Control: iOS/watchOS制御開始
初期設置 平坦で安定した床面に配置。球体の特性上、傾斜面や不安定な場所は避ける。
通信の確立 電源投入後、iOS アプリを起動して BLE 接続。複数台接続するときは複数接続モードに切り替える。
センサーキャリブレーション iOS アプリ上から電子コンパスのキャリブレーションを実行。会場の磁気的な影響を補正する。
制御開始 iOS アプリ、または Apple Watch の watchOS アプリから omicro の移動制御を開始する。

2.1 球体型ロボット

球体型ロボット omicroは、外側の球体とその中で動くロボットの二部分から構成されています。

外側の球体

外側の球体は、直径170mmのクリアなプラスチックBOXを使用しており、材質はスチロール樹脂です。表面には硬化ガラスコーティング剤が塗装されており、耐久性と視認性を高めています。

内部のロボット

内部のロボットは、M5Stamp S3を中心に、2つのマトリックスLED、モータードライバのSparkfun TB6612FNG、6軸センサのMPU6050、地磁気センサ GROVE三軸デジタルコンパスモジュールv1、NeoPixel Ring 16連フルカラーシリアルLEDで構成されています。フレームはレーザーカットされたアクリルを使用しています。電源にはエネループ電池を6本使用し、これらは2本と4本に分けて配置されています。ロボットの最下部には重心を整えるためにパラストが配置されています。

CORE M5Stamp S3
  • SparkFun TB6612FNG · Motor driver
  • MPU6050 · 6-axis IMU
  • GROVE 3-axis digital compass
  • Matrix LED × 2 · eyes
  • NeoPixel Ring × 16 · ambient
  • eneloop × 6 · power
sequenceDiagram
    participant Power as エネループ電池×6
    participant MCU as M5Stamp S3<br/>メインコントローラ
    participant Driver as TB6612FNG<br/>モータードライバ
    participant Motors as DCモーター×2
    participant IMU as MPU6050<br/>6軸センサ
    participant Compass as 地磁気センサ
    participant LED as マトリックスLED×2
    participant Ring as NeoPixel Ring
    
    Note over MCU: システム起動・初期化
    Power->>MCU: 電源供給
    MCU->>Driver: モータードライバ初期化
    MCU->>IMU: 6軸センサー初期化
    MCU->>Compass: 地磁気センサー初期化
    MCU->>LED: LED表示初期化
    MCU->>Ring: NeoPixelリング初期化
    
    Note over MCU: 動作制御ループ
    loop 制御サイクル
        IMU-->>MCU: 加速度・ジャイロデータ
        Compass-->>MCU: 方位データ
        MCU->>MCU: 姿勢・方位計算
        MCU->>Driver: モーター制御信号
        Driver->>Motors: 駆動輪回転制御
        MCU->>LED: 目の表情制御
        MCU->>Ring: 周囲LED演出
    end

駆動方式に2輪差動を採用した理由

球体型ロボットの内部駆動には、振り子で重心を倒して転がす方式、全方向ホイールで内壁を押す方式、車輪付き内部ユニットを走らせる方式などがあります。omicro は内部ユニット方式の中でも2輪差動を採用しており、球体構造との組み合わせで以下の特性が得られます。

  • 群制御を見据えたコストと運動性能の両立: 複数の球体型ロボットを同期制御で動かす想定を一貫して持っており、1 台あたりの部品点数を抑えつつ前進・後退・カーブ・超信地旋回の全運動が成立する駆動方式が要件でした。2 輪差動は動力輪 2 個で必要な運動を全部賄えるため、台数が増えてもコストと整備工数が線形にしか膨らまない利点があります。
  • ヨー制御に追加機構が不要: 左右の動力輪を逆向きに等速で回すだけで超信地旋回が成立する。振り子方式はピッチ方向のトルクしか生成できず、ヨー制御にはフライホイールや磁気アンカーなど別系統の機構が必要になる。
  • 直進と旋回を同じアクチュエータで合成できる: 左右の回転量の 和で前進・差で旋回 が独立に決まり、操作コマンドからモーター指令への変換が単純な足し算と引き算で済む。
  • 倒立維持の責務がない: 球体は重心が中心より下に置かれた受動安定構造のため、2輪は倒立を保つためにモーターを常時動かす必要がない。動力輪は走行に専念でき、二輪倒立型のように転倒で試行が止まることもない。
  • 制御モデルが2自由度に収まる: 「前進量」と「差動量」の2変数で扱えるため、iOS / watchOS から複数台を同時に操作する場合でも、個々のロボットに送るコマンドが軽い。

残り8輪は無動力で、走行時に球体内壁へ接触して直進安定性・衝撃吸収・回転時の軸保持を担います。駆動系は2輪差動に閉じたまま、機構的な安定化を補助輪へ分離した構成は、後継機の omicro Flux にもそのまま引き継がれています。

車輪と運動機構

ロボットには合計10個の車輪があり、動力は下部の大きな2つの車輪にのみ繋がれています。ゴムタイヤと球体が直接接触するとグリップが強すぎるため、医療用のサージカルテープを使用して摩擦を調整しています。その他の8つの車輪は、静止時には球体の内壁に接触していませんが、走行時には内壁に触れるようになっています。これにより、「ボールの直進安定性向上」、「衝撃吸収」、「回転時の軸保持」という役割を果たしています。車輪が回転すると、内部のロボットが球体の内側の壁を駆け上がることで、ボールが前進します。ボールの方向変更は、車輪が逆方向に等速で回転することで、超信地旋回を行い、その場での回転が可能です。

sequenceDiagram
    participant User as 操作指令
    participant MCU as M5Stamp S3
    participant Driver as モータードライバ
    participant Drive as 駆動輪×2
    participant Support as 補助輪×8
    participant Ball as 球体
    
    Note over User: 前進指令
    User->>MCU: 前進コマンド
    MCU->>Driver: 同方向回転指示
    Driver->>Drive: 両輪同方向回転
    Drive->>Ball: 内壁を駆け上がり
    Support->>Ball: 内壁接触で安定化
    Ball->>Ball: 前進動作
    
    Note over User: 回転指令
    User->>MCU: 回転コマンド
    MCU->>Driver: 逆方向回転指示
    Driver->>Drive: 左右逆回転
    Drive->>Ball: 超信地旋回
    Support->>Ball: 軸保持・衝撃吸収
    Ball->>Ball: その場回転
    
    Note over Support: 補助輪の役割
    Support-->>Ball: 直進安定性向上
    Support-->>Ball: 衝撃吸収
    Support-->>Ball: 回転時軸保持



マイコンの変遷

omicro のマイコンは LPC1768(NXP Cortex-M3、Mbed で開発)からスタートしました。その後、ファームウェアを Arduino 系に完全に書き換え、現在は M5Stack の M5Stamp S3(ESP32-S3 ベース)に載せ替えています。

2.2 操作アプリケーション

omicroの操作には専用のiOSアプリケーションとwatchOSアプリケーションを使用します。これらのアプリケーションの詳細な機能や操作方法については、「omicroシリーズ専用アプリケーション」をご参照ください。

主な機能:

  • iOSアプリ: システムハブとして複数ロボットの制御、Unity連携
  • watchOSアプリ: ハンドジェスチャーによる直感的操作、CoreMLを活用した機械学習機能