目次
#contents

* 準備 [#q864ac9b]

http://www.ev3dev.org/docs/getting-started/ を参考に。

** OSのイメージをダウンロード [#sb77d4ec]
https://github.com/ev3dev/ev3dev/releases/download/ev3dev-jessie-2015-12-30/ev3-ev3dev-jessie-2015-12-30.img.xz

** microSDまたはmicroSDHCにコピー [#jeaf4320]
microSDXCは使えない。microSDのデバイス名が /dev/sdb とすると、以下のようにddでイメージをメディアに書き込む。
 xzcat ~/Download/ev3dev-yyyy-mm-dd.img.xz | sudo dd bs=4M of=/dev/sdb
デバイス名が不明な場合は cat /proc/partitions などのコマンドで調べる。

** 起動 [#c943330c]

microSDを本体のカードスロットにセットして電源ON(真ん中の四角いボタンを押す)。microSDが入っていれば、本体のOSではなくmicroSDのOS(ev3dev)が起動する

** ネットワークの接続 [#z38ad46a]

wifiのドングルを使うのがおそらく最も簡単。
brickmanのメニューが表示されたら、
「Wireless and Networks」→「Wi-Fi」で無線ネットワークを選ぶ。
接続できたら、ディスプレイ上部に表示されている、DHCPで取得したアドレスを確認しておく。

** sshでログイン [#ia48be56]

IPアドレスが192.168.2.30の場合、パソコン側から
 ssh robot@192.168.2.30
でログインできる(デフォルトのUIDは「robot」、パスワードは「maker」)。
Windowsの場合はTeraTermなどを使えばよい。

 localhost:~$ ssh robot@192.168.2.30
 robot@192.168.2.37's password: 
              _____     _
    _____   _|___ /  __| | _____   __
   / _ \ \ / / |_ \ / _` |/ _ \ \ / /
  |  __/\ 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.
 Last login: Wed May 25 06:41:16 2016 from 192.168.2.21
 robot@ev3dev:~$ 

* Python でインターラクティブに動かす [#s538f8e8]

** pythonの起動 [#id4e94b7]

デフォルトではpython 2.7 が起動する。

 robot@ev3dev:~$ python
 Python 2.7.9 (default, Mar  1 2015, 13:52:09) 
 [GCC 4.9.2] on linux2
 Type "help", "copyright", "credits" or "license" for more information.
 >>> 

** モジュールのインポート [#gb5bbf8b]

 >>> import ev3dev.ev3 as ev3

** モータのインスタンスを生成 [#u9916a64]

 >>> m = ev3.LargeMotor('outA')

モータの各ポート名は、'outA' 'outB' 'outC' 'outD'。
小さい方のモータは、MediumMotor。

** モータのリセット [#g87607de]

 >>> m.reset()

** モータを回転させる [#s3b12bed]

モータのリセット後は、duty_cycle_sp(デューティ・サイクルのセットポイント)が0になっている。
回転させるためには、0以外の-100から100までの値を指定する。

 >>> m.run_forever(duty_cycle_sp=30)

あるいは、以下でも同じ動作。

 >>> m.duty_cycle_sp=30
 >>> m.run_forever()

** モータを止める [#p1e18470]

 >>> m.stop()

モータの止め方は'coast' 'brake' 'hold'の3種類。デフォルトは'coast'。指定の方法は、

 >>> m.stop(stop_command='brake')

のように値を渡すか、

 >>> m.stop_command='brake'
 >>> m.stop()

のようにする。

新しいカーネル(Linux ev3dev 4.4.9-11-ev3dev-ev3)では、stop_commandがstop_actionに、
stop_commandsがstop_actionsに変更になっている。また、speed_spの値を指定しておかないとモータは回らない(最大値は1050)。

** モータを一定時間回す [#vc2bab9e]

 >>> m.run_timed(time_sp=3000, duty_cycle_sp=50, stop_command='brake')

timeで指定する時間の単位は1/1000秒。

** モータを一定時間回す(sleep関数を使う方法) [#h602c8c4]

 >>> import time
 >>> m.run_forever(duty_cycle=50)
 >>> time.sleep(3)
 >>> m.stop()

sleep関数を使うためにtimeモジュールをインポート。sleepで指定する時間の単位は1秒。

** モータを特定の角度だけ回す [#mfa5974d]

 >>> m.run_to_rel_pos(position_sp=360, duty_cycle_sp=70, stop_command='hold')

これは

 >>> m.reset()
 >>> m.run_to_abs_pos(position_sp=360, duty_cycle_sp=70, stop_command='hold')

と同じ。

** センサーの種類 [#i38f24e1]
-TouchSensor 	タッチセンサ
-ColorSensor 	カラーセンサ
-UltrasonicSensor 	超音波センサ
-GyroSensor 	ジャイロセンサ
-SoundSensor 	NXTのサウンドセンサ
-LightSensor 	NXTのライトセンサ
-InfraredSensor 	EV3の赤外線センサ(距離測定用)

** 超音波センサを使う [#n9745bd7]

 >>> us = ev3.UltrasonicSensor()
 >>> us.value()
 112

デフォルトの単位はcm(US-DIST-CM)のはずだが、なぜかmmで値が表示されている。

** 光センサを使う [#e95a60a1]

モード一覧

 >>> cs.modes
 [u'COL-REFLECT', u'COL-AMBIENT', u'COL-COLOR', u'REF-RAW', u'RGB-RAW', u'COL-CAL']

デフォルトのモードはCOL-REFLECT。

白い紙の1cmほど上で測ってみると

 >>> cs.value()
 58

黒い紙だと大抵ひと桁の値になる。

** タッチセンサを使う [#f3986658]

 >>> ts = ev3.TouchSensor('in3')
 >>> ts.value()
 0
 >>> ts.value()
 1

タッチセンサが押されていない状態で0、押された状態で1。

** ジャイロセンサを使う [#d647d973]

 >>> gs = ev3.GyroSensor()
 >>> gs.modes
 [u'GYRO-ANG', u'GYRO-RATE', u'GYRO-FAS', u'GYRO-G&A', u'GYRO-CAL']
 >>> gs = ev3.GyroSensor()
 >>> gs.mode
 u'GYRO-ANG'
 >>> gs.value()
 -135

** 応用 [#v7ce3ef9]
 >>> while ts.value() == 0:
 ...     if cs.value() > 30:
 ...             m.run_forever(duty_cycle_sp=50)
 ...     else:
 ...             m.stop(stop_command='brake')
 ...     time.sleep(0.1)
 ...

** pythonの終了 [#s5162f6e]

control-D

* スクリプトを作ってみる [#p71ffa22]

エディタ(nanoまたはvi)で次のようなスクリプトを作る。ファイル名は例えばtest.pyのようにpyという拡張子を付けておくと便利。

 robot@ev3dev:~$ nano test.py

 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import ev3dev.ev3 as ev3
 import time
 
 motor_left = ev3.LargeMotor('outA')
 motor_left.run_forever(duty_cycle_sp=50)
 time.sleep(3)
 motor_left.stop(stop_command='brake')

ファイルを保存したら実行可能にする

 robot@ev3dev:~$ chmod +x test.py

実行する

 robot@ev3dev:~$ ./test.py

ここで./は現在のフォルダ(ディレクトリ)を表す(ファイル名だけだとパスがつながっていないのでエラーになる)


2016年5月31からのこのページのだいたいの訪問者数:
本日&counter(today);
昨日&counter(yesterday);
合計&counter(all);

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS