leJOS + NetBeans 8.0 (Maven) + Java SE Embedded (7 or 8) で LEGO Mindstorms EV3のアプリケーション開発

2014年4月23日 at 6:05 午後 13件のコメント

今日は Java の開発者の皆様に、LEGO Mindstorms EV3 の制御を Java で行うために、環境構築から NetBeans を使用した Java のアプリケーションの開発方法までをご紹介します。LEGO 社は、幅広い年代の子供達に向けて LEGO ブロックを提供しています。最近では私の2歳になる子供も LEGO duplo という幼児向けのレゴで遊んでいます。

今日、ご紹介する「教育版レゴ マインドストームEV3」 は、LEGO Mindstorms を教育目的で使うために開発された製品で、これを使用するとブロックでロボットを作成した後、Java でそのロボットを制御する事もできるようになります。今回、Java でロボット制御を試すために、「教育版レゴ マインドストームEV3 / LEGO Mindstorms Eduation EV3 」の日本の正規代理店である(株)アフレル様のご協力を得て、LEGO Mindstorm を1台お借りし、実際に教育版レゴ マインドストームEV3 用の Java アプリケーションを書いてみました。

● アプリケーションの動作イメージ:

今回、作成した LEGO Mindstorms EV3 のサンプル・アプリケーションのソースコードは GitHub にアップしていますので、ご興味のある方はどうぞご覧ください。
https://github.com/yoshioterada/Java-Sample-app-for-LEGO-Mindstorms

本エントリでは、上記のサンプル・アプリケーションの実装に対する詳細の説明ではなく、Java でプログラムを書く事ができるように環境構築から最初のプログラム作成の部分までをご紹介します。

事前準備:

(1) レゴマインドストーム EV3 の入手

LEGO Mindstorms は 教育版と玩具版があり含まれる内容が異なります。
参考:教育版と玩具版の比較 (アフレル)

教育版
「教育版レゴ マインドストームEV3」の入手 (本エントリではこちらを使用)
販売先情報 :アフレル(株)


玩具版: Amazon 等から
レゴ マインドストーム EV3 31313(¥51,000)
レゴ マインドストーム EV3 31313 LEGO Mindstorms EV3 並行輸入品(¥ 44,320)
LEGO Mindstorms EV3 31313($349.95)

玩具版の レゴも Amazon で $350 〜 ¥51,000と少々高価な商品ですが、対象年齢は 10 歳以上のれっきとした LEGO です。機能的にこれは本当に子供向けなのか?!と思う程、自分でロボットを組み立てたり、そのロボットを制御するプログラムを書けたりと、子供よりも大人が熱中しそうな商品です。今回のエントリは玩具版でもご参考いただけるかと思います。

(2) USB WiFi アダプタの入手

USB の WiFi アダプタは EV3 に標準で付属していませんがあった方がとても便利です。開発時、開発環境から EV3 へネットワークを通じてアプリケーションをデプロイしたり、リモートから EV3 を制御したい場合、WiFi アダプタが必要です。今回、(株)アフレル様のご好意で「Roland Wireless USB Adapter WNA1100-RL」も借りる事ができたため、私はこの WiFi アダプタを使用します。Amazon から WNA1100-RL を購入していただく事も可能です。

その他、EV3 では下記の WiFi の USB アダプタが動作確認されています。特に EDIMAX EW-7811Un は EV3 からあまり突出しないのでオススメです。
動作確認済みの WiFi アダプタ

(3) leJOS 0.8.1 beta の入手


leJOS は LEGO Mindstorms EV3 のファームウェアを変更した OS で、この環境上で Java SE 7 Embedded 7 が稼働し、Java のアプリケーションを動かす事ができるようになります。
leJOS EV3 0.8.1 beta release より leJOS_EV3_0.8.1-beta.tar.gz を入手してください。

(4) Oracle Java SE Embedded の入手

Java for LEGO® Mindstorms® EV3 のサイト(オリジナルJRE入手先)から、Oracle Java SE Embedded を入手してください。
Java SE Embedded 7 の場合:
● ejre-7u55-fcs-b13-linux-arm-sflt-headless-17_mar_2014.tar.gz

Java SE Embedded 8 のインストール方法は、本エントリの最後に記載しています。

(5) 開発環境用 (Mac/Linux/Windows環境) に統合開発環境、Java SE をインストール

デスクトップの開発環境に NetBeans 8 と Java SE 7 をインストールしてください。(今回は各インストール方法の詳細は割愛)

NetBeans の入手はこちらから
Java SE 7 の入手はこちらから

leJOS 環境構築から開発までの手順

LEGO Mindstorms EV3 で Java アプリケーションを動作させるためには、下記の手順に従って行います。


  1. ブート可能なマイクロ SD カードへ leJOS のインストール
  2. ブート可能なマイクロ SD カードから起動
  3. leJOS で WiFi 設定
  4. ローカル Maven レポジトリに必要ライブラリをインストール
  5. Maven プロジェクトの作成
  6. アプリケーションの開発
  7. アプリケーションのビルド/デプロイ
  8. アプリケーションの実行

(0)ブート可能なマイクロ SD カードを作成

ブート可能で FAT 32 でフォーマットしたマイクロ SD カードを作成してください。Mac OS/X の場合、「アプリケーション」→「ユーティリティ」→「ディスクユーティリティ」を実行して作成できます。「パーティションのレイアウト」から「1パーティション」を選択し、「パーティション情報」に「名前」を記入してください。

次に「オプション…」ボタンを押下してください、すると下記のウィンドウが表示されます。ここで、「マスター・ブート・レコード」にチェックされている事を確認し「OK」ボタンを押下してください。

最後に「適用」ボタンを押下してください、押下すると下記の画面が表示されます。ここで「パーティション」ボタンを押下してください。

(1) SD カードへファイルのコピーと展開 (Mac/Linux/Windows 環境で実施)

事前準備の (3) でダウンロードした leJOS_EV3_0.8.1-beta.tar.gz を展開してください。

> tar xvf leJOS_EV3_0.8.1-beta.tar.gz
> ls

COPYING README.md bin lejosimage.zip lib samples.zip sd500.zip

展開すると lejosimage.zip が存在しますので、このファイルと JRE7 を SD にコピーしてください。ファイルをコピーした後、SD カード内で lejosimage.zip を展開してください (※ JRE の展開は不要です)。

> cp ejre-7u55-fcs-b13-linux-arm-sflt-headless-17_mar_2014.tar.gz lejosimage.zip /Volumes/LEGO-PART/
> cd /Volumes/LEGO-PART/
> unzip lejosimage.zip

Archive: lejosimage.zip
creating: lejos/
creating: lejos/bin/
inflating: lejos/bin/partition.sh
inflating: lejos/bin/partfuncs.sh
inflating: lejos/bin/install.sh
inflating: lejos/bin/funcs.sh
inflating: lejos/bin/spinner.sh
inflating: lejos/bin/check.sh
creating: lejos/images/
inflating: lejos/images/lejoslogo.ev3i
inflating: lejosimage.bz2
inflating: uImage
inflating: uImageStandard
extracting: version

# 展開した後の SD カードのディレクトリ構成
# ls -F
ejre-7u55-fcs-b13-linux-arm-sflt-headless-17_mar_2014.tar.gz*
lejos/
lejosimage.bz2*
lejosimage.zip*
uImage*
uImageStandard*
version*

以上で準備は完了です。マイクロ SD カードをアンマウントして、システムから取り出してください。

取り出した後、EV3 にマイクロ SD カードを挿入してください。またその際、WiFi の USB アダプタも USB ポートに挿入してください。

(2)ブート可能なマイクロ SD カードから起動(EV3 で実施)

LEGO MindStorm に SD カードが挿入されている事を確認し、EV3 のボタンを押して起動してください。すると自動的に Linux 環境の構築(ファイルシステム構築等も含む)やJava 環境の構築を実施します。 (作業終了まで:約 8 分)

内部的には下記の処理等が行われています。
1. Resize FAT32 fs
2. Resize Complete
3. Create Linux fs
4. Expand Image
5. Prepare Install
6. Deleting old files
7. Expand Image
8. Start Install
9. Installing rootfs
10. Installing modules
11. Installing leJOS
12. Configure network
13. Install links
14. Install lib jna
15. Copy config files
16. Install jre
17. Extracting jre
18. Optimize java
19. Remove temp files
20. Installing kernel
21. Sync disks
22. Unmount disks
23. Rebooting

EV 3 はインストールや設定が完了すると自動的に再起動します。正常に起動が完了すると大きなブザー音が鳴った後、leJOS のメニュー画面が表示されます。


(3) leJOS で WiFi 設定(EV3 で実施)

WiFi の設定は、WiFi の設定マークを選択して行います。選択すると接続可能なアクセス・ポイントの一覧が表示されます。

自身の適切なアクセス・ポイントを選択してください。選択すると下記の画面が出てきます。

ここで、アクセス・ポイントに接続するため WEP のパスワードを入力します。基本的にはキーボード配列と同様にローマ字が並んでいますので、適切なパスワード文字を入力してください。ここで画面の一番最下行に特別な命令用の文字 (U,l,x,D) が記載されています、それぞれの意味は下記の通りです。大文字のローマ字を入力したい場合は、U を押す等してパスワードを正しく入力してください。

U : 大文字に変換 (Upper)
l : 小文字に変換 (lower)
x : 1文字消去
D : 設定終了 (Done)

パスワードを正しく入力した後、D を押下すると WiFi での接続ができるようになります。EV3 のメニュー画面で、IP アドレス: 10.0.1.1 と記載された行の下側に、割り当てられた IP アドレス(ここでは 192.168.1.100)が記載されていますので、この IP アドレスで EV 3 に接続できるようになります。EV3 に接続できるようになっているかどうかを確認するために、TELNET でログインをして確認してください。

> telnet 192.168.1.100
Trying 192.168.1.100…
Connected to 192.168.1.100.
Escape character is ‘^]’.

_____ _ _ ___
| _ |_ _ _| |___| | __|
| _| | | . | . | | _|
|__|__|___|___|___|_|_|

Rudolf 2011.01 EV3

login: root
root@EV3:~#

正常に、WiFi の設定ができている場合、上記のようなログイン・プロンプトが表示されます。ここで login: 名に root を、パスワードは未入力(ノンパスワード)でエンター・キーを押下してください。すると EV3 にログインができるようになります。

(4) ローカル Maven レポジトリに必要ライブラリをインストール (Mac/Linux/Windows 環境で実施)

今回、統合開発環境には NetBeans を使用し、Maven プロジェクトとしてアプリケーション開発を行います。EV3 を制御する Java アプリケーション開発を行うためには、ev3classes.jar と dbusjava.jar が必要ですが、現在 leJOS 用の Maven レポジトリが存在していないようです。そこで、これら2つのファイルをローカルの Maven レポジトリにインストールしてください。2つのファイルは leJOS_EV3_0.8.1-beta.tar.gz を展開したディレクトリ内に含まれています。

> cd leJOS_EV3_0.8.1-beta/lib/ev3
> ls

dbusjava-src.zip dbusjava.jar ev3classes-src.zip ev3classes.jar

次に、2つのファイルを mvn コマンドでローカル・レポジトリにインストールします。下記の 2 つのコマンドを実行してください。仮に mvn コマンドが自身の実行パス内に見つからない場合は、NetBeans 付属のmvn コマンドをご利用ください。

例:Mac OS/X (Linux) の場合 mvn はデフォルトで下記に存在します。
“/Applications/NetBeans/NetBeans 8.0.app/Contents/Resources/NetBeans/java/maven/bin/mvn”

> mvn install:install-file -Dfile=ev3classes.jar -DgroupId=ev3.classes -DartifactId=ev3classes -Dversion=0.8.1 -Dpackaging=jar
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ————————————————————————
[INFO]
[INFO] — maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-pom —
[INFO] Installing /Users/USER_NAME/Downloads/leJOS_EV3_0.8.1-beta/lib/ev3/ev3classes.jar to /Users/USER_NAME/.m2/repository/ev3/classes/ev3classes/0.8.1/ev3classes-0.8.1.jar
[INFO] Installing /var/folders/5x/qqvk50_50xl7jvfhyf9_tdd40000gn/T/mvninstall6910985062740456417.pom to /Users/USER_NAME/.m2/repository/ev3/classes/ev3classes/0.8.1/ev3classes-0.8.1.pom
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 0.623s
[INFO] Finished at: Tue Apr 22 20:22:57 WIT 2014
[INFO] Final Memory: 5M/245M
[INFO] ————————————————————————

> mvn install:install-file -Dfile=dbusjava.jar -DgroupId=ev3.dbus -DartifactId=dbusjava -Dversion=0.8.1 -Dpackaging=jar
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ————————————————————————
[INFO]
[INFO] — maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-pom —
[INFO] Installing /Users/USER_NAME/Downloads/leJOS_EV3_0.8.1-beta/lib/ev3/dbusjava.jar to /Users/USER_NAME/.m2/repository/ev3/dbus/dbusjava/0.8.1/dbusjava-0.8.1.jar
[INFO] Installing /var/folders/5x/qqvk50_50xl7jvfhyf9_tdd40000gn/T/mvninstall6420442918254641308.pom to /Users/USER_NAME/.m2/repository/ev3/dbus/dbusjava/0.8.1/dbusjava-0.8.1.pom
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 0.597s
[INFO] Finished at: Tue Apr 22 20:25:04 WIT 2014
[INFO] Final Memory: 6M/310M
[INFO] ————————————————————————

例:Windows の場合 mvn はデフォルトで下記に存在します。
 C:\Program Files\NetBeans 8.0\java\maven\bin

Windows で mvn コマンドをターミナルから実行するために、下記2つの環境変数の設定を行ってください。
● JAVA_HOME を新規追加 : JDK をインストールした場所
● PATH へ追加 : maven コマンドへのパスの追加

上記、環境変数の設定を行った後、lib\ev3 ディレクトリに移動し下記のコマンドを実行してください。※ 大文字、小文字の打ち間違いにご注意ください。

C:\Users\USER_NAME\Desktop\leJOS_EV3_0.8.1-beta_win32\lib\ev3 > mvn install:install-file -Dfile=dbusjava.jar -DgroupId=ev3.dbus -DartifactId=dbusjava -Dversion=0.8.1 -Dpackaging=jar
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ————————————————————————
[INFO]
[INFO] — maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-po
m —
[INFO] Installing C:\Users\USER_NAME\Desktop\leJOS_EV3_0.8.1-beta_win32\lib\ev3\db
usjava.jar to C:\Users\USER_NAME\.m2\repository\ev3\dbus\dbusjava.8.1\dbusjava-0
.8.1.jar
[INFO] Installing C:\Users\USER_NAME\AppData\Local\Temp\mvninstall1908329777283214
622.pom to C:\Users\USER_NAME\.m2\repository\ev3\dbus\dbusjava.8.1\dbusjava-0.8.
1.pom
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 0.760s
[INFO] Finished at: Thu Apr 24 19:29:44 JST 2014
[INFO] Final Memory: 5M/155M
[INFO] ————————————————————————
C:\Users\USER_NAME\Desktop\leJOS_EV3_0.8.1-beta_win32\lib\ev3> mvn install:install-
file -Dfile=ev3classes.jar -DgroupId=ev3.classes -DartifactId=ev3classes -Dversion=0.8.1 -Dpackaging=jar

[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ————————————————————————
[INFO]
[INFO] — maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-po
m —
[INFO] Installing C:\Users\USER_NAME\Desktop\leJOS_EV3_0.8.1-beta_win32\lib\ev3\ev
3classes.jar to C:\Users\USER_NAME\.m2\repository\ev3\classes\ev3classes.8.1\ev3
classes-0.8.1.jar
[INFO] Installing C:\Users\USER_NAME\AppData\Local\Temp\mvninstall2687157046215461
183.pom to C:\Users\USER_NAME\.m2\repository\ev3\classes\ev3classes.8.1\ev3class
es-0.8.1.pom
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 0.712s
[INFO] Finished at: Thu Apr 24 19:31:49 JST 2014
[INFO] Final Memory: 5M/158M
[INFO] ————————————————————————

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

NetBeans のメニューからプロジェクトを作成してください。まず、「ファイル(F)」→「新規プロジェクト(W)…」を選択してください。

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

ボタンを押下すると下記の「新規 Java アプリケーション」ウィンドウが表示されます。ここで「プロジェクト名 (N) :」、「プロジェクトの場所 (L) :」、「グループ ID (G) :」、「バージョン (V) :」、「パッケージ (P) :」に適切な値を入力した後、最後に「終了 (F)」ボタンを押下してください。

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

プロジェクトを作成した後、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>com.yoshio3</groupId>
    <artifactId>LEGOMind</artifactId>
    <version>1.0-SNAPSHOT</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>com.yoshio3.legomind.EV3AppMain</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://192.168.1.100/</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.8.1 -Dpackaging=jar
    -->
    <dependencies>
        <dependency>
            <groupId>ev3.classes</groupId>
            <artifactId>ev3classes</artifactId>
            <version>0.8.1</version>
        </dependency>
        
    <!-- ローカル・レポジトリにインストールしたファイルへの参照
    mvn install:install-file 
        -Dfile=dbusjava.jar 
        -DgroupId=ev3.dbus 
        -DartifactId=dbusjava 
        -Dversion=0.8.1
        -Dpackaging=jar
    -->
        <dependency>
            <groupId>ev3.dbus</groupId>
            <artifactId>dbusjava</artifactId>
            <version>0.8.1</version>
        </dependency>
    </dependencies>
</project>

また、Maven の設定ファイル ( ~/.m2/settings.xml (Windows では C:\Users\USER_NAME\.m2)) に下記を記載してください。

<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 のライブラリが存在しないため、下記のようにプロジェクトが「ロード不可能」と表示されます。

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

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

(6) アプリケーションの開発(Mac/Linux/Windows 環境で実施)

Maven プロジェクトを作成したので実際にプログラムを初めてみましょう。今回は上記 pom.xml の MANIFEST ファイルの定義 <manifest> の <mainClass> タグ内でメイン・クラスとしてcom.yoshio3.legomind.EV3AppMain を定義しましたので、このクラスを作成します。また、初めての LEGO Mindstorms のアプリケーション開発ということで、やはり Hello World から初めてみましょう。プロジェクトの中に含まれる「com.yoshio3.legomind」パッケージを右クリックし「新規」→「Java クラス …」を選択してください。

選択すると下記のウィンドウが表示されます。ここで「クラス名 (N) :」に「EV3AppMain」と入力し「終了 (F)」ボタンを押下してください。

クラスを作成すると下記の画面が表示されます。

ここで、「EV3AppMain」クラスに対して、EV 3 のパネルに文字列を表示させ、3 秒程緑色の LED を点滅させるプログラムを下記のように記載します。

package com.yoshio3.legomind;

import lejos.hardware.Button;
import lejos.hardware.lcd.LCD;
import lejos.utility.Delay;

/**
 *
 * @author Yoshio Terada
 */
public class EV3AppMain {

    public static void main(String... argv) {
        //パネルに文字列を表示
        LCD.drawString("Hello World", 0, 0);
        //緑の点滅ボタンを3秒間光らせる(有効値: 0 - 9)
        Button.LEDPattern(4);
        Delay.msDelay(3000);
    }
}

(7) アプリケーションのビルド/デプロイ(Mac/Linux/Windows 環境で実施)

コードを実装した後、プロジェクトをビルドしてください。プロジェクト・タブから「LEGOMind-Sample」プロジェクトを右クリックし「ビルド」を選択してください。

ビルドを行うと下記のメッセージが表示され、org.codehaus.mojo の wagon-maven-plugin を通じて、WiFi のネットワーク経由で自動的に /home/lejos/programs ディレクトリ配下に LEGOMind-1.0-SNAPSHOT.jar ファイルが配備されます。

cd /Users/USER_NAME/NetBeansProjects/LEGOMind; JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home "/Applications/NetBeans/NetBeans 8.0.app/Contents/Resources/NetBeans/java/maven/bin/mvn" install
Scanning for projects...
------------------------------------------------------------------------
Building LEGOMind 1.0-SNAPSHOT
------------------------------------------------------------------------
--- maven-resources-plugin:2.5:resources (default-resources) @ LEGOMind ---
[debug] execute contextualize
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory /Users/USER_NAME/NetBeansProjects/LEGOMind/src/main/resources
--- maven-compiler-plugin:2.3.2:compile (default-compile) @ LEGOMind ---
Nothing to compile - all classes are up to date
--- maven-resources-plugin:2.5:testResources (default-testResources) @ LEGOMind ---
[debug] execute contextualize
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory /Users/USER_NAME/NetBeansProjects/LEGOMind/src/test/resources
--- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ LEGOMind ---
No sources to compile
--- maven-surefire-plugin:2.10:test (default-test) @ LEGOMind ---
Surefire report directory: /Users/USER_NAME/NetBeansProjects/LEGOMind/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
--- maven-jar-plugin:2.4:jar (default-jar) @ LEGOMind ---
Building jar: /Users/USER_NAME/NetBeansProjects/LEGOMind/target/LEGOMind-1.0-SNAPSHOT.jar
--- wagon-maven-plugin:1.0-beta-5:upload (upload-jar) @ LEGOMind ---
Uploading /Users/USER_NAME/NetBeansProjects/LEGOMind/target/LEGOMind-1.0-SNAPSHOT.jar to scp://192.168.1.100///home/lejos/programs/LEGOMind-1.0-SNAPSHOT.jar ...
--- maven-install-plugin:2.3.1:install (default-install) @ LEGOMind ---
Installing /Users/USER_NAME/NetBeansProjects/LEGOMind/target/LEGOMind-1.0-SNAPSHOT.jar to /Users/USER_NAME/.m2/repository/com/yoshio3/LEGOMind/1.0-SNAPSHOT/LEGOMind-1.0-SNAPSHOT.jar
Installing /Users/USER_NAME/NetBeansProjects/LEGOMind/pom.xml to /Users/USER_NAME/.m2/repository/com/yoshio3/LEGOMind/1.0-SNAPSHOT/LEGOMind-1.0-SNAPSHOT.pom
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 4.837s
Finished at: Tue Apr 22 21:09:27 WIT 2014
Final Memory: 11M/312M
------------------------------------------------------------------------

8. アプリケーションの実行(EV3 で実施)

leJOS のメニュー画面より Programs (/home/lejos/programs ディレクトリ)を選択してください。

選択するとデプロイされているファイル一覧が表示されますので、LEGOMind-1.0-SNAPSHOT.jar を選択してください。

選択すると下記の画面が表示されます。そのままエンター・キー(真ん中のボタン)を押下してください。


押下すると下記の Duke が手を振っている画面 (しばらくお待ちください) が表示されます。アプリケーションをロードするまで数秒かかりますのでそのままお待ちください。

アプリケーションがロードされると下記のように実行され、メニューに「Hello World」が表示され、ボタンの LED が緑色に点滅する事を確認できます。

9. LEGO を組み立てて、超音波センサー、タッチ・センサー、モータ(車輪)を取り付けます。

上記で、Java を使って LEGO Mindstorms を制御できる事がわかりました。後は EV3 に LEGO のパーツを組み立てて、超音波センサーやタッチ・センサー、モータ(車輪)などを取り付けて自分オリジナルのロボットを組み立ててみてください。

その後で、下記 GitHub にアップロードしているコード例をご参照いただき実装すると、センサーから受け取った情報を元に EV3 を制御できるようになります。

GitHub にアップしたサンプルは、タッチセンサーに何かがぶつかると車輪が逆方向に回転し、超音波センサーに物を近づけると車輪の回転スピードが遅くなります。最後に EV3 の何らかのボタンを押すとアプリケーションを終了します。
https://github.com/yoshioterada/Java-Sample-app-for-LEGO-Mindstorms

今回私の上記実装では、車輪毎にリスナーを登録しセンサーからの情報に応じて車輪を制御する方法で実装しましたが、leJOS で提供されているサンプルを確認すると、様々な方法で実装ができるようです。是非色々お試しください。

また、調べていてちょっとおもしろかったのが、上記のようにデプロイしなくても、デスクトップの Java アプリケーションからWiFi 経由 (RMI) でリモートのEV3 を制御する事ができるので、これと JavaFX や WebSocket と組み合わせて応用すればスマートフォンや他のデバイスからリアルタイムに EV3 を制御できるようになるのではないかと想定します。

package com.yoshio3.legomind;

import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.logging.Level;
import java.util.logging.Logger;
import lejos.remote.ev3.RMIRegulatedMotor;
import lejos.remote.ev3.RMISampleProvider;
import lejos.remote.ev3.RemoteEV3;
import lejos.robotics.RegulatedMotor;
import lejos.robotics.RegulatedMotorListener;

/**
 *
 * @author Yoshio Terada
 */
public class RemoteOperation {

    public static void main(String... argv) {
        RemoteEV3 ev3;
        try {
            ev3 = new RemoteEV3("192.168.1.100");
            RMISampleProvider sampleProv = ev3.createSampleProvider("S1", "lejos.hardware.sensor.EV3TouchSensor", "sensor");

            // 車輪の制御 
            RMIRegulatedMotor right = ev3.createRegulatedMotor("B", 'L');
            RMIRegulatedMotor left = ev3.createRegulatedMotor("C", 'L');
            right.resetTachoCount();
            left.resetTachoCount();

            ExecutorService execSvc = Executors.newFixedThreadPool(3);
            execSvc.submit(new RunMotor(right));
            execSvc.submit(new RunMotor(left));

            Future<Float> res = execSvc.submit(new MonitoringTouch(sampleProv));
            if (res.get() == 1.0f) {
                right.stop(true);
                left.stop(true);
            }
        } catch (RemoteException | MalformedURLException | NotBoundException | InterruptedException | ExecutionException ex) {
            Logger.getLogger(RemoteOperation.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

class RunMotor implements Runnable {

    RMIRegulatedMotor motor;

    RunMotor(RMIRegulatedMotor motor) {
        this.motor = motor;
    }

    @Override
    public void run() {
        try {
            motor.setSpeed(400);
            motor.rotate(360 * 20);
            motor.close();
        } catch (RemoteException ex) {
            Logger.getLogger(RunMotor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
...

最後に

leJOS のオリジナルのサイトでは Eclipse でプラグインをインストールし ant を用いて開発する方法が紹介されていました。Eclipse ユーザの方はオリジナル・サイトをご参照いただければ幸いです。一応、私も Eclipse で試しましたが、上記オリジナルサイトの記載内容に従い設定を行う事で Eclipse で開発からデプロイまで行う事ができる所までは確認しました。

普段、私は NetBeans を使用しているため、今回 NetBeans で同様に開発ができないか?!と考え、上記環境設定を行いました。一旦、上記 1 〜 4 までの設定を行うと、以降の開発は 5 〜 8 までを繰り返し行うだけで NetBeans でも簡単に開発ができるようになります。また Eclipse と同様に、ビルドを行った時点で自動的に WiFi 経由でデプロイができるようになるためとても便利です。

どうぞ、Java で LEGO Mindstorms をお楽しみください。

PS.
Java SE 8 のローンチ・イベントで発表された Java SE Embedded で LEGO Mindstorms の説明資料も参考として紹介します。

また、Java Champion の Adam Bien もRun Java 7u40 Embedded on Lego Mindstormsのエントリで leJOS を使用した LEGO Mindstorms の制御のデモも公開していますので併せてご紹介します。

追記メモ2.
Java SE Embedded 8 を使う場合の手順。

1. Oracle Java SE Embedded version 8 の DownLoad

Oracle Java SE Embedded version 8のダウンロード

上記のページ内に下記の記述があります。
Java SE Embedded 8 enables developers to create customized JREs using the JRECreate tool. Starting with Java SE Embedded 8, individual JRE downloads for embedded platforms are no longer provided. To get started, download the bundle below and follow instructions to create a JRE that suits your application’s needs.

これは、Java SE Embedded 8 以降では、Java SE 7 のように個別の JRE を提供しないため、自分専用の JRE を、JRECreate ツールを使って作成する必要がある事が書かれています。

2. Create a Custom JRE with jrecreate

jrecreate コマンドを使用してカスタムの JRE を作成してください。

※ jrecreate コマンドの引数の詳細は下記をご参照ください。
jrecreate Options

上記、説明内容に従って、カスタムの JRE を作成してください。

> tar xvfz ejdk-8-fcs-b132-linux-arm-sflt-03_mar_2014.tar.gz
> cd ejdk1.8.0/
> ls
bin lib linux_arm_sflt
> cd bin
> ./jrecreate.sh -vm all -d /tmp/ejre1.8.0
Options {
ejdk-home: /Users/USER_NAME/Downloads/ejdk1.8.0
dest: /tmp/ejre1.8.0
target: linux_arm_sflt
vm: all
runtime: jre
debug: false
keep-debug-info: false
no-compression: false
dry-run: false
verbose: false
extension: []
}
を使用してJREを作成しています

ターゲットJREサイズは45,523 KBです(ディスクの使用量はこれより多いことがあります)。
埋込みJREが正常に作成されました
> cd /tmp/
> ls
ejre1.8.0
> tar cvf ejre1.8.0.tar ejre1.8.0
a ejre1.8.0
a ejre1.8.0/bin
a ejre1.8.0/bom
a ejre1.8.0/lib
a ejre1.8.0/release
a ejre1.8.0/lib/arm
a ejre1.8.0/lib/calendars.properties
a ejre1.8.0/lib/classlist
a ejre1.8.0/lib/content-types.properties
a ejre1.8.0/lib/currency.data
a ejre1.8.0/lib/ext
a ejre1.8.0/lib/hijrah-config-umalqura.properties
a ejre1.8.0/lib/jce.jar
a ejre1.8.0/lib/jsse.jar
a ejre1.8.0/lib/logging.properties
a ejre1.8.0/lib/meta-index
a ejre1.8.0/lib/net.properties
a ejre1.8.0/lib/resources.jar
a ejre1.8.0/lib/rt.jar
a ejre1.8.0/lib/security
a ejre1.8.0/lib/tzdb.dat
a ejre1.8.0/lib/security/blacklist
a ejre1.8.0/lib/security/cacerts
a ejre1.8.0/lib/security/java.policy
a ejre1.8.0/lib/security/java.security
a ejre1.8.0/lib/security/local_policy.jar
a ejre1.8.0/lib/security/trusted.libraries
a ejre1.8.0/lib/security/US_export_policy.jar
a ejre1.8.0/lib/ext/meta-index
a ejre1.8.0/lib/ext/sunjce_provider.jar
a ejre1.8.0/lib/arm/client
a ejre1.8.0/lib/arm/jli
a ejre1.8.0/lib/arm/jvm.cfg
a ejre1.8.0/lib/arm/libjava.so
a ejre1.8.0/lib/arm/libjsig.so
a ejre1.8.0/lib/arm/libnet.so
a ejre1.8.0/lib/arm/libnio.so
a ejre1.8.0/lib/arm/libverify.so
a ejre1.8.0/lib/arm/libzip.so
a ejre1.8.0/lib/arm/minimal
a ejre1.8.0/lib/arm/minimal/libjsig.so
a ejre1.8.0/lib/arm/minimal/libjvm.so
a ejre1.8.0/lib/arm/minimal/Xusage.txt
a ejre1.8.0/lib/arm/jli/libjli.so
a ejre1.8.0/lib/arm/client/libjsig.so
a ejre1.8.0/lib/arm/client/libjvm.so
a ejre1.8.0/lib/arm/client/Xusage.txt
a ejre1.8.0/bin/java
a ejre1.8.0/bin/keytool
a ejre1.8.0/bin/rmid
a ejre1.8.0/bin/rmiregistry
> gzip -c ejre1.8.0.tar > ejre1.8.0.tar.gz
> cp ejre1.8.0.tar.gz /Volumes/LEGO-PART/
> cp lejosimage.zip /Volumes/LEGO-PART/
> cd /Volumes/LEGO-PART/
> unzip lejosimage.zip
Archive: lejosimage.zip
creating: lejos/
creating: lejos/bin/
inflating: lejos/bin/partition.sh
inflating: lejos/bin/partfuncs.sh
inflating: lejos/bin/install.sh
inflating: lejos/bin/funcs.sh
inflating: lejos/bin/spinner.sh
inflating: lejos/bin/check.sh
creating: lejos/images/
inflating: lejos/images/lejoslogo.ev3i
inflating: lejosimage.bz2
inflating: uImage
inflating: uImageStandard
extracting: version

SD カードにファイルをコピーして展開した後、SD ディスクをアンマウントしてください。後は、上記 (2)ブート可能なマイクロ SD カードから起動(EV3 で実施)と同様に、作成した SD から EV3 を起動して(2)以降の処理を行ってください。
上記で、Java SE Embedded 8 で制御できるようになります。

Java SE 8 Embedded のコードを実装するためには、Maven の pom.xml の下記の行 (コンパイラのソース、ターゲット) をそれぞれ 1.7 → 1.8 に修正して実装してください。

  
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

備考:本来であれば、LEGO Mindstorms は Java SE Embedded 8 の “Compact Profile 2” で動作するようなのですが、現在 Compact Profile 2 で JRE を作成した場合は現時点で動作しません。本件は、leJOS のチームと Oracle の Embedded チームが現在調査中です。
上記は現時点(2014年4月28日時点)でのワークアラウンドとしてご利用ください。

Entry filed under: Java. Tags: , , , .

Java Day Tokyo 2014 開催のご案内 【若い方向け】Java Fan Meeting 2014 のご案内

13件のコメント

  • 1. Yoshio Terada  |  2014年4月24日 3:39 午後

    寺田 佳央 – Yoshio Terada でリブログ.

  • 2. 皆川 孝  |  2014年6月5日 4:18 午後

    寺田佳央さま 大変有用な情報ありがとうございました。

     地方都市で、小中学生に「ロボティクス教育」を実践しているものです。素敵な記事を拝見し、早速、EV3にLeJOSを導入するため、SDカードをMacでフォーマットして、ブート可能なマイクロ SD カードを作成しました。
     そして、マイクロSDにejre-7u60- と lejosimage.zip(SDカード内で展開し、展開したファイルを記事にあるように編集して)を入れてから起動して(EV3 で実施)LeJOSを立ち上げました。

     記事にあった23の
    1. Resize FAT32 fs

    22. Unmount disks
    23. Rebooting
    すべてが終了し、再起動したのですが、なぜかLeJOSでなく、これまでのEV3のSoftwareが立ち上がりました。起動ディスクが悪いのではと考え、ubuntuでフォーマットして再度挑戦しましたが、同じ症状になりました。

     Linuxにはまったくの初心者には、これ以上の原因が分かりません。お忙しいところ誠に申しわけありませんが、このような状況を脱出する手立てを教えてください。

     なお、NXTにはLeJOSを導入しています。EV3がLinuxになって大変困惑しているLEGO Mindstorms ユーザーです(泣)

     どうぞご支援ご指導よろしくお願いいたします。

    • 3. Yoshio Terada  |  2014年6月5日 6:28 午後

      私はそのような現象に遭遇した事はないのですが、SD カードは何ギガのカードをご利用頂いておりますでしょうか?また、SD カードを変更して頂いても同様の問題は発生しますでしょうか?
      私は同様の問題ではございませんが、4GB くらいの SD カードを使用した際に(原因は忘れましたが)うまく動作しなかった記憶がございます。SD カードを変えて実施した際に問題なく動作するようになった記憶がございます。大変恐れ入りますが別の SD カードでも試して頂いて同様の問題が発生するかをご確認頂く事はできませんでしょうか。

    • 4. Yoshio Terada  |  2014年6月5日 8:47 午後

      皆川様

      追加でもう一点、ご確認いただけませんでしょうか。
      私のエントリの一番下側に、「追記メモ2.Java SE Embedded 8 を使う場合の手順。」という
      内容を記載しております。現在、JRE 7.0 u60 をご利用との事ですが、追記メモ2の内容に
      したがって、Java SE Embedded 8 でインストールしていただくとどのような結果になるかも
      併せて教えていただければ誠に幸いです。

      • 5. 皆川 孝  |  2014年6月5日 9:12 午後

        寺田佳央様

         早速の返信本当にありがとうございます。また、友達申請を承認いただきありがとうございました。

        (1) Micro SDカードの容量は、16GBです。ただし、古いもの(class4)で代用したので、転送速度は遅いです。ただそれが原因とは思えません。(明日Amazonから16GB Class10が2枚届きます)

        (2) JavaSE Embedded8については明日試してみます。

        (3) 実は、先ほど気づいたのですが、先日EV3のファームウエアを1.03Eから1.06Eに変更しました。これが原因である可能性もありますので、この点についても検証してみます。

         今回のテストは、夏休みにLeJOS(Java)でロボットを制御するプログラム作成し、NXTでなくEV3に転送して動作させたいと思って、私自身が事前学習をしたものです。本当は、NXTの時のように簡単にプログラムを転送できたらありがたいのですが・・。
        <LeJOS(Java)の問題でなく、Mindstormsの問題点なのです>

         できるだけ早く検証してご報告します。今後ともよろしくお願いいたします。

        NPO法人新発田科学技術教育ネットワーク事務局長  皆川 孝

      • 6. Yoshio Terada  |  2014年6月5日 9:40 午後

        SDは16Gbだったのですね大変失礼致しました。

        今最新は、Java8ですので、どうぞせ8で
        お試し頂ければ幸いです。

        ファームは私もアップしておりませんので
        是非情報を頂ければ幸いです。
        仮に最新ファームで動かないという場合は
        私の方からUSに連絡を入れたいと思います。

        一度環境構築を行いますと
        開発環境からビルドをすれば自動的にLEGOにコピーされますので、とても開発がし易くなると思います。

        是非、Java 8 での情報をお待ちしております。

        先日、弊社でイベントがありまして、デモを実施しました、そこではLEGO上にWebSocket クライアントを実装しました。
        これによりWebSocketを通じリアルタイムでブラウザや、スマートフォンからLEGOを制御する事が出来るようになります。ラジコンのように。

        プログラムを作り下記にアップしております。
        もしよろしければご参照ください。

        https://github.com/yoshioterada/LEGOMind-WebSocket-Client
        https://github.com/yoshioterada/LEGOMind-WebSocket-Server

        今後ともどうぞよろしくお願いします。
        寺田

      • 7. 皆川 孝  |  2014年6月5日 10:08 午後

        寺田佳央 様

         Oracle JapanがJava for EV3の講習会を実施したことは小林社長のFaceBookで見せていただきました。
        ・・・・・・・・・・・・・・
        小林 靖英さんがOracle Japan (日本オラクル)さんの写真をシェアしました。
        6月3日
        Java で EV3プログラミング
        ・・・・・・・・・・・・・・・
         東京にいたら参加したのにと残念に思っていたところです。
        早速Afrelさんから、
        「実習-教育版EV3・Java 授業用指導案生徒用テクニカルガイド」を購入して勉強することにしたところです。私と今一緒に「ロボティクス」を学んでいるのは小学校3年生から中学校2年生ですので、Java for EV3をどの程度理解できるか楽しみなのですが、子どもたちが購入したEV3でもJava Programingができることを願っているところです。(最初の取りかかりでは、Enchantingを活用しました)

         Java8については超初心者の私にはちょっとばかりハードルが高いのですが、楽しくTRYしてみたいと思います。どうぞよろしくお願いいたします。

           皆川 孝

        (P/S)名前の横の写真の表情が気になるのですが(笑)困惑して私と言うことでお許しください。変更はどうしたらよいのかなぁ!?

  • 8. 皆川 孝  |  2014年6月6日 9:30 午前

    寺田佳央 様

     今朝、他のSDカードで実行してみることを検証してみましたので、報告いたします。

    【検証すること】 以前RaspberryPi用にと購入した4GB(Class10)のMicroSDが見つかったので、このMicroSDカードを使って昨夜と同じ状況になるかを検証する。

    【検証結果】 違うMicroSDで検証したのですが同じ症状になる。

     〇 同じ症状とは、Macで作成したMicroSDカードを入れてセンターのボタンを押すと、LeJOSを導入するプログラムが立ち上がる。
     ところが、最終23のRebooting後、5、4、4,3,2,1とカウントダウンし、再起動(Reboot)すると再びEV3の最初の画面に戻り、少し待つとなんとEV3のfirmwareが立ち上がってしまう(LeJOSが立ち上がらない)。
     ☆ ファイル構成をみると、なんと1パーティションだったはずが2つになっていて、4GB(16GBの時も同じ)のうち、500MBだけが、1パーティション時に作成した名前で表示される。
     ☆ ubuntuで中をのぞくと残りの容量(3.3GB)はファイルシステムという名前になっていた。

    たぶん寺田さんの記事にある

     sd500.zipがこのような構成を作成していると推測しています。
    ・・・・・・・・・・・・
    (1) SD カードへファイルのコピーと展開 (Mac/Linux/Windows 環境で実施)

    事前準備の (3) でダウンロードした leJOS_EV3_0.8.1-beta.tar.gz を展開してください。
    > tar xvf leJOS_EV3_0.8.1-beta.tar.gz
    > ls
    COPYING README.md bin lejosimage.zip lib samples.zip sd500.zip
    展開すると lejosimage.zip が存在しますので、このファイルと JRE7 を SD にコピーしてください。ファイルをコピーした後、SD カード内で lejosimage.zip を展開してください (※ JRE の展開は不要です)。
    ・・・・・・・・・・・・・・・・

     そして、EV3へ導入前は ulmageStandard というファイル名が
     ulmageNoobsに変わっているようです。(中身の変化は確認することができませんでした。)
     1度この変化(2パーティションに分離、ulmageNoobsの作成)の後は、EV3にMicroSDカードを入れても導入動作が行われませんでした。

    【検証して考えたこと】
    〇 素人の推測ですが、MicroSDにLeJOSは導入できたが、EV3本体のfirmwareの書き換えができなかったのではないか?と思うのです。
    〇 それは、これまでNXTのfirmwareを変更した経験では、再起動時にLeJOSでなくEV3 firmwareが立ち上がると言うことは、LeJOSには切り替わっていないためと考えるのです。
    〇 また、EV3のfirmwareを1.06Eから1.03Eに戻しても変化がなかったことで、LeJOSへfirmwareの書き換えができなかったと考えます。(EV3のfirmwareとLeJOSのfirmwareとの関係を正しく理解していないため間違っているかもしれません)
    〇 以上のことから、firmwareの変更がうまく動作していなかったためではないかと考えていますがいかがでしょうか。
     
     その他の検証は、後ほど実施いたします。お忙しいところ申しわけありませんがどうしたらよいかご支援ご指導よろしくお願いいたします。<皆川>

    • 9. Yoshio Terada  |  2014年6月6日 10:24 午前

      > ファイル構成をみると、なんと1パーティションだったはずが2つになっていて、4GB(16GBの時も同じ)のうち、500MBだけが、1パーティション時に作成した名前で表示される。
      > ubuntuで中をのぞくと残りの容量(3.3GB)はファイルシステムという名前になっていた。

      はい、上記の動作に問題はございません、lejosimage.zip を展開した後、
      SD カードからブートをすると、自動的にパーティションを作成しその部分に
      Linux のファイルシステム(ext2)を作成しインストールを行います。

      今回、私の方で JDK 8 用の JRE を作成し下記にアップ致しましたので、
      LEGO.tar.gz を展開後、lejosimage.zip と ejre1.8.0.tar.gz を
      SD カードにコピーして頂き、SD カードのディレクトリ内で lejosimage.zip
      を展開して試していただけないでしょうか。

      https://dl.dropboxusercontent.com/u/82572475/LEGO.tar.gz

      上記で駄目な場合は、私の SD のイメージを丸ごとダンプしてお送り致します。

      • 10. 皆川 孝  |  2014年6月6日 12:14 午後

        寺田様

        >>今回、私の方で JDK 8 用の JRE を作成し下記にアップ致しましたので、LEGO.tar.gz を展開後、lejosimage.zip と ejre1.8.0.tar.gz を
        SD カードにコピーして頂き、SD カードのディレクトリ内で lejosimage.zipを展開して試していただけないでしょうか。 

         早速の返信ありがとうございます。先ほど3回確かめてみましたがやはり状況は変わりませんでした。

        >>上記で駄目な場合は、私の SD のイメージを丸ごとダンプしてお送り致します。

         お手数ですが、よろしくお願いいたします。

        皆川

  • 11. oking  |  2014年7月12日 11:06 午後

    私も同じ問題にはまりましたが、本家のlejosのフォーラムを見て解決しました。ご参考までに。

    • 12. Yoshio Terada  |  2014年7月13日 9:21 午前

      ちなみに、フォーラムをご参照いただいて、どのようにご解決いただきましたでしょうか?
      もしよろしければ、実際の解決方法を教えて頂ければ幸いです。

  • 13. 金子  |  2014年11月27日 11:46 午後

    寺田様、

    記事を拝見させていただきやってみたのですが、
    (7) アプリケーションのビルド/デプロイができません。
    Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-5:upload (upload-jar) on project mavenproject1: Unable to create a Wagon instance for scp://192.168.1.5/: Cannot connect. Reason: java.net.ConnectException: Connection refused -> [Help 1]
    と出ます。

    telnet ではEV3に接続できるのですが、PCから scp でファイル転送できません。

    $ scp settings.xml root@192.168.1.5:/mnt/ramdisk/
    ssh: connect to host 192.168.1.5 port 22: Connection refused

    EV3 上で sshのデーモンが起動していないためだと思うのですが、起動させる方法はありますでしょうか。


Java Champion & Evangelist

Translate

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2014年4月
 123456
78910111213
14151617181920
21222324252627
282930  

カテゴリー

clustermap

ブログ統計情報

  • 1,288,655 hits

Feeds

アーカイブ