LoginSignup
5
4

More than 5 years have passed since last update.

MacでLego Mindstorms NXT環境構築 in 2018

Last updated at Posted at 2018-10-11

目的

大学の講義でNXTを用いた授業があるが,授業で提供されている資料が古く,Macの人が環境構築できない現状である.
そのため,備忘録として自分が環境構築した方法を残しておく.

エラー対処については適時追加する.

環境

  • MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
  • macOS 10.13 (High Sierra)

手順

1.Wineのインストール

Windowsのファイルを実行するために用いる.
brewを用いるため,導入していない人は自分で調べて導入してほしい.
以下のコマンドを実行してwineを導入する.

$ brew install wine

実行後,/usr/local/bin/wineconsoleのファイルが存在することを確認する.

2.YAGARTOのインストール

コンパイラツールであるYAGARTOをダウンロードする.

その前に,NXTで用いる環境をまとめるディレクトリを作る.
筆者はホームディレクトリ直下にNXTというディレクトリを作成した.

こちらのサイトから
yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_intelmac_20111119.dmg
をダウンロードする.

ダウンロード後,dmgを実行しyagarto-4.6.2と出てくるので,先ほど作成したNXTに移して実行.
そうすると,yagarto-4.6.2というディレクトリが出てくる.
このディレクトリをyagartoに名前を変更する.

3.nxtOSEKのダウンロード

こちらのサイトからダウンロードする.
筆者はnxtOSEK_v218.zipをダウンロードした.

ダウンロード終了後,2にて作成したNXTの直下に配置する.
この時点でのNXT内は以下のようになっている.

NXT
├── nxtOSEK
├── yagarto
└── yagarto-4.6.2.app

しかし,現状では必要ファイルが不足している.

そのため,こちらからosek_os-1.1.lzhをダウンロードする.
その後,解凍をして出てきたtoppers_osek/sg/sg.exeNXT/nxtOSEK/toppers_osek/sgにコピーをする.

この時点でのNXT/nxtOSEK/toppers_osek/sg内は以下のようになっている.

NXT/nxtOSEK/toppers_osek/sg
├── impl_oil
├── lego_nxt.sgt
└── sg.exe

4.NeXTToolのインストール

NXTにプログラムを送信するために用いる.
NeXT ToolsではなくNeXTToolである為間違えないように.

Download for Mac OSX (universal binary)とある場所からダウンロードする.
スクリーンショット 2018-10-11 13.45.55.png

ダウンロード後,2で作成したNXTの直下に配置する.
この時点でのNXT内は以下のようになっている.

NXT
├── nexttool
├── nxtOSEK
├── yagarto
└── yagarto-4.6.2.app

5.NXT Fantom Driverのインストール

パソコンにNXTを認識させるために用いる.
こちらのサイトからダウンロードする.

ページ下部の方にあるため,見落とさないように.
スクリーンショット 2018-10-11 13.35.51.png

ダウンロード後,解凍して出てきたMAC legodriver.pkgを実行する.

6.makeのための準備

現在のままだとCygwinを用いるようになっているため,Macでも問題がないように変更する.

以下の4箇所を探して変更する.各々の設定に合わせて変更してほしい.

NXT/nxtOSEK/ecrobot/tool_gcc.mak
9行目
- GNUARM_ROOT = /cygdrive/C/cygwin/GNUARM
+ GNUARM_ROOT = /Users/vivid344/NXT/yagarto  # YAGARTOのパス

14行目
- NEXTTOOL_ROOT = /cygdrive/C/cygwin/nexttool
+ NEXTTOOL_ROOT = /Users/vivid344/NXT  # nexttoolがあるパス

21行目
- TARGET_PREFIX :=arm-elf
+ TARGET_PREFIX :=arm-none-eabi

38行目
- NEXTTOOL  = NeXTTool.exe
+ NEXTTOOL  = nexttool

また,Wineや,cygpathで現状だとエラーが起きるため変更を行う.

Cで開発を行う場合は以下の2箇所の修正を行う.

NXT/nxtOSEK/ecrobot/ecrobot.mak
312行目
- WINECONSOLE := /Applications/Wine.app/Contents/MacOS/startwine wineconsole
+ WINECONSOLE := /usr/local/bin/wineconsole

335〜336行目
- $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg $(shell cygpath -m -w ${TOPPERS_OSEK_OIL_SOURCE}) \
-         -os=ECC2 -I$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/impl_oil -template=$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/lego_nxt.sgt
+   $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg.exe $(TOPPERS_OSEK_OIL_SOURCE) -os=ECC2 -I${TOPPERS_OSEK_ROOT_SG}/sg/impl_oil -template=${TOPPERS_OSEK_ROOT_SG}/sg/lego_nxt.sgt

C++で開発を行う場合は以下の2箇所の修正を行う.

NXT/nxtOSEK/ecrobot/ecrobot++.mak
316行目
- WINECONSOLE := /Applications/Wine.app/Contents/MacOS/startwine wineconsole
+ WINECONSOLE := /usr/local/bin/wineconsole

339〜340行目
- $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg $(shell cygpath -m -w ${TOPPERS_OSEK_OIL_SOURCE}) \
-         -os=ECC2 -I$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/impl_oil -template=$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/lego_nxt.sgt
+   $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg.exe $(TOPPERS_OSEK_OIL_SOURCE) -os=ECC2 -I${TOPPERS_OSEK_ROOT_SG}/sg/impl_oil -template=${TOPPERS_OSEK_ROOT_SG}/sg/lego_nxt.sgt

続いて,各関数を呼び出すために必要なファイルをmakeする.
NXT/nxtOSEK/ecrobot/cにて以下のコマンドを実行する.

$ make all
$ make release

これをNXT/nxtOSEK/ecrobot/c++NXT/nxtOSEK/ecrobot/biosNXT/nxtOSEK/ecrobot/nxtway_gs_balancer/にても同様に行う.

7.実際にmakeする

Cで行う人はNXT/nxtOSEK/samples_c/helloworld
C++で行う人はNXT/nxtOSEK/samples_c++/cpp/Helloworld
にて以下のコマンドを実行する.

$ make all

実行後,.rxeファイルが生成される確認する.
生成されない場合,6にて変更した箇所が間違っている可能性がある.

8.ロボットで実行する

NXTとPCをUSBで繋ぎ,NXTの電源を入れる.
その後以下のコマンドを実行する.

$ ./rxeflash.sh

その後,ロボット側で実行し,該当ファイルがあるかを確認.

以上で終了.

まとめ

以上で筆者の環境では構築することが出来た.
今後新しく開発をするときには,NXT/nxtOSEK/の下で開発をする.
またMakefileのNXTOSEK_ROOTを各々の環境に書き換えてからmakeを行うように.

参考

ETロボコン開発環境構築 for Mac

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4