Skip to content

yiz-bit/robotprogramming_2526

Repository files navigation

Robot Programming 2025/2026 - Sapienza University of Rome

This repository contains course materials and personal notes for the Robot Programming course (Academic Year 2025/2026) within the Artificial Intelligence and Robotics Master's program at Sapienza University of Rome.

It includes comprehensive notes, practical exercises, source code examples, and exam preparation materials developed and collected throughout the course.

Pro-Tip: The code/ Directory (LLM Context)

You will notice links labeled LLM Context File in the modules below. The code/ directory contains special markdown files where all the source code and solutions for a specific topic have been concatenated. These files are specifically designed to be easily copied and pasted into Large Language Models (like ChatGPT, Claude, or Gemini) to ask for code explanations, debugging help, or architectural overviews without having to upload dozens of separate .cpp and .h files.


Course Modules

RP 00 - Introduction

Course overview, logistics, and an introduction to the Sense-Plan-Act paradigm in robotics.

RP 01 - Compilers and Build Systems

The C++ compilation lifecycle (source code, object files, executables) and build automation using Makefiles and CMake, including external dependency management with pkg-config.

RP 01b - Git

Distributed version control architecture based on snapshots (instead of file deltas), secure commit identification via SHA-1 checksums, and branch management.

RP 02 - C++ Intro

Core concepts: basic types, pointers, references, and advanced memory management using Stack and Heap for dynamic allocation.

RP 02b - C++ Inheritance

Object-Oriented Programming: multiple inheritance, polymorphism with late binding (virtual and override), dynamic_cast, and their application in developing a robotic simulator with lidars and grid maps.

RP 03 - ROS Basics & Metaprogramming

Introduction to the ROS middleware architecture (Nodes, Topics, Services, and Messages) for inter-process communication, alongside C++ metaprogramming concepts using templates and function objects for compile-time optimizations.

RP 05 & 06 - C++ STL & Eigen

Intensive use of the Standard Template Library (containers, iterators, smart pointers) and the header-only Eigen library for high-performance linear algebra, focusing on memory alignment and geometric transformations.

RP 07 - DMAP Core

Core implementation of the Distance Map to optimize the Neighbor Search problem and obstacle avoidance, using a modified Dijkstra's algorithm to precompute a lookup grid.

RP 08 - Navigation & DMAP Localization

ROS navigation architecture (Mapping with GMapping, Localization with AMCL, path planning) and advanced formulation of Distance Map localization as an iterative minimization problem solved with the Gauss-Newton algorithm.

RP 09 - DMAP Planner

Development of path planning algorithms leveraging costs derived from the Distance Map, modeling trajectories on 8-connected graphs based on clearance constraints, and applying heuristic search (like A*).

RP 10 - CUDA Experiments

Practical experiments on GPU parallel computing using NVIDIA CUDA technology.

RP 11 - ROS2 Robot Setup

Practical management of sensors and kinematic transformations on a real robot, configuration of the transform tree (TF and robot_state_publisher), and dataset recording with ros2 bag.


Exams

Final Project: Dynamic Planner

Implementation of a dynamic path planner that reacts to environmental changes by fusing local laser scans with a global distance map.

This project fulfills the final examination requirements by implementing a dynamic path planner fully integrated with ROS.

Core Specifications:

  • Local Distance Map: The planner subscribes to the laser scan topic and computes a local distance map in the neighborhood of the robot every time a new scan is received.
  • Global Integration: The local map is integrated into the global distance map of the planner, updating the costs (composed by taking the minimum distance values).
  • Heuristic Search: The planning algorithm utilizes A*, employing the cost of Dijkstra calculated on the empty map as its heuristic.
  • ROS Integration: The output is seamlessly integrated into ROS and designed to work with the standard navigation stack.

Workspace Structure: The project is built as a standard ROS workspace, containing the following core components:

  • src/: The standard ROS source space containing all the project's packages.

  • rp_commons/: A core library package providing common data structures, utilities, and the foundational algorithms for Distance Map computation and grid management.

  • rp_simulator/: A lightweight simulator package used to emulate the robot's kinematics (unicycle model), laser scanner readings, and interactions within the test world.

  • Project Link: Explore the Dynamic Planner Project

Questionnaires

The questionnaires/ folder contains a vast collection of Mock Exams to prepare for the final evaluation.

Data & Utilities

  • Datasets: Required ROS bags or datasets for the exercises can be found in the data/ folder (e.g., diag_2020-05-06-16-26-03.tgz).
  • Scripts: The main.py file serves as [Briefly describe what this script does, e.g., generating the LLM context files or automating builds].

About

This repository contains course materials and personal notes for the Robot Programming course (2025/2026) within the Artificial Intelligence and Robotics Master's program at Sapienza University of Rome. It includes notes, exercises, and code examples developed throughout the course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors