Schema della sezione

  • Esercitazione su convenzioni di Denavit e Hartemberg

    • Il .m da sviluppare dovrà chiedere all'utente di definire le dimensioni di un parallelepipedo "basamento". Si suggerisce di usare dimensioni molto estese sui 2 assi x (larghezza) ed y (lunghezza) ed una dimensione ridotta sulla z (altezza), cosicché questo parallelepipedo costituisca anche visivamente il basamento su cui viene costruito il resto del sistema. Lasciate il sistema di riferimento sullo spigolo del parallelepipedo come avviene di default con matlab (ovvero mettete tutta la larghezza, lunghezza ed altezza sui semiassi positivi). Successivamente il programma dovrà effettuare il disegno del basamento e del sistema di riferimento OXYZ0.

      Dovrà quindi essere chiesta all'utente una traslazione ed un orientamento (con RPY, angoli in degs) tra il sistema OXYZb ed il sistema di riferimento OXYZ0, quello attorno il cui (o lungo il cui) asse z ha luogo il movimento prodotto dal giunto 1 (la vita, per un braccio antropomorfo). Successivamente dovrà essere disegnato anche il sistema di riferimento OXYZ0. Questa interazione con l'utente seguita da disegno dovrà essere replicata finché l'utente non risulti soddisfatto delle sue scelte (ad ogni ripetizione del ciclo interazione - disegno si dovrà cancellare il disegno precedente).

      A questo punto il programma dovrà chiedere all'utente di definire un secondo parallelepipedo, che costituirà il "link0" (il torso, per un antropomorfo). Questo parallelepipedo verrà definito nel sistema di riferimento OXYZ0 come segue: all'utente verrà chiesta x (larghezza), y (lunghezza) e z (altezza); l'origine del sistema di riferimento del link0 sarà nel centro della faccia inferiore della base del parallelepipedo (larghezza - lunghezza); in altre parole metà larghezza sarà nel semiasse positivo e metà nel negativo e lo stesso accadrà per la lunghezza, mentre la altezza sarà tutta nel semiasse positivo delle z. Tutto il parallelepipedo (link0) sarà poi traslato rispetto al sistema OXYZ0 chiedendo all'utente le quantità di traslazione su x0, y0 e z0, che devono poter anche essere negative. Il link0, essendo solidale con OXYZ0, dovrà successivamente essere movimentato quando si muoverà il giunto 1. La variabile di giunto sarà di default "theta1" e non "d1", ma andrà chiesta conferma all'utente. Successivamente dovrà essere effettuato il disegno dei 2 parallelepipedi (basamento e link0) nelle loro pose. Questa interazione con l'utente seguita da disegno per il link0 dovrà essere replicata finché l'utente non risulti soddisfatto delle sue scelte (ad ogni ripetizione del ciclo interazione - disegno si dovrà cancellare il disegno precedente). Non è importante che il link0 sia coerente con le dimensioni del basamento, se anche si compenetrassero o restassero spaziati sarebbero problemi dell'utente.

      A questo punto si chiederà all'utente se vuole muovere il giunto 1 e, se l'angolo richiesto dall'utente è diverso da 0, si effettuerà il disegno del basamento con link0 nella nuova pose. Quando l'utente richiederà un angolo nullo si procederà con le parti successive del programma.

      Il programma dovrà a questo punto chiedere all'utente di definire i parametri della pose 3D di un sistema di riferimento OXYZ1 rispetto al sistema OXYZ0 mediante i 4 parametri delle convenzioni DH (angoli in degs, please). Il sistema di riferimento OXYZ1 è quello attorno il cui (o lungo il cui) asse z ha luogo il movimento prodotto dal giunto 2 (la spalla, per un braccio antropomorfo). Successivamente dovrà essere disegnato anche il sistema di riferimento OXYZ1. Questa interazione con l'utente seguita da disegno dovrà essere replicata finché l'utente non risulti soddisfatto delle sue scelte (ad ogni ripetizione del ciclo interazione - disegno si dovrà cancellare il disegno precedente).

      A questo punto il programma dovrà chiedere all'utente di definire un terzo parallelepipedo, che costituirà il "link1" (il braccio, per un antropomorfo). Questo parallelepipedo verrà definito nel sistema di riferimento OXYZ1 come segue: all'utente verrà chiesta x (larghezza), y (lunghezza) e z (altezza); l'origine del sistema di riferimento del link1 sarà nel centro della faccia inferiore della base del parallelepipedo (larghezza - lunghezza); in altre parole metà larghezza sarà nel semiasse positivo e metà nel negativo e lo stesso accadrà per la lunghezza, mentre la altezza sarà tutta nel semiasse positivo delle z. Tutto il parallelepipedo (link1) sarà poi traslato rispetto al sistema OXYZ1 chiedendo all'utente le quantità di traslazione su x1, y1 e z1, che devono poter essere negative. Il link1, essendo solidale con OXYZ1, dovrà successivamente essere movimentato quando si muove il giunto 2. La variabile di giunto sarà di default "theta2"e non "d2", ma andrà chiesta conferma all'utente. Successivamente dovrà essere effettuato il disegno dei 3 parallelepipedi (basamento, link0 e link1) nelle loro pose. Questa interazione con l'utente seguita da disegno per il link1 dovrà essere replicata finché l'utente non risulti soddisfatto delle sue scelte (ad ogni ripetizione del ciclo interazione - disegno si dovrà cancellare il disegno precedente). Non è importante che il link1 sia coerente con le dimensioni del link0 e/o del basamento, se anche si compenetrassero o restassero spaziati sarebbero problemi dell'utente.

      A questo punto si chiederà all'utente se vuole muovere il giunto 1 e/o il giunto 2 e, se gli angoli richiesti dall'utente non fossero entrambi 0, si effettuerà il disegno del basamento con link0 e link1 nelle nuove pose. Quando l'utente richiederà angoli nulli si terminerà il programma.

      La deadline di consegna è impostata a Lunedì 17.05.2021 alle 23:59.