Sunteți pe pagina 1din 22

Algoritmi de comanda a roboților

UNIVERSITATEA TEHNICĂ „GHEORGHE ASACHI” DIN IAȘI

FACULTATEA DE INGINERIE ELECTRICĂ, ENERGETICĂ ȘI


INFORMATICĂ APLICATĂ

Algoritmi de comanda
a robotilor

Profesor coordonator:
Dr.Ing. Dănuț Irimia
Realizatori:

Văduva Vasile
Sticea Ciprian
Popescu Alexandru
Țapu Ionuț Adrian

1
Algoritmi de comanda a roboților

Cuprins
Capitolul I............................................................................................................................................ 3
Prezentarea generală a robotului A4WD1 ..................................................................................... 3
Modulul BOT BOARD II ................................................................................................................... 5
Modulul de alimentare ................................................................................................................... 6
Motoarele utilizate ......................................................................................................................... 6
Senzorul de proximitate ................................................................................................................. 8
Sabertooth V1.03 ........................................................................................................................... 9
Capitolul II......................................................................................................................................... 17

2
Algoritmi de comanda a roboților

Capitolul I
Prezentarea generală a robotului A4WD1
Robotul Lynxmotion Aluminum 4WD1 este un robot robust, modificabil și
extensibil pentru o experimentare autonomă. Robotul poate folosi anvelopele și roțile
pentru vehiculele Radio Control (RC), astfel încât robotul are o tracțiune excelentă. Are o
punte suplimentară care poate fi adăugată pe partea de sus pentru extindere viitoare.
Robotul este capabil să efectueze o sarcină de 2,5kg. Acesta utilizeaza 4 motoare de curent
continuu câte unul pe fiecare roată. Acestea sunt comandate câte două și anume prin
intermediul portului P1 de la ieșirea circuitului specializat Bot Board II se comandă
motoarele de pe partea dreaptă, iar prin intermediul portului P2 se comandă motoarele de
pe partea stângă, realizându-se în acest fel controlul direcției. Pentru a fi capabil să se
ferească singur de obstocole se utilizează un senzor de proximitate cu infraroșu.
Programarea acestuia se face utilizând modulul BasicATOM. Modulele
BasicATOM și BasicATOM Pro sunt microcomputere autonome. Există sisteme de reglare
a puterii, sistem de ceas și hardware de comunicații. Seria Nano este nucleul BasicATOM.
Robotul A4WD1 este prezentat in Figura.1.1.

Figura 1.1. Vedere de sus a robotului utilizat A4WD1

3
Algoritmi de comanda a roboților

MBasic este limbajul de programare utilizat pentru a programa seria BasicATOM.


MBasic se bazează pe un subset de bază. În general, este considerat unul dintre cele mai
utilizate limbaje, mai utilizat decât C. Acesta a fost primul produs creat de Microsoft în
primele zile pentru una dintre primele calculatoare programate la domiciliu, numite Altair.
BasicATOM Pro suportă și limbajul C, dar focalizarea primară a acestui manual este
centrată în jurul MBasic.
Basic Micro Studio este piesa principală de software utilizată pentru a scrie codul
pentru oricare dintre produsele Basic Basic, cum ar fi BasicATOM sau BasicATOM Pro
module. Acesta este denumit în mod obișnuit un mediu integrat de dezvoltare sau IDE pe
scurt. IDE conține 3 părți principale: un editor de text pentru scrierea programelor, un
compilator care să traducă programul în ceva ce microcontrolerul o va înțelege și un
încărcător pentru a descărca programul pe microcontroler.
În figura 1.2. este prezentată schem de ansamblu de funționare a robotului.

Figura 1.2. Shema de funcționare a robotului A4WD1

4
Algoritmi de comanda a roboților

Modulul BOT BOARD II


În Figura 1.3 este prezentat modulul BOT BOARD II care face parte din structura
robotului A4WD1.

Figura 1.3. Structură Bot Board II


Prezentare generală:

1 – cele 3 leduri și butoanele aferente utilizează 3 porturi I/O pentru a crea interfața de
utilizator dorită. Ledul se poate aprinde prin setarea portului ca ieșire în zero logic.
Dacă portul este setat ca intrare acesta va detecta apasarea butonului.
2 – acest port este utilizat pentru conectarea unui controler Playstation Sony prin care se
poate controla robotul.
3 – stabilizatorul de 5V. Tensiunea maximă de intrare este de 9V și curentul de ieșire de
500mA
4 – led care se aprinde în momentul în care placa este alimentată
5 – intrarea logică VL. Aceasta se conecteaza la bateria de 9V și va asigura alimentarea
liniei de 5V. Această intrare poate fi utilizată pentru izolare între VL și VS.
6 – intrarea VS (tensiunea de alimentare a servomotoarelor). Aceasta poate fi cuprinsă
între 4.8V si 7.2V.
7 – jumperul pentru conectarea de la aceeași baterie pentru VL și VS.
8 – Acest jumper permite ca intrările VL și / sau VS să fie conectate la două intrări
analogice ale Atom 28 printr-un divizor de tensiune 4: 1. De exemplu, dacă tensiunea
bateriei este de 9V, intrarea analogică va vedea 2.25V.

5
Algoritmi de comanda a roboților

9 – Acest jumper permite activarea difuzorului de pe PCB. Pentru a utiliza difuzorul,


trebuie trimisă comanda corespunzătoare de generare a sunetului la pinul 9. De reținut
că pinul I / O comanda un tranzistor.
10 – cupla de programare
11 – buton RESET microcontroler
12 – soclu modul microcontroler
13 – jumperi pentru configurarea I/O pentru a folosi VL sau VS.
14 – conexiuni servomotoare, controler motor, senzori etc. la microcontroler.

Modulul de alimentare
Alimentarea modulului BOT BOARD II se realizează cu ajutorul circuitului din
Figura 1.4.

Figura 1.4. Schemă electrică alimentare Bot Board II

Modulul de alimentare este conectat la bateria de 14,8V prin conectorul J1 și are la


intrare butonul SW1 de ON/OFF. Acest modul are în componența sa două circuite
stabilizatoare de tensiune, unul de 6V si unul de 9V. Circuitul stabilizator LM7806
alimentează prin conectorul J1 servomotoarele pentru acționarea turelei iar circuitul
stabilizator LM7809 este conectat la partea logică a blocului BOT BOARD II prin
conectorul J2. Modulul de alimentare este prevăzut cu 2 condensatori la ieșire pentru
filtrarea tensiunii.

Motoarele utilizate
La acest robot sunt utilizate 4 motoare de curent continuu de tipul KG37F260-030.
Tensiunea de alimentare a motoarelor este de 12V. Fiecare motor este conectat la câte o
roată iar controlul lor este realizat pe grupuri de 2 motoare. Pentru a pune în mișcare
robotul, motoarele de pe partea stângă (față si spate) sunt comandate împreună și cele de
pe partea dreaptă de asemenea.

6
Algoritmi de comanda a roboților

Astfel se realizează comanda motoarelor pentru cele 2 laturi în mod independent.


În Figura 1.5. sunt prezentate caracteristicile motoarelor utilizate.

Figura 1.5. Caracteristicile motoarelor utilizate

7
Algoritmi de comanda a roboților

Senzorul de proximitate
Pentru detectarea obiectelor aflate în apropiere este utilizat un senzor de
proximitate de tipul GP2D120XJ00F. Acesta detectează obiectele prin emisia unui puls de
energie luminoasă în domeniul infraroşu cu ajutorul unei diode electroluminiscente (LED).
Dacă acest puls luminos întâlneşte un obiect de care se reflectă înapoi spre senzor, reflexia
este captată de elementul fotoreceptor al senzorului şi semnalizată. Senzorul detectează,
fără contact, obiectele capabile sa reflecte radiaţia electromagnetică în spectrul infraroşu.

Schema bloc a senzorului de proximitate este prezentată în Figura 1.6.

Figura 1.6. Schema bloc a senzorului de proximitate

Diagrama cu timpii de măsurare este prezentată în Figura 1.7.

8
Algoritmi de comanda a roboților

Figura 1.7. Diagrama timpilor de măsurare

Sabertooth V1.03
Sabertooth 2x32 este un driver automat cu două canale capabil să furnizeze 32 de amperi la
patru motoare, cu curenți de vârf de până la 64 amperi per motor. Acesta poate fi operat de
la radio, analog, TTL serial sau intrări USB. Utilizează unitatea de regenerare și frânarea
pentru o funcționare eficientă. În figura 1.8. este reprezentat diver-ul Sabertooth de control
al motoarelor.

Figura 1.8. Sabertooth 2x32

O varietate de moduri de funcționare, inclusiv mixarea stilului rezervorului și


calibrarea automată, permit majoritatea proiectelor să funcționeze imediat din cutie. În plus
față de modurile de funcționare standard, Sabertooth 2x32 dispune de intrări de semnal
suplimentare și ieșiri de putere, precum și de opțiuni de configurare îmbunătățite.

9
Algoritmi de comanda a roboților

Modurile de operare definite de utilizator permit o funcționare personalizată, cum


ar fi comutarea între controlul radio și intrările în mișcare pe calculator, opririle de urgență
sau suprasarcinile de control al panoului frontal.

Ieșirile auxiliare de putere pot fi configurate pentru a permite ca Sabertooth 2x32 să


funcționeze de la o sursă de alimentare fără baterie paralelă sau de control automat al
frânărilor electromagnetice. Atunci când este combinat cu modulul de control al mișcării
Kangaroo x2 al Dimension Engineering, Sabertooth 2x32 poate fi utilizat pentru poziția în
buclă închisă sau pentru controlul vitezei cu encoder sau feedback analogic. Starea
conducătorului auto poate fi monitorizată în timp real utilizând portul USB în orice mod de
operare, făcând astfel depanarea proiectului dvs. mai rapid și mai ușor. Sabertooth 2x32
este mai flexibil, mai robust și mai puternic decât driverele motorii anterioare, fiind de
asemenea mai ușor de utilizat.

Motor 1&2 Motor 3&4

Figura 1.9. Intrări – Ieșiri Sabertooth 2x32

Main Power Input: conectare la o baterie de 6V-33.6V sau la o sursă de alimentare.

Motor 1&2 and Motor 3&4: Conectare motoarele 1 si 2 la terminalele M1A și M1B.
Conectare motoare 3 si 4 la terminalele M2A și M2B.

DIP Switch: Acestea sunt utilizate pentru a seta modul de operare și opțiunile. Poate fi
schimbat în timpul funcționării.

10
Algoritmi de comanda a roboților

USB: Un port USB standard. Conectare la un PC sau la altă gazdă USB pentru a controla,
monitoriza sau modifica.

Logic Gound: Intrarea 0V este conectat intern la B.

5V Output: 5V este o ieșire reglată de 5 volți. Aveți posibilitatea să-l utilizați pentru a
alimenta circuitul suplimentar de până la 1 amper.

Main signal input: Aici se conecteaza semnalele principale analogice , R/C sau seriale.

Aux Signal Input: Acestea pot fi folosite pentru control suplimentar. Opțional în
majoritatea modurilor.

Power Outputs: Acestea se conectează la rezistoarele de tensiune, la frânele


electromagnetice, la înfășurările de câmp sau la alte sarcini moderate de putere. Curentul
maxim pe canal este de 8A.

Status and error LEDs: Aceste lumini strălucesc și blițeaza pentru a indica starea
dispozitivului Sabertooth 2x32.

Opțiuni mixte și independente:

Sabertooth oferă moduri mixte concepute special pentru roboți de acționare


diferențiali, în cazul în care două motoare oferă atât direcție, cât și propulsie. De asemenea,
are opțiuni independente în toate modurile de operare. Acest lucru este util dacă aveți patru
motoare de control, dar acestea nu sunt neapărat folosite pentru a conduce un robot de
acționare diferențial. Motoarele nu trebuie să fie potrivite sau chiar similare, atâta timp cât
ambele sunt în limitele de funcționare ale lui Sabertooth.

Caracteristici

Motor de conducere dublă cu opțiuni mixte și independente


Sabertooth 2x32 va conduce patru motoare de până la 32A continuu și 64A fiecare.
Acestea pot fi amestecate împreună pentru un autovehicul tip rezervor sau pot funcționa
independent.Acesta poate fi controlat prin tensiuni analogice, transmițătoare R / C,
comenzi seriale TTL, USB sau o combinație a acestor semnale.

Intrare USB
Fiecare de motor din a treia generație Sabertooth este livrat cu standard USB.
Acest lucru face ca operarea de la un PC sau un microcontroler avansat la fel de ușor ca
conectarea cablului. Driverele Windows sunt incluse în software-ul PC-ul DEScribe și nu
este necesar un driver pentru Linux. USB este folosit și pentru a seta opțiuni, a crea moduri
de operare personalizate, pentru a monitoriza sistemul și a actualiza firmware-ul cu noi
caracteristici.

11
Algoritmi de comanda a roboților

Intrări și ieșiri auxiliare


Sabertooth 2x32 are două ieșiri suplimentare de putere de 8A, care pot fi
configurate pentru a acționa frânele electromagnetice pe motoare, acționează ca o clemă de
tensiune pentru a proteja sursele de alimentare sau pentru a acționa alte sarcini de medie
putere. Sabertooth 2x32 are, de asemenea, intrări de semnal suplimentare și porturi extra
seriale, care permit opțiuni de control mai bune.

Moduri de funcționare create de utilizatori pentru aplicații personalizate


Adesea auzim că un conducator de motor ar fi perfect dacă ar avea doar o intrare
sau o modificare minoră de funcționare. A treia generație de motoare Sabertooth, cum ar fi
2x32, au moduri de operare scriptabile, care vă permit să amestecați și să potriviți intrările
analogice, R / C, serial și USB, să creați funcții de ieșire personalizate și să gestionați
automat sarcinile. Puteți chiar să comutați de la un tip de intrare la altul. Multe locuri de
muncă care ar fi luat un microcontroler suplimentar pot fi acum înmânate doar cu
Sabertooth 2x32.

Reglajul PID de auto-reglare utilizând placa de extensie Kangaroo x2 opțională


Atunci când este utilizat împreună cu placa de extensie Kangaroo x2 opțională,
Sabertooth 2x32 funcționează cu un encoder quadrator sau cu un feedback potențiometric
pentru controlul vitezei sau poziției. Deoarece este auto-tuning, puteți săriți orele sau zilele
de lucru pentru a vă forma coeficienții PID.

Unitate de regenerare sincronă cu frecvență de comutare ultrasonică


Sabertooth 2x32 are intrări de înaltă rezoluție și peste 4000 de viteze de ieșire
pentru controlul cel mai fin pe piață. Frecvența de comutare este de peste 29 kHz, deci nu
există nici un motor deranjant. Ieșirile utilizează rectificarea sincronă pentru eficiență
ridicată și generare redusă a căldurii, precum și unitate de regenerare pentru a economisi
energie și a prelungi durata de viață a bateriei.

Limita de curent reglabilă, ratele de rampă și protecția termică


Limita de curent și de temperatură a dispozitivului Sabertooth 2x32 poate fi setată
pentru fiecare canal de motor. Acest lucru poate fi folosit pentru a proteja mecanismul
dispozitivului dvs., precum și pentru a se proteja.

Montare și configurare ușoară


Sabertooth 2x32 dispune de un nou radiator CNC prelucrat dintr-un singur bloc de
aluminiu. Montarea este realizată cu hardware-ul inclus 4-40. Toate conexiunile sunt prin
terminale cu șurub, deci nu sunt necesare cabluri de lipit sau speciale, altele decât cablul
micro USB inclus.

12
Algoritmi de comanda a roboților

Intrări

Semnale princioale de intrare


Semnalele princiale sunt marcate cu S1 si
S2. Acestea pot fi setate prin intrari
analogice, R/C sau comunicatie seriala. Cand
utilizam comunicatia serial, S1 este portul
Rx si S2 este portul Tx.

Semnalele princiale sunt marcate cu S1 si


S2

Intrari auxiliare
Intrarile auxiliare sunt marcate cu A1 si A2.
Acestea pot fi setate prin intrari analogice,
R/C sau comunicatie serial. Cand utilizam
comunicatia serial, A1 este portul Rx si A2
este portul Tx.

Intrarile auxiliare sunt marcate cu A1 si A2

Intrari USB
Sabertooth se conectează printr-un conector
micro USB standard. Un driver de Windows
se instalează cu software-ul PC-ului
DEScribe. Linux și Mac vor ieși din cutie
fără driver. Portul USB este, de asemenea,
folosit pentru a comunica cu DEScribe
pentru configurarea lui Sabertooth 2x32.

Intrarile USB nu sunt marcate

Figura 1.10. Intrări Sabertooth 2x32

Sabertooth 2x32 are patru intrări logice S1, S2, A1 și A2. Domeniul de intrare
analogic este de la 0 la 5 volți. Semnalele digitale pot fi logice 3, 3.3 sau 5V. Toți
conducatorii din generația a treia, cum ar fi Sabertooth 2x32, includ un port USB. Portul
USB poate fi utilizat pentru controlul de la un PC sau procesor încorporat, cum ar fi
Raspberry Pi. De asemenea, poate fi folosit pentru a monitoriza intrările și ieșirile, pentru a
configura modurile de utilizator și setările personalizate și pentru a actualiza firmware-ul.

13
Algoritmi de comanda a roboților

Ieșiri

M1 M2

M3 M4

Figura 1.11. Schema de alimentare a motorelor

Motor Outputs
Releele M1, M2, M3și M4 ale motoarelor Sabertooth 2x32 sunt mecanisme de
regenerare sincrone pe 12 biți. Au o frecvență de comutare de 30 kHz pentru funcționarea
silențioasă. Fiecare canal are o limită de curent programabilă. De asemenea, este posibilă
dezactivarea regenerării pentru a acționa încărcături precum lămpile sau rezervoarele
anodice sau dezactivarea completă a ieșirilor și a frânării pentru a permite motoarelor să
circule liber.

Motoarele tipice utilizate cu un motor Sabertooth 2x32 includ motoare cu magnet


permanent cu fracționare a călării, motoare de tip scaun cu rotile, motoare tip scooter și
motoare cu scule cu perii. Cele patru motoare cu magnet permanent pot fi făcute să
funcționeze. Motoarele Sabertooth au fost de asemenea utilizate pentru a acționa solenoizi
mari, lămpi, încălzitoare, răcitoare, electromagneți, agitatoare și traductoare. Pentru a
minimiza încălzirea și pierderile, utilizați un cablu cât mai mare pentru motoarele dvs.,
după cum este posibil. Calibrul 12 este tipic pentru scurgerile de cabluri scurte.

Indicatori de iesire

14
Algoritmi de comanda a roboților

Două dintre intrările de semnal, S2 și A2, pot fi utilizate ca ieșiri de 20 milliamperi,


de 3,3 volți. Acest lucru este folosit în mod obișnuit pentru a acționa LED-urile pentru
panourile de comandă de la distanță sau pentru a semnala microcontrolerele. Ieșirile
indicatoare sunt funcții secundare ale intrărilor S2 și A2. Când sunt în modul indicator,
acești pini au o rezistență încorporată în serie de 220 ohmi, astfel încât să poată încărca
direct încărcăturile.

Puterea la iesire

Aceste ieșiri deschise ale colectorului se pot scufunda până la 8 amperi de curent
fiecare. Ieșirile de putere pot fi configurate ca cleme de tensiune, frâne sau ieșiri
controlabile.

Cu un conducator tipic de regenerare, este dificil să se opereze de la o sursă de


alimentare, deoarece în timpul frânării nu există undeva ca energia regenerată să disipeze.
Acest lucru poate duce la oprirea sau deteriorarea sursei de alimentare. Prin conectarea
ieșirilor de putere la un pachet de rezistență (vândut separat sau construit propriu),
Sabertooth 2x32 poate funcționa de la o sursă de alimentare fără o baterie sau circuite
suplimentare. Valoarea rezistorului trebuie calculată pentru a furniza curentul tipic al
motorului sau 8 amperi, oricare dintre acestea este mai mică. Modul clemă de tensiune este
selectat utilizând fila ieșiri de alimentare din software-ul DEScribe. Voltaj Clamp este
comportamentul implicit pentru ambele ieșiri P1 și P2.

Frânele

Ieșirile de putere pot fi de asemenea utilizate pentru a acționa frânele


electromagnetice. Sistemele, cum ar fi scaunele cu rotile, au adesea frâne pentru a preveni
rularea atunci când se scoate energia. Frânele sunt, de asemenea, utilizate în mașinile cu
comandă numerică și automatizarea pentru a ține alinierea atunci când alimentarea este
eliminată sau pentru a reduce consumul de energie. În modul frânare, frânele se decuplează
automat când mișcarea este comandată și se cuplează atunci când motorul se oprește. Când
se utilizează modul frânare, ieșirea P1 este legată de ieșirea motoarelor M1 si M2, iar
ieșirea P2 este legată de ieșirea motoarelor M3 si M4. Cu schimbarea timpului de frânare,
modul de frânare poate fi de asemenea utilizat pentru a controla câmpul într-o rană cu șunt
sau motor excitat separat. Modul de frânare trebuie să fie selectat și configurat din fila
ieșiri de alimentare utilizând software-ul DEScribe.

Putere controlată

În cele din urmă, ieșirile de putere pot fi utilizate ca ieșiri suplimentare de putere
variabilă. Acestea ar putea fi folosite pentru a acționa ventilatoarele, solenoizii, supapele,
încălzitoarele sau dispozitivele similare de putere similare. Acest lucru este utilizat în
principal cu intrări seriale sau USB sau cu programe personalizate de utilizator. Puterea
controlată trebuie selectată în DEScribe.

Sabertooth 2x32 poate fi utilizat cu o varietate de tipuri de baterii și tensiuni.


Atunci când rulați de la o baterie care poate fi deteriorată de descărcări profunde, cum ar fi

15
Algoritmi de comanda a roboților

un polimer litiu sau o baterie de plumb acid, trebuie să setați comutatorul DIP 3 în poziția
de protecție a acumulatorului, care este oprită. Când se află în această poziție, LED-ul
Status va clipi din numărul de celule detectate, urmat de o pauză, într-un model repetat.
Acest lucru este util pentru a verifica dacă Sabertooth a detectat numărul corect de celule.
Când bateria este epuizată, dispozitivul Sabertooth va opri motoarele, iar LED-urile Status
și Error vor clipi sincron. Atunci când utilizați o baterie, trebuie sa va asigurați că se poate
ocupa de tragerea curentă pe care vor furniza motoarele. Deoarece Sabertooth este un
motor de regenerare a motorului și va returna energia la baterie atunci când se comandă
frânarea, se recomandă numai baterii reîncărcabile.

Figura 1.13. Comutatorul DIP 3

Comutatorul DIP 3 selectat în poziția OFF activeaza modul protecție baterie

Tipul bateriei Numarul de celule Tensiune nominala


Lithium Polymer or Lithium 2-8 7.4V - 29.6V
Ion

În mod prestabilit, numărul de celule este detectat automat. Sabertooth presupune


că bateria este încărcată complet când pornește. Cu baterii cu număr mare de celule care
sunt descărcate parțial, acest lucru poate fi inexact. Dacă nu intenționați să utilizați mai
multe tensiuni, puteți specifica bateria exactă care va fi utilizată pentru a evita această
problemă.

16
Algoritmi de comanda a roboților

Capitolul II

Figura 2.1. Schema logica de control a robotului

Cablul de date serial DB9


Cablul serial de date DB9 este utilizat pentru a ne conecta la controler-ul Bot Board II cu
ajutorul PC-ului și a încărca programul pe robot.
'------------inițializarea porturilor-------------------
low P0
low P1
low P2

17
Algoritmi de comanda a roboților

low P8
low P9
turela con P8
elevatie con P9

prox con P0 ;senzorul de proximitate


MotDreapta con P1
MotStanga con P2

'------------definirea variabilelor-------------------

senzor var word


pozitie_turela var word
obstacol var bit
val_stg var word
val_dr var word
orientare_dreapta var bit
orientare_stanga var bit
orientare_centru var bit
timp_cotire var byte
timp_cotire=80

tmp var byte

tmp=0
orientare_centru=0
orientare_dreapta=0
orientare_stanga=0 ' initializare orientare turela

pozitie_turela=3050

main ' start bucla principala


adin prox,senzor
serout s_out, i9600,[0,DEC senzor,13] ; citirea senzorului

if senzor > 180 then


obstacol=1
endif

if obstacol=1 then
gosub orientare
else
pulsout turela,pozitie_turela

18
Algoritmi de comanda a roboților

gosub mers_inainte
endif

pause 16
goto main
;-------------------------------- sfarsitul buclei principale

orientare
;---------------------------------stanga
if orientare_stanga=1 then
pozitie_turela=pozitie_turela-50
pulsout turela, pozitie_turela
if pozitie_turela=2050 then
adin prox,val_stg
orientare_stanga=0
orientare_dreapta=1
endif
endif
;-------------------------------- dreapta
if orientare_dreapta=1 then
pozitie_turela=pozitie_turela+50
pulsout turela, pozitie_turela
if pozitie_turela=4100 then
adin prox,val_stg
orientare_stanga=1
orientare_dreapta=0
orientare_centru=1
endif
endif

if orientare_centru = 1 then
pozitie_turela=pozitie_turela-50
pulsout turela, pozitie_turela
if pozitie_turela=3050 then
adin prox,val_stg
orientare_stanga=0
orientare_dreapta=0
orientare_centru=0
endif
endif

if (orientare_stanga=0) AND (orientare_dreapta=0) AND (orientare_centru=0) then


if val_stg>val_dr then

19
Algoritmi de comanda a roboților

if tmp<timp_cotire then
gosub cotire_spatestanga
tmp = tmp+1
else
tmp =0
val_stg=0
val_dr=0
obstacol=0
endif
else
if tmp<timp_cotire then
gosub cotire_spatedreapta
tmp = tmp+1
else
tmp =0
val_stg=0
val_dr=0
obstacol=0
orientare_stanga=1
endif
endif
endif

return

mers_inainte
pulsout MotDreapta,2500
pulsout MotStanga,2500
return

mers_inapoi
pulsout MotDreapta,3100
pulsout MotStanga,3100
return

cotire_spatestanga
pulsout MotDreapta, 2850
pulsout MotStanga, 3150
return

cotire_spatedreapta
pulsout MotDreapta, 3150
pulsout MotStanga, 2850
return

20
Algoritmi de comanda a roboților

stop_motor
pulsout MotDreapta,3050
pulsout MotStanga,3050

return

21
Algoritmi de comanda a roboților

Bibliografie

[1] http://www.lynxmotion.com/driver.aspx?Topic=assem05;

[2] http://www.cs.cmu.edu/~garthz/research/Balancer/datasheets/Sabertooth2x10.pdf;
[3] https://www.robofun.ro/senzori/infrarosu/senzor_sharp_%20GP2D120XJ00F;

[4] http://www.cs.cmu.edu/~garthz/research/Balancer/datasheets/Sabertooth2x10.pdf;

[5] http://superrobotica.com/download/s330090/ghm14.pdf;

[6] https://www.google.ro/search?q=Bot+board+II&rlz=1C1CHBF_enRO719RO719&
espv= 2&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjK85j5_L_TAhXIuRQK
HbTTD60Q_AUICCgB&biw=1600&bih=770#imgrc=uAJLGvfY3d_YHM;

22

S-ar putea să vă placă și