MIRTO: an Open-Source Robotic Platform for Education
Summary (4 min read)
1 Introduction
- The teaching team decided to place particular emphasis on physical manifestations of computing through the use of hardware resources, in an attempt to create a syntonic environment (in the sense of [14]), in which students could “establish a firm connection between personal activity and the creation of formal knowledge”.
- This approach is particularly useful for code comprehension, but also to cover with practical and concrete projects some of the topics typical of Software Engineering, such as agile development in a team, continuous integration, and test-driven development.
2 Hardware details
- The main components are: A pair of 5 V 1:34 geared motors with encoders connected to 1/10 scale car wheels.
- The wheels and the off-the-shelf components are connected to the Teensy micro-controller by means of a bespoke printed circuit board (PCB) that has been designed at Middlesex ; the design files of the PCB are released open source (see links below) and several companies are available to print them.
- A Raspberry Pi version 3 with 1.4GHz 64-bit quad-core processor, 1 Gbyte RAM, built-in WiFi, 4 USB ports, HDMI, composite audio output and 40-pin GPIO header.
- The frame of the robot is made using 3 mm acrylic sheets cut using a laser cutter, locked using threaded nuts and bolts.
- The design files for the frame in DXF format, the design files for the PCB, a full list of parts, and hardware instructions are available at https://github.com/michaelmargolis/MirtoDesignFiles.
3 Software Details
- The core software component (and main difference between MIRTO and other robotic platforms) is a bespoke firmware running on the Teensy that allows for the interaction of the micro-controller with separate clients over a streaming connection (typically a serial connection).
- Racket [9] is a LISP-like programming language used since 2013 to teach foundations of programming to First Year Computer Science students at Middlesex University.
- Figure 5 shows an example of how the robot can be controlled over TCP.
4.1 Teaching applications
- The robot enables us to cover several knowledge areas of the ACM Computer Science Curriculum [10].
- In addition to Software Development Fundamentals such as conditional structures, iterative control structures, recursion, and abstract types such as Stacks and Priority Queues, MIRTO exposes students to a physical manifestation of concepts such as unit testing and programming using APIs.
- Moreover, MIRTO can be used to cover specific Software Engineering topics, some of which are exemplified in the following subsections.
4.1.1 Continuous integration and delivery
- The Raspberry Pi layer of MIRTO runs a standard Debian-based Linux distribution.
- As a result, all the development tools available on a standard Linux distribution are also available on MIRTO.
- The key features of continuous integration and delivery can be covered by installing git on the Raspberry Pi and by defining a “bare” git repository2 on it.
- A typical exercise for this scenario is the following: “Develop a line following algorithm for MIRTO using the infra-red sensors to detect the presence of a black line.
- Students are given a Bash script containing the basic instructions to build the software on the Raspberry Pi, to stop a running process (the line following algorithm in this case), and to re-start the process.
4.1.2 Test-driven development
- Students are required to reason about functional requirements, describing how system data is exchanged using UML.
- Figure 6 shows an example UML sequence diagram showing how a message travels from the student laptop to the actual wheel through a TCP/Serial bridge on the Raspberry Pi and ASIP messages.
- Students are requested to draw these diagrams for all components, thus modelling the bi-directional flow of information and reasoning about the overall architecture (see next section).
- Students are requested to design unit tests for all the components modelled with UML diagrams.
- Given the black-box nature of system tests, when working in groups students can test other groups’ systems and thus also appreciate with concrete instances the notion of acceptance testing, thus covering all the steps: unit testing, integration testing, system testing and acceptance testing.
4.1.3 Reasoning about system architectures
- The robot is inherently more complex than software-only systems that can be used in a teaching environment.
- At the very least, the robot is composed of multiple and independent sensors and actuators that are coordinated by a microcontroller.
- There are two options in this case: in the first option, the code can run on the Raspberry Pi itself (all the client libraries are supported, including Racket).
- All these options allow students to reason about configuration and release management for the several projects that can be implemented.
- First year students typically implement this task using Racket and its built-in web server to drive a robot using key presses on a browser.
4.2 Student projects
- The authors encourage students to work autonomously at projects of their choice throughout the course of their studies, encouraging them to build a portfolio of projects using a code repository such as GitHub and Bitbucket.
- The authors allocate teaching time for these activities, in particular: in the last four teaching weeks of the First Year, students have the option of working at the “First Year Challenge in Computer Science”.
- This is a challenge funded by an external industrial sponsor that provides a prize of 500 GBP for the “best” student project.
- For this challenge, students typically work in groups and projects are assessed for their originality, for the Software Engineering approaches used, and for the complexity of the tasks.
- The authors report below two submissions received in previous years and a third year project that led to a publication.
4.2.1 Voice recognition.
- This project by a first year student involved the use of Carnegie Mellon PocketSphinx4, a lightweight continuous speech recognition engine written in C.
- The student compiled the code on the Raspberry Pi and modified it so that it could output only specific command such as “move forward”.
- The commands were then streamed to a Racket application that moved the robot accordingly.
- The only additional component required for this project was a USB microphone connected to the Raspberry Pi.
4.2.2 Using Twitter and Image Capturing.
- This project by a group of first year students involved the use of the Twitter streaming API5.
- By connecting MIRTO to the internet, students were able to filter tweets containing the keyword MIRTOBOT.
- Then, they could parse specific messages such as movement instructions, but also instructions to take pictures using a USB webcam added to the Raspberry Pi.
- All the images captured in this way have been made available through a web server running on the robot and written in Racket.
4.2.3 Swarm robotics
- The student first developed and simulated algorithms for decision making using NetLogo [17].
- These algorithms have then been implemented in Java and deployed on Mirto.
- This project shows that MIRTO can be used not only for teaching, but also to introduce students to research activities.
5 Evaluation
- In this section the authors evaluate the MIRTO platform and compare it to other existing solutions.
- The authors also discuss their experience since 2013 and report lessons learnt that, they hope, may be useful to other educators who plan to use a robotic platform in their classes.
5.1 Qualitative and Quantitative Considerations
- In terms of a qualitative financial evaluation, the overall cost per robot for parts only is approximately 100 GBP; the most expensive components are the Raspberry Pi (approx 30 GBP) and the Teensy 3.2 (approx 20 GBP).
- Given that the robots are pre-assembled and that students are provided with high-level libraries and detailed handouts, the authors have observed that students are able to start working at specific tasks such as “move forward for 1 second” in less than 30 minutes when they are first exposed to the platform.
- The most energy-hungry task is wheel movement at maximum torque (i.e., uphill or on a “soft” surface).
- In particular, after introducing the material for a SOB, the authors have observed how many students were observed on subsequent days, for a total of 144 students in the academic year 2017/18.
- Only 4 other SOBs are observed (on average) earlier than the SOB on the robot: 2 of them are related to an in-class programming test which is normally observed within a week, as students are required to take the test in specific dates.
5.2 Comparison with other platforms
- The number of robotic platforms used in teaching is vast, and a detailed review of the options is beyond the scope of this article.
- Micro-controllers are also commonly found in classrooms, including Arduino boards and the UK-specific BBC micro:bit (http://microbit.org/) targeted at Year-7 students and including both blockbased and textual coding environments.
- The main difference with respect to their solution is that the authors release both hardware and software as open source.
- In general, the adoption of robots in the classroom is by no means new, see for instance [4] for a systematic literature review and for references to options beyond Lego EV3.
- The authors argue that, in the case of MIRTO, the provision of highlevel libraries in Java and other programming languages enables students to by-pass low-level technical issues.
5.3 Lessons learnt
- Over the years, the authors have made a number of changes that allowed us to: Simplify assembly and reduce maintenance: starting in 2015, they have designed their own printed circuit board, resulting in a very small number of wires required.
- There is a total of approximately 180 students in the First Year of Computer Science; students are split in groups of approximately 30 students and therefore the same lab sessions are repeated six times every week.
- For the robotic sessions the authors normally employ between 7 and 10 robots per class, corresponding to approximately 3 students per robot.
6 Conclusion
- An open source robotic platform employed at Middlesex University to teach Software Engineering knowledge areas from the ACM curriculum [10].the authors.
- The authors have described both the hardware and the software architecture of the robot and they have provided example activities for the classroom and reported projects developed by students in the past 5 academic years.
- In addition to its usage in the classroom, the authors have used MIRTO for outreach activities with audiences ranging from primary school children to science festivals with adults.
- Given the level of maturity and stability of the platform, the authors are now beginning to start using the platform for research purposes to study energy consumption in wireless sensor networks and genetic algorithms for strategy selection in a multi-robot environment.
- ASIP firmware for the Teensy layer: https://github.com/mdxmase/asip Java ASIP client library: https://github.com/fraimondi/java-asip.
Did you find this useful? Give us your feedback
Citations
868 citations
8 citations
Cites background from "MIRTO: an Open-Source Robotic Platf..."
...4; and a second, more limited live experiment consisting of four robots incorporating the MIRTO robotic platform [Androutsopoulos et al. 2018], moving on a scaled down 5×5 square enclosure where each position in the grid contains exactly one robot and robots change positions by following black lines arranged in a triangular Petersen mesh, shown in Figure 6....
[...]
2 citations
Cites background from "MIRTO: an Open-Source Robotic Platf..."
...They extend this work to projects that involve programming bespoke robots with on board Raspberry Pi computers [20], infrared and bump sensors etc....
[...]
References
6,780 citations
5,199 citations
2,823 citations
"MIRTO: an Open-Source Robotic Platf..." refers methods in this paper
...The robots are also used for outreach activities with children using Scratch [15]: a Scratch-MIRTO bridge is available at https://github....
[...]
...The robots are also used for outreach activities with children using Scratch [15]: a Scratch-MIRTO bridge is available at https://github. com/fraimondi/java-asip....
[...]
...For Scratch activities, the robot creates a wireless access point and children can employ blocks that we have designed to perform simple tasks, such as moving inside an area delimited by black tape to simulate a Roomba robot: an example program for this task is reported in Figure 10....
[...]
2,475 citations
Related Papers (5)
Frequently Asked Questions (2)
Q2. What have the authors stated for future works in "Mirto: an open-source robotic platform for education" ?
Given the level of maturity and stability of the platform, the authors are now beginning to start using the platform for research purposes to study energy consumption in wireless sensor networks and genetic algorithms for strategy selection in a multi-robot environment.