Stephan G¨ bel, Ruben Jubeh, Simon-Lennert Raesch and Albert Z¨ ndorf o
Software Engineering Research Group
Wilhelmsh¨ her Allee 73
34121 Kassel, Germany
Email: [sgoe jubeh lrae zuendorf]@cs.uni-kassel.de
Abstract—The Android Mobile Phone Platform by Google
becomes more and more popular among software developers,
because of its powerful capabilities and open architecture. As its based on the java programming language, its ideal lecture content of specialized computer science courses or applicable to student projects. We think it is a great platform for a robotic system control, as it provides plenty of resources and already integrates a lot of sensors. The java language makes the system very attractive to apply state-of-the-art software engineering techniques, which is our main research topic. The unsolved issue is to make the android device interoperate with the remaining parts of the robot: actuators, specialized sensors and maybe coprocessors. In this paper we discuss various connection methods and present a ﬁrst approach to connect Android with the LEGO Mindstorms NXT robotics system, which we successfully used in our robotics/software engineering courses so far.
I. I NTRODUCTION
Android devices are powerful mobile computers with permanent internet connectivity and a rich variety of built-in sensors. More properties make the Android system very applicable for university use: Android uses the Java programming language, which our students are familiar with. Getting started with the Android API is easy; the API is open, i.e. developers can access almost every low-level function and are not sandboxed. In addition, the Android API allows easy access
to the hardware components. Interesting for robotics use are the numerous communication interfaces like WiFi, Bluetooth
and GSM/UMTS, USB, and the integrated sensors, that is:
accelerometer, gyroscope, compass and GPS. Because its a
mass product, devices are available for already around 100$, which is much cheaper than any other ARM-based processing
unit (e.g. Beagle Board). But the Android platform currently lacks the ability to physically extend it to control more sensors and actuators. This is actually a precondition if we want to use an android device as robotic processing unit, and section VI-A will discuss various options to overcome this restriction.
As we are software engineers, the main focus of our robotic
related courses lies in software aspects like model driven
software development, code generation, test based development, and strict object orientation. To make algorithms, data structures and software behavior more concrete, we started to create a bridge to real world objects by the use of robotics. Because it’s easy to build robots with, we initially used the LEGO Mindstorms RCX and later NXT for our projects and
courses. Mindstorms NXT allows to control up to three servo
motors and provides a set of useful sensors, which is sufﬁcient for building simple robots like path ﬁnders, forklifts etc. From our point of view, another advantage of the NXT system
is the availability of a Java Virtual Machine, called leJOS. However the leJOS Java (no reﬂection), the CPU power and
the RAM and ROM space (64kb each) provided by the NXT
are quite restricted. Due to our experiences, the capabilities of the NXT do not sufﬁce to run complex Java programs
with complex runtime data models that want to use for smart
system behavior. The LEGO Mindstorms NXT and leJOS will
be further discussed in section III.
To overcome the restrictions of LEGO Mindstorms NXT
while still using their sensor and actuator control capabilities, we use a two layer approach. The lower layer uses NXT
controlled sensors and actuators and the upper layer provides the more complex behavior exploiting the capabilities of an
Android device. The two layers are e.g. connected using
Bluetooth. The NXT provides...