LEGO Mindstorms EV3 には標準で、以下のようなモーター・センサーが付属しています。
センサー類は、プッシュスイッチは ON/OFF 値を取得可能で、超音波センサー、ジャイロセンサーは連続値を出力可能、カラーセンサーはいくつかの色を認識することもできます。 モーターは2種類(L、M)あり、それぞれ PWM(トルク)制御、速度制御、位置制御が可能で、これらの制御のゲイン等も変更できます。 以下に、EV3 のセンサーとモーターの使用を表示します。
ev3dev からこれらのデバイスにアクセスするには、sysfs という仕組みを経由してアクセスします。 sysfs は /sys 以下にある疑似的なファイルシステムで、ここに存在するファイルに値を書き込んだり読み込んだりすることで、モーターの制御やセンサーデータへのアクセスが可能になります。
sysfs 経由でのデバイスのアクセス方法に関しては、以下の ev3dev のドキュメントに詳細が記載されています。
具体的には、以下のようにアクセスします。
モーターを連続回転するには、ポートAにモーター(L/Mどちらでもよい)をコマンドラインから以下のように入力します。
# echo 50 > /sys/class/tacho-motor/motor0/duty_cycle_sp # echo run-forever > /sys/class/tacho-motor/motor0/command
現在の位置を表示させるにはこのように入力します。止めるには Ctrl+C
# while true; do echo -en "\033[0G$(cat /sys/class/tacho-motor/motor0/speed) "; done
# echo stop > /sys/class/tacho-motor/motor0/command
センサーなども同様のアクセス法で利用できます。 カラーセンサーをポート1に接続します。カラーセンサーの先1cm位のところに赤いものを置いてください。 以下のようなコマンドを入力すると、5と表示されます。
# echo "COL-COLOR" > /sys/class/lego-sensor/sensor1/mode # cat /sys/class/lego-sensor/sensor1/value1 5
カラーセンサーには、いくつかのモードがあり、上ではカラー検出モードを使用しました。このモードでは、以下の8つの色 (ただし、0は何もないことを意味する) を認識します。
色 | 無 | 黒 | 青 | 緑 | 黄 | 赤 | 白 | 茶 |
番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
コマンドラインからは以上のようにアクセスできますが、プログラムからこれらの操作をしようとすると非常に面倒な手続きが必要になります。
プログラムからデバイスにアクセスためのアクセスライブラリがありますので、これを利用します。