Praktika 7: Nutikas parkimistõkkepuu süsteem ja Iseliikuv auto
Katse 7.1: -Mootori kasutamine-
Eesmärk:
Eelmises projektis kasutasime transistori, et kontrollida mootorit, millega suutsime kontrollida vaid mootori kiirust. Selles projektis võtame kasutusele H-silla, et saaksime kontrollida mootori pöörlemissuunda. Kuna tegemist on suure sammuga robotiehitusele, siis lisame skeemi lüliti, mis paneb mootori tööle, lüliti mis muudab pöörlemissuunda ja muuttakisti mootori kiiruse muutmiseks.
H-sild:
Et mootorit juhtida ühte ja teist pidi, oleks vaja muuta mootori klemmide polaarsust. Siinkohal aitab meid välja mootori draiver L293D (või SN754410). Tegemist on nelja kanalise mootori draiveriga, mis on mõeldud mootorite, releede või muude induktiivsete elektriseadmete juhtimiseks. Ehk selle abil on võimalik kontrollida kohte mootorit. Kiipi on sisse ehitatud kaitsedioodid, mis kaitsevad induktiivsusest tuleneva elektrilise tagasilöögi eest.
Kui lihtsustada L293D tööpõhimõtet, siis on tegemist nelja lülitiga, mis meenutab H-tähte ja sealt see nimi tulebki.
L293D

Mootori draiver L293D on kiip 16-jalaga. Kiibi jalad on tavaliselt nummerdatud. Iga kiibi on ülemises osas lohk ja võta see ette nii, et lohk jääb üles. Number 1 jalg jääb üles vasakule ja jooksevad U-kujuliselt.

- Vss – kiibi toide +5V
- Vs – väline toide kuni +36V
- ENABLE1 ja ENABLE2 – aktiveerivad mootor1 ja mootor2
- INPUT1 ja INPUT2 – mootor1 juhtimiseks
- OUTPUT1 ja OUTPUT2 – mootor1 ühendamiseks
- INPUT3 ja INPUT4 – mootor2 juhtimiseks
- OUTPUT3 ja OUTPUT4 – mootor2 ühendamiseks
- GND – maandus
L293D ühendamine Arduinoga
Paneme siis mootorid praktilised mootori draiveri abiga tööle. Skeemi lisame kaks nuppu ja potentsiomeetri moodoti juhtumiseks.
Ühendame kõigepealt L293D kiibi, lüliti ja patarei juhtmed arendusplaadiga. Ära veel patareid kinnita. Seejärel ühendame arendusplaadi pluss ja miinus pikiribad omavahel. Edasi ühendame mootori draiveri järgmised viigud numbrite järgi. Jälgi, kuhu poole jääb kiibi lohk!
- 1. viik – ühendame Arduino pesasse 9
- 2. viik – ühendame Arduino pesasse 4
- 3. ja 6. viik – ühendame mootoriga
- 4., 5., 12. ja 13. viik – ühendame maandusega
- 7. viik – ühendame Arduino pesasse 3
- 8. ja 16. viik – ühendame patareid toitega
Komponendid:
x1
x1
x1
x1
x1
x1
x1
x18
Skeem:

Selline ühendus vastutab meil siis ühe mootori eest. Skeemis oleva lüliti ühendame aga Arduino pessa 2. Lisame koodijupi mootori juhtimiseks.
Kood:
int switchPin = 2; // lüliti 1
int motor1Pin1 = 3; // viik 2 (L293D)
int motor1Pin2 = 4; // viik 7 (L293D)
int enablePin = 9; // viik 1(L293D)
void setup() {
// sisendid
pinMode(switchPin, INPUT);
//väljundid
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// aktiveeri mootor1
digitalWrite(enablePin, HIGH);
}
void loop() {
// kui lüliti on HIGH, siis liiguta mootorit ühes suunas:
if (digitalRead(switchPin) == HIGH)
{
digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW
digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH
}
// kui lüliti on LOW, siis liiguta mootorit teises suunas:
else
{ digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH
digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW
}
}
Interaktiivne Arduino skeem
Nüüd kui skeemi üles laed, siis töötab mootor ühtepidi ja kui nupule vajutad, siis teistpidi. Täiendame seda veel ühe lülitusega, mis käivitab mootori ja potentsiomeetriga, mis muudab mootori kiirust.
Komponendid:
x1
x1
x1
x2
x2
x1
x1
x1
x23
Skeem

Kood:
int switchPin = 2; // lüliti 1
int motor1Pin1 = 3; // viik 2 (L293D)
int motor1Pin2 = 4; // viik 7 (L293D)
int enablePin = 9; // viik 1(L293D)
void setup() {
// sisendid
pinMode(switchPin, INPUT);
//väljundid
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// aktiveeri mootor1
digitalWrite(enablePin, HIGH);
}
void loop() {
// kui lüliti on HIGH, siis liiguta mootorit ühes suunas:
if (digitalRead(switchPin) == HIGH)
{
digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW
digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH
}
// kui lüliti on LOW, siis liiguta mootorit teises suunas:
else
{ digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH
digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW
}
}
Interaktiivne Arduino skeem
Katse 7.2: -Kauguse mõõtmise anduri kasutamine-
Komponendid:

x1

x1

x4
Kirjeldus:
Ultraheliandur (sonar) on seade, mis mõõdab kaugust eesoleva objektini ultraheliimpulsside abil. Andur saadab välja helilaine ning mõõdab aega, mis kulub kaja tagasijõudmiseks vastuvõtjani. Kauguse arvutamisel võetakse arvesse heli levimise kiirust õhus (ligikaudu 340 m/s) ning saadud tulemus jagatakse kahega, kuna heli läbib teekonna objektini ja tagasi.
Praktikas kulub heli levimiseks umbes 29 μs ühe sentimeetri kohta. Signaali kestuse mõõtmiseks saab kasutada Arduino funktsiooni pulseIn().
Andur töötab 5 V toitepingel, selle mõõtenurk on kuni 15° ning mõõteulatus 2–450 cm. Tegemist on soodsa, kuid üsna täpse anduriga, mille mõõtevea suurus on ligikaudu ±0,3 cm.
Arduino ühendamisel ühendatakse Echo viik digitaalsisendisse 8 ning Trig viik digitaalsisendisse 7.
Skeem:

Kood:
Variant 1
Variant 2
#define ECHO_PIN 8
#define TRIG_PIN 7
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG_PIN,HIGH);
digitalWrite(TRIG_PIN,LOW);
int distance=pulseIn(ECHO_PIN, HIGH)/50;
Serial.println(distance);
}
#define ECHO_PIN 8
#define TRIG_PIN 7
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(960);
}
void loop() {
Serial.println(measure());
}
int measure()
{
digitalWrite(TRIG_PIN,HIGH);
digitalWrite(TRIG_PIN,LOW);
int distance=pulseIn(ECHO_PIN, HIGH,15000)/50;
return constrain(distance,1,300);
}
Interaktiivne Arduino skeem
Katse 7.3: -Lihtne parkimissüsteem-
Komponendid:
x1
x1
x1
x1
x1
xN
Kirjeldus:
Projekt mõõdab takistuse kaugust ultrahelianduri abil. Kui kaugus on väiksem kui 50, süttib punane LED, buzzer annab helisignaali ja mootori kiirus on 0.
Skeem:

Kood:
#define ECHO_PIN 7
#define TRIG_PIN 8
int motorPin1=3;
int distance=1;
int LedPin=13;
int duration;
const int buzzerPin = 9;
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(motorPin1,OUTPUT);
pinMode(LedPin,OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG_PIN,LOW);
delay(200);
digitalWrite(TRIG_PIN,HIGH);
delay(200);
digitalWrite(TRIG_PIN,LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance=duration/58;
Serial.println(distance);
if (distance>50)
{
analogWrite(motorPin1,100);
digitalWrite(LedPin,0);
noTone(buzzerPin);
delay(1000);}
else
{
analogWrite(motorPin1,0);
digitalWrite(LedPin,250);
tone(buzzerPin, 1000);
}
}
Interaktiivne Arduino skeem
Ülesanne 7.2: Nutikas parkimistõkkepuu süsteem
Kirjeldus:
Selles projektis loodi nutikas parkimistõkkepuu süsteem, mis kasutab ultraheliandurit sõiduki tuvastamiseks. Kui auto läheneb tõkkepuule ja jääb määratud kaugusele, kuvab LCD-ekraan esmalt teate „Auto leitud“ ning seejärel kontrollib süsteem olukorda. Pärast lühikest pausi kuvatakse tervitussõnum „Tere tulemast“ ja servomootor avab tõkkepuu.
RGB LED annab kasutajale visuaalset tagasisidet süsteemi oleku kohta. Kui tõkkepuu on suletud, põleb punane tuli. Kui sõiduk on tuvastatud ja tõkkepuu avaneb, süttib roheline tuli. Kui sõiduk eemaldub andurist, sulgub tõkkepuu automaatselt ning süsteem naaseb algolekusse.
Projekt demonstreerib andurite, servomootori, RGB LED-i ja LCD-ekraani koostööd ühe automaatse juhtimissüsteemi loomisel.
Komponendid:
x1
x1
x1
x1
x1
x1
x1
x4
x25
Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:


Füüsilise mudeli koostamisel kasutati RGB LED-i, mis erines Tinkercad simulatsioonis kasutatud komponendist. Simulatsioonis oli RGB LED-i ühine viik ühendatud maandusega (GND), füüsilises mudelis aga toitepingega (+5 V). Vaatamata erinevale ühendusele töötas süsteem mõlemas keskkonnas korrektselt ning kasutati sama programmi.
Kood:
#include <Servo.h>
#include <LiquidCrystal.h>
Servo barrier;
// LCD: RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 7, 8, 2, 13);
// HC-SR04
const int trigPin = 9;
const int echoPin = 10;
// RGB LED
const int redPin = 5;
const int greenPin = 4;
const int bluePin = 3;
// Servo
const int servoPin = 6;
const int limitDistance = 15;
long duration;
int distance;
int getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH, 30000);
if (duration == 0) {
return 999;
}
return duration * 0.034 / 2;
}
void redLight() {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
}
void greenLight() {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
}
void showClosed() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Parkla sisse");
lcd.setCursor(0, 1);
lcd.print("Suletud");
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
barrier.attach(servoPin);
barrier.write(0);
lcd.begin(16, 2);
redLight();
showClosed();
Serial.begin(9600);
}
void loop() {
distance = getDistance();
Serial.print("Distance: ");
Serial.println(distance);
if (distance > 0 && distance < limitDistance) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Auto leitud");
lcd.setCursor(0, 1);
lcd.print("Kontroll...");
delay(1000);
distance = getDistance();
if (distance > 0 && distance < limitDistance) {
barrier.write(90);
greenLight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tere tulemast");
lcd.setCursor(0, 1);
lcd.print("Avatud");
delay(2000);
}
} else {
barrier.write(0);
redLight();
showClosed();
}
delay(300);
}
Video:
Interaktiivne Arduino skeem
Uuritud funktsioonid
| Funktsioon | Tüüp | Kirjeldus | Kasutus koodis |
|---|---|---|---|
pinMode() |
Standard | Määrab Arduino viigu sisendiks või väljundiks | Ultrahelianduri, RGB LED-i ja teiste komponentide viikude seadistamine |
digitalWrite() |
Standard | Annab digitaalsele viigule väärtuse HIGH või LOW | RGB LED-i värvide juhtimine ja ultrahelianduri TRIG-signaali saatmine |
delayMicroseconds() |
Standard | Peatab programmi töö määratud mikrosekunditeks | Ultraheliandurile lühikese TRIG-impulsi tekitamine |
pulseIn() |
Standard | Mõõdab, kui kaua viik on HIGH või LOW olekus | Ultrahelianduri ECHO-signaali kestuse mõõtmine kauguse arvutamiseks |
delay() |
Standard | Peatab programmi töö määratud millisekunditeks | Kontrollpausi tegemine enne tõkkepuu avamist |
barrier.attach() |
Servo | Seob servomootori valitud Arduino viiguga | Servomootori ühendamine tõkkepuu juhtimiseks |
barrier.write() |
Servo | Pöörab servomootori etteantud nurga alla | Tõkkepuu avamine ja sulgemine |
lcd.begin() |
LiquidCrystal | Määrab LCD-ekraani veergude ja ridade arvu | 16×2 LCD-ekraani alglaadimine |
lcd.clear() |
LiquidCrystal | Kustutab ekraanilt kogu teksti | Ekraani puhastamine oleku muutumisel |
lcd.setCursor() |
LiquidCrystal | Määrab teksti alguskoha LCD-ekraanil | Teksti paigutamine esimesele ja teisele reale |
lcd.print() |
LiquidCrystal | Kuvab teksti LCD-ekraanil | Sõnumite “Auto leitud”, “Kontroll…” ja “Tere tulemast” kuvamine |
Kasutamisvõimalused tavaelus
🅿️ Parklate sissepääsud
Süsteemi saab kasutada parklate sissepääsudes sõidukite automaatseks tuvastamiseks. Kui auto läheneb, avaneb tõkkepuu ning RGB LED ja LCD-ekraan näitavad süsteemi olekut.
🚪 Automaatsed uksed
Sarnast lahendust saab kasutada automaatuste juures. Andur tuvastab inimese või objekti lähenemise ning süsteem avab ukse ilma käsitsi vajutamiseta.
🏬 Kaubanduskeskused
Kaubanduskeskustes aitab automaatne avamissüsteem muuta inimeste liikumise sujuvamaks. Uksed või tõkked avanevad siis, kui külastaja jõuab piisavalt lähedale.
🏢 Büroohooned
Büroohoonetes saab süsteemi kasutada sissepääsude või parkimisalade juures. LCD-ekraan võib kuvada tervituse või teate ning LED näitab, kas läbipääs on lubatud.
♿ Ligipääsetavus
Automaatne avamissüsteem aitab inimesi, kellel on raske ust käsitsi avada. See on kasulik ratastooli kasutajatele, lapsevankriga liikujatele või inimestele, kellel on käed hõivatud.
🏭 Tööstus- ja laoalad
Tööstus- ja laoaladel saab süsteemi kasutada sõidukite või töötajate liikumise kontrollimiseks. Automaatne tõkkepuu või uks aitab muuta läbipääsu turvalisemaks ja mugavamaks.
Ülesanne 7.3: Iseliikuv auto.

Kirjeldus:
Iseliikuv auto, mis tõrjub oma teel olevaid takistusi.
Komponendid:
Skeem:

Märkus: Tegelikus projektis kasutati ühte 6-pesalist AAA patareihoidjat. Skeemil kujutatud kaks eraldi patareipesa ja ON-OFF lüliti ei olnud lõplikus lahenduses kasutusel.
Kood:
// KAUGUSE MÕÕTMISE MUUTUJAD (DISTANCE VARIABLES)
const int trigPin = 8;
const int echoPin = 7;
long duration, distance;
int dist_result;
// MOOTORITE MUUTUJAD (MOTORS VARIABLES)
const int mot1f = 6;
const int mot1b = 5;
const int mot2f = 11;
const int mot2b = 10;
int mot_speed = 180; // Mootorite kiirus (0-255)
int k = 0; // Muutuja sujuvaks pööramiseks
// LOOGIKA MUUTUJAD (LOGICS VARIABLES)
const int dist_stop = 25; // Peatumise kaugus sentimeetrites
const int max_range = 800; // Maksimaalne lubatud väärtus (veatuvastus)
const int min_range = 0; // Minimaalne lubatud väärtus (veatuvastus)
int errorLED = 13; // Integreeritud LED veateadeteks
// ESMANE SEADISTAMINE
void setup() {
Serial.begin(9600); // Algatame jadaside andmete jälgimiseks
// Sensori viikude seadistamine
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(errorLED, OUTPUT);
// Mootorite viikude seadistamine väljundiks (VÄGA OLULINE!)
pinMode(mot1f, OUTPUT);
pinMode(mot1b, OUTPUT);
pinMode(mot2f, OUTPUT);
pinMode(mot2b, OUTPUT);
}
// PÕHIPROGRAMMI TSÜKKEL
void loop() {
int result = ping(); // Küsime andurilt praeguse kauguse
// Kontrollime, kas anduri näit on vigane (0 või liiga suur)
if (result <= min_range || result >= max_range) {
digitalWrite(errorLED, HIGH); // Süütame vea LED-i
motors_stop(); // Ohutuse tagamiseks peatame mootorid
delay(500);
return; // Katkestame selle tsükli ja alustame loop() otsast peale
}
digitalWrite(errorLED, LOW); // Kui kõik on korras, kustutame vea LED-i
// Loogika: mida teha takistuse korral
if (result <= dist_stop) {
// Kui takistus on liiga lähedal (<= 25 cm)
motors_stop(); // Jääme seisma
delay(200);
motors_back(); // Sõidame tagurpidi
delay(1000);
motors_stop();
delay(200);
motors_left(); // Pööramise manööver vasakule
delay(300);
motors_stop();
delay(200);
} else {
// Kui tee on vaba, sõidame otse edasi
motors_forward();
delay(100); // Sõidame lühikeste sammudega, et pidevalt kaugust kontrollida
}
}
// Abifunktsioon ÜHE mõõtmise tegemiseks
int getSingleDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Vajalik 10 mikrosekundiline impulss sensori käivitamiseks
digitalWrite(trigPin, LOW);
// pulseIn() ootab signaali HIGH. Lisatud on aegumine (timeout) 30000 mks (~4.5 meetrit),
// et kood ei jääks seisma, kui kaja tagasi ei tule.
long pulse_time = pulseIn(echoPin, HIGH, 30000);
if (pulse_time == 0) return 400; // Kui kaja ei tulnud, eeldame et ees on vaba tee (400 cm)
return pulse_time / 58; // Teisendame mikrosekundid sentimeetriteks
}
// KAUGUSE MÕÕTMISE FUNKTSIOON (3 mõõtmist ja keskmistamine)
int ping() {
int dist1 = getSingleDistance(); delay(30);
int dist2 = getSingleDistance(); delay(30);
int dist3 = getSingleDistance();
// Kolme arvu sorteerimine mediaani (keskmise) leidmiseks
int middle;
if ((dist1 <= dist2 && dist2 <= dist3) || (dist3 <= dist2 && dist2 <= dist1)) {
middle = dist2;
} else if ((dist2 <= dist1 && dist1 <= dist3) || (dist3 <= dist1 && dist1 <= dist2)) {
middle = dist1;
} else {
middle = dist3;
}
dist_result = middle;
Serial.print("Di: ");
Serial.println(dist_result);
return dist_result;
}
// MOOTORITE JUHTIMISE FUNKTSIOONID
void motors_forward() {
analogWrite(mot1f, mot_speed);
analogWrite(mot2f, mot_speed);
digitalWrite(mot1b, LOW);
digitalWrite(mot2b, LOW);
}
void motors_back() {
digitalWrite(mot1f, LOW);
digitalWrite(mot2f, LOW);
analogWrite(mot1b, mot_speed);
analogWrite(mot2b, mot_speed);
}
void motors_stop() {
// L298N draiveri puhul tagab kõigi viikude seadmine HIGH olekusse mootorite kiire pidurdamise
digitalWrite(mot1f, HIGH);
digitalWrite(mot2f, HIGH);
digitalWrite(mot1b, HIGH);
digitalWrite(mot2b, HIGH);
}
void motors_left() {
analogWrite(mot1f, mot_speed);
digitalWrite(mot2f, LOW);
digitalWrite(mot1b, LOW);
analogWrite(mot2b, mot_speed);
}
void motors_right() {
digitalWrite(mot1f, LOW);
analogWrite(mot2f, mot_speed);
analogWrite(mot1b, mot_speed);
digitalWrite(mot2b, LOW);
}
void motors_forward_left() {
k = mot_speed * 0.8;
analogWrite(mot1f, mot_speed);
analogWrite(mot2f, k);
digitalWrite(mot1b, LOW);
digitalWrite(mot2b, LOW);
}
void motors_forward_right() {
k = mot_speed * 0.8;
analogWrite(mot1f, k);
analogWrite(mot2f, mot_speed);
digitalWrite(mot1b, LOW);
digitalWrite(mot2b, LOW);
}
void motors_back_left() {
k = mot_speed * 0.8;
digitalWrite(mot1f, LOW);
digitalWrite(mot2f, LOW);
analogWrite(mot1b, k);
analogWrite(mot2b, mot_speed);
}
void motors_back_right() {
k = mot_speed * 0.8;
digitalWrite(mot1f, LOW);
digitalWrite(mot2f, LOW);
analogWrite(mot1b, mot_speed);
analogWrite(mot2b, k);
}
Video:
Uuritud funktsioonid
| Funktsioon | Tüüp | Kirjeldus | Kasutus koodis |
|---|---|---|---|
analogWrite() |
Standard / PWM | Saadab PWM-signaali väljundile | Mootorite kiiruse juhtimine |
pulseIn() |
Standard | Mõõdab impulsi kestust | Ultrahelianduri ECHO-signaali mõõtmine |
getSingleDistance() |
Kasutaja loodud | Teeb ühe kauguse mõõtmise | Takistuse kauguse määramine |
ping() |
Kasutaja loodud | Teeb kolm mõõtmist ja leiab mediaani | Stabiilse kauguse väärtuse saamine |
motors_forward() |
Kasutaja loodud | Liigutab robotit edasi | Normaalne liikumine vabal teel |
motors_stop() |
Kasutaja loodud | Peatab mootorid | Takistuse või vea korral peatumine |
Kasutamisvõimalused tavaelus
🤖 Autonoomsed robotid
Sarnast süsteemi kasutatakse autonoomsetes robotites, mis liiguvad iseseisvalt ja väldivad takistusi. Ultraheliandur aitab robotil ümbrust jälgida ning ohutult liikuda.
🏭 Lao- ja tööstusrobotid
Ladudes ja tootmisettevõtetes saavad robotid transportida kaupu ning vältida kokkupõrkeid inimeste ja teiste objektidega. See suurendab töö efektiivsust ja ohutust.
🧹 Robot-tolmuimejad
Paljud robot-tolmuimejad kasutavad sarnaseid kaugusandureid takistuste tuvastamiseks. Süsteem aitab vältida mööblile otsasõitmist ja võimaldab ruumis iseseisvalt liikuda.
🚗 Autonoomsed sõidukid
Takistuste tuvastamise põhimõtet kasutatakse ka autonoomsetes sõidukites. Kuigi pärisautod kasutavad keerukamaid andureid, on tööpõhimõte sarnane – ümbruse jälgimine ja ohutu liikumine.
🚑 Pääste- ja uurimisrobotid
Selliseid süsteeme kasutatakse robotites, mis liiguvad inimestele ohtlikes piirkondades, näiteks varingutes või tööstusõnnetuste järel. Takistuste vältimine võimaldab turvalisemat liikumist.
🎓 Õppe- ja teadusprojektid
Takistusi vältivad robotid on populaarsed haridusprojektides. Need aitavad õppida programmeerimist, andurite kasutamist, robootikat ja automaatjuhtimist praktiliste näidete kaudu.
