Proiectul ROS
Proiectul ROS
Încadrat de:
Pr YOUNES ADNANI
2
2-2 Rol:............................................................................................................................................25
2-3 Instalare de la bibliotecă Snappy-ros :.................................................................25
3-Instalarea Firebase în NodeRED :........................................................................................26
4 Legătura între Firebase, Node Red ș i Subiecte :.......................................................................26
VI. Crearea de aplicaț ii, folosind site-ul MIT App Inventor:..........................................27
VII. Aplicaț ia este creată :...............................................................................................................28
VIII. Cod Arduino................................................................................................................................28
IX. Conexiune Bluetooth cu ROS :........................................................................................32
X. Les etape pentru a controla robotul nostru:.....................................................................................34
3
Liste de figure :
FFIGURĂ1:UNE CARTEARDUINOUNO..................................................................................7
FIGURE2:CAPTEUR ULTRA-FiuHC-SR04.............................................................................8
FIGURE3:DESCRIPTION DU CAPTEUR ULTRA-FiuHC-SR04.....................................................8
FIGURE4:IILUSTRAREA SEMNALULUITRIGGERETECHO.........................................................9
FFIGURĂ5:MOTEURDC.....................................................................................................10
FIGURE 6:MODULBLUETOOTHHC-05...............................................................................10
FFIGURĂ7: SYNOPTIQUE AL MOTORULUI.........................................................................11
FIGURE8:SCAPCANE............................................................................................................13
FFIGURĂ9:: BATTERIES DE3.7V..........................................................................................14
FFIGURĂ10:SOFTWARE-UL ARDUINO.......................................................................................16
4
Introducere generală în proiect:
Acest proiect se încadrează în dezvoltarea unei aplicaț ii de robotică cloud care foloseș te
ROS (Sistemul de Operare pentru Robo ț i). Obiectivul este de a valorifica poten ț ialul cloud-ului
calculatoare pentru a întări capacită ț ile sistemelor încorporate ș i a crea robo ț i
inteligente capabile să interacț ioneze cu mediul lor în mod autonom ș i eficient.
Acest raport va detalia diferitele etape ale proiectului, de la concepț ia hardware până la
programarea comportamentului robotului prin intermediul implementării de
infrastructura cloud ș i sistemul ROS. Vom evalua de asemenea performanț ele de
solu ț ia noastră ș i vom discuta despre perspectivele de îmbunătă ț ire pentru viitor
iteratii ale proiectului.
Ideea este de a folosi o placă Arduino pentru a citi datele primite de la un, sau mai multe,
senzor(e) cu ultrasunete.
Când senzorul detectează un obstacol în faț a sa, Arduino trebuie să trimită instrucț iuni către
motoare care pilotează roț ile robotului pentru a-l evita. Robotul ar fi parț ial constituit din
châssis ș i componente electronice (Arduino, senzor ultrasonic, motoare, …) ar fi
fixat pe ș asiu pur ș i simplu cu ajutorul unei lipici.
Materialele de care avem nevoie pentru a realiza acest robot sunt:
Arduino UNO.
Un senzor cu ultrasunete HC-SR04.
Două motoare DC pentru a controla roț ile robotului.
O baterie de 11V ș i conectori pentru alimentarea motoarelor DC.
Driver de motor L298N
Două roț i
Modul Bluetooth HC05
Des cabluri jumper
1. La carte Arduino
Există mai multe tipuri de plăci Arduino, ne-am orientat doar spre tipul le
mai frecvent care este placa Arduino UNO Pentru a realiza această configurare, trebuie să ne asigurăm de
legătura între fiecare componentă electronică ș i placa noastră Arduino.
În total, vom avea nevoie de o carte Arduino care să conț ină cel puț in 9 pini digitali, ș i
de asemenea, cine va fi capabil să execute cât mai repede algoritmul gravat în memoria sa.
Pe de altă parte, placa Arduino UNO este cea mai potrivită pentru această situaț ie.
care are 14 pini digitali (dintre care 6 cu PWM) ș i 6 pini de intrare analogică.
2 Senzori ultra-son
7
2-1 Func ț ionarea senzorului
8
3 Motor DC
9
Figura 6: modul Bluetooth HC-05
4-1Description :
Ce modul Bluetooth permite adăugarea unei conexiuni serioase fără fir Bluetooth pe dispozitivul dvs.
ARDUINO. El comunică cu microcontrolerul printr-un port serial.
Specificaț ii
100 % compatibil cu
ARDUINO
Tension nominale : 3,3 V- 5
V MAX
Antena de 2,4 GHz
integrată
Controlaț i al tău
ARDUINO fără fir
4-2Conectarea HC-05:
10
Principiul de funcț ionare
Description
Driverul de motor L298N este un circuit monolitic integrat în carcase Milliwatt ș i
PowerSO20 cu 15 pini. Este un driver cu punte dublă completă de înaltă tensiune ș i
curent ridicat conceput pentru a accepta sarcinile inductive de antrenare a nisipului de nivel
logică TTL standard, cum ar fi releele, solenoizii, motoarele cu curent continuu ș i pas
La pas. Două intrări de validare sunt furnizate pentru a activa sau dezactiva dispozitivul
indiferent de semnalele de intrare. Emitatoarele tranzistorilor inferiori de fiecare
punctele sunt conectate între ele, iar terminalul extern corespunzător poate fi folosit pentru a
conexiune a unei rezistenț e de detecț ie externe. O intrare de alimentare suplimentară
este furnizată pentru ca logica să funcț ioneze la o tensiune inferioară.
11
Caractéristiqes :
12
un curent de asemenea mai mare. Pentru aceasta, utilizăm circuite integrate de pilotare de
motor. Pilotul motorului este un mic amplificator de curent sau de tensiune. Acesta ia un
semnal de curent slab ș i emite un semnal de curent puternic care poate activa un motor. El
poate de asemenea controla direc ț ia motorului. Antrenamentele motorului sunt de
numeroase tipuri în funcț ie de tensiunea maximă de alimentare, de curentul de ieș ire
maximal, de la disipare a puterii nominale, a tensiunii de încărcare ș i a numărului de
ieș iri, etc. Vom discuta aici despre driverul de motor L298N. Acesta este folosit în proiectul de
controlul vitezei motorului cu curent continuu ș i puteț i interfaț a cu uș urinț ă
motor cu curent continu cu microcontrolerul cu ajutorul acestui pilot de motor. Ș i de asemenea
într-un robot controlat prin Bluetooth care utilizează un microcontroler PIC. Puteț i consulta
robotul următor de linie pentru a afla mai multe despre aplicaț iile sale.
6 Firele conectoare
Cablurile, firele sau conectorii sunt elemente necesare pentru a stabili conexiuni
între diferite componente electrice.
Figura 8: Cureaua
13
Figura 9:: Batterii de 3.7V
1 2 3
14
4 5
15
Partea 2: Studiul părț ii Software
Această parte este dedicată reprezentării platformelor informatice utilizate în
dezvoltarea sistemului robotic.
I. Platforma de programare Arduino
Interfaț a IDE-ului Arduino este destul de simplă, oferind o interfaț ă minimală ș i curată pentru
dezvolta ț i un program pe plăcile Arduino. Acesta dispune de un editor de cod cu
sintaxă de colorare ș i un panou de instrumente rapid. Acestea sunt cele două elemente cele mai
importanț ii interfeț ei sunt cei pe care îi utilizăm cel mai des. De asemenea, găsim o
bară de meniuri, mai clasică, care este utilizată pentru a accesa funcț iile avansate ale IDE-ului.
În cele din urmă, o consolă care afiș ează rezultatele compilării codului sursă, operaț iunilor pe
cartea, etc.
16
a. Scrierea unui program Arduino
Un program Arduino (Sketch) = 1 funcț ie setup() + 1 funcț ie loop() Limbajul folosit
C/C++
17
II. Ubuntu 2024 ș i VMWare WorkStation
ROS, sau Robot Operating System, este un cadru de dezvoltare software open
sursă utilizată pe scară largă în robotică. Oferă instrumente ș i biblioteci pentru
simplificarea creării, controlului ș i comunicării între componentele unui robot. Datorită
la un sistem de comunicaț ie asincronă ș i la o gestionare eficientă a pachetelor, ROS
facilitează dezvoltarea aplica ț iilor robotice modulare ș i reutilizabile.
În ROS întâlnim un număr de concepte comune la multe middleware-uri:
Noduri : Un nod este un executabil care foloseș te ROS pentru a comunica cu altele
noduri.
Messages :Type de données ROS utilisés pour souscrire ou publier sur un topic.
Subiecte: Nodurile pot publica mesaje pe un subiect, precum ș i să se aboneze.
la un subiect pentru a primi mesaje.
Master: Numele serviciului pentru ROS (adică ajută nodurile să se găsească reciproc).
Parametrii: Informa ț ii foarte pu ț in dinamice care trebuie împărtă ș ite în
aplicaț ia.
rosout : Echivalent de stdout/stderr.
roscore :Master+rosout+server de parametri (server de parametri).
18
2 Instalarea ROS :
Actualizaț i lista pachetelor disponibile ș i instalaț i ROS cu următoarea comandă:
3Configurarea mediului:
Configura ț i-vă mediul ROS executând următoarea comanda:
19
4 Crearea Spa ț iului de Lucru:
Pentru a crea un spa ț iu de lucru (workspace) în ROS, folosim comenzile
următoarele :
5Compilarea pachetului:
Comanda catkin_make este un pas fundamental în utilizarea ROS
(Sistemul de Operare pentru Roboț i). Rolul său principal este de a compila pachetele incluse în
un spaț iu de lucru ROS
20
7 Crearea nodului :
21
Codul care asigură controlul robotului:
9 le ROS Master:
Facilite descoperirea dinamică a nodurilor într-o re ț ea ROS, permi ț ându-le
diferite componente ale sistemului de a comunica între ele într-un mod flexibil. El
simplifică gestionarea mediului ROS oferind un punct central de
coordonaț ie ș i informaț ie pentru nodurile sistemului.
22
Comanda rosrun în ROS permite pornirea unui nod specific prin specificarea numelui
pachetul în care se află nodul, precum ș i numele nodului în sine. Această comandă este
utilizată pentru a executa noduri particulare. Pentru a interacț iona cu subiectele :
23
1 Lansare Node RED :
24
2 SNAPPY ROS
2-1 Definiț ie :
Snappy ROS este un modul sau o bibliotecă care permite Node-RED să
a comunica cu sisteme robotice utilizând Sistemul de Operare pentru Roboț i (ROS). El
utilizează protocolul "Snappy" pentru a schimba mesaje ș i date cu nodurile
ROS, permiț ând astfel o integrare transparentă între Node-RED ș i ecosistemul ROS.
2-2 Rol:
Snappy ROS în Node-RED facilitează integrarea ș i comunicaț ia între Node-RED
ș i ecosistemul ROS, care permite dezvoltatorilor să creeze aplicaț ii robotice
mai bogate ș i mai interactive prin combinarea func ț ionalităț ilor acestor două platforme
forme.
25
3-Instalarea Firebase în NodeRED :
V. FireBase
26
Firebase este o platformă de dezvoltare pentru aplicaț ii mobile ș i web oferită de
Google. Oferă o gamă de servicii de backend gata de utilizare, SDK-uri pentru
multiple platforme, ș i instrumente de dezvoltare ș i testare pentru a ajuta dezvoltatorii să
crea, îmbunătă ț i ș i dezvolta aplica ț iile lor. Firebase este cunoscut pentru u ș urinț a sa
de integrare, disponibilitatea sa ridicată ș i performan ț ele sale ridicate, ceea ce îl face o alegere
popular pentru dezvoltatori care caută să construiască aplica ț ii moderne ș i
evolutive.
27
VII. Aplicaț ia este creată :
#include <ros.h>
#include <std_msgs/Int32.h>
int m1a = 9;
int m1b = 10;
int m2a = 11;
int m2b = 12;
int speedPinRight = 2;
int speedPinLeft = 3;
int demar =0;
#define trigPin 6
#define echoPin 7
ros::NodeHandle nh;
28
{
Înapoi();
demar = 1;
}
altfel dacă statuia == 4
{
întoarceStânga();
demar = 1;
}
altfel dacă statul == 1
{
Înaintaț i();
demar = 1;
}
altfel dacă statul == 3
{
turnRight();
demar = 1;
}
altfel dacă(statuia == 0)
{
opriț i();
demar = 1;
}
}
std_msgs::Int32 CapteurROS;
ros::Publisher CapteurROSPublisher("Capteur", &CapteurROS);
ros::Subscriber<std_msgs::Int32> EtatROSsubscriber("Etat", &callBackFunctionEtat);
29
void setup() {
[Link]()->setBaud(9600);
[Link]();
[Link](EtatROSsubscriber);
[Link](CapteurROSPublisher);
//______________________________OUTPUT INPUT
pinMode(speedPinRight, OUTPUT);
pinMode(speedPinLeft, OUTPUT);
pinMode(m1a, OUTPUT);
pinMode(m1b, OUTPUT);
pinMode(m2a, OUTPUT);
pinMode(m2b, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
[Link]();
întârziere(5);
dacă (demar == 1) {
durată lungă, distanț ă;
digitalWrite(trigPin, LOW);
întârziaMicrosecunde(2);
digitalWrite(trigPin, HIGH);
întârziereMicrosecunde(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
dacă (distanț a < 15) {
[Link] = 1 ;
}
30
altfel {
[Link] = 0 ;
}
[Link]ă(&CapteurROS);
}
}
void Înapoi() {
digitalWrite(m1a, ÎNALT);
digitalWrite(m2a, LOW);
digitalWrite(m1b, LOW);
digitalWrite(m2b, ÎNALT);
analogWrite(speedPinRight, 150);
analogWrite(speedPinLeft, 150);
}
void Înainta(){
digitalWrite(m1a, LOW);
digitalWrite(m2a, ÎNALT);
digitalWrite(m1b, HIGH);
digitalWrite(m2b, LOW);
analogWrite(speedPinRight, 150);
analogWrite(speedPinLeft, 150);
}
void întoarceStânga() {
digitalWrite(m1a, LOW);
digitalWrite(m2a, LOW);
digitalWrite(m1b, ÎNALT);
digitalWrite(m2b, LOW);
analogWrite(speedPinLeft, 150);
}
void întoarceDreapta() {
31
digitalWrite(m1a, LOW);
digitalWrite(m2a, ÎNALT);
digitalWrite(m1b, LOW);
digitalWrite(m2b, LOW);
analogWrite(speedPinRight, 150);
}
void stop(){
digitalWrite(m1a, LOW);
digitalWrite(m2a, LOW);
digitalWrite(m1b, LOW);
digitalWrite(m2b, LOW);
}
32
Subiectul senzor
Absenta obstacolului.
Data’1’ prezenț a obstacolului
Starea subiectului:
33
X. Paș ii pentru a controla robotul nostru:
Concluzie generală :
34
În cadrul acestor mini-proiecte, am explorat două abordări distincte pentru
dezvoltarea sistemelor încorporate ș i a roboț ilor inteligenț i. Primul mini-proiect a fost
concentrat pe crearea unui robot detector de prezenț ă echipat cu senzori ultrasonici,
în timp ce al doilea mini-proiect a implementat o aplicaț ie cloud Robotics utilizând
ROS (Sistemul de operare pentru roboț i).
În concluzie, acest proiect a fost îmbogă ț itor ș i instructiv, permi ț ându-ne să dobândim despre
noi competenț e ș i de a înț elege mai bine provocările ș i oportunităț ile oferite de
robotica modernă. Ne-au oferit de asemenea ocazia de a ne dezvolta creativitatea ș i
capacitatea noastră de a rezolva probleme complexe. În cele din urmă, ne-au sensibilizat la
importanț a în creș tere a integrării cloud-ului în domeniul roboticii pentru a crea
sisteme mai inteligente, mai flexibile ș i mai performante.
35