Autonom Robot Med Kamera Vision

Størrelse: px
Starte visningen fra side:

Download "Autonom Robot Med Kamera Vision"

Transkript

1 I ngeni ørhøj s k ol enkøbenhav n Christian M. Larsen (091304) Ronnie F. Salomonsen (090275) Autonom Robot Med Kamera Vision Bachelor Projekt, September 2012 I ngeni ørhøj skol enkøbenhavn Af del i ngenf ori nf or mat i onsteknol ogi I HK

2 Autonom Robot Denne rapport er udarbejdet af: Christian M. Larsen (091304) Ronnie F. Salomonsen (090275) Vejleder: Ole Ryedahl, Ingeniør Højskolen København IHK Informations Teknologi Ingeniør Højskolen København Lautrupvang Ballerup Danmark Tlf: Projekt periode: September Januar 2013 ECTS: 15 Udannelse: BSc Område: Informations Teknologi Klasse: Fortrolig Bemærkninger: Denne rapport er afleveret som delvis opfyldelse af kravene for beståelse af den ovennævnte uddannelse på Ingeniør Højskolen København. Copyrights: Christian M. Larsen & Ronnie F. Salomonsen, 2012

3 Indholdsfortegnelse i

4

5 Kapitel 1 Indledning Denne rapport omhandler analyse, design og udvikling af en autonom robot som Bachelor projekt på Ingeniør Højskolens IT-retning. Projektets formål er, at undersøge muligheden for at anvende en Linux baseret mikrocomputer som fundament til en robot. Robottens funktion er at følge en streg, på den overflade den selv kører på, ved at bruge et kamera som sensor til at se stregen. Til at give robotten fremdrift bruges to elektriske motorer. Mikrocomputeren, der anvendes som fundament, er en Raspberry Pi 1 hvorpå Linux distributionen Arch Linux Arm 2 bruges som operativ system

6 2 KAPITEL 1. INDLEDNING 1.1 Ordliste Herunder ses en ordliste, som indeholder ord og forkortelser brugt i rapporten, med deres tilhørende forklaringer. Forkortelse: RPI USB GPU FP I 2 C SPI GPIO ADC DAC PWM CCD CMOS DMC RGB HSV OpenCV VGA OS IRQ Frame TTL SoC ARM Forklaring: Raspberry Pi Universal Serial Bus Grapich Processing Unit Floating Point Inter-Integrated Circuit Serial Peripheral Interface General Purpose Input/Output Analog-to-Digital Converter Digital-to-Analog Converter Pulse Width Modulation Charge-Coupled Device Complementary Metal Oxide Semiconductor Dual Motor Controller Red, Green, Blue Hue, Saturation, Value Open Source Computer Vision Video Graphics Array Operating System Interrupt Request Et enkelt billede i en serie Transistor-transistor Logic System On Chip Advanced RISC Machine Tabel 1.1: Ordliste over brugte forkortelse i rapporten

7 1.2. PROJEKT BESKRIVELSE Projekt beskrivelse Projektets mål er at konstruere en autonom robot baseret på en Raspberry Pi. Der skal udvikles og konstrueres en platform hvorpå der kan bygges en autonom robot, der kan følge en linje eller streg. Stregen er placeret på samme overflade som robotten. Robotten kan se stregen via billeder fra et fremadrettet kamera. Robotten skal have sin egen drivkraft med tilhørende strømforsyning og komponenter. Robotten skal kunne følge stregen i et kendt miljø, og i et ukendt miljø. I et kendt miljø er stregen og baggrundens farver i kontrast med hinanden. I et ukendt miljø skal den kunne detektere en mørk streg og tilpasse sig til miljøet og derefter følge stregen rundt. Der stilles ingen krav til hastighed, men jo hurtigere den kan køre efter stregen jo bedre. Grundelementet i robotten, er defineret som et Raspberry Pi board, men derudover er der ikke sat begrænsninger, til at etablere robotplatformen. Dog skal den opbygges, så vidt det er muligt, af standard elektronik komponenter.

8

9 Kapitel 2 Analyse af projektet 2.1 Krav Følgende krav er defineret ved at analysere projekt beskrivelsen: Krav # Type Beskrivelse Tabel 2.1: Funktionelle krav K1 Software Robotten skal via et kamera kunne detektere en streg i et kendt miljø. K2 Software Robotten skal kunne følge en streg i gulvet ved hjælp af data fra kameraet. K3 Software Robotten skal kunne indsættes i et ukendt miljø og detektere stregen. K4 Software Det skal være muligt at få live debug-data fra robotten, mens den er i funktion. Krav # Type Beskrivelse Tabel 2.2: Non-funktionelle krav NK1 OS En ARM kompatibel version af Linux skal drive Raspberry Pien NK2 Hardware En robotplatform skal etableres: Et simpelt robotchassis, batteripakke(r), kamera samt DC-motorer skal udgøre grundkomponenterne i robotten. Komponenterne skal understøtte kontrol via en accepteret standard som f.eks USB, RS232, SPI eller I 2 C. NK3 Hardware Robotten skal baseres på en Raspberry Pi. 5

10 6 KAPITEL 2. ANALYSE AF PROJEKTET 2.2 Problemanalyse Der skal etableres en samlet hardware/software platform, hvorpå software der giver robotten funktionalitet, kan udvikles Detailanalyse - Hardware Hardware og komponenter, der skal bruges på robotten skal, så vidt det er muligt, testes inden de bliver anbragt på robotten. Testen skal bruges til at afgøre, om det kan bruges i det endelige produkt. Raspberry Pi Robotten skal drives af en Raspberry Pi. Raspberry Pi er en mikro computer der kan køre Linux. Raspberry Pien bruger en SoC fra Broadcom som giver den en 700MHz ARM processor at arbejde med, en GPU og 256MB ram. Flere detaljer omkring RPien kan ses i bilag?? på side??. Kontrol af hardware For at robotten virker optimalt skal vi kunne kontrollere en del hardware samtidigt. Som minimum motorer samt kamera. Vi skal derfor sikre os at de forskellige hardware komponenter ikke forstyrre hinanden og sikre at de kan driftes sammen. Kamera Kameraet er et af de vigtigste komponenter, da alle beslutninger robotten tager, afhænger af det billede kameraet har leveret. Derfor skal kameraet kunne tage billeder uden fejl og med en passende skarphed. Kameraet skal kunne tage billeder i forskellige opløsninger, så vi har mulighed for at vælge mængden af data, der skal behandles. Kameraet skal levere et passende antal billeder per sekund, da dette vil have stor indflydelse på robottens hastighed. Strømforsyning For at være i stand til at drive hardwaren, skal der medbringes strøm på robotten. Der skal være nok strøm til, at kunne drive robotten, og dets komponenter, i en rimelig periode ad gangen, dog mindst en time. For at holde fast i et design omkring brug af standard komponenter, skal strømmen leveres fra en sammensætning af standard batterier, som f.eks AA batterier Detailanalyse - Software Analyse af kravene der stilles til softwaren i projektet.

11 2.3. PROBLEMFORMULERING 7 Operativ System Raspberry Pien understøtter, indtil videre, kun Linux som operativ systen. Vi skal derfor vælge en Linux distributionen, der passer godt til vores robotprojekt. Distroen skal give os mulighed for, at bruge alt hardware på RPien, og vigtigst, adgang til GPIO pinsne. Grundet hardware begrænsninger på RPien, 256MB ram og 700Mhz CPU, regner vi med at skulle bruge den distribution med det mindste footprint, så vores software løsning har så mange resurser til rådighed som muligt. Billedbehandling Billedbehandlingen af data fra kameraet, er en essentiel del i projektet, da det danner grundlaget for alle beslutninger med hensyn til bevægelse og detektering af stregen. Grundet den langsomme processor på RPien, som er på 700Mhz, anser vi at dette vil være et sandsynligt sted for en flaskehals, hvis vi prøver at regne for store ting ud. Det er derfor vigtigt at vi bruger en algoritme, der ikke er så tung at den begrænser systemets virke. Robotten skal ud fra billedet kunne afgøre følgende: Om der er en streg. Hvilken retning stregen har De detaljer vi kigger efter i billedet er derfor de store linjer og disse vil også være synlige på billeder med lav opløsning. Derfor bør vi kunne drage fordel i, at bruge billeder taget i lav opløsning, i forhold til billeder med en høj opløsning, da store billeder vil kræve meget mere processor kraft at analysere Debug data For at kunne debugge på robotten under operationer er det nødvendigt at kunne se de vigtigste data i realtid. Dette kan være output af variabler eller et samlet udtryk for det data robotten behandler lige nu. Vi skal finde ud af, hvordan vi nemmest kan få vist valid debug data fra systemet. 2.3 Problemformulering De mest betydende problematikker fra problemanalysen er her opsummeret i 4 hovedpunkter Navigation via kamera For at robotten kan navigere, skal data fra kameraet behandles og omsættes til instruktioner. Det billede kameraet sender videre i systemet skal være af en passende kvalitet, der indeholde detaljer nok til, at kunne danne grundlag for, hvad robotten skal fortage sig.

12 8 KAPITEL 2. ANALYSE AF PROJEKTET Frekvensen af billederne vil være med til at definere robottens manøvrehastighed, da de to ting afhænger af hinanden Kameradata Data fra kameraet skal analyseres og beregnes så tæt på realtid som muligt. Dette vil formentlig kræve en betydelig del af systemets resurser. Derfor skal findes en matematisk tilgang til problemet, der kan fungere tilfredsstillende med de resurser vi har til rådighed Operativ system Der skal findes en passende Linux distribution til Raspberry Pien, der er fundamentet i robotplatformen. Distributionen skal understøtte robottens virke bedst muligt og have det mindst mulige footprint Samspil mellem enheder Robottens evne til at navigere succesfuldt efter stregen, afhænger af hvor godt alle enheder arbejder sammen. Behandling af data fra kameraet er afgørende for, hvordan motorer skal kontrolleres og frekvensen er afgørende for, hvor tit der kan foretages justeringer. Samspillet mellem de aktive enheder er derfor essentielt i robottens evne til at gøre ting rettidigt og præcist. 2.4 Risikoanalyse Ud fra problemanalysen kan vi danne os et overblik over de problemer der kan opstå under forløbet og ud fra det udarbejde risikoanalysen, som kan afhjælpe eventuelle faldegrupper ved at få kategoriseret og prioriteret de forskellige emner/områder på forhånd. Ved at gøre dette, vil vi kunne danne os et overblik og derved minimere eventuelle forsinkelser ved at prioritere de opgaver/problemer med den største risiko. For at kategorisere og få et optimalt overblik har vi opstillet opgaverne/problemerne i tabeller og tildelt dem følgende: Sandsynlighed er 1-5 skala(s), 1 er meget usandsynligt, 5 er meget sandsynligt. Konsekvens er 1-5 skala(k): 1. En mindre forstyrrelse i/af projektet, der skaber irritation og en mindre tidskrævende tilrettelse. 2. Kan medføre væsentlige forsinkelser eller mangler i projektet.

13 2.4. RISIKOANALYSE 9 3. Risiko som forsinker/forhindrer projektet så meget, at det nødvendiggør en revision af milestone planen og/eller omlægning af den tekniske løsning. 4. Alvorlig risiko, der står til fare for en tilfredsstillende projektgennemførsel. 5. Risiko, som medfører, at projektet må lukkes, eller ikke forventes bestået. Risikotal er 1-25 skala, 1 er meget lille risiko, 25 er meget stor risiko. Risikotallet består af en multiplikation af sandsynlighed og konsekvens. Tabel 2.3: Dokumentation Punkt navn Område S K Risiko tal Foranstaltninger (S*K) Udviklings proces Hovedrapport Løbende dokumentere eksperimenter Robot - Hardware Robot - Software Teknisk dokumentation Teknisk dokumentation Bruge oscilloskop til at teste signaler, så vi ved at hardware virker Kommentarer i koden og flowcharts

14 10 KAPITEL 2. ANALYSE AF PROJEKTET Tabel 2.4: Robot Punkt navn Område Sandsyn- Konsek- Risiko tal Foranstaltninger lighed vens (S*K) Testforsøg med Hardware hardware design Overordnet hardware design Hardware Grundige og veldokumenterede eksperimenter. Hardware design implementeres Test forsøg med Hardware Prioriteres tidligt i projektet, så der er tid til at opdage og løse problemer. Software software design i C/C++ Valg af teknologi, struktur mv. Software Være grundige og sikre at den valgte teknologi passer til projektet Software design Software Udvikling af billedbehandling Software implementering Software Vi mangler begge to erfaring på området, derfor skal afsætte ekstra tid til dette Software Samspillet mellem enheder skal testes Acceptence Test Hardware Software Milestens plan Vores milestens plan er opdelt i 4 faser, som kan ses i tabel??. Forklaring af hver fase, samt delmål og eventuelle afleveringer kan læses herunder.

15 2.6. FASE 1 11 Tabel 2.5: Faser i milestens planen Fase 1 Fase 2 Fase 3 Fase 4 Test, analyse Design af robot og Udvikling af Rapport og og planlægning program løsningen dokumentation 5 uger 4 uger 4 uger 3 uger 3/9-7/10 8/10-4/11 5/11-2/12 3/12-23/ Fase 1 Periode: 5 uger - 3/9 til 7/10 Fase 1 bruges til at finde fundamentet til projektet. De 5 uger bruges på, at undersøge hvilke dele og elementer, der kan bruges til robotten. Eksperimenterne er nødvendige for at afgøre, hvilke komponenter og teknikker, der kan bruges i det endelige produkt. De vigtigste ting er: Kamera Der skal findes et kamera der både tager gode billeder. Hvor der er god kontrast og skarphed i billedet, samtidig med at billedstørrelsen holdes nede. Vision For at gøre computeren i stand til at forstå og regne på billeddata, skal der undersøges forskellige metoder billedbehandlingsmetoder. Der skal findes og testes algoritmer, så vi kan afgøre, hvad der passer bedst i vores setup. OS Der skal testes operativ systemer, således at vi kan vælge et distribution, der passer til vores formål. Ved at fastsætte en distro tidligt, kan vi kan nå at opbygge erfaring med det, mens vi udfører eksperimenter og design. 2.7 Fase 2 Periode: 4 uger - 8/10 til 4/11 I fase 2 bliver erfaringen fra eksperimenterne i fase 1 samlet og de bruges til at designe robotten. Den samlede løsning skal vælges og samspillet mellem teknik og software skal designes, således at det kan implementeres i fase 3. De vigtigste ting er: Hardware Alle dele robotten skal bestå af, skal identificeres og udvælges. Robotdesign Når komponenterne er valgt, skal der laves et chassis, hvor alle dele kan være. Samtidig med at pladsforbruget er så småt som muligt. Billedbehandling Forskellige metoder til at behandle billeder på skal undersøges, så vi kan identificere den optimale løsning, som kan bruges på robotten.

16 12 KAPITEL 2. ANALYSE AF PROJEKTET Funktionalitet Software funktionaliteten skal fastsættes. Delmål: 4/11 Alle komponenter skal være bestilt/leveret. 2.8 Fase 3 Periode: 4 uger - 5/11 til 2/12 I fase 3 skal den planlagte løsning implementeres. De vigtigste ting er: Software Alt software skal færdiggøres inden dokumentationen kan skrives. Delmål: 9/11 Robotten er samlet og minimumsfunktionalitet som f.eks motorkontrol er implementeret. 16/11 Følge en linje på gulvet. 30/11 Fuld funktionsdygtig robot. 2.9 Fase 4 Periode: 3 uger - 3/12 til 23/12 Rapport og dokumentation færdiggøres De vigtigste ting er: Detaljer Alle væsentlige detaljer skal nævnes i rapporten. Rød tråd Der skal være en gennemgående tråd igennem rapporten. Delmål: 3/12 Seneste tidspunkt for codefreeze. 7/12 Koden skal være dokumenteret. 23/12 Rapport indhold skrevet, nu mangler kun det sidste polish. 2/1/2013 Seneste dag for aflevering.

17 Kapitel 3 Design og løsningsmetoder Dette kapitel omhandler de forskellige emner vi har berørt i forbindelse med research og design af løsninger til vores problemer. Vi har i de fleste tilfælde overvejet flere forskellige løsninger til et enkelt problem og derefter undersøgt, hvor vidt de rent faktisk kan løse problemstillingen tilfredsstillende. Vi har dokumenteret vores forløb og de mest relevante muligheder samt de løsninger der blev en del af det endelige produkt. Yderligere tekniske detaljer omkring løsninger og komponenter, kan findes i bilag. Datasheets for alle komponenter kan findes på den medfølgende USB nøgle. 3.1 Raspberry Pi Raspberry Pien er både hjernen og hjertet i robotten. Den kører operativsystemet, samler alle forbindelserne, styrer komponenterne og eksekverer programkoden. I dette projekt er Pien valgt fra start, som fundament til projektet. Derfor vil vi ikke sammenligne Pien med alternative boards, men derimod fremhæve de fordele og ulemper vi er stødt på, under vores arbejde med den. Raspberry PIen er en fuld funktions dygtig mini-computer. Den har en SoC bestående af en 700MHz ARM processor, hvorpå der er 256MB eller 512MB Ram. Lagerplads i form af et SDKort, Ethernet 1 samt adgang til GPIOer. Derudover understøtter den følgende tilslutninger: USB, HDMI, RCA Video udgang, MiniJack til Lyd, LCD interface 2 og Kamera interface 3. I projektet har vi anvendt en Raspberry model B, med 256MB Ram, revision Kun model B har Ethernet 2 LCD interfacet er endnu ikke brugbart, da RPI foundation ikke har frigivet en driver endnu 3 Et officielt RPI kamera er under udvikling 4 Rev 2 hard indført montagehuller i PCBen. 13

18 14 KAPITEL 3. DESIGN OG LØSNINGSMETODER Figur 3.1: Raspberry PI GPIOer Som standard har PIen trukket 17 GPIOer ud til pins fra BCM2835 chippen. 5 GPIOerne gør os i stand til at lave et input eller output ben, som PIen kan bruge til at kommunikere sammen med andet hardware. Retning af GPIOerne opsættes i operativ systemet, hvorefter det kan bruges fra programmet Fordele og kendte ulemper ved RPI Fordele Billigt og fuldt funktionsdygtigt fundament, der kan køre et operativ system. I dag er der Support fra mere end 20 Linux distributioner. Kendte ulemper ved RPI GPU driver er ikke frigivet som "Open Source". GPUen kan derfor ikke bruges som "hjælpe-processor"til 3d-acceleration eller FP udregninger. Et officielt RPI kamera er i sidste fase i udviklingen, men er i skrivende stund ikke tilgængelig for offentligheden. Kameraet skulle kunne optage i 1080p med 30fps. Kameraet vil desuden komme med drivere fra RPI foundation, så brugen af det vil formentlig være simplificeret. Dette kunne have været interessant at bruge i projektet, med forudsætning, af at billedopløsningen kan sættes ned til en passende størrelse, da der er en dedikeret tilslutningsport på RPIen til kameraet. 5 Det er muligt at trække yderligere GPIOer ud på boards af revision 2+

19 3.2. LINUX DISTRIBUTION 15 Netkortet er tilsluttet via USB. Dette kan give flaskehalse på USB en, samt kræver det ekstra strøm og CPU brug at bruge netkortet, da processen foregår igennem USB kommandoer. Det er ikke muligt at ændre på hardwaren. Vi ved at RPIens hardware indfører nogle begrænsninger for projektet, og ikke kun hastighedsmæssigt. F.eks er der en lille termosikring på 140mA foran USB portene, hvilket resulterer i, at man ikke kan trække meget strøm over USB inden sikringen aktiverer. Det er derfor ikke optimalt at drive flere enheder med strøm via USB en. 3.2 Linux distribution Linux er det eneste OS, der kan køre på en Raspberry Pi og der skal findes en distribution, der passer godt til projektet. Da vi startede projektet og undersøgte mulighederne var der ca. 5 distributioner til rådighed, Hvor kun Arch Linux og Raspbian var fuldt understøttet og markeret som "stable". Vi har derfor undersøgt de to distributioner Arch Linux Arch Linux er en distribution, der prioriterer fleksibilitet og samtidig prøver at være så lille som mulig. Arch har som standard meget få pakker installeret. Der er lige præcis de programmer, installeret fra start, der skal bruges for at arch kan konfigureres og bootes. Brugeren skal efterfølgende selv installere de programmer og software biblioteker, man ønsker at bruge. Dette sikrer, det mindst mulige footprint på systemet, men ligger samtidig en masse installations opgaver over på brugeren, hvis systemet f.eks skal have en GUI til rådighed. Distributionen anbefales ikke til nybegyndere Raspbian - Wheezy Raspbian er den "officielle"distribution til Raspberry Pi. Distributionen har en del værktøjer og programmer installeret på forhånd, der gør det muligt for en nybegynder at udforske Linux og RPIen. X er også inkluderet, så der er adgang til en grafisk brugerflade. Wheezy er baseret på distributionen Debian 6, som er tilpasset til at virke på RPIens hardware. 3.3 Elektronik I forbindelse med at bygge en robot, skal der bruges en del elektronik. Det kan være indkøbt standard hardware eller hardware lavet specifikt til projektet, samt tilhørende komponenter. 6

20 16 KAPITEL 3. DESIGN OG LØSNINGSMETODER Gertboard Gertboardet er et udviklings/udvidelses board til PIen, som vi besluttede os for at teste. Det var det første breakout board, der blev tilgængeligt på markedet. Dette board gør udvidelsesmulighederne lettere tilgængelige ved at trække GPIOerne op i et mere fleksibelt miljø så man kan undgå at modificere PIen. Desuden indeholder Gertboardet en del hardware komponenter, som man normalt bruger i forbindelse med hardware/software interaktion. Boardet indeholder følgende komponenter: En ADC En DAC Tre trykknapper En motor controller Tolv LED dioder, Udtræk af alle GPIO erne En ATmega328P En Open Collector driver Figur 3.2: Gertboard oversigt Trykknapper For at være i stand til at give input til robotten, skal der bruges en form for input. Den simple løsning vil være trykknapper. En trykknap vil kunne starte selve hovedprogrammet

21 3.3. ELEKTRONIK 17 og den anden kunne stoppe det. Trykknapperne på Gertboardet er valgt. Figur 3.3: Trykknapper - Gertboard ADC For at være i stand til at måle spændingen på den/de strømkilder der skal bruges, skal der bruges noget, der kan omsætte et analogt input til noget digitalt. Som så kan aflæses fra programmet, så vi kan være i stand til at overvåge spændingen på strømkilderne. Derved løber vi ikke ind i problemer med for lav spænding. Her har vi valgt at bruge ADC en på Gertboardet. Figur 3.4: Analog-Til-Digital - Gertboard Motor DC Motor Med DC motor kan man opnå højere hastighed end på stepper motor, men det er lidt mere omstændigt at få synkroniseret DC motorerne end det er med stepper motorerne. Mange DC motorer har også et tacho-hjul, så man kan tælle pulser og derved vide, hvor langt aksen har bevæget sig rundt. Fordele: Større præcision Højere maksimal hastighed Hurtigere respons tid og acceleration Feedback om position Højere opløsning

22 18 KAPITEL 3. DESIGN OG LØSNINGSMETODER Ulemper: Dyrere end stepper motorer Stepper Motor Stepper motorer er præcise, men er til gengæld mindre energi effektive end normale elektromotorer. Når stepper motoren stiger i hastighed, falder den i moment. Derfor skal start hastigheden ikke være for høj, for ellers vil den ikke kunne sætte i gang. Det samme gælder opstigninger, der skal hastigheden også nedsættes. Stepper motor kan ikke opnå samme hastighed som DC motorer. Fordele: Nemmere information om position Ulemper: Ingen feedback Mindre præcision på kort sigt Lavere maksimal hastighed end DC motor Større strømforbrug Vi har valgt at bruge to DC-Micromotors fra FaulHaber som vi fik udleveret af skolen. Valget faldt på DC motorer frem for stepper motorer fordi vi allerede har erfaring med stepper motorer så det kunne være interessant at prøve en anden type motor Motor Controller For at styre motorerne, skal der bruges nogle motor controllere. Der er flere producenter på markedet, som laver motor controllere, med hver deres specifikationer. Da vi har valgt at bruge I 2 C som kommunikationsbus, skal motor controlleren understøtte denne kommunikations teknologi. Vi har valgt at bruge en DMC-1 Dual Motor Controller 7, da den giver mulighed for at styre to motorer fra en enkelt komponent, frem for en komponent til hver motor. Den opfylder vores krav om let tilgængelighed. 7 DMC-1 kan fås hos

23 3.4. KAMERA 19 Figur 3.5: DMC-1 Dual Motor Controller Egenskaber: Understøtter dual interface: standard 100Kbps I2C interface and Serial TTL interface 2400, 4800, 9600, Serial interface Baud Rate controlled via software 2 DC motor control Motor forsyningsspænding V Motor strøm 1.2A (3A peak) each Logik forsyningsspænding 3 5 V PWM opløsing 8 bit PWM frekvens 20 KHz Op til 20 controllers kan tilsluttes I 2 C eller Serial bussen. Small form factor (1.35 x 0.65, 34x17mm) 3.4 Kamera For at robotten kan følge stregen i den fysiske verden, skal den være i stand til at se den. Det kræver noget hardware, et kamera. For at styre kameraet, kræves der en hardware tilslutning, samt et stykke software, der kan styre og behandle den data, der kommer fra kameraet. På hardware siden, har vi undersøgt følgende muligheder for at tilslutte et kamera til robotten: Kamera med special tilslutning, via RPIens GPIOer Vi har indkøbt et kamera af typen TCM8230MD. Kameraet er et SMD komponent og er meget småt. Faktisk er det så småt at vi ikke har kunne tage det i brug. Det skyldes at loddepunkterne er så små, at vi ikke kan lodde det uden fejl. Kameraet virkede ellers ideelt til vores projekt, da det kunne tage billeder i meget lav opløsning, helt ned til 120x96. Grundet den måde, man henter data fra kameraet, er det muligt, kun at trække de linjer af billedet, man vil analysere på og derved spare beregninger. Kameraet kræver 20 GPIOer og det er flere end hvad RPIen har trukket ud som standard.

24 20 KAPITEL 3. DESIGN OG LØSNINGSMETODER Figur 3.6: TCM8230MD Kamera Komposit kamera RPIen har en komposit tilslutning, men denne kan kun bruges til output. Så det kan ikke bruges til at tilslutte et kamera. RPI kamera RPIen har en sokkel, der er reserveret til tilslutning af et officielt RPI kamera. Dette kamera er dog ikke frigivet af RPI Foundationen endnu. Så vi har ikke kunnet teste, om det kunne bruges i vores projekt. Men kameraet vil, efter sigende, optage i 1920x1080 med 30 billeder i sekundet. Det er meget store billeder og det vil koste mange resurser at behandle dem. USB Webcam En anden mulighed er et normalt kamera tilsluttet via USB. Tilslutning er simpel, da den bruger standard interfacet USB, men kontrol af kameraet bliver klaret af OS, i form af drivere. Data fra kameraet hentes via Video4Linux interfacet, som er understøttet direkte i Linux kernen. Vi har valgt at bruge et USB kamera. GPIO kameraet (TCM8230MD), så ellers ud til at være det bedste valg ud fra specifikationerne. Men problemerne med at få loddet hardwaren samt de manglede GPIOer på RPIen, gjorde at vi valgte USB løsningen i stedet for. USB kameraet vi har valgt, er et Philips SPC900NC VGA CCD webcam. Det havde de bedste egenskaber af dem vi testede. Vi gik efter fornuftig billedkvalitet og højt antal billeder per sekund. Vi har testet flere forskellige kameraer og resultatet af testen kan ses i bilag?? på side??.

25 3.5. KOMMUNIKATION 21 Tabel 3.1: Specifikationer: Philips SPC900NC VGA CCD Sensor: Sensor opløsning: Video opløsning Snapshot opløsning: Interpoleret snapshot opløs.: Max. frame rate: CCD VGA VGA VGA 1.3 MP 90 fps Lens: F2.2, D55 Hvid balance: Min. illuminance: Farve dybde: k < 1 lux 24 bit 3.5 Kommunikation For at opnå et samspil mellem diverse komponenter internt på robotten, men også eksternt fra en klient computer til PIen, skal der implementeres en form for kommunikation Intern Kommunikation For at være i stand til, at kommunikere med diverse hardware komponenter, er det nødvendigt at implementere en eller flere former for kommunikation. Der findes flere forskellige kommunikationsteknologier. I2C Bus Vi har valgt at bruge I 2 C bus til at kommunikere med motor controlleren. I 2 C er en simpel bus teknologi hvor det er muligt at tilslutte op mod 127 enheder. I 2 C benytter sig af to ledninger, kaldet SDA og SCL. Den benytter sig af adressering. Så hver enhed på bussen har en adresse. Fordele: Kræver mindre antal ledninger end SPI Ulemper: Begrænset hastighed på 1mbps

26 22 KAPITEL 3. DESIGN OG LØSNINGSMETODER Figur 3.7: Eksempel på I 2 C Bus SPI Bus For at kommunikere med analog-til-digital konverteren på Gertboardet bruges SPI bus. SPI benytter sig af fire ledninger, kaldet MISO, MOSI, SCLK og SS. Forskellen mellem I 2 C og SPI, er hastigheden der kan opnås, samt at SPI kan sende og modtage samtidig. Dog skal der bruges en ekstra ledning pr slave, kaldet slave select(chip select) for at vælge hvilken slave der skal modtage. Denne bruges også når slaven skal sende til masteren. Fordele: Full duplex Højere throughput end I 2 C ca mbps Ikke begrænset til 8-bit words Ulemper: Kræver flere pins end I 2 C, en ekstra per slave(ss) Kun en master, så kommunikation mellem slaver er ikke muligt Figur 3.8: Eksempel på SPI Bus Ekstern Kommunikation For at være i stand til, at kommunikere med robotten, fra en klient computer og på den måde kunne overføre, data fra/til robotten, er det nødvendigt med en form for kommunikation. Det samme gælder for at gøre det muligt, at kunne aflæse live debug data, samt overføre kompileret program kode til robotten.

27 3.6. DEBUG DATA 23 Trådløst Med wifi vil vi kunne opnå trådløs kommunikation, som vil være en stor fordel, med hensyn til at modtage live debug, under eksekvering af programmet, uden at være begrænset af kabel. Vi har valgt at bruge en USB wifi dongle fra König. Figur 3.9: König Wireless 300N CMP-WNUSB50 Trådet Man kan også vælge at bruge trådet forbindelse, men test og udvikling vil blive begrænset, på grund af kabelet. Dette brugte vi dog i starten, indtil vi havde fået wifi komponenten og det trådløse var blevet konfigureret korrekt. 3.6 Debug Data For være i stand til, at debugge på robotten under operationer, er det som tidligere nævnt nødvendigt, med en eller anden form for output, som kan repræsentere debug dataene fra robotten, på en brugbar måde. Herunder nævnes de muligheder som blevet overvejet og afprøvet LCD LCD display var en mulighed der blev overvejet og testet. Men denne løsning blev fravalgt af flere grunde, som kan findes nedenfor. Standard 2*20-4*20 LCD For at tilslutte denne type display, er det nødvendigt med en LCD controller og her blev der testet en BV4208 LCD I 2 C Character Controller IC fra ByVac. Denne controller viste sig at skabe en del problemer. Grunden til disse problemer var, at RPI ens BCM2835 ikke understøtter clock strecthing, se bilag?? på side??. Dette resulterede i, at det kun var muligt at detektere controlleren en gang. Denne løsning blev ikke valgt, på grund af det ovenfor nævnte problem og fordi et LCD af denne type ikke ville være i stand til, at give tilstrækkelig information på grund af pladsmangel.

28 24 KAPITEL 3. DESIGN OG LØSNINGSMETODER Figur 3.10: 4*20 karakters LCD I2C Color Graphic LCD x128 Dette display blev også overvejet, da det ville være i stand til at tegne og fremvise forskellige prædefineret objekter i farver. Denne løsning blev også fravalgt, på grund af manglende plads til information og fordi vi var i stand til at få det til at virke korrekt, da displayet var defekt fra levering af. Figur 3.11: I2C Color Graphic LCD x Terminal Terminal er en simpel og effektiv måde, at få reprænsenteret output/debug data på. Denne løsning blev valgt, da den er optimal med hensyn til plads mangel, i modsætning til LCD løsningen. Ulempen er dog, at man skal have forbindelse til robotten, enten trådet eller trådløst, for at opnå terminal forbindelse Grafisk brugerflade Det er muligt at lave en grafisk brugerflade i terminal. Dette kan for eksempel opnås ved hjælp af et API, kaldet ncurses. Dette har dog sine begrænsningerne, da det hele kører i terminal. Man kan groft sagt sige, at det er en grafisk brugerflade bygger på ASCII karakterer.

29 3.7. SOFTWARE 25 Vi har valgt at bruge terminal til at præsentere debug dataene fra robotten. Der blev dog testet og implementeret ncurses, men det skabte desværre nogle problemer sent i forløbet, så det blev fravalgt. 3.7 Software På software siden har vi alle muligheder åbne og vi kan vælge blandt stort set alle sprog og miljøer, fordi robotten benytter sig af Linux som OS. Der er kun et krav til den løsning vi vælger: at den kan styre det hardware der udgøre robotten. Vi har overvejet følgende muligheder: C/C++: Low-level programmeringssprog. Et klassisk valg, når formålet er kontrol af hardware, fordi det giver programmøren fuld kontrol over alle systemets resurser. C/C++ eksekverer hurtigt og det er muligt at optimere på flere niveauer. Programmøren styrer hukommelsen og multithreading kræver library import. Opsætning af Cross compiler til ARM CPUer er muligt. Java: High-level programmeringssprog. Produktiviteten er høj i Java, men hardware kontrol er begrænset fordi alle kald passerer igennem Javas Virtual Machine. Fordi Java benytter sig af JVMen, kan koden køre på alle platforme. Det vil sige, at koden kan kompileres på en PC og overføres direkte til RPIen og eksekveres. Java holder selv styr på hukommelsen under run time og multithreading/concurrency, er understøttet af standard Java. Python: Fortolket High-level programmeringssprog. Python anvendes ofte som et script sprog eller som bindeled mellem andre programmer, men det er ikke begrænset til at lave små opgaver. Store programmer og hardware kontrol er mindst lige så normalt i Python. Python går efter at gøre programmøren i stand til at lave pæn kode, nemt og hurtigt. Python kompilerer de fleste dele af koden for at få hastigheden med, men main funktionen er fortolket. Holder selv styr på hukommelsen. Tråde er en del af standard Python. Fordi vi netop skal arbejde med hardware, har vi valgt at benytte os af C/C++. C/C++ giver programmøren fuld kontrol over systemet, så eventuelle problemer med hardware formentlig altid vil kunne løses. Da programmet skal køre på et system, med begrænset RAM (256MB) er det en stor fordel, at kunne styre præcis hvordan hukommelsen bruges. 3.8 Robot Vision - Software Softwaren indlæser og behandler dataene fra kameraet. Hvilken type software der kan bruges, kan blive dikteret af hvilken kamerahardware der bruges. Vi har undersøgt følgende muligheder for at behandle kameradata:

30 26 KAPITEL 3. DESIGN OG LØSNINGSMETODER V4L via f.eks OpenCV I Linux er er der indbygget understøttelse i kernen til behandling af videosignaler, hvilket hedder Video4Linux. Der er lavet flere frameworks, der arbejder ovenpå V4L og et af de mest udbredte, hedder Open Computer Vision. Bag OpenCV ligger der over 10års udvikling og frameworket tilbyder mange avancerede funktioner til billedbehandling, samt mulighed for beregning af billeddata i matricer. Direkte kontrol via C/C++ Hvis hardwaren styres direkte via GPIOerne, i samspil med f.eks I 2 C eller SPI, skal der programmeres et interface i C/C++ til at styre kameraet. Dog vil der være komplet kontrol over, hvordan kameraet bliver brugt. Hardwarestyring Det er muligt at styre visse kameraer ved brug af microcontrollere. Styringen kan formentlig simplificeres kraftigt på et direkte kontrolleret kamera, ala TCM8230MD, ved at lave en løsning i hardware. Der skal dog stadig være software, der behandler det billede der bliver taget. Men samling af rækker og brug af kontrolfunktioner, kan laves direkte i hardware. Vi har valgt at bruge OpenCV til at behandle data fra kameraet. OpenCV frameworket indeholder metoder, der passer overens med, hvordan vi vil arbejde med billedet. Frameworket har blandt andet understøttelse for import af billeder til matricer, samt indbyggede funktioner til at konvertere mellem farveskemaer og gråtoner. 3.9 Detekter Streg - Algoritmer For at detektere stregen skal der laves en algoritme. Algoritmen skal afgøre stregens retning, så vi kan bruge dataene til at korrigere på motorerne. For at minimere databehandlingen har vi udtænkt nogle forskellige metoder til at detektere stregen, uden at læse samtlige rækker og kolonner. Algoritmerne bruger altid flere læsepunkter for at eliminere eventuelle fejl. Formålet med med alle algoritmerne, er at finde indgangen og udgangen af stregen i billedet. Herefter kan en vektor udregnes, som i nogle tilfælde bruges til at finde vinklen mellem center linje og udgangspunktet på stregen. Den vinkel giver information om hvor meget stregen drejer/svinger. En anden finder en gennemsnitsvektor og bruger som information om retning Algoritme 1 Denne algoritme gennemløber x antal rækker og detektere venstre og højre kant af stregen, for herefter at regne midtpunkt til stregen og til slut udregnes en gennemsnitsværdi, som udgør en resulterende vektor, der kan bruges som korrektionsværdi til motorerne.

31 3.9. DETEKTER STREG - ALGORITMER 27 Figur 3.12: Gennemløb af x antal rækker Figur 3.13: Midtpunkter fundet Figur 3.14: Gennemsnitsvektor udregnet Algoritme 2 Denne algoritme gennemløber x antal rækker i bunden af billedet, for at detektere venstre og højre side af stregen. Herefter x ud fra venstre kant og y op, indtil den detektere stregen eller når max antal rækker, dvs. ud af billedet. Hvis den ikke detektere stregen i venstre side, gøres det samme for højre side. Hvis stregen heller ikke detekteres her, må det være en ligeud gående streg. Hvis stregen detekteres, forsætter algoritmen som hidtil, indtil kanten på billedet er nået. For herefter at detektere kanten og regne vinklen mellem vektoren og centerlinjen i billedet og få en korrektionsværdi til motorerne. Figur 3.15: x antal rækker gennemløbes i bunden Figur 3.16: Ligeud gående streg detekteret

32 28 KAPITEL 3. DESIGN OG LØSNINGSMETODER Figur 3.17: Streg detekteret i højre side Figur 3.18: linje og vektor Vinkel mellem center Algoritme 3 Denne algoritme gennemløber x antal rækker i bund, top og kun venstre og højre side hvis stregen ikke detekteres i toppen. Hvis stregen ikke detekteres i toppen, gennemløbes så x antal rækker i henholdsvis venstre og derefter højre side. Når udgangspunktet er detekteret, findes vektoren og en vinkel mellem centerlinje og vektor udregnes og vinklen kan bruges som korrektionsværdi til motorerne. Figur 3.19: Gennemløb af x antal rækker Figur 3.20: Midtpunkter fundet Figur 3.21: Vinkel mellem center linje og vektor

33 3.9. DETEKTER STREG - ALGORITMER 29 Figur 3.22: x antal rækker i bund Figur 3.23: x antal rækker i top Figur 3.24: x antal rækker i venstre side Figur 3.25: x antal rækker i højre side Figur 3.26: linje og udgang Vinkel mellem center Figur 3.27: linje og vektor Vinkel mellem center

34

35 Kapitel 4 Vores løsning 4.1 Tardrover Vi har bygget en robotplatform ovenpå en Raspberry Pi. Vi kalder den TardRover. Løsningen er bygget op af elementerne vi identificerede i design og research fasen, samt de ting vi fandt nødvendige undervejs i processen. Dette kapitel beskriver vores platforms opbygning og virke. 4.2 Robottens Hardware På hardware siden, er vi gået efter at et simpelt design. Det har vi opnået, ved at bruge så få komponenter som muligt. Dem som er blevet brugt, er så vidt muligt, færdige komponenter. På den måde kan vi undgå fremstilling af egen elektronik. Vi har dog stadig designet et connector print, da dette var nødvendigt for at forbinde de forskellige komponenter. De valgte hardware komponenter, kan se i Tabel?? på side??. Vores hardware løsning ser således ud: 31

36 32 KAPITEL 4. VORES LØSNING Figur 4.1: Overblik over hardware tilslutninger Valgte komponenter Her vises en oversigt over hvilke komponenter, der er blevet valgt til robotten i det foregående afsnit. Oversigten indeholder information om, hvilken spænding de enkelte komponenter skal forsynes med, producent og model nummer. Tabel 4.1: Robottens komponenter Komponent Producent Model nr. Spænding Raspberry PI Raspberry PI Fundation Model B 5v Kamera Philips SPC900NC/00 5v Motorer Faulhaber Series S 6v Gertboard Tandy Rev 1 5v Motor Controller Web4Robot DMC-1 5v USB WIFI dongle Konig Electronic CMP-WNUSB50 5v SD Kort 32GB, Klasse 10 Transcend Batterier For at drive selve robotten, skal der bruges en strømkilde. Vi har valgt at dele robotten op i 2 separate kredsløb, henholdsvis 6v til motorerne og 6v til Raspberry PI en og andet elektronik. Som batterier, har vi valgt en standard løsning, som består af 2 batteripakker. Hver batteripakke består af 4*AA parallelt koblet til PIen og andet elektronik, samt en

37 4.2. ROBOTTENS HARDWARE 33 identisk til motorerne. Grunden til vi har valgt en sådan standard løsning er, at det er nemt for alle at fremskaffe. Nedenfor vises et billede af en af batteri pakkerne: 1 stk AA Batteri = 1,5v Batteri RPI : 4 1,5v = 6v (4.1) Batteri Motor : 4 1,5v = 6v Grunden til at vi har valgt at forsyne RPI en og andet elektronik med 6v er, at RPI en og andet elektronik trækker så stor en strøm, at spændingen falder til ca 5,5v på friske batterier. For at undgå for lav spændingen, til at drive elektronikken, var dette en passende løsning. Figur 4.2: 6v batteri pakke Strømføring Strømmen fra batteripakkerne kommer ind i systemet via vores connector board. Der sidder en kontakt foran hver forsyning, så det er nemt at tænde eller afbryde strømmen. For at give strøm til RPIen og de forbundne enheder backfeeder vi strøm til RPIen, via dens 5V pin på GPIO headeren. 5V pinen er brugt som strømbus igennem hele systemet. Fordi vi backfeeder strøm til RPIen, er det vigtigt at der aldrig bliver tilsluttet strøm til den normale strømindgang (microusb porten), da det vil kortslutte systemet Batteri Monitor Da vi fra tidligere erfaringer ved, at det kan give mange problemer med for lav spænding til diverse hardware komponenter, har vi valgt at implementere en batteri monitor, som kan hjælpe med at overvåge spændingen på batterierne og logge det til en tekst fil. En log fil for hvert kredsløb. Det gøres ved hjælp af et program, der er kodet til formålet. For at omsætte den analoge batteri spænding til et digitalt output, har vi benyttet den 2 kanals, analog-til-digital konverter, som er på Gertboardet 1. Da robotten 1 Gertboard er et udvidelses/udviklingsboard til Raspberry PI

38 34 KAPITEL 4. VORES LØSNING bliver forsynet ved hjælp af 2 stk batteri pakker af 6 volt og analog-til-digital konverteren bruger 3,3v som reference spænding, måtte der laves en spændingsdeler til hver batteri pakke, for at få delt spændingen ned til de 3,3v. Udregningerne til volt delererne kan findes i bilag?? på side??. Software implementeringen kan ses i afsnit?? på side??. Figur 4.3: Skematik Spændingsdeler Print / Connector board For at opnå forbindelse mellem alle komponenterne, samt tilslutningsmulighed for strøm har vi designet og fremstillet et print. I forhold til skematikken, har vi fjernet de 2 volt regulatorer, da de skabte problemer. Der er eftermonteret 2 elektrolytter på 22uF, for at opnå en renere spænding til motorerne, samt motor controlleren. For yderligere information om printet, se bilag?? på side??. Printet giver følgnede tilslutninger og funktionalitet: 2 x Spændingsdelere 1 Sokkel til GPIO pins 5 x Sokler for I 2 C bus 1 Sokkel til motor controller 2 x Stik til motorer 2 x Tænd/Sluk swtiche 2 x Strøm tilslutning

39 4.2. ROBOTTENS HARDWARE 35 Figur 4.4: Tilslutningsprint Raspberry Pi Raspberry Pien bruges som den kommer fra fabrikken. Vi har ikke modificeret hardwaren i forbindelse med projektet. Forbindelse mellem boards RPIen, Gertboard og vores connector board er tilsluttet hinanden, via et 26 pins fladkabel med 3 konnektorer. GPIO For at kommunikere med det hardware robotten består af, bruger vi GPIOerne til at etablere I 2 C og SPI bussen. Hver tryk knap er også tilsluttet en GPIO. Oversigt over RPIens GPIO headeren kan ses i bilag?? på side??. Vi bruger følgende GPIOer i vores setup:

40 36 KAPITEL 4. VORES LØSNING GPIO Formål 0 I 2 C SDA 1 I 2 C SCL 9 SPI MOSI 10 SPI MISO 11 SPI Clock 23 Push Button S3 på Gertboard 24 Push Button S2 på Gertboard 25 Push Button S1 på Gertboard Tabel 4.2: GPIOer i brug Motor og Controller Robottens fremdrift kommer fra de to DC motorer, som er styret af DMC1 Motor controlleren. Vores program styrer motor controlleren via I 2 C. Motor hastighed sættes via denne I 2 C kommando: 0x4D 0xFE 0x4D 0x03 0x00 0xFA Alle parametre angives som Hex. De første 3 parametre er adressering. 0x03 er koden for at sætte motor hastighed, 0x00 er motor valg og retning og 0xFA er hastigheden. Hastigheden angives som et hex tal med decimal værdi mellem 0 og 250. Hvis der skal sættes en hastighed på begge motorer samtidigt, har vi måtte indlægge en pause i koden på 2ms mellem de to kommandoer. Ellers fejler operationen og det er kun den ene motor der får den nye indstilling. (Det skyldes formentlig at noget elektronik i motor controlleren, skal blive færdigt med PWM signalet til den ene kanal, inden den er klar til at lave signalet til den anden.) Motor Tacho Signal Ved at bruge tacho signalet fra motorerne, kan man få information om hvor meget akslen har roteret, hastigheden den roterer med og rotationsretningen. Dette er en brugbar information når man ønsker at vide, hvor langt robotten har bevæget sig og til at synkronisere hastigheden på hver motor. Grunden til, at to ellers identiske motorer ikke er har helt ens hastighed, er at der altid vil være forskellig mekanisk modstand og forskel i spolerne. Vi endte med ikke at bruge Tacho signalet på robotten. Der var ikke behov for det feedback i vores løsning. Vi har dog brugt noget tid på at få signalet gjort brugbart og arbejdet med tacho signalet, er beskrevet i bilag?? på side??.

41 4.3. FYSISK DESIGN Fysisk Design Vi har designet et chassis i aluminium, som kan indeholde de valgte komponenter og hvorpå, motorerne kan monteres. Motorerne er placeret i den ene ende og kamera i den modsatte ende. Forrest er der monteret et castor hjul. Kameraet er monteret foran og er placeret 15 cm over overfladen, som robotten kører på. Figur 4.5: Robotten set skråt forfra Figur 4.6: Robotten set fra siden Figur 4.7: Robotten set forfra Figur 4.8: Robotten set ovenfra 4.4 Software På software siden i robotten er der følgende vigtige elementer. Operativsystemet, som giver os en software platform at arbejde videre på, vores softwareløsning som fremhæver de dele af vores program der giver funktionaliteten: Billedbehandlingen, detekteringen af stregen og brug af motorer. Software funktionalitet er designet med Use Cases som kan ses i bilag?? på side??. Vores software løsning ser således ud:

42 38 KAPITEL 4. VORES LØSNING Figur 4.9: Overblik over software løsning Styresystem - Linux Robotten er blevet udviklet oven på Arch Linux ARMv6, fordi det havde det mindste footprint og det er designet til at være kompakt, hvilket er perfekt til vores robot. Når Arch er indlæst og systemet er klar til brug, bruges der ca 6% CPU på at drive systemet, samt af baggrundsprocessor. ]# mpstat Linux ARCH+ (alarmpi) 12/20/12 _armv6l_ (1 CPU) CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle all Ud af de 236MB ram der er til rådighed for OS, er der ca 194,8MB tilbage efter startup. ]# cat /proc/meminfo MemTotal: kb MemFree: kb

43 4.4. SOFTWARE 39 Vi har optimeret installationen en smule. Flere detaljer omkring installation og opsætning af Arch Linux kan ses i bilag?? på side?? Button_listener For at være i stand til at bruge trykknapperne på Gertboardet til at starte og stoppe vores hovedprogram, kaldet TardRover. Har vi lavet et program, der kontrollerer værdien på de tildelte GPIO er med et interval på 30ms. Start, er tildelt GPIO 24 og stop er tildelt GPIO 23, som er aktiv lav(0). Der er brugt et C library til Broadcom bcm2835 2, som gør det muligt at at tilgå GPIOerne direkte fra programmet(kernel space). I stedet for at bruge systemkald for at læse værdierne fra de eksporteret GPIO, som så er user space. Programmet startes op som en service under OS opstart. Servicen er sat til Restart=always, så ved crash vil det blive startet op igen. Figur 4.10: Snippet fra Button_listener kode [Unit] Description=ButtonListener [Service] ExecStart=/Code/button_listener/button_listener Restart=always 2 Kan findes her:

44 40 KAPITEL 4. VORES LØSNING [Install] WantedBy=multi-user.target Battery_monitor Som tidligere nævnt i hardware afsnittet?? på side??, har vi implementeret 2 batteri monitorer til at overvåge spændingen på batterierne. Til dette skal der bruges et program, som har til opgave at hente værdierne for hver af de to kanaler på ADC en. For derefter at logge værdierne til en status og en log fil. Status filen indeholder en linje med den nuværende status og log filen indeholder alle målinger foretaget. Dette gøres for begge batteripakker. Information hentes af Motd 3 samt GUI. Herunder ses indholdet af RPI_Batt_Status.txt: Data format: <værdi> <batteri status> 690 Battery OK Herunder ses indholdet af RPI_Batt_Log.txt: Data format: <værdi>;<batteri status>;<process status>;<tid&dato> 684;Battery OK;PCTardRover - Not Running;Thu Dec 27 14:47: ;Battery OK;PCTardRover - Running;Thu Dec 27 14:52: ;Battery OK;PCTardRover - Running;Thu Dec 27 14:57: ;Battery OK;PCTardRover - Not Running;Thu Dec 27 15:02: ;Battery OK;PCTardRover - Not Running;Thu Dec 27 15:07: ;Battery OK;PCTardRover - Running;Thu Dec 27 15:12: ;Battery OK;PCTardRover - Not Running;Thu Dec 27 15:17: ;Battery OK;PCTardRover - Not Running;Thu Dec 27 15:22: ;Battery OK;PCTardRover - Not Running;Thu Dec 27 15:27: ;Battery OK;PCTardRover - Not Running;Thu Dec 27 15:32: Herunder vises et skærmbillede af koden for aflæsning på den ene kanal. Vi tager et gennemsnit af 1000 aflæsninger for at eliminere udsving. Udsving i aflæsningerne, skyldes den høje opløsning på 10 bit, på en reference spænding på 3,3v. 3,3v = v (4.2) 210 Udregningen viser, at for hvert udsving på v, vil det digitale output fra ADC en blive ændret med 1. 3 Se bilag?? på side??.

45 4.4. SOFTWARE 41 Figur 4.11: Snippet fra Battery_monitor kode [Unit] Description=Battery Monitor [Service] ExecStart=/Code/battery_monitor/battery_monitor Restart=always [Install] WantedBy=multi-user.target TardRover Vores C++ program til at bruge robotten, kaldes PCTardRover. Det er PCTardRover programmet der kan styre robotten til at følge en linje eller lade operatøren køre robotten i freemode. For at starte de forskellige dele af programmet, skal det startes med et argument. Programmet modtager følgende argumenter:

46 42 KAPITEL 4. VORES LØSNING Argument freemode linefollow Beskrivelse Programmet starter i freemode. (motorleg subrutinen) Hovedprogrammet til at følge en streg på overfladen. - Intet argument starter linefollow Softwarepakker og kompilering PCTardRover benytter sig at standard funktionalitet samt software bibliotekerne Open- CV, NCurses og PThreads. OpenCV Vision / Billedbehandling NCurses Bruges til at bygge GUI PThreads Tråde og Mutexer Til at kompilere programmet, har vi brugt en cross compiler og RPIen. Opsætning af cross compiler er beskrevet i bilag?? på side??. Freemode I freemode kan operatøren styre robotten via sit keyboard. Freemode aktiveres ved at køre metoden motorleg. For at starte programmet i freemode, skal operatøren starte det via terminal. Ellers kan robotten ikke modtage tastetryk fra operatøren. Det er ikke muligt at aktivere freemode via knap1 som UC4 beskriver 4, da vi derved ikke er forbundet til terminalen. Når freemode er aktivt, lytter programmet efter tastetryk fra operatøren, der er forbundet via SSH over trådløst netværk. Maksimum motorhastighed er 250 fremad eller bagud. Programmet understøtter følgende tastetryk: Tast a w s d Beskrivelse Venstre: Motorer justeres: -10 på venstre og +10 på højre Fremad: Motorer justeres: +20 på begge. Bagud: Motorer justeres: -20 på begge. Motorer justeres: +10 på venstre og -10 på højre. q Håndbremse: Begge motorer sættes til 0. c Lukker programmet. 4 Use Case 4 kan ses på side??

47 4.4. SOFTWARE 43 LineFollow LineFollow er vores hovedprogram, hvor robotten følger efter stregen på overfladen. Programmet tager billeder i 160x120pixels og analyserer dem for at finde stregen, hvorefter motorene korrigeres. LineFollow aktiveres ved at køre metoden linefollower. De næste sektioner forklarer hvilke dele LineFollow består af og hvordan de virker. Programmet kan startes via Knap2 på robotten eller via terminalen. Når man er forbundet til terminalen kommer der live debug ud i konsollen. Programmet består af 3 tråde. En til main, en til billedbehandling og en til GUIen. En illustation af trådenes funktion kan ses på figur?? på side??. Inden programmet startes, er det vigtigt at robotten står oven på stregen og at kameraet har stregen midt i synsfeltet. Det er krævet for at dens autokalibrering måler rigtigt når den tester og finder farven på stregen og overfladen. Illustration af målepunkterne kan ses på figur?? på side?? Klassediagram Vores C++ program har 5 klasser og en main metode. Main - Hovedtråden. Initialisere variabler, starter tråde op og styrer derefter motorene. GUI - GUIen. I2CDevice - Superklasse til I2C enheder. Motor - Arver fra I2CDevice, bruges til at styre motor controlleren. Klassen indeholder funktioner til at sætte begge motorer, eller blot den ene. Vision - Billedbehandlingen. Indeholder stregdetektering og RGB kalibrering. stregrow - Bruges som dataklasse til rækker og kolonner af vision klassen.

48 44 KAPITEL 4. VORES LØSNING Figur 4.12: Main, GUI, Vision og stregrow Figur 4.13: I2CDevice og Motor Tråde Der er defineret 3 tråde i linefollow programmet: Hovedtråden der kører main

49 4.4. SOFTWARE 45 En tråd der kører GUI klassen En tråd der kører Vision klassen / billedbehandling Når Vision klassen kører findstreg, looper den uendeligt derfra. Den venter dog 5ms efter hvert billede, for at sikre at kameraet er klar med næste frame. GUIen modtager data fra Vision klassen omkring udregninger og billedet. Hovedtråden modtager data fra Vision Klassen omkring korrektion, via den delte variabel. Variablen bliver checket for ny data hvert 10ms. Figur 4.14: Tråde og samspil Billedbehandling for at se stregen For at robotten kan finde stregen på overfladen, skal billedet fra kameraet omsættes til et brugbart datasæt. Kort fortalt, omsættes et RGB billede til et sort/hvid billede, der danner grundlag for en matrix, hvor felterne indeholder 0 eller 255. Matricen bruges derefter som koordinat system til at udregne stregens placering. Omsætning til sort/hvid er illustreret på figur??. Figur 4.15: Billedbehandlings process

50 46 KAPITEL 4. VORES LØSNING Når billedet er omsat til sort/hvid, skal stregen findes på billedet. Der skal udregnes en korrektion, der kan sendes videre i systemet, så der kan foretages en justering på motorerne. Billedbehandlingen, der kører når robotten følger stregen, har 4 hovedpunkter: 1. OpenCV tager en frame fra kameraet 2. Framen bliver konverteret til et sort/hvid billede ud fra den bedste enkeltfarve i RGB formatet. 3. Sort/hvid billedet konverteres til en matrix, hvori stregens kanter findes. 4. Stregens kanter omsættes til en retningsvektor, der omregnes til en vinkel, der sendes videre i systemet. Billedformatet RGB Billeder fra kameraet kommer i formatet RGB. RGB er et farveskema, hvori primærfarverne rød, grøn og blå kombineres for at skabe nye farver. Forkortelsen RGB er dannet fra forbogstaverne på primærfarverne: R = Rød, G = Grøn og B = Blå. Figur 4.16: RGB Primærfarverne sammensat for at skabe flere farver I RGB billeder gemmes der 24 bit for hver pixel. 8 bit for rød, blå og grøn. Der hver bidrager med en værdi mellem 0 og 255 til en pixel. Sammensætningen af RGB værdierne udgør den farve, der reelt er pixlens farve og med 256*256*256m, kan der dannes ca millioner farver i alt.

51 4.4. SOFTWARE 47 Figur 4.17: RGBs opbygning Herunder ses eksempler på opbygninger af farver i RGB formatet. Figur 4.18: RGB eksempler Kalibrering til sort/hvid konvertering For at gøre robotten i stand til at se forskel på stregen og overfladen, skal der findes en grænseværdi, der kan bruges til at afgøre, hvad der ender som sort og som hvidt. Kalibreringsprocessen kan ses på figur??. Figur 4.19: Kalibrerings process

52 48 KAPITEL 4. VORES LØSNING Autogain aktiveres og deaktiveres via systemkald til V4L inde fra vores program. Det sikre, at der tages højde for den nuværende lysstyrke i kalibreringsøjeblikket. Når kalibreringen er afsluttet, stoppes autogain igen, så den ikke justerer kameraet yderligere under kørsel 5. For at finde den optimale grænseværd til sort/hvid konverteringen, splittes RGB billedet fra kameraet ud til de enkelte farve kanaler: blå, grøn og rød alpha kanal. Hver kanal gemmes som et gråskala billede, hvor farveværdien er repræsenteret som et tal mellem 0 og 255. Processen er illustreret på figur??. Figur 4.20: Billede splittet ud i R, G og B. Her giver den grønne kanal den klart bedste kontrast mellem streg og overflade Kalibreringen tester derefter de enkelte farver. Som vist på figur??, læses farveværdien flere steder 6 for at udregne en gennemsnitsværdi. (Kalibreringen antager at kameraet kan se en streg og overflade foran sig, hvor stregen er i midten og lodret op igennem billedet.) 5 Se bilag?? på side?? for problemer med auto justering. 6 Punkterne er variable, så det ikke er låst til en billedstørrelse

53 4.4. SOFTWARE 49 Figur 4.21: Målepunkter brugt i kalibreringen Når alle værdier er udlæst, udregnes der en gennemsnitsværdi for stregen og overfladen for hver farve. #### Kalibrerer grayscale til faverne på overfladen #### Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 102 Streg = 60 diff = 42 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 82 Streg = 49 diff = 33 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 187 Streg = 70 diff = 117 Derefter sammenlignes resultaterne for at finde den RGB kanal, der har den største difference mellem streg og overflade. Og i det ovenstående eksempel er det grøn, hvor differencen er størst. Grøn giver bedste resultat! Grøn avg værdier: Overflade = 187 Streg = 70 diff = 117 Sort/hvid konverterings værdi er: 128

54 50 KAPITEL 4. VORES LØSNING Vi kan nu udregne konverteringsværdien for den grønne kanal: KonverteringsValue = Streg + (di f f /2) 128 = 70 + (117/2) (4.3) Konverteringsværdien og hvilken farvekanal der skal splittes til gemmes og bruges derefter videre i programmet til at udføre den løbende sort/hvid konvertering. Konverteringsværdier bliver den grænse værdi der bestemmer hvad der bliver til sort og hvidt i sort/hvid konverteringen For eksempler på test af sort/hvid kalibreringen i flere miljøer, se?? på side?? Detektering af stregen Når sort/hvid billedet er lagt over i en matrice, kan vi regne på hvor stregen befinder sig på billedet. Billedet er bliver behandlet er på 160x120 pixels og matricen er efterfølgende det samme. Til at detektere stregen har vi prøvet både algoritme 1 og algoritme 3, beskrevet i afsnit?? på side??, men endte med køre med algoritme 3, da den gav det klart bedste resultat. Algoritme 1 var ikke i stand til at lave korrektioner der var store nok, idet den normaliserede sig selv ved at tage gennemsnittet hele vejen op igennem stregen og ikke kun brugte data for, hvor vi skal hen på lang sigt. Vi har brugt en let modificeret udgave af algoritme 3 i det endelige design. Den eneste ændring er, at vi ikke længere kigger efter stregen i bunden af billedet, men ser kun efter hvor stregen går ud af billedet. Processen for algoritme 3 er vist på figur??. Figur 4.22: Flow chart for algortime 3 Implementering af algoritme 3 Algoritmen scanner først efter stregen i toppen af billedet. Rækkerne 2, 4 og 6 bliver læst igennem fra venstre mod højre og så snart den ser to farvede pixels i træk, sætter den en markering om at det her er stregens kant. Derefter læser den fra højre mod venstre på

55 4.4. SOFTWARE 51 samme måde. To farvede pixels i træk og højre kant er fundet. Stregen findes i en række ad gangen med metoden findkantpunkterrow i vision klassen. Figur 4.23: Rækkerne 2,4 og 6 bliver checket og stregen findes Figur 4.24: Rækkerne 2,4 og 6 checkes. Stregen findes ikke Hvis den ikke kan finde en streg i toppen af billedet, prøver den dernæst begge sider. Her analyseres kolonnerne 2, 4 og 6 fra venstre side, samt kolonnerne 2, 4 og 6 fra højre side for at se, om stregen går ud af en af siderne. Igen checker den efter to farvede pixels i træk for at finde stregens kant. Stregen findes i en kolonne ad gangen med metoden findkantpunktercol i vision klassen. Figur 4.25: Kolonne 2,4 og 6 i venstre side bliver checket Figur 4.26: Kolonne 2,4 og 6 fra højre side bliver checket Når stregens udgangspunkt i billedet er fundet, regnes der en vinkel mellem det punkt og midten af bunden, hvor robottens centrum befinder sig. Vinklen bruges bagefter til at udregne vores korrektionsværdi. Forskellen i koordinater mellem robottens midte og stregens udgang, bruges til at lave X og Y siden af en retvinklet trekant. Se figur??. På den trekant kan vi så udregne tangens, som regnes om til vinklen. Derefter trækkes 90 o fra, så vi har 0 o på Y-aksen. Se figur??.

56 52 KAPITEL 4. VORES LØSNING Figur 4.27: Tangens udregnes Figur 4.28: Y-akse som 0 o Viklen udregnes således: KorrektionsVinkel = (atan2(y,x) 180/π) 90 (4.4) Hvis korrektionsvinklen er negativ, er stregen på højre side af y-aksen, er den positiv så er den på venstre side. Med 0 o op ad y-aksen, så regner vi forholdet ud mellem forskellen på y-aksen og vores korrektionsvinkel. Dette forhold ganges direkte på den maksimale motorhastighed som er 250. Det vil sige, en korrektionsvinkel på 45 o vil give en korrektionsværdi på 125. Hvis korrektionsvinklen er negativ, bliver korrektionsværdien også gjort negativ. Korrektionsværdien spænder mellem 250 og -250, Korrektion = 250 ((90 abs(korrektionsvinkel))/90) 7 (4.5) Når korrektionen er udregnet, gemmes den som float. Vi bruger et Pair til data, hvor første parameter er status på om ny korrektion er klar og andet parameter er selve korrektionsværdien. En Mutex bruges for at sikre den kritiske region, da hovedtråden checker hvert millisekund om der er ny korrektionsværdi. Figur 4.29: Korrektionen gemmes med Mutex for thread safety Brug af korrektionssignal fra billedbehandlingen Når billedbehandlingen er færdig med at regne på en frame sættes der en variabel i et delt pair, så hovedtråden ved at der er ny data klar til motorerne. Se figur?? på side?? for 7

57 4.4. SOFTWARE 53 hvordan data gemmes. Figur 4.30: Korrektionen læses med Mutex for thread safety. Hvis der er en ny korrektionsværdi fra billedbehandlingen, bliver funktionen motorstreg kørt med korrektionsværdien som argument. Den ene motor sættes til maksimal fart 8 og den anden er nedjusteret med forholdet fra korrektionsvinklen, så robotten svinger til den rigtige side. Korrektionsværdiens fortegn bestemmer hvilken motor der bliver sat ned i hastighed. Hvis fortegnet er positivt, går stregen mod venstre og vi skal sænke farten på venstre hjul, så vi drejer den vej. Er den negativ, skal vi mod højre og farten bliver sænket på højre hjul. Hvis robotten mister syn af stregen, bliver korrektionsværdien sat til 0, enten fordi stregen er stoppet eller fordi vi har mistet syn af den. Når motorstreg ser et 0 som input, tester den hvad forskellen er på de to motorers hastighed. Hvis forskellen er over 25 så var robotten formentlig i gang med at lave et sving fra sidste korrektion. Svinget fortæller noget om, hvor vi sidst mente stregen var, så den fortsætter med samme sving i håb om at kunne genfinde stregen. Hvis korrektions værdien er over 240 eller under -240, går vi ud fra, at vi skal køre ligeud det næste korte stykke tid og højhastigheds kørsel aktiveres. Her kører vi lidt stærkere end normalt, men kun ligeud. 8 Se?? på side??.

58 54 KAPITEL 4. VORES LØSNING Flowchart - Robotten følger en streg streg 9. Den samlede softwareløsning fungerer som set på figur??, når robotten følger en Figur 4.31: Robottens process 9 Se testen i afsnit?? på side?? for videoer af robotten i funktion

59 4.4. SOFTWARE Samspil mellem kamera, detektering og motorer Vi har testet maksimum farten på robotten og udregnet den til 55.25cm/sekundet 10. Kameraet ser med ca. 8 fps 11 i vores program og det giver en samplingrate på ca. 120 millisekunder 12, for at sende et billede igennem systemet. Fordi robotten altid kører, bevæger den sig mens billedet er undervejs i systemet. Vi har udregnet den afstand: cm/ms = cm/s cm/ms = (4.6) bevaegelseprsample = samplingrate cm/ms cm = 120ms cm/ms Robotten bevæger sig op til 6.64cm inden den får behandlet og korrigeret motorer efter et billede, hvis den kører med maksimal fart. For at udligne den effekt, skal kameraet se mindst 6.5 cm foran robottens hjul. Hvis kameraet kigger lige ned, som i testen i afsnit?? på side??, kan det se 7 cm fra top til bund i billedet. 7 cm er næsten hvad robotten kører i sin maksimale fart pr sample og i det tilfælde bør farten halveres fra de maks 250 til 125, så vi har to chancer for at korrigere, og en hvis der er I/O delay ?? på side?? 11?? på side?? 12?? på side?? 13?? på side??

60

61 Kapitel 5 Test Hardware og software, der er brugt i løsningen, er blevet testet så vidt det har været muligt. Formålet med at teste er, at sikre at alle komponenter fungerer som forventet og er konfigureret korrekt, således at kravene bliver opfyldt. Vi har valgt at dele afsnittet op i en hardware og software test og til sidst en acceptance test som afspejler kravene. 5.1 Hardware Tests Formålet med at teste de individuelle hardware komponenter og kommunikationen mellem dem, er at verificere at de fungerer som forventet og efter specifikationerne, samt at teste komponenterne i et kontrolleret miljø inden de implementeres i den endelige løsning. Her vises en oversigt det udstyr, der er blevet brugt til at udføre testene. Logic16, Logic Analyzer Fluke 45, Multimeter Agilent DSO7014A, Oscilloskop Elcanic LR2302, Strøm forsyning Smartphone, iphone 4 Bærbar, MacBook Pro Retina Test af DMC-1 Motor Controller Formålet med at teste PWM signalet fra motor controlleren, er at verificere at der er output signal og at signalet er som forventet ved de forskellige duty cycles. Vi har testet PWM signalet på begge kanaler. Der er blevet testet ved 100%, 50%, 10% og 0% duty cycle. Det gule signal er motor 1 og grønne er motor 2. Til testen er der brugt følgende: DMC-1, Agilent Oscilloskop og iphone med Spektrum 57

62 58 KAPITEL 5. TEST Applikation. Hastigheden kan angives i intervallet dvs. 0x00-0xFA Eksempel: Sæt motor 1 til 100% Duty Cycle: i2cset -y 1 0x4D 0xFE 0x4D 0x03 0x00 0xFA i Figur 5.1: Udklip fra DMC-1 Datablad Figur 5.2: 100% Duty Cycle, 250 Figur 5.3: 50% Duty Cycle, 125

63 5.1. HARDWARE TESTS 59 Figur 5.4: 10% Duty Cycle, 25 Figur 5.5: 0% Duty Cycle, 0 Test af komponenten viste, at den ikke levede op til specifikationerne anvist i databladet. Dog er funktionaliteten i orden, da målingerne afspejlede de forventede Duty Cycles. Komponenten kan bruges i vores robot til at drive vores DC motorer. Testen viste også, at PWM signalet ligger på knapt 3.94kHz 1 og ikke de 20 khz som opgivet i databladet. Dette forklarer, hvorfor der opstår støj når motorerne er i drift. Støjen er højere ved lavere duty cycles. For at undersøge det, tog vi nogle målinger med en spektrum meter applikation til iphone, for at få et billede af den støj motorerne udsender. Herunder vises billederne fra målingerne opfanget af spektrum meterret: Figur 5.6: Strøm slukket Figur 5.7: 0 af 250, 0% Duty Cycle 1 Dette område ligger i det menneskelige hørelse, fra ca. 20Hz - 20kHz.

64 60 KAPITEL 5. TEST Figur 5.8: 10 af 250, 4% Duty Cycle Figur 5.9: 250 af 250, 100% Duty Cycle Når strømmen er slukket er der ingen støj, men så snart motor controlleren sender strøm mod motorene, selv ved 0% duty cycle, fremkommer støjen. Dog er den støj ikke høj nok til at være irriterende for øret (Det var den tilgengæld, da vi eksperimenterede med motorene og gav dem 12V, men der vidste vi ikke, at det var grunden). Ved 4% duty cycle er støjen tydelig og hørbar. På figur?? er der et tydeligt signal ved 3.94kHz, som oscilloskopet også viste. Ved 100% duty cycle er der så meget andet støj, at det er umuligt at se de peaks som vi identificerede ved 4%. Vi kan heller ikke høre den piver på samme måde som ved lav hastighed. For at minimere støjen fra motorene skal vi have så høj fart som muligt, men helt forsvinder den aldrig Test af Tacho Pulser Formålet med at teste tacho pulser fra encoderen er, at verificerer om der er output signal og om signalet stemmer overens med det vi har fundet frem til, ved hjælp af de enkelte datablade for motor, gear og encoder. Til testen er der brugt følgende: DMC-1, Motorer og Agilent Oscilloskop. Herunder vises billederne fra oscilloskopet:

65 5.1. HARDWARE TESTS 61 Figur 5.10: 100% Duty Cycle, 250 Figur 5.11: 50% Duty Cycle, 125 Figur 5.12: 10% Duty Cycle, 25 Figur 5.13: 0% Duty Cycle, 0 Testen af tacho signaler viste det forventede og kan bruges som feedback fra motorerne, så robotten har information om, hvor meget hver aksel på motorerne har bevæget sig. Dette gør det muligt at drive motorerne med høj præcision og hele tiden have styr på, hvor langt og hvor hurtigt robotten bevæger sig. Dog skal der tages højde for dårligt greb på grund støv og smuds på overfladen Test af Trykknapper Formålet med at teste trykknapperne er, at få konstateret at de virker korrekt. Gertboardet har 3 trykknapper monteret, kaldet S1, S2 og S3. Til testen er der brugt følgende: Gertboard - Trykknapper og Agilent Oscilloskop. Herunder vises billederne fra oscilloskopet:

66 62 KAPITEL 5. TEST Figur 5.14: Test af Trykknap S3 Figur 5.15: Test af Trykknap S2 Figur 5.16: Test af Trykknap S1 Testen viste korrekt signal og at trykknapperne kan bruges som ekstern input til robotten. Det viste også at de er aktiv lav(0). Dog viste det sig at trykknap S1 ikke fungerede Test af I 2 C Bus Formålet med at teste I 2 C bussen, er at verificere at der er output signal og at der er kommunikation mellem enhederne, samt konstatere hvilken frekvens bussen kører. Til testen er der brugt følgende: DMC-1, Logic16 Analyzer og I 2 C-tools 2. Følgende kommando er udført fra terminalen ved at bruge det installeret I 2 C-tools, som gør det muligt at kommunikere med I 2 C enheder. Sæt motor 2 til max hastighed: i2cset -y 1 0x4D 0xFE 0x4D 0x03 0x03 0xfa i Herunder vises skærmbillede af det opfanget signal på I 2 C bussen og analysen foretaget af Logic16 Analyzer. Figur 5.17: Skærmbillede fra Logic16 Analyzer sat til 7bit I 2 C Testen viste signalet og de værdier der er fundet, matcher den udførte kommando og vi kan derfor konkludere, at forbindelsen virker korrekt. Testen viste at der var kommunikation mellem enhederne og at frekvensen var 107kHz. Hvilket er lidt mere end de 2 Dette er en pakke, som gør det muligt at kommunikere, med I 2 C enheder fra terminalen

67 5.1. HARDWARE TESTS 63 forventede 100kHz. Dette forklarer hvorfor, der var problemer med I 2 C enhederne fra ByVac, som kun kan kører 100kHz og som derfor prøver at bruge clock stretching til at fortælle masteren(rpi en), at transmissionshastigheden skal sænkes. Det fungerer ikke korrekt på BCM2835 chippen og resulterer i, at enheden kun kan detekteres en enkelt gang. Derefter kan enheden ikke detekteres mere. For yderligere information om I 2 C problemerne, se bilag?? på side?? Test af SPI Bus Formålet med at teste SPI Bussen er, at verificere at der er signal og at der er kommunikation mellem enhederne, samt at få verificeret at bus frekvensen er 1MHz som defineret i driveren til SPI kommunikationen. Til testen er der brugt følgende: Gertboard - ADC, Batteripakke, Logic16 Analyzer og C/C++ program. For at test SPI bussen brugte vi et lille program til at hente ADC værdien fra kanal 1, som er tilsluttet batteripakken til RPI en. Den forventede værdi der skal aflæses er 389. Herunder ses signalet som er opfanget af Logic16 Analyzeren. Figur 5.18: SPI signal fra Logic16 Logic Analyzer Ved at kigge nærmere på det opfanget transmissionssignal kan vi analysere det og se om vi kan detektere den forventede værdi, ud fra de 2 bytes opfanget ovenfor. Herunder vises udregningerne/bit operationerne foretaget for at finde værdien på 389.

68 64 KAPITEL 5. TEST Figur 5.19: Bit operationer foretaget på de 2 bytes. Testen viste, at der var kommunikation mellem RPI en og ADC en. Det blev verificeret, at de korrekte informationer blev transmitteret, opfanget og analyseret.testen viste også at SPI bussen kører på 1MHz, som forventet Test af ADC Vi har testet ADC en ved at verificere at der det korrekte forhold mellem det analoge input og det digitale output. ADC en arbejder med en opløsning på 10 bit. Den omregner en spænding mellem 0-3,3v til en digital værdi mellem Til testen er der brugt følgende: Gertboard - ADC, Voltmeter, Strømforsyning og C/C++ program. Følgende værdier er aflæst, ved hjælp af et test program skrevet i C/C++, som udskriver den digitale værdi i terminalen. Tabel 5.1: Test Resultat af ADC Analog Input Aflæst Værdi 3,313v ,655v 514 0,8089v ,95mv 0013 Testen viste, at ADC en virker korrekt dog med små afvigelser. Årsagen til de små afvigelser, er grundet en ustabil forsyning fra batterierne, når andet elektronik er tilsluttet. Små udsving i spændingen er tydelige, grundet en 10 bit opløsning og en reference spænding på 3,3v. Dette gør, at selv små udsving i spændingen, resulterer i afvigelser i de

69 5.1. HARDWARE TESTS 65 digitale aflæsninger. 3,3v = v 210 3,3v 1024 = v (5.1) Udregningen herover viser at for hver et udsving på v ændrer det digitale output fra ADC en med Test af Batteriforbrug Denne test tjener to formål. Det ene er, at finde den værdi som ADC en aflæser fra batterierne, når elektronikken begynder at fejle. (Vi har observeret at motor controlleren fejler først, ved at skrivning til den på I 2 C bussen fejler.) Når vi kender værdien, kan vi give en advarsel i systemet om, at minimums spændingen er ved at være noget. Den anden er, at finde ud af hvor lang tid batterierne holder under normal drift. Til testen er der brugt følgende: Robotten med nye AA alkaline batterier.

70 66 KAPITEL 5. TEST Figur 5.20: Her ses afladningskurven for begge batteripakker under normal drift Testen viste at værdien for hvornår elektronikken begyndte at fejle. Det gjorde den efter 95 og 100 minutter. Det vil sige en digital værdi, et sted mellem , så vi har sat grænseværdien til 682. Testen viste også, at robotten har strøm til 95 minutters normal drift med friske batterier meter test Formålet med denne test er, at finde ud af hvor langt robotten bevæger sig på et sekund. Motorerne er sat til den maksimale hastighed af 250 ud af 250 under testen. Dog med små korrigerer undervejs for at køre holde kursen. Til testen er der brugt følgende: Målebånd, Robotten, 10 meter gulv og tape. 1000cm 18,1s = 55,25cm/s (5.2) Testen viste at robotten kører 55,25 cm/s ved maksimal hastighed. Dette er en vigtig information for samspillet med kamera og hastighed.

71 5.2. SOFTWARE TESTS Test af kamera synsfelt Formålet med denne test er, at finde ud af hvor stort og hvor langt kameraets synsfelt er. Sådan som kameraet er placeret på robotten, kan det se forskelligt, alt efter hvordan det er drejet. Figur 5.21: Minimums afstand kameraet kan se Hvis kameraet er drejet direkte nedad, kan det se området fra 2,5 cm til 9,5 cm foran robotten, i alt 7 cm. Hvis kameraet peges maksimalt fremad kan det se området fra 17 cm - 60 cm foran robotten, i alt 43 cm. 5.2 Software Tests Formålet med at udføre software tests er, at verificere koden producerer det resultat vi forventer. Det kan være korrekt output af en funktion, eller at software tager det rigtige valg Test af Debug information Eftersom vi ikke fik implementeret en GUI, har vi lavet debug output til terminalen. Mens LineFollow programmet kører, kan man se følgende debug information for hver frame systemet behandler: Figur 5.22: Debug information under kørsel Test af Billede per Sekund Formålet med at teste billede per sekund er, at undersøge hvor ofte vi kan have et billede klar til behandling. Dette er en afgørende faktor for, hvor hurtig robotten kan komme til at køre. Efter som kameraet er robottens primære sensor og korrigerer ud fra

72 68 KAPITEL 5. TEST informationen fra de billeder der tagesr er billede per sekund et udtryk for, hvor mange gange i sekundet vi kan korrigere på motorerne. Billederne nedenfor viser hvor mange billeder per sekund, som er muligt at trække ud af det tilsluttede USB webcam, forbundet til RPI ens hardware. Testen blev foretaget ved henholdsvis 700MHz og ved en clocket CPU hastighed på 950MHz, for at se om der kunne detekteres/måles en mærkbar ændring. Figur 5.23: CPU Clock på 700MHz Figur 5.24: CPU Clock på 950MHz En lille forbedring i billede per sekund er observeret ved de 950MHz men afspejler slet ikke den ca 30% MHz forøgelse. Herunder vises billeder af CPU forbruget fra det brugte billede per sekund program. Så vi kan udlede at der er andre begrænsninger end udelukkende CPU kraft som for eksempel hardwaren bag USB en. Figur 5.25: 90,6% resurse forbrug ved 700MHz Figur 5.26: 88,9% resurse forbrug ved 950MHz Testen viste, at vi godt kunne opnå et højt nok billede per sekund resultat, og dermed er det brugbart til at forsyne robotten med "øjne". Testen viste også, at det ikke udelukkende er CPU ens clock frekvens, der begrænser det maksimale billede per sekund, der kan opnås. Billede per Sekund - LineFollow Vi har testet hvor mange billeder i sekundet vi kan behandle, når vi kører vores program til at følge efter stregen. Vi har testet det ved at lade vores program behandle 1000 billeder og så regne ud, hvor lang tid der er gået. Vores program, som det kan ses på figur, kan RPIen behandle ca 8 billeder i sekundet.

73 5.2. SOFTWARE TESTS 69 Figur 5.27: FPS efter 1000 behandlede frames Vi kan nu udregne en samplingrate for systemet: samplingrate = 1000ms f ps 118.6ms = (5.3) Vi har verificeret det ved, at lægge timers ind i koden. På robotten går der mellem 115ms og 125ms fra den begynder på at tage et billede, til det er behandlet og korrektionen er lagt over på motorene. At få billedet fra kameraet igennem OpenCV tager ca 95ms. Derefter tager vores billedbehandling, udregning af korrektion og indtil den korrektion er lagt på motorer, ca 20ms. Totalt ca 115ms, hvilket svarer godt overens med den udregnede samplingrate på 118.6ms. Dog kan der opstå forsinkelser og i de værste tilfælde, tager hele forløbet op til 200ms. Forsinkelserne skyldes formentlig I/O waits på USB eller SDkortet, da de stadig forekommer, hvis vores process har højest prioritet i scheduleren Test af memory leaks Da vi testede vores program for memory leaks, fandt vi ud af at der var leaks. Faktisk leakede den så meget, at den allerede efter 10 minutter i linefollow mode, crashede fordi alt ledig memory var brugt. Figur 5.28: Observeret memory leak Vi testede programmet for memory leaks med et værktøj der hedder Valgrind. Og Valgrind kunne bekræfte, at der var leaks. Figur 5.29: Valgrinds har fundet memory der går tabt

74 70 KAPITEL 5. TEST Vi undersøgte sagen og fandt ud af at vi overskrev to billede pointere, med nye billede pointer værdier i hovedloopet for stregdetekteringen. Derved blev det pointeren først pegede på unreferenced og derved leaked. Rettelsen bestod i, at realease billedet via OpenCV i hver loop gennemgang. Figur 5.30: Rettelse til memory leaken Figur 5.31: Memory leak fundet og rettet Resultatet er verificeret med Valgrind som kan ses på figur??. Valgrind har fundet 17.6MB som Possibly lost. Det skyldes at programmet bliver killed og ikke lukket pænt ned. Men Valgrinds resultat viser også, at der ikke er tabt noget indtil da. Figur 5.32: Valgrinds opsumering af vores program

75 5.2. SOFTWARE TESTS Test af RGB kalibrering Test resultater fra kalibrering, bruges til at finde de bedste konverterings værdier for stregen i et ukendt miljø. Billedet bliver konverteret til blå, grøn og rød alpha kanal. Billedet med den bedste forskel bruges til sort/hvid konverteringen. Vi har testet med en streg af sort teatertape 3 på forskellige farver karton. Billederne er taget ved hjælp af robotten i en test opstilling, som kan ses på figur?? Målepunkterne der er brugt, hvis værdier er i debug output, er vist på figur?? Figur 5.33: Målepunkter i kalibreringen Figur 5.34: Test opstillingen Resultatet af testen er, at stregen kan ses på alle de testede overflader. Den lavest fundne forskel på streg og overflade var 87 (ud af 255) på brunt karton og den bedste forskel blev fundet hvidt papir, hvor der var en forskel på 192. Detaljer af testene kan ses på de efterfølgende sider. Flere af billederne i testen har dog et blåligt skær, fordi der er overkompenseret for blå farve i kameraet. Det skyldes kameraets automatiske kalibrering af farvekanalerne. Det er ikke et problem for testresultatet, da den blå er lige overkompenseret på hele billedet og vi blot skal bruge forskelle i farveværdier. 3 En speciel type tape, hvor der er mindre lysreflektion

76 72 KAPITEL 5. TEST Brunt karton Figur 5.35: Originalt billede Figur 5.36: Konverteret til sort/hvid Figur 5.37: Blå kanal Figur 5.38: Grøn kanal Figur 5.39: Rød kanal Debug Output fra kalibreringen Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 156 Streg = 125 diff = 31 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 134 Streg = 47 diff = 87 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 142 Streg = 81 diff = 61 Rød giver bedste resultat! Rød avg værdier: Overflade = 134 Streg = 47 diff = 87 Sort/hvid konverterings værdi er: 90

77 5.2. SOFTWARE TESTS 73 Mørkeblåt karton Figur 5.40: Originalt billede Figur 5.41: Konverteret til sort/hvid Figur 5.42: Blå kanal Figur 5.43: Grøn kanal Figur 5.44: Rød kanal Debug Output fra kalibreringen Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 250 Streg = 107 diff = 143 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 62 Streg = 41 diff = 21 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 150 Streg = 71 diff = 79 Blå giver bedste resultat! Blå avg værdier: Overflade = 250 Streg = 107 diff = 143 Sort/hvid konverterings værdi er: 178

78 74 KAPITEL 5. TEST Lyseblåt karton Figur 5.45: Originalt billede Figur 5.46: Konverteret til sort/hvid Figur 5.47: Blå kanal Figur 5.48: Grøn kanal Figur 5.49: Rød kanal Debug Output fra kalibreringen Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 255 Streg = 78 diff = 177 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 38 Streg = 29 diff = 9 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 187 Streg = 54 diff = 133 Blå giver bedste resultat! Blå avg værdier: Overflade = 255 Streg = 78 diff = 177 Sort/hvid konverterings værdi er: 166

79 5.2. SOFTWARE TESTS 75 Grønt karton Figur 5.50: Originalt billede Figur 5.51: Konverteret til sort/hvid Figur 5.52: Blå kanal Figur 5.53: Grøn kanal Figur 5.54: Rød kanal Debug Output fra kalibreringen Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 102 Streg = 60 diff = 42 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 82 Streg = 49 diff = 33 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 187 Streg = 70 diff = 117 Tester RGB greyscale RGB: Top rækken -> RGB: Midt rækken -> RGB: Bund rækken -> RGB avg værdier: Overflade = 146 Streg = 63 diff = 83 Grøn giver bedste resultat! Grøn avg værdier: Overflade = 187 Streg = 70 diff = 117 Sort/hvid konverterings værdi er: 128

80 76 KAPITEL 5. TEST Rødt karton Figur 5.55: Originalt billede Figur 5.56: Konverteret til sort/hvid Figur 5.57: Blå kanal Figur 5.58: Grøn kanal Figur 5.59: Rød kanal Debug Output fra kalibreringen Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 166 Streg = 92 diff = 74 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 205 Streg = 25 diff = 180 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 120 Streg = 47 diff = 73 Rød giver bedste resultat! Rød avg værdier: Overflade = 205 Streg = 25 diff = 180 Sort/hvid konverterings værdi er: 115

81 5.2. SOFTWARE TESTS 77 Hvidt karton Figur 5.60: Originalt billede Figur 5.61: Konverteret til sort/hvid Figur 5.62: Blå kanal Figur 5.63: Grøn kanal Figur 5.64: Rød kanal Debug Output fra kalibreringen Tester Blå alpha greyscale Blå: Top rækken -> Blå: Midt rækken -> Blå: Bund rækken -> Blå avg værdier: Overflade = 253 Streg = 77 diff = 176 Tester Rød alpha greyscale Rød: Top rækken -> Rød: Midt rækken -> Rød: Bund rækken -> Rød avg værdier: Overflade = 189 Streg = 34 diff = 155 Tester Grøn alpha greyscale Grøn: Top rækken -> Grøn: Midt rækken -> Grøn: Bund rækken -> Grøn avg værdier: Overflade = 248 Streg = 56 diff = 192 Grøn giver bedste resultat! Grøn avg værdier: Overflade = 248 Streg = 56 diff = 192 Sort/hvid konverterings værdi er: 152

82 78 KAPITEL 5. TEST Test af Robotten Vi har under udvikling af robotten optaget nogle videoer, hvor den følger efter stregen. Videoerne kan findes på USB nøglen i biblioteket Video. Der er 4 videoer i alt. Video 1+2: Er tidligt i forløbet hvor vi tester på en lille testbane på kontoret. Video 3: Her tester vi på en stor bane, men den har problemer med genskær 4 fra en loftslampe. Video 4: Her tester vi igen på den store bane, og vi kommer rigtig langt. Dog kommer vi ned i et mørkt område til sidst, hvor den ikke opfanger stregen fordi den sort/hvid grænseværdi den udregnede under kalibreringen nu er forkert. 5.3 Acceptance Test For at verificere at robotten opfylder de krav, der er specificeret i projekt analyse afsnittet, skal der laves en acceptance test. Kravene kan ses i afsnit?? på side??. Tabel 5.2: Acceptance Test Krav # Løsningsbeskrivelse Afsnit (Side) K1 Løst af auto kalibrering og konvertering til sort/hvid billede?? (s??)?? (s??) K2 Løst af software og motor kontrol?? (s??)?? (s??)?? (s??) K3 Løsningen af K1 udviklede sig til løsningen af dette krav.?? (s??)?? (s??) K4 NK1 Kun delvist opfyldt, da der ikke er implementeret live debug på selve robotten. Det er muligt at få live debug igennem terminalen via ssh, men denne løsning er langt fra optimal. Grafisk interface med debug information ved hjælp af ncurses blev delvist designet men ikke implementeret. Dette krav er opfyldt med Arch Linux ARMv6 som operativsystem.?? (s??)?? (s??)?? (s??) NK2 Dette krav er opfyldt.?? (s??)?? (s??)?? (s??) NK3 Dette krav er opfyldt ved at bruge en Raspberry Pi.?? (s??) 4 Se bilag?? på side?? for eksempel.

83 Kapitel 6 Konklusion Vi har i løbet af projektet designet og bygget en robotplatform på en Raspberry Pi. På platformen har vi udviklet en software løsning, der er i stand til at identificere en streg og styre et sæt motorer, så robotten følger efter stregen. Platformen er ikke kun bygget på standard komponenter, da vi selv har lavet et board der forbinder de enheder, der udgør robotten. Alle andre komponenter er købt i en butik eller over nettet og er brugt uden modifikationer. Raspberry Pien har været en fornuftig platform at arbejde med, men den kræver en del viden med Linux og elektronik. Produktet er stadig ret nyt, så der findes endnu ikke meget materiale omkring hvordan den kan bruges. Hardwaren har virket uden problemer og den har været meget stabil. Linux som fundament til en robot er interessant, da man får alle de ting som et moderne OS kan med i pakken. Det gør det nemt at opsætte services eller funktionalitet, som er brugbar på platformen. Dog kræver det at man er komfortabel med Linux, da Linux ofte skal tilpasses for at give den funktionalitet man ønsker. Optimering er også vigtig, da al unødig brug af I/O og CPU tid, påvirker det realtidssystem som robotten jo reelt er. Fysiske problemer har fyldt rigtig meget igennem projektet. Specielt lys har givet mange problemer for robottens øjne. Det sammen med hardware vanskeligheder gjorde at vi overskred tidsplanen for Fase 2 med 3 dage og derefter Fase 3 med en uge. 6.1 Produkt vurdering En prototype af robotten er bygget og samlet. Robotten virker, men kun under i de rette fysiske omgivelser. 79

84 80 KAPITEL 6. KONKLUSION Der er problemer med fysiske elementer, som vi ikke kan kontrollere. F.eks smuds, små sten eller sandkorn på banen. Hjulene, i det nuværende design, har nemt ved at køre fast i kortere tid. Hvis hjulet kører ind i en lille sten, stopper hjulet med at dreje i kort tid og det får hele robotten til at svinge mod den side, der sidder fast. Lys og genskind fra lamper har ekstrem stor betydning for robottens syn, da genskind oven på stregen kan blænde robottens syn fuldstændigt. Robottens egen skygge kan også give problemer, hvis den har en kraftig lyskilde bag sig, da skyggen fra kameraet godt komme til at ligne stregen for robotten. Så det er vigtigt, at lysforholdet er så ens som muligt, hen over den strækning hvor robotten skal køre. Den RGB kalibrering vi har lavet for at kunne se stregen i et ukendt miljø virker, men problemet er at lysstyrken, og derved farvestyrken, kan variere hvis stregen f.eks passerer et vindue. I lyset fra vinduet ser streg og overflade nemlig anderledes ud for robotten end da den kalibrede med RGB. Algoritmen til at følge stregen har virket fornuftigt, men den har sine problemer og begrænsninger. Da vi kun ser efter stregens udgangspunkt i den frame vi behandler, tager vi reelt ikke stilling til, om vi kører lige ovenpå stregen. Der tages heller ikke hensyn til, den tid det tager for et billede at nå motorerne. For i den tid bevæges robotten stadig. Algoritmen tager heller ikke højde for tilfælde hvor stregen deler sig, eller på anden måde ikke er konstant. Live Debug på vores robotplatform har ikke været en succes. Vi har gerne ville bruge et LCD på robotten til at give en repræsentation af robottens nuværende status, men de to LCDer vi havde købt hjem til test, var ikke brugbare. Vi kiggede derefter på, at lave en GUI til det endelig produkt, men den var der ikke tid til at udvikle den færdig. I stedet har vi udskrevet debug information til konsollen. Det virker fint, men det er langt fra den optimale løsning. Det kræver systemresurser at skrive til konsollen, og den visuelle repræsentation er begrænset af ASCI karakterer. At følge efter stregen, lykkedes ikke hver gang. Robotten kan godt genkende stregen på billedet. Men når den følger stregen skal den ned i lave hastigheder, før den kommer sikkert rundt i alle sving. Vi har regnet os frem til en hastighed, som virker i de fleste tilfælde. Men fordi korrektionen er lidt forsinket, korrigerer den ikke altid nok. Hvis vi gør korrektionen mere aggressiv, korrigerer den for meget. Det kræver sandsynligvis mere arbejde med fin-tuning at få den til at køre mere stabilt. Det kan måske afhjælpes delvist med PID regulering. USB kameraet virker udmærket til en prototype, men fordi det benytter sig af USB, har man ikke den præcise hardwarekontrol, som et kamera tilsluttet via GPIO vil give. USBen giver et ekstra lag som dataen skal igennem og andre enheder, der bruger USBen

