SPIKE-RTの紹介
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の内部構造の説明
簡単に内部構造を説明します.
ソフトウェアの一番下で,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 の使用を検討している方へ
ドキュメント
関連するドキュメントを以下に示します.
- 日本語 README : spike-rt/README_ja.md
- 開発方法等の説明 : spike-rt/docs/ja/
- TOPPERS/ASP3 カーネルの API の使い方 :TOPPERS第3世代カーネル(ITRON系)統合仕様書
- SPIKE API(アプリケーションからデバイスを制御するための API): Doxygen ドキュメント
- 過去のイベントの発表資料 : spike-rt/materials
とりあえず動かして見る
まず,spike-rt/docs/Env.md を参考に開発環境の構築をしてください.
主にアプリケーション・コンテナの使用を想定しています.
spike-rt/docs/Test.md にテストアプリケーションのビルド方法と動作確認方法が書かれています.現状,テストログを確認するには,ポート F に UART 接続する必要があります.
Slack コミュニティ
中心的にコミットしているのが学生1人ということもあり,まだまだドキュメントの整備が不十分であったり,使いづらい部分があったりするかもしれません.
Slack (日本語のみ)に,質問・提案して頂けると大変助かります.
また.こちらを主として新機能や変更の周知を行いますので,ぜひ,ご参加下さい.
今後の展開
まずは,来年初めあたりを目標として,, IMU(Inertial Measurement Unit)への対応とサンプルアプリケーションを整備したところで,最初のリリースを行おうと思っています.
その後,C言語以外のプログラミング言語に対応することを考えています.
SPIKE Prime が小中高生の教育目的で使われているということで,将来的には教育現場での使用も視野に入れて,開発していきます.
以上
Discussion