Mappino is an open source (code GPL, hardware CC BY-SA 2.5) robot that can be used for learning about the basics in mobile robotics as odometry, path planning, obstacle avoidance, mapping, occupancy grid building, localization, etc... An effort has been made to make Mappino as simple as possible while enabling to do similar things as one can do with its big and expensive brothers. This of course comes with the price tag of needing a flat, hard floor and Sharp IR sensor friendly obstacles. If one already got a robot body, Mappino's sensing head can be put on other robots without needing the rest of Mappino.
On the following images you can see Mappino v0.1 assembled, disassembled and
the range sensing head which is a stand alone unit:
On the following videos you can see Mappino doing a scan matching and homing demo and Mappino being tested for endurance:
Mappino's acrylic laser cut body fits without the wheels into a cube with cca 15cm sides. The wheels add about 2.5cm to one of the dimensions. Stepper motors powered by 6 AAA batteries move the robot and the sensing head. The stepper motors are easy to control and provide accurate motions without the use of incremental encoders, thus making odometry simple and accurate. Mappino's Sharp distance sensors rotate by +- 180 degrees while getting a cross section of the environment with range readings to about 2.5meters. The range readings can be used for scan matching, map building and localization. Mappino's two processor boards - the sensor and dual motor control board can be conveniently programmed by the Arduino IDE.
To read more about Mappino, a paper presented at the International Conference in Robotics Education (RiE 2011) can be accessed here (1MB), together with the corresponding presentation slides (360kB). During the talk at RiE 2011, a live demo was given, where Mappino was repeatedly put into random positions in a rectangular area where Mappino took a scan, performed scan matching and went to the center of the area.
For those who want a Mappino but don't want to build one, the company ABC Robotics, s.r.o. is working on ready made kits.
To find out the reliability the mechanics and electronics, Mappino was put to a test involving many cycles of scanning, matching and moving. Mappino was tested in a rectangular testing area (cca 125x120cm) with high enough walls to be seen by the distance sensors. When starting the experiment, Mappino was put in the middle of the test area. After turned on, Mappino took a reference scan and stored it in its EEPROM. Then it moved 30cm forwards, followed by a 50cm backward motion. Next it would take a scan and match it with the reference scan. The result would tell Mappino where it had to move to get back to the initial position. Upon arrival at the initial position, a new scan was taken and matched. Based on the result, Mappino adjusted its orientation to match the initial one. Then the next cycle continued by going forward 30cm...
During the 23+ hours of testing, Mappino did 1500 cycles boiling down to 1500m travel, 4500 starts, 4500 stops, 6000 scanner rotations and 3000 scan matches. Mappino was always stopped when it diverged from the path which almost exclusively happened when Mappino run out of energy. Mappino ran for at least 3 hours and 40 minutes on a freshly charged set of 2450mAh NiMh batteries. Mappino was so reliable, that I often left the house for hours during testing, knowing that Mappino will be doing its laps when I come back.
There were 3 misbehaviors during the experiment. In all 3 cases the PSD cables get caught. They happened just after restarting the experiment following battery replacements. This cable catching is not a design fault, but an assembly fault as at the last re-assembly I have forgot to keep the PSD scanner cables short. The caught cable would stop the scanner from doing full rotations and the matching result with skewed scans would make Mappino to go off an angle. To protect the floor from wearing out, Mappino was moving on a thick, just large enough sheet. Once got off the sheet, Mappino could not climb back, thus there would not be recovery from once-off (:-)) errors. Instead of shortening the cables to fix the problem, I took the lazy solution of propping up the cables with a bit of blue-tac.
Wear and tear:
As Mappino is a work in progress (including its documentation), it is recommended to wait until version 0.2 is released.
Build and use Mappino at your own risk. If you do build one, do not leave it out of sight while it is turned on. To build the electronics, you need good SMD soldering skills.
If you got any questions or ideas for improvement, write me an email. Your questions may going to be added to a FAQ. Please do put the word Mappino in the subject line.
The Mappino project is distributed under the Creative Commons license Attribution-ShareAlike 2.5, except for the software which is distributed under GPL.
I have built so far just one Mappino. I have been using it for quite a while without experiencing any major problems (except that the RAM is just enough for doing scan matching demos with 256 point scans), or without having to do any repairs. Before building a Mappino, you should definitely read about the following issues:
Mechanical drawings were made using QCad (version 22.214.171.124 Community Edition). Electronics schematics were drawn using GEDA/gSchem (version 126.96.36.19981231). PCBs were designed using GEDA/PCB (version 20081128). Arduino IDE was used for developing/compiling of the code. If you want to use Ponoko to cut out the parts, you can use Inkscape to convert the CAD files into a single .svg file.
Ooffice spreadsheet used for estimating the cost bill of material cost
in the RiE 2011 paper:
CAD files for the 3mm laser cut acrylic parts: acrylic_parts.zip. The number after the x in the file names inside the zip file is the number of copies you need for the particular part.
Power board files:
Sensor head / robot controller board files:
Bipolar stepper control board files:
The sensor head / robot controller board code comes set up to perform scanning, scan matching and homing to a reference scan's pose. It works in my 120x130cm test area. At first, I place the robot in the middle of the area. Then connect to it using a USB to serial converter. Push 'x' when Mappino boots to tell it to take a reference scan on next power on. Then disconnect the cable, turn it on again, wait until it takes a scan, turn it off and move it anywhere within a 50cm circle while keeping a +-30degree orientation to the reference position. After turning it on the robot usually goes back to the reference position with seemingly less than 10cm error. It it quite fun to watch. I'll post a video once I got some time.
Copyright Albert Diosi, 2011
Last changed: 14/12/2011