85 6.2. PRODUKT FORBEDRINGER 81 kan give IO delays. 6.2 Produkt forbedringer Problemer med lys: En løsning til problemet med lys og genskind kunne være, at skifte synet væk fra RGB formaet og over til HSV formatet. I HSV har lysstyrke nemlig en værdi og det gør det muligt, at justere billedet ned i lysstyrke de steder der er behov for det. En anden løsning til lys problemet kunne være, at sætte et infrarødt kamera på i stedet, da det ikke er påvirket af genskind fra normale lyskilder på samme måde. En tredje løsning kunne være, at montere lys på robotten enten normal lys eller infrarødt, så den selv kan styre lysstyrken foran sig. Dog vil genskind fra loftslamper givetvis stadig give det samme problem. Orientering: At robotten kunne vide hvor den var, ville være en fordel i flere situationer. Specielt i situationen hvor den mister syne af stregen. Der ville det være en fordel at vide, hvor stregen befandt sig i forhold til robottens position. En måde at tracke dette på, ville være at implementere Tacho feedback fra motorer ind i softwaren og sammenholde det med et 3d gyroskop. Så kan det verificeres, at robotten bevæger sig derhen hvor det er planlagt, at den skal hen. Gyroskopet tjener to formål. Primært skal det hjælpe med retningen, men samtidig vil det kunne bruges til identificere forkerte Tacho pulser, hvis f.eks hjulet skrider pga smuds. En bedre algoritme til at detektere stregen: En naturlig opgradering af algoritmen ville være, at gøre den i stand til at følge stregen igennem billedet og identificere forgreninger eller huller i stregen. Desuden har vi bevæget os i ca 95ms når vi analysere på billedet, så en kompensering af den afstand i billedet, vil også hjælpe til at gøre algoritmen bedre. GUI eller klient software: En bedre måde at følge med i hvad robotten ser, ville gøre produktet meget nemmere at arbejde med. F.eks klient software til at styre robotten over netværk samt få billedet fra kameraet overført. Ændring til Raspberry Pi Model A: Der kommer en model A af RPien i Denne model har sparet den fysiske ethernet port væk og den ene USB port. Eftersom ethernet porten er tilsluttet via USB interfacet, bruger den unødige resurser og strøm. At undvære denne, vil give længere levetid på batteriet og det vil spare lidt resurser i OS. Regulering: Implementering af PID regulering, vil hjælpe robotten med at holde sin kurs uden at afvige, samt minimere udsving fra korrektionen. Ville

86 Bilag 82

87 A. UML A.1. Use Cases For at definere robottens funktionalitet har vi udtænkt de væsentligste handlinger som Use Cases. Vi har i alt 9 Use Cases. Figur A.1: Usecases 1,2,3,4,5 og 6 Use Case nr:navn Beskrivelse Aktører Forudsætninger Handling 1:LineFollow / følgstreg Robotten skal følge efter stregen Operatøren starter den, robotten fortsætter. Processen kører ikke i forvejen. Robotten skal se stregen foran sig, og følge den ved hjælp af sine motorer 83

88 84 Bilag Use Case nr:navn Beskrivelse Aktører Forudsætninger Handling 2:FreeMode Robottens motorer styres af tastetryk fra operatøren Operatøren. Processen kører ikke i forvejen. Operatøren er forbundet til robotten. Robottens motorer skal styres af operatørens keyboard. Den skal kunne køre styres til at køre ligeud, til siderne og bagud. Use Case nr:navn Beskrivelse Aktører Forudsætninger 3:Stop Robot processen stoppes Operatøren. Processen kører. Handling 1. Enhver robot proces skal stoppes via OS. 2. Sæt motorer til 0. Use Case nr:navn Beskrivelse Aktører 4:Knap1 Fysisk trykknap 1 på robotten aktiveres Operatøren. Forudsætninger Handling UC2:FreeMode aktiveres. Use Case nr:navn Beskrivelse Aktører 5:Knap2 Fysisk trykknap 2 på robotten aktiveres Operatøren. Forudsætninger Handling UC1:LineFollow aktiveres.

89 Bilag 85 Use Case nr:navn Beskrivelse Aktører 6:Knap3 Fysisk trykknap 3 på robotten aktiveres Operatøren. Forudsætninger Handling UC3:Stop aktiveres. Figur A.2: Usecases 7,8 og 9 Use Case nr:navn Beskrivelse Aktører Forudsætninger 7:Behandl nyt billede Stregen findes på et nyt billede fra kameraet Robotten. UC9:RGB Kalibrering har kalibreret systemet Handling 1. Stregen på billedet identificeres og opmåles. Kalibrering køres, hvis den endnu ikke har været kørt. 2. Korrektionsværdi(er) sendes videre Use Case nr:navn Beskrivelse Aktører Forudsætninger Handling 8:Korriger Motor Justerer motorhastighed baseret på korrektion fra billedbehandlingen Robotten. Korrektionsdata fra billedbehandlingen er klar Justerer motorhastighed på den ene eller begge motorer, baseret på korrektion fra billedbehandlingen

90 86 Bilag Use Case nr:navn Beskrivelse Aktører Forudsætninger 9:RGB Kalibrering Kalibrerer systemet til et ukendt miljø Robotten. Robotten holder midt på stregen Handling 1. Kameraet justeres til omgivelserne. 2. Kameraet bruges til at finde ud af hvilken farve stregen har og hvilken farve omgivelserne har. 3. Information gemmes og afleveres til den løbende billedbehandling. A.2. Use Case Flows Flowet for tryk på knapperne ses på figur?? Figur A.3: Flow for Use Case 4, 5 og 6

91 B. Udregninger til 6 Volt delere Herunder ses udregningerne for de 2 volt delere, der deler 6 volt til RPI en og motorerne ned til 3,3 volt, som er den reference spænding der bliver brugt af analog til digital konverteren. Dog har vi valgt en max spænding på 3 volt til udregningerne for at sikre os, at vi ikke overstiger reference spændingen. Først udregner vi den totale modstand i kredsløbet(r t ) med en strøm på 100uA: R t = 6v 100uA 6v R t = R t = 60kΩ (1) Herefter kan vi udregne R 2 : R t = R 1 + R 2 R 1 + R 2 = 60kΩ Volt R 2 = Voltbatteri R t R 2 = 3v 6v 60k R 2 = 30kΩ (2) Herefter kan vi udregne R 1 : R t = R 1 + R 2 R 1 = R t R 2 R 1 = 60k 30k R 1 = 30kΩ (3) Så kan vi udregne forholdet(ratio): Ratio = V bat V out Ratio = 4.52v 2.25v Ratio 2 (4) 87

92 88 Bilag Herunder ses alle værdier: R 1 = 30kΩ R 2 = 30kΩ A = 100uA V out = 3v (5)

93 C. Raspberry Pi GPIO header Figur C.4: Oversigt over RPIens GPIO header 89

94

95 D. Arch Linux D.1. Klargøring af SD kort Herunder er trinene for klargøring af SD kortet: Først hentede vi Arch Linux ARMv6 fra: Herefter skrives billedet til SD kortet ved hjælp af følgende kommando: Erstattet sdx med lokationen der passer til vores setup. dd bs=1m if=/path/to/archlinux-hf img of=/dev/sdx User: root Password: root D.2. System opsætning Initial # Opdater systemet. pacman -Syu # Ændre til locale til dansk - da_dk.utf-8 # Udkommenter sprog i /etc/locale-gen og kør locale-gen # Herefter gøres følgende: echo LANG=da_DK.UTF-8 > /etc/locale.conf export LANG=da_DK.UTF-8 # Ændre Hostname til TardRover echo TardRover > /etc/hostname # Sæt tid og tidszone timedatectl set-timezone Europe/Copenhagen echo Europe/Copenhagen > /etc/timezone # Verificer tid og dato timedatectl status # Aktiver Wireless pacman -S netcfg Wireless # Oprettet en ny wireless profil i /etc/network.d/ nano wlan0-cml_home_tdc 91

96 92 Bilag # Tilføj og gem # Link: https://wiki.archlinux.org/index.php/netcfg # Location: /etc/network.d/ CONNECTION= wireless DESCRIPTION= Automatically generated profile by wifi-menu INTERFACE= wlan0 WPA_DRIVER= wext # Added so micro wifi dongle works SECURITY= wpa ESSID=CML_Home_TDC IP= dhcp KEY=supersikkertw # Aktiver wireless profil systemctl enable I 2 C # Installer I2C-tools pacman -S i2c-tools # Aktiver i2c-dev modulet i kørende kernel modprobe i2c-dev # Aktiver i2c-dev modulet ved startup # Opret fil i /etc/modules-load.d/ nano i2c.conf # Tilføj og gem i2c-dev OpenCV og Base-devel # Installer OpenCV pacman -S opencv # Installer gcc, pkg-config, automake osv pacman -S base-devel Button_listener Service # Opret service fil nano /etc/systemd/system/button_listener.service # Indsæt og gem [Unit] Description=ButtonListener [Service] ExecStart=/Code/button_listener/button_listener Restart=always [Install] WantedBy=multi-user.target # Aktiver button_listener service ved startup systemctl enable button_litener.service # Start button_listener service ved startup systemctl start button_litener.service # Verificer services kører systemctl Battery_monitor Service # Opret fil kaldet button_listener.service nano /etc/systemd/system/button_listener.service # Indsæt og gem [Unit] Description=Battery Monitor [Service] ExecStart=/Code/battery_monitor/battery_monitor Restart=always [Install] WantedBy=multi-user.target # Aktiver battery_monitor service ved startup

97 Bilag 93 systemctl enable battery_monitor.service # Start battery_monitor service systemctl start battery_monitor.service # Verificer services kører systemctl Specielle Indstillinger # Deaktiver sound service ved startup systemctl disable sound.target # Deaktiver IPv6 ved at tilføj til /boot/cmdline.txt ipv6.disable=1 # Sæt memory split til 16MB GPU, 240MB CPU # Tilføj til /boot/config.txt #Memory Split gpu_mem=16 D.3. Pacman - Package Manager, Arch Linux Package manageren som bruges af Arch Linux hedder Pacman 1 og bruges til at installere, afinstallere og opgradere systemet og pakker. Herunder ses de væsentlige kommandoer vi har brugt. Installer en eller flere pakker: # pacman -S pakke_navn1 pakke_navn2... Afinstaller en pakke: # pacman -R pakke_navn Opgrader systemet og installeret pakker: # pacman -Syu D.4. Services Services bliver brugt af Systemd. Systemd er en system og service manager for Linux, som bliver benyttet i Arch Linux. Systemd er blandt andet ansvarlig for start og stop af services. En Service kan startes og stoppes manuelt, men kan også aktiveres til at servicen startes af systemd under opstart. Herunder ses et eksempel på en service fil: button_listener.service 1 Mere om Pacman her: https://wiki.archlinux.org/index.php/pacman

98 94 Bilag button_listener.service [Unit] Description=ButtonListener [Service] ExecStart=/Code/button_listener/button_listener Restart=always [Install] WantedBy=multi-user.target Kommandoer: systemctl - Control the systemd system and service manager systemctl <enable/start/stop/restart> <service navn>.service D.5. SSH Server med nøgler Vi har installeret og konfigureret SSH server. Vi har valgt at bruge nøgler til at verificere. På den måde slipper vi får at bruge kodeord ved hvert login. Først genereres et sæt nøgler på klient maskinen, som ønsker at være i stand til at logge ind ved hjælp af SSH nøgler. Et sæt nøgler består af en private og en public nøgle. Den private nøgle forbliver på klient maskinen og public overføres til RPIen. Herefter tilføjes public nøglen til authorized_keys i.ssh mappen i brugerens hjemme mappe og så skal password login deaktiveres i sshd_config 2. Nedenfor vises kommandoer brugt i denne forbindelse: Installation af SSH nøgler # Generer nøgler på klient maskine $ ssh-keygen -t rsa -b 1024 # Kopier public nøgle til remote server $ scp ~/.ssh/id_rsa.pub # Tilføj nøgle til authorized_keys $ ssh $ mkdir ~/.ssh $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys $ rm ~/id_ecdsa.pub $ chmod 600 ~/.ssh/authorized_keys $ # Deaktiver password logins i /etc/ssh/sshd_config PasswordAuthentication no ChallengeResponseAuthentication no D.6. System_status.sh - MOTD I forbindelse med konfigurering af SSH serveren, valgte vi, at lave et shell script, kaldet system_stats.sh, som kan findes på USB nøglen. Det kører hvert andet minut ved hjælp af et cronjob. Scriptet henter nyttige system informationer om RPIen og batteri spændinger, som så bliver skrevet i filen /etc/motd. Motd er message of the day, som kan bliver 2 For mere information https://wiki.archlinux.org/index.php/ssh_keys

99 Bilag 95 benyttet af SSH når man logger ind. Det vil gøre, at man ved hvert login kan man få et hurtigt overblik over status på robotten. Herunder kan skærmbillede af motd ses: Figur D.5: Skærmbillede af motd for ssh

100

101 E. Elektronik - Specifikationer Her vises skematikken og board layout for vores connector print. E.1. Print Figur E.6: Print skematik 97

102 98 Bilag Figur E.7: Board Layout

103 Bilag 99 E.2. Styklisten Her vises styklisten med de komponenter der er brugt til at fremstille printet. Tabel.1: Styklisten Part Part nr. Navn Bemærkninger IC1 7805T 5 Volt regulator Fjernet IC2 7812T 12 Volt regulator Fjernet S Switch S Switch R1 R-EU_0207/10 Modstand 30kohm R2 R-EU_0207/10 Modstand 30kohm R3 R-EU_0207/10 Modstand 30kohm R4 R-EU_0207/10 Modstand 30kohm JP1 PINHD-1X9 Sokkel JP2 PINHD-1X4 Sokkel JP3 PINHD-1X4 Sokkel JP4 PINHD-1X4 Sokkel JP5 PINHD-1X4 Sokkel JP6 PINHD-1X4 Sokkel JP7 PINHD-1X3 Sokkel JP8 PINHD-1X3 Sokkel JP9 PINHD-1X3 Sokkel JP10 PINHD-1X8 Sokkel X Header, 26 Pin X2 KK Molex stik Erstattet med 9v stik X3 KK Molex stik Erstattet med 9v stik X Header, 10 Pin X Header, 10 Pin X6 USB-A003 USB, Type A, Han Ikke i brug

104

105 F. Kamera Tests For at finde en et USB kamera der kunne bruges på robotten, måtte vi teste forskellige kameraer. Både for at se på kvaliteten af det billede de tog, men også for at teste deres kompatibilitet med vores setup. For at få testet nogle kameraer og samtidig spare penge, tog vi udgangspunkt i de kameraer vi kunne finde hjemme i gemmerne. Vi havde i alt 4 kameraer: Philips SPC 900NC Webcam Creative Labs VFO220 Logitech QuickCam Express Webcam PC USB 2.0 Webcam F.1. Sammenligning af billedkvalitet Figur F.8: Philips SPC 900NC Webcam Figur F.9: Creative Labs VFO

106 102 Bilag Figur F.10: Logitech QuickCam Figur F.11: USB 2.0 Webcam Vi har lavet et program, der bruger OpenCV til at tage et billede og gemme det inde i et loop, så vi kan udregne antal billeder i sekundet, samt se om det er stabilt over tid. Billedet er taget fra 10 centimeters højde. Testen er foretaget med Raspberry Pien. Webcam Billede kvalitet Billeder pr sekund Philips SPC 900NC Farver er meget blå. Næsten ingen støj Stabilt Creative Labs VFO220 Ubrugligt billede Stabilt Logitech QuickCam Meget uskarpt så tæt på Crasher efter 15 billeder USB 2.0 Webcam Ok farver, en del støj i billedet Stabilt

107 G. Kamera Opsætning For at opsætte Philips SPC 900NC Webcam, har vi brugt software pakken v4l-utils. Ved at teste kameraet med forskellige farver karton og skiftende lyssætning, kunne vi se at kameraet ikke gengav farver specielt præcist. Desuden medførte ændringer i lysforholdet, at kameraets auto justering af hvid balance gik igang. Når auto-justeringen var færdig, så billedet derefter anderledes ud end da det startede og det betød nye værdier for vores sort/hvid konvertering. Vi undersøgte mulighederne for at tilrette opførslen af autofunktioner i kameraet og fandt ud af, at man kan ændre det igennem V4L. Nedenunder ses standard opsætningen for vores kamera 3 : Figur G.12: Opsætnings muligheder af kamera gennem V4L Vi har sat white_balance_automatic=0, som skulle passe til "Indoor (Incandescant Lighting)"i stedet for at lade den stå til auto. v4l2-ctl -d 0 -c white_balance_automatic=0 Ved at ændre på white_balance_automatic fik vi forbedret resultat både på farve, samt fik vi 3 Inden vi laver ændringer i opsætningen er dette de automatiske værdier der er blevet indstillet. Enten via autokalibrering eller fra fabrikken 103

108 104 Bilag stoppet for den automatiske justering. Den blå og røde farve bliver mere tro virkeligheden, mens den grønne farve bliver lidt blålig. Dog overall et bedre resultat og vi undgår, at den justerer sig selv under kørsel. Figur G.13: Originalt billede Figur G.14: white_balance_automatic=0

109 H. Cross compiler Vi har bygget en Cross compiler kæde, så vi kan kompilerer kode på vores Intel PCere til ARM arkitekturen. Krydskompileren er lavet ved hjælp af værktøjet Crosstool NG og understøtter C/C++. Crosstool NG bygger en ny kompiler og et sæt standard libraries ud fra de specifikationer man har valgt og ligger det sammen i et bibliotek, der emulerer ens normale fil struktur. Inde fra krydskompileren kan man så have sit helt eget miljø, med libraries specifikt kompileret til en given platform. H.1. Bygning af Cross Compiler kæde på Linux PC 1. Download crosstool-ng fra Udpak tarballen og stil dig ind i det udpakkede bibliotek. Kør./configure prefix=/opt/cross (Prefix er valgfri) Derefter kør: make og derefter sudo make install. (Prefix dir skal i systemets $PATH hvis det blev sat som parameter.) 2. Opsætning af cross compileren. Kør ct-ng menuconfig: Indstillinger der skal foretages menuen: Figur H.15: ct-ng menuconfig a) Åbn Paths and misc options. Aktiver Try features marked as EXPERIMENTAL. b) Gå tilbage til hovedmenuen og vælg Target options. Sæt Target architecture til arm. Check at Endianness står til Little endian og at Bitness er sat til 32-bit. Check at hardfloat er aktiveret 105

110 106 Bilag c) Gå tilbage til hovedmenuen og vælg Operating system Sæt Target OS til linux. d) Gå tilbage til hovedmenuen og vælg Binary utilities. Sæt binutils version til den højeste version, der ikke er experimental. e) Gå tilbage til hovedmenuen og vælg C compiler. Vælg den seneste GCC version der er tilgængelig (evt prøv Linero version hvis der er problemer med GCC). De andre indstillinger står korrekt som standard. Exit programmet og husk at gemme ændringerne. 3. Kør: ct-ng build. Herefter tager ca 30-45min at kompile cross compiler kæden. H.2. Import af ARM pakker For at kunne krydskompilere kode, med software pakker til en anden platform, kræves det at krydskompileren har adgang til software pakkerne som er kompileret til den arkitektur. I vores tilfælde betyder det, at ARM versioner af pthreads, opencv og ncurses pakkerne er tilgængelige i krydskompilerens miljø, enten ved at kopierer dem over eller ved hjælp af netværksdrev. H.3. Brug af cross compiler i Eclipse (Linux) Når krydskompileren er bygget, kan den bruges fra Eclipse. Når man laver et nyt projekt har man muligheden for at vælge et projekt af typen "Cross GCC". Denne projekttype understøtter at man bruger en alternativ kompiler og man kan fortælle eclipse hvor ens krydskompiler kæde kan findes. Figur H.16: Opsætning af Krydskompiler i Eclipse

111 I. GPIO Interrupt og Tacho signal fra Motor encoderen Formålet med at lave GPIO interrupt er, at kunne få information om hvor meget aksen har roteret. Denne information gives i form af et tacho signal fra en encoder som er monteret på gearkassen i motoren. Formålet med et sådan tacho signal er, at ingen motorer er 100% ens og der vil altid være en minimal forskel i rotations hastighed. Ved at få denne information om rotationshastighed fra hver motor, vil finde den hastighedsforskel der er mellem de 2 motorer og man vil herefter kunne korrigere ud fra det den forskel. Da vi ud fra databladet for motorerne kan se, at hver motor vil afgive 17,2 16 = 275,2 pulser pr rotation, kan vi konkludere at det bliver til rigtig mange pulser pr sekund. For at være i stand til at modtage de mange pulser, var vi nødt til at finde en passende metode. GPIO interrupt kunne være en løsning, da det ville være stort set umuligt at finde en frekvens, der ville passe til at pulle pulsene fra motorerne ved at teste om en GPIO var 1 eller 0. Så vi valgte at teste GPIO interrupt. Det viste sig at GPIO interrupt forbrugte ca 20% CPU kraft for hver motor, ved ca 2000 tacho pulser i sekundet ved fuld kraft. Det var ikke acceptabelt, så vi prøvede at nedsample tacho signalet og derved antallet af GPIO interrupts, ved hjælp af en 4017 Johnson counter. Med den, kunne vi reducere tacho signalet til en tiendedel og derved sænke CPU forbruget til ca 2% pr motor. Der blev observeret unøjagtighed i det nedsamplet tacho signal. Der blev målt på oscilloskopet og der blev fundet spikes, som kunne være årsag til, at vi ikke fik et præcis tal fra counteren. Dette blev afhjulpet med pull-down modstande, men vi fik stadig afvigelser på 5-7% på det reduceret tacho signal. Så denne metode til at aflæse og reducere tacho signalet, blev droppet. Her ses GPIO interrupt program kører: 107

112 108 Bilag Figur I.17: GPIO IRQ tæller, aflæst hver 10 sek Her ses hvor meget CPU kraft GPIO interrupt forbruger: Figur I.18: CPU forbrug for GPIO IRQ, wfi process Figur I.19: Eksempel på Encodere Her under vises målingerne fra oscilloskopet, med og uden pull-down modstand på output benet på johnson counteren.

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se

Læs mere

Vildtkamera DTC-530V.

Vildtkamera DTC-530V. Vildtkamera DTC-530V. Indhold fortegnelse......... 1 Kom godt i gang.........2 Information......... 2 Anvendelse......... 3 Fjernbetjening...... 3 Hukommelse kort......... 4 Quick Start...... 4 Isæt batterier.........

Læs mere

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations

Læs mere

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system SSI-9001 IP65 GSM fjern kontrol og alarm system Installations vejledning SSIHuset v/svane Electronic ApS Vejledning Kontakt Tænd/sluk 1 - Strømforsyning: Forbundet til egen 12V / 1.5A strømforsyning (*)

Læs mere

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

Læs mere

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning ELCANIC A/S ENERGY METER Type ENG110 Version 3.00 Inkl. PC program: ENG110 Version 3.00 Betjeningsvejledning 1/11 Generelt: ELCANIC A/S ENERGY METER Type ENG110 er et microprocessor styret instrument til

Læs mere

3. Computerens opbygning.

3. Computerens opbygning. 3. Computerens opbygning. Computere er konstrueret med henblik på at skulle kunne behandle og opbevare data og det er de som nævnt i noterne om Bits og Bytes vældig gode til. Som overordnet model for computere

Læs mere

BRUGER VEJLEDNING DK 8MP wildview ir / KAMERA JK 020 / Åtelkamera 801/Albecom Justerbar 3 / 5 eller 8 mp.

BRUGER VEJLEDNING DK 8MP wildview ir / KAMERA JK 020 / Åtelkamera 801/Albecom Justerbar 3 / 5 eller 8 mp. BRUGER VEJLEDNING DK 8MP wildview ir / KAMERA JK 020 / Åtelkamera 801/Albecom Justerbar 3 / 5 eller 8 mp. Funktioner: 1. 5 cm TFT LCD-skærm med angivelse af optage tilstand, hukommelse på kort og batteri

Læs mere

BAS 914S/929S Datablad

BAS 914S/929S Datablad BAS 914S/929S BA Systems Petershvilevej 1 DK-3200 Helsinge http://www.basystems.dk BAS 914S/929S tilhører en familie af programmerbare kontrollere der er målrettet til mindre samt medium størrelse installationer.

Læs mere

MP3 player med DMX interface.

MP3 player med DMX interface. Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK MP3 player med DMX interface. Funktion: En avanceret Mp3spiller med forskellige styringsmuligheder, velegnet til brug i museer, teatre, udstillinger

Læs mere

Dansk Mink Papir. Teknisk brugermanual

Dansk Mink Papir. Teknisk brugermanual Dansk Mink Papir Teknisk brugermanual Styring til FIX tørrekasse Beskrivelse Enheden styrer en AC blæser-motor via en relæudgang. Betjening foregår via et tastatur og et display, og brugeren kan vælge

Læs mere

AxiomLite Adgangssystem 24/7 effektiv beskyttelse af personer og bygninger

AxiomLite Adgangssystem 24/7 effektiv beskyttelse af personer og bygninger AxiomLite Adgangssystem 24/7 effektiv beskyttelse af personer og bygninger AxiomLite Software AxiomLite Fleksibilitet AxiomLite er et kombineret adgangskontrol- og alarmovervågningssystem udviklet i Canada

Læs mere

CANSAT & ARDUINO step by step

CANSAT & ARDUINO step by step CANSAT & ARDUINO step by step Jens Dalsgaard Nielsen SATLAB Aalborg Universitet Danmark jdn@space.aau.dk 1/51 Arduino CANSAT - MÅL At måle ved hjælp af sensor temperatur, tryk, acceleration, CO2, lys,...

Læs mere

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Virtuel PC Fordele/ulemper Fordele: Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Ulemper: Reserverer RAM (Windows 7) Problemer med at ureglementeret lukke ned Mister

Læs mere

AstroComp en idé Version 0.2 (foreløbig)

AstroComp en idé Version 0.2 (foreløbig) AstroComp en idé Version 0.2 (foreløbig) Udgangpunkt for idéen - De fleste er sikkert belastet af en frygtelig masse kabler og/eller konvertere mellem USB og de forskellige enheder man ønsker at kommunikere

Læs mere

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4 Indledning

Læs mere

2/3 Akset digital tæller

2/3 Akset digital tæller SERIE Z59E 2/3 Akset digital tæller for Elgo Magnetisk målebånd og / eller Encoder ELGO - ELECTRIC Gerätebau und Steuerungstechnik GMBH D - 78239 Rielasingen, Postfach 11 30, Carl - Benz - Strafle 1 Telefon

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-2012 IT-vejleder: Karl G. Bjarnason

Læs mere

Oversigts billedet: Statistik siden:

Oversigts billedet: Statistik siden: 1 Tilslutning: Tilslut et nætværks kabel (medfølger ikke) fra serverens ethernet port til din router. Forbind derefter bus kablet til styringen, brun ledning til kl. 29, hvid ledning til kl. 30 Forbind

Læs mere

Kom godt i gang med Mini Bots fra

Kom godt i gang med Mini Bots fra Kom godt i gang med Mini Bots fra Indholdsfortegnelse Generel Information... 3 Elektricitet... 3 Robotter, kunstige mennesker?...3 Forklaring af komponenter... 4 Robot-byggesættet inderholder følgende:...4

Læs mere

Bundkort Beskrivelse

Bundkort Beskrivelse Bundkort 2 3 4 8 5 6 7 9 0 2 3 4 5 6 20 2 7 8 9 Bundkortet er computerens midtpunkt, alle de andre hardware komponenter er tilsluttet til bundkortet. Når du skal købe et bundkort er det vigtigt at alle

Læs mere

Kravspecifikation For. Gruppen

Kravspecifikation For. Gruppen Kravspecifikation For Gruppen Indholdsfortegnelse 1. INDLEDNING...3 1.1 FORMÅL...3 1.2 REFERENCER...3 1.3 LÆSEVEJLEDNING...3 2. GENEREL BESKRIVELSE...4 2.1 SYSTEM BESKRIVELSE...4 2.2 SYSTEMETS FUNKTION...4

Læs mere

Lektion 6 / Analog Arduino

Lektion 6 / Analog Arduino 1 Jeremiah Teipen: Electronic Sandwich BSPR11 Lektion 6 / Analog Arduino Mogens Jacobsen / moja@itu.dk Siden sidst 2 Har I fået nogle LEDs til at blinke? Har I brugt kontakter? Hvad har I eksperimenteret

Læs mere

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor. Simple kontakter Accelorometer Example sensors Lysfølsomme modstande RFID reader & tags Temperaturfølsomme modstande Flex Sensor Ultralyds afstandsmåler Piezo Pressure/vibration Piezo Sound/buzzer Peltier

Læs mere

Genius laderegulator Monterings og brugervejledning

Genius laderegulator Monterings og brugervejledning Genius laderegulator Monterings og brugervejledning Laderegulatorens opbygning Genius er en avanceret laderegulator for solceller/solpaneler der kontroller, overvåger og styrer indladning og afladning

Læs mere

GB-HD8272C-W. Kom godt i gang

GB-HD8272C-W. Kom godt i gang GB-HD8272C-W Kom godt i gang Copyright GolBong Danmark 2015 Generelt Tillykke med dit GolBong HD IP-kamera. Denne Kom godt i gang-vejledning, gennemgår hvordan du forbinder og kommer i gang med at anvende

Læs mere

Brugervejledning. ComX brugervejledning version 4.1

Brugervejledning. ComX brugervejledning version 4.1 Brugervejledning ComX brugervejledning version 4.1 1 INDHOLD PAKKENS INDHOLD Pakkens indhold side 2 Fjernbetjening side 2 Tilslutning af Settop-boksen side 3 Introduktion til Bredbånds-TV side 4 Tilslutning

Læs mere

Kronback tracers P4+

Kronback tracers P4+ Brugervejledning Kronback tracers P4+ Fax:(+45) 46 907 910 Side 1 of 19 CONTENT 1. UDFORMNING OG FORBINDELSER 4 1.1. Serie nummer 5 1.2. Grafisk display 5 1.3. Navigationsknapper 6 1.4. 6-30V strømforsyning

Læs mere

Til dig som vil have et indblik i computeren

Til dig som vil have et indblik i computeren Vi håber du nu har fået indblik i computerens hardware. Til dig som vil have et indblik i computeren Brochuren er skrevet af Anders Bøge Paulsen, Betina Kopp Pedersen, Frederik Hejgaard Andersen og Oscar

Læs mere

Instruktion. MINIGAM+ On/off og analog styring IN217DKA

Instruktion. MINIGAM+ On/off og analog styring IN217DKA Instruktion MINIGAM+ On/off og analog styring IN217DKA 1. Beskrivelse af kort Advarsel! Flere dele på printkortet er forsynet med 115/230VAC. Afbryd altid strømmen før der arbejdes på aktuatoren. 2. For

Læs mere

Stokerbot 1.0. Bruger vejledning. Denne vejledning er stadig i et meget tidligt stadie, og mange ting er ikke forklaret grundigt nok.

Stokerbot 1.0. Bruger vejledning. Denne vejledning er stadig i et meget tidligt stadie, og mange ting er ikke forklaret grundigt nok. Stokerbot 1.0 Bruger vejledning Denne vejledning er stadig i et meget tidligt stadie, og mange ting er ikke forklaret grundigt nok. Har du spørgsmål der ikke er besvaret, bedes de oprettet i forumet så

Læs mere

Hvad skal du vide for at bygge din egen computer?

Hvad skal du vide for at bygge din egen computer? Hvad skal du vide for at bygge din egen computer? Kender du alle de her dele og hvad de gør godt for? Er du mellem 11 og 16 år, og tænker på at sammensætte din egen computer? Så er denne her guide lige

Læs mere

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C Indhold Indledning(Enes)... 2 Problemstilling (Enes)... 2 Teori (Enes)... 2 Løsningsforslag (Enes)... 4 RFID relæet (Mathias)... 6 Krav (Enes og Mathias)... 8 Målgruppen (Mathias)... 8 Rekvirent... 8 Implementering(Mathias)...

Læs mere

Music hall AV 2.1 Dansk kvik guide. Findes i sort eller silver. Begge med kraftig børstet aluminiumsfront

Music hall AV 2.1 Dansk kvik guide. Findes i sort eller silver. Begge med kraftig børstet aluminiumsfront Music hall AV 2.1 Dansk kvik guide Findes i sort eller silver. Begge med kraftig børstet aluminiumsfront 1 Medier & introduktion: Tillykke med dit nye music hall anlæg. Med AV2.1 har du let adgang til

Læs mere

Digital tæller Programerbar for MIX magnetisk målebånd

Digital tæller Programerbar for MIX magnetisk målebånd SERIE Z-20E.SN005 Digital tæller Programerbar for MIX magnetisk målebånd ELGO - ELECTRIC Gerätebau und Steuerungstechnik GMBH D - 78239 Rielasingen, Postfach 11 30, Carl - Benz - Straße 1 Telefon 07731

Læs mere

Tilbagemeldingsbus S88 med besatmelder

Tilbagemeldingsbus S88 med besatmelder Tilbagemeldingsbus S88 med besatmelder HSI-S88 og S88 moduler Skal modelbanen styres med et eller andet PC program, enten et Gør det selv system eller et prof program, som fx Windigipet, skal der installeres

Læs mere

Bredbånd. Vejledning til opsætning af bredbåndsmodem Pace V5500

Bredbånd. Vejledning til opsætning af bredbåndsmodem Pace V5500 Bredbånd Vejledning til opsætning af bredbåndsmodem Pace V5500 120911 Indhold Kapitel 1 Kom godt i gang Introduktion Klargør udstyr til installation Find en passende placering Kapitel 2 Installer dit bredbåndsmodem

Læs mere

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk Intro til AVR Mads Pedersen, OZ6HR mads@oz6hr.dk Projektidé Brug en AVR-microcontroller Mål temperatur vha. temperatursensor Vis på display Send til computer og vis temperatur Slide 2 Plan 27/10-2005:

Læs mere

Programmeringseksempel tl BCxxxx (Seriel)

Programmeringseksempel tl BCxxxx (Seriel) APP-NOTE 600005 Beckhoff Application Note Date: 8/28/2006 Document Status: First Draft Beckhoff Automation Aps Naverland 2, DK-2600 Glostrup Phone +45 43 46 76 20 Fax +45 43 46 63 35 Programmeringseksempel

Læs mere

Manual for VALTRONICS IP kamera Android APP

Manual for VALTRONICS IP kamera Android APP Manual for VALTRONICS IP kamera Android APP Herunder vises forskellige måder hvorpå man kan installere sin Android APP for Valtronics undendørs kamera. 1) Søg og installer din Android mobil APP via Play

Læs mere

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin)

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin) Hurtig opstart af Infranor XtrapulsPac-ak drev: Dette er en enkelt og kortfattet vejledning i opsætningen af XtrapulsPac-ak driver til anvendelse i stand-alone mode. Ingen Profibus forbindelse. For senere

Læs mere

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner. Tams Elektronik LD-G-3 / LD-W-3 (1) Lokomotivdekoder LD-G-3 / LD-W-3 i Märklin-Motorola format Denne oversættelse omfatter monterings- og anvendelsesvejledningerne til LD-G-3 / LD-W-3 dekoderen. Den originale

Læs mere

Impac230. Beskrivelse. Egenskaber. Impac 230

Impac230. Beskrivelse. Egenskaber. Impac 230 I1 I2 I3 I4 I5 I6 I7 I8 IC O1 O2 O3 O4 OC +10V +10V RS232 RJ45 I²C RJ11 Error Power +10V E5 E4 E3 E2 E1 M1+ P- P+ 12-36VDC M1- M2- M2+ Impac230 Beskrivelse Impac230 er som hele impac-serien designet med

Læs mere

COMPUTER ANATOMI. Mads Popp Mortensen og Kevin Kumar Klasse 1.1 Roskilde Tekniske Gymnasium. Kommunikation/IT C

COMPUTER ANATOMI. Mads Popp Mortensen og Kevin Kumar Klasse 1.1 Roskilde Tekniske Gymnasium. Kommunikation/IT C COMPUTER ANATOMI Mads Popp Mortensen og Kevin Kumar Klasse 1.1 Roskilde Tekniske Gymnasium Kommunikation/IT C Indhold Indledning... 2 Kravspecifikation... 2 Computerens historie... 2 Computerens ydre dele...

Læs mere

HD 2850-ST. Kom hurtigt i gang. med din HD Entertain Mini. Endnu bedre tv. 15930_DK Quick Guide ADB 2850.indd 1 23/05/14 15.49

HD 2850-ST. Kom hurtigt i gang. med din HD Entertain Mini. Endnu bedre tv. 15930_DK Quick Guide ADB 2850.indd 1 23/05/14 15.49 HD 2850-ST Kom hurtigt i gang med din HD Entertain Mini Endnu bedre tv 15930_DK Quick Guide ADB 2850.indd 1 23/05/14 15.49 resolution 2850 manual 1 Pakkens indhold Kontroller, at pakkens indhold er komplet,

Læs mere

MVT380 Vejledning. Forord. Website: www.smartgps.dk Kontakt: salg@smartgps.dk. Tillykke med din nye GPS tracker MVT380.

MVT380 Vejledning. Forord. Website: www.smartgps.dk Kontakt: salg@smartgps.dk. Tillykke med din nye GPS tracker MVT380. MVT380 Vejledning Forord Tillykke med din nye GPS tracker MVT380. Denne manual viser hvordan du installerer enheden korrekt. Sørg for at læse denne manual grundigt, før du bruger dette produkt. Brugermanualen

Læs mere

Computerens Anatomi. Af Martin Arnetoft

Computerens Anatomi. Af Martin Arnetoft Computerens Anatomi Af Martin Arnetoft Moores lov Moores lov siger, at antallet af transistorer på et stykke hardware over 18 eller 24 måneder fordobles. Denne lov bruges til at beskrive udviklingen indenfor

Læs mere

Dangate Brugermanual Bolyguard JK-10 og JK-15

Dangate Brugermanual Bolyguard JK-10 og JK-15 Dangate Brugermanual Bolyguard JK-10 og JK-15 Tak fordi du valgte at købe et vildtkamera fra Dangate. Vi har lavet denne danske manual, så du får optimal udnyttelse og mest mulig glæde af dit nye Bolyguard

Læs mere

Noise Detector 100. Hvad er ND100 2. ND-100 kan bruges i maskiner med 2. Fejl loggen. 2. Ophæv bruger indstillet følsomhed. 3. Alarm koder.

Noise Detector 100. Hvad er ND100 2. ND-100 kan bruges i maskiner med 2. Fejl loggen. 2. Ophæv bruger indstillet følsomhed. 3. Alarm koder. Noise Detector 100 Indhold Side Hvad er ND100 2 ND-100 kan bruges i maskiner med 2 Fejl loggen. 2 Bruger indstilling af støj følsomhed ( kun v.1-05 og v.2-10 ) 2 Ophæv bruger indstillet følsomhed. 3 Alarm

Læs mere

Tak fordi du har købt et Vems produkt.

Tak fordi du har købt et Vems produkt. Side 1. Tak fordi du har købt et Vems produkt. Denne guide vil hjælpe dig med at samle Vems 3,3 motorstyringen. Følg guiden grundigt og spørg hvis du kommer i tvivl om noget. Denne vejledning er ikke færdiggjort

Læs mere

www.eggtronic.com USER MANUAL

www.eggtronic.com USER MANUAL www.eggtronic.com USER MANUAL Index Dansk p. 2 Figures 5 3 3 1 2 4 5 6 3 6 3 6 6 3 3 6 7 4 usb 3.0 slots usb cartridge connectors additional usb ports bluetooth cartridge sd card reader cartridge other

Læs mere

Svane Electronic Timer universal med 8 funktioner 1

Svane Electronic Timer universal med 8 funktioner 1 Svane Electronic Timer universal med 8 funktioner 1 Digital timer print modul 12V 2000.2231 Multi funktions timer med 8 funktioner, anvendelig i mange installationer, forsyning 12VDC drift. Printet har

Læs mere

Wahlberg Surtitle Display

Wahlberg Surtitle Display Wahlberg Surtitle Display (Copyright by WAHLBERG ApS) Bruger manual Software version - 1.88 Produktindhold: Strømkabel USB to RS232 Converter. Undertekst lysavis 2,8 Meter lang / 0,3 Meter høj. Wahlberg

Læs mere

GB-HD9604T-PL / GB-HD9716T-PL. Kom godt i gang

GB-HD9604T-PL / GB-HD9716T-PL. Kom godt i gang GB-HD9604T-PL / GB-HD9716T-PL Kom godt i gang Copyright GolBong Danmark 2015 Generelt Tillykke med dit GolBong HD netværksoptager. Denne Kom godt i gang-vejledning, gennemgår hvordan du forbinder og kommer

Læs mere

DC-Motor Controller. Brugermanual

DC-Motor Controller. Brugermanual Forside Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK DC-Motor Controller Brugermanual Firmware V4.00 Produkt indhold 1 styreboks til styring af 1 DC-motor. 1 strømforsyning 100 240 volt

Læs mere

Mini DVB-T USB stik S6

Mini DVB-T USB stik S6 Technaxx Mini DVB-T USB stik S6 Brugermanual Find venligst Overensstemmelseserklæring for denne enhed under følgende internetadresse-link: www.technaxx.de/konformitätserklärung/mini_dvbt_stick_s6 Denne

Læs mere

1. Detaljeret beskrivelse

1. Detaljeret beskrivelse Digital Diktafon Indhold 1. Detaljeret beskrivelse... 3 2. Specifikation... 4 3. Sæt batterier i... 4 4. Anvendelse... 6 4.1. Tænd/Sluk... 6 4.2. Optagelse... 6 4.4.1 Vælg optagelsestilstand... 6 4.4.2

Læs mere

Automatisering Af Hverdagen

Automatisering Af Hverdagen Automatisering Af Hverdagen Programmering - Eksamensopgave 10-05-2011 Roskilde Tekniske Gymnasium (Kl. 3,3m) Mads Christiansen & Tobias Hjelholt Svendsen 2 Automatisering Af Hverdagen Indhold Introduktion:...

Læs mere

Svendeprøve Projekt Tyveri alarm

Svendeprøve Projekt Tyveri alarm Svendeprøve Projekt Tyveri alarm Påbegyndt.: 8/2-1999 Afleveret.: 4/3-1999 Projektet er lavet af.: Kasper Kirkeby Brian Andersen Thomas Bojer Nielsen Søren Vang Jørgensen Indholds fortegnelse 1. INDLEDNING...3

Læs mere

IAI Quick Start Guide

IAI Quick Start Guide IAI Quick Start Guide Opsætning: Manualen til controllerene ligger i: Produkter\IAI\Manual\RoboCylinder\Controller\ Her ligger den i en undermappe alt efter hvilken type controller det er. Installer RCPC

Læs mere

LEOGICS Pen-tablet. Hurtig installationsguide

LEOGICS Pen-tablet. Hurtig installationsguide LEOGICS Pen-tablet Hurtig installationsguide Velkommen Tak for købet af LEOGICS PT-1001 Pen-tablet. Du vil opdage hvor nemt det er at styre din computer ved brug af en digital pen i stedet for en mus.

Læs mere

Dansk bruger manual Udarbejdet af Datalogisk A/S 1/27

Dansk bruger manual Udarbejdet af Datalogisk A/S 1/27 Dansk bruger manual Udarbejdet af Datalogisk A/S 1/27 Sådan kommer du i gang Det er der i kassen Indhold MojoMINI skærm USB kabel til skærm SD hukommelseskort Pegepind Billader til skærm Monteringsbeslag

Læs mere

Computerens - Anatomi

Computerens - Anatomi 2014 Computerens - Anatomi Rapporten er udarbejdet af Andreas og Ali Vejleder Karl G Bjarnason Indholdsfortegnelse Formål... 2 Indledning... 2 Case... 3 Design... 3 Skitser... 4 Planlægning... 5 Kravsspecifikation...

Læs mere

Kom godt i gang med. Icotera fiberboks. med indbygget router

Kom godt i gang med. Icotera fiberboks. med indbygget router Kom godt i gang med Icotera fiberboks med indbygget router Tillykke med din nye fiberboks Inden du får glæde af fiberbredbåndet, skal du have tilsluttet computer, TV og telefon til fiberboksen. Med denne

Læs mere

EasyRun En løbers bedste ven

EasyRun En løbers bedste ven En løbers bedsteven Anders Arnfast 06525, Martin Søberg 0655, Ken Falk 06504 09 . INDHOLD. Indhold... 2 2. Introduktion... 3 Opsætning... 3 3. System arkitekturdesign... 4 4. Hardware Design... 5 Ethernet

Læs mere

Digital Drejeskive Decoder til 7286 / 7686

Digital Drejeskive Decoder til 7286 / 7686 Digital Drejeskive Decoder til 7286 / 7686 7687 Marklin 7687 Drejeskive Decoderen kan anvendes på følgende måder til etablering af Styring til Drejeskiven fra Centralstation 2. (Dette dokument tager udgangspunkt

Læs mere

Kravspecifikation på bærbare pc er med hhv. stor og lille skærm

Kravspecifikation på bærbare pc er med hhv. stor og lille skærm Udfyldes af leverandør Leverandørens navn Kontaktperson Kontaktperson, mailadresse Kontaktperson, telefonnummer Kravspecifikation på bærbare pc er med hhv. stor og lille skærm Fælles minimumskrav for begge

Læs mere

Computerens Anatomi Af Mathias og Mark

Computerens Anatomi Af Mathias og Mark Computerens Anatomi Af Mathias og Mark Planlægning af projekt Case Størstedelen af nutidens unge har deres egen smartphone, computer og fjernsyn. Computere i alle afskygninger bliver fortsat en større

Læs mere

S26 MOTOR Original brugermanual

S26 MOTOR Original brugermanual S26 MOTOR Original brugermanual Indhold 1. Indledning 1 2. Liste over nødvendigt værktøj 1 3. Sikkerhedspåbud 1 4. Motor montering 2 4.1. Instruktion før montering 2 4.2. Samling af skinne 3 4.3. Opsætning

Læs mere

GB-HD3172RCL-W. Kom godt i gang

GB-HD3172RCL-W. Kom godt i gang GB-HD3172RCL-W Kom godt i gang Copyright GolBong Danmark 2015 Generelt Tillykke med dit GolBong HD IP-kamera. Denne Kom godt i gang-vejledning, gennemgår hvordan du forbinder og kommer i gang med at anvende

Læs mere

Brugervejledning. Trådløs HD Sender & Modtager Sæt

Brugervejledning. Trådløs HD Sender & Modtager Sæt Brugervejledning Trådløs HD Sender & Modtager Sæt Indholdsfortegnelse Functions and features... Fejl! Bogmærke er ikke defineret. Package contents... Fejl! Bogmærke er ikke defineret. 1. Product overview...

Læs mere

Brugermanual. 2GB MP3 afspiller

Brugermanual. 2GB MP3 afspiller Brugermanual 2GB MP3 afspiller Indhold 1. Knappe funktioner og fremgagnsmåde... 4 2. Instruktioner... 4 2.1 Tænd og sluk... 4 2.2 Upload Music to the Player... 5 2.3 Afspil musik... 6 2.4 Normal or shuffle

Læs mere

Radio Frequency Identification. Jonas Nobel, Nikolaj Sørensen og Tobias Petersen

Radio Frequency Identification. Jonas Nobel, Nikolaj Sørensen og Tobias Petersen Radio Frequency Identification Jonas Nobel, Nikolaj Sørensen og Tobias Petersen Hvad er RFID I starten af 70'erne blevet stregkoden opfundet til at gøre det lettere at handle. Stregkoden kunne huske et

Læs mere

Mx-5000. Baldershøj 13-15 Tel. 43 24 56 00 info.dk@adiglobal.com 2635 Ishøj Fax 43 24 56 01 www.adiglobal.com/dk

Mx-5000. Baldershøj 13-15 Tel. 43 24 56 00 info.dk@adiglobal.com 2635 Ishøj Fax 43 24 56 01 www.adiglobal.com/dk Mx-5000 Baldershøj 13-15 Tel. 43 24 56 00 info.dk@adiglobal.com 2635 Ishøj Fax 43 24 56 01 www.adiglobal.com/dk Sikkerhed sat i system Mx-5000 Brugervenlig og pålidelig ABA-central. Mx-5000 serien er bygget

Læs mere

MCE2040 SERIEL KOMMUNIKATIONSMODUL

MCE2040 SERIEL KOMMUNIKATIONSMODUL Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf.: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE2040 SERIEL KOMMUNIKATIONSMODUL Overførsel af status og vægt for digitale vejeceller via simpel PC/PLC protokol

Læs mere

MINI SRP MAT-IT. Lavet af Adam Kjærum og Frederik Franklin klasse 2.4 på Rokilde Tekniske Gymnasium. Lavet på Rokilde Tekniske Gymnasium

MINI SRP MAT-IT. Lavet af Adam Kjærum og Frederik Franklin klasse 2.4 på Rokilde Tekniske Gymnasium. Lavet på Rokilde Tekniske Gymnasium MINI SRP MAT-IT Lavet af Adam Kjærum og Frederik Franklin klasse 2.4 på Rokilde Tekniske Gymnasium Lavet på Rokilde Tekniske Gymnasium Indhold Forord... 2 Indledning... 2 Model og differentielligning...

Læs mere

Markus, Nicklas, Jonas og Patrick D Kom/it C 1. feb 2013. Computerens anatomi. --- Lavet af Markus, Nicklas, Jonas og Patrick D --- Side 1 af 8

Markus, Nicklas, Jonas og Patrick D Kom/it C 1. feb 2013. Computerens anatomi. --- Lavet af Markus, Nicklas, Jonas og Patrick D --- Side 1 af 8 Computerens anatomi --- Lavet af Markus, Nicklas, Jonas og Patrick D --- Side 1 af 8 Indholdsfortegnelse Foredrag... 3 Formidling... 4 En computer er opbygget af... 5 Side 2 af 8 Foredrag Målgruppe 7,

Læs mere

GSM port styring 400 brugere

GSM port styring 400 brugere 1 GSM port styring 400 brugere SMS alarm, temperatur og fjernkontrol system 16 brugere til at modtage alarmbeskeder via SMS Software vejledning SSIHuset Svane Electronic ApS Arildsvej 27, Gråmose, DK-7442

Læs mere

MCE9637 DeviceNet Modul

MCE9637 DeviceNet Modul Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE9637 DeviceNet Modul MCE9637 til overførsel af status og vægt for digitale vejeceller Gælder for: PIC nr.:

Læs mere

Kom godt i gang med. Icotera fiberboks. med indbygget router. 25562 - TRE BRE booklet 120x120 fiberboks ICOTERA rev04.indd 1

Kom godt i gang med. Icotera fiberboks. med indbygget router. 25562 - TRE BRE booklet 120x120 fiberboks ICOTERA rev04.indd 1 Kom godt i gang med Icotera fiberboks med indbygget router 25562 - TRE BRE booklet 120x120 fiberboks ICOTERA rev04.indd 1 02-11-2011 10:03:07 Tillykke med din nye fiberboks Inden du får glæde af fiberbredbåndet,

Læs mere

Hurtig start. 2. Indsæt SD-kortet (32 GB eller mindre) og et aktivt SIM kort uden PIN-kode.

Hurtig start. 2. Indsæt SD-kortet (32 GB eller mindre) og et aktivt SIM kort uden PIN-kode. Hurtig start 1. Indsæt 12 stk. nye eller fuldt opladede AA batterier (kan opstarte på 4 batterier i nødstilfælde), eller tilslut ekstern 6 Volt strømforsyning, som er kompatibelt med kameraet. 2. Indsæt

Læs mere

Intelligent Solar Charge Controller Solar30 User s Manual

Intelligent Solar Charge Controller Solar30 User s Manual OM Solceller Intelligent Solar Charge Controller Solar30 User s Manual Læs venligst denne instruktion grundigt igennem, før du bruger den. 1 Produkt introduktion: Denne controller er en slags intelligent

Læs mere

Udbedring af fejlsituationer ved anvendelse af BridgeMate

Udbedring af fejlsituationer ved anvendelse af BridgeMate Udbedring af fejlsituationer ved anvendelse af BridgeMate Indhold: Kort om BridgeCentral og BridgeMate funktionen Resumé PC en går i dvale eller lukker ned under en session Serveren mister strøm Et bord

Læs mere

Afvikling af Bridge turnering. BridgeCentral og BridgeMate. Komponenter, opsætning, afvikling og afslutning af turnering.

Afvikling af Bridge turnering. BridgeCentral og BridgeMate. Komponenter, opsætning, afvikling og afslutning af turnering. Afvikling af Bridge turnering BridgeCentral og BridgeMate Komponenter, opsætning, afvikling og afslutning af turnering. Leif Thusholt 28-08-2010 INDEX A Angiv startscore 17 B BridgeCentral Formål 3 BridgeMate

Læs mere

- Forøg værdien i SETUP tilstand og Alarm funktionen

- Forøg værdien i SETUP tilstand og Alarm funktionen Introduktion Denne digitale skridttæller viser antal skridt gået, afstand tilbagelagt, kalorier forbrændt, den totale træningstid, og har 30 dages hukommelse, blandt andre nyttige funktioner. Det er også

Læs mere

nødvendige at vide noget om hvis man skal vide noget om det indre at en computer, de 5 emner er harddisk, RAM, grafikkort, bundkort og processer.

nødvendige at vide noget om hvis man skal vide noget om det indre at en computer, de 5 emner er harddisk, RAM, grafikkort, bundkort og processer. Computer anatomi Kommunikationsplan: Vi skriver om de 5 vigtigste komponenter i en computer, hvordan computeren er opbygget. Forklare hvad de enkelte komponenter er til. Hvem der bruger hvilke komponenter

Læs mere

AFN2208N+ Wi-Fi forstærker 300mBit op til 2500 meters rækkevidde vandtæt.

AFN2208N+ Wi-Fi forstærker 300mBit op til 2500 meters rækkevidde vandtæt. AFN2208N+ Wi-Fi forstærker 300mBit op til 2500 meters rækkevidde vandtæt. WiFi forstærker/router med op til 2500 meters rækkevidde og med DANSK quick guide/installationsvejledning. Denne WiFi forstærker

Læs mere

(2 DØRE, 100 NØGLER)

(2 DØRE, 100 NØGLER) BESKRIVELSE Vprox 100 er et avanceret adgangskontrol-system baseret på Videx unikke Coded Key, der giver mere end 4 milliarder kombinationer. Systemet kan kontrollere to uafhængige døre og gemme op til

Læs mere

Opsætning og installation af NMEA 2000 netværk. Generel information

Opsætning og installation af NMEA 2000 netværk. Generel information Dansk vejledning NMEA LowranceNet.qxp 26-01-2006 17:18 Side 1 Opsætning og installation af NMEA netværk Generel information NMEA er en databus specielt til både. Det er en industristandard udviklet af

Læs mere

LEGO MINDSTORMS Education EV3

LEGO MINDSTORMS Education EV3 LEGO MINDSTORMS Education EV3 Fremtiden tilhører de kreative πr ROBOTTER OG IT PROBLEMLØSNING KREATIVITET SAMARBEJDE EV3 en evolution af MINDSTORMS Education! LEGO MINDSTORMS Education har bevist, at det

Læs mere

PacketFront fiberboks

PacketFront fiberboks Kom godt i gang med PacketFront fiberboks med indbygget router 27-10-2011 08:42:06 Tillykke med din nye fiberboks Inden du får glæde af fiberbredbåndet, skal du have tilsluttet computer, TV og telefon

Læs mere

Brugermanual til System 2000

Brugermanual til System 2000 Brugermanual til System 2000 Vigtigt Læs hele denne manual før komponenten tages i brug, den indeholder vigtig information for brugeren. 5/9 2007 L:\Vejledninger\Nye vejledninger\vejledning_system2000.pdf

Læs mere

LISA 2 System til faringsovervågning

LISA 2 System til faringsovervågning Indledning Du har netop anskaffet dig et unikt stykke værktøj til brug ved faringsovervågning. LISA 2 systemet er et interaktivt værktøj, som sikrer at medarbejdere i farestalden holder fokus på faringer

Læs mere

Formfaktor: Mini-DTX 20cm (7,87 inches) x 17cm (6,69 inches)

Formfaktor: Mini-DTX 20cm (7,87 inches) x 17cm (6,69 inches) Bundkort: Adina Formfaktor: Mini-DTX 20cm (7,87 inches) x 17cm (6,69 inches) Chipset: AMD Hudson D1 Fusion Kontrol Host Hukommelsessokler: 2 x DDR3 Front side bus hastigheder: 2.5GT / s Processor socket:

Læs mere

Installationsmanual. 2 Installering...6. 3 Installering SMS sender...7. 4 Installering PSTN/GSM sender...7. 5 Installering PSTN GSM konverter...

Installationsmanual. 2 Installering...6. 3 Installering SMS sender...7. 4 Installering PSTN/GSM sender...7. 5 Installering PSTN GSM konverter... CS 47 Syntax Side 2 Indholdsfortegnelse 1 Introduktion...4 1.1 Funktioner...4 1.2 Forsyning...4 1.3 PSTN support...5 1.4 GSM support...5 1.5 SMS support...5 1.6 Indgange...5 1.7 Udgange...5 1.8 Password...5

Læs mere

Kom godt i gang med. Icotera fiberboks. med indbygget router

Kom godt i gang med. Icotera fiberboks. med indbygget router Kom godt i gang med Icotera fiberboks med indbygget router Tillykke med din nye fiberboks Inden du får glæde af fiberbredbåndet, skal du have tilsluttet computer, TV og telefon til fiberboksen. Med denne

Læs mere

Programmering af trådløse modtagere (RF)

Programmering af trådløse modtagere (RF) Comfort CSx75 Programmering af trådløse modtagere (RF) Introduktion Centralerne CSx75 kan udvides med trådløse (RF) modtagere på 868 MHz og 433 MHz. Når en RF modtager er installeret på centralen, kan

Læs mere

Analoge indgange og A/D konvertering. Analoge udgange

Analoge indgange og A/D konvertering. Analoge udgange Programmering for begyndere Brug af Arduino Programmeringskursus Analoge indgange og A/D konvertering Analoge udgange Knud Krogsgaard Jensen OZ1QK Oversigt Oversigt over i aften: A/D konvertering iterations

Læs mere

Brugervejledning. SmartAir P-Enhed Programmeringsenhed

Brugervejledning. SmartAir P-Enhed Programmeringsenhed Brugervejledning SmartAir P-Enhed Programmeringsenhed Copyright 2006, Ruko A/S Ruko A/S Marielundvej 20 DK - 2730 Herlev DENMARK Telefon: +45 44 54 44 54 Hotline: +45 44 54 46 00 Fax: +45 44 54 44 44 E-post:

Læs mere