Rust on EV3RTの構築手順(ETロボコンにRustで参加しようと思っている方向け)
この記事はETロボコン&EV3 Advent Calendar 2018 - Qiitaの22日目の記事です。
来年のETロボコンにRustで参加する人のために、プロジェクトをビルドして実機で動作させる手順を記載します。
本記事は、以下の環境で検証しています。
EV3RT開発環境のインストール
qiita.com
こちらの記事を参考に、EV3RTの環境を構築します。
Rustのインストール
Rustのツールチェイン管理ツールであるrustupをインストールして、必要なコンパイラを追加します。
$ curl https://sh.rustup.rs -sSf | sh
$ rustup default nightly
$ rustup target add armv5te-unknown-linux-gnueabi
Rust on EV3RT SDKのインストール
hrp2をダウンロードしたディレクトリに移動して、Rustのサンプルプロジェクトのリポジトリをダウンロード及び解凍します。
$ pwd /mnt/c/Users/hogehoge/Documents/hrp2 $ wget https://github.com/TK-R/ev3rt-hrp2-sdk-rust/archive/0.1.zip $ unzip 0.1.zip $ cd ev3rt-hrp2-sdk-rust-0.1/workspace
サンプルプログラムの確認
ダウンロードしたリポジトリは下記の構成となっています。
$ tree rust-sample rust-sample/ ├── Cargo.lock ├── Cargo.toml ├── Makefile.inc ├── app.c ├── app.cfg ├── app.h ├── balancer.c ├── balancer.h ├── balancer_param.c ├── balancer_private.h ├── src │ ├── ev3 │ │ ├── balancer.rs │ │ ├── battery.rs │ │ ├── button.rs │ │ ├── ev3rt.rs │ │ ├── lcd.rs │ │ ├── led.rs │ │ ├── mod.rs │ │ ├── motor.rs │ │ └── sensor.rs │ ├── lib.rs │ └── sample.rs ....
この中で、lib.rsがプログラムのエントリポイントであり、balancer~のソースコードが公式から提供されている倒立振子ライブラリとなります。
先日の記事で紹介したように、FFIを持ちいて呼び出すことで、C言語のライブラリを資産として活用しつつ、
呼び出し側は安全なRustによって記述することができています。
ソースコードのビルドとインストール
続いて上記のソースコードをビルド、インストールします。
EV3とBluetoothで接続した状態で、以下のコマンドを実行します。
$ make app=rust-sample $ ll total 484 drwxrwxrwx 1 tk-r tk-r 4096 Dec 20 23:37 ./ drwxrwxrwx 1 tk-r tk-r 4096 Dec 20 23:21 ../ -rwxrwxrwx 1 tk-r tk-r 4516 Dec 20 23:06 Makefile* -rwxrwxrwx 1 tk-r tk-r 485832 Dec 20 23:42 app* drwxrwxrwx 1 tk-r tk-r 4096 Dec 20 23:42 rust-sample/
出力されたappがEV3RTで実行可能なアプリケーションとなりますので、Bluetooth/USBなどの方法でSDカードにコピーします。
β7-2の環境でコピーするなら、Bluetoothが一番簡単かと思います。
ビルドしたプロジェクトを実行するには、センサとモータを以下の通りに接続します。
- Lモータ : PortC
- Rモータ : PortB
- 尻尾モータ : PortA
- タッチセンサ : Port1
- ジャイロセンサ : Port4
起動後、タッチセンサを操作すると倒立振子で直進します。
www.youtube.com
動きました。
最後に
この記事が、ETロボコンにRustで参加する方の手助けになれば幸いです。