Lectures#
Overview#
The lectures in ENPM605 follow a progressive structure, starting with Python fundamentals and building toward real-world robotics applications using ROS 2. Each lecture introduces new concepts through explanation, live demonstrations, and in-class exercises. Lecture materials, including slides and demo scripts, are available on Canvas and GitHub.
Tip
Review the demo scripts after each lecture and re-run them on your own machine. Experimenting with the code is the fastest way to internalize the concepts.
Schedule#
Lecture |
Topic |
Key Concepts |
|---|---|---|
L1 |
Course Introduction |
Development environment setup, Python execution pipeline, variables, data types, mutability |
L2 |
Python Fundamentals, Part I |
Packages and imports, operators, boolean logic, strings, indexing and slicing, control flow |
L3 |
Python Fundamentals, Part II |
Lists, tuples, dictionaries, sets, loops, list comprehensions, copying |
L4 |
Introduction to Functions |
Function definition, arguments (positional, default, keyword, |
L5 |
Advanced Functions |
Programming paradigms, first-class functions, lambda expressions, closures, decorators, |
L6 |
Object-Oriented Programming, Part I |
OOP design phase, classes and objects, dunder methods, operator overloading, abstraction, encapsulation, |
L7 |
Object-Oriented Programming, Part II |
Class and static methods, association, aggregation, composition, inheritance, |
L8 |
Introduction to ROS 2 |
Distributed architecture, DDS middleware, QoS policies, pub/sub model (nodes, topics, messages), workspace setup, |
L9 |
Launch Files, Parameters, & Executors |
Python launch files, advanced launch features (includes, conditionals, grouping, arguments), parameter lifecycle (declaration, retrieval, setting, runtime callbacks), single-threaded and multi-threaded executors, callback groups (mutually exclusive and reentrant), Python GIL |
L10 |
Parameters, Custom Interfaces, Services & Actions |
Parameter declaration, descriptors, callbacks, YAML parameter files, custom |
L11 |
Coordinate Frames, TF2, and Mobile Robot Control |
Pose representation (position, Euler angles, quaternions, gimbal lock), coordinate frames (REP 105), TF2 transform tree, static and dynamic broadcasters, transform listeners, |
L12 |
Namespaces, Remapping, and Behavior Trees |
Namespaces (topic isolation, CLI |
L13 |
Mapping and Navigation with Nav2 |
Occupancy grid maps, |
L14 |
Lifecycle Nodes & ROS 2 Bags |
Lifecycle node state machine (Unconfigured, Inactive, Active, Finalized), transition commands and callbacks, |