ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 144
Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 144
Abonament PDF

Lecția principală: o mașină nu e doar o mașină

Rareș Lemnariu
Technical Lead @ Centrul de Inginerie Bosch Cluj



PROGRAMARE


Bosch Future Mobility Challenge (BFMC) a evoluat de la un hackathon local inițiat de către Centrul de Inginerie Bosch din Cluj la un program de dezvoltare pe termen lung, devenind unul dintre cele mai mari concursuri de acest fel organizat de Bosch la nivel global. La baza concursului stau trei concepte principale:

Participanții sunt provocați să dezvolte nu doar algoritmi care permit modelelor de mașini la scară 1/10 să navigheze autonom în medii complexe, asemănătoare orașelor reale, ci și să "construiască" un vehicul complet, acoperind cât mai multe aspecte ale acestuia (evident, la o scară și complexitate redusă). Competiția nu se concentrează exclusiv pe "computer vision", chiar dacă aceasta este o componentă majoră, ci include și:

Kitul de bază pentru participarea la concurs nu este doar un set hardware de pornire, ci include și codul de bază pentru interacțiunea și controlul mașinii, API-uri pentru comunicarea cu infrastructura, servere simulate de infrastructură, aplicații de monitorizare a mașinii și documentații extensive. Studenții sunt încurajați să modifice kitul, atât hardware (în limita a 1000 Euro), cât și software, întreg codul furnizat fiind open source.

Mașinuța efectivă este formată dintr-un computer central (Raspberry Pi) gândit să preia funcțiile autonome, un microcontroller (STM32) pentru interacțiunea cu hardware-ul mașinii, adică motoarele și senzorii, un motor de tip brushless pentru controlul vitezei mașinii, un motor pentru viraj, o cameră, o placă de distribuție a curentului și alți senzori importanți.

Gestionarea eficientă a datelor și comunicarea între procese sunt fundamentale în orice proiect de tip real-time. De asemenea, se știe că acestea sunt prea puțin exersate în facultăți și că studenții nu au lucrat la proiecte de amploare unde să vadă cu adevărat importanța lor. În acest context, am proiectat o arhitectură model bazată pe scalabilitate, viteză de răspuns a sistemului, testabilitate și capacitate de a prioritiza execuția taskurilor în funcție de urgența lor, folosind module de multiprocessing, multithreading, Queues, Pipes și SharedMemory din Python.

Arhitectura sistemului este structurată în jurul a patru cozi (Queues): Critical, Warning, General și Configuration, fiecare deservind niveluri diferite de urgență ale mesajelor. Procesul central, Gateway, gestionează aceste cozi cu o prioritate bine definită. Mesajele sunt tratate în funcție de canalul pe care vin, asigurându-se că cele mai importante sunt procesate imediat. Configurațiile de mesaje, definite într-un fișier de configurare includ detalii precum tipul și proprietarul mesajului, facilitând astfel subscrierea sau dezabonarea la anumite mesaje prin intermediul cozii de Configuration de către alte procese/threaduri. Această abordare modulară permite adăugarea rapidă și eficientă a noilor module sau teste fără a perturba funcționarea normală a sistemului.

Utilizarea Queues permite definirea unor canale de comunicare clar delimitate, optimizând gestionarea mesajelor fără a interfera cu procesele emitente. Pipes sunt folosite pentru a direcționa mesajele direct către procesele abonate, eliminând necesitatea de a filtra mesajele printr-o coadă comună, ceea ce îmbunătățește semnificativ eficiența procesării.

În plus, SharedMemory joacă un rol crucial în menținerea coerenței datelor între procese, permițând accesul simultan la memorie până când datele respective pot fi folosite, cum ar fi în cazul unei comunicări cu un server de infrastructură, asigurând că datele rămân salvate până când conectarea la acesta este efectuată cu succes.

Pe parcursul mai multor ediții ale concursului, am identificat o problemă frecvent întâlnită de mulți studenți: superficialitatea abordată în monitorizarea sistemului, configurarea rapidă și identificarea erorilor în timp real. Pentru a aborda această problemă, am dezvoltat și oferit o interfață pe PC, inspirată de panourile de bord ale mașinilor, care simplifică și facilitează gestionarea activităților. Această interfață include de asemenea și anumite funcționalități care doresc să facă o referire la tool-ul CANalyzer, funcționalitate care să ajute customizarea imediată a vehiculului, fără să necesite modificarea în cod, compilarea și repornirea codului.

Interfața integrează panouri de monitorizare vizuală, oferind informații detaliate cum ar fi localizarea pe hartă, indicatorul de viteză, martori de bord, unghiul de viraj, eroarea față de drum și statusul bateriei, toate bazate pe datele transmise de la vehicul. În ceea ce privește partea de configurare, aceasta permite integrarea configurării avansate și în timp real. Utilizatorii pot ajusta setări precum luminozitatea și contrastul pentru senzorul de la cameră, activa sau dezactiva funcții, modifica parametrii de control al virajului și multe altele, toate într-un mod intuitiv și accesibil.

În contextul competiției, nu i-am încurajat doar pe studenți să dezvolte aplicații și sisteme de diagnoză și de control, ne-am angajat și noi să facem acest lucru, astfel că a apărut aplicația MasteriX, un instrument esențial pentru urmărirea și controlul infrastructurii, pentru a asigura că fiecare dintre cele aproximativ 30 de dispozitive performează conform așteptărilor. La originile concursului, modul nostru de urmărire a fost ca și cel al studenților: 30 de terminale deschise, fiecare cu câte o serie de printuri. În prima fază a proiectului MasteriX, scopul a fost să monitorizăm nu doar funcționalitatea individuală, ci și să integrăm toate sistemele într-un singur tablou de monitorizare. Acesta ne permite să vedem în timp real statusul semafoarelor, al dispozitivelor de localizare, dar și comportamentul pietonilor animați automat.

Pe măsură ce am progresat, interfața MasteriX a evoluat și a primit funcționalități care ne permit nu doar să observăm statusul diferitelor componente, ci și să analizăm informațiile primite direct de la vehicule. Această capacitate de analiză detaliată ne-a ajutat să generăm un heatmap al interacțiunii vehiculelor cu infrastructura, validând astfel eficacitatea modelării și simulării noastre, dar și eficiența detecțiilor și controlului vehiculelor de pe traseu. Acest proces ne-a oferit o perspectivă valoroasă asupra modului în care vehiculele răspund în diferite condiții de trafic, esențială pentru ajustarea și îmbunătățirea continuă a sistemelor noastre, dar și la direcționarea echipelor spre problemele întâmpinate de ceilalți.

Prin MasteriX, ne asigurăm că fiecare dispozitiv nu doar că își îndeplinește rolul, ci contribuie eficient la un ecosistem integrat care susține îmbunătățirea și dezvoltarea continuă în cadrul concursului nostru și nu numai. Această abordare holistică este esențială pentru depășirea provocărilor tehnice și pentru încurajarea unui mediu de testare riguros și inovator pentru toți participanții.

NUMĂRUL 143 - Software Craftsmanship

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects