Category Archives: Uncategorized

The Middlesex Robotic Platform (MIRTO), version 3

MIRTO (also known as Myrtle, or Mirto-bot) is a robotic platform developed at Middlesex University in the School of Science and Technology with the help of staff and students. It has been used in teaching since 2014 and it has been improved in a number of ways during the past two years. The current platform is used not only for teaching, but also for research. In this post I will describe the basic features, some of the applications that have been built on top of it, and the structure of the platform (both software and hardware).

Mirto bot, front view

Mirto, front view

The robot has:

  • Two HUB-ee wheels (with built-in quadrature encoders)
  • Two front bump sensors
  • A small LCD screen (5 lines, 21 characters per line)
  • Infra-red sensors mounted under the base layer (they can be used to follow lines)
  • A potentiometer and a push button
  • A Raspberry Pi layer with WiFi and several other connection points: 4 USB ports, audio output, HDMI output, Ethernet and the usual Raspberry Pi slots for a video camera.

The robot is powered by a standard, rechargeable 5 V battery pack.

Mirto: rear view with battery and Raspberry Pi connections

Mirto: rear view with battery and Raspberry Pi connections

Apart from the hardware characteristics, a substantial amount of effort has been devoted to the development of software to support several programming languages and several mechanisms of interaction with the robot. First year students employ the Racket programming language (a dialect of Lisp) to control the robot. This is an example of Racket code that can be uploaded to the Raspberry Pi and run form there:

(setMotors 180 180)
(setLCDMessage "Starting wheels" 0)
(sleep 1)

Alternatively, the robot can be controlled using Java or Python, which can be running either on the Raspberry Pi or on a machine on the same network of the robot, as shown in the following Java example that simulates a simplified Roomba robot:

JMirtoRobotOverTCP robot = new JMirtoRobotOverTCP();
robot.initialize(""); // Connect to a robot on the same network
while (true) {
  if (robot.isPressed(0) || robot.isPressed(1) || (robot.getIR(1)>250)) {
    // Do something if bump sensors pressed or IR reads a value > 250
    // Now rotate for a bit
    robot.setMotors(100, 100);
    robot.setMotors(150, -150);					

Recently, we have developed new blocks for the off-line version of Scratch that can be used to control the robot. The following image shows the new blocks and a Scratch program equivalent to the Java code shown above:

mirto-scratchThe following video shows the results of a program implemented by high school students using Scratch, whose task was to develop a program to keep the robot inside a square marked with black tape (detected by infra-red sensors). The students implemented a program similar to the one in the figure above, adding control of the LCD screen and sounds:

The key software components of Mirto are:

The details of the hardware components of the robot are:

  • A Raspberry Pi. We are currently using a Raspberry Pi 2 Model B (but we are investigating the use of a Raspberry Pi 3).
  • A Teensy 3.2 microcontroller. It has a 32 bit ARM processor, you can think of it as a small but powerful Arduino board with more input and output pins.
  • A bespoke PCB that allows the connection of the Teensy to the Raspberry Pi using the Pi’s GPIO pins and makes it easy to connect all the other components (wheels, bump and infra-red sensors, LCD screen, a piezo buzzer, a potentiometer and a push button)
  • The wheels are two HUB-ee wheels. These wheels have built-in quadrature encoders and can be easily controlled using PWM pins.
  • The perspex layers are cut at Middlesex using a laser cutter. The battery pack is just a standard 9000 mAh battery pack with two USB outputs.

Please feel free to contact me if you need additional details!


Job ad: Linux + PHP + MySQL + Python

A company I know is looking for someone with some experience of Linux system administration, PHP + (My/Postre)SQL and Phyton. The company is a start-up based in a great location (very close to Tower Bridge and the Design Museum). Salary is 40K. Contact me if you are interested and I’ll give you more details.

Voluntary Open Access Journals

A recent article on The Guardian started (yet another) discussion on Open Access Journals. One party asks whether the results of publicly-funded research should only be available for a fee that helps the balance sheet of academic publisher. The other party wonders how do we avoid predatory publishers of Open Access journals charging $500 or more to publish a paper, and playing the “impact factor game“.

I don’t have an answer, I only have another question…All the work I do for academic publishers is voluntary. I review various dozens of articles every year for free, because I can list this activity in my CV. The same happens for editorial boards: academics do it for free. My question is: can’t we do (as academics) the whole publishing process as voluntary? In addition to non-paid reviewers and non-paid associated editors, why don’t we have non-paid associated sysadmins to manage a server?

There are various business models available for open access journals. What would be wrong with the following idea?

  1. Authors are charged a small fee (say $20 for each accepted paper)
  2. Assuming 4 issues per year, 10 articles in each issue would generate approx $800/year. This should be more than enough to maintain a couple of virtual machines (mirrored, for backups). I think ISSN numbers are free, but this needs to be investigated.
  3. Open source software is available to manage submissions and reviews.
  4. Electronic copies are made available for free, hard copies can be printed on-demand: editors prepare a PDF version of each issue and upload it to like or a similar service, and libraries can print it from there if a hard copy is really needed.
  5. New journals are created by a “group of experts”, similarly to the creation of a new conference / workshop.


Hello world!

After 11 years (!!) I decided it was about time to refresh my web site…

I am in the process of copying all the material and links from the previous version to this new structure, please let me know if you notice something wrong.

I will try to keep things up-to-date and I have also enabled comments. If you are a student just have a look at the pages under Teaching (and let me know if you are not able to find something you need).

If you are looking for a paper, please have a look at my Publications page. If you are not able to retrieve a file just send me an email and I will post it to you.