Buzdugan I.D., Mogan Gh.L. Proiectarea roboților ficși. 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)

 

Schema bloc Simulink

Exemple

RT:

TR:

Animație T-R (fără elemente de legatură):

A black cubes with a wheel

Description automatically generated

 

 

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], ® ¿ ® ¿ ® [la adresa de email  se introduce cea de student (........@student.unitbv.ro) și se alege o parolă] (în cazul în care aveți deja cont, se omite această etapă) ® [în fereastra deschisă se selectează, ¿se alege versiunea dorită ¿ și se activează ¿(în cazul în care se dorește doar un update, se alege Get Updates) ® [pentru descarcare ¿] ® [se execută fișierul descărcat, ¿ ] ® [ în fereastra deschisă se realizează conectarea cu contul creat anterior prin introducerea adresei de email,  Title: Inserting image...  ® [se bifează cu ¿ căsuța ] ® ¿ ® [se activează licența                           ¿] ® ¿ ®                   ¿ ® [se alege calea spre folderul unde se instalează Matlab-ul: ¿ (sunt necesari aproximativ 50GB în cazul în care se instaleaza toate librăriile disponibile) ®   (se observă că opțiunea Matlab este preselectata ).

 

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)   și SimScape, cu toate sub-categoriile: Simscape Bettery, Simscape Driveline, Simscape Electrical, Simscape Fluids, Simscape Multibody)  .

La întâlnirea acestei fereastre:

 ,

 ¿  ® ¿  ® ¿ (se începe instalarea).

 

Lsansarea aplicației MATLAB

[după ce se lansează Matlab în fereastra SIMULINK, ¿  ® ¿Title: Inserting image...  ® ¿   ®

 

 

[se salvează aplicația ¿ ® [se modifică numele fișierului, ] ® [se selectează folderul în care unde se dorește să se efectueze salvarea Title: Inserting image...] ® [se verifică în partea de sus calea, ® ¿.

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  și se conectează block-ul dorit, ¿; este posibil și conectarea cu altă linie deja existentă (se respectă aceiași pași, doar că în loc să se selecteze săgeata albastră, se selectează cu ¿ linia dorită, ex.  (v. operațiile mai jos).

 

 

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 menține ¿ apăsat) și se poziționează în locul dorit (v. operațiile mai jos).

 

[se  activează ¿¿ (dublu click) pictograma] ® [în noua fereastră, în partea centrală, selectează, ¿ ] ®  ¿ ® ¿ ® ¿ ®n noua fereastră se selectează cu ¿ fișierul CATPart,] ® [se selectează cu ¿ opțiunea Update Visualization (sau se apasă butonul F5,   sau ¿  pentru versiuni mai noi de Matlab) pentru a se încărca modelul] ® ¿ ® ¿ (v. operațiile mai jos).

 

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 : ¿ ® [la opțiunea  se apasă ¿ pe meniul din dreptul acesteia și se selecteză ¿] ® [masa se modifică în cadrul opțiunii ¿]. Similar, în funcție de necesitate, se poate introduce și densitatea corpului, alegând ¿ și introducând valoarea dorită în câmpul ¿. În cadrul opțiunii  (v. fereastra de  mai jos) după activarea ¿   se pot observa datele preluate din CATIA evidențiate în fereastra Measure Inerti .(v. mai jos).

Fig.3.2.1

 

 

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 ] ® [se activează, ¿ Title: Se inserează imaginea... din secțiunea Title: Se inserează imaginea...]  ®  n noua fereastră, se selectează cu ¿ suprafața pe care se dorește așezat primul frame (v. fig. de mai jos]

[după selectarea cu ¿ a pozitiei, în partea stânga sus, în cadrul meniului Title: Se inserează imaginea..., se bifează cu ¿ opțiunea ] ® ¿ ® ¿.
Obs.

-        Aceasta fiind prima piesa a modelului, se va lăsa bifată opțiunea  din meniul File Solid.

-        Pentru verificarea frameurilor se acteivează butonul ¿ și se observă că în cadrul piesei au aparut 2 sisteme de coordonate (acestea reprezintă suprafețele de contact ale modelului); R reprezintă originea sistemului de referință, F2 - frame-ul suprafeței de contact generat.

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ă, ¿, se verifica frame-urile, se închide fereastra ¿ și se validează ¿.

 

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.
Exemplu simulare:

 

 

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ă , profilul poate rezulta trapezoidal (atinge viteza maximă) sau triunghiular (nu atinge  viteza maximă).

În continuare, se prezintă scriptul care generează cele trei șiruri de valori pentru num_points eșantioane (poziția q, viteza  și accelerația :

 

 

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ă:

O imagine care conține text, captură de ecran, număr, Font

Descriere generată automat

 

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 , regăsit în . Accesarea lor în cod se realizează scriind comanda: , unde ”numele block-ului To Workspace” se înlocuiește cu numele dat block-ului în Simulink. În exempllele de utilizare de mai jos s-au extras valorile oferite de block-urile To Workspace denumite în Simulink translatie_forte, respectiv translatie_momente.

 

 

Î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 , unde i indică numărul liniei (în acest caz, i poate lua valorile 1, 2, 3), iar operatorul ’:’ permite accesarea tuturor coloanelor.

Î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 codul: ¿.

 

 

 

 

 

 

 

...