Skip to content
HYHanie Yazdi
CV
← All projects

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.

RoleCompetitor 2010 – 2014, then technical lead and mentor
MCUsdsPIC33, PIC, AVR
DesignAltium Designer, SolidWorks
CodeC, state machines
1stRoboCup IranOpen 2011 and 2013
4thRoboCup 2013, Eindhoven
2ndRoboCup IranOpen 2014
1stMini-Challenge, RoboCupJunior 2021

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, 2014What the robot has to handle
Arena30 × 30 cm tiles, walls at least 15 cm high, several floors joined by ramps of up to 25°. Wall layout changes every round.
VictimsHeat 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.
HazardsBlack 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.
CheckpointsSilver 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 bonus10 points for every victim found, only if the robot drives back to the start tile on its own.
Limits8 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.

Sina Rescue B, side view with red mecanum wheels
Mecanum wheels on sprung motor mounts, laser-cut 5 mm acrylic body.
Sina Rescue B, top view of the main board and display
Main board designed in Altium, dsPIC33 in the centre, 5-inch colour display.

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.
Sina Rescue B in a practice maze. The display shows the map as it is built.
The on-robot display: sensor view, the map grid and heading.

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.

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.

One of the later rescue robots on a maze run.

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.

Erebus Rescue Simulator 2021 with the debug console
Debug console: real and virtual walls per cell, stack pops and path finding.
Run through Area 3 with victim and hazard identifications scoring.

Where it started

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

Rescue line robot holding a foil-wrapped can with its gripper
Rescue line robot with a gripper lifting the victim can.
RoboCup 2013, Eindhoven
RoboCup 2013 world championship, Eindhoven. Competing in Junior Rescue.

All results and certificates →