Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni

Guida Coppeliasim

Il documento descrive come costruire un sistema robotico virtuale da zero in Coppeliasim. Spiega come importare le geometrie CAD, creare i corpi e collegarli con giunti, programmare i movimenti e comunicare con dispositivi esterni tramite porta seriale.

Caricato da

Gianluigi Matto
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni

Guida Coppeliasim

Il documento descrive come costruire un sistema robotico virtuale da zero in Coppeliasim. Spiega come importare le geometrie CAD, creare i corpi e collegarli con giunti, programmare i movimenti e comunicare con dispositivi esterni tramite porta seriale.

Caricato da

Gianluigi Matto
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 4

GUIDA INTRODUTTIVA A COPPELIASIM (V-REP) PER LA COSTRUZIONE DI UN SISTEMA DA ZERO

INTRODUZIONE

Coppeliasim è un software per la simulazione di sistemi robotici. Si opera come in un simulatore


multibody di corpi rigidi. Si devono disporre le geometrie all’interno dell’ambiente virtuale, si
vincolano tra loro mediante giunti, si conferiscono caratteristiche di comportamento dinamico e di
interazione. Le geometrie possono essere realizzate al CAD e poi importate.

CREAZIONE GEOMETRIE ED IMPORTAZIONE

Disegnando con Fusion360 le geometrie si esportano facilmente con il formato *.stl. All’interno di
Fusion360 le parti che non hanno moto relativo potrebbero essere unite in un unico corpo. In quel
caso però all’interno di Coppeliasim si avrà un unico corpo con caratteristiche di visualizzazione
relative all’intero corpo. Se si vuole che le diverse parti, che comunque non hanno moti relativi,
risultino distinguibili le une dalle altre attraverso colori diversi e/o altre caratteristiche di
visualizzazione (per avere una simulazione più realistica), allora le diverse parti vanno lasciate
separate in Fusion360 e poi andranno unite all’interno dell’ambiente Coppeliasim. Le parti ance se
sono separate, a volte, richiedono di essere non combacianti ma leggermente distanti. A volte
succede ce l’algoritmo di traduzione STL unisce due corpi con superfici combacianti. In quel caso è
sufficiente distanziare un poco le parti (ad esempio di 0.1 mm).

Per importare il file delle geometrie *.stl si va al menù file/import/mesh, si punta al file di geometria
nel PC e si apre. Nell’importazione si può dover impostare un opportuno fattore di scala. La
geometria è importata come unica “Shape”. Si nota infatti un nuovo elemento nella “scene
hierarchy” denominato “Shape”. Questo è un buon momento per disporre la geometria importata
nella posizione ed orientamento desiderati.

Una volta nella giusta posizione la geometria può essere “divisa” nelle diverse parti che la
compongono. Si seleziona il corpo dall’albero e col tasto destro del mouse si seleziona
edit/(Grouping / Merging)/Divide selected shapes.

MODIFICA DELLE CARATTERISTICHE E AGGREGAZIONE DELLE GEOMETRIE

A questo punto si hanno tutti i corpi separati come lo erano all’interno di Fusion360. Questo è il
momento per differenziare i corpi per caratteristiche di visualizzazione.

Per conferire caratteristiche di visualizzazione, come ad esempio il colore, si seleziona il corpo da


trattare, sull’albero, con doppio clic del mouse e si apre la finestra “Scene Object Properties”. Qui,
nel tab “Shapes”, c’è la sezione “Visualization” all’interno della quale c’è il tasto “Color”. Cliccando
sul tasto “Color” si apre la finestra “Shape” all’interno della quale ci sono i comandi per impostare le
caratteristiche di visualizzazione.

Quando le geometrie sono pronte è possibile raggruppare i corpi che non devono avere moti relativi
a formare un unico blocco.
Questo si esegue selezionando i corpi che vanno raggruppati (dall’albero o dalla scena) e, col mouse
sulla selezione, si clicca il tasto destro che apre una finestra da cui si da il comando edit/(Grouping /
Merging)/Group selected shapes.

A questo punto si possono effettuare i collegamenti tra le varie parti tramite i giunti.

CREAZIONE DEI GIUNTI

Col mouse nell’albero, col tasto destro, si attiva una finestra da cui si può scegliere add/joint/ e si
può indicare prismatic, revolution, spherical. Si trova così l’icona del giunto e questa può essere
cliccata a trascinata col mouse fino alla posizione voluta nella gerarchia dell’albero dovendosi
intendere che il giunto collega il padre, parte al di sopra del giunto, al figlio, parte al di sotto del
figlio. Le parti anche esse possono essere spostate nelle gerarchia col mouse con “clicca e trascina”
nella posizione voluta.

Il giunto quando viene creato, nell’ambiente virtuale, viene posizionato in una posizione e con
orientamento standard. Per spostare ed orientare correttamente il giunto questo va selezionato e

