Rodent is the differential wheeled completely autonomous robot, intended for a micromouse competition. Micromouse is a robotics contest where small, autonomous robots solve a previously unknown maze. The maze takes the form of 180mm x 180mm cells shaped by 12mm thick walls.
The main purpose of the project was to create an effective system that allows to map an environment, simultaneously using maze solving algorithm. Afterwards, the collected data enables the robot to find the shortest path throughout the labyrinth. To accomplish this task the greatest emphasis was placed on the accuracy of the distance and position measurement.
Rodent is differential wheeled 80mm x 80mm mobile robot. It is equipped with two 10:1 6V DC motors, that propel the robot. The difference between the relative rotation rate of the wheels provides turning motion.
The distance measurement is done by two hall-effect rotary encoders attached to the mouse body and the neodymium magnets connected to the tires.
The robot is powered by 520mAh 7.4V Li-Pol battery. The voltage of the battery needed to be reduced to a range operated by the mice. To resolve the problem, two separate voltage regulation systems were added. The first one is intended to power the motors. Each motor has maximum current of 1600mA. To ensure safe current for the robot’s electronics, two 1000mA each, adjustable step-up/step-down voltage regulators were used.
The second voltage regulation system reduces voltage to 5V level and supplies other robot’s peripherals, such as MCU or IR- sensors. Therefore, step-up/step-down voltage regulator with output current of 1000mA and output voltage 5V, was used.
The main assumption of the robot electronics design was the highest possible level of modularity. It means that all possible electronics systems of the mice are ready parts which might be bought in any electronics shop. Although this solution is not cost effective, great level of reliability was accomplished and easiness of replacing the elements simplifies significantly the debugging process.
In addition, the robot does not lose much on speed and maneuverability due to heaviness and size of modules, because particular focus was placed on the small size of the robot.
The heart of the robot is a STM32 32-bit ARM Cortex M4 processor on the STM32 MCU Nucleo board. To preserve the concept of modularity, the whole development board was also attached as a separate module. The rest of electronics, such as switches, connectors, passive components are only elements that are not modular. All previously mentioned elements are placed on two layered PCB.
As we know, micromouse competition rules prohibit any communication between the robot and the outside world. However, the visualization of processes and communication with the operator during development process of the mice was necessary. So, the Bluetooth serial communication module was added, only for debugging and testing reasons. As a result, it is possible to visualize the robot task progress and the operator is able to manually influence the mice behaviour.
Driving between walls
For moving between the walls, the mouse uses two pairs of infrared proximity sensors. The first pair is responsible for keeping the right distance between the side walls, and the other two sensors are responsible for keeping a safe distance from the front wall. Additionally, the robot is equipped with gyroscope that is responsible for keeping a straight line of driving and for an accurate turning. Then the value from the sensors is transferred to the PID regulators, that transform the data to the PWM pulse value.
Mapping an environment
To map the maze, the robot uses the same IR sensors as mentioned in point 3.2.. The mapping is done simultaneously with driving between the walls. The mouse software compares the strength of the signal from sensors with the wall presence value and then saves the result in the two dimensional array of bytes. The exact bit describes the wall presence in the maze array.
Finding shortest path
During the mapping of a maze, the robot uses the flood fill algorithm to respectively enumerate a maze cells from the lowest to the highest value. The next numbers describe the shortest distance from an initial to a last cell of the maze.