はじめに
この記事は micro:bit Advent Calendar 2025 の記事です。
micro:bit v2.21とライントレースロボットを使って、リアルタイムOS(μT-Kernel 3.0) と AI(機械学習) を学べる開発環境を作成しました。このプロジェクトはTRONプログラミングコンテスト2025の開発環境・ツール部門への応募作品です。
TRONプログラミングコンテストは、TRON関連技術を活用した作品を募集するコンテストで、今回は「学習環境」をテーマに、個人で購入可能な安価な機材を使って誰でも気軽にリアルタイムOSとAIを体験できる環境を目指しました。
なぜmicro:bitなのか?
本プロジェクトでmicro:bitを選んだ理由は以下の3点です。
1. 入手しやすく、コストが手頃
micro:bit本体は2,000円程度、ライントレースロボットベースも約10,000円と、個人でも購入しやすい価格帯です。専門的な開発ボードと比較して、学習用途としてハードルが低いのが魅力です。
2. 充実したハードウェア機能
micro:bit v2.21(nRF52833搭載)は、教育用ボードでありながら本格的な機能を備えています:
- ARM Cortex-M4プロセッサ(64MHz) - リアルタイムOSを動かすのに十分な性能
- 3軸加速度センサー(LSM303AGR) - AI推論のデータソースとして活用
- 5x5 LEDマトリックス - 状態表示に便利
- 2つのボタン + タッチロゴ - ユーザーインタラクション
- 温度センサー、スピーカー - その他の応用にも対応
3. 教育分野での実績
micro:bitは世界中の教育現場で使われており、ドキュメントやコミュニティが充実しています。学習環境を作るには最適なプラットフォームです。
プロジェクトの概要
このプロジェクトでは、micro:bitにμT-Kernel 3.0(TRONプロジェクトが開発するリアルタイムOS)を移植し、ライントレースロボットの制御を通じて以下の3つの主要機能を実装しました。
主要機能1: ライントレース
フォトリフレクター(ラインセンサー)で黒いラインを検出し、ロボットがライン上を走行します。ロボット制御の基本要素をバランスよく体験できます:
- 入力: 3つのフォトリフレクター(P0/P1/P2)で黒ラインを検出
- 演算: ラインとロボットのズレから進行方向を決定
- 制御: PWMでDCモーターを制御
micro:bitのハードウェア活用
- ADC(A/D変換): フォトリフレクターのアナログ値(0〜1023)を読み取り
- PWM: nRF52833のPWMペリフェラルでモーター速度を精密制御
- GPIO: ライントレースロボットとのインターフェース
>trrun # ライントレース開始
>trstop # ライントレース停止
主要機能2: 強化学習
ロボットが試行錯誤を繰り返してライントレースを学習します。機械学習の入門として最適なQ学習を実装しました。
- アルゴリズム: Q学習(ε-greedy法)
- 状態: 4状態(センサーの組み合わせ)
- 行動: 3行動(左・直進・右)
- 試行回数: 1000回
学習の流れ
- ロボットがラインを外れたら人間がライン上に戻す
- micro:bitのBボタンを押して学習再開
- 1000回の試行で学習完了
- 学習した方策(Qテーブル)でライントレース実行
>rl # 強化学習を開始(1000試行)
>rlact # 学習した方策でライントレース
>rloutqtbl # Qテーブルの値を表示
学習過程が目に見える形で体験できるのがポイントです。
主要機能3: ロボットの姿勢推論(エッジAI)
micro:bitの加速度センサーを使って、ロボットの転倒状態を推論します。ニューラルネットワークによる5クラス分類を実装しました。
推論する5つの状態
- 転倒なし
- 右に転倒
- 左に転倒
- 前に転倒
- 後ろに転倒
AIワークフロー(エッジAI体験)
-
データ収集: micro:bitのコマンドで加速度データを取得
>readaccglp # 加速度データを連続取得(10秒間) - データ整形: Pythonスクリプトでcsv整形
- 学習: Sony Neural Network Console(NNC)でニューラルネットワークを学習
- モデル出力: NNCでマイコン用のCコードを生成
- 組み込み: 生成されたCコードをμT-Kernelプロジェクトに統合
- 推論実行: micro:bit上でリアルタイム推論
>posture_infer # 姿勢推論を実行
[posture] id=0 (normal(label_id_0)) p=0.99 ax=-0.040g ay=-1.036g az=-0.024g
micro:bitのAI活用
- 加速度センサー(LSM303AGR): I2C通信で3軸加速度を取得
- エッジAI推論: Sony nnabla-c-runtime(v1.38.0)をmicro:bit上で動作
- リアルタイム性: μT-Kernelのタスク管理で推論処理を実行
機械学習の一連の流れ(データ収集→学習→推論)を、すべてmicro:bitを使って体験できます。
μT-Kernel on micro:bit のアーキテクチャ
リアルタイムOS(μT-Kernel 3.0)の役割
μT-Kernelは以下のタスク管理を実現しています:
- ntshell_task: コマンドラインインターフェース(NT-Shell)
- log_task: データロギング
- rl_learning_task: 強化学習の訓練ループ
- rl_action_task: 学習した方策の実行
- posture_inference_task: ニューラルネットワーク推論
- trace_task: ライントレース制御(周期ハンドラ)
これらのタスクが協調動作することで、複雑な制御とAI処理を同時に実現しています。
micro:bitハードウェアの活用例
| ハードウェア | 用途 | μT-Kernelでの実装 |
|---|---|---|
| ADC | フォトリフレクター読み取り | デバイスドライバ(device/adc/) |
| PWM | モーター制御 | app_sample/pwm.c/h |
| I2C | 加速度センサー通信 | device/i2c/, app_sample/acceleration_sensor.c |
| UART | シリアル通信(コンソール) | device/ser/, NT-Shell統合 |
| GPIO | ボタン、LED | app_sample/button.c, led.c |
| タイマー | 周期タスク | μT-Kernelの周期ハンドラ |
実際に動かしてみる
必要な機材
- micro:bit v2.21: 約2,000円
- ライントレースロボット: micro:bit用ロボットベース(ラインセンサー)組立済(9,900円)
- USBケーブル(マイクロB-A): 2m以上推奨
- 単3電池: 3個
- ライントレースコース: A3用紙に印刷
開発環境
- GNU Arm Embedded Toolchain: ARMマイコン用コンパイラ
- pyOCD: micro:bitへの書き込みツール
- Neural Network Console: ニューラルネットワークの学習・評価(Windows)
詳しい環境構築手順は操作マニュアルを参照してください。
動作確認
- micro:bitとライントレースロボットを接続
- シリアルターミナル(115200bps)で接続
- コマンドを実行
>help # 全コマンド一覧
>getls # ラインセンサー値取得
>drivemotor 30 30 500 # モーター駆動テスト
>readaccg # 加速度センサー値取得
>trrun # ライントレース開始
すべてのコマンドが用意されているので、段階的に機能を確認できます。
学習環境としてのポイント
1. 段階的な学習が可能
各機能を独立して学習できるコマンド群を用意しています:
- センサー読み取り(
getls,readaccg) - モーター制御(
drivemotor) - ボタン入力(
getbtn) - ライントレース(
trrun) - 強化学習(
rl,rlact) - AI推論(
posture_infer)
2. 実際に目で見て体験できる
強化学習の試行錯誤やライントレースの動き、転倒状態の推論など、すべて物理的な動きとして確認できます。
3. オープンソース
すべてのソースコードをGitHubで公開しています。コードを読んで学習したり、改造したりできます。
4. 充実したコマンドラインツール
NT-Shellによるコマンドライン操作で、デバッグ機能も充実:
- メモリダンプ(
mr) - Qテーブル設定(
rlsetqtbl) - デバイスID取得(
getdevid) - LED制御(
ledset) - スピーカー(
speaker)
まとめ
micro:bitとライントレースロボットを使って、リアルタイムOSとAIを気軽に学べる環境を実現しました。
micro:bitの魅力を再発見
教育用ボードとして知られるmicro:bitですが、本格的なリアルタイムOS(μT-Kernel)を動かし、AI推論まで実行できるポテンシャルを持っています。ARM Cortex-M4、豊富なペリフェラル、そして手頃な価格という組み合わせは、学習環境として理想的です。
組み込みシステムとAIの融合
今回のプロジェクトでは、以下を1つの環境で体験できます。
- リアルタイムOSによるマルチタスク制御
- センサー・アクチュエータ制御
- 強化学習によるロボット学習
- エッジAIによる推論処理
これらはIoTやロボティクスの分野で必要とされる技術です。
次のステップ
このプロジェクトをベースに、さらに発展させることができます。
- 別の機械学習アルゴリズムの実装
- カメラセンサーの追加
- 無線通信(BLE)の活用
- より複雑なコース走行
- 他のセンサー(温度、照度など)の統合
micro:bitとμT-Kernelの組み合わせで、組み込みシステムとAIの世界を楽しく学んでいただければ幸いです。
リンク
- ソースコード: https://github.com/grace2riku/mtkernel_3_microbit
- 操作マニュアル: operation_manual.md
- μT-Kernel情報: TRON Project micro:bit連載
- ライントレースロボット: micro:bit用ロボットベース
この記事が、micro:bitでのリアルタイムOSやAI開発に興味を持つきっかけになれば嬉しいです!