spostato/ruotato mediante i tasti dei comandi sposta e ruota . Con questi comandi si apre
una finestra che permette di muovere l’oggetto trascinandolo col mouse oppure mediante
inserimento delle coordinate. Cliccando due volte sul giunto dall’albero gerarchico è possibile
cambiarne le sue caratteristiche. Si apre una finestra e nel tab “joint” si possono cambiare le
dimensioni dell’oggetto che rappresenta il giunto e premendo il tasto “dynamic properties dialog” è
possibile impostare le caratteristiche del controllo del giunto (posizione, velocità forza, molla,..).

Se il sistema è con base fissa, al corpo che è base fissa si assegna il nome “base” e si posiziona come
figlio del corpo “box” che è presente alla creazione di un nuovo documento.

Le caratteristiche dei corpi possono essere impostate cliccando due volte col mouse sul corpo
nell’albero. Si apre la finestra “Scene Object Properties”. Qui, nel tab “Shapes”, cliccando su
“dynamic properties dialog” è possibile impostare “Body dynamic” a cui si applica il segno di spunta.
Si attivano alcune regolazioni come ad esempio la massa. Il segno di spunta di cui sopra va applicato
a tutti i corpi tranne che al corpo base.

MOVIMENTAZIONE DEL MODELLO

Nel momento in cui il modello è pronto si può provare a muovere i giunti. Questi vanno caratterizzati
per il comportamento. Possono essere assegnate caratterisrice come: free, spring, position, velocity,
torque. Ognuno di questi stati va caratterizzato con parametri e cui sono comunque assegnati valori
di default. Ad esempio un giunto può essere impostato come velocity e assegnando il alore al
parametro velocity, all’avvio della simulazione il giunto prenderà a muoversi con la velocità
assegnata. Allo stesso modo ruoterà dell’angolo impostato se il giunto sarà caratterizzato come
position.

Per la programmazione va aggiunto uno script al progetto. Lo script può essere aggiunto a
qualunque dei corpi presenti nell’albero e questo riguarderà comunque tutti gli oggetti presenti
nell’albero. Una possibilità è di aggiungere uno script al corpo “base”.
SCRIPT

Per aggiungere lo script si clicca col destro del mouse sul corpo “base” e si da il comando
add/associated child script/Non threaded/Lua. Lua è un linguaggio di programmazione molto facile
da apprendere. Il comando genera una icona a fianco del corpo “base”.

All’interno dello script (cliccandoci due volte si visualizza lo script) ci sono quattro funzioni. Le due
più importanti sono le prime due. La prima svolge compiti di inizializzazione. La seconda è per il
controllo e contiene comandi che vengono eseguiti ciclicamente, di continuo.

Con il software nello script si può agire sui giunti. I comandi si trovano in help/User manual/writing
code/CoppeliaSim API Framework/Regular API reference/.

I comandi sono raggruppati per funzioni. Ad esempio c’è il gruppo Dynamics all’interno del quale
troviamo i comandi per gestire i giunti come sim.setJointTargetPosition o
sim.setJointTargetVelocity (per l’utilizzo si veda sul manuale). Questi permettono di
assegnare una posizione o una velocità al giunto in indirizzo. I valori possono essere cambiati anche
molto rapidamente da un valore all’altro, ad esempio, attraverso una procedura software che ne
generi i valori. Se si assegnano Posizioni il giunto deve essere preventivamente caratterizzato come
Position dall’ambiente CoppeliaSim. Lo stesso per velocità e per gli altri tipi di comportamento.

COMANDI DALL’ESTERNO DA MICROCONTROLLER

E’ interessante la possibilità di poter inviare dall’esterno, all’interno di Coppeliasim, dati derivanti da


periferiche per pilotare gli oggetti all’interno dell’ambente virtuale.

Una possibilità è quella di utilizzare un microcontroller che riceva i dati dalla periferica e che li invii
tramite porta seriale a Coppeliasim. Per fare questo, dal lato controller va predisposto un software in
grado di gestire la periferica ovvero controllarla per acquisire i dati e inviarli via collegamento seriale.
Dall’altro, all’interno di Coppeliasim, è necessario predisporre il codice in grado di leggere i dati da
una porta seriale, in tempo reale, e utilizzarli all’interno della simulazione.

Ad esempio con Arduino UNO per la trasmissione seriale è possibile utilizzare il codice seguente che
funziona sia col monitor seriale dell’IDE che per ogni altro software in ascolto sulla porta indicata.

Questo codice predispone la comunicazione seriale a 9600 baud e compie un ciclo for che fa
aumentare il valore della variabile i progressivamente, inviando il valore attuale alla porta seriale.
Tra un invio e il successivo c’è una attesa di 50 ms. La porta alla quale invia è la porta a cui è
collegato il microcontroller.

Dal lato Coppeliasim il codice in grado di acquisire i dati prodotti secondo il processo di cui sopra è il
seguente.

Potrebbero piacerti anche