概要
ev3devを用いてコマンドラインからmindstorm-EV3のモーターを制御したり、センサー値を取得することができます。
ev3devの環境構築についてはこちらを参考にして下さい。
モーターの制御
モーターはインテリジェントブロックのA~Dポートに接続することができます。
LモーターをAポートに、MモーターBポートにそれぞれ接続します。

接続されているモーターのファイルパスと接続ポート、モーターデバイス名を次のコマンドで確認できます。
robot@ev3dev:~$ for f in /sys/class/tacho-motor/*; do echo -n "$f: "; cat $f/address $f/driver_name;echo $""; done
実行結果(*モーターを接続したポートによって変わります)
/sys/class/tacho-motor/motor0: outA
lego-ev3-l-motor
/sys/class/tacho-motor/motor1: outB
lego-ev3-m-motor
それぞれのモーターについて制御方法を解説します。
Lモーター(lego-ev3-l-motor)

ファイルパスが長くなるので変数にします。
robot@ev3dev:~$ export MC=/sys/class/tacho-motor/motor0
使用できるコマンド
robot@ev3dev:~$ cat $MC/commands                       
run-forever run-to-abs-pos run-to-rel-pos run-timed run-direct stop reset
- run-forever
回転維持(速度変更が静的に反映)
速度パラメータは/sys/class/tacho-motor/motor0/speed_spに定義する - run-to-abs-pos
絶対位置へ回転
位置パラメータは/sys/class/tacho-motor/motor0/position_spに定義する - run-to-rel-pos
相対位置へ回転
位置パラメータは/sys/class/tacho-motor/motor0/position_spに定義する - run-timed
指定秒数回転
秒数パラメータは/sys/class/tacho-motor/motor0/time_spに定義する - run-direct
回転維持(スピード変更が動的に反映)
速度パラメータは/sys/class/tacho-motor/motor0/duty_cycle_spに定義する - stop
回転停止 - reset
全てのパラメータをリセットする 
詳しくは下記URLを参照してください。
http://www.ev3dev.org/docs/tutorials/tacho-motors/
モーターを回転、停止
速度パラメータspeed_spを400に設定し回転維持させる
speed_spには-1050~1050の値を設定できます。数値が大きいほど速度が増します。負の値を設定すると逆回転します。
robot@ev3dev:~$ echo 400 > $MC/speed_sp 
robot@ev3dev:~$ echo run-forever > $MC/command 速度パラメータspeed_spを200に変更する
速度パラメータを変更してもモーターの回転速度には動的に反映されません。もう一度run-foreverコマンドを実行する必要があります。
robot@ev3dev:~$ echo 200 > $MC/speed_sp 
robot@ev3dev:~$ echo run-forever > $MC/command モーターを停止させる
robot@ev3dev:~$ echo stop > $MC/command Mモーターの制御

Lモーターと基本的に同様に制御できるので割愛します。
速度パラメータspeed_spの設定可能範囲が(-1560~1560)になるところがLモーターとは違います。
詳しくは下記URLを参照してください。
http://www.ev3dev.org/docs/tutorials/tacho-motors/
センサー値の取得
センサーはインテリジェントブロックの1~4番ポートに接続することができます。
ジャイロセンサー、カラーセンサー、タッチセンサー、超音波センサをそれぞれ接続します。(順番は適当で大丈夫です)

接続されているセンサーのファイルパスと接続ポート、センサーデバイス名を次のコマンドで確認できます。
robot@ev3dev:~$ for f in /sys/class/lego-sensor/*; do echo -n "$f: "; cat $f/address $f/driver_name;echo $''; done
実行結果(*センサを接続したポートによって変わります)
/sys/class/lego-sensor/sensor4: in1
lego-ev3-gyro
/sys/class/lego-sensor/sensor5: in2
lego-ev3-us
/sys/class/lego-sensor/sensor6: in3
lego-ev3-touch
/sys/class/lego-sensor/sensor7: in4
lego-ev3-color
それぞれのセンサーについて値の取得方法を解説します。
ジャイロセンサー(lego-ev3-gyro)
ジャイロセンサーのモード
センサーのモードを設定することで、モードに対応した値を取得できます。
robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor4/modes   
GYRO-ANG GYRO-RATE GYRO-FAS GYRO-G&A GYRO-CAL
| mode | 説明 | 単位 | ファイル | 値の範囲 | 
|---|---|---|---|---|
| GYRO-ANG | 角度 | deg (degrees) | value0 | 32768 ~ 32767 | 
| GYRO-RATE | 回転速度 | d/s (degrees/second) | value0 | -440 ~ 440 | 
| GYRO-FAS | センサーの生データ | - | value0 | -1464 ~ 1535 | 
| GYRO-G&A | 角度と回転速度 | - | 角度:value0、回転速度:value1 | 角度:(32768 ~ 32767)、回転速度(-440 ~ 440) | 
| GYRO-CAL | 較正値 | - | value0 value1 value2 value3 | ? | 
| 詳しくは下記URLを参照下さい | ||||
| http://www.ev3dev.org/docs/sensors/lego-ev3-gyro-sensor/ | ||||
例えば、角度を取得したい場合は、表より/sys/class/lego-sensor/sensor4/modeにGYRO-ANGを書き込み、/sys/class/lego-sensor/sensor4/value0をcatすれば良いと分かります。 | 
robot@ev3dev:~$ echo GYRO-ANG >> /sys/class/lego-sensor/sensor4/mode
robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor4/value0
24452
超音波センサー(lego-ev3-us)
超音波センサのモード
robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor5/modes
US-DIST-CM US-DIST-IN US-LISTEN US-SI-CM US-SI-IN US-DC-CM US-DC-IN
超音波センサーのモードについては下記URLを参照して下さい。
http://www.ev3dev.org/docs/sensors/lego-ev3-ultrasonic-sensor/
障害物までの距離(mm)を取得
robot@ev3dev:~$ echo US-DIST-CM >> /sys/class/lego-sensor/sensor5/mode
robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor5/value0
70
タッチセンサー(lego-ev3-touch)
タッチセンサーのモード
robot@ev3dev:~$ robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor6/modes
TOUCH
タッチセンサーのモードについては下記URLを参照して下さい。
http://www.ev3dev.org/docs/sensors/lego-ev3-touch-sensor/
タッチを検出
タッチされていたら1されていなかったら0を出力します。
robot@ev3dev:~$ echo TOUCH >> /sys/class/lego-sensor/sensor6/mode
robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor6/value0
0 #タッチされていない
カラーセンサー(lego-ev3-color)
カラーセンサーのモード
robot@ev3dev:~$ robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor7/modes
COL-REFLECT COL-AMBIENT COL-COLOR REF-RAW RGB-RAW COL-CAL
タッチセンサーのモードについては下記URLを参照して下さい。
http://www.ev3dev.org/docs/sensors/lego-ev3-color-sensor/
色の判定
対象の色を識別します。出力値と色の対応関係は以下のようになっています。
| 出力 | 色 | 
|---|---|
| 0 | 色無し | 
| 1 | 黒 | 
| 2 | 青 | 
| 3 | 緑 | 
| 4 | 黄 | 
| 5 | 赤 | 
| 6 | 白 | 
| 7 | 茶 | 
robot@ev3dev:~$ echo TOUCH >> /sys/class/lego-sensor/sensor7/mode
robot@ev3dev:~$ cat /sys/class/lego-sensor/sensor7/value0
1 #黒



