テクノロジー

img_technologyTop01

製品をもっと詳しく知りたい方へ
技術研究所

EV3-Java ジャイロセンサーの制御方法

Java言語で作成したプログラムで、EV3のジャイロセンサーを制御する方法を、サンプルプログラムを用いて紹介します。

※EV3のJava言語プログラミング環境については、「教育版EV3 Javaプログラミングガイド」をご参照ください。
※ここで紹介する内容は、leJOS EV3 バージョン 0.9.0-betaを用いて動作を確認したものです。

下図のプログラムは、ジャイロセンサーを用いて、EV3の車型ロボットを反時計回りに360度せん回させて停止させるものです。
各センサーとモーターは、以下のように接続されているものとします。
・左タイヤのLモーター:ポートB
・右タイヤのLモーター:ポートC
・ジャイロセンサー:ポート2

package gyroSample;

 

import lejos.hardware.lcd.LCD;

import lejos.hardware.port.SensorPort;

import lejos.hardware.sensor.EV3GyroSensor;

import lejos.hardware.sensor.SensorMode;

import lejos.hardware.motor.Motor;

import lejos.robotics.RegulatedMotor;

import lejos.utility.Delay;

 

public class GyroSample {

        static EV3GyroSensor gyroSensor = new EV3GyroSensor(SensorPort.S2);

        static RegulatedMotor leftMotor = Motor.B;

        static RegulatedMotor rightMotor = Motor.C;

 

        public static void main(String[] args) {

                // ジャイロセンサーのモード設定と角度リセット

                SensorMode gyro = gyroSensor.getMode(1); …(※1)

                float value[] = new float[gyro.sampleSize()];

                gyroSensor.reset(); …(※2)

 

                // モーターのスピード設定

                leftMotor.setSpeed(100);

                rightMotor.setSpeed(100);

 

                // Lcdにジャイロセンサーのモードを表示

                LCD.clear();

                LCD.drawString(“Mode : ” + gyro.getName(), 1, 0);

                LCD.refresh();

 

                // ジャイロセンサーの値を取得

                gyro.fetchSample(value, 0); …(※3)

                // モーターを回転

                leftMotor.backward();

                rightMotor.forward();

 

                // ジャイロセンサーの値が360度以上になるまでくり返し

                while( value[0] <= 360 ){

                        // Lcdにジャイロセンサーの値を表示

                        LCD.drawString(“Value : ” + value[0] , 1, 1);

                        LCD.refresh();

                        // ジャイロセンサーの値を取得

                        gyro.fetchSample(value, 0); …(※3)

                }

                // モーターを停止

                leftMotor.stop();

                rightMotor.stop();

 

                Delay.msDelay(5000);

        }

}

ジャイロセンサーの値を取得するために、3つのモードが用意されています。
各モードと取得できる値は下表のとおりです。
ここではAngleモードを使用し角度を取得しています。(※1)

ID モード 取得できる値

0

Rate

角速度(deg/s)

1

Angle

角度(deg)

2

Angle and Rate

角度と角速度

 

ジャイロセンサーをリセットするには、reset()メソッドを使用します。(※2)
ジャイロセンサーの値は、他のセンサーと同様にfetchSample()メソッドを使って取得します。(※3)
ここで取得できる値は、反時計回り方向への動きに対してプラスの値を時計回り方向への動きに対してマイナスの値を示します。

gyro_top-web

お問い合わせ

CONTACT

株式会社アフレル

本社/カスタマーセンター

〒918-8231 福井市問屋町3-111
TEL.0776-25-0303 FAX.0776-25-0309 info@afrel.co.jp
カスタマーセンター電話受付  9:30-17:30 (土日・祝日・年末年始を除く) MAP

東京支社

〒103-0001
東京都中央区日本橋小伝馬町2-8 新小伝馬町ビル5F
TEL.03-6661-9251 FAX.03-3249-3741 MAP

大阪事業所

〒532-0011
大阪府大阪市淀川区西中島3-7-8 NLC新大阪17号館302
TEL.06-4805-8788 FAX.06-4805-8789 MAP
  • 正規代理店

    LEGO education logo

  • PITSCO logo

  • NI logo

  • virtual robotics toolkit logo

資料内容の無断転載、複製を禁じます。
製作・著作 株式会社アフレル

Copyright 2017 Afrel Co.,Ltd. All Rights Reserved.

© LEGO, the LEGO logo, MINDSTORMS and the MINDSTROMS logo are trademarks of the LEGO Group.
© 2017 The LEGO Group.
レゴ、レゴのロゴマーク、レゴ マインドストームは、 レゴグループの登録商標です。