Dubbi prima esercitazione robotica

Dubbi prima esercitazione robotica

di Federica Di Lauro -
Numero di risposte: 20

Buongiorno,

non mi è chiaro l'ultimo punto della consegna matlab: "Successivamente all'ultimo disegno dovrà stampare a video l'ultimo valore dei gradi di libertà".
Per valore dei gradi di libertà intende la pose x,y,theta?

Inoltre mi chiedevo quanto sia valutata l'efficienza del codice: in tutto il mio script impiega 20 secondi per effettuare calcoli e disegno, e non saprei se ciò è dovuto alla mia inesperienza con matlab o se sia normale.

In riposta a Federica Di Lauro

Ri: Dubbi prima esercitazione robotica

di Michele Pugno -
Io non ho usato il pacchetto di matematica simbolica e il programmino impiega un tempo molto inferiore ad effettuare i calcoli, 0.589 sec.
Mi aggrego alla domanda di Federica circa i gradi di libertà.
In riposta a Michele Pugno

Re: Ri: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -
Ammesso e non concesso che ciò non derivi da qualche errore nei calcoli svolti quindi a mano, mi sembra poco credibile che anche se l'output del pacchetto di matematica simbolica non fosse del tutto ben semplificato, ci sia una differenza del genere. Più facile che sia dovuta a questioni di visualizzazione. Comunque, come detto in altra risposta, scordatevi di ogni questione legata all'efficienza (a dire il vero usare matlab e parlare di efficienza è già wishful thinking, nonostante quello che potrebbero rispondere i dipendenti di mathworks)..
In riposta a Domenico Giorgio Sorrenti

Ri: Re: Ri: Dubbi prima esercitazione robotica

di Michele Pugno -
Buondì.
Allego indi una domanda: non ho capito se usare o meno il pacchetto di matematica simbolica sia mandatory.
Ho soluzione pronta per entrambe le evenienze.
In riposta a Domenico Giorgio Sorrenti

Re: Ri: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -
Aggiungo che matlab prevede dei meccanismi per chiamare da dentro un programma matlab del codice esterno. Ce ben ricordo (ma qui ne scoprite di più voi in 2 minuti di ricerche) mathworks fornisce il modo per attivare programmi scritti in C, C++ e Fortran. Se ben ricordo però si tratta di circa-C, circa-C++, etc. in quanto va usato un compilatore mathworks, che non soddisfa / svolge / consente tutto quello che si può fare da standard del linguaggio. Ignoro se in questi tempi di GPU ci sia il modo di attivare codice che sfrutti le GPU eventualmente presenti sulla macchina dall'interno di programmi matlab.
In riposta a Domenico Giorgio Sorrenti

Ri: Re: Ri: Dubbi prima esercitazione robotica

di Michele Pugno -
non ho informazioni circa eventuali wrapper di codice in c o fortran, però ho usato le feature di scalabilità del codice su GPU tramite CUDA.
Le performance su GPU sono notevolmente superiori, resta il fatto che di sicuro non è un linguaggio comparabile a C o a Julia, come neanche a python, in termini di performance e accesso diretto a librerie matematiche molto performanti quali open-BLAS, LAPACK o MKL di intel.
Stesso discorso per la scalabilità GPU.

Appena eseguito entrambi i codici con e senza libreria simbolica:
- senza: 3 secondi, incluso il tempo di plotting.
- con: 62 secondi, incluso il tempo di plotting. Inoltre si rende necessario un casting esplicito per utilizzare le funzioni di plotting e per stampare a schermo rendendo il tutto poco intuitivo.

I risultati numerici non presentano differenze

Commento la chiamata alla funzione che implementa sym-toolbox.
In riposta a Michele Pugno

Re: Ri: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -

Interpretazione del molto maggiore tempo,che mi è venuta in mente solo adesso: non è che il prodotto in forma simbolica tra le matrici è stato messo all'intero del ciclo di simulazione (e quindi ripetuto tutte volte)?

In riposta a Domenico Giorgio Sorrenti

Ri: Re: Ri: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -

premessa: non avendo mai usato il calcolo simbolico in matlab potrei dire delle cavolate. chiarito questo, l'ipotesi interpretativa del maggior tempo che stavo pensando è: questo prodotto tra le 3 matrici di trasformazione elementare serve per trovare (in forma simbolica) la matrice di trasformazione "one-period" (non sono riuscito a trovare un nome migliore, se avete dei suggerimenti, sono ben accetti)!

il ciclo di simulazione viene ripetuto per ciascuna riga dell'array degli archi.

se il prodotto in forma simbolica è all'interno del ciclo di simulazione (come nel caso "in forma numerica") il calcolo in forma simbolica non verrebbe ripetuto ad ogni ciclo?

se invece il prodotto in forma simbolica lo svolgo prima del ciclo e poi nel ciclo uso direttamente la forma simbolica ottenuta, ovviamente ed inevitabilmente con i valori che le variabili hanno in ciascuna esecuzione del ciclo, questo calcolo in forma simbolica non verrebbe ripetuto ad ogni esecuzione del ciclo.

In riposta a Michele Pugno

Re: Ri: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -

Pugno, la sua consegna non stampa a video al termine della esecuzione i valori finali dei gradi di libertà

In riposta a Domenico Giorgio Sorrenti

Ri: Re: Ri: Dubbi prima esercitazione robotica

di Michele Pugno -
Roger, allora non avevo capito cosa intendesse per gradi di libertà, mea culpa: pertanto per x e y lei intende i valori contenuti nella matrice di rotstraslazione per la componente di pura traslazione.
Leggendo la risposta data a Federica, presumo che sia necessario usare atan2 per ottenere l'angolo rispetto all'angolo di Eulero riferito a Z a partire dalla matrice finale di rototraslazione invece di calcolarlo progressivamente ad ogni iterazione.

Ho corretto il file ove fosse possibile ricaricarlo.
In riposta a Michele Pugno

Re: Ri: Re: Ri: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -
  1. ho riportato la consegna in modo "draft".
  2. un corpo rigido nel piano ha 3DoF. per ubbidienza al mio ordine prendiamo come DoF per questo esercizio:
    1. la coordinata x rispetto al sistema di riferimento mondo dell'origine del sistema di riferimento robot,
    2. la coordinata y rispetto al sistema di riferimento mondo dell'origine del sistema di riferimento robot,
    3. l'angolo tra l'asse x del sistema di riferimento robot e l'asse x del sistema di riferimento mondo.
  3. la matrice di rototraslazione è un modo ridondante per esprimere la pose del corpo rigido "robot".
  4. i 3 DoF non sono un modo ridondante per esprimere la pose del corpo rigido robot.
  5. per fare i calcoli sulla pose e per disegnare il corpo preferiamo usare la convenzione delle matrici di rototraslazione in coordinate omogenee.
  6. alle volte viene utile la rappresentazione in termini di DoF, per questo vorrei che oltre a capire la differenza, sapeste anche passare da un modo all'altro.
In riposta a Federica Di Lauro

Re: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -

Confermo che i gradi di libertà sono quelli "liberi" e quindi in numero minimo (sono quelli "davvero liberi", mentre i valori della matrice non sono indipendenti l'uno dall'altro). Un corpo rigido nel piano ha 3 gradi di libertà: 2 traslatori (che decidiamo di comune accordo - eehhmm... su mio ordine - di rappresentare con coordinate cartesiane ortogonali rispetto al sistema di riferimento "alla partenza") ed 1 di orientamento (che decidiamo di comune accordo - eehhmm... su mio ordine - di rappresentare con l'angolo tra l'asse x del sistema mondo e l'asse x del sistema body-attached). Non è tanto chiaro dire che i gradi di libertà "sono la pose" perché la pose la posso rappresentare come voglio, il termine si riferisce a come è piazzato il corpo nel mondo, non a come rappresentare ciò.

Circa l'efficienza: mi pento! Elimino qualunque riferimento all'efficienza. Anzi vi prego di fare "pause on" prima di iniziare il i vostri calcoli e di fare "pause (0.4)" dentro al ciclo esterno di simulazione.

In riposta a Domenico Giorgio Sorrenti

Ri: Re: Dubbi prima esercitazione robotica

di Federica Di Lauro -
In riposta a Federica Di Lauro

Re: Ri: Re: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -
Ho aperto il testo della consegna per eliminare il termine efficienza: ma non l'ho trovato! Dove lo ha visto?
In riposta a Domenico Giorgio Sorrenti

Ri: Re: Ri: Re: Dubbi prima esercitazione robotica

di Federica Di Lauro -
Da nessuna parte in realtà, era più un dubbio personale visto che 20 secondi mi sembravano davvero troppi e credevo potesse essere penalizzante al momento della valutazione.
In riposta a Federica Di Lauro

Re: Dubbi prima esercitazione robotica

di Domenico Giorgio Sorrenti -
Di Lauro, la sua consegna non determina il theta a partire dai valori della matrice "pose del robot al tempo t"... fa questo solo per le componenti di traslazione (ed anche in un modo che non mi è molto chiaro, ma questo è secondario).
In riposta a Domenico Giorgio Sorrenti

Ri: Re: Dubbi prima esercitazione robotica

di Federica Di Lauro -
Non sapevo che l'angolo andasse calcolato necessariamente dalla matrice finale.
Se può riaprire la consegna mando subito il file modificato per ottenere l'angolo a partire dai valori della matrice.