PRE2Groep2 Experiment
Een essentieel onderdeel van ons project is de uitvoering van het project. Door in een versimpelde wereld op schaal ons project te testen krijgen we de nodige data om conclusies over de haalbaarheid van deze oplossing te trekken.
Onderzoeksplan
Inleiding
In het scenario is beschreven dat we de reddingsoperaties van gevaarlijke en zicht belemmerende situaties willen verbeteren doormiddel van een “Search-and-Rescue” robot. Dit zal gebeuren door middel van een autonome robot met een IR-sensor en een RFID-sensor. In ons onderzoek gaan wij er vanuit dat alle mensen in het bezit zijn van een of ander object met een RFID-chip.
Er kan dus alleen een mens op een bepaalde locatie aanwezig zijn als er een hitte-patroon(±37°C) en een RFID respons aanwezig is. In het onderzoek zal de werking van de gebruikte sensoren getest worden. We zullen ervan uitgaan dat de robot al (autonoom) kan beweging en zullen dus niet ingaan op de bewegingen van de robot. Hierbij zullen we omgevingsvariabele zoals luchtdruk, luchtvochtigheid etc. buiten beschouwing laten. Met een combinatie van een RFID antenne en IR sensor zullen we alle combinaties van hitte bronnen en RFID-tags waarnemen in een bepaald gebied. Het onderzoek zal uitgevoerd worden op kleine schaal. (Zie onderzoeksopstelling) Door middel van dit onderzoek zullen we proberen de volgende deelvragen te beantwoorden:
- “Hoe kan je met RFID objecten lokaliseren?”
- “Hoe kan een infrarood sensor mensen detecteren, zodat er zo min mogelijk false positive en false negative situaties zijn?”
- “Hoe kan een RFID sensor en een infrarood sensor een mens detecteren, door middel van sensor fusion?”
Voorbereiding
Het systeem (bestaande uit een Arduino met een RFID Shield en een IR-sensor) is dusdanig geprogrammeerd dat deze RFID tags detecteren en de temperatuur kan op meten. De responses van deze sensoren worden doorgestuurd naar de computer. De robot zal de route die hij rijdt bepalen met een zoek algoritme. Wij gebruiken bij ons experiment een vrij simpel algoritme die één voor één alle plekken langs gaat.
Variabelen
Meetvariabelen
- IR: Temperatuur
- RFID: Signaalsterke
Omgevingsvariabelen
- Omgevingstemperatuur
Materialen
De materialen gebruikt voor dit onderzoek zullen zijn:
- Arduino (incl. RFID Shield en een IR Sensor)
- RFID Tags
- Hittebronnen (bekers met warm water)
- Tape voor het maken van het grid
Onderzoeksopstelling
Voor dit experiment hebben we een Arduino uitgerust met een 13.56Mhz RFID shield,en een thermopile shield. Op een tafel zal een raster gemaakt worden, en in sommige hokjes van dit raster worden objecten neergelegd waarop (minstens een van) de sensoren reageren. Op basis van de afmetingen van de RFID tags maken we de hokjes 9 bij 8.5cm groot. Voor het experiment worden kartonnen bekertjes gevuld met warm water, en op een aantal van deze bekertjes hebben we RFID tags vastgeplakt. Ook zijn er bekers met RFID tag die niet gevuld worden, zodat alle mogelijke detectie waardes van de sensoren gedekt zijn (Alleen warmte, Alleen RFID, en zowel warmte als RFID). De Arduino wordt iedere keer met de hand naar een volgend hokje in het raster gebracht, waarna deze zijn metingen doet en doorgeeft aan een computer.
Uitvoering onderzoek
De versimpelde versie van de robot, bestaande uit de Arduino, zal de ‘tunnel’ betreden van hokje naar hokje verplaatst worden tot dat de robot op elke locatie van de ‘tunnel’ geweest is. Bij elk hokje wordt de signaalsterkte van de RFID tags en de temperatuur op gemeten. Hierbij wordt de robot naar de dichtstbijzijnde warmte bron gericht. We voeren elke situatie van het experiment 2 keer uit. De eerste keer verzamelen we per locatie 500 samples en de tweede keer verzamelen we per locatie 1000 samples. De volgende situaties nemen we in beschouwing:
Situatie 1
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | |
---|---|---|---|---|---|---|---|---|---|---|---|
8 | |||||||||||
7 | RW4 | ||||||||||
6 | RW2 | ||||||||||
5 | W2 | RW3 | |||||||||
4 | RW1 | ||||||||||
3 | W3 | ||||||||||
2 | W1 | R1 | |||||||||
1 |
Situatie 2
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | |
---|---|---|---|---|---|---|---|---|---|---|---|
8 | RW3 | ||||||||||
7 | |||||||||||
6 | W3 | RW4 | |||||||||
5 | W2 | R1 | |||||||||
4 | |||||||||||
3 | W1 | RW2 | |||||||||
2 | |||||||||||
1 | RW1 |
Onderzoek verslaglegging
De data die tijdens het onderzoek onderzocht gaan worden zullen per hokje worden opgeschreven. Hierin zullen de volgende gegevens in worden opgeslagen:
Statische:
- Afstand tot RFID tags
- Afstand tot warmtebronnen
Variabele:
- Signaalsterkte RFID ontvanger
- Temperatuurmeter
Analyse
Als eerst kan er met de gegevens van het onderzoek bepaald worden of het mogelijk is om mensen te detecteren met een RFID shield, een IR sensor en een combinatie van deze sensoren. Verder zal er met deze gegevens uitgezocht worden wat de “False positives en de “False negatives” gaan zijn. Ook wordt hierbij duidelijk hoe dicht het object bij de robot moet zijn voor een trigger.
De gegevens zullen na het onderzoek door middel van Statistiek worden geanalyseerd om een uitkomst te kunnen geven van de betrouwbaarheid van dit onderzoek.
Aanpassingen in onderzoek
Aanpassingen in het onderzoek om eventuele onaanvaardbare uitkomsten te kunnen oplossen zijn:
- Aanpassing van de ‘treshhold’ waardes
- Aanpassing zoek-algoritmes
Arduino
We gebruiken een Arduino Mega uitgerust met een Adafruit PN532 NFC/RFID shield dat werkt op 13.56Mhz en een SparkFun Infrared Temperature Breakout - TMP006. De Sparkfun temperatuur sensor hebben we aangesloten zoals vermeld staat op de website van Sparkfun[1] (behalve dat we de kabels niet direct aan de Arduino aangesloten hebben, maar aan het RFID shield gesoldeerd hebben, waardoor we met behulp van SPI zowel het shield als de sensor kunnen aansturen), en we gebruiken de Sparkfun library[2] om hem eenvoudig aan te kunnen sturen. De library is voorzien van een handige functie die de gelezen temperatuur automatisch vertaald naar graden Celsius.
Het RFID shield hebben we grotendeels ook volgens de documentatie van de leverancier aangesloten[3], met uitzondering van de antenne. Deze wordt standaard niet aangesloten op een Arduino aangezien de SOC deze uitleest en de taak van communicatie met RFID tags in het geheel op zich neemt. Om dit te omzeilen hebben wij op het RFID shield zelf een kabel vastgesoldeert aan de RX pin van de antenne. Deze sluiten we vervolgens aan op de analoge input van onze Arduino en kunnen zo de voltages van de antenne direct aflezen. Adafruit heeft voor het RFID Shield een handige library[4] geschreven, die wij gebruiken om de RFID antenne te initialiseren voor communicatie met passive RFID tags.
De Arduino heeft zijn handen vol aan het continue inlezen van de antenne signalen, en niet genoeg geheugen om de signalen te kunnen verwerken. Daarom sturen we via USB alle signalen in realtime naar Matlab op een van onze computers. in Matlab worden alle data in matrices gezet, zodat we hier later analyses op kunnen uitvoeren.
Bronnen
- [1] TMP006 Hookup Guide - http://sfe.io/t116
- [2] Sparkfun TMP006 firmware sourcecode - https://github.com/sparkfun/TMP006-Temp_Sensor_Breakout/tree/master/Firmware/TMP006
- [3] Adafruit PN532 RFID/NFC Breakout and Shield - https://learn.adafruit.com/adafruit-pn532-rfid-nfc/overview
- [4] Adafruit-PN532 - https://github.com/adafruit/Adafruit-PN532
Resultaten
De data verzameld door de Arduino kon niet direct gebruikt worden. Zoals zichtbaar in bijvoorbeeld figuur 1. Er is dus overduidelijk een soort van databewerking voor nodig, hiervoor zal MATLAB gebruikt worden.
Dataverwerking
RFID
In het geval van het RFID signaal was het zichtbaar dat het een vrij stabiel signaal bleek, met uitzondering van een aantal duidelijke meetfouten. Deze fouten pieken in alle gevallen naar beneden, en kunnen door het gebruik van lokale maxima eruit gefilterd worden. Daarna is gekozen voor het gebruik van een gemiddelde over daarover. Omdat de verschillen tussen de waardes klein zijn t.o.v. (max. 16 mV) de absolute waarde (rond 2,9V) is de data genormaliseerd naar de laagste waarde in het raster.
Er is gekozen voor een aangepaste 'BAR3' functie om in een oogopslag de totale informatie te kunnen bekijken van een bepaald raster.
IR
In tegenstelling tot het RFID signaal kon het signaal van de temperatuursensor al gedeeltelijk worden verwerkt door de Arduino, hierbij kwam een signaal binnen in graden Celsius. Dit bleef vrij constant over tijd en kon dus d.m.v. van de gemiddelde waarde bepaald worden. Ook hier is gekozen voor de aangepaste BAR3 functie.
MATLAB
Voor de verwerking zijn de volgende MATLAB-scripts geschreven:
- RIFBAR Voor het plotten van de RIFD-data
function [G]= rifbar (numb, matf) Y=riffind (numb, matf); n=signal(Y,true); B=n-min(n(:)); figure; h = bar3(B,1); title(matf); colormap jet colorbar shading interp for i = 1:length(h) zdata = get(h(i),'ZData'); set(h(i),'CData',zdata) set(h,'EdgeColor','k') end end
- TEMPBAR voor het plotten van de IR-data
function [n]= tempbar (numb, matf) Y=tempfind (numb, matf); n=signal(Y,false); B=n-min(n(:)); figure; h = bar3(B,1); colormap jet colorbar shading interp for i = 1:length(h) zdata = get(h(i),'ZData'); set(h(i),'CData',zdata) set(h,'EdgeColor','k') end end
- SIGNAL voor de verwerking van de signalen
function [n,m] = signal(Y,f) s=zeros(100); m=zeros(11,8,100); n=zeros(11,8); for t=1:8 for p=1:11 for i=1:100 r(i:i*5)=Y(p,t,i:i*5); if (f==true) a=findpeaks(r); else a=r; end s(i)=mean(a); m(p,t,i)=s(i); n(p,t)=mean(s(i)); end end end end
Uitwerking
Door het gebruik van de bovenstaande MATLAB scripts komen voor de verschillende samples en werelden de volgende uitwerkingen. Hierbij is het xy-vlak het rasterveld en de z-as de waardes. Deze zijn bij de RFID in 10^-2 Volt en de IR in graden Celsius.
RFID Voor | RFID Boven | IR Voor | IR Boven | |
---|---|---|---|---|
meting 1
500 samples |
||||
Meting 1
1000 samples |
||||
Meting 2
500 samples |
||||
Meting 2
1000 samples |
Problemen uitvoering experiment
Tijdens het uitvoeren van het experiment zijn we enkele onverwachte problemen tegengekomen.
RFID antenne te zwak
De RFID antenne die we gebruikt hebben bleek zeer zwak te zijn, en hierdoor konden we geen RFID signaal ontvangen op de afstand waarop we gehoopt hadden. Na wat experimenteren met de sensor is het gelukt om toch enigzins betrouwbare waardes af te kunnen lezen tot ongeveer 5 cm afstand. Hoewel dit nog steeds niet optimaal is, is het voldoende om het experiment toch uit te kunnen voeren.
Temperatuur bekertjes
De kartonnen bekertjes koelden zeer snel af wanneer we er warm water (ong. 60 graden celsius) in deden. Wanneer we een experiment uitvoerden met water dat net ingeschonken was, daalde de temperatuur tijdens het experiment van 50-60 graden naar 25-29 graden. Uiteindelijk hebben we besloten dat aangezien het verschil met de omgevingstemperatuur in alle gevallen groot genoeg was om het betrouwbaar te kunnen meten, we dit simpelweg over het hoofd zullen zien en alles boven de 26 graden als "mogelijk een mens" zullen beschouwen. In een echte situatie zal een mens natuurlijk nooit 50 graden of hoger als huidstemperatuur hebben, maar het zou triviaal zijn om een bovengrens te leggen aan de "toegestane mens temperatuur". Aangezien binnen de grenzen van ons experiment zich geen niet-menselijke objecten bevinden met een hoge temperatuur en een RFID signaal, hebben we besloten dat we zonder bovengrens kunnen werken.