Sunteți pe pagina 1din 19

Universitatea POLITEHNICA din Bucureti Facultatea de Automatic i Calculatoare Catedra de Proiectare cu Microprocesoare

PROIECTARE CU MICROPROCESOARE

Masinuta teleghidata controlata cu PIC. Tehnologia de evitare a obstacolelor


Proiect de semestru anul IV

Autor: Mihai Sandoiu 343 CB


sandoiu_mihai@yahoo.com

ndrumtor: As. Dr. Ing. Adrian Mocanu

Bucureti , 15 ian 2006

Masinuta teleghidata controlata cu PIC. Tehnologia de evitare a obstacolelor PIC Radio-Controlled Rover. The Obstacle Avoidance Technology

Rezumat
Proiectul este o aplicatie simpla a controlului prin microprocesor, care realizeaza doua deziderate: 1) controlul radio al unei masinute pentru a urma un traseu dat 2) o masinuta care urmareste conturul unui mediu (camera). Capacitatea de radiocomanda ofera posibilitatea unui control de la distanta, iar posibilitatea de a integra unitatea de comanda pe masinuta (rover) permite explorarea autonoma a mediului, sau putem alege un compromis intre cele doua (ex. Mars Sojourner). Proiectul poate fi extins pentru a transforma masinuta intr-un robot pentru inspectia unui teren, care sa detecteze mine, sa cartografieze conturul unei cladiri sau sa inregistreze diversi parametri din mediu. Cea mai importanta aplicatie a proiectului este implementarea unui sistem de pilot asistat sau pilot automat la autoturisme, care sa utilizeze si detectia indicatoarelor rutiere si semafoarelor folosind camera video, laser si zone active si integrarea cu GPS. Elementele de inteligenta artificiala (algoritmi de planificare, pentru depasiri, ocoliri, parcari, euristici pentru adaptarea vitezei la conditiile de drum si conditiile de trafic.

Abstract
The project is a simple application of microprocessor control, serving two main functions: 1) radio-controlling a rover, in order to follow a predetermined path 2) a rover which travels along the marrgins of its environment (room) The projec can be used for the remote control, the possibility of exploring the environment in an autonomous fashion, or a balance between the two aforementioned possibilities (e.g. Mars Sojourner). The project can be expanded to transform the rover in a robot used for the detection of landmines, mapping a building, or record various parameters of the environment. The most important use of the project is in the design of an automatic or assisted automotive driving system, comprising road signs and semapore detection using a video camera, lasers and active image areas, as well as GPS integration. Artificial Intelligence elements (such as planning algorithms, for turns, parking, euristics for speed regulation according to traffic conditions and road conditions, etc. 2

Cuprins
Rezumat ........................................................................................................................ 2 Abstract......................................................................................................................... 2 Cuprins ......................................................................................................................... 3 Platforma hardware. ..................................................................................................... 4 Interconectarea cicuitelor masinutei si senzorilor cu PIC-ul. Intrari si iesiri. .............. 8 Principalele module functionale ale roverului.............................................................. 9 Concluzii privind partea hardware ............................................................................... 9 Logica de comanda..................................................................................................... 10 Sectiuni importante ale programului de control ......................................................... 11 Concluzii privind desfasurarea proiectului................................................................. 14 Extinderi viitoare si posibile imbuntatatiri ale proiectului. IA................................... 15 Bibliografie................................................................................................................. 15 Anexa A Principalele caracteristici ale detectorului de proximitate in infrarosu GP2D12 .................................................................................................. 16 Anexa B Poze ale proiectului finalizat ................................................................. 17 Anexa C Costuri realizare montaj.......................................................................... 19

Cunostinte necesare realizare montaj: - Limbaj de asamblare pentru PIC16F628A - Cunostinte de baza de electronica si functionarea tranzistorului bipolar - Posibilitatea de a realiza placile de montaj prin tehnica coroziva, in regie proprie sau pe baza de comanda.

Platforma hardware.
Platforma hardware este alcatuita din urmatoarele module principale: a. PIC b. Masinuta (rover) c. Senzori Microprocesorul RISC PIC 16F628A realizeaza procesarea informatiilor de la senzorii de proximitate, precum si comanda motoarelor roverului. Roverul a fost achizitionat sub forma de masinuta teleghidata (27 MHz) de jucarie, astfel incat telecomanda acesteia este legata la PIC. Senzorii de proximitate de pe rover transmit informatia la PIC utilizand circuitele de la o alta masinuta teleghidata (40 MHz). Am recurs la acest montaj pentru a avea o mecanica performanta a masinutei, dificil de realizat in lipsa unui atelier mecanic si a diferitelor piese pentru cutia de viteze/sasiu. Am utilizat circuitele de radiocomanda din masinutele achizitionate pentru a scurta timpul de dezvoltare al aplicatiei si a evita proiectarea unor montaje radio proprii, expuse inerentelor probleme de executie si testare.

PIC Placuta cu PIC-ul a fost realizata conform indicatiilor din laborator, si a fost tiparita la o imprimanta laser pe folie tip press-n-peel. Cu ajutorul fierului de calcat am transferat montajul pe placa din textolit, pe care am corodat-o intr-o solutie de clorura ferica industriala incalzita la 40-50 de grade Celsius. Pentru a accelera corodarea, am construit un montaj care a agitat solutia de clorura ferica din cuva timp de aproximativ 10 minute. Tonerul ramas a fost inlaturat folosind o solutie de acetona (di-metil-cetona). A urmat executarea orificiilor din placa, montarea componentelor electronice, si plasarea montajului intr-o cutie din plastic ABS (pentru interior) pentru a conferi montajului un aspect comercial.

Alimentarea se realizeaza printr-un stabilizator de 5V (LM7805), curentul fiind preluat de la o baterie de 9V. Am montat un comutator si un LED verde, martor pentru alimentarea montajului.

Rover. Radiocomanda rover. Telecomanda roverului a fost conectata la porturile RB0, RB1, RB2, RB3 pentru a realiza comanda roverului pentru inainte/inapoi, si pozitionarea rotilor din fata pentru stanga/dreapta. La iesirea de 1 logic (5V) pe unul din acesti pini (dar nu simultan pentru fata/spate, stanga/dreapta), un tranzistor bipolar NPN (BC547) comuta si realizeaza conexiunea EC care cupleaza butoanele respective din telecomanda la masa montajului. Exista LED-uri martor vizibile in afara carcasei montajului.

Partea de receptie comenzi de pe rover este cea originala. Sunt folosite 6 baterii AA (R6, 1.5 V).

Receptorul senzorilor. Radiocomanda senzorilor. Componenta de transmisie informatii senzori de pe rover este cuplata la senzorii de proximitate in infrarosu (modulati) Sharp GP2D12. Acesti senzori analogici ofera un voltaj de iesire intre 0.4 V si 2.7 V, invers proportional cu distanta fata de obstacol (intre 10 cm si 80 cm). Am limitat precizia senzorilor la aproximativ 40-50 cm datorita cuplarii lor in baza unor tranzistoare bipolare cu siliciu, NPN (BC547 sau BC170), care se deschid la aproximativ 0.7V. La comutarea tranzistoarelor, prin jonctiunea EC se realizeaza cuplarea butoanelor din telecomanda (senzorul stanga nu poate fi activ simultan cu senzorul dreapta, motiv pentru care roverul functioneaza corespunzator pentru un culoar instantaneu mai lat decat [ latimea roverului + 2 x ( distanta detectie ] = 1.00 m (20%)

Receptorul pentru senzori conectat la PIC furnizeaza 4 iesiri de cca 3V (din care utilizam 3). Cu ajutorul senzorilor comand bazele de la 3 tranzistoare bipolare cu siliciu, NPN (BC547), cu cate o rezistenta de protectie. Deoarece montajul este inversor (cu rezistenta de pull-up), se furnizeaza 1 logic (5V) in lipsa unei informatii de la senzor, iar un obstacol declanseaza starea de 0 logic (aproximativ 0.2V, tensiunea jonctiunii EC).

Zonele de detectie obstacole ale senzorilor

S=senzor de proximitate modulat in infrarosu; C=unghiul mort de langa senzor (extrema minima de sensibilitate); B=zona de sensibilitate a senzorului; A= extrema maxima de sensibilitate.

Interconectarea cicuitelor masinutei si senzorilor cu PIC-ul. Intrari si iesiri.

A - tranzistoarele de comanda ale telecomenzii roverului B telecomanda originala a roverului (27 MHz) C alimentare (baterie 9V) D placa de comanda cu PIC 16F628A E interfata seriala pentru programare PIC F receptor radio senzori (original) (40 MHz) G tranzistoarele inversoare care transmit la PIC informatia de la senzori

Principalele module functionale ale roverului

A - senzor analogic de proximitate in infrarosu Sharp GP2D12 B tranzistor NPN pentru comutarea butoanelor transmitatorului la detectia obstacolelor C transmitator (original, 40 MHz) D Alimentare 6V pentru transmitator si senzori E alimentare rover (dedesubt) 9 V, (6 acumulatori NiMH pentru curent/putere marita)

Concluzii privind partea hardware


Componenta hardware a proiectului a putut fi implementata imediat ce s-au cunoscut parametrii de iesire (voltaje) ale masinutelor si telecomenzilor achizitionate. Montajele cu transzistoare sunt aplicatii simple ale comutarii tranzistorului bipolar. Testele cu senzorul infrarosu IS471F au fost nesatisfacatoare, deoarece obstacolele erau detectate de la aprox 5 cm. De asemenea, este posibila utilizarea de tranzistoare din germaniu pe rover, pentru comutare la 0.2 V si cu un divizor de tensiune potentiometric in baza, pentru a obtine cu un reglaj fin detectia obstacolelor de la o distanta mai mare (spre 70 cm, in loc de 40-50 cm cat permite pragul de 0.7V al tranzistoarelor din siliciu).

Logica de comanda

10

Limbajul natural tradus in pseudocod conduce la urmatorul flow al codului: START ; MOVFW PORTA ; citesc de pe portA ; if (FATA) { if (DR) {virajst; goto START; } ; if (ST) {virajdr; goto START; } ; virajst; goto START } ; if(DR) { fata; goto START } ; if(ST) { fata; goto START } ; virajdr; goto START GOTO START Algoritmul prezinta doua trasaturi importante: - evita obstacolele, iar in cazul unui obstacol frontal, vireaza stanga - daca nu gaseste obstacole, componenta de urmarire a conturului vireaza inainte si la dreapta Programul ASM utilizat realizeaza echilibrul dintre aceste doua tendinte, pentru a pastra roverul pe un traseu sigur si dezirabil

Sectiuni importante ale programului de control


Definire tip PIC LIST p=16F628 #include "P16F628.INC" __CONFIG 3F62 Asignare RB output, RA input INIT CLRW ; pun portb de iesire CLRF PORTA MOVLW 0x07 MOVWF CMCON ; musai pt input pe portA BSF STATUS,RP0 ;salvare banc MOVLW 0x00 MOVWF TRISB movlw b'00000000' ; no option bits are relevant movwf OPTION_REG ; set the option register MOVLW 0xFF MOVWF TRISA BCF STATUS,RP0 ;restaurare banc START MOVLW 0x00 MOVWF PORTB Comenzile de baza (outputuri pe PORTB) ;inainte, dreapta, stanga, spate: ; 88, 11, 22, 44 ; stg fata: 55 ; dr fata: 66 11

Stabilirea unui traseu (itinerar/harta) tine de implementarea aleasa Traseul poate fi optional stocat intr-o zona rezervata de memorie sau intro memorie EEPROM externa. ;MAP======================== ;CALL FATA ;CALL FATA ;CALL FATA ;CALL VIRAJDR ;CALL SPATE ;CALL VIRAJDR ;CALL FATA ;CALL FATA ;CALL FATA ;MAP======================== Diferite deplasari (exemple) STANGA_MICI ; viraj pe loc CALL SPATE CALL VIRAJST GOTO START DREAPTA_MICI ; viraj pe loc CALL SPATE CALL VIRAJDR GOTO START Rutina Delay (pot exista implementari si cu intreruperi , nu neaparat secventiale ca in lucrarea de fata) ;rutina delay ==================================================== DELAY NOP movlw d'250' ;delay 250 ms (4 MHz clock) ; MIHAI : 20 movwf count1 d1 movlw 0xC7 movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1 ,f goto d1 clrw RETURN ;rutina delay ==================================================== 12

DELAY2 NOP movlw d'120' movwf count1 CALL d1

;delay 250 ms (4 MHz clock) ; MIHAI : 20

Algoritmul de evitare a obstacolelor & urmarire a conturului. Inteligenta reactiva. MOVFW PORTA ; citesc de pe portA MOVWF valoare ;algo minune ----------------------------BTFSS valoare, 2 CALL TRATARE_FATA ; {...} include goto START NOP BTFSS valoare, 0 CALL AVANS_MIC ; include goto START NOP BTFSS valoare, 1 CALL AVANS_MIC ; include goto START NOP CALL AVANS_DR2 ;algo minune ----------------------------;BTFSS valoare, 0 ; senzor 1 - DR ;BTFSS valoare, 1 ; senzor 2 - ST ;BTFSS valoare, 2 ; senzor 3 - FATA ;CALL STD_SCURT; delayul pasilor GOTO START ;tratare alg minune ------------------------------------TRATARE_FATA BTFSS valoare, 0 ; dr CALL STANGA_MICI ; prin miscarea si in spate incerc sa fac virajele mai 'pe loc' NOP BTFSS valoare, 1 ; st CALL DREAPTA_MICI NOP CALL STANGA_MICI ; componenta care evita peretele frontal prin ocolirea prin stanga

13

Concluzii privind desfasurarea proiectului


Partea software a proiectului a fost strans integrata cu partea hardware. Se cuvine sa precizam cateva probleme de care ne-am lovit in implementarea proiectului: Necesitatea unui delay diferentiat pentru comanda spate datorita cuplului specific al cutiei de viteze. Necesitatea unui delay mai mic pentru avans, pentru a nu intra in coliziune, dar suficient de mare cat sa permita angrenarea motoarelor (impotriva inertiei acestora).Aici este vorba de un compromis intre rezolutia miscarilor roverului si inertia motoarelor. Necesitatea unui alimentari separate a senzorilor si a motoarelor roverului, precum si consumul mare de curent al roverului (constructiv, apartine producatorului). Pentru viraje efectuate cat mai strans, roverul executa intai o miscare de tip SPATE. Astfel pe anumite suprafete (gresie, sticla) pot fi efectuate viraje aproape pe loc. Implementarea pe baza de iintreruperi exista ca optiune, totusi am decis ca abordarea secventiala (executia de comenzi, feedback senzori, executie, samd) este imediata (cea mai simpla). Executarea cablajelor imprimate ar fi preferabil sa se faca la comanda la un furnizor specializat de servicii, si nu in regie proprie, din motive de timp consumat, aspect si performante optime. Timpul de programare poate fi redus utilizand un limbaj de nivel mai inalt (C, BASIC pentru PIC), apoi translatand in ASM codul cu utilitare specializate. In functie de resursele necesare, un microcontroller Atmel din familia Atmega dispune de posibilitati mai mari de calcul, stocare si integrare. Conectarea PIC-ului la portul serial nu a fost posibila decat la un PC de birou. In cazul laptopului sau a convertorului USB-serial tensiunea de 6.5 V furnizata a fost prea mica pentru a face posibila inscriptionarea PICului (necesar 8.5V) Am utilizat mediul Proteus/ISIS pentru dezvoltarea,simularea si testarea proiectului. Zona de actiune a roverului presupune obstacole de dimensiune mai mare decat raza de viraj a roverului (aprox 50cm). In cazul obstacolelor mici sau a coslturilor ascutite/stranse, este posibila aparitia de erori de comportament. Desi algoritmul de dirijare efectueaza corectii reactive ale traiectoriei (nu instantanee, dar totusi dupa fiecare miscare), aceste erori nu sunt excluse.

14

Extinderi viitoare si posibile imbunatatiri ale proiectului. IA.


Detectie obstacole in timp real si utilizarea intreruperilor Senzori cu ultrasunete Detectie indicatoare rutiere si semafoare folosind camera video, laser si zone active Implementare de facilitati de inteligenta artificiala: o Algoritmi de planificare (STRIPS, TWEAK) pentru depasiri, ocoliri, parcari o Diferite euristici pentru adaptarea vitezei la conditiile de drum si conditiile de trafic o Asistare sau automatizare condus (pilot automat) o Integrare cu GPS/Palmtop cu GPS o Gasirea drumului/traseului optim Studiu de caz privind aplicabilitatea sistemului de pilot asistat sau pilot automat la autoturisme.

Bibliografie
1) 2) 3) 4) http://www.solarbotics.net/library/circuits/sensors_prox.html http://www.seattlerobotics.org/encoder/200112/richk.htm http://www.acroname.com/robotics/info/articles/sharp/sharp.html http://swis.epfl.ch/Backup_Caltech/CORO/Projects/Flocking/ab_flocking. htm 5) http://www-robotics.usc.edu/~ikelly/mbots.html 6) Curs Inteligenta Artificiala, An III, UPB, Prof. Adina Magda Florea

15

Anexa A Principalele caracteristici ale detectorului de proximitate in infrarosu GP2D12


(conform datasheet producator Sharp)

16

Anexa B

Poze ale proiectului finalizat

17

18

Anexa C

Costuri realizare montaj

Tehnica press-n-peel (foaie, clorura ferica, acetona) Montaj PIC Cutie ABS pentru PIC Cutie ABS pentru control rover Tranzistoare bipolare (10 buc), leduri, etc Masinute si telecomenzi Baterii Senzori Sharp GP2D12 (achizitie SUA curier) 3 buc TOTAL Buget utilizat (inclusiv pierderi, si piese neutilizate) Eficienta utilizare buget alocat

200.000 300.000 200.000 400.000 100.000 1.000.000 300.000 2.000.000 4.500.000 6.000.000 75%

Preturile sunt in lei vechi (ROL) pentru luna decembrie 2005.

19