Outline

Platform

MiRo is based on a differential drive platform with a 3-degrees-of-freedom jointed neck. Weighing in at around 3kg, and sized similarly to a small mammal such as a cat or a rabbit, MiRo will typically run for several hours before needing recharging.

Sensors

Stereo cameras in the eyes and stereo microphones in the ears are complemented by two additional microphones (one inside the head and one in the tail) and by a sonar ranger in the nose. In the body, four light level sensors and two 'cliff sensors' are arrayed around the skirt, and many capacitive sensors are distributed across the inside of the body shell and upper head shell to sense direct human contact. Interoceptive sensors include twin accelerometers and battery state sensing.

Actuators

Apart from the wheels and the neck, additional servos drive rotation of each ear, tail droop and wag, and closure of each eyelid. The wheel and neck movements are equipped with feedback sensors (potentiometers for neck joint positions and optical shaft encoders for wheel speed). An on-board speaker is also available to generate sound output.

Processing

MiRo is based around a Raspberry Pi 3B+ running a standard Raspbian distribution.

Simulation

The MiRo simulator runs on the popular Gazebo robot simulator.

Platform

Physical
Mass3.3 kg (2.9 kg without battery pack)
Wheel track164 mm
Wheel diameter90 mm
Maximum forward speed400 mm/sec
 
Power
Main batteryNiMH 4.8V 10Ah
Main battery lifeVaries with usage: typically 6+ hours active, 12+ hours standby.

Sensors

Exteroceptive
Microphones[1]16-bit @ 20kHz
Cameras[2]1280×720 @ 15fps
640×360 @ 25fps
320×240 @ 35fps
Sonar[3]Proximity sensor in nose (3cm up to 1m)
Touch28×14× in body, 14× in head; capacitive
LightSpread around body skirt
Cliff[4]Front edge of body skirt
 
Interoceptive
Motion1× opto sensor in each wheel (also back EMF)
Position1× position sensor in each body joint
Accelerometer1× in body, 1× in head
VoltageBattery voltage

[1] Two primary microphones in the base of the ears are supplemented by a noise-rejection microphone inside the head and an additional external microphone in the tail.

[2] Other frame sizes and aspect ratios are available; frame rate can be adjusted freely between 1.0 fps and the listed maximum.

[3] Sonar reflections are more reliable at shorter ranges—sensor will report good reflectors at up to 1 metre.

[4] Cliff sensors can be fooled by varying lighting conditions and/or presence of unrelated objects and by backwards motion; users should not assume they will be sufficient to prevent the robot driving off edges.

Actuators

Kinematic
Main wheelsDifferential drive
Body jointsLift, yaw, and pitch
 
Cosmetic
Tail (wag/droop)Wagging (side-to-side) and droop (up-and-down) motions
Ears (rotate)Left and right ear rotate independently
Eyelids (open/close)Two eyelids open and close independently
 
Supplementary
IlluminationRGB illumination LEDs shine through the body shell, three on each flank
Sound outputStreaming audio digitised at 8kHz

Processing

Embedded Stack
P13× STM32F030ARM Cortex M0 @ 24MHz
8kB SRAM
64kB FLASH ROM
P21× STM32H743ARM Cortex M7 @ 400MHz
1MB SRAM
2MB FLASH ROM
 
On-board Computer
P31× Raspberry Pi 3B+ARM Cortex A53 Quad Core @ 1.4GHz
1GB LPDDR2 RAM
16GB uSD FLASH ROM
Bluetooth, WiFi, USB expansion ports

The factory-supplied SD card (or disk image) carries a standard Linux distribution (Raspbian) with a minimal set of tools (including ROS) and the MDK installed. Users are free to install their own software, as required, for example by using the Raspbian package manager.

Simulation

The simulation[5] of MiRo runs in the Gazebo robot simulator.

[5] Owing to limitations of simulation, the simulated robot lacks some of the faculties of the physical robot: at time of writing, touch and audio sensors, audio output, and illumination output are not implemented.