Upload
minoru-inachi
View
186
Download
3
Embed Size (px)
Citation preview
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
C♯/Java & Linux で始める
(leJOS 編 )ET ロボコン北海道地区実行委員会
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
leJOS EV3
2
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
leJOS EV3
3
LEGO Mindstorms シリーズ用に代々提供されてきた Java 実行環境 http://www.lejos.org
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
leJOS EV3 実行環境
4
EV3 ハードウェア
Ångström Linux
leJOS 基本クラス
leJOS アプリケーション
EV3 用デバイスドライバ
Oracle JRE
標準ファームウェアのものを流用標準ファームウェアのものを流用
microSD から起動
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 からリモートで
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
Eclipse + leJOS EV3 プラグイン
6
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];
超音波センサーの例
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
モータの制御 (RPM)
次の3ステップ① モータポートを指定してモータオブジェクトを作成② モータのスピード (RPM) を指定③ 前進か後進かを指定してモータを動かす
8
// ① モータオブジェクト作成 EV3LargeRegulatedMotor motor = new EV3LargeRegulatedMotor(MotorPort.B);
// ② モータのスピード (RPM) を指定 motor.setSpeed(50);
// ③ 前進か後進 motor.forward(); // 前進 motor.backward(); // 後進
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
モータの制御 (PWM)
次の2ステップ①PWM 制御用のモータポートオブジェクトを取得② モータポートオブジェクトに PWM を指定してモータを動かす
9
// ① モータポートオブジェクトを取得 TachoMotorPort motorPort = MotorPort.B.open(TachoMotorPort.class);
// ② モータの PWM を指定 motorPort.controlMotor(50, 1);
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会
デモ
超音波センサの値にしたがった簡単なモータ制御超音波センサから値を取得デフォルトは前進前方 30 cm 以内に障害物を検知したら後進上記を繰り返す
10
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(); // 超音波センサを有効化
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 スリープ }
OSC2015 Hokkaido セミナー資料/ ET ロボコン北海道地区実行委員会 13