2025年2月20日
024-1.SPIKEプライムに「SPIKE-RT」を導入して、C言語で開発してみる
この記事では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」で動作する「SPIKE-RT」について簡単に紹介します。(文/松原拓也)
◆ 開発環境を準備する
「SPIKE-RT」は名古屋大学が開発したSPIKE用のリアルタイムOSのプラットフォームです。純正の開発環境には「SPIKEアプリ」があり、プログラムの実行にはMicroPythonが使われています。それに対して、SPIKE-RTにはプログラミング言語に「C言語」を採用しています。SPIKE-RTは以下のWebページで公開されていて、無償で使用することができます。
https://github.com/spike-rt/spike-rt/blob/main/README_ja.md
SPIKE-RTの大きな特徴はリアルタイムOSであることです。このため、厳密に時間を管理した制御を行うことができます。組み込み技術者向けのロボット競技会「ETロボコン」では2023年度からSPIKE-RTを採用しています。
SPIKE-RTの開発環境の対応OSはUbuntu(Linux)です。Windows搭載パソコンでLinuxを使用するにはWSL(Windows Subsystem for Linux:Linux用Windowsサブシステム)という機能を使わないといけません。しかし、これがなかなかの曲者で、WSLが期待どおりに動作してくれません。筆者の場合は2台のパソコンにUbuntuをインストールしてみましたが、2台とも一発ではインストールに成功しませんでした。
この記事ではアフレルが販売している「レゴ エデュケーションSPIKEプライム C言語プログラミングブック(以下、C言語プログラミングブック)」という教材で配布しているSPIKE-RTの開発環境を使うことにします。同製品の紹介ページは以下の通りです。
https://afrel.co.jp/product/spike/c-language/
Ubuntuのインストールに成功すると、このように「Linux」という仮想ドライブが作られます。その中の「Ubuntu」フォルダにLinux用のファイルを格納されています。
この例ではユーザー名を「user」としたので、「home/user」フォルダの中にSPIKE-RTのライブラリ、サンプルプログラムなどがあります。
◆ SPIKE-RT用のプログラムを作る
SPIKE-RTの資料にはUARTの制御方法が書かれてなくて、非常に悩みましたが、動作テストプログラムの「TEST」の中にヒントがあったので、どうにか解決することができました。
なお、ここまでの記事に登場した「start.sh」「create-program.sh」「build.sh」「write.sh」はC言語プログラミングブックのためにアフレルが開発した専用のスクリプトです。
◆ UARTの送受信実験
ラズパイPicoの他に「SPIKE用コネクタ」「ジャンパーワイヤー」「ブレッドボード」を用意します。 「SPIKE用コネクタ」はラージハブのポートに接続するコネクタです。「Power Functions2.0コネクタ」や「Wedo2.0コネクタ」とも呼ばれています。困ったことに、SPIKE用コネクタは純正品を単体で入手する方法がありません。距離センサーをトルクスドライバーで分解して流用するすることは可能ですが、ベストな方法ではありません。中国の通販サイトではコネクタの模造品が販売されていますが、なんらかの権利を侵害していると思われるのでオススメできません。 そこで、筆者の場合はプリント基板でSPIKE用コネクタを自作しました。国内の基板屋さんに発注したので、数万円の出費が生じてしまったのが難点です。プリント基板のCADデータは以下のページで公開しています。 https://github.com/Afrel-SPIKE-Prime-tec/spikeconnector
SPIKE-RTの魅力の一つはUARTを自由に制御できることです。この機能を活かして、いろいろな面白い使い方ができるかもしれません。
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。