Articole similare

PocketBot - robot intr-o cutie de chibrituri

 

PocketBot top view descriptionPocketBot – robotul care urmareste linia, a fost initial proiectat sa incapa intr-o cutie de chibrituri. PCB-ul cu doua straturi, realizat manual, are rol si de sasiu pentru robot. Robotul este alimentat cu doi acumulatori Lithium-ion, conectati in paralel (3.6V, 40mAh fiecare). Programul robotului, scris in C, ruleaza pe microcontrolerul Atmel ATmega8. Programatorul ICSP si o seriala UART pentru depanare se conecteaza la conectorul cu 8 pini direct pe PCB.

PocketBot bottom view description
dimensiuni:
48 × 32 × 12 mm
greutate:
19 g (corp 13g, baterii 6g)
viteza:
0.35 m/s (cand urmareste linia)
0.6 m/s (maxim)

Sasiul

pocketbot wheelframe descr

Directia diferentiala se face prin doua roti separate (diametru 8mm). Dimensiunile angrenajului pentru viteze au fost elementul cheie al robotului, datorita restrictiilor de spatiu disponibil. Din fericire, l-am intalnit pe Josef Vandělík care a proiectat si realizat sasiul pentru roti. Acest sasiu foloseste un mecanism de transfer prin frecare pentru a conecta motorul de roti. Conectarea motorului la roti se face prin presiune magnetica: un magnet de neodymium (cum sunt cele folosite la HDD) din axul central atrage axul rotii, presand fiecare roata de axul motorului.

Schema si PCB

pocketBot schemapocketBot pcb

Urmarirea liniei

Robotul este capabil sa urmareasca linia, adica poate urmari o linie neagra pe o suprafata luminoassa. In caz de incrucisare a traseelor, robotul alege directia inainte. Robotul poate evita obstacole pe traseu. Cand este detectat un obstacol, robotul isi schimba directia si contiua in directia opusa.

Cel mai spectabulos, robotul poate gasi o linie de ghidaj intr-un mediu necunscut. Cand nu exista o linie de ghidare, robotul cauta pe o traiectorie in spirala pana gaseste o linie de ghidaj. Vezi video de mai jos:

Modulul senzor de linie de ghidare

Traseul de ghidare este marcat cu banda izolatoare PVC neagra. Acest material nu refleta lumina IR, deci e simplu de detectat limita liniei, prin reflexia luminii IR de pe suprafata adiacenta.

Senzorul consta in 3 detectori IR si 4 emitatoare IR. Emitatoarele (LED-uri in infra-rosu) si detectorii (foto-tranzistori) sunt pozitionati alternanti pe un rand, astfel incat fiecare foto-tranzistor este inconjurat de LED-uri IR. Acest design permite masurarea reflexivitatii suprafetei in 6 puncte. In general, aceasta metoda reduce numarul de componente si intrari ADC necesare pentru modulul sensor de linie, ceea ce este foarte necesar in acest caz unde exista constrangeri de dimensiune.

Figura de mai jos ilustreaza cum functioneaza metoda detectiei prin reflexie IR::

pocketbot sensors schema1

LED1 emite lumina IR care se reflecta pe foto-tranzitorul T1 si astfel se masoara reflexivitatea in punctul 1.

pocketbot sensors schema2

LED1 este OFF si LED2 emite lumina IR. Foto-transistorul T1 masoara reflexivitatea luminii in punctul 2.

Intr-o aplicatie reala (cand avem nevoie de o rata de refresh mare) trebuie tinut cont de caracteristicile componentelor IR. Datorita latentei, informatia de la senzor poate fi decalata daca se masoara reflexivitatea de la punctul 2 imediat dupa masurarea de la punctul 1. Pentru a rezolva problema, am analizat caracteristicile senzorului cu osciloscopul si am modificat secventa de scanare astfel incat cei doi senzori sa nu interfereze.

Filtrarea luminii ambientale

Este necesar sa implementam un mecanism de filtrare a luminii ambientale, deoarece conditiile de iluminare sunt diferite. Metoda este foarte simpla: fiecare senzor face doua masuratori. La prima, scaneaza cantitatea de lumina ambientala. Apoi activeaza LED-ul infrarosu si masoara a doua oara. Scazand cele doua valori, se elimina ofsetul dat de valoare luminii ambientale.

Calibrarea senzorului

Pot exista diferente in caracteristicile componentelor optice. In acest sens, este necesara calibrarea modulelor. Calibrarea se face manual, in doi pasi:

1. Calibrare Offset

Toti senzorii se positioneaza deasupra unei linii negre de ghidaj. La primirea comenzii de calibrare, toti senzorii masoara reflexivitatea suprafetei si memoreaza valorile. Acestea se vor folosi ca si valori de offset pentru calibrare. Dupa calibrare, toate valorile masurate sunt corectate automat cu acest offset (la fiecare masuratoare se scade offset-ul din valoarea masurata). Ca rezultat, toti senzorii vor masura aceeasi valoare deasupra liniei negre.

2. Calibrare Amplificare

In timpul calibrarii amplificarii, toti senzorii se pozitioneaza deasupra unei suprafete albe. Unii senzori fi mai sensibili decat ceilalti, rezultand valori masurate diferite. Se pot calcula usor coeficientii de amplificare pentru fiecare senzor, suprafata de reflexie fiind aceeasi pentru toti. Pentru masuratori viitoare, fiecare valoare masurata va fi corectata (inmultita) cu acest coeficient de amplificare, astfel incat toti senzorii calibrati vor avea caracteristici similare.

Procesare datelor de la senzori, controlul motorului DC

Senzorii optici masoara reflexivitatea suprafetei si datele prelucrate sunt procesate de algoritmul de detectie a liniei. Algoritmul este implementat astfel incat sa fie independent de grosimea liniei. Algoritmul de detectie genereaza valori intregi cu semn care indica starea detectiei. Pentru valori aproape de 0, linia este pozitionata exact pe mijlocul modulului cu senzori. Valorile pozitive indica cat de mult linia este deplasata de la dreapta, iar valorile negative indica deplasarea liniei de la stanga. Aceste valori sunt folosite pentru controlul PID (Propotional Integral Derivativ) al urmaririi liniei. Controlerul PID ajusteaza viteza motoarelor in concordanta cu pozitia actuala a liniei si a starilor anterioare. Pozitia liniei este evaluata de 30 ori pe secunda.

Cu alte cuvinte, controlerul PID conduce robotul astfel incat linia ramane tot timpul aliniata cu mijlocul modulului cu senzori.

Control prin telecomanda

Robotul este echipat cu un receptor infrarosu. Astfel, poate fi controlat cu o telecomanda IR standard sau cu o aplicatie pe PC. Conexiunea wireless cu robotul permite modificarea parametrilor (constante PID), trimiterea comenzilor de calibrare sau pentru control manual. Pentru comunicare IR se foloseste protocolul NEC, implementat atat in PocketBot (ca receptor) cat si in USBdockStation (ca emitator).

USBdockStation

USBdockStation are interfata USB si asigura comunicatia wireless si cu fir intere computer si robot. Se bazeaza pe proiectul AVR-CDC, un convertor USB-UART. Dupa conectarea la computer, sistemul de operare creeaza un port COM virtual care poate fi accesat de orice aplicatie pe computer. Protocolul de comunicatie intre USBdockStation si PC nu este standard. 

pocketbot dockStationpocketbot usbdockstation schema

Am adaugat cateva functionalitati suplimentare firmware-ului AVR-CDC initial: emulare telecomanda IR. Are un LED IR de putere si poate transmite packete IR cu protocol NEC, la fel ca o telecomanda IR. Comunicatia IR este unidirectionala.

Firmware-ul este scris in C si ruleaza pe un microcontroler ATmega8 cu oscilator extern de 16MHz. PCB-ul a fost realizat industrial.

Diagrama comunicatie

pocketbot communication diagrampocketbot communication diagram

Panou de control PocketBot

Aplicatia pe PC permite diagnosticarea senzorilor. Arata in timp real starea senzorilor, inclusiv pozitia estimata a liniei. Aplicatia permite atat trimiterea comenzilor de configurare wireless la robot cat si controlul manual. Constantele PID pot fi adjutate online in timpul urmaririi liniei.

Dupa pornire, aplicatia scaneaza automat toate porturile COM pana la detectarea prezentei USBdockStation. Apoi poate detecta daca robotul este conectat prin cablu sau IR. Prin comunicatia pe fir, se face managementul bateriilor si se pot accesa datele de calibrare.

Aplicatia este scrisa in Borland Delphi si ruleaza pe Windows.

pocketbot controlPanel sensorspocketbot controlPanel remote

Download

 

viziteaza site-ul autorului pentru mai multe informatii si ultima versiune a aplicatiilor soft prezentate aici
http://www.ostan.cz/pocketBot/