AMR Hardware and Control
From Bare Parts to a Moving Mobile Robot
Course Overview
Software alone does not make a robot. This course takes you to the physical side of autonomous mobile robots, where mechanics, electronics, math, and embedded code meet. You start from the design and the bill of materials, then assemble the robot body, motors, and wheels step by step.
You won't just read about circuits and equations. You will wire the power circuit from the battery to the motor driver, connect encoders, IMU, and driver signals to an Arduino or an ESP32, and learn how velocity commands from ROS2 turn into left and right wheel speeds, and how encoder counts turn back into odometry.
Whether you come from a software background and want to touch real hardware, or you are an electronics enthusiast moving into robotics, this course bridges the gap between the two worlds and prepares your robot for higher-level ROS2 software.
What You'll Learn
Designing a differential drive robot in CAD around real component sizes, and checking that the motors can carry the robot and its payload
Reading the bill of materials: laser-cut parts, screws and spacers, motors, brackets, wheels, casters, and battery choices
Mechanical assembly of the motors, brackets, couplers, and wheels on the robot body
Planning the power circuit, then distributing battery power through auxiliary points to the motor driver and DC converters safely
Wiring the signal circuit with Arduino or ESP32: motor driver direction and PWM pins, encoders on interrupt pins, and the IMU over I2C
Assembling the ESP32 signal circuit on a breakout board, and mounting the IMU with the correct orientation
From the unicycle model to the differential drive model: forward kinematics from left and right wheel velocities to the robot's linear and angular velocity, and inverse kinematics from a velocity command back to wheel velocities
How encoders and counts per revolution give wheel speeds, and how to integrate them over time to compute odometry
What PlatformIO is, installing it in VS Code, the project structure, platformio.ini, building, uploading, and the serial monitor
Porting the same firmware from an ESP32 to an Arduino Mega with multiple build environments
Setting up a Cytron motor driver and testing motor speed and direction safely with the wheels lifted
Designing a text-based serial protocol to send wheel commands from a computer to the MCU, with motor ID, sign, and padded values
Curriculum Explorer8 Sections • 36 Lessons • Training Hours: 20h 0m
hardware Requirements
Solid understanding of ROS2 basics
Basic understanding of programming concepts in C++
Basic math such as trigonometry is helpful for the kinematics part
An ESP32 or Arduino board, a motor driver, and DC motors with encoders to follow along on hardware
Basic electronics knowledge is helpful but not required
Your Instructor
Kyrillos Fekry
Senior Robotics Software Engineer
"Senior Robotics Software Engineer and Systems Architect with over Five years of experience leading the design, architecture, and production deployment of autonomous mobile robot platforms. Demonstrated ability to remotely lead cross-functional engineering teams, architect scalable robot software systems—from behavior engines and navigation stacks to CI/CD pipelines and mass-production workflows."
Robotics Engineering
Certificate of Completion
Official industry-recognized credential upon finishing.
