- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#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 でインタラクティブに動かす [#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);