Skip to main content

Overview

This course builds on concepts from previous engineering courses. While you’ll learn many new skills during the project, having a solid foundation will help you succeed. This page outlines the knowledge and tools you should have before starting.

Required Knowledge

Programming Fundamentals

Required for: ESP32 embedded programming (WP3, WP4)You should be comfortable with:
  • Variables, data types, and operators
  • Control structures (if/else, loops)
  • Functions and modular programming
  • Pointers and references (basic understanding)
  • Object-oriented programming basics
Where you’ll use it:
  • Writing PID controllers for motor control
  • Reading sensor data (encoders, IMU)
  • Serial communication protocols
Required for: ROS2 nodes, MATLAB alternative, data analysisYou should be comfortable with:
  • Basic syntax and data structures (lists, dictionaries)
  • Functions and modules
  • File I/O operations
  • Basic OOP concepts
Where you’ll use it:
  • ROS2 launch files
  • Sensor data processing
  • Custom ROS2 nodes (optional)
Required for: WP1 - Kinematics simulationYou should be able to:
  • Write scripts and functions
  • Plot data and create visualizations
  • Use matrices and linear algebra
  • Implement basic algorithms
Where you’ll use it:
  • Forward/inverse kinematics calculations
  • Trajectory planning and simulation
  • Visualization of robot motion

Engineering Mathematics

Linear Algebra

  • Matrix operations and transformations
  • Rotation matrices
  • Homogeneous coordinates
  • Used in: Robot kinematics, coordinate transforms

Calculus

  • Derivatives and integration
  • Differential equations (basic)
  • Used in: PID control, velocity/acceleration

Trigonometry

  • Sin, cos, tan, atan2 functions
  • Angle conversions (rad/deg)
  • Used in: Robot heading, kinematics

Control Systems

  • PID controller concepts
  • Feedback control
  • Used in: Motor speed/position control

Electronics & Circuits

  • Voltage, current, resistance (Ohm’s Law)
  • Power calculations (P = VI)
  • Reading datasheets
  • Understanding PWM (Pulse Width Modulation)
  • GPIO (General Purpose Input/Output) pins
  • Digital vs analog signals
  • Pull-up/pull-down resistors
  • Serial communication (UART, I2C, SPI basics)
  • DC motor principles
  • H-bridge operation
  • Encoder signals (quadrature encoding)
  • Motor driver specifications

Mechanical Design

  • CAD Software: Basic 3D modeling skills (Fusion 360, SolidWorks, or similar)
  • Engineering Drawing: Reading technical drawings, understanding dimensions
  • Assembly: Fasteners (screws, nuts, bolts), tolerances
  • 3D Printing: STL export, basic understanding of additive manufacturing

Version Control

Git/GitHub: Version control is essential for team collaboration. You should know:
  • Creating repositories
  • Cloning, committing, pushing code
  • Branching and merging (basic)
  • Resolving merge conflicts

Required Tools & Software

Hardware Requirements

ComponentSpecificationPurpose
Computer8GB+ RAM, 50GB+ free storageDevelopment, simulation, ROS2
Operating SystemUbuntu 24.04 or VM capable OSROS2 requires Linux
USB CableUSB-A to Micro-USBESP32 programming
External SSD (optional)128GB+ USB 3.0Dual-boot Ubuntu alternative
Virtual Machine vs Dual Boot: ROS2 with Gazebo simulation runs slowly on VMs. If possible, dual-boot Ubuntu or use an external SSD for better performance.

Software to Install

For Everyone

1

MATLAB

Install MATLAB through your university license
  • Required toolboxes: Robotics System Toolbox (optional but helpful)
  • Alternative: Octave (free, but limited compatibility)
2

CAD Software

Choose one:
  • Fusion 360 (free for students) - Recommended for beginners
  • SolidWorks (university license) - More professional
  • FreeCAD (free, open source)
3

Git

  • Windows: Git for Windows (https://git-scm.com/)
  • Mac: Install via Homebrew or Xcode Command Line Tools
  • Linux: sudo apt install git
4

Text Editor / IDE

  • VSCode (recommended) - Free, excellent extensions
  • Arduino IDE (for simple ESP32 projects)

For Embedded Systems (WP3)

1

VSCode

2

PlatformIO Extension

Install PlatformIO IDE extension in VSCode
  • Better than Arduino IDE for complex projects
  • Supports multiple libraries and platforms
  • Integrated serial monitor and debugger
3

USB Drivers

  • Windows: CH340/CP2102 USB-to-Serial drivers
  • Mac/Linux: Usually works out of the box

For ROS2 (WP4)

1

Ubuntu 24.04 (Noble Numbat)

Options:
  • Dual-boot: Best performance (recommended)
  • Virtual Machine: VMware Workstation, VirtualBox, UTM (Mac)
  • External SSD: Ubuntu on external drive
2

ROS2 Jazzy Jalisco

Will be installed during WP4 setup
  • Requires Ubuntu 24.04
  • Installation guide in WP4 section
3

Additional Tools (installed later)

  • Terminator (terminal emulator)
  • Gazebo (simulation)
  • RViz2 (visualization)
  • PlotJuggler (data plotting)

For PCB Design (WP2)

Choose one:
  • EasyEDA (online, free, beginner-friendly)
  • Cadence OrCAD (university license, professional)
  • KiCad (free, open source)
These skills aren’t strictly required, but will make your life easier:

Linux Terminal

  • Basic bash commands (cd, ls, mkdir, rm)
  • File permissions and ownership
  • SSH for remote access
  • Package management (apt)

Markdown

  • Document formatting
  • README files
  • This documentation uses MDX

Serial Communication

  • Using serial monitors
  • Understanding baud rates
  • Debugging serial output

Debugging

  • Reading error messages
  • Using print statements
  • Systematic troubleshooting

Team Skills Matrix

Your team should collectively cover these areas:
Skill AreaRecommended Team Members
MATLAB/SimulationAt least 1 member
CAD/Mechanical Design1-2 members
Electronics/PCB1-2 members
Embedded Programming1-2 members
ROS2/Linux2-3 members (most complex)
Project Management1 member (coordinator)
Skill Overlap: It’s beneficial for multiple team members to understand each area. Don’t silo knowledge - share and learn together!

Pre-Course Checklist

Use this checklist before starting the project:
1

Programming

  • Comfortable with C/C++ basics
  • Can write and run Python scripts
  • Can create MATLAB plots and functions
2

Tools

  • Git installed and GitHub account created
  • VSCode installed
  • MATLAB accessible
  • CAD software installed
3

Hardware

  • Computer meets minimum requirements
  • USB cable for ESP32 available
  • Ubuntu installation method decided
4

Knowledge

  • Understand basic electronics (Ohm’s Law, PWM)
  • Know how to read datasheets
  • Familiar with GitHub workflow
5

Team

  • Team formed (5-6 members)
  • Skills matrix completed
  • Communication method established

Learning Resources

If you need to brush up on any prerequisites:

Programming

Electronics

  • Basic Electronics: All About Circuits
  • Arduino Tutorials: Even though we use ESP32, Arduino tutorials cover similar concepts

Linux/Terminal

CAD

Git

What If I’m Missing Prerequisites?

Solution:
  • Start practicing now! Use online tutorials
  • Focus on C++ for ESP32 work
  • Team up with a strong programmer
  • Attend tutorial sessions and ask questions
  • Many code examples are provided - learn by modifying them
Solution:
  • Install Ubuntu in a VM to practice
  • Complete basic terminal tutorials
  • ROS2 setup guide includes step-by-step commands
  • Linux becomes easier with practice!
Solution:
  • Follow CAD software tutorials (2-3 hours to learn basics)
  • Start with simple shapes before complex designs
  • Let team members with CAD experience lead WP2
  • You can contribute to other work packages
Solution:
  • Kinematics equations are provided in documentation
  • MATLAB code examples available on GitHub
  • Team members can collaborate on mathematical sections
  • Focus on implementation rather than derivation
Important: This is a team project! You don’t need to be an expert in everything. Leverage your team’s diverse skills and learn from each other.

Next Steps