Come dovrebbe iniziare uno studente di informatica ad imparare la robotica?

Prima ho una buona notizia per voi: la robotica riguarda tanto il software quanto l'hardware. Non avete bisogno di costruire il robot -- alcune persone con un buon background in EE o ME lo faranno meglio di voi, ma per fare in modo che questo hardware faccia autonomamente buone cose avete bisogno di un software complesso che si occupi di tutti i sensori e gli attuatori, unisca le loro informazioni per dare un senso ai dati a livello semantico e poi li ritrasformi in comandi per gli attuatori. E credetemi, sia che lo guardiate a basso livello decisionale o ad alto livello decisionale questo è un compito difficile.

Anche il mio background è in CS: Verifica e validazione, Rappresentazione della conoscenza e inferenza sono stati gli argomenti che ho studiato più a fondo fino a quando mi sono spostato nelle architetture robotiche per il mio PhD.

Il software robotico è un ampio dominio che raccoglie diversi campi legati alla CS.

Il più naturale e spesso direttamente applicabile è la teoria del controllo: in questo dominio si cerca di implementare una legge di controllo che chiuda il loop di basso livello tra le informazioni che si hanno (posizione e velocità di un drone a 6 DOF per esempio) nei comandi che meglio permettono di seguire un percorso. C'è un sacco di ottimizzazione lineare coinvolta qui e un buon background in matematica è necessario. Qualsiasi robot che si muove - sia esso un veicolo o un braccio - avrà al suo livello inferiore un ciclo di controllo che affonda le sue radici in questo campo.

Anche l'elaborazione stocastica e il ragionamento sono lì sopra. Poiché i dati di rilevamento sono spesso rumorosi e l'esito dei comandi è incerto, è necessario utilizzare una rappresentazione stocastica a livello intermedio per ancorare la percezione rumorosa a concetti fondati o per decidere l'azione meno rischiosa/più promettente per evitare un fallimento/raggiungere un obiettivo locale. Intelligenza Artificiale: Programming a Robotic Car, il corso di S. Thrun nel suo sito web è tutto su questo -- tutte le tecniche che presenta sono collegate in un modo o nell'altro al processo gaussiano e all'inferenza stocastica. Anche questo corso è indirizzato a persone che hanno un buon background di CS, quindi dovresti essere a tuo agio con esso.

Avere uno di questi 2 ti rende ben equipaggiato sul modo in cui l'industria percepisce un robot automatizzato/"autonomo" al giorno d'oggi. Andare oltre vi richiederà di esplorare problemi decisionali di livello superiore o architetture software per sistemi robotici. Il processo decisionale di livello superiore implica in generale alcuni concetti presentati nel corso di Thrun a concetti più astratti. Per esempio, la pianificazione del percorso che presenta rimane abbastanza semplice poiché un'automobile ha relativamente pochi gradi di libertà. Se si prova a fare la pianificazione del percorso su un sistema più complesso come un braccio robotico o anche un robot umanoide è necessario esplorare tecniche più avanzate. Il libro di Steve Lavalle è un buon materiale per questo (Planning Algorithms / Motion Planning che è disponibile gratuitamente sul link). attenzione questo inizia ad essere materiale avanzato fragile però e non tratta il problema dell'integrazione di tali tecniche all'interno di un ciclo di controllo.

La mia preferenza personale va alla pianificazione ed esecuzione di compiti di livello superiore, dato che è il mio campo 🙂 Questo include la pianificazione classica preferibilmente con la rappresentazione del tempo e delle risorse o la pianificazione probabilistica che si occupa di rappresentazioni simili a quella fornita da Thrun. La maggior parte del lavoro è legato agli algoritmi di ricerca, forse un po' di teoria dei giochi e molto di architettura del software. Questo è ancora abbastanza lontano per essere veramente utile accanto alla sperimentazione a livello di dottorato però.

Spero che questo aiuti.

EDIT: Ho bisogno di menzionare che il campo che ho dato è legato ai miei interessi con un crescente livello di astrazione dal ciclo di controllo di basso livello al processo decisionale di alto livello con una forte enfasi sul processo decisionale. Ci sono altri campi più legati alla percezione che sono rilevanti per la robotica: elaborazione del segnale, apprendimento automatico, fusione di informazioni (stocastiche o altro) che possono riguardare lo SLAM e l'elenco potrebbe continuare a lungo, mentre io li conosco ad alto livello preferisco lasciare che altri diano indicazioni più accurate.