99195 - CYBER-PHYSICAL SYSTEMS PROGRAMMING M

Anno Accademico 2022/2023

  • 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)

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

  • Ambienti di sviluppo e cross-compilazione per sistemi cyberfisici (CPS) con acceleratori on-chip e sensori/attuatori
  • Flusso di cross-compilazione e uso di rappresentazioni intermedie (e.g. LLVM-IR)
  • RTOS, middleware orientati a sistemi cyberfisici (e.g. Nuttx, Zephyr, SEL4, ROS, microROS)
  • Comunicazione tra sistemi cyberfisici e swarm: reti mesh wireless, WiFi, BT, BLE
  • Elementi di cybersecurity applicata ai CPS: librerie per la comunicazione sicura, moduli TPM, Trusted Execution Environments (TEE), supporto del compilatore per la sicurezza
  • Tecniche di firmware update over-the-air (FOTA)
  • Sviluppo di applicazioni di reinforcement learning per CPS autonomi
  • Simulazione di sistemi cyber-fisici per prototyping e training di algoritmi AI
  • Laboratori: i) deploy e utilizzo di software stack CPS su prototyping board, esecuzione task real-time, gestione e comunicazione dati da sensori; ii) deploy e utilizzo di software stack CPS su drone, programmazione di flight computer e mission computer per task AI; iii) sviluppo di applicazioni su drone e simulazione di CPS e della comunicazione swarm

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