Concepte generale¶

Să privim sistemul ROS de la un nivel foarte înalt. Nu trebuie să vă faceți griji cu privire la modul în care funcționează oricare dintre următoarele, vom aborda acest aspect mai târziu.

ROS începe cu ROS Master. Maestrul permite tuturor celorlalte bucăți de software ROS (Noduri) să se găsească și să vorbească între ele. în acest fel, nu trebuie să spunem niciodată în mod specific „Trimiteți aceste date de la senzor la acel computer de la 127.0.0.1. Putem spune pur și simplu Nodului 1 să trimită mesaje către Nodul 2.

Cum fac Nodurile acest lucru? Prin publicarea și abonarea la subiecte.

Să spunem că avem o cameră pe robotul nostru. Vrem să putem vedea imaginile de la cameră, atât pe Robotul însuși, cât și pe un alt laptop.

În exemplul nostru, avem un Nod de cameră care se ocupă de comunicarea cu camera, un Nod de procesare a imaginilor pe robot care procesează datele de imagine,și un Nod de afișare a imaginilor care afișează imaginile pe un ecran. Pentru început, toate nodurile s-au înregistrat la Master. gândiți-vă la Master ca la un tabel de căutare unde toate nodurile merg pentru a afla unde anume să trimită mesaje.

În înregistrarea la ROS Master, Nodul Camera declară că va publica un subiect numit /image_data (de exemplu).Ambele alte două noduri se înregistrează că suntSubscribed to the Topic /image_data.

Așa, odată ce nodul Cameră primește niște date de la Cameră, acesta trimite mesajul /image_data direct către celelalte două noduri. (Prin ceea ce este, în esență, TCP/IP)

Acum poate vă gândiți, ce se întâmplă dacă vreau ca Nodul de procesare a imaginilor să solicite date de la Nodul Camera la un anumit moment? Pentru a face acest lucru, ROS implementează Servicii.

Un nod poate înregistra un serviciu specific cu ROS Master, la fel cum își înregistrează mesajele.În exemplul de mai jos, Nodul de Procesare a Imaginii solicită mai întâi /image_data, Nodul de Cameră colectează datele de la Cameră, iar apoi trimite răspunsul.