%
% Seminario_UniRC.tex
%

\documentclass{beamer}

\usepackage{beamerthemeshadow}
\usepackage{listings}
\usepackage{times}
\usepackage{algorithm2e}
\usepackage{graphics}
\usepackage{graphicx}
%\usepackage{bmpsize}
%\usepackage{algorithm}
%\usepackage{algorithmic}

\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
% \usepackage{amsmath,amssymb} \usepackage[latin1]{inputenc}
% \usepackage{colortbl}
\usepackage[english]{babel}

\newcommand{\erlang}{
\lstset{language=Prolog, basicstyle=\ttfamily\footnotesize,frame=trBL,
  frameround=fttt}}

\newcommand{\erlangsmall}{
\lstset{language=Prolog, basicstyle=\ttfamily\scriptsize,frame=trBL,
  frameround=fttt}}

\newcommand{\clang}{
\lstset{language=Prolog, basicstyle=\ttfamily\footnotesize,frame=trBL,
  frameround=fttt}}

\newcommand{\clangsmall}{
\lstset{language=Prolog, basicstyle=\ttfamily\scriptsize,frame=trBL,
  frameround=fttt}}

\newcommand{\clangtiny}{
\lstset{language=Prolog, basicstyle=\ttfamily\tiny,frame=trBL,
  frameround=fttt}}

\erlang

\newcommand\blue[1]{{\color[rgb]{0,0,1}#1}}
\newcommand\green[1]{{\color[rgb]{0,0.5,0}#1}}
\newcommand\red[1]{{\color[rgb]{1,0,0}#1}}
%%\newcommand\black{\color[rgb]{0,0,0}}

\newcommand\tape[9]{
\framebox{#1}
\framebox{#2}
\framebox{#3}
\framebox{#4}
\framebox{#5}
\framebox{#6}
\framebox{#7}
\framebox{#8}
\framebox{#9}}

\newcommand\two[2]{
\framebox{#1}
\framebox{#2}}

\newcommand\six[6]{
\framebox{#1}
\framebox{#2}
\framebox{#3}
\framebox{#4}
\framebox{#5}
\framebox{#6}}

\newcommand\three[3]{
\framebox{#1}
\framebox{#2}
\framebox{#3}}

\title[Introduzione alla Robotica]{Introduzione alla Robotica}
%%

\author[Corrado Santoro]
       {Corrado Santoro}

\date{ }

\institute[University of Catania]
  {
    \begin{center}
      \textbf{\red{}ARSLAB - Autonomous and Robotic Systems Laboratory}\\
      Dipartimento di Matematica e Informatica - Universit\`{a} di Catania, Italy\\
      \texttt{santoro@dmi.unict.it}\\
    \end{center}
  }


% Spaces
\newcommand{\N}{\vskip 0.3 cm}
\newcommand{\n}{\vskip 0.2 cm}
\newcommand{\TAB}{\hskip 4 cm}
\newcommand{\tab}{\hskip 0.6 cm}


\begin{document}


%%
\frame{\titlepage}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Robot tra immaginazione e realt\`{a}}
%%
\includegraphics[scale=0.9]{robot-star-wars.png}
\hfill
\includegraphics[scale=0.25]{robot1.png}\\
%%
\includegraphics[scale=0.15]{nao.png}
\hfill
\includegraphics[scale=0.9]{icub.png}\\
\begin{center}
\includegraphics[scale=0.2]{kuka.png}
\end{center}
%%
\end{frame}





%%
\begin{frame}[fragile]
%%
  \frametitle{Definizione}
%%
\begin{block}{Sistema Robotico}
Un \textbf{\red{sistema robotico}} \`{e} un apparato
\emph{meccanico/elettronico/informatico} in grado di svolgere un \textbf{compito}
ben preciso in \textbf{autonomia}
\end{block}
%%
%%
\visible<2->{
\begin{block}{Elementi di un Sistema Robotico}
\begin{itemize}
\item Ambiente di lavoro
\item Struttura meccanica
\item Sensori
\item Unit\`{a} di elaborazione
\item Attuatori
\end{itemize}
\end{block}}
%%
\end{frame}




%%
\begin{frame}[fragile]
%%
  \frametitle{Un tipico ``sistema robotico''}
%%
\begin{columns}[T] % align columns
%%
\begin{column}{.35\textwidth}
\visible<2->{%%
~\\~\\~\\~\\
\includegraphics[scale=0.2]{lavatrice.png}}
\end{column}%
\hfill%
\begin{column}{.60\textwidth}
\visible<3->{
\begin{block}{E' un Sistema Robotico?}
\begin{itemize}
\item Ha un obiettivo ben preciso: \textbf{\red{lavare i panni!}}
\item Lo fa ``da sola''
\item Opera in un ``ambiente di lavoro''
\item Ha una \textbf{struttura meccanica}
\item Possiede opportuni \textbf{sensori} (temperatura, peso, etc.)
\item Possiede una \textbf{unit\`{a} di elaborazione} che comanda il ciclo
  di  lavaggio
\item Possiede degli \textbf{attuatori} (motore cestello, pompa, resistenza
  di  riscaldamento, etc.)
\end{itemize}
\end{block}}
\end{column}%
\end{columns}%%
%%
\end{frame}




%%
\begin{frame}[fragile]
%%
  \frametitle{Un altro tipico ``sistema robotico''}
%%
\begin{columns}[T] % align columns
%%
\begin{column}{.4\textwidth}
\visible<2->{%%
~\\~\\~\\~\\
\includegraphics[scale=0.25]{bimby.png}}
\end{column}%
\hfill%
\begin{column}{.58\textwidth}
\visible<3->{
\begin{block}{Il ``robot da cucina''}
\begin{itemize}
\item\footnotesize{}Ha un obiettivo ben preciso: \textbf{\red{cucinare pietanze!}}
\item Lo fa ``da solo''
\item Opera in un ``ambiente di lavoro''
\item Ha una \textbf{struttura meccanica}
\item Possiede opportuni \textbf{sensori} (temperatura, peso, etc.)
\item Possiede una \textbf{unit\`{a} di elaborazione} che comanda le
  operazioni legate alla cottura del cibo
\item Possiede degli \textbf{attuatori} (motore cestello, resistenza
  di  riscaldamento, etc.)
\end{itemize}
\end{block}}
\end{column}%
\end{columns}%%
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Un altro robot ``domestico''}
%%
\begin{columns}[T] % align columns
%%
\begin{column}{.4\textwidth}
\visible<2->{%%
~\\~\\~\\~\\~\\
\includegraphics[scale=0.15]{roomba.png}}
\end{column}%
\hfill%
\begin{column}{.58\textwidth}
\visible<3->{
\begin{block}{Il ``robot aspirapolvere''}
\begin{itemize}
\item\footnotesize{}Ha un obiettivo ben preciso: \textbf{\red{togliere la
    polvere dal pavimento della stanza!}}
\item Lo fa ``da solo''
\item Opera in un ``ambiente di lavoro'' (la stanza)
\item Ha una \textbf{struttura meccanica}
\item Possiede opportuni \textbf{sensori} (posizione, ostacoli, scalini, sporcizia, etc.)
\item Possiede una \textbf{unit\`{a} di elaborazione} che comanda le
  operazioni legate alla gestione dei percorsi ed all'attivazione della pompa
\item Possiede degli \textbf{attuatori} (motori locomozione, aspiratore, etc.)
\end{itemize}
\end{block}}
\end{column}%
\end{columns}%%
%%
\end{frame}





%%
\begin{frame}[fragile]
%%
  \frametitle{Robot domestici: dall'utile all'inutile}
%%
\begin{columns}[T] % align columns
%%
\begin{column}{.4\textwidth}
\visible<2->{%%
~\\~\\~\\~\\
\includegraphics[scale=0.25]{aibo.png}}
\end{column}%
\hfill%
\begin{column}{.58\textwidth}
\visible<3->{
\begin{block}{Aibo: il cane-robot della Sony!}
\begin{itemize}
\item\footnotesize{}Ha un obiettivo ben preciso: \textbf{\red{comportarsi
    come un cane!}}
\item Scodinzola... abbaia... mugola...
\item Ha una \textbf{struttura meccanica}
\item Possiede opportuni \textbf{sensori} (posizione dei giunti,
  telecamera, sensori di presenza, sensori di tocco, microfono, etc.)
\item Possiede una \textbf{unit\`{a} di elaborazione} che prova a
  realizzare un comportamento quanto pi\`{u} simile a quello di un cane
\item Possiede degli \textbf{attuatori} (motori delle zampe, azionamenti
  per il movimento delle orecchie e della coda, speaker, etc.)
\end{itemize}
\end{block}}
\end{column}%
\end{columns}%%
%%
\end{frame}




%%
\begin{frame}[fragile]
%%
  \frametitle{Robot domestici: dall'utile all'inutile}
%%
\begin{columns}[T] % align columns
%%
\begin{column}{.4\textwidth}
~\\~\\~\\~\\
\includegraphics[scale=0.25]{aibo.png}
\end{column}%
\hfill%
\begin{column}{.58\textwidth}
\begin{block}{Aibo: il cane-robot!}
\begin{itemize}
\item\footnotesize{}Aibo \`{e} uno dei primi tentativi commerciali di
  realizzare un robot con \textbf{\red{comportamento simile a quello di un
      essere vivente}}
\item Tuttavia ...
\item ... le abilit\`{a} di un cane
\item ... o le sue capacit\`{a} di interazione
\item\textbf{... sono molto difficili da emulare artificialmente!}
\item A lungo andare Aibo risulta \textbf{ripetitivo} e \textbf{noioso}
\end{itemize}
\end{block}
\end{column}%
\end{columns}%%
%%
\end{frame}




%%
\begin{frame}[fragile]
%%
  \frametitle{Robot domestici: dall'inutile allo sperimentale}
%%
\begin{columns}[T] % align columns
%%
\begin{column}{.3\textwidth}
\visible<2->{%%
~\\~\\~\\~\\
\includegraphics[scale=0.2]{nao.png}}
\end{column}%
\hfill%
\begin{column}{.68\textwidth}
\visible<3->{
\begin{block}{NAO: l'umanoide della Softbank Robotics!}
\begin{itemize}
\item\footnotesize{}Incarna l'idea emergente dei \textbf{\red{personal robots}}
\item E' una \textbf{piattaforma sperimentale}
\item Possiede 25 motori per il controllo dei movimenti
\item ... due telecamere
\item ... quattro microfoni
\item ... due speaker
\item Piattaforma software di sviluppo ``open''
\end{itemize}
\end{block}}
\end{column}%
\end{columns}%%
%%
\end{frame}





%%
\begin{frame}[fragile]
%%
  \frametitle{Robot Mobili Personali}
%%
\visible<2->{
\includegraphics[scale=0.2]{tesla.png}
\hfill
\includegraphics[scale=0.2]{tesla2.png}\\}
\visible<3->{
\begin{block}{La Tesla e le auto a \textbf{guida autonoma}}
\begin{itemize}
\item\footnotesize{}Il \textbf{\red{veicolo autonomo}} costituisce la
  prossima sfida nell'ambito dei sistemi di trasporto
\item E' un \textbf{sistema robotico}
\item Ha un \textbf{obiettivo}: portarvi sani e salvi verso una destinazione
\item Ha dei \textbf{sensori}: GPS, velocit\`{a}, ostacoli, ambiente, etc.
\item Ha un'\textbf{unit\`{a} di elaborazione}, che stabilisce come pilotare la
  guida sulla base del percorso voluto e le informazioni dai sensori
\item Ha degli \textbf{attuatori}: motore, sterzo, freni, etc.
\end{itemize}
\end{block}}
%%
\end{frame}









%%
\begin{frame}[fragile]
%%
  \frametitle{Robot Mobili Militari}
%%
\visible<2->{
\includegraphics[scale=0.25]{predator.png}
\hfill
\includegraphics[scale=0.2]{predator2.png}\\}
\visible<3->{
\begin{block}{I \textbf{predator}}
\begin{itemize}
\item\footnotesize{}Sono \textbf{\red{velivoli autonomi}} (UAV) in dotazione ai
  paesi NATO
\item E' un \textbf{sistema robotico}
\item Ha un \textbf{obiettivo}: effettuare una missione ben precisa
\item Ha dei \textbf{sensori}: GPS, velocit\`{a}, ostacoli, ambiente, etc.
\item Ha un'\textbf{unit\`{a} di elaborazione}, che stabilisce come
  effettuare il pilotaraggio sulla base del percorso voluto e le
  informazioni dai sensori
\item Ha degli \textbf{attuatori}: motore, superfici mobili (alettoni,
  timone, elevatore)
\end{itemize}
\end{block}}
%%
\end{frame}








%%
\begin{frame}[fragile]
%%
  \frametitle{Dall'Umanoide all'Umano: la mimica facciale}
%%
\visible<2->{
\includegraphics[scale=0.15]{zeno.png}
\hfill
\includegraphics[scale=0.2]{han.png}\\~\\}
\visible<3->{
\begin{block}{Zeno, Han e gli altri ``umani'' della Hanson Robotics}
\begin{itemize}
\item\footnotesize{}Nell'imitazione dei comportamenti umani, la nuova sfida
  \`{e} la gestione delle \textbf{\red{emozioni}}
\item\textbf{Modelli artificiali} per la rappresentazione delle emozioni
  con la mimica facciale
\item Tecniche per il \textbf{riconoscimento} delle emozioni
\end{itemize}
\end{block}}
%%
\end{frame}





%%
\begin{frame}[fragile]
%%
  \frametitle{Dall'Umanoide all'Umano: la deambulazione}
%%
\visible<2->{
\begin{center}
\includegraphics[scale=0.3]{boston_dynamics.png}
\end{center}}
\visible<3->{
\begin{block}{I ``mostri'' della Boston Dynamics}
\begin{itemize}
\item\footnotesize{}\textbf{\red{Emulazione del movimento}} degli arti, sia dei
  \textbf{quadrupedi} che dei \textbf{bipedi}
\item L'obiettivo \`{e} rendere la deambulazione artificiale
  \textbf{altamente affidabile}
\item Capacit\`{a} di muoversi con facilit\`{a} in \textbf{qualunque
  ambiente fisico}
\end{itemize}
\end{block}}
%%
\end{frame}






%%
\begin{frame}[fragile]
%%
  \frametitle{Sistemi Robotici Autonomi @ DMI}
%%
\includegraphics[scale=0.3]{iano.png}~
\includegraphics[scale=0.12]{ture_rosa.png}~
\includegraphics[scale=0.16]{Ciccio.png}\\\N
\begin{block}{Competizioni Robotiche: \textbf{Eurobot}}
\begin{itemize}
\item\footnotesize{}Competizione robotica studentesca
\item\textbf{Obiettivo}: realizzare da zero un robot autonomo in grado di
  \textbf{\red{``giocare''}} a un gioco con regole ben precise:
\begin{itemize}
\item\footnotesize{}\textbf{catturare oggetti}
\item\textbf{identificarli}
\item\textbf{depositarli in zone specifiche}
\item\textbf{evitare l'avversario}
\end{itemize}
\end{itemize}
\end{block}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Robots!}
%%
\begin{block}{}
\begin{center}
\Large{}~\\Problematiche connesse ai sistemi robotici\\~
\end{center}
\end{block}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 1: il Dominio}
%%
\begin{block}{Definire con precisione il \textbf{dominio} del nostro robot}
\begin{itemize}
\item<2->\textbf{\red{Cosa?}--}\textbf{Obiettivo comportamentale} del robot\N
\item<3->\textbf{\red{Dove?}--}\textbf{Ambiente fisico} di azione\N
\item<4->\textbf{\red{Con cosa?}--}\textbf{Oggetti} (cose inanimate) con cui interagire\N
\item<5->\textbf{\red{Con chi?}--}\textbf{Soggetti} (fisici) con cui interagire\N
\item<6->\textbf{\red{Come?}--}Modalit\`{a} di \textbf{interazione} con gli \textbf{oggetti}\N
\item<7->\textbf{\red{Come?}--}Modalit\`{a} di \textbf{interazione} con i \textbf{soggetti}\N
\end{itemize}
\end{block}
%%
\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 2: Scelta di sensori}
%%
\begin{block}{``Occhi'', ``Orecchie'' e ``Tatto'' di un robot}
\begin{itemize}
\item<2->Un sensore traduce una \textbf{\red{rappresentazione parziale
    dell'ambiente}} in un segnale elettrico\N
\item<3->Una opportuna \textbf{interfaccia} traduce poi il segnale
  elettrico in un \textbf{\red{dato}} informatico\N
\item<4->Ci\`{o} che non \`{e} \red{``sentito''}, per il robot \textbf{non esiste}\N
\item<5->Ci\`{o} che un sensore \red{``sente''} deve essere \textbf{il
  pi\`{u} aderente possibile} alla realt\`{a} (in cui vive il robot)\N
\end{itemize}
\end{block}
%%
\N
\visible<6->{
\begin{block}{Categorie Sensori}
\begin{itemize}
\item<7->\textbf{\red{Esterocettivi:}} Sensori che ``sentono'' l'\textbf{ambiente}
\item<8->\textbf{\red{Propriocettivi:}} Sensori che ``sentono'' il
  \textbf{robot stesso}
\end{itemize}
\end{block}}
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 2: Scelta di sensori}
%%
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\begin{block}{Tipologia di Sensori}
\begin{itemize}
\item<2->\footnotesize{}Contatto
\item<3->\footnotesize{}Distanza
\item<4->\footnotesize{}Presenza
\item<5->\footnotesize{}Posizione
\item<6->\footnotesize{}Luminosit\`{a}
\item<7->\footnotesize{}Colore
\item<8->\footnotesize{}Immagine
\item<9->\footnotesize{}Suono
\end{itemize}
\end{block}
\end{column}
\begin{column}{0.48\textwidth}
\includegraphics[scale=0.2]{LimitSwitch.png}~
\includegraphics[scale=0.4]{E3Z.png}~
\includegraphics[scale=0.1]{baumer-u500.png}\\
\includegraphics[scale=0.1]{GP2D12.png}~
\includegraphics[scale=0.4]{rotary-encoder.png}\\
\end{column}
\end{columns}
%%
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 3: Scelta degli Attuatori}
%%
\begin{block}{Gli ``Arti'' di un robot}
\begin{itemize}
\item<2->Un attuatore traduce un \textbf{\red{desiderio}} del robot in una
  \textbf{\red{azione fisica sull'ambiente}}\N
\item<3->L'azione fisica ha sempre successo?  \textbf{\red{Ahim\`{e}, no!}}\N
\item<4->Ogni attutatore \`{e} sempre affiancato da un \textbf{sensore}
  utile a verificare il ``successo'' dell'azione\N
\item<5->L'azione di un attuatore \`{e} sempre \red{controllata}\N
\end{itemize}
\end{block}
%%
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 3: Scelta degli Attuatori}
%%
\begin{block}{Tipologia di movimento}
\begin{itemize}
\item<2->\footnotesize{}Lineare
\item<3->\footnotesize{}Rotatorio
\item<4->\footnotesize{}Combinato
\item<5->\footnotesize{}A posizioni fisse
\item<6->\footnotesize{}A posizioni variabili
\end{itemize}
\end{block}
%%
\N
%%
\visible<7->{%%
\begin{block}{Tecnologia degli attuatori}
\begin{itemize}
\item<8->\footnotesize{}Elettrici
\item<9->\footnotesize{}Oleodinamici
\item<10->\footnotesize{}Pneumatici
\end{itemize}
\end{block}}
%%
\end{frame}
%%







%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 3: Scelta degli Attuatori}
%%
\begin{block}{Criteri di Scelta}
\begin{itemize}
\item<2->\footnotesize{}Tipologia del movimento
\item<3->\footnotesize{}Velocit\`{a} richiesta
\item<4->\footnotesize{}Carichi da movimentare
\item<5->\footnotesize{}Dimensioni
\item<6->\footnotesize{}Consumi ammessi
\end{itemize}
\end{block}
%%
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 4: Scelta e Progettazione della meccanica}
%%
%%
\begin{columns}[T]
\begin{column}{0.6\textwidth}
\begin{block}{Lo ``Scheletro'' di un robot}
\begin{itemize}
\item<2->\footnotesize{}Verifica dei requisiti dimesionali e di carico
\item<3->\footnotesize{}Scelta dei materiali
\item<4->\footnotesize{}Valutazione dei cinematismi
\item<5->\footnotesize{}Progettazione CAD
\item<6->\footnotesize{}Simulazione statica e dinamica
\item<7->\footnotesize{}Prototipazione parziale
\end{itemize}
\end{block}
%%
%%
\end{column}
\begin{column}{0.38\textwidth}
\includegraphics[scale=0.1]{Inventor1.png}\\
\hfill\includegraphics[scale=0.08]{Inventor2.png}\\
\includegraphics[scale=0.1]{quad.png}
\end{column}
\end{columns}
%%
%%
\end{frame}
%%









%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 5: Scelta e Progettazione dell'elettronica}
%%
%%
\begin{columns}[T]
\begin{column}{0.6\textwidth}
\begin{block}{Il ``Cuore e Sangue'' di un robot}
\begin{itemize}
\item<2->\footnotesize{}Verifica dei requisiti elettrici di sensori e attuatori
\item<3->\footnotesize{}Valutazione delle prestazioni computazionali richieste
\item<4->\footnotesize{}Valutazione dei vincoli dimensionali
\item<5->\footnotesize{}Progettazione CAD
\item<6->\footnotesize{}Prototipazione hardware
\item<7->\footnotesize{}Prototipazione software
\end{itemize}
\end{block}
%%
%%
\end{column}
\begin{column}{0.38\textwidth}
\includegraphics[scale=0.08]{Kicad.png}\\
\hfill\includegraphics[scale=0.08]{quartus.png}\\
\includegraphics[scale=0.06]{boards.png}
\end{column}
\end{columns}
%%
%%
\end{frame}
%%






%%
\begin{frame}[fragile]
%%
  \frametitle{Problema 6: Software!!!}
%%
%%
\begin{block}{Il ``Cervello'' di un robot}
\begin{itemize}
\item<2->\footnotesize{}Molteplici problematiche software e a diversi
  ``livelli''
\item<3->\footnotesize{}Sistema nervoso \textbf{periferico}
  \begin{itemize}
  \item<4->\footnotesize{}\red{Controllo specifico dei singoli azionamenti}
  \item<5->\footnotesize{}\red{Gestione delle ``reazioni''}
  \item<6->\footnotesize{}\red{Algoritmi tipici di ``regolazione''}
  \end{itemize}
\item<7->\footnotesize{}Sistema nervoso \textbf{centrale}
  \begin{itemize}
  \item<8->\footnotesize{}\red{Gestione del comportamento e pianificazione delle azioni}
  \item<9->\footnotesize{}\red{Algoritmi ``decisionali''}
  \item<10->\footnotesize{}\red{Meccanismi di planning e/o inferenza basati su
    tecniche di AI}
  \end{itemize}
\end{itemize}
\end{block}
%%
%%
%%
\end{frame}
%%






%%
\begin{frame}[fragile]
%%
  \frametitle{Il Problema del ``Controllo''}
%%
%%
\begin{block}{Che significa ``controllare''?}
\begin{itemize}
\item<2->\footnotesize{}Nei sistemi fisici, effettuare un'azione
  \textbf{non implica} la sua persistenza!
\item<3->\footnotesize{}Esempio: \red{ percorrere un rettilineo in auto richiede
    che lo sterzo sia ``dritto''}
\item<4->\footnotesize{}Impostare lo sterzo e non \textbf{toccarlo pi\`{u},
  \`{e} sufficiente} per assicurare un percorso corretto?
\item<5->\footnotesize{}\textbf{\red{No!}} Noi \textbf{verifichiamo
  (controlliamo)} continuamente la nostra ``consegna'' (percorso
  rettilineo) e ``aggiustiamo'' lo sterzo sulla base di \textbf{errori}
\end{itemize}
\end{block}
%%
\N
%%
%%
%%
\end{frame}
%%






%%
\begin{frame}[fragile]
%%
  \frametitle{Il Problema del ``Controllo''}
%%
%%
\begin{block}{Il principio dei \textbf{sistemi di controllo}}
\begin{itemize}
\item\footnotesize{}Data una grandezza fisica da \textbf{controllare}
  (velocita', posizione, etc.) tramite un certo \textbf{attuatore}
\item\footnotesize{}Posto che sia presente un \textbf{sensore} in grado
  di misurare la grandezza effettiva
\begin{enumerate}
\item<2->\footnotesize{}\textbf{Acquisici} il dato sulla grandezza effettiva tramite
  il \red{sensore}
\item<3->\footnotesize{}\textbf{Confronta} il valore \red{effettivo} con il
  valore \red{desiderato}
\item<4->\footnotesize{}Sulla base dell'\red{errore}, \textbf{pilota}
  \red{l'attuatore} opportunamente
\end{enumerate}
\item<5->\footnotesize{}Modello di controllo basato sul \textbf{feedback}
\end{itemize}
\end{block}
%%
\begin{center}
\includegraphics[scale=0.4]{control_loop.pdf}
\end{center}
%%
\end{frame}
%%






%%
\begin{frame}[fragile]
%%
  \frametitle{Il Problema del ``Controllo''}
%%
%%
\begin{block}{Azionamenti e ``control loops''}
\begin{itemize}
\item<2->\footnotesize{}Ogni azionamento \`{e} caratterizzato da (almeno) due
  \textbf{loop di controllo}
  \begin{itemize}
  \item<3->\footnotesize{}\red{velocit\`{a}}
  \item<4->\footnotesize{}\red{posizione}
  \end{itemize}
\item<5->\footnotesize{}I loop (o blocchi) di controllo sono connessi \textbf{in cascata}
\item<6->\footnotesize{}Il software di ``basso livello'' di un robot
  contiene una \textbf{moltitudine} di \red{blocchi di controllo}
\item<7->\footnotesize{}In un drone, in navigazione GPS, ne operano ben 12 (almeno!)
\end{itemize}
\end{block}
%%
\begin{center}
\includegraphics[scale=0.4]{control_loop.pdf}
\end{center}
%%
\end{frame}
%%









%%
\begin{frame}[fragile]
%%
  \frametitle{Il Problema del ``Controllo''}
%%
%%
\begin{block}{Algoritmo di Controllo}
\begin{algorithm}[H]
\SetAlgoLined
\While{True}{
  \red{On each $\Delta T$\;}
  $s \leftarrow read\_sensor\_value()$\;
  $error \leftarrow target - s$\;
  \red{$a \leftarrow controller(error)$\;}
  $drive\_actuator(a)$\;
}
\end{algorithm}
\end{block}
%%
\begin{center}
\includegraphics[scale=0.4]{control_loop.pdf}
\end{center}
%%
\end{frame}
%%







%%
\begin{frame}[fragile]
%%
  \frametitle{Il Problema del ``Planning''}
%%
%%
\begin{block}{Dal ``Controllo'' alla ``Pianificazione''}
\begin{itemize}
\item<2->\footnotesize{}Dato per certo che gli algoritmi di controllo ci
  assicurano determinati \textbf{azionamenti}
\item<3->\footnotesize{}Il \textbf{\red{planning}} permette di combinare tali azionamenti
  (o movimenti) secondo un \textbf{obiettivo strategico} ben preciso
\item<4->\footnotesize{}Esempio: \red{Gestione del moto di un robot}
  \begin{itemize}
  \item<5->\footnotesize{}\textbf{controllo}: azioni semplici di
    movimento come \emph{vai dritto}, \emph{ruota}, etc.
  \item<6->\footnotesize{}\textbf{planning}: individuazione del percorso da
    seguire all'interno di un ambiente pi\`{u} o meno complesso
  \end{itemize}
\end{itemize}
\end{block}
%%
\visible<6->{
\begin{center}
\includegraphics[scale=0.15]{mobile_robot_paths.pdf}
\end{center}}
%%
\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Diversi problemi di Planning}
%%
%%
\begin{block}{\textbf{Problema 1}}
\begin{itemize}
\item<2->\footnotesize{}Siano date diverse azioni $A_1, A_2,
  \dots, A_n$, determinare (a run-time) il  \red{\textbf{piano ottimale}
$P = \{A_{i_1}, A_{i_2}, \dots, A_{i_n}\}$} per raggiungere un determinato
\textbf{goal} $G$
\item<3->\footnotesize{}Esempio: date le azioni di movimento, determinare
  la sequenza ottimale per effettuare un certo percorso
\end{itemize}
\end{block}
%%
\N\N
%%
\visible<4->{%
\begin{block}{\textbf{Problema 2}}
\begin{itemize}
\item<5->\footnotesize{}Siano dati diversi piani \red{$P_1, P_2,
  \dots, P_n$}, ognuno con differenti azioni ma tutti in grado di
  raggiungere un determinato \textbf{goal} $G$, determinare (a run-time) il
  \red{\textbf{piano ottimale} $P_{\overline{k}}$}
\item<6->\footnotesize{}Esempio: dati diversi percorsi per raggiungere uno
  stesso punto, determinare quello ottimale
\end{itemize}
\end{block}}
%%
\end{frame}
%%








%%
\begin{frame}[fragile]
%%
  \frametitle{Deliberazione e Scelta}
%%
%%
\begin{block}{Come pu\`{o} un \textbf{Sistema Automatico}
    effettuare una \textbf{\underline{scelta consapevole}}?}
  \begin{itemize}
  \item<2->\footnotesize{}Ogni \textbf{\red{scelta}} (sia essa
    un'\red{azione} o un \red{piano}), \`{e} caratterizzata da:
    \begin{itemize}
    \item<3->\footnotesize{}L'\red{obiettivo finale}
      (\red{\emph{goal}} o \red{\emph{post-condition}})
    \item<4->\footnotesize{}La \red{fattibilit\`{a}}
      (\red{\emph{feasibility}} o \red{\emph{pre-condition}})
    \item<5->\footnotesize{}Il \red{costo/opportunit\`{a}}
    \end{itemize}\N
%%
  \item<6->\footnotesize{}Esempio, dati $n$ possibili percorsi:
    \begin{itemize}
    \item<7->\footnotesize{}\red{Obiettivo}: \textbf{punto da raggiungere}
    \item<8->\footnotesize{}\red{Fattibilit\`{a}}: \textbf{assenza di ostacoli}
    \item<9->\footnotesize{}\red{Costo}: \textbf{lunghezza} o \textbf{durata}, o una
      combinazione di essi
    \end{itemize}\N
%%
  \item<10->\footnotesize{}Tali fattori possono essere:
    \begin{itemize}
    \item<11->\footnotesize{}Stabiliti staticamente a \red{design-time}
    \item<12->\footnotesize{}Determinati a \red{run-time} sulla base dello
      stato dell'ambiente (catturato dai sensori)
    \end{itemize}\N
%%
  \end{itemize}
\end{block}
%%
%%
\end{frame}
%%






%%
\begin{frame}[fragile]
%%
  \frametitle{Il ``Tipico'' Planning Automatico}
%%
%%
\begin{block}{Algoritmo di Planning}
\begin{algorithm}[H]
\SetAlgoLined\footnotesize{}
\ForEach{$g \in GOAL\_SET$}{
  $applicable\_plans \leftarrow \{p \in g.plans | is\_feasible(p)\}$\;
  $p \leftarrow find\_best(applicable\_plans)$\;
  $execute(p)$\;
  \If{$succeded(p)$}{
    $g \leftarrow g - p$\;
    \tcp{Remove plan from goal}
    \If{$no\_plans(g)$}{
    $GOAL\_SET \leftarrow GOAL\_SET - g$\;
    \tcp{Remove goal from goalset}
    }
  }
}
\end{algorithm}
\end{block}
%%
\end{frame}
%%




%%
\begin{frame}[fragile]
%%
  \frametitle{Software Layers of an Autonomous Robot}
%%
%%
%%
\begin{center}
\includegraphics[scale=0.4]{robotic_layers.pdf}
\end{center}
%%
\end{frame}
%%










%%
\frame{\titlepage}
%%




%%
%%
\end{document}
%%
%%

