【LEGO EV3でリアルタイムOSを学ぶ no.1】開発環境の構築とGyroBoyを動かした!

シェアする

LEGOマインドストームEV3は以前から手元にあったんですが,何かとバタバタしていたので遊べないで来ましたが(と言い訳してみる),少しずつでも進めていこうかなと思ったのでまた再開してみます.

で,最終目標はこのEV3でリアルタイムOSの勉強までしちゃおうって魂胆です.いつまでかかることやら分かりませんけどね(笑)

何はともあれ,最初にすべきことは開発環境の構築.TOPPERS/EV3RTのホームページに詳しく書いてますので,何も難しいことはないです.その通りの手順でやればOK.

・・・なんですが,一応,私がやった様子を残していきますね.使用したパソコンはMacなので,Mac上での話になりますのでご注意を.WindowsやLinuxは分かりません.

EV3RTのインストール

で,先ずはこちらのページの手順をみます.

開発プラットフォームのEV3RTをダウンロードします.一応,リンク先の最新版(現時点では,β7-1が最新)を選択.

ダウンロードして解凍すると,こんな感じ.この中で重要なのは「hrp2.tar.xz」なので,これを作業用フォルダにコピペ.私はEV3-programというフォルダを作成し,そこへコピペしました.

そして,あとは手順どおり,ターミナルからtarで解凍します.

すると,解凍されたファイルがhrp2という名前のフォルダで作成されます.

これで,EV3RTの構築は完了です.

mkimageのインストール

他にも,gcc,mkimage,GNUツールチェーン,EV3RTコンフィギュレータをそれぞれインストールします.gccはすでにインストール済みなので省略.

最初はmkimageをインストール.ファイルはこちらからダウンロード.

ん?ダウンロードしたファイルにはdmsという拡張子がついてしまいます.

ま,細かいことは気にしないで(笑),この拡張子を削除して,/usr/local/bin/へコピーします.

GNUツールチェーンのインストール

そして,ARMのGNUツールチェーンです.gcc-arm-none-eabi-5_4-2016q2-20160622-mac.tar.bz2が動作確認バージョンとのことで,ちょっと古いですけどこちらをダウンロードし,解凍したものをホームディレクトリへコピペ.

そして,.bashrcの中でgcc-arm-none-eabi-5_4-2016q2/binにパスを通しておきます.

EV3RTコンフィギュレータをインストール

次は,コンフィギュレータをダウンロード.作業自体は大したことないですけど,ブログに書くのは結構面倒ですね(苦笑).

ダウンロードしたら,cfg-osx-static-1_9_4.tarというファイルになったので,これをさらにダブルクリックして解凍すると,cfgというファイルに解凍されました.

このcfgというファイルを,作業用フォルダEV3-programの下にあるhrp2/cfg/cfg/へコピペ.

開発環境の構築はここまで.

サンプルプログラムをコンパイル

ということで,サンプルを動かして見ます.先ずはコンパイルがうまくいくかどうか.

作業用フォルダのEV3-programへ移動したのち,hrp2/sdk/workspace/に入り,そこでmakeを実行.するとコンパイルが開始される.

最後にLoad AddressとEntry Pointが表示されると無事完了.ふぅ,あとはこれをSDカード(Micro SDカード)に書き込んで,EV3に挿して起動すればOKです.

サンプルプログラムを実行

サンプルはGyro Boyというプログラム.簡単な倒立振子です.前傾して倒れそうになれば前方に進み,後傾して倒れそうになれば後方に進み,2輪だけで倒れないようにバランスをとるプログラムです(制御工学の基礎!)

実際に動作した様子はこんな感じです↓ 起動すると,EV3RTという表示とともにTOPPERS/HRP2リアルタイムOSで動いていることが確認できます(サンプルコードの解析は次回以降で).

本体の組み立て方はこちら結構骨が折れます💧 組み立てだけでも,休憩なしで2時間くらいは見ておいた方がいいですね(今回一番時間がかかりました.息子にも手伝ってもらいました).

実は一番苦労するのはプログラム開発よりも,しっかりとした構造のロボットをデザインすることかもしれません.LEGOは金属加工(板金,溶接など)を必要としないので,ブロックをつなぎ合わせるだけで楽に作れる「おもちゃ」のようなイメージを抱いてましたが,とんでもない!全然侮れません.

少なくともここまで完成度の高いロボットを完全オリジナルで作ることは今の私には不可能です.意外な発見でした.リアルタイムOSの勉強のつもりで始めたLEGOでしたが,ロボットをデザインする方にも興味が出て来ました(笑)




スポンサーリンク