Organele de simț ajuta persoana să se orienteze în lumea din jurul lui. Robotul pentru orientare are dispozitive speciale, numite senzori.
NXT include senzori pentru sunet, atingere, distanță și iluminare. Fiecare dintre acestea este destinat anumitor scopuri.
Senzorul de lumină vă permite să determinați iluminarea camerei și, cel mai adesea, capacitatea suprafeței de a reflecta fluxul de lumină.
Luați în considerare diferența, așa cum vede linia pe traiectoria omului și a robotului.
Deci, persoana vede linia:
Deci, vede robotul ei:
Există multe modalități de a învăța un robot să vadă o linie și să se miște în jurul lui. Există programe complexe și foarte simple.
Vreau să vorbesc despre un mod de programare pe care chiar și copiii din clasele II și III vor stăpâni. La această vârstă, este mult mai ușor pentru ei să asambleze structurile prin instrucțiuni, iar programarea robotului este o sarcină dificilă pentru ei. Dar această metodă va permite copilului să programeze robotul pe orice traseu al traseului timp de 15-30 minute (cu o verificare pas cu pas și montarea unor caracteristici traiectorice).
Această metodă a fost testată la concursurile municipale și regionale în domeniul roboticii din districtul Surgut și KhMAO-Ugra și a adus școala noastră primele locuri. În același loc, am devenit convins că acest subiect este foarte relevant pentru multe echipe.
Când se pregătește pentru acest tip de competiție, programarea este doar o parte a soluției sarcinii. Trebuie să începeți cu construirea unui robot pentru o anumită rută. În articolul următor vă voi spune cum. Ei bine, și din moment ce mișcarea de pe linie este foarte comună, voi începe cu programarea.
Luați în considerare o variantă a unui robot cu doi senzori de lumină, deoarece este mai ușor de înțeles pentru studenții de grade inferioare.
Senzorii de lumină sunt conectați la porturile 2 și 3. Motoarele către porturile B și C.
Senzorii sunt expuși de-a lungul marginilor liniei (încercați să experimentați prin plasarea senzorilor la distanțe diferite unul față de celălalt și la diferite înălțimi).
Un punct important. Pentru o performanță mai bună a unei astfel de scheme, este de dorit să selectați o pereche de senzori prin parametri. În caz contrar, va fi necesar să introduceți blocul de corectare a valorilor senzorilor.
Instalarea senzorilor pe șasiu conform schemei clasice (triunghi), aproximativ, ca în figură.
Programul va consta dintr-un număr mic de blocuri:
1. Două blocuri de senzori de lumină;
2. Patru blocuri de "matematică";
3. Două blocuri de motor.
Două motoare sunt folosite pentru a controla robotul. Puterea fiecărui 100 de unități. Pentru circuitul nostru, luăm valoarea medie a puterii motorului egală cu 50. Aceasta înseamnă că viteza medie la deplasarea de-a lungul unei linii drepte va fi de 50 de unități. În cazul unei abateri de la mișcarea rectilinie, puterea motoarelor va crește sau scădea proporțional, în funcție de unghiul de deformare.
Acum, să vedem cum să conectăm toate blocurile, să configuram programul și ce se va întâmpla în el.
Expunem doi senzori de lumină și le atribuim porturile 2 și 3.
Luăm blocul de matematică și alegem "scăderea".
Conectăm senzorii de lumină de la ieșirile "Intensitate" cu autobuzele la blocul de matematică la intrările "A" și "B".
Dacă senzorii robotului sunt montați simetric de centrul liniei de urmărire, valorile ambelor senzori vor fi egale. După scădere, obținem valoarea - 0.
Următorul bloc de matematică va fi folosit ca un coeficient și "Înmulțirea" ar trebui să fie setat în el.
Pentru a calcula coeficientul, trebuie să măsurați nivelul "alb" și "negru" cu blocul NXT.
Să presupunem că: alb -70, negru -50.
În continuare considerăm: 70-50 = 20 (diferența dintre alb și negru) 50/20 = 2,5 (valoarea, medie a puterii atunci când conduceți direct în blocuri matematică am pus în 50. Această valoare, plus puterea adăugată cu corecții pentru mișcarea trebuie să fie egală 100)
Încercați să setați valoarea de 2,5 la intrarea "A" și apoi să o ridicați mai precis.
Pentru a introduce "B" din blocul de matematică "Înmulțire" conectați ieșirea "Rezultatul" din blocul anterior de matematică "Extragere".
Apoi vine perechea - blocul de matematică (Addition) și motorul V.
Configurarea unui bloc de matematică:
• Intrarea "A" este setată la 50 (jumătate din puterea motorului).
• Intrarea "B" este conectată printr-o magistrală la ieșirea "Rezultat" a blocului de matematică "Înmulțire".
• Ieșirea blocului "Rezultat" este conectată printr-o magistrală la intrarea "Putere" a motorului B.
Apoi, perechea este un bloc de matematică (scădere) și un motor C.
Configurarea unui bloc de matematică:
• Intrarea "A" este setată la 50.
• Intrarea "B" este conectată printr-o magistrală la ieșirea "Rezultat" a blocului de matematică "Înmulțire".
• Ieșirea blocului "Rezultat" este conectată printr-o magistrală la intrarea "Putere" a motorului C.
Ca urmare a tuturor acestor acțiuni, veți primi un astfel de program:
Deoarece toate acestea vor funcționa într-o buclă, atunci adăugați "Loop", selectați-l și transferați-l pe "Loop".
Acum, să încercăm să ne dăm seama cum va funcționa programul și cum să îl configurați.
In timp ce robotul se deplasează pe un meci de valori de senzor linie dreaptă, apoi ieșire bloc „Scadere“ este setat la 0. Ieșirea „Multiplicarea“ oferă, de asemenea, o valoare de 0. Această valoare este alimentată în paralel cu o pereche de control al motorului. Din moment ce aceste blocuri setare este de 50, atunci adunarea sau scăderea de la 0 nu are nici un efect asupra puterii motorului. Ambele motoare funcționează la aceeași putere de 50, iar robotul se rotește în linie dreaptă.
Să presupunem că traseul face o întoarcere sau robotul deviază de la linia dreaptă. Ce se va întâmpla?
Prin desen arată că senzorul de iluminare conectat la portul 2 (în continuare senzori 2 și 3) este crescută, deoarece alunecă în jos pe un câmp alb, iar senzorul de iluminare 3 scade. Să presupunem că valorile acestor senzori devin. senzor 2 - 55 de unități și senzor 3 - 45 de unități.
Block „Scădeți“ determină diferența dintre valorile celor doi senzori (10) și o transmite către unitatea de corecție (înmulțire cu un factor (10 * 2,5 = 25)) și în unitățile de control
motoare.
În blocul de matematică (Addition) motor de control B la valoarea de viteza medie de 50
25 va fi adăugat și o putere de 75 va fi aplicată motorului B.
În blocul de matematică (scăderea) a comenzii motorului C de la valoarea vitezei medii 50, 25 va fi scăzut iar valoarea motorului 25 va fi alimentată la motorul C.
Astfel, abaterea de la linia dreaptă va fi corectată.
Dacă traseul se întoarce brusc pe lateral și senzorul 2, se dovedește a fi alb și senzorul 3 pe negru. Valorile de iluminare ale acestor senzori devin. senzor 2 - 70 de unități și senzor 3 - 50 de unități.
Blocul de "scădere" va determina diferența dintre valorile celor doi senzori (20) și îl va alimenta unității de corecție (20 * 2,5 = 50) și apoi la unitățile de control ale motorului.
Acum, în blocul de matematică (Addition) al comenzii motorului B, se va aplica motorului B valoarea 50 +50 = 100.
În blocul de matematică (scăderea) a comenzii motorului C, se va aplica motorul C valoarea 50 - 50 = 0.
Și robotul va efectua o mișcare bruscă.
Pe câmpurile albe și negre, robotul ar trebui să meargă în linie dreaptă. Dacă nu se întâmplă acest lucru, încercați să ridicați senzori cu aceleași valori.
Acum vom crea un nou bloc și îl vom folosi pentru a muta robotul de-a lungul oricărui traseu.
Selectați ciclul, apoi din meniul "Editare" alegem comanda "Creează blocul meu".
În caseta de dialog "Block Builder", dați numele blocului nostru, de exemplu "Go", selectați pictograma blocului și faceți clic pe "READY".
Acum avem un bloc care poate fi folosit în cazurile în care trebuie să ne mișcăm de-a lungul liniei.