0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

micro:bitでリアルタイムOSとAIを学ぶ - ライントレースロボットで体験するμT-Kernelと機械学習

Last updated at Posted at 2025-12-19

はじめに

この記事は 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回

学習の流れ

  1. ロボットがラインを外れたら人間がライン上に戻す
  2. micro:bitのBボタンを押して学習再開
  3. 1000回の試行で学習完了
  4. 学習した方策(Qテーブル)でライントレース実行
>rl        # 強化学習を開始(1000試行)
>rlact     # 学習した方策でライントレース
>rloutqtbl # Qテーブルの値を表示

学習過程が目に見える形で体験できるのがポイントです。

主要機能3: ロボットの姿勢推論(エッジAI)

micro:bitの加速度センサーを使って、ロボットの転倒状態を推論します。ニューラルネットワークによる5クラス分類を実装しました。

μT-Kernel × AIの学習環境_推論実行時.001.jpg

推論する5つの状態

  1. 転倒なし
  2. 右に転倒
  3. 左に転倒
  4. 前に転倒
  5. 後ろに転倒

AIワークフロー(エッジAI体験)

  1. データ収集: micro:bitのコマンドで加速度データを取得
    >readaccglp  # 加速度データを連続取得(10秒間)
    
  2. データ整形: Pythonスクリプトでcsv整形
  3. 学習: Sony Neural Network Console(NNC)でニューラルネットワークを学習
  4. モデル出力: NNCでマイコン用のCコードを生成
  5. 組み込み: 生成されたCコードをμT-Kernelプロジェクトに統合
  6. 推論実行: 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の周期ハンドラ

実際に動かしてみる

必要な機材

開発環境

  • GNU Arm Embedded Toolchain: ARMマイコン用コンパイラ
  • pyOCD: micro:bitへの書き込みツール
  • Neural Network Console: ニューラルネットワークの学習・評価(Windows)

詳しい環境構築手順は操作マニュアルを参照してください。

動作確認

  1. micro:bitとライントレースロボットを接続
  2. シリアルターミナル(115200bps)で接続
  3. コマンドを実行
>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の世界を楽しく学んでいただければ幸いです。

リンク

この記事が、micro:bitでのリアルタイムOSやAI開発に興味を持つきっかけになれば嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?