|
Buzdugan I.D.,
Mogan Gh.L. Proiectarea roboților. Universitatea Transilvania din Braşov |
||||||||||||||||||||||||
|
Ghid.Sim Elaborarea modelului SimMechanics (acest ghid a fost eleborat de studenții: Ilie Indreica, Alican Andrei-Octavian, Condrea Laurentiu-Daniel, Răzvan
Ionuț Gavrilă – RO, promoția 2025; Mihai
Alexandru Tase, promoția 2026) |
||||||||||||||||||||||||
|
Schema
bloc Simulink Exemple RT:
TR:
Animație T-R (fără elemente de legatură):
Obs. Pentru analiza dinamică se
impune ca modelul să conțină și obiectul (corpul) de manipulat și
prehensorul (griperul) Analiza dinamică cu Matlab Instalare MATLAB [pachetul Matlab se poate descarca de pe site-ul MATLAB], ® ¿ Instalare Simulink (cu toate sub-categoriile: Simulink
Real-Time, Simulink Desktop Real-Time, Simulink Report Generator, Simulink
Coder, Simulink PLC Coder, Simulink Code Inspector, Simulink Compiler,
Simulink Check, Simulink Coverage, Simulink Design Verifier, Simulink Fault
Analyzer, Simulink Test) La întâlnirea acestei fereastre: ¿ Lsansarea
aplicației MATLAB [după ce se
lansează Matlab în fereastra SIMULINK, ¿ [se
salvează aplicația
¿ Exemplu:
Generare schema bloc Simulink Descriere Block-uri
de bază Pentru
un braț robotic sunt necesare 3 block-uri de bază: -World Frame-,
-Mechanism Configuration-, -Solver-.
Block-ul World Frame
reprezintă sistemul (cadrul) de referință inerțial global (axele
sunt ortogonale și respectă regula mâinii drepte) care este în repaus
absolut. Toate celelalte cadre dintr-o rețea sunt definite direct sau
indirect în raport cu acest cadru. Block-ul Mechanism
Configuration definește gravitația și parametrii de
simulare ai mecanismului conectat. Parametrii de simulare includ valoarea de
perturbație pentru calcularea derivatelor parțiale numerice în
timpul liniarizării și numărul de iterații pentru tranzițiile
modurilor articulațiilor. Dacă un model nu conține acest bloc,
gravitația uniformă aplicată mecanismului este zero. Block-ul Solver
Configuration definește parametrii solverului necesari modelului
pentru a începe simularea. (Fig. 3.1.3) Block-ul Simscape
dintr-o rețea fizică este reprezentat de o diagramă în care se introduc
informații despre setările solverului pentru simulare. Generarea block-urilor de bază [în
fereastra SIMULATION (v. mai jos) se operează următoarele acțiuni:]
Se procedează la fel și
pentru celelalte 2 block-uri. Conectarea blocurilor [se activează cu ¿ portul
de iesire
Generare bloc File Solid [se selectează cu ¿ un
punct oriunde pe
spațiul de lucru și se tastează ”FileSolid”, apoi se
selectează opțiunea disponibilă, implicit block-ul File Solid] ® [după inserarea pictogramei
acestuia în fereastra SIMULATION, se
poziționează cursorul peste block, ¿
[se activează ¿¿ (dublu click) pictograma
Pentru
fiecare CATPart se generază un bloc File Solid (se repetă operațiile
de mai sus pentru fiecare Part). Obs. -
Conectarea port-urilor se face astfel încât
portul corespunzător Frame-ului ales să se conecteze cu portul de la
următorul File Solid ce coincide Frame-ului unde se dorește
conectată piesa. -
În cazul în care masa corpului nu corespunde cu cea
din CATIA, în meniul File Solid : ¿
Identificarea
valorilor parametrilor inerțiali în Simulink Se inserează în fereastră Simulink următorele
block-uri: a.
Generarea Block-ului
Inertia Sensor Cu ajutorul block-ului Inertia Sensor se va determina valoarea Momentul de Inerție al unui obiect (de ex. Prehensorul, P) relativ la axa de rotație a unei cuple:
Configurația
block-ului Inertia
Sensor: · Sensor extent – modul în care block-ul Inertia
Sensor va lua în calcul celelalte elemente; din Body Group se folosi Weld
Joint; · Measurement Frame – se va selecta opțiunea Custom pentru a putea specifica axa după care se face măsuratoarea; · Mass – indică masa; · Center of Mass – arată coordonatele centrului de masă în sistemul de coordonate local; · Inertia Matrix – arată matricea completă a momentelor inerțiale (MOI); · Centered Inertia Matrix – arată matricea momentelor inerțiale calculată în centrul de masă; · Principal Inertia Matrix – arată diagonala principală a matricei momentelor inerțiale; · Rotation Matrix – arată orientarea în spațiu a obiectului;
b.
Block-ul Weld Joint Block-ul Inertia Sensor ia în calcul orice element care face parte dintr-un lanț de tip Rigid Transformations sau File Solids. Cu ajutorul Block-ul Weld Joint se vor izola entități geometrice (de ex. cilindrul cuplei/prisma cuplei și obiectul (P)).
c.
Block-urile Display și
PS-Simulink Converter Block-urile Display și PS-Simulink
Converter vor fi folosite pentru a vizualiza matricea momentelor de inerție
prin conversia unui semnal fizic intr-un output de tip semnal Simulink care
va fi plasat la output-urile Mass și Inertia Matrix, după
care va urma block-ul Display pentru vizualizare valori.
Atfel, rezultă ansamblu măsurare inerție:
Output-ul M al block-ului Inertia Sensor va fi conectat la frame-ul de referință, adică punctului din centrul cilindrului/prismei. Output-ul S va fi conectat la frame-ul obiectului (P). Mai jos se observă că elementele Gripper și Prisma_rotatie au fost izolate de restul elementelor prin intermediul Weld Joint.
d.
Rularea animației
Simulink Dupa adăugarea ansamblului Inertia
Sensor în urma rulării animației, se vor vizualiza Matricea de
Inertie și Masa. Valorile acestora trebuie să fie egale cu cele din
CATIA, fereastra Measure Inertia.
Tool-ul Measure Inertia din CATIA, varianta Manipularea corpurilor După
poziționare block-urilor de bază și a primelor block-uri File
Solid, se observă că modelele CATIA nu se poziționează conform
asamblării din CATIA și pentru corectare se pot parcurge următorii doi
pași: -
potrivirea Frame-urilor (planele selectate se
așeză în modul dorit) ; -
utilizarea block-ului Rigid Transform. Potrivirea frame-urilor [se
activează cu ¿ blocul File Solid] ® [se
selectează cu ¿ grupa
[după selectarea cu ¿ a pozitiei, în partea stânga sus, în
cadrul meniului -
Aceasta fiind prima piesa a modelului, se va lăsa
bifată opțiunea -
Pentru verificarea frameurilor se acteivează butonul ¿
Exemplu (v. operațiile mai jos):
Pentru
Part-ul conjugat, aflat într-un File Solid diferit, se repetă toți
pașii, cu mențiunea că primul frame este suprafața care
face contact cu piesa anterioară. Exemplu: Dacă în cazul primei piese s-a selectat suprafața exterioară a
tijei,
pentru a 2-a piesă (conjugată) se va selecta partea superioară din interiorul cubului.
După
selectarea și verificarea primului frame pentru a 2-a piesă, se
dezactivează cu ¿ opțiunea ¿ Apoi, similar, dacă este cazul, se creează un nou frame și se selectează suprafața pe care se dorește contactul cu a 3-a piesă.
În final, după ce se
salvează, ¿ Conectarea
porturilor Part-urilor Exemplu (v.
operațiile mai jos):
După conectare, în
partea superioară a ferestrei, se activează butonul ¿ Obs. Simularea se va efectua în MATLAB,
nu în Simulink.
Generare Joints (Cuple) În
Simulink se vor genera 2 cuple: una de roație (Revolute Joint) și
cealaltă de translație (Prismatic Joint).
Acestea se introduc între două block-uri File Solid, între care se
dorește stabilirea mișcării de rotație sau, respectiv, de
translație. După activarea blocului asociat unei cuple cu ¿¿ (dublu-click),
se fac setările în meniurile (v. fig. de mai jos): -
Actuation se
setează Force și apoi Automatically Computed; -
Motion, Provided by Input; -
Composite Force/Torque Sensing se
selectează Total Force și Total Torque, pentru a putea
extrage forțele și momentele din cuplă.
Introducerea parametrilor cinematici de intrare Profil trapezpoidal (triunghiular) de viteză –
implementare MATLAB Datele cunoscute: Valorile maxime ale spațiului, vitezei
și accelerației s [mm], v [mm/s], a [mm/s2] pentru cupla
T și φ [rad], ω [rad/s], ε [rad/s2] pentru
cupla de R; aceste valori sunt indicate în tema de proiectare. Pentru mișcarea
cuplelor se folosește pentru viteză un profil trapezoidal/triunghiular
cu viteză inițială și finală nule. În funcție de
deplasarea totală În continuare, se prezintă
scriptul care generează cele trei șiruri de valori pentru num_points eșantioane (poziția q, viteza
Obs. În cadrul acestui script s-au făcut transformări din
mm în m, prin împărțitrea la 1000. Rezultate grafice (exemple) Profil trapezoidal pentru cupla T
Profil triunghiular pentru cupla T
Profil trapezoidal pentru cupla R
Conectarea
la cuple Conectarea block-uri între ele se poate face cu
modulele: Simulink-PS Converter (Input) sau PS-Simulink Converter (Output).
Pentru a
putea asocia block-urile Matlab function cuplelor este nevoie de
modulul Simulink-PS Converter. După ce se deschide cu ¿¿ meniul
de parametri ai block-ului, la opțiunea Provided signals, se
activează Input and first two derivatives (v. fig. de mai jos,
stânga); rezultatul acestei operații este prezentat în fig. de mai jos,
centru. Se conectează apoi ieșirile
block-urilor MATLAB function la cele trei intrări obținute ale
block-ului Simulink-PS Converter, în ordine: poziție, viteză, accelerație
(v. fig. de mai jos, dreapta).
Utilizarea block-ului Rigid
Transform Block-ul Rigid Transform definește și
menține o relație spațială (translație sau rotație)
fixă între două cadre pe durata simulării. Acest block-ul oferă diverse
metode pentru a specifica poziția și orientarea cadrului urmăritor
în raport cu cadrul de bază.
Obs. Când se modifică un unghi
sau un offset, este important ca unitatea de măsură să fie adecvată:
Block-urile Rigid
Transform se utilizează în cazul în care orientarea sau poziționarea
față de restul elementelor nu este cea dorită, sau în cazul în care cuplele
nu sunt orientate corect. Exemplu de orientare
incorectă:
Incorect
Corect Pentru a corecta relația dintre elementele din exemplul de mai sus, s-a introdus între ele un Rigid Transform.
În cazul în care se dorește
rotirea corpului ce succede block-ul Rigid Transform, în interiorul
meniului de setări al block-ului (actvat cu ¿¿), se
ajustează câmpurile Axis și Angle indicând axa în jurul
căreia trebuie efectuată rotația pentru a duce obiectul în poziția
dorită și, respectiv, valoarea unghiului rotației:
Direcția de rotație
se alege prin introducerea semnul ‘-’ (minus), fie în dreptul axei,
fie în dreptul valorii unghiului. Pentru alegerea axei de rotație, se recomandă
ghidarea după sistemul de referință din colțul stânga-jos al
simulării:
Obs. - Rigid transform afectează pozițiile tuturor obiectelor următoare. Dacă nu se dorește acest lucru, se va mai adăuga un Rigid Transform care să anuleze efectele primului, alegând axa sau unghiul cu smnul opus: -
Cuplele în Simulink sunt default pe axa
Z; dacă se dorește acționarea
după o altă axă, se impune, pentru a orienta cupla corect, folosirea de
block-uri Rigid Transform, similar modului prezentat mai sus.
Extragerea valorilor parametrilor din cuple Block-ul To Workspace este folosit pentru
extragerea valorilor parametrilor cuplelor și introducerea acestora în Workspace,
de unde pot fi ulterior utilizate în Matlab. Acestea se conectează la porturile Total Force
și Total Torque (desemnate cu ft și tt în cadrul
cuplei, v. fig. de mai jos); în plus sunt necesare și block-uri PS-Simulink
Converter pentru a se putea realiza conexiunile.
Ca urmare a activării cu ¿¿ pe
block-ul To Workspace se deschide caseta de setări, unde se poate
introduce numele acestuia (v fig. de mai jos), cu ajutorul căruia vor fi
referențiate în Matlab valorile extrase.
Vizualizarea grafică Pentru vizualizarea grafică a valorilor extrase din cuple, se poate
folosi block-ul Scope (v. fig. de mai jos, stânga) care se conectează la linia a căror valori se
doresc a fi vizualizate (v. fig. de mai jos, dreapta).
Exemplu:
Pentru a se vizualiza legenda parametrilor vizualizațide
block-ul Scope: ¿ Obs. -
Denumirile afișate în legendă sunt preluate de
la intrările în block-ul Scope. Exemplu:
-
În cazul în care un block
returnează o matrice de valori (de ex. Total Force și Total
Torque), deoarece block-ul are un singur nume, toate valorile furnizate
de acesta vor avea aceeași denumire, diferențiate însă prin
indexare (v. fig. de mai jos). În cazul Total Force și Total
Torque, ordinea corespunde axelor 1, 2, 3 indică x, y, z.
Extragerea Maximelor valorilor parametrilor Extragerea forțelor sau momentelor maxime se
realizează în Matlab. Toate valorile extrase prin intermediul
block-ului To Workspace se află în obiectul
Înainte de a putea determina maximele din valorile extrase, trebuie realizat un reshape, conform comenzilor de mai jos, pentru a asigura că datele au o dimensionalitate compatibilă pentru buna operare a funcțiilor utilizate (acest pas este necesar cel puțin în cadrul versiunii 2022b de Matlab).
Valorile
conținute în data_forte și data_momente din fig. de
mai jos sunt matrici cu 3 linii și n coloane, în care pe
fiecare linie sunt valorile în timp pe axele x, y, z, în această
ordine. Pentru a accesa toate valorile de pe o linie, se folosește
expresia de indexare În
continuare, pentru a indica valorile absolute (modulul), se renunță la
semnul ‘-’ (care în acest caz, indică direcția de mișcare a cuplei)
folosind funcția abs(), Pentru
indicarea valorilor maxime se utilizează funcția max():
Pentru
a executa (rula) codul se activează comanda,
¿ |