A project to learn Java and create software for Mindstorms Robots using hardware supported by EV3Dev & the LeJOS way.

1. Introduction

Lego Mindstorms ecosystem is a fantastic educational way to learn Java, Linux and Robotics to develop your creativity using your favourite Bricks. In the the third generation of the product Lego Mindstorms EV3, others companies like Dexter Industries & Mindsensors has released boards combining the power of Raspberry Pi 3 with the usage of Sensors & Actuators from Lego Mindstorms ecosystem. The result is very healthy for the Community but…​ some questions appear in the air:

  • How to manage the hardware in an easy way?

  • How to continue using Java with all boards?

  • What happen with amazing LeJOS libraries about local-navigation in this context?

The answer is this project, EV3Dev-lang-java.

ScreenShot

2. Project architecture

The project has been designed with the following solution in mind:

Layer Option 1 Option 2

ev3dev-lang-java

0.7.0

2.4.16

Platforms

BrickPi BrickPi3 PiStorms

EV3

OS

Debian Jessie

Debian Jessie/Stretch

JVM

OpenJDK 11

OpenJDK JRI 11/12 ea

EV3Dev Kernel

4.4.47-19-ev3dev-ev3 4.4.47-19-ev3dev-rpi2

4.14.71-ev3dev-2.3.0-ev3

Note: At the moment, the whole solution is scalable until the next LEGO Mindstorms product estimated for next January of 2020.

3. Features included

Java features

  • OpenJDK Java 11/12 ea support for EV3 Brick, Brickpi+/PiStorms + Raspberry Pi 3

  • Java profiling tools Support (Oracle mission control & JConsole)

  • Logging support based on SLF4J

  • Centralized logs with Kibana

Platform features

  • Support for EV3 Brick, PiStorms v1/v2, BrickPi+ & BrickPi 3

Lego Mindstorms features

  • Regulated Motor Support

  • Unregulated Motor Support

  • Sensor Support (EV3 sensors)

  • Sounds Support

  • EV3 LCD Support

Robotics

4. Subprojects

Stable projects:

Incubator projects:

  • lejos-navigation: LeJOS navigation stack

  • Usb Devices: A library to use Arduino, Grove Sensors, GPS, IMU, LIDAR, and more devices…​

  • ROS: A library to publish Sensor data to ROS for SLAM purposes

5. Competitive advantages

The competitive advantages of this project are:

  • Development Java robots with modern Java versions

  • Support for Multiple Bricks like EV3 Brick, BrickPi & PiStorms

  • Support for USB Connections for Sensors like 2D LIDARs, IMU & GPS & Arduino Boards

  • Usage of LeJOS interfaces

If you analyze the hardware, any EV3 Brick uses a SoC: Sitara Processor AM1808 (from year 2010) to manage Sensors & Actuators but now with the usage of a BrickPi/PiStorms unit, it is possible to use the power of a Raspberry Pi 3 increasing the possibilities to develop complex projects which require por Computational consumption.

Element LEGO Raspberry Pi 3 Model B+

Year

2010

2018

Hardware

EV3 Brick

BrickPi+ BrickPi3 PiStorms

SoC

Sitara Processor AM1808

Broadcom BCM2837 RISC de 64 bits

CPU

ARM9 300MHz / 456 Mhz

4× ARM Cortex-A53, 1.4GHz

RAM

16KB of Instruction Cache, 16KB of Data Cache, 8KB of RAM (Vector Table), 64KB of ROM

1GB LPDDR2 (900 MHz)

USB

1x

4x

6. Timeline of the project

In 2015, EV3Dev was born to offer a solution to install a complete Linux Debian Operating System on EV3 Brick, BrickPi Series & PiStorms Series. The project provides an agnostic Linux interface to unify the way to interact with Mindstorms Hardware too.

At the end of the same year, EV3Dev-lang-java was born with the idea to continue developing Java robots on Lego Mindstorms and providing a port of LeJOS libraries like the local-navigation stack.

In the future, we will add the remote support and ROS support.

7. Evolution of Java on Lego Mindstorms ecosystem

LeJOS project is the unique Open Source project available for every Lego Mindstorms generations of the product. In any generation, the project had to find a solution for the following layers:

  • Runtime

  • JVM

  • Robotics libraries

This premise was solved in every Mindstorms generation:

Product RCX NXT EV3 + LeJOS EV3/BrickPi/PiStorms + EV3Dev-lang-java

Last release

17/12/2006

03/02/2015

16/11/2015

13/11/2018

Runtime

Custom firmware

Custom firmware

Busybox + Native libraries

Debian Jessie/Stretch

JVM

Custom JVM

Custom JVM

Oracle JRE 8

OpenJDK 11/12 ea

Robotics libraries

Initial libraries

local-navigation, remote, ros

local-navigation, remote

local-navigation