🐷

SPIKE-RTの紹介

2022/12/24に公開

TOPPERS Advent Calendar 2022 24日目の記事です.

はじめに

こんにちは,名古屋大学情報学部コンピュータ科学科 3年生の朱義文(@envzhu)です.
SPIKE-RT は,LEGO® Education SPIKE™ Prime 向けソフトウェアプラットフォームです.
2021年から開発を続け,リリースまでの見込みが立ったので,記事として現状を紹介します.
内容はすべて記事公開日(2022年12月24日)における情報に基づきます.

LEGO® Education SPIKE™ Prime とは

LEGO® Education SPIKE™ Prime(以下「SPIKE Prime」)は,「小学校高学年から中高生向けの STEAM 学習セット」(公式製品ページより引用)です.
Prime Hub というプログラミング可能なデバイスとPUP(Powered Up)デバイスと呼ばれるセンサやモータなどの外部デバイスを組み合わせることで制御アプリケーションを開発することが可能です.

SPIKE-RT の概要

GitHub レポジトリ:spike-rt/spike-rt: An RTOS-based software platform for LEGO® Education SPIKE™. (WIP!)

公式のソフトウェプラットフォーム LEGO Education SPIKE App は,MicroPython がベースであり,アプリケーションのプログラミング言語は MicroPython と Scratch に対応しています.
一方,SPIKE-RT は,TOPPERS/ASP3カーネルをベースとしており,

  • C 言語によるプログラミング
  • RTOS によるリアルタイムプログラミング

のための環境をアプリケーション開発者に提供します.

実装状況

SPIKE-RTが提供している API (SPIKE API)のデバイスの対応表を示します.
SPIKE API を用いて,デバイスを制御する C言語アプリケーションを開発することが可能です.
表の通り,多くのデバイスに対応しており,アプリケーションを開発しやすくするための機能を検討・実装する段階に入っています.

デバイス API 対応
ハブ本体機能
マトリックス LED O
ステータス LED O
ボタン O
IMU X
スピーカ X
外部フラッシュメモリ X
バッテリ充電器 O
USB シリアル X
Bluetooth シリアル O
PUP デバイス
サーボモータ O
カラーセンサ O
超音波センサ O
フォースセンサ O

内部構造

SPIKE-RTの内部構造の説明

簡単に内部構造を説明します.
SPIKE-RTの全体構成

ソフトウェアの一番下で,TOPPERS/ASP3 カーネルを動作させています.
その上で,デバイス制御を行う Pybricks タスクと,ユーザが開発するアプリケーション・タスクが動作します.

前述の表のとおり,SPIKE Prime では多様なデバイスを制御できることが求められます.
しかし,このような多様なデバイスの制御を実現するデバイスドライバを0から実装することは非常に大変です.
そこで SPIKE-RT では,既存の SPIKE Prime 向けソフトウェアプラットフォームである Pybricks デバイスドライバ部分を少ない修正で動かす(Pybricks タスク)ことで,デバイス制御を低実装コストで実現しています.ASP3カーネル上への移植は,Pybricksのデバイスドライバのカーネルである Contikiを移植することで実現しています.

学術論文・受賞など

以下のコンテスト受賞と論文発表があります.

  • TOPPERS 活用アイデア・アプリケーション開発コンテスト 2022 アプリケーション開発部門 銀賞
  • 朱義文,李奕驍,松原豊,本田晋也:SPIKE-RT: LEGO SPIKE Prime向けリアルタイムソフトウェアプラットフォーム,情報処理学会研究会研究報告, Vol.2022-EMB-61 No.11, pp.1–6 (2022),http://id.nii.ac.jp/1001/00222073/

SPIKE-RT の使用を検討している方へ

ドキュメント

関連するドキュメントを以下に示します.

とりあえず動かして見る

まず,spike-rt/docs/Env.md を参考に開発環境の構築をしてください.
主にアプリケーション・コンテナの使用を想定しています.
spike-rt/docs/Test.md にテストアプリケーションのビルド方法と動作確認方法が書かれています.現状,テストログを確認するには,ポート F に UART 接続する必要があります.

Slack コミュニティ

中心的にコミットしているのが学生1人ということもあり,まだまだドキュメントの整備が不十分であったり,使いづらい部分があったりするかもしれません.
Slack (日本語のみ)に,質問・提案して頂けると大変助かります.
また.こちらを主として新機能や変更の周知を行いますので,ぜひ,ご参加下さい.

今後の展開

まずは,来年初めあたりを目標として,, IMU(Inertial Measurement Unit)への対応とサンプルアプリケーションを整備したところで,最初のリリースを行おうと思っています.
その後,C言語以外のプログラミング言語に対応することを考えています.
SPIKE Prime が小中高生の教育目的で使われているということで,将来的には教育現場での使用も視野に入れて,開発していきます.

以上

Discussion