Acronim: ireal


Aplicaţie demonstrativă pentru simularea în timp real



Yüklə 194,95 Kb.
səhifə7/8
tarix30.10.2017
ölçüsü194,95 Kb.
#22437
1   2   3   4   5   6   7   8

4.Aplicaţie demonstrativă pentru simularea în timp real

Pentru realizarea de aplicaţii de simularea a sistemelor auto în timp real utilizând arhitectura hardware şi software dezvoltată în proiect a fost necesara implementarea unui modul software specializat de simulare a automobilului bazat pe limbajul de programare C++, deoarece utilizând mediul de simulare Matlab/SimMechanics simularea rulează într-un timp nesatisfăcător.


4.1.Dezvoltarea modului software de comanda a robotului paralel Stewart

Pentru a percepe cu realism mişcările simulate de virare ale automobilului este utilizat un robot paralel Stewart Moog 6DOF2000E fabricat de compania Moog Motion System. Fabricantul acestui echipament nu pune la dispoziţie un modul software pentru dezvoltarea de aplicaţii software dedicate (Aplication Programming Interface sau Software Development Kit), doar a un program executabil de rulare a unui fisier ce descrie miscarea robotului generat anterior. Acest program nu a putut fi utilizat deoarece în cadrul acestui proiect s-a dorit realizarea unor aplicaţii interactive, nu rularea unor simulari statice. De aceea în cadrul acestui proiect a fost dezvoltat un modul de comanda a robotului Stewart Moog bazat pe o interfata Ethernet care permite realizarea urmatoarelor functionalitati:



  • comanda celor sase actuatori prin specificarea directa a lungimii fiecaruia;

  • comanda celor sase actuatori prin specificarea valorilor pentru cele sase grade de libertate (roll, pitch, heave,surge, yaw, lateral);

  • transmiterea a diferite comenzi (initializare comunicatie, alimentarea actuatori, pornire simulare, parcare robot etc.) receptionarea şi interpretarea mesajelor transmise de unitatea de comanda a robotului, interpretarea erorilor.




Fig. 4.37. Reprezentarea gradelor de libertate ale robotului Moog 6DOF2000E

Pentru comunicaţia dintre simulatorul auto dezvoltat şi unitatea de comandă a robotului Moog, pot fi utilizate protocoalele de comunicaţie TCP/IP şi UDP (User Datagram Protocol). Diferenţa dintre aceste protocoale este că protocolul TCP/IP este sigur, dar lent deoarece realizează verificarea primirii datelor de către client, iar protocolul UDP este rapid deoarece nu mai realizează aceste verificări ale datelor, dar totodată fiabilitatea acestuia este mai scăzută deoarece nu există siguranţa primirii lor de către client. Conform schemei bloc, prezentată în figura 4.2 se observă că informaţiile pot fi transmise între modulul de comanda al simulatorului auto şi robotul Moog prin intermediul protocolului de comunicare UDP (User Datagram Format). Utilizarea acestuia este esenţială pentru realizarea transferului datelor în timp real (<15ms), pentru evitarea întârzierilor între comenzi şi percepţia realistă a returului haptic. Implementarea protocolului de comunicaţie UDP s-a realizat prin intermediul librăriei Winsock (Windows Sockets API).




Fig. 4.38. Comunicarea mesajelor dintre simulatorul dezvoltat şi robotul Moog 6DOF2000E

Modulul de comunicaţie dintre simulatorul auto şi unitatea de comandă a robotului Moog , utilizează pentru schimbul de informaţii o serie de categorii de mesaje:



  • mesaje pentru transmiterea comenzilor de schimbare a stării de funcţionare a robotului;

  • mesaje pentru comanda celor sase actuatori prin specificarea directa a lungimii fiecaruia;

  • mesaje pentru comanda celor sase actuatori prin specificarea valorilor pentru cele sase grade de libertate;

Fiecare mesaj conţine informaţiile unei singure comenzi efectuale de sistem şi este transmis în funcţie de frecvenţa sincronizatorului sistemului (<15 milisecunde). Mesajul este format din mai multe cuvinte specificate ca valoare reala pe 32 biti. Structura generala a unui mesaj este:
[Tip mesaj] [a1] [a2][a3][a4][a5][a6][SPARE]

unde :


Tip mesaj – reprezintă categoria de mesaj transmis(fig. 4.3) ;



Fig. 4.39. Structura mesajelor de 32 biti utilizate pentru comanda robotului Moog

a1..a6 – valorile transmise pentru fiecare actuator corespunzator cu modul de comada(DOF sau Lenght);

spare – reprezinta un cuvant null;

De exemplu pentru pornirea robotului şi specificare unei pozitii de start (comanda Start) în modul DOF se va transmite mesajul în format hexadecimal:


000000AF000000003AB16691BECEC2BFBA7CFDE6378193CB0000000000000000”
Aceste informaţii sunt recepţionate şi interpretate de modulul de comunicaţie implementat în programul de comanda al robotului, iar în cazul unei comenzi valide aceasta fiind executata. După executarea comenzii, robotul transmite un mesaj ce conţine poziţia actuala a robotului sau un mesaj de eroare. Mesajele transmise sunt recepţionate şi interpretate de modului software de comanda dezvoltat şi sunt utilizate pentru actualizarea mediului virtual de testare 3D. Tot acest ciclu de comunicaţie trebuie să aibă loc în timp real, pentru a se evita decalajele între momentul comenzilor şi momentul afişării în spaţiul 3D perceput de utilizator.

Pentru comanda robotului utilizând modulul software dezvoltat, a fost realizat un algoritm de funcţionare,schema bloc fiind prezentat în figura 4.4. Într-o prima etapa se va iniţializa comunicaţia cu unitatea de comanda a robotului, apoi se va stabili modul de lucru. Daca se va primi un mesaj de confirmare din partea robotului, se va trece la următoarea etapa de transmitere a mesajelor de alimentare a actuatorilor. Daca operaţia se va realiza cu succes, se va porni robotul şi ulterior se vor putea transmite instrucţiuni de deplasare corespunzătoare modului de lucru ales.




Fig. 4.40. Schema bloc a algoritmului de comanda a robotului Moog

Pentru implementarea algoritmului modulului software de comanda prezentat anteriror, s-a ales un limbaj de programare avansat care să permită portabilitatea datelor, comunicarea cu alte sisteme software şi utilizarea de librării SDK (eng. Software Developement Kit), şi anume limbajul C++. Mediul de programare ales este Microsoft Visual C++ fiind necesar pentru a integra informaţiile din alte softuri prin intermediul funcţiilor oferite de către biblioteca Microsoft Foundation Class (MFC). Limbajul C++ este unul dintre cele mai populare limbaje de programare moderne ce suportă programarea orientată pe obiecte. Aceste obiecte sunt definite prin intermediul claselor. Informaţiile conţinute de clase sunt împărţite în date membre şi funcţii membre sau metode. O clasa permite încapsularea (ascunderea informaţiei) în interiorul ei a datelor şi a codului, ce interzice accesul din afară la datele şi funcţiile sale. În cadrul dezvoltării proiectului s-a utilizat arhitectura programării orientate pe obiecte deoarece utilizatorul modului software trebuie sa aiba acces doar al functiile publice de comanda, cu scopul de a interzice modificare din exterior a unor parametrii setati implicit pentru robot ce ar pueta deteriora platforma. În funcţie de scopul la care sunt utilizate, clasele ce compun modulul software implementat se împart în:



  • clasa pentru transmiterea mesajelor – reprezentată de obiectul CUdp;

  • clasa pentru setare parametrii şi generarea mesajelor transmise catre robotul Moog – reprezentată de obiectul CMesajMoog (Anexa 2).




Yüklə 194,95 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin