Category Archives: Smart Systems 2015

Blogs from Smart Systems 2015

Watering The Flowers – Not so watered…

I de siste par dagene har vi jobbet på spreng med å få bilen til å fungere som det skal og at alt skal være 0perfekt. En stor utfordring vi fikk var da vi skulle sende signalene fra Raspberry-Pi’en til Arduinoen. Seriebufferet fylte seg opp da det var delay i koden, dette ble løst med å finne en mer elegant løsning for clearing av bufferet og signalbehandlingen.

12364170_10153619007100783_1668999177_o

Vi har fått bilen til å fungere en hel gang med standardfunksjoner: Finne blomster, kjøre til dem og vanne de. Her er et lite eksempel på det.

Etter den første vellykkede testen gikk dessverre alt rett vest. Vi slet en stund med at forskjellige komponenter ikke fungere pga ikke nok strøm, og vi trengte etter hvert et nytt batteri. Det ble koblet om i hytt og pine, men det ble fortsatt ingen endring. Ikke før det begynte å ryke noen ganger fant vi ut at det var dårlige kabler som var synderen til problemene. Vi brukte mesteparten av gårsdagen på å prøve å fikse dette med kablene, til ingen nytte. Dette satte en stopper for resten av testingen av systemet. Det er funksjoner som enda ikke har blitt implementert i systemet pga dette. Hvis alt hadde gått bra i testingen hadde vi lagt til funksjoner som husker hvor hver enkelt plante er slik at den ikke bare vanner hvor som helst. Den skal også huske når den sist ble vannet slik at plantene ikke får for mye vann.

mindre

Da vi skulle teste systemet i morges, etter byttning av én kabel, fungerte alt! Det har vært veldig av og på om ting fungerer eller ikke med tanke på disse kablene, så forhåpningene er fortsatt ikke store om bilen kommer til å vanne slik vi vil. Etter mer testing viser det seg at kablene er fortsatt et problem. Etter én testkjøring brenner kablene gjennom plastiken, og de må byttes. Det er semi-funksjon på bilen, men den fungerer ikke helt som den skal. Koblingen og kablene har skyld i dette.

At bilen ikke kom til å fungere på presentasjonen syntes vi er kjempetrist. Vi har brukt mye tid på dette, og ville veldig gjerne vise at den fungerer og gjør det den skal.

Her er link til source koden vår.

Bilen har som oppdrag å finne og vanne blomster. Dette gjør den ved å bruke bildegjenkjenning til å detektere grønne planter. Hvis bilen finner noe grønt, kjører den dit til den er nærme nok til å sjekke om planten trenger vann og så vanner hvis den trenger vann. Den husker også denne posisjonen slik at den ikke vanner planten flere ganger. Bilen skal så rygge og fortsette å lete etter planter.

 

Takk for oss!

Uke 50-51

Grunnet andre eksamener skjedde det lite på starten av uke 50. En positiv ting som har skjedd er at vi endelig fikk en pakke vi hadde ventet på! Fordi USB dongelen vi fikk var litt vanskelig å jobbe med, bestilte vi en ny en som var simplere å programmere med. USB Host Shieldet er derimot litt vanskelig å ha med å gjøre, så vi fikk ikke brukt det.

Klikk her for koden til Arduinoen (Link).

ArduinoFinpuss
Finpussing av arduino koden/styringa

I forhold til ansiktsdeteksjonskoden, finpusses det som fungerer og vi ser om det er mulig å forbedre noe/legge til andre funksjoner. Vi fant også ut at det var mulig å få programmet til å finne ansikter raskere via en annen “tag”/”modus” enn den vi brukte, så vi bestemte oss for å bruke den istedenfor. Programmet starter nå også samtidig som raspberrien bootes, slik at programmet ikke trenger noen annen input enn at vi starter raspberrien.

Vi har også laget en tutorial for ansiktsdeteksjon, for å vise hva slags steg vi har gjort for å få koden vår til å fungere, som ligger som et eget innlegg. Koden ligger både der og på denne linken (Klikk her).

Bilen ble ferdig, og endte opp med å se slik ut, og spiller av lyd når den ser et ansikt:

FerdigProdukt
“Robofriend”

Veiledning for ansiktsdeteksjon vha Python og OpenCV

Step 1
Installere Raspian på minnekortet
https://www.raspberrypi.org/help/noobs-setup/
følg denne guiden.

Step 2

Oppdatere RPIen, OS og legge inn Open CV

Åpne terminal og skriv inn:
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update

Installere pi kamera:
sudo apt-get install python-picamera

Installere OpenCV:
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

Step 3

Opprett en fil med filending .py f.eks. Video.py og kopier inn denne koden

Trykk her for kode(link)

Step 4

Åpne en terminal og naviger til mappen der du opprettet Video.py fila.

Skriv så i terminal : sudo python Video.py

Programmet vil starte og finne ansikter i video feeden den mottar fra Pi kameraet!

Hvis det kommer opp at det er indentation error så les om det her : http://www.diveintopython.net/getting_to_know_python/indenting_code.html

RoomFinder: Lille Trille ble full og gikk på en smell…

Dagen blei brukt til til litt testing og forbedring  av kode, litt kobling og oppsummering av arbeidet. Det begynte bra, men med et  tilbakesteg, eller skal vi si tilbakesmell; ballongen vår sprakk.. Det var den den vi hadde. Og det skulle vise seg at de “gigantiske” ballongene butikker flest selger, ikke er så store som de skal ha det til. (En viss butikk som utgir seg for å være best på dingser, er ikke best på produktbeskrivelser… diameter er IKKE det samme som omkrets.)

Men, det finnes store ballonger der ute, men vi hadde ikke tid til å vente på postgang i disse juletider, så en tur til Sandefjord for å hente ny ballong er neste  punkt på planen.

 

Firewater – Uke 50-51

Her kommer en oppdatering fra hva vi har gjort de siste dagene i innspurten av prosjektet:

Fredag uke 50: 
Denne dagen jobbet vi fra etter eksamen og utover ettermiddagen. Det viste seg da et vi hadde noen uforutsette problemer, og at roboten ikke virket helt som ønsket lenger med software serial kommunikasjon. Vi begynte å få problemer med wifi-kommunikasjonen mellom drinkmikseren og appen. Roboten kjørte slik den skulle, men signalene kom ikke frem via wifi, og det virket som denne koden hang seg. Vi brukte mye tid på å prøve å feilsøke dette, og fant ut at noe av det mest sannsynlig skytes støy. Vi hadde ikke tilgang til utstyr vi trengte, og avsluttet derfor økten.

Mandag uke 51:
Vi fortsatte feilsøkingen, og satte inn flyback dioder på pumpene for å hindre støy.  Da dette ikke løste problemet helt, byttet vi ut arduinoen med wifi-shieldet, og dette løste problemet. Grunnen er mest sannsynlig en sliten arduino. Etter gjentatt testing, så da dette ut til å virke optimalt.

I løpet av eksamensperioden dukket endelig radiosenderne våre opp, og vi bestemte oss da for på ny å prøve å bytte over til å bruke disse. Det inkluderte på ny omskriving av robot- og drinkmixer koden, samt omkobling og innsetting av spenningsdelere. Når vi håpet dette skulle virke mandag kveld, fikk vi  ikke til noen kommunikasjon med roboten. Etter gjentatte sjekker av at koblingene var rett, bestemte vi oss for å bytte ut motstandene i spennigsdlerene til lavere verdier. Vi hadde ikke tilgang til andre motstander, og avsluttet dagen med det.

Vi la i tillegg til en liten “partyfaktor” når drinken er ferdig, en buzzer med et lite musikkstykke.

Tirsdag uke 51:
Vi begynte dagen med å få tak i nye motstander og koblet spenningsdelerene på nytt. Da virket endelig radiokommunikasjonen. Etter en del testing og småjusteringer på detaljer anser vi nå prosjektet som ferdig, og vi har nådd den funksjonaliteten som var målet vårt. Dette til tross for flere uforutsette problemer og komplikasjoner som vi har måtte løse på ulike måter, og vi har derfor løst prosjektet på en litt annen måte enn først planlagt.

Videre denne dagen planla vi presentasjon, ryddet opp i koder og prosjektet.

Nedenfor kan du se våre endelige koder, kretsskjemaer, systemoversikt  og noen bilder av det endelige resultatet:

2015-12-15 10.02.06 2015-12-15 10.24.04

 

Systemoversikt over sluttresultatet:
Vi ser at denne systemoversikten er nesten identisk med den vi begynte med, den eneste forskjellen er at solenoidventilene er byttet ut med pumper og solenoidkontrollen ble en pumpekontroll med releer, samt at vi tidlig i prosessen byttet over til wifi i stedet for bluetooth.

Systemoversikt sluttresultat

Kretsskjemaer:

Kretsskjema for arduinoene på drinkmixeren:

Drink Mixer

 

Kretsskjema for rele-og pumpekretsen:

 

Pumper

Kretsskjema for roboten:
Robot


Link til endelige koder

 

 

 

 

Watering the Flowers – Python + Linux = <3

Det har vært en stund siden vi har blogget, men her er en oppdatering!

Vi har fått til en videogjenkjennelseskode som ser etter grønne ting og gir tilbake posisjonen slik at bilen kan forflytte seg dit. Her er noen bildeeksempler på hvordan det blir gjort.

camera position black'n'white contour

Videre har vi fått til at bilen detekterer om det er noe forann seg og den vanner ting.

Så nå i den siste tiden har vi jobbet mye med koding. Blien har blitt korrekt kalibrert  og vi har fått en løsning på å gi strøm til Pi’en. Vi har også jobbet en del med raspberry pi’en og OpenCV på den. Det var en del problemer med å få ting til å kjøre. For eksempel var det en del problemer med å få OpenGL til å fungere med Jessie sin siste oppdatering. Med en nyere Pi som Pi 2 B+ hadde det ikke vært noe problem og veldig mange operasjoner hadde gått fortere, siden den nye har 4 cores. I tillegg har vi fått til å kjøre scripts på startup på Pi’en og også fått en kommunikasjon mellom Pi og Audorino

12364170_10153619007100783_1668999177_o

.

Se lille trille bli full

 

Se video!

I dag har vi hatt dronesonen helt for oss selv, og gjort store fremskritt med kontruksjonen vår! Vi har for eksempel fått helium i ballongen! Vi har også lagd et festesystem for thrustere, avstandsmålere og kurven. De ødelagte motorene er blitt bytta ut med nye og freshe, og vi har gjort endringer i koden som tillater oss å bruke et 7.7V batteri med mindre vekt og mer kapasitet. Vi har koblet opp hele systemet på nytt, med ekstra sjekk på alle koblinger mot koblingskjemaet.

Se hvor konsentrert Bård er i den kritiske fyllefasen!2015-12-01 10.55.01

Og jammen så flyr ballongen vår!
2015-12-01 11.07.50

 

2015-12-01 13.34.27

Firewater – Uke 48

Siden vi fremdeles ikke har fått radiosenderene vi har bestilt, bestemte vi oss i dag for å gå for en nødløsning hvis det viser seg at disse ikke kommer. Vi bruker derfor roboten, koblet til via ledninger, som kommuniserer via software serial med  arduinoen på drinkmixeren. Dette resulterte i omskrivning av koden til roboten og arduinoen. Dette brukte vi en del tid på, samt testing og kalibrering av robotens posisjon. Nå virker dette helt som ønsket, og vi har testet alle de 16 mulige kombinasjonene, og roboten kjører som avtalt til disse. I tillegg har vi lagt inn en tilleggsfunksjon slik at roboten kjører ut på siden av drinkmikseren med den ferdige drinken.

Det vi må gjøre neste gang er å “dekke til” roboten, slik at vi endelig kan begynne å teste med vann, samt å stille inn tiden pumpene skal stå på. Vi skal også feste støtdempere på roboten.

Uke 47

Programmet som skal spille av en lydfil er klart, slik at det kan puttes direkte inn i hovedprogrammet etter at alt er klart. Det eneste som gjenstår er å sjekke om det fungerer på raspberrien.

Arbeidet som kan gjøres før vi får bilen er nesten helt ferdigstilt, slik at vi kan arbeide effektivt når vi får bilen, og kan begynne å sette alt på plass.

Stuff is getting brighter

CC3000 Wifi shieldet vårt har gitt oss en berg-og-dal-bane dag. Men ujevne mellomrom har den funnet ut at den skal fungere, for å like fort slutte å fungere. Etter vi kobla opp og ned fjorten ganger så kom vi til en semi-stabil state, og fikk kjørt en ny firmware oppdatering på shieldet. Og det var akkurat det som skulle til for å gjøre vår lille CC3000 veldig glad og fornøyd.

Så glad og fornøyde ble vi, at vi satt igang med å flytte utstyret vårt fra testbenken til en flyvdyktig plattform. Kobla opp alt, og gjorde den første ordentlige testen på hele systemet! Lysene representerer motorene, det er bare tre av de, fordi en knakk….

Se her: https://www.youtube.com/watch?v=Px30c1UfC-g