Project · 2010 – 2024 · Competition robots
Autonomous rescue robots
Autonomous robots for the RoboCupJunior Rescue league that explore an unknown maze, build a map, mark every victim they find and drive back to the start. AVR and PIC microcontrollers on custom PCBs, mechanics in SolidWorks.
The task: RoboCupJunior Rescue Maze
A fully autonomous robot enters a maze it has never seen. The walls move between rounds, so nothing can be mapped in advance. It has 8 minutes to explore, find the victims, avoid the hazards and come back to the start. No remote control and no wireless help: every decision runs on the robot's own microcontroller.
| Rescue B rules, 2014 | What the robot has to handle |
|---|---|
| Arena | 30 × 30 cm tiles, walls at least 15 cm high, several floors joined by ramps of up to 25°. Wall layout changes every round. |
| Victims | Heat sources at 28 to 40 °C on the walls, at least five per round, plus unheated decoys that must not be reported. The robot stops within 15 cm and flashes a lamp for 5 seconds, and can drop a rescue kit. |
| Hazards | Black tiles placed at random just before the run; the robot must back straight out without turning. Speed bumps up to 1 cm, loose debris, obstacles in open areas. |
| Checkpoints | Silver tiles. After a lack of progress the robot is put back on the last checkpoint it visited and has to carry on from there. |
| Exit bonus | 10 points for every victim found, only if the robot drives back to the start tile on its own. |
| Limits | 8 minutes per run including calibration, robot under 30 cm high, no lasers, no pre-mapping, no code changes once the run starts. |
Sina Rescue B, 2014
The 2014 Rescue Maze robot of team Sina, a two-person team. It placed 2nd at RoboCup IranOpen 2014. The team's robot the year before won RoboCup IranOpen 2013 and placed 4th at the RoboCup 2013 world championship in Eindhoven.


Mechanics
- Omnidirectional base: four mecanum wheels with 45° rollers, each driven by its own Maxon motor (80 rpm). The robot can move in any direction, which makes it much easier to stay straight in corridors. The wheels were not available in Iran and were ordered from abroad.
- Suspension: each motor is hinged on one side and sprung on the other, so all four wheels stay on the ground. Mecanum drive only works when every wheel has contact.
- Body designed in SolidWorks and laser cut from 5 mm acrylic.
Electronics
- 16-bit dsPIC33EP512MU810: enough PWM channels, ADC inputs and timers that no multiplexers were needed.
- Power: 16 V for the motors, 5 V and 3.3 V for logic. A wide-input DC/DC module (9 to 36 V in, 5 V out, up to 3 A) with separate control and motor grounds made a second battery unnecessary.
- Sensors: 12 Sharp GP2D120 distance sensors around the robot (4 to 30 cm), pulsed IR sensors for black tiles that ignore ambient light, a CMPS09 compass and accelerometer on I2C for heading and ramps, and four MLX90614 thermal sensors on I2C for heat victims.
- A 5-inch colour display shows sensor values and the path the robot has driven. The older 16×2 character LCD could not show a map.
Software
- C in MPLAB, structured as a state machine.
- Driving straight: two Sharp sensors per side. Their difference feeds a PID loop that keeps the robot parallel to the wall. This does not depend on the magnetic field like a compass does.
- Sensor blind spot: a Sharp sensor reads "far" when an object is too close. Each reading is checked against the previous ones first. If one sensor is wrong, the robot compares the good one with a fixed reference distance instead.
- Turns: square up to the wall, turn by compass, square up again. This keeps turns accurate even on debris.
- Black tiles: back straight out, as the rules require, and treat the tile as a wall from then on.
- Search: the coordinates of every cell go on a stack and into a 3D "visited" array (x, y, room). Visited cells act as virtual walls. When real and virtual walls box the robot in, it walks back along the stack to the last cell with an unexplored exit.
The search, replayed
A simplified replay of the maze search used on these robots. The start tile is the first entry on the stack, so the robot always comes home. Later robots replaced the walk back along the stack with the shortest known path to the newest open branch, which is what this replay shows.
Later robots: camera victims and a full map
The later rescue robots, built as technical lead at Novinzehn Robotic Academy, kept the omnidirectional base and the PID loop that holds the robot square to the maze walls. Staying square meant the robot always knew which cell it was in. From that it built a map, took shortcuts and drove back to the start. Every victim it found went into the map, including visual victims on the walls detected with a camera. Odometry came from the IMU and wheel encoders, and the firmware ran on battery-powered AVR and PIC boards.
Rescue simulation, 2021
In 2021 the league ran online on the Erebus simulator in Webots. The simulated robot explores a maze with swamps that slow it down and holes it must avoid. Victims are letters on the walls (H, S, U) and there are hazard signs too. To score, the robot stops next to one and reports its type. Teams can also submit the map the robot built for a bonus. The joint team DaidalosClan + phoenix won the Mini-Challenge 1st place in the RoboCupJunior 2021 Worldwide Rescue New Simulation league. Role: team mentor.

Where it started
RoboCupJunior Rescue from 2010: RoboCup IranOpen and the world championships in Singapore (2010) and Istanbul (2011).

