目次
章 | タイトル | 内容 |
---|---|---|
1 | はじめに | この記事について |
2 | 開発環境構築 | 環境構築について説明 |
3 | 最後に | この後やる事について説明 |
1. はじめに
この記事は 【SPIKE-RTでロボコンに出よう!!】シリーズ の #1 開発環境を作ろう に対する補足記事となります。
#1 では、開発環境構築をテーマに、主にWindows(WSL) でEV3rtの開発環境を作成する方法を紹介しました。
それ以外のOSについての紹介はしていなかったため、#1-2でmacOS版の構築方法を解説しました。
そして本記事では、 Linux/Ubuntu での構築方法を紹介していきます。
本質的には #1 と同じ内容ですが、WSL特有の設定が多く含まれていたので、それらを取り除き、そして実際にUbuntu環境に構築し検証した記事となります。
環境構築以外の説明 (#1の「SPIKE-RTとは?」など) は省いていきますので、そちらはご自身で #1 の記事をご覧ください。
2. 開発環境構築
Step 1. ビルド環境の構築
ビルド環境を構築します。
ビルドとは要するにコンパイルすることです。
SPIKE-RTのビルド環境は、「コンテナ」というパッケージングされたものが提供されており、これを「Docker」というシステムに適用して使います。
ソースコードのダウンロード
Dockerの話の前に、SPIKE-RTのソースコードをクローン(ダウンロード)していきます。
ソースコードは、以下のGitHub上のリポジトリにあります。
以下のコマンドによりソースコードをクローンしましょう。
$ git clone https://github.com/spike-rt/spike-rt.git
もしSPIKEハブの ポートFを開放した状態 (モーターやセンサーに使える状態) でセットアップしたい場合は、#1の後に公開した「ショートカット版開発環境構築」にて紹介している、私がフォークしたGitHubリポジトリからクローンしてください。
↓私がフォークしたGitHubリポジトリはこちらから
$ git clone https://github.com/Koushiro-Achioku/spike-rt.git
クローン後、ls
コマンドを実行し、spike-rtというフォルダが確認されればクローン完了です。
rubyコードの修正
公式のリポジトリからクローンした場合は以下の作業を行ってください。
私のリポジトリからクローンした場合は対応済みのため必要ありません。
SPIKE-RTのアップデートに伴い、rubyのバージョンが3系に上がったようです。
これにより、ソースコードの修正が必要な箇所があります。
編集するのは spike-rt/asp3/cfg/pass1.rb
の 181行目 です。
# 元のコード
symvalCsv = CSV.open(symvalTableFileName, { skip_blanks: true, skip_lines: /^#/ })
# 修正後のコード
symvalCsv = CSV.open(symvalTableFileName, skip_blanks: true, skip_lines: /^#/ )
詳しくは 「もっと!後輩たちのEV3rt講座」 の方で詳しく解説しておりますので、そちらを参照してください。
Step 2. Dockerの導入
次に行うコンテナ・イメージのプルの前に、Ubuntu内にDockerを導入しておく必要があります。
以下の記事を参考に、導入の手順を進めてください。
上記記事内の
- dockerリポジトリの設定
- 準備
- リポジトリの登録
- Dockerのインストール
- Dockerのインストール
の部分を行ってくだささい。
導入完了後、以下のコマンドによりDockerが正しく入っているか確認しておくことをおすすめします。
コンテナ・イメージのプル
次に、Github上にあるDockerのコンテナ・イメージをプル(つまりダウンロード)してきます。
ターミナルを開いて、以下を実行してください。
$ docker pull ghcr.io/spike-rt/spike-rt:v0.2.0-rich
コンテナのアタッチと起動
プルしてきたコンテナをDockerにアタッチして起動します。
$ docker run --rm -it -v $(pwd):$(pwd) -w $(pwd) ghcr.io/spike-rt/spike-rt:v0.2.0-rich /bin/bash
ここで、行の先頭に sudo
というコマンドがありますが、こちらは 「管理者権限で実行する」 という意味です。
この際、パスワードの入力が求められますので、Ubuntuのログインに使用するパスワードを入力してください。
Step 3. 転送方法の構築
続いて、HubブロックをUbuntuに接続して、ビルドした実行ファイルをHubブロックに転送する方法を構築します。
dfu-utilのインストール
SPIKEに実行ファイルを転送するのに使用するライブラリを、apt経由でインストールします。
$ sudo apt-get install dfu-util
PyUSBの導入
HUBブロックに実行ファイルを転送するために、Pythonのスクリプトを使用します。
又、そのスクリプト内で、DFU ModeのUSBデバイスに実行ファイルを転送するためのライブラリ pyusb をインストールします。
まずは、Pythonを導入する必要がありますが、今回は仮想環境下にインストールしたいと思います。
Pythonの仮想環境を、apt経由でインストールします。
ターミナルを開いて、以下のコマンドを実行していきましょう。
$ sudo apt install python3-venv
次に、spike-rt/tools/python
のディレクトリに、Pythonの仮想環境を作成します。
最後に、仮想環境下に、Pythonのパッケージ管理ツールであるpipを用いて、pyusbをインストールします。
同じくUbuntuのターミナルにて以下のコマンドを実行していきましょう。
$ python3 -m venv ./spike-rt/tools/python
$ ./spike-rt/tools/python/bin/pip install pyusb
ソースコード修正
こちらもソースコードの修正が必要な箇所があるため、修正します。
修正を行うのは spike-rt/external/libpybricks/micropython/tools/pydfu.py
の 80行目です。
以下のように書き換えてください。
# 修正前
getargspec = getattr(inspect, "getfullargspec", inspect.getargspec)
# 修正後
getargspec = getattr(inspect, "getfullargspec", inspect.getargs)
以上で、実行ファイルの転送方法の構築は完了です。
Step 4. ビルドのテスト
それでは、構築した開発環境が正しく動作するか、ビルドのテストを行いたいと思います。
ターミナルを開いて、以下の操作を行ってください。
初めに、GithubからプルしてきたSPIKE-RTのフォルダに移動します。
$ cd spike-rt
ここで、Dockerがアタッチされていない方は、アタッチしておきましょう。
docker run --rm -it -v $(pwd):$(pwd) -w $(pwd) ghcr.io/spike-rt/spike-rt:v0.2.0-rich /bin/bash
次に、以下のコマンドを実行して、scripts
フォルダ内の build-test.sh
というシェルスクリプトを実行します。
$ ./scripts/build-test.sh
ここで必要なファイルの生成、およびコンパイルが行われるため、ターミナルには文字がザーっと流れます。
正しくビルドできたかどうかを見分けるには、実行完了時にターミナルに以下👇の文字列が表示されているかを確認すれば良いです。
arm-none-eabi-objcopy -O binary -S asp asp.bin
+ cd ..
これにて、開発環境構築は完了です!!
3. 最後に
Windows(WSL) 版では、前章のビルドテストまでで#1が終わっているので、ここから #2 エディタを使おう(VisualStudio Code) に合流して貰えればと思います。
今回、実行ファイルをHubブロックに転送するテストは行っていませんので、出来ればそのテストを行う #3 テンプレートファイルとシェルスクリプトの作成 まで一気に行い、確認していただくのが良いかと思います。