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
C/C++ Programming
C/C++ Programming
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
- Writing PID controllers for motor control
- Reading sensor data (encoders, IMU)
- Serial communication protocols
Python Programming
Python Programming
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
- ROS2 launch files
- Sensor data processing
- Custom ROS2 nodes (optional)
MATLAB
MATLAB
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
- 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
Basic Electronics
Basic Electronics
- Voltage, current, resistance (Ohm’s Law)
- Power calculations (P = VI)
- Reading datasheets
- Understanding PWM (Pulse Width Modulation)
Microcontrollers
Microcontrollers
- GPIO (General Purpose Input/Output) pins
- Digital vs analog signals
- Pull-up/pull-down resistors
- Serial communication (UART, I2C, SPI basics)
Motor Control
Motor Control
- 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
| Component | Specification | Purpose |
|---|---|---|
| Computer | 8GB+ RAM, 50GB+ free storage | Development, simulation, ROS2 |
| Operating System | Ubuntu 24.04 or VM capable OS | ROS2 requires Linux |
| USB Cable | USB-A to Micro-USB | ESP32 programming |
| External SSD (optional) | 128GB+ USB 3.0 | Dual-boot Ubuntu alternative |
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
Download from https://code.visualstudio.com/
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)
Recommended Skills to Learn
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 Area | Recommended Team Members |
|---|---|
| MATLAB/Simulation | At least 1 member |
| CAD/Mechanical Design | 1-2 members |
| Electronics/PCB | 1-2 members |
| Embedded Programming | 1-2 members |
| ROS2/Linux | 2-3 members (most complex) |
| Project Management | 1 member (coordinator) |
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
- C++ Tutorial: LearnCpp.com
- Python: Python.org Tutorial
- MATLAB: MATLAB Onramp (free course from MathWorks)
Electronics
- Basic Electronics: All About Circuits
- Arduino Tutorials: Even though we use ESP32, Arduino tutorials cover similar concepts
Linux/Terminal
- Linux Command Line: Ubuntu Terminal Tutorial
- Bash Scripting: Bash Guide for Beginners
CAD
- Fusion 360: Autodesk Learning Platform
- SolidWorks: University-provided tutorials
Git
- Git Basics: Git Book
- GitHub Skills: GitHub Learning Lab
What If I’m Missing Prerequisites?
I'm weak in programming
I'm weak in programming
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
I've never used Linux
I've never used Linux
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!
I don't know CAD
I don't know CAD
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
I'm not good at math
I'm not good at math
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.