Introduction

Building a fully autonomous robot from scratch has been a long-term goal — a personal testing ground for ideas in navigation, perception, and control outside of a work context.

Early Decisions and Designs

electronicParts

Starting with components on hand, the first version used a drivetrain with open-loop stepper motors controlled by an Arduino Uno and motor driver hat, with a Raspberry Pi as master. Built alongside a friend to test basic autonomy and motor control.

Relevant links:

Challenges with Open-Loop Hardware

The constraints were immediate: stepper motors without encoders, no LiDAR, and no feedback loop. Still managed to teleoperate the robot and run open-loop paths.

Robot model C++ code

assembledRobot

Shift to ROS2

Rather than patch the first design, I restarted with ROS2 as the foundation, the current industry standard for autonomous mobile robotics.

assembledRobot

Second Version

The second version is modular by design, built around DC motors with encoders, an IMU, and a power bank. The focus was on minimizing components while enabling proper closed-loop control and sensor integration.

Takeaways

Component selection early in development has an outsized impact on the trajectory of the project. Getting the sensing and actuation right from the start avoids expensive redesigns downstream.