99195 - CYBER-PHYSICAL SYSTEMS PROGRAMMING M

Anno Accademico 2023/2024

  • Docente: Andrea Acquaviva
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Bologna
  • Corso: Laurea Magistrale in Ingegneria elettronica (cod. 0934)

    Valido anche per Laurea Magistrale in Automation Engineering (cod. 8891)

Conoscenze e abilità da conseguire

Il corso fornisce allo studente una conoscenza di base delle architetture software e gli ambienti di sviluppo, programmazione e progettazione di sistemi cyber-fisici, con particolare enfasi alla coesistenza di task di controllo, processing di data stream, e comunicazione IoT con requisiti di real-time e cybersecurity. Nel corso lo studente impara a utilizzare compilatori, librerie, runtime e middleware per piattaforme e architetture eterogenee, dotate di processori multicore, co-processori e acceleratori HW e SW per il processing di stream di dati da sensori e verso attuatori.

Contenuti

  • Introduction to software development and cross-compilation for cyber-physical systems (CPS): compiler, system calls, RTOS, middleware, applications
  • Embedded firmware development (baremetal programming) for systems with sensors and actuators: C runtime, call stack, development of drivers
  • Programming with Real-time operating systems (RTOS) and configuration tool (Ex on NuttX OS)
  • RTOS for CPS (e.g. Nuttx, Zephyr, SEL4, PikeOS and automotive RTOSes)
  • Middleware for CPS (microROS, xrce-DDS, DDS)
  • Elements of cybersecurity applied to CPS: Trusted Execution Environments (TEE), Trusted Platform Modules for firmware signature/verification and secure communication, control flow integrity (CFI)
  • Elements of Artificial Intelligence for autonomous CPS (neural networks and deep reinforcement learning)
  • Laboratories: i) programming an embedded system with sensors and actuators using NuttX OS; ii) programming a crazyflie drone; iii) development of a simple AI drone application

Testi/Bibliografia

Materiale didattico:

  • slide fornite dal docente
  • articoli scientifici forniti dal docente
  • puntatori a manuali e siti web specifici

Metodi didattici

Il corso si compone di lezioni teoriche e laboratori guidati. Nelle lezioni teoriche verranno esposti i concetti principali che verranno poi affrontati in maniera pratica su schede prototipo e droni in laboratorio che saranno usati come esempi di CPS.

I laboratori saranno guidati dal docente e gli studenti verranno forniti di hardware su cui fare esperienza di programmazione. Saranno organizzati in almeno 3 gruppi di 3 esercitazioni ciascuno:

  • Gruppo I: Programmare un sistema CPS su scheda prototipo, installazione del software stack (bootloader, OS, middleware, librerie di comunicazione), imparare a schedulare task su OS real-time, leggere dati da sensori e comunicare dati verso un sistema remoto
  • Gruppo II: Programmare un piccolo drone reale, effettuare modifiche e aggiornamenti a parti del software di sistema, programmazione di un sistema dotato di processore di volo e co-processore per l'esecuzione di task di missione complessi (ex. riconoscimento ostacoli)
  • Gruppo III: Sviluppo di applicazioni avanzate basate su reinforcement learning, sviluppo di codice sicuro con supporto del compilatore, uso di sistemi di simulazione per il singolo CPS e per swarm

NOTA:

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.

Modalità di verifica e valutazione dell'apprendimento

L'esame sarà composto da uno scritto della durata di 1 ora con domande a risposta chiusa e dalla discussione di un progetto sviluppato dagli studenti partendo dagli strumenti imparati durante i laboratori. 

Gli studenti svolgeranno il progetto singolarmente o in gruppo a seconda della numerosità e dei progetti disponibili. 

Il docente proporrà alcuni progetti ma gli studenti potranno proporre personalizzazioni degli stessi. Gli studenti potranno presentare modifiche alle proposte di progetto che verranno valutate dal docente per essere approvate.

Il progetto dovrà essere presentato tramite alcune slide e una breve dimostrazione.

Strumenti a supporto della didattica

Parte teorica:

  • lecture notes
  • siti web e repository di codice
  • articoli scientifici

Parte di laboratorio:

  • board di sviluppo basate su microcontrollori ARM e RISC-V
  • droni bitcraze crazyflie

I supporti hardware potranno essere soggetti a modifiche/aggiornamenti a seconda del numero degli studenti e dei componenti disponibili

Orario di ricevimento

Consulta il sito web di Andrea Acquaviva