アプリケーションの開発

Maven プロジェクトの作成 (Mac/Linux/Windows 環境で実施)

NetBeans のメニューからプロジェクトを作成してください。
まず、「ファイル(F)」→「新規プロジェクト(W)…」を選択してください。
選択すると下記の「新規プロジェクト」作成用のウィンドウが表示されます。
ここで、「カテゴリ (C) :」から「Maven」を選択し、「プロジェクト (P) :」から「Javaアプリケーション」を選択し「次へ」ボタンを押してください。
MavenProject.png

MavenProject

ボタンを押すと下記の「新規 Java アプリケーション」ウィンドウが表示されます。
「プロジェクト名 (N) :」、「プロジェクトの場所 (L) :」、「グループ ID (G) :」、「バージョン (V) :」、「パッケージ (P) :」に以下の内容を入力した後、最後に「終了 (F)」ボタンを押してください。
項目 入力内容
プロジェクト名(N) HelloDuke
プロジェクトの場所(L) 任意のディレクトリ
グループID(A) jp.etrobo.ev3.sample
バージョン(V) 1.0
パッケージ(P) jp.etrobo.ev3.sample
NewJavaClassNameLocation.png

NewJavaClassNameLocation.png

プロジェクトが正常に作成されるとプロジェクト・タブに下記のようなプロジェクトが作成されます。

ProjectTreeBase.png

ProjectTreeBase

プロジェクトを作成した後、プロジェクト・ファイル内の pom.xmlをクリックして開き,下記の内容を書き込んで(コピペで貼り付けて)ください。

ProjectTreePomXml.png

ProjectTreePomXml.png

以下は、実行されるファイル名です。

<mainClass>jp.etrobo.ev3.sample.HelloDuke</mainClass>

ただし、以下の EV3 に割り当てられている IP アドレス は、お使いの環境に合わせて、書き換えてください。

<url>scp://10.0.1.1/</url>

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>jp.etrobo.ev3.sample</groupId>
    <artifactId>HelloDuke</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>1.0</version>
            </extension>
        </extensions>
        <plugins>
            <!--- MANIFEST ファイルを作成するプラグイン -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>jp.etrobo.ev3.sample.HelloDuke</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>/home/root/lejos/lib/ev3classes.jar /home/root/lejos/libjna/usr/share/java/jna.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <!--- デスクトップからネット経由で jar ファイルをコピーするためのプラグイン -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>1.0-beta-5</version>
                <executions>
                    <execution>
                        <id>upload-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>upload</goal>
                        </goals>
                        <configuration>
                            <!-- ~/.m2/settings.xml ファイルに記述したログインID、パスワードの参照 -->
                            <serverId>ev3-root</serverId>
                            <!-- EV3 に割り当てられている IP アドレス -->
                            <url>scp://10.0.1.1/</url>
                            <fromDir>${project.basedir}/target</fromDir>
                            <includes>*.jar</includes>
                            <excludes>*-sources.jar</excludes>
                            <!-- EV3 のコピー先ディレクトリ -->
                            <toDir>/home/lejos/programs</toDir>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!-- ローカル・レポジトリにインストールしたファイルへの参照
    mvn install:install-file
        -Dfile=ev3classes.jar
        -DgroupId=ev3.classes
        -DartifactId=ev3classes
        -Dversion=0.9.1 -Dpackaging=jar
    -->
    <dependencies>
        <dependency>
            <groupId>ev3.classes</groupId>
            <artifactId>ev3classes</artifactId>
            <version>0.9.1</version>
        </dependency>

    <!-- ローカル・レポジトリにインストールしたファイルへの参照
    mvn install:install-file
        -Dfile=dbusjava.jar
        -DgroupId=ev3.dbus
        -DartifactId=dbusjava
        -Dversion=0.9.1
        -Dpackaging=jar
    -->
        <dependency>
            <groupId>ev3.dbus</groupId>
            <artifactId>dbusjava</artifactId>
            <version>0.9.1</version>
        </dependency>
    </dependencies>
</project>
また、Maven の設定ファイル (C:\Users\USER_NAME\.m2) に下記の内容を記載してください。
linuxやMacでは、 ~/.m2/settings.xml
なお、ログイン ID と ログイン パスワード は、お使いのEV3の設定に合わせて入力して下さい。
EV3 のデフォルト設定は、以下のようになっています。
ID root
パスワード なし
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
          http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>ev3-root</id>
            <!-- EV3 の root ログイン ID -->
            <username>root</username>
            <!-- EV3 の root ログイン パスワード -->
            <password>password</password>
        </server>
    </servers>
</settings>

このpom.xml ファイルを設定、保存後に wagon のライブラリが存在しないため、下記のようにHelloDukeプロジェクトは「ロード不可能」と表示されます。

HelloDukeCannotLoad.png

HelloDukeCannotLoad

HelloDukeCannotLoadHint.png

HelloDukeCannotLoadHint

この場合、プロジェクトを右クリックし、「プロジェクトの問題を解決…」を選択してください(Maven のセントラルレポジトリよりライブラリを入手)。

Troubleshooting.png

Troubleshooting

選択すると下記のウィンドウが表示されます。
ここで「解決 (R) …」ボタンを押してください。
Resolution.png

Resolution

以下のようなエラーが表示されるので、[閉じる]を押してください。

ResolutionError.png

ResolutionError

依存性の修正

プロジェクトメニューの依存性を開き、警告のマークが表示されているファイルを探し、以下の手順で、依存性を解決してください。
まず、ev3classes-0.9.1 を例に、依存性を解決の手順を解説します。その他のファイルについても、同様の手順で依存性を解決してください。
DependenciesError_ev3classes.png

DependenciesError_ev3classes

これを解消するために、ev3classes-0.9.1.jarを右クリックして、アーティファクトを手動インストールしてください。

Dependencies_ev3classes_Artifact_Install.png

Dependencies_ev3classes_Artifact_Install

入力画面が表示されるので、以下のファイル名を入力して、[ローカルにインストール]をクリックしてください。

C:\Program Files\leJOS EV3\lib\ev3\ev3classes.jar
Dependencies_ev3classes_Artifact_Install_file.png

Dependencies_ev3classes_Artifact_Install_file

実行用プログラムの作成

  1. プロジェクトのソース・パッケージ jp.etrobo.ev3.sample を選択して右ボタンをクリックし、「新規-Javaクラス」を選んでください。
NewJavaClassHelloDuke.png

NewJavaClassHelloDuke

  1. 新規Java アプリケーションのウィンドウが開くので、以下の内容を入力し、[終了(F)]を押してください。
項目 入力内容
クラス名(N) HelloDuke
パッケージ(P) jp.etrobo.ev3.sample
NewJavaClass_jp_etrobo_ev3_sample_HelloDuke.png

NewJavaClass_jp_etrobo_ev3_sample_HelloDuke

  1. 以下のコードをjp.etrobo.ev3.sample.HelloDuke に書き込んで(コピペで貼り付けて)ください。

    package jp.etrobo.ev3.sample;
    import lejos.hardware.Battery;
    import lejos.hardware.Button;
    import lejos.hardware.lcd.LCD;
    import lejos.hardware.Sound;
    import lejos.utility.Delay;
    public class HelloDuke {
        public static void main(String[] args) {
            int v = Battery.getVoltageMilliVolt();  // 電源電圧の取得し、液晶に表示
            LCD.drawString("Voltage:" + v + " mV", 0, 2);
            LCD.drawString("Hello duke!", 0, 4);    // "Hello duke!"を液晶に表示
            Button.LEDPattern(5);      // 赤色LEDを点滅させる。
            Sound.playTone(440, 100);  // 440Hzの音を 900ms再生
            Delay.msDelay(900);        // 900m秒待つ
            Sound.playTone(440, 100);  // 440Hzの音を 900ms再生
            Delay.msDelay(900);        // 900m秒待つ
            Sound.playTone(440, 100);  // 440Hzの音を 900ms再生
            Delay.msDelay(900);        // 900m秒待つ
            Sound.playTone(880, 3000); // 880Hzの音を3000ms再生
            Button.LEDPattern(0);      // 赤色LEDの点滅を停止する。
        }
    }
    
HelloDuke_java_src.png

HelloDuke_java_src

  1. コードのビルド

メニューから「実行(R)-プロジェクト(HelloDuke)をビルド F11」を選び、ビルドを開始してください。

Menu_Run_Build_HelloDuke.png

Menu_Run_Build_HelloDuke

ビルドの途中に、Netbeans右下のコンソールに以下のようなEV3との接続の許可を求めるメッセージが表示されるので、yesを入力しEnterで次に進んで下さい。

Output_build_HelloDuke.png

Output_build_HelloDuke

  1. Netbeans右下のコンソールに「BUILD SUCCESS」のメッセージが表示されれば、ビルドは完了です。

    BUILD SUCCESS
    Total time: 0.905s Finished at: Fri Jan 23 12:10:07 JST 2015 Final Memory: 5M/15M

この時点で、実行プログラムは、EV3 の/home/lejos/programsディレクトリにアップロードされています。


本章は、著者の了解を得て、以下の資料を元に作成しました。

LEGO Mindstorms with Java leJOS ハンズオン・ラボ Version 1.0

http://www.slideshare.net/OracleMiddleJP/lego-mindstormslejos-hands-on-lab

@author Yoshio Terada, Java Evangelist http://yoshio3.com