Legodroid: A Type-Driven Library for Android and LEGO Mindstorms Interoperability †

LEGO Mindstorms robots are widely used as educational tools to acquire skills in programming complex systems involving the interaction of sensors and actuators, and they offer a flexible and modular workbench to design and evaluate user–machine interaction prototypes in the robotic area. However, there is still a lack of support to interoperability features and the need of high-level tools to program the interaction of a robot with other devices. In this paper, we introduce Legodroid, a new Java library enabling cross-programming LEGO Mindstorms robots through Android smartphones that exploits their combined computational and sensorial capabilities in a seamless way. The library provides a number of type-driven coding patterns for interacting with sensors and motors. In this way, the robustness of the software managing robot’s sensors dramatically improves.

[1]  Robert Cartwright,et al.  A first-class approach to genericity , 2003, OOPSLA '03.

[2]  Hashim Habiballa,et al.  Adaptive Control of EV3 Robot Using Mobile Devices and Fuzzy Logic , 2018, ICISA.

[3]  Michael D. Ernst,et al.  Object and reference immutability using Java generics , 2007, ESEC-FSE '07.

[4]  J BarnesDavid Teaching introductory Java through LEGO MINDSTORMS models , 2002 .

[5]  Jeremy Gibbons,et al.  Design patterns as higher-order datatype-generic programs , 2006, WGP '06.

[6]  Albert Zündorf,et al.  Using the Android Platform to control Robots , 2011 .

[7]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[8]  Suresh Jagannathan,et al.  Safe futures for Java , 2005, OOPSLA '05.

[9]  David J. Barnes,et al.  Teaching introductory Java through LEGO MINDSTORMS models , 2002, SIGCSE '02.

[10]  Edwin Brady,et al.  Programming and reasoning with algebraic effects and dependent types , 2013, ICFP.

[11]  Frank Klassner,et al.  LEGO MindStorms: not just for K-12 anymore , 2003, IEEE Robotics Autom. Mag..

[12]  Erik Poll,et al.  Type-based Object Immutability with Flexible Initialization - extended version , 2009 .

[13]  Sergey A. Kolyubin,et al.  Using of LEGO Mindstorms NXT Technology for Teaching of Basics of Adaptive Control Theory , 2011 .

[14]  WadlerPhilip,et al.  Making the future safe for the past , 1998 .

[15]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[16]  Moshe Barak,et al.  Robotics projects and learning concepts in science, technology and problem solving , 2009 .

[17]  Henrik Hautop Lund,et al.  RoboCup Jr. with LEGO MINDSTORMS , 2000, Proceedings 2000 ICRA. Millennium Conference. IEEE International Conference on Robotics and Automation. Symposia Proceedings (Cat. No.00CH37065).

[18]  KlassnerFrank A case study of LEGO Mindstorms' suitability for artificial intelligence and robotics courses at the college level , 2002 .

[19]  Jae Wook Jeon,et al.  Introduction for Freshmen to Embedded Systems Using LEGO Mindstorms , 2009, IEEE Transactions on Education.

[20]  Gregory Kalogiannis,et al.  Introducing an innovative robot-based mobile platform for programming learning , 2015, 2015 International Conference on Interactive Mobile Communication Technologies and Learning (IMCL).

[21]  Chandra Krintz,et al.  Language and Virtual Machine Support for Efficient Fine-Grained Futures in Java , 2007, 16th International Conference on Parallel Architecture and Compilation Techniques (PACT 2007).

[22]  Charles A. Poynton,et al.  Gamma and Its Disguises : The Nonlinear Mappings of Intensity in Perception, CRTs, Film, and Video , 1993 .

[23]  Patrice Chalin,et al.  Non-null References by Default in Java: Alleviating the Nullity Annotation Burden , 2007, ECOOP.

[24]  Richard Warburton,et al.  Java 8 Lambdas: Pragmatic Functional Programming , 2014 .

[25]  Frank Pfenning,et al.  Dependent types in practical programming , 1999, POPL '99.

[26]  Agostino Cortesi,et al.  Type-Driven Cross-Programming for Android and LEGO Mindstorms Interoperability , 2019, CISIM.

[27]  Alan Mycroft,et al.  Polymorphic Type Schemes and Recursive Definitions , 1984, Symposium on Programming.

[28]  Chandra Krintz,et al.  EFFICIENT SUPPORT OF FINE-GRAINED FUTURES IN JAVA , 2006 .

[29]  Pavel Smutny,et al.  Remote control robot using Android mobile device , 2014, Proceedings of the 2014 15th International Carpathian Control Conference (ICCC).

[30]  Andrew B. Williams The qualitative impact of using LEGO MINDSTORMS robots to teach computer engineering , 2003, IEEE Trans. Educ..

[31]  Dung Zung Nguyen,et al.  Design patterns for lazy evaluation , 2000, SIGCSE '00.

[32]  Patrice Chalin,et al.  Reducing the use of nullable types through non-null by default and monotonic non-null , 2008, IET Softw..

[33]  Edward M. Granger Is CIE L*a*b* good enough for desktop publishing? , 1994, Electronic Imaging.

[34]  Eric Rosenbaum,et al.  Scratch: programming for all , 2009, Commun. ACM.

[35]  Benedict R. Gaster,et al.  A Polymorphic Type System for Extensible Records and Variants , 1996 .

[36]  Brian Ellis,et al.  The Factory Pattern in API Design: A Usability Evaluation , 2007, 29th International Conference on Software Engineering (ICSE'07).