Corso di Robotica: 2 Fondamenti di Meccanica e Attuazione
2 – Fondamenti di Meccanica e Attuazione
🎯 Obiettivi (misurabili)
Al termine del modulo lo studente sarà in grado di:
- Descrivere i concetti di cinematica (grado di libertà – DoF), tipi di giunto, effettore.
- Calcolare posizione e traiettoria su un semplice braccio planare (forward e inverse kinematics).
- Scegliere un attuatore adeguato (DC, BLDC, stepper, servo, attuatore lineare) in funzione di coppia, velocità e potenza richieste.
- Scegliere trasmissioni (ingranaggi, riduttori, cinghie, vite a ricircolo) valutandone vantaggi/svantaggi.
- Assemblare e cablare un robot su ruote con controllo base dei motori.
- Eseguire esperimenti di base con servo: controllo angolare, misura risposta, valutazione sovraccarico.
📚 Contenuti teorici approfonditi
1) Concetti base di cinematica
- Grado di libertà (DoF): numero di coordinate indipendenti necessarie per definire la configurazione. Esempio: robot su ruote differenziali (3 DoF: x, y, θ); braccio con 3 giunti rotazionali → 3 DoF.
- Tipi di giunti:
- Revolute (R): rotazione attorno ad asse (angolo θ).
- Prismatic (P): traslazione lineare (d).
- Screw, spherical, ecc.
- Effettore terminale (end-effector): pinza, ventosa, utensile; definisce il compito.
- Trasformazioni omogenee: concatenano rotazioni e traslazioni in matrici 4×4.
Esempio pratico: arm planare 2-link (forward kinematics)
Link: l₁ = 0.2 m, l₂ = 0.25 m
Angoli: θ₁ = 40°, θ₂ = 50°
Coordinate end-effector (x,y):
x = l₁·cosθ₁ + l₂·cos(θ₁+θ₂) y = l₁·sinθ₁ + l₂·sin(θ₁+θ₂)
Calcolo passo-passo:
- cos40° = 0.766, sin40° = 0.643
- θ₁+θ₂ = 90° → cos90° = 0, sin90° = 1
- x = 0.2·0.766 + 0.25·0 ≈ 0.1532 m
- y = 0.2·0.643 + 0.25·1 ≈ 0.3786 m
→ End-effector: (0.153 m, 0.379 m)
Inverse kinematics (2-link planare)
Per trovare θ₂ si usa:
cosθ₂ = (x² + y² - l₁² - l₂²) / (2·l₁·l₂)
e poi θ₁ da trigonometria inversa.
2) Dinamica e coppia
- Coppia (torque): τ = F·d (N·m).
- Forza peso: F = m·g (g = 9.81 m/s²).
- Coppia richiesta: τ = m·g·l.
Esempio: payload 0.5 kg a 0.2 m
- F = 0.5·9.81 = 4.905 N
- τ = 4.905·0.2 ≈ 0.981 N·m
Con riduttore G=50:1 e η=0.85:
τ_motore = τ_uscita / (G·η) = 0.981 / (50·0.85) ≈ 0.023 N·m
3) Tipi di attuatori
- DC brushed: semplici, economici; ma usura spazzole.
- BLDC: efficienti, potenti, richiedono ESC.
- Stepper: precisi a bassa velocità, ma rischio perdita passi.
- Servo: controllo angolare integrato (0–180°).
- Attuatori lineari: viti, pistoni pneumatici/idraulici.
4) Trasmissioni meccaniche
- Ingranaggi: compatti, ma gioco (backlash).
- Cinghie: elastiche, silenziose.
- Viti a ricircolo: alta precisione.
- Planetari: rapporto elevato in poco spazio.
5) Robot su ruote – Cinematica differenziale
v = (vR + vL)/2 ω = (vR - vL)/b
Esempio: ruota r=0.03 m, RPM=300
- ω = 2π·300/60 = 31.416 rad/s
- v = ω·r = 31.416·0.03 ≈ 0.942 m/s
6) Cingoli vs ruote
- Ruote: semplici, efficienti, terreno regolare.
- Cingoli: più trazione, terreno irregolare, ma manutenzione maggiore.
7) Sensori e feedback
- Encoder (incrementali, assoluti)
- IMU (accelerometro + giroscopio)
- Sensori corrente, load cell
- Lidar / ToF / Ultrasuoni
8) Controllo (introduzione)
u(t) = Kp·e(t) + Ki∫e(t)dt + Kd·de(t)/dt
🧪 Attività pratiche
A — Montaggio robot su ruote
Obiettivo: assemblare robot differenziale base.
- Telaio kit
- 2 motori DC + driver TB6612
- Arduino Uno/Nano
- Batteria Li-ion
- Cablaggi, interruttore
Codice Arduino base:
const int AIN1 = 2;const int AIN2 = 3;const int PWMA = 5;void setup(){ pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT);}void avanti(int pwmVal){ digitalWrite(AIN1,HIGH); digitalWrite(AIN2,LOW); analogWrite(PWMA,pwmVal);}void loop(){ avanti(200); delay(2000);}
B — Esperimenti con servo
#include <Servo.h>Servo myservo;void setup(){ myservo.attach(9); }void loop(){ for(int pos=0; pos<=180; pos+=1){ myservo.write(pos); delay(10); } for(int pos=180; pos>=0; pos-=1){ myservo.write(pos); delay(10); }}
✅ Valutazione
- Robot funzionante (0–4)
- Cablaggio e sicurezza (0–4)
- Report tecnico (0–4)
- Demo servo (0–4)
📐 Appendix — Formule rapide
- F = m·g
- τ = F·l
- v = ω·r
- ω = 2π·RPM/60
- τ_motore = τ_uscita / (G·η)
- PID: u = Kp·e + Ki∫e dt + Kd·de/dt
📦 Lista componenti consigliata
- Arduino Uno/Nano o ESP32
- 2 motori DC con gearboxes
- Driver TB6612
- 1 servo SG90 + 1 servo MG996R
- Batteria Li-ion 7.4–11.1 V
- Telaio, viti, cavi, multimetro

Commenti
Posta un commento