Autonomous Robot

Design and implementation of a competitive block-pushing robot

Robotics Arduino Electronics C Programming

Project Overview

This project involved designing, building, and programming an autonomous robot for a competitive block-pushing challenge, requiring integration of mechanical design, sensors, and strategic programming.

Competition Rules

  • Each robot competes in a 1v1 match on a rectangular surface divided into blue and yellow halves
  • Plastic cubes are distributed across the board at the start of each match
  • Robots start at the back edge of their respective halves
  • The goal is to push blocks to the opponent's side of the board
  • The robot with fewer blocks on its side after 30 seconds wins

To succeed in this competition, we needed to develop an optimal battle strategy and then build a robot capable of executing it reliably. Our approach integrated sensors for environmental awareness, custom electronics for motor control, and strategic programming to optimize the robot's behavior.

Technical Implementation

Electronics & Sensors

  • Color Sensor: Integrated to detect the robot's position and identify region boundaries
  • H-bridge Circuits: Constructed dual H-bridges for independent wheel control with PWM capability
  • Arduino: Used as the main microcontroller for processing sensor inputs and controlling motors
  • Power Management: Designed efficient power distribution to maximize runtime during competitions

Mechanical Design

  • Snowplow Attachment: Custom-fabricated from scrap plastic to increase block-clearing efficiency
  • Protective Housing: Laser-cut acrylic enclosure to shield electronic components
  • Strategic Mass Distribution: Added weight to improve stability and pushing power
  • Wheel Configuration: Optimized for maneuverability and reliable navigation

Software Strategy

The robot was programmed using Arduino and C, with careful attention to low-level optimization through bit manipulation and direct register access. Our algorithmic approach included:

  • Boundary Detection: Using the color sensor to identify when the robot crossed between regions
  • Movement Patterns: Implementing strategic sweeping motions to efficiently clear blocks
  • Time Management: Programming staged behaviors to maximize effectiveness during the 30-second match
  • Edge Recovery: Developing reliable routines to recover when approaching arena boundaries

Robot Gallery

Autonomous Robot Front View

Front View

The robot with its custom snowplow attachment designed for block pushing.

Robot Top View with Electronics

Top View

Overhead view showing the Arduino, sensor integration, and main circuit board.

Robot Circuit Detail

Circuit Detail

Close-up of the H-bridge circuits used for motor control and PWM implementation.

Robot Competition Setup

Testing Configuration

The robot during testing phases, demonstrating its mobility and block-pushing capability.

Technical Challenges & Solutions

Challenges

  • Color Sensor Reliability: Initial issues with inconsistent surface readings
  • Motor Response Time: Delays between sensor input and movement adjustments
  • Edge Detection: Difficulty in accurately identifying arena boundaries
  • Pushing Force: Balancing weight distribution for optimal block movement

Solutions

  • Sensor Calibration: Implemented dynamic calibration routines at startup
  • Optimized Code: Used bit manipulation for faster processing
  • Algorithm Refinement: Developed more sophisticated boundary detection logic
  • Mechanical Redesign: Modified the snowplow shape and angle for better block control

Learning Outcomes

This project provided valuable hands-on experience in integrating mechanical, electrical, and software engineering disciplines. It taught us the importance of iterative design and real-world testing when developing autonomous systems, as well as the critical balance between algorithmic sophistication and robust, reliable operation.

Interested in more projects?

Check out my other engineering and robotics work

View Portfolio