LEGO MINDSTORMS EV3でPythonを使う

| Topic path: Top / 強化学習 / LEGO MINDSTORMS EV3でPythonを使う

*はじめに [#m1f47301]

LEGO MINDSTORMS EV3で強化学習をするため、Pythonを使います。

EV3本体は、Micro SDカードが挿入されている状態で電源を入れると、Micro SDカードからOSを起動します。

そこで、Micro SDカードにev3devというLinuxのイメージファイルを入れて、EV3本体に挿入し、このOSを起動します。

無線LANでネットワークに接続し、パソコンからEV3上で動いているLinuxにsshでリモートログインし、Pythonプログラムを動かします。

次の環境で確認しました。
-macOS Sierra 10.12.5
-ev3dev 2017-09-14



*準備したもの [#h865ed9b]

-無線LAN子機 Buffalo WLI-UC-GNM2S
-Micro SDカード 8GB 

 
*ダウンロード [#q51ca082]

次のページから、LEGO MINDSTORMS EV3用のファイルをダウンロードします。
-http://www.ev3dev.org/downloads/


*Micro SDカードへのインストール [#ab805758]

ダウンロードしたZipファイルを展開します。
すると、イメージ・ファイル (*.img) が作成されます。

MacにMicro SDカードを(差し込んだSDカード・アダプターを)差し込みます。

dfコマンドで、Micro SDカードのボリューム名とデバイス名を確認します。
#geshi(sh){{
$ df -k
}}
ボリューム名は /Volumes/NO NAME という感じのヤツ、デバイス名は /dev/disk*s* という感じのやつです。

diskutilコマンドで、SDカードをアンマウントします。
#geshi(sh){{
$ diskutier unmount /Volumes/NO\ NAME
}}

ddコマンドで、イメージ・ファイルをMicro SDカードに書き込みます。
{{
$ sudo dd if=ev3dev-jessie-ev3-generic-2017-09-14.img of=/dev/rdisk2 bs=1m
}}
ここで、if= の後にはイメージ・ファイルの名前、of= の後にはデバイス名の /dev/ より後の部分の先頭に r をつけて、最後の *s を取り除いたものです。
管理者でないと実行できないので、sudo で実行し、パスワードを入力します。

うまくできると、次のような感じで出力されます。
#geshi(sh){{
1800+0 records in
1800+0 records out
1887436800 bytes transferred in 62.141452 secs (30373233 bytes/sec)
}}

ddコマンドでの書き込みが成功すると、自動的にマウントされるので、イジェクトボタンを押して、Micro SDカードを取り出します。


*起動 [#a9d82e8c]

Micro SDカードと無線LAN子機をEV3本体に挿入し、電源を入れます。


*無線LANの設定 [#t3affa48]

起動したら、メニューから ''Wireless and Networks >'' を選択します。

''Wi-Fi >'' を選択します。

''Powered'' を選択し、チェックを入れます。
すると、電源が入り、無線LAN子機のLEDが点滅を始めます。

しばらく待っているか、''Start Scan'' を選択すると、無線LANの電波をスキャンし、SSIDのリストが出てきます。

利用するSSIDを選択し、''Connect'' を選択します。

パスワードを入力します。
すると、無線LANに接続できます。

''Status >'' を選択し、''IP Address'' を確認します。


*リモート・ログイン [#qe63b59b]

sshコマンドで、EV3上のLinuxにリモート・ログインします。
#geshi(sh){{
$ ssh robot@192.168.0.2
}}
robotはユーザー名、@ 以下は確認したIPアドレスです。

初めて接続したときは、今まで接続したことがないサーバーだけど接続してもいいか、という警告が出ます。
Yesと答えると、パスワードを聞かれますので、 ''maker'' と入力します。

ログインに成功すると、次のようなメッセージが出力されます。
#geshi(sh){{
             _____     _
   _____   _|___ /  __| | _____   __
  / _ \ \ / / |_ \ / _` |/ _ \ \ / /
 |  __/\ V / ___) | (_| |  __/\ V /
  \___| \_/ |____/ \__,_|\___| \_/

Debian jessie on LEGO MINDSTORMS EV3!

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
robot@ev3dev:~$
}}


*動作確認 [#q5540811]

Python3を起動します。
#geshi(sh){{
robot@ev3dev:~$ python3
}}

EV3用のライブラリーをインポートします。
#geshi(python){{
>>> import ev3dev.ev3 as ev3
}}

モーターを用意します。
#geshi(python){{
>>> m = ev3.LargeMotor('outB')
}}
今回は、''outB'' 端子に接続された左型のモーターだけを回します。

モーターを回します。
#geshi(python){{
>>> m.run_forever(speed_sp=100)
}}
すると、モーターが回りはじめ、右側のタイヤを中心にしてゆっくりと回り始めます。

モーターを止めます。
#geshi(python){{
>>> m.stop()
}}

python3を終了します。
#geshi(python){{
>>> quit()
}}


*NumPyのインストール [#c52b967f]

強化学習のプログラムで使うので、NumPyをインストールしておきます。
#geshi(sh){{
robot@ev3dev:~$ sudo apt-get install python3-numpy
}}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS