Simulatore interattivoAvanzato

Simulatore di braccio robotico: cinematica e ROS

Esplora limiti dei giunti, cinematica diretta e inversa e pianificazione sicura del movimento in un'anteprima del simulatore di braccio robotico nel browser.

Categoria
ROS
Tempo
3–6 ore
Piattaforma
Browser · ROS 2
Schema tecnico: Simulatore di braccio robotico: cinematica e ROSREACHABLE WORKSPACE

01 / Inizia qui

Introduzione

I bracci robotici trasformano i comandi dei giunti in un movimento preciso dell'utensile mediante geometria, retroazione e pianificazione. Questo simulatore introduce quella catena senza nascondere le parti difficili. Espone sistemi di riferimento, pose raggiungibili, limiti dei giunti e singolarità, così chi usa ROS e chi studia la robotica può capire perché un movimento richiesto riesce o fallisce.

Live lab / Forward & inverse kinematics · pick-and-place

Robot arm simulator

Pose the joints, drag a target and watch inverse kinematics solve it live, or set a pick-and-place task and run it — with honest reach, singularity, and limit reporting on a full 360° workspace.

Browser native
A planar robot arm kinematics simulator. Use the controls below to move the joints, drag a target, or run a pick-and-place task, or read the full theory and algorithm after this lab.

The filled dot is the base at the centre; segments are links with round joints; the tool shows a small x/y frame. The shaded ring is the reachable workspace (between the two dashed circles). In inverse mode the cross-marker is the draggable target and the faint arm is the other elbow solution. In pick-and-place mode, drag the box (pick) and the dashed square (place), then press Run.

Run

Forward mode. Drag the joint sliders to pose the arm.

Joints
Geometry & target
Tool X
0 px
Tool Y
0 px
Tool angle
0°
Status
Reachable
Reach
0 / 240 px

Keyboard: focus the workspace, then use Space to run a pick-and-place, R to reset, B to switch elbow, and F for full screen.

Controlli

Il simulatore fornisce cursori per i giunti, un bersaglio utensile trascinabile, sovrapposizioni di sistemi di riferimento e controlli delle dimensioni dei link, con la base centrata in modo che l’intero spazio di lavoro raggiungibile a 360° sia visibile. La modalità diretta calcola la posizione dell’utensile dagli angoli dei giunti impostati. La modalità inversa segue un bersaglio che trascini: risolve gli angoli dei giunti in tempo reale e segnala bersagli irraggiungibili o ambigui invece di spostarsi silenziosamente su un risultato. Una terza modalità di prelievo e posizionamento ti permette di posizionare un punto di raccolta e una destinazione, poi esegue l’intero compito: il braccio si muove verso l’oggetto, lo afferra, lo trasporta e lo rilascia nell’area di rilascio, il lavoro canonico per cui è costruito ogni manipolatore reale.

Teoria

Ogni giunto contribuisce con una trasformazione tra sistemi di riferimento. Moltiplicando queste trasformazioni dalla base all’utensile si ottiene la posizione cinematica diretta. La cinematica inversa lavora al contrario e può non avere soluzioni, averne una o averne diverse.

Spazio di lavoro raggiungibile di un braccio piano a due link. Un anello ombreggiato tra cerchi tratteggiati interno ed esterno mostra ogni punto che l'utensile può raggiungere. Un singolo bersaglio dentro l'anello è raggiunto da due configurazioni del braccio: una soluzione con gomito in alto e una con gomito in basso, disegnate dalla stessa base.
Un bersaglio dentro l'anello raggiungibile ha di solito due soluzioni, con gomito in alto e con gomito in basso, mentre i punti fuori dal raggio esterno o dentro quello interno non ne hanno. Scarica SVG

Vicino a una singolarità un piccolo movimento dell’utensile può richiedere un movimento enorme dei giunti. Un pianificatore deve inoltre rispettare i limiti di posizione, velocità, accelerazione, coppia e collisione. La sola raggiungibilità geometrica non rende sicura una traiettoria.

Algoritmo

  1. Definisci lunghezze dei link, assi dei giunti, trasformazioni iniziali e limiti dei giunti.
  2. Calcola la cinematica diretta per lo stato corrente dei giunti.
  3. Confronta la posizione corrente dell’utensile con il bersaglio richiesto.
  4. Usa un risolutore analitico o numerico per ridurre l’errore di posizione entro i limiti.
  5. Scarta i candidati in collisione o singolari e seleziona una soluzione continua.
  6. Parametrizza il percorso nel tempo e invia valori di riferimento sincronizzati ai controllori dei giunti.

Codice sorgente

Un braccio piano a due link ha un modello diretto compatto:

from math import cos, sin

def forward_kinematics(theta_1, theta_2, link_1, link_2):
    elbow = (link_1 * cos(theta_1), link_1 * sin(theta_1))
    tool = (
        elbow[0] + link_2 * cos(theta_1 + theta_2),
        elbow[1] + link_2 * sin(theta_1 + theta_2),
    )
    return elbow, tool

Per i bracci fisici, valida ogni traiettoria pianificata in un ambiente limitato e sensibile alle collisioni prima di abilitare l’alimentazione degli attuatori.

Ipotesi e differenze hardware

Il braccio è piano, con due o tre giunti rotativi, link perfettamente rigidi, risposta di velocità istantanea e nessuna gravità, dinamica o collisione: puoi passare da gomito in alto a gomito in basso senza limite di coppia. I servomotori reali hanno limiti di posizione e velocità, gioco di inversione del riduttore, coppia limitata dalla corrente e cedimento dipendente dal carico; inoltre un braccio a 6 assi deve gestire anche orientamento, singolarità e lavoro vicino ai limiti dei giunti. Questo laboratorio ti fa capire perché un bersaglio dentro l’anello può avere due soluzioni e perché un bersaglio sul bordo è singolare, prima di aggiungere le dinamiche che rendono difficili da mantenere quelle pose.

Schema elettrico

Separa l’alimentazione degli attuatori ad alta corrente da quella di calcolo, mantenendo i segnali di riferimento e sicurezza richiesti dall’hardware selezionato.

Diagramma a blocchi dell'architettura di controllo di un braccio robotico. Un pianificatore o stack ROS 2 invia i bersagli dei giunti a un controllore, che comanda servomotori intelligenti su un bus. La retroazione della posizione dei giunti torna dai servomotori al controllore e un arresto di emergenza toglie l'alimentazione ai servomotori indipendentemente dal percorso del software.
Il controllore chiude un ciclo con la retroazione dei giunti, mentre l'arresto di emergenza toglie l'alimentazione degli attuatori su un percorso proprio, indipendente dal software. Scarica SVG

Esperimenti guidati

Trascinare un bersaglio è il modo più rapido per costruire l’intuizione su cose noiose da dimostrare su carta e costose da scoprire sull’hardware.

1. Trova la forma dello spazio di lavoro

Trascina lentamente il bersaglio verso l’esterno finché il risolutore non lo segnala irraggiungibile, poi segui quel bordo per tutto il giro. Ora trascinalo verso l’interno, in direzione della base.

Con lunghezze dei link diverse troverai due bordi: un cerchio esterno a L1 + L2 e uno interno a |L1 − L2|. Lo spazio di lavoro è un anello, non un disco, e al centro c’è un buco che il braccio non può raggiungere fisicamente.

Link Portata esterna Buco interno Forma
100 + 90 190 10 Anello con un piccolo buco
100 + 50 150 50 Anello con un grande buco
100 + 100 200 0 Un disco pieno: link uguali possono ripiegarsi su sé stessi

L’ultima riga è un fatto di progettazione davvero utile: lunghezze uguali dei link eliminano completamente la zona morta. Se il tuo braccio deve lavorare vicino alla propria base, è questo il motivo per sceglierle.

2. Osserva le due soluzioni fondersi

Alterna tra i rami con gomito in alto e gomito in basso su un bersaglio vicino al centro dello spazio di lavoro: due pose del braccio chiaramente diverse che raggiungono lo stesso punto.

Ora trascina quel bersaglio verso l’esterno, in direzione del bordo. Le due pose convergono e, con l’estensione completa, diventano la stessa posizione. Questa è una singolarità, il punto in cui il braccio perde la possibilità di muovere l’utensile in una direzione, qualunque cosa facciano i giunti.

3. Senti quanto costa una singolarità

Trascina il bersaglio lungo una retta che passa vicino all’estensione completa, lentamente e con costanza. Osserva gli angoli dei giunti, non il braccio.

L’utensile si muove a velocità costante; i giunti no. Vicino al bordo un piccolo movimento dell’utensile richiede un movimento enorme dei giunti, quindi un percorso cartesiano fluido diventa un movimento brusco dei giunti. Sull’hardware questo è un servomotore che si porta al limite.

Mantieni i percorsi pianificati entro circa il 95% della portata massima e il problema scompare.

4. Attraversa il bordo di un ramo e osserva il salto

Imposta il risolutore perché scelga sempre il gomito in alto, poi trascina il bersaglio attraverso una regione in cui quel ramo incontra un limite del giunto e il risolutore cambia ramo. Il braccio compie un movimento ampio, rapido e completamente non pianificato.

Ecco perché il valore predefinito corretto è il movimento minimo: scegli il ramo più vicino alla posizione corrente, invece di scegliere sempre un ramo fisso. Un cambio di ramo silenzioso a metà percorso sull’hardware reale è allarmante e può essere distruttivo.

Cosa devi osservare

Azione Risultato previsto Se vedi qualcos’altro
Bersaglio oltre L1 + L2 Un chiaro «irraggiungibile» Un NaN o uno scatto nella posizione significa che il risolutore verifica la raggiungibilità troppo tardi
Bersaglio dentro |L1 − L2| Anch’esso irraggiungibile Corretto: è il buco, non un bug
Bersaglio dietro la base Raggiunto correttamente Se viene riflesso, stai usando atan invece di atan2
Alterna il ramo del gomito Stessa posizione dell’utensile, giunti diversi Entrambe sono valide; la scelta è tua
Trascina verso il bordo Le velocità dei giunti aumentano bruscamente Questa è la singolarità
Percorso di andata e ritorno con FK e poi IK Gli angoli originali tornano indietro Una discrepanza indica una convenzione di segno o offset incoerente

Passaggio all’hardware

La geometria si trasferisce esattamente. Nient’altro, e il divario è dove il primo braccio costruito passa il tempo:

Questo laboratorio Un vero braccio con servomotori
I giunti vanno esattamente dove comandi Il punto zero del servomotore è dove è stata montata la leva; alcuni ruotano nel verso opposto
Nessuna gravità La spalla cede quando il braccio è esteso, peggio proprio dove serve più precisione
Nessun gioco di inversione Diversi gradi di gioco, accumulati a ogni inversione
Movimento istantaneo Un comando a gradino avviene alla velocità massima, con un picco di corrente
Lunghezze dei link perfette Misura tra gli assi dei giunti, non tra i bordi delle staffe
Coppia infinita Un SG90 al 58% della coppia di stallo non mantiene la posizione con precisione

Due numeri rendono il punto. Quattro gradi di gioco alla spalla su una portata di 190 mm corrispondono a più di 13 mm alla pinza: un errore maggiore di qualsiasi errore introdotto dalla matematica. E una lunghezza di link misurata 10 mm più lunga su un link di 95 mm è un errore sistematico del 10% che nessuna regolazione rimuoverà.

La conseguenza pratica è che la precisione sull’hardware deriva da calibrazione e direzione di avvicinamento coerente, non da una cinematica migliore. Avvicinati sempre a un bersaglio dalla stessa direzione: il gioco di inversione diventa uno scostamento riproducibile che puoi sottrarre. Il risolutore completo, con tutti i casi di errore gestiti, è in cinematica inversa per un braccio a due link.

Checklist hardware

Componenti

  • Braccio robotico a tre o più assi
  • Controllore in grado di aggiornare i giunti in modo sincronizzato
  • Retroazione dei giunti o servomotori intelligenti
  • Base rigida e punto centrale dell'utensile definito
  • Arresto di emergenza e alimentazione con limitazione di corrente

Esplora il grafo

Dove si usa questo simulatore

I progetti, i percorsi di apprendimento e i tutorial che si basano su questo laboratorio.

Continua a costruire

Scarica le risorse

Usa questi riferimenti nella pagina mentre lavori al progetto. I pacchetti di progetto scaricabili verranno aggiunti solo dopo la pubblicazione del loro codice sorgente e della loro versione.

Domande comuni

Domande frequenti

Qual è la differenza tra cinematica diretta e cinematica inversa?

La cinematica diretta calcola la posizione dell'utensile a partire dai valori noti dei giunti. La cinematica inversa parte da una posizione desiderata dell'utensile e cerca una o più configurazioni dei giunti che possano produrla.

Perché un braccio a 2 link ha due soluzioni, gomito in alto e gomito in basso?

Per la maggior parte degli obiettivi raggiungibili il gomito può piegarsi in entrambe le direzioni e comunque posizionare l'utensile nello stesso punto, dando una configurazione con gomito in alto e una con gomito in basso. Le due soluzioni derivano dal più o meno nel teorema del coseno per il secondo giunto. Coincidono solo in una singolarità, quando il braccio è completamente esteso o completamente piegato.

Come scelgo tra gomito in alto e gomito in basso?

Scegli la configurazione più sicura ed efficiente per il compito: quella che mantiene i giunti lontani dai loro limiti, riduce il movimento dalla posizione attuale o evita gli ostacoli. Questo simulatore ti permette di alternare i rami e mostra la soluzione alternativa come una posizione fantasma, così il compromesso è visibile.

Che cos'è una singolarità in un braccio robotico?

Una singolarità è una configurazione in cui il braccio perde la possibilità di muovere l'utensile in una direzione, in genere quando è completamente esteso o completamente piegato. Vicino a una singolarità un piccolo movimento dell'utensile può richiedere un movimento enorme dei giunti, quindi i pianificatori rallentano o aggirano queste pose. È anche il punto in cui le soluzioni con gomito in alto e in basso si fondono in una sola.

Quando la cinematica inversa non ha soluzioni?

Un bersaglio piano di un braccio a due link è raggiungibile solo all'interno dell'anello compreso tra la portata minima, data dalla differenza delle lunghezze dei link, e quella massima, data dalla loro somma. Un punto esterno a quell'anello non è raggiungibile con alcun angolo dei giunti. Una posizione può essere irraggiungibile anche perché richiede un angolo di giunto vietato, un orientamento che i giunti disponibili non possono ottenere o una configurazione che colliderebbe con il braccio stesso.

Perché usare la cinematica inversa analitica invece di un risolutore numerico?

Per un braccio piano a due o tre link la geometria ha una soluzione in forma chiusa, analitica, quindi puoi calcolare direttamente gli angoli esatti dei giunti in modo deterministico e rapido: ideale per insegnare e testare. I risolutori numerici servono per bracci ridondanti o spaziali in cui non esiste una forma chiusa, ma iterano, possono perdere soluzioni e sono più difficili da analizzare.

Per approfondire

Fonti

Fonti autorevoli per andare oltre il modello didattico, volutamente limitato, di questo simulatore.