13
OSC2015 Hokkaido セセセセセセET セセセセセセセセセセセセセセ C♯/Java & Linux でででで (leJOS で ) ET セセセセ セセセセセセセセセセ

C#/Java & Linux で始める ET ロボコン(leJOS編)

Embed Size (px)

Citation preview

Page 1: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

C♯/Java & Linux で始める

(leJOS 編 )ET ロボコン北海道地区実行委員会

Page 2: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

leJOS EV3

2

Page 3: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

leJOS EV3

3

LEGO Mindstorms シリーズ用に代々提供されてきた Java 実行環境       http://www.lejos.org

Page 4: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

leJOS EV3 実行環境

4

EV3 ハードウェア

Ångström Linux

leJOS 基本クラス

leJOS アプリケーション

EV3 用デバイスドライバ

Oracle JRE

標準ファームウェアのものを流用標準ファームウェアのものを流用

microSD から起動

leJOS メニュー

Page 5: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

leJOS EV3 アプリケーション開発

5

①JDK で開発 ・ Windows ・ OS X ・ Linux  …

②scp で jar を転送 ・ USB (RNDIS) ・ Bluetooth PAN ・ Wi-Fi

③ 実行 ・ leJOS のメニュー ・ EV3 Control Center ・ ssh からリモートで

Page 6: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

Eclipse + leJOS EV3 プラグイン

6

Page 7: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

センサ値の取得方法 次の5ステップ

① センサポートを指定して、センサオブジェクトの作成② サンプルプロバイダの取得③ センサ値の数を取得&センサー値取得用配列の用意④ センサの有効化⑤ サンプルプロバイダを使ってセンサー値取得

7

// ①超音波センサ オブジェクト作成 EV3UltrasonicSensor sonar = new EV3UltrasonicSensor(SensorPort.S2);

SampleProvider distanceMode = sonar.getDistanceMode(); // ②サンプルプロバイダ取得

float[] sampleDistance = new float[distanceMode.sampleSize()]; // ③センサ値取得用配列

sonar.enable(); // ④超音波センサを有効化

// ⑤等音波センサーから障害物までの距離を得る distanceMode.fetchSample(sampleDistance, 0); float distance = sampleDistance[0];

超音波センサーの例

Page 8: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

モータの制御 (RPM)

次の3ステップ① モータポートを指定してモータオブジェクトを作成② モータのスピード (RPM) を指定③ 前進か後進かを指定してモータを動かす

8

// ① モータオブジェクト作成 EV3LargeRegulatedMotor motor  = new EV3LargeRegulatedMotor(MotorPort.B);

// ② モータのスピード (RPM) を指定 motor.setSpeed(50);

// ③ 前進か後進 motor.forward(); // 前進 motor.backward(); // 後進

Page 9: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

モータの制御 (PWM)

次の2ステップ①PWM 制御用のモータポートオブジェクトを取得② モータポートオブジェクトに PWM を指定してモータを動かす

9

// ① モータポートオブジェクトを取得 TachoMotorPort motorPort  = MotorPort.B.open(TachoMotorPort.class);

// ② モータの PWM を指定 motorPort.controlMotor(50, 1);

Page 10: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

デモ

超音波センサの値にしたがった簡単なモータ制御超音波センサから値を取得デフォルトは前進前方 30 cm 以内に障害物を検知したら後進上記を繰り返す

10

Page 11: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

デモプログラム(抜粋)

11

// モータ制御オブジェクト作成 EV3LargeRegulatedMotor motorL = new EV3LargeRegulatedMotor(MotorPort.C); // 左モータ EV3LargeRegulatedMotor motorR = new EV3LargeRegulatedMotor(MotorPort.B); // 右モータ // モータのスピード (RPM) を設定 motorL.setSpeed(50); motorR.setSpeed(50);

// 超音波センサ オブジェクト作成 EV3UltrasonicSensor sonar = new EV3UltrasonicSensor(SensorPort.S2); SampleProvider distanceMode = sonar.getDistanceMode(); // 距離検出モード float[] sampleDistance = new float[distanceMode.sampleSize()]; sonar.enable(); // 超音波センサを有効化

Page 12: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会

デモプログラム(抜粋続き)

12

for (;;) { ... // 超音波センサーから障害物までの距離を得る distanceMode.fetchSample(sampleDistance, 0); float distance = sampleDistance[0]; if (distance > 0.3F) { // 障害物まで 0.3m 以内にになるまで前進 motorL.forward(); motorR.forward(); } else { // 障害物まで 0.3m 以内になったら後進 motorL.backward(); motorR.backward(); } Delay.msDelay(100); // 100msec スリープ }

Page 13: C#/Java & Linux で始める ET ロボコン(leJOS編)

OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会 13