Mobile Robotter. En praktisk undersøgelse af tilgængelighed af robotudvikling for entusiaster.

Størrelse: px
Starte visningen fra side:

Download "Mobile Robotter. En praktisk undersøgelse af tilgængelighed af robotudvikling for entusiaster."

Transkript

1 Mobile Robotter En praktisk undersøgelse af tilgængelighed af robotudvikling for entusiaster. Toke Faurby Bachelor Studies in Humanities and technology Roskilde University. Computer Science Allan Laursen Bachelor Studies in Natural Science, Roskilde University Computer Science Morten Brandrup supervised the project.

2 Abstract Robotics is a quickly growing field and the ability to build and program robots are increasingly relevant skills to possess. In order to learn about robots we created a wheeled robot with several sensors. The construction took place at FabLab RUC, a workshop that provides expertise and tools to the public free of charge. For the project, we limited ourselves to resources available to a regular Danish citizen. Through an integrated hardware and software development process, we examined robot programming. We used an iterative development process, building several prototypes along the way. There are complications associated with working with sensor data and actuators and several precautions need to be taken in order to ensure a robust performance. Through the development process, we gained practical experience and skills, which we can now apply to future robotics projects. We found that despite the technical difficulty associated with creating a robust robotic system, anyone with the time and drive can acquire these skills through tools and resources that are easily accessible to most Danish citizens. Acknowledgements This paper and the associated robot were made possible by the help and guidance of our supervisor Morten Brandrup as well as FabLab RUC employees Nicolas Møbius and Mads Hobye. 2

3 Indholdsfortegnelse Abstract... 2 Acknowledgements... 2 Indledning... 4 Motivation... 4 Problemformulering... 5 Semesterbinding... 5 Metode... 6 Beskrivelse af projekt... 6 Beskrivelse af arbejdsproces... 6 Baggrundsviden... 7 Robot-programmering... 7 Kontrol-modeller... 7 PID controller...10 Designvalg...13 Arbejdstilrettelæggelse...13 Hardware overvejelser...14 Software overvejelser...16 Erfaringer...17 Processtyring...17 Hardware...18 Software...19 Dokumentation...24 Karosseri...24 Elektronik...24 Software...25 Refleksion...25 Konklusion...26 Videre arbejde...26 Bibliography

4 Indledning I dette projekt har vi bygget en mobil robot med to motordrevne og et frit roterende hjul, en såkaldt differential drive robot, som er udstyret med sensorer. Ved hjælp af sensorerne kan robotten følge en streg og måle afstand til objekter. Den udviklede robot kan ses på opgavens forside og den tilhørende software kan findes i bilag Vi har begge erfaring med software-projekter, men ingen af os har erfaring med at udvikle hardware og software som integreret projekt eller robot-programmering. Projektet fungerer som en introduktion til det tværfaglige arbejde med hardware- og softwareudvikling, da det er første gang vi stifter bekendtskab med den kombinerede arbejdsproces. Derfor har vi designet robotten til at inkorporere udvalgte generelle elementer, der er nemt tilgængelige, kan anvendes til mange projekter og som niveaumæssigt er passende at arbejde med som et første hardware-projekt. Arbejdet på robotten har været iterativt og undervejs har vi lavet flere prototyper. Vi har specificeret overordnede mål, og ud fra disse har vi planlagt hvilken software og hardware der skal udvikles. Løbende har vi udviklet små dele af hardware og software som derefter er blevet evalueret. På baggrund af disse evalueringer har vi tilpasset målet for robotten og det videre arbejde. Motivation At skrive programmer til robotter, der agerer i den virkelige verden, er ikke det samme som at skrive programmer, der udelukkende skal køre på en computer. Når en robot udvikles og programmeres er man nødt til at tage højde for fysiske begrænsninger, sensor-støj og aktuator-upræcision. Dette tilføjer flere potentielle faldgruber, hvilket gør det vanskeligt at konstruere robuste systemer. Professor i kybernetik Kevin Warwick har sagt at: An actual robot walking machine which takes one step and then falls over is worth far more than a computer simulation of 29,000 robots running the London Marathon in record time (Warwick, 2014) Dette viser Warwicks holdning til den øgede kompleksitet, der opstår når en robot skal interagere med den virkelige verden, og understøtter vores opfattelse af, at hvis man vil programmere en funktionel robot, så bliver man også nødt til at bygge den. Simulationer er ikke nok. Robotprogrammering er ikke kun et interessant forskningsfelt i forhold til, hvordan software og hardware interagerer med omgivelserne, men også en voksende industri. Robotter er i stigende grad begyndt at blive markedsført til det private marked. For eksempel er robotstøvsugeren Roomba, legetøjs-robotten Sphero og sikkerheds-robotten Avatar III alle robotter som er markedsført til privatpersoner (Robotguide, 2013). Man behøver dog ikke kun være forbruger og købe færdigfremstillede robotter. Efterhånden som motorer, sensorer og processorkraft er blevet billigere, er det blevet nemmere for privatpersoner selv at bygge robotter. 1 Video af robotten der følger en linje: https://www.youtube.com/watch?v=dyfjxqo_eo0 2 Video af robotten der demonstrere afstandsmålinger: https://www.youtube.com/watch?v=hnd6uyqu4a4 4

5 Med moderne computerstyrede produktionsfaciliteter som laserskærere, CNC maskiner og 3D printere, kombineret med billige motorer, sensorer og mikroprocessorer, er det muligt at give ideer fysisk form igennem funktionelle protyper på måder som var umulige indtil for nylig. (Padfield, 2014) Sådanne faciliteter er offentligt tilgængelige i FabLab RUC, et værksted som stiller redskaber og ekspertise til rådighed for studerende såvel som privatpersoner (RUC.dk, 2014) På internettet er det let at finde resurser, der gør det nemmere at begynde at udvikle robotter. For eksempel findes der på den populære maker-hjemmeside Instructables.com, over 1200 guides til robotprojekter (Instructables, 2014). Ud over guides findes der også decideret undervisningsmateriale. Et eksempel på dette er Coursera.org, som er en online uddannelsesplatform, som via partnerskaber med topuniversiteter verden over kan tilbyde gratis online-kurser, såkaldte MOOCs (Massive Open Online Courses), inden for mange fagområder (Coursera, 2014). Man kan blandt andet tilegne sig tekniske kompetencer og færdigheder, der er relevante for robotudvikling. Problemformulering I dette projekt vil vi undersøge hvordan de muligheder der er tilgængelige for en normal dansker kan bruges til at lære om robotudvikling. I løbet af projektet undersøges robotprogrammering igennem et udviklingsforløb, hvor en mobil robotplatform udvikles med dertil hørende software. Til dette forløb vil de faciliteter der er offentligt tilgængelige i FabLab RUC, og vejledning fundet på internettet, blive benyttet. I forbindelse med forløbet vil de kompetencer og den viden der er nødvendige for at gennemføre et robot-projekt blive behandlet. Semesterbinding Denne opgave skrives i forbindelse med et fagmodulprojekt i datalogi på Roskilde Universitet. I fagmodulbeskrivelsen fremgår det at: Fagmodulprojektet skal opøve den studerendes evne til at beskrive og reflektere over et selvstændigt udført arbejde, hvor en middelstor programmeringsopgave er planlagt, implementeret, afprøvet og dokumenteret, og hvortil der er anvendt et højere, generelt programmeringssprog. (Studienævnet for Datalogi og Informatik, 2014) I det udviklingsforløb vi har været igennem har vi tilegnet os viden om, hvordan software og hardware udvikles sideløbende, hvilke algoritmer der kan bruges til at kontrollere en robot, og hvordan sensor-data behandles. I løbet af planlægning-, gennemførsels- og afprøvnings-processen har vi lært at programmere i Arduino-sproget, som er baseret på C++, og hvordan forskellige design fungerer i praksis. Ved refleksion over vores arbejdsproces og de vanskeligheder vi er stødt på, har vi opnået viden om hvordan et fremtidigt forløb kan tilrettelægges, og hvordan et udviklingsforløb bør styres. 5

6 Metode Beskrivelse af projekt I løbet af dette projekt blev en robot, som kan køre rundt autonomt, udviklet. Forløbet blev gennemført ved brug af elektroniske komponenter og produktionsfaciliteter som er tilgængelige i Fablab RUC og læringmateriale på internettet. I forbindelse med sådan et projektet er det nødvendigt at træffe flere design- og implementeringsvalg. Da dette projekt, som nævnt, er første gang vi samlet udvikler hardware og software i et forløb, tjener det også som introduktion til denne type arbejde. Vi har valgt at tage udgangspunkt i udbredte og generiske materialer og komponenter, således at viden der tilegnes igennem dette projekt kan anvendes i forskellige sammenhænge. I arbejdet med mobile robotter opnås indsigt om generelle principper i kontrolsystemer og robotprogrammering, idet robotten er afhængig af sensorer og dynamisk kontrol for at kunne navigere gennem et ukendt og foranderligt miljø. En differential drive robot, altså en robot med to individuelt drevne hjul, er en simpel robotplatform som ofte benyttes som introduktionsplatform til mobile robotter. Dette skyldes, at den er forholdsvis nem at kontrollere, og styringen er en kendt størrelse inden for robotprogrammering. Derfor er der meget materiale om emnet online. Algoritmen for styring af robotten behandles i [PID controller, side 10] Vi har udstyret vores robot med seks sensorer, hvilket er forholdsvis mange i forhold til andre begynderrobotter. Dette har vi gjort for at stifte bekendtskab med forskellige sensor-typer og for at indsamle rigeligt data at programmere funktionalitet ud fra. Til dette projekt er det nødvendigt at træffe valg i forhold til hardware såvel som software samt, hvordan disse skal kombineres. De valg vi har truffet behandles i [ Designvalg, side 13] Beskrivelse af arbejdsproces Inden vi begyndte at arbejde på projektet tilrettelagde vi nogle principper for, hvordan vi havde tænkt os at arbejde, hvad vi ønskede vores endelige produkt skulle være, og hvad vi gerne ville have ud af dette projekt rent fagligt. Følgende afsnit vil beskrive vores planer og mål. I løbet af dette projekt ønskede vi at opnå generelt anvendelig viden om udvikling af robotter. Vi ønskede praktisk erfaring med hardware- og softwareudvikling, planlægning af et samlet robot-system, og erfaring med kontrolsystemer. Vi besluttede at arbejde iterativt og lave en tidlig prototype, som vi efterfølgende itererede på. Da dette er vores første robot-projekt undlod vi at sætte for snævre rammer for projektet, så vi kunne tilpasse målet for robotten efterhånden som vi fik mere erfaring med bearbejdelse af hardwaren. Derudover fokuserede vi på at opdele projektet i mindre dele, som kunne udvikles en ad gangen. Vi definerede vores produktmål ud fra funktionelle beskrivelser af hvad vi ønskede robotten skulle kunne. Vi definerede disse mål så de kunne op- og nedjusteres, alt efter hvordan projektet forløb. Det viste sig dog, at vores ambitionsniveau oversteg vores faktiske kompetencer i en sådan grad, at en simpel nedskalering ikke var tilstrækkelig. Dette vil blive redegjort for i [Erfaringer, side 17] 6

7 Baggrundsviden Vi bruger Joseph L. Jones definition af en robot, der lyder som følger: A device that connects sensing to actuation in an intelligent way. (Jones, 2004) Hvis man ønsker at bygge en robot, som skal kunne agere i den virkelige verden, skal man tage højde for at omgivelserne er ukendte og foranderlige, modsat digitale simuleringer eller kontrollerede miljøer som fabrikker. Dette er særligt gældende for mobile robotter, som bevæger sig rundt i disse omgivelser. Det er nødvendigt at en mobil robot kan tilpasse sig de forskellige omgivelser og forskellige situationer. For at kunne navigere i dynamiske miljøer er man nødt til at operere på baggrund af signaler, der modtages fra sensorer. Robot-programmering Når en robot programmeres er man nødt til at tage højde for sensorstøj og aktuator-upræcision. I et computerprogram bestemmer man i høj grad selv, hvordan verden hænger sammen, men med robotter er man nødt til at underordne sig den virkelige verdens fysiske begrænsninger. Hvilke materialer og elektroniske komponenter der er tilgængelig, bliver en faktor. Til forskel fra et program der kører på en computer, hvor præcise værdier kan gemmes og læses, er man nødt til at tage forbehold for upræcision, uventede situationer og et dynamisk miljø, der kan forandre sig. Med robotter er det svært at planlægge for langt fremad, og man bliver nødt til at tage hensyn til omgivelserne. Robotten bliver nødt til konstant at opdatere sin information om omgivelserne, og justere sin adfærd derefter. Kontrol-modeller Hvordan dynamiske systemer udvikler sig over tid, og hvordan denne udvikling kan påvirkes hører inden for det generelle område af kontrolteori. Kontrolteori er relevant inden for mange fagområder ud over robot- og maskinkontrol, men her er det et af de centrale områder. For at planlægge kontrol af en robot er det nødvendigt at have en model for hvordan robotten agerer. Robotten kontrolleres ved hjælp af to hjul der kan styres uafhængigt så man er nødt til at tage udgangspunkt i disse, da det er disse parametre som de fysiske aktuatorer påvirker. Denne model kaldes differential drive model. Vores algoritmer tager udgangspunkt i kontrolteori, hvilket vil blive gennemgået i følgende afsnit. 7

8 Figur 1a: Kinematik for en differential drive robot. Figuren viser sammenhængen imellem forskellige hjulhastigheder (blå pile) og robottens overordnede bevægelse (røde pile) for en differential drive robot. (National Mission on Education Through ICT, 2014) Det er dog ikke særlig intuitivt at arbejde med hjulhastigheder direkte, så vi vil bruge en design-model kaldet unicycle modellen. En unicycle model er en abstraktion hvor robotten ses som havende ét hjul hvor den lineære og angulære hastighed kan kontrolleres direkte i stedet for hjulhastighederne, til at beskrive udvikling i systemet. Unicycle modellen gør det nemmere at designe controllere. Figur 1b: Kinematik for en unicycle Figuren viser en unicycle, hvor robottens bevægelser beskrives ud fra den linære og anglulære hastighed i stedet for hjulhastigheder. Billedet er modificeret ud fra (National Mission on Education Through ICT, 2014) Ved at udregne kontrol signaler til unicycle modellen, og så omregne disse til differential drive modellen, forenkles kontrolsignalerne til en hastighed og en vinkel, hvilket er langt mere intuitivt. I følgende vil den matematiske baggrundsviden for en differential drive og en unicycle robot blive gennemgået, sammen med den kontrol-algoritme vi har benyttet. Den baggrundsviden der vil blive gennemgået, er baseret på et online kursus som blev afholdt af Magnus Egerstedt (Egerstedt, 2014) fra Georgia Institute of Technology på Coursera.org. Kurset dækker kontrol af mobile robotter generelt fra et teoretisk perspektiv. Kurset indeholder også en valgfri software og hardware del. Kurset tager udgangspunkt i PID-controllere og gennemgår både den matematiske 8

9 baggrund og hvordan forskellige typer mobile robotter kan kontrolleres. Kurset er et eksempel på de lærings-ressourcer der er tilgængelige online, hvor et læringsforløb stilles til rådighed gratis. Et såkaldt MOOC. Differential drive På en differential drive robot kontrolleres to hjuls omdrejningshastigheder individuelt og et tredje hjul er passivt og bidrager til stabilitet. Det antages at robotten har omdrejningspunkt midt imellem de to aktive hjul. Som nævnt ovenfor bør en model ikke afhænge af at kende parametre for robotten, men dette er ikke altid muligt. Hvilke parametre der er nødvendige afhænger af sensor-aktuator kombinationen og hvad man ønsker at kontrollere. Nogle parametre er bedre end andre at afhænge af, da de er mere stabile. For eksempel er vægt og friktion imellem hjul og underlag dårlige parametre da de nemt kan ændre sig når robotten videreudvikles eller den kører over på et andet underlag. Denne model er afhængig af at afstanden mellem hjulene og hjulenes radius kendes. Disse parametre er nemme at måle og ændrer sig ikke pludseligt, typisk heller ikke når robotten videreudvikles. Hvert hjul kan kontrolleres individuelt: Systemets tilstand er givet ved L: afstand mellem hjulene R: hjul radius V L : venstre hjul hastighed V R : Højre hjul hastighed (x, y): position φ: vinkel (relativ til en base vinkel) Tilstandsændringen for en differential drive robot er givet ved x = R (Vr + Vl) cosφ 2 y = R (Vr + Vl) sinφ 2 φ = R (Vr Vl) L Disse ligninger benyttes til omregningen fra unicycle modellen til differential drive modellen. Hvis man havde de to hjuls hastigheder kunne man også udregne robottens position og orientering. Men da vores robot ikke har hardware der kan måle hjulhastighederne er dette ikke muligt. Unicycle I unicycle modellen kontrolleres den lineære og angulære hastighed direkte. For at kunne anvende denne abstraktion skal den lineære og angulære hastighed omregnes til de faktiske kontrol-signaler robotten benytter. 9

10 Systemets tilstand er det samme som for en differential drive robot, men input parametrene er nu: v: lineær hastighed w: angulær hastighed Med de nye forsimplede input parametre bliver tilstandsændringen: x : v cosφ y : v sinφ φ : w Som sagt er denne model blot en abstraktion der gør det nemmere at designe kontrol-signaler. Omregningen fra unicycle modellen til differential drive modellen kan udregnes ved at sammenfatte ligningerne fra unicycle modellen og differential drive modellen: v = R 2 (V R + V L ) 2v R = V R + V L ω = R L (V R V L ) ωl R = V R V L Ved at løse de to ligninger med to ubekendte for V L og V R får man ligningen for de to hjulhastigheder: V L = V R = 2v ωl 2R 2v + ωl 2R Omregningen fra unicycle modellen og differential drive modellen er nu udregnet. Denne sammenhæng er udregnet således, at hastighederne er normaliseret ud fra den målestok afstanden imellem hjulene og deres radius er angivet i. Her er det dog også nødvendigt at kende hjulhastighederne. Da vi ikke har nogle sensorer der kan måle de faktiske hjulhastigheder kender vi dem ikke, og vores kontrol-signal er derfor ikke normaliseret. På grund af den implementering vi har lavet vil det dog være nemt at implementere og denne del af programmet behøver ikke blive ændret. Vores implementering af omregning fra unicycle kinematikken til differential drive kinematikken kan findes i uni_2_diff funktionen i methods.ino. PID controller Den mest udbredte algoritme til lavniveau kontrol er en proportional-integral-differential controller (PID controller) (Egerstedt, 2014). Med en PID controller er stabilitet ikke garanteret, og den er ikke tilstrækkelig til komplekse systemer, men den indgår i mange forskellige kontrol situationer, som for eksempel fartpiloter, strømningsregulering i rør, eller som i vores tilfælde at følge en linje. En af styrkerne ved en PID controller er at den er baseret på et feedback system, hvilket betyder at det er muligt at anvende den, selv når mange parameteren er ukendte, eller hvis de ændrer sig. (Egerstedt, 2014) I følgende afsnit vil baggrundsviden omkring design og implementering af en PID controller til differential drive robotter blive gennemgået. 10

11 I kurset forklarede Egerstedt at et dynamisk kontrol system kan beskrives som: At have en tilstand, som beskriver et øjebliksbillede af systemet, en dynamik som beskriver hvordan tilstanden ændrer sig over tid, og en reference, som er den tilstand som man ønsker at systemet skal have. PID controllerens opgave er at sende et kontrol signal input således at forskellen imellem robottens tilstand og reference formindskes. PID controllers er et feedback system, som er baseret på kortlægningen fra sensor måling til kontrol signal. Forskellen imellem reference og tilstand bliver estimeret på baggrund af sensor-målingerne, som er en tilnærmelse af robottens tilstand. Denne forskel kaldes error. På baggrund af denne error udregnes kontrol signalet, som benyttes til at påvirke systemet igennem de tilgængelige aktuatorer. Figur 2: Blokdiagram over en PID controller Denne figur viser feedback-systemet som ligger til baggrund for en PID controller. Ud fra et error signal, e(t), bliver en proportional-, P, integral-, I, og differentialforstærkning, D, udregnet. Disse tre signaler summeres og bruges som kontrol signal, u(t). Ud fra kontrol signalet ændrer systemets tilstand sig. Målingen af systemets nye tilstand, y(t), og den ønskede tilstand, referencen r(t), lægger til grund for et nyt error signal, og processen starter forfra. (Wikipedia, 2014) Designmålet er først og fremmest at systemet er stabilt, det vil sige at systemets error ikke forværres, for eksempel ved at systemet overkorrigerer, og derved oscillerer ud af kontrol. Stabilitet er altid det vigtigste designmål. Efter stabilitet kommer sekundære designmål, som for eksempel, optimering, robusthed og præcision. For at kunne designe et kontrolsystem på en systematisk måde benyttes modeller til at estimere hvordan systemet udvikler sig. For at modellere den virkelige verden, som er i kontinuert tid, anvendes den afledte funktion af systemets tilstand i forhold til tid. Da computere kører på diskret tid kan modellerne ikke benyttes direkte. Ved at benytte tidsintervaller kan dette dog overkommes, jo mindre tidsintervaller der benyttes jo mere præcise bliver modellerne. (Egerstedt, 2014) En nem metode er at anvende det tidsinterval der naturligt forekommer imellem hver cyklus (loop) i koden. For at opnå et succesfuldt kontrol system kan nogle generelle principper stilles op. For det første skal en lille error give et lille kontrol signal (input), input et skal ikke variere hurtigt, og kontrolsystemet kan ikke afhænge af komplet viden om verden eller robotten. Systemet bør også være resistent over for 11

12 ændringer i dynamikken, for eksempel hvis en motors effektivitet reduceres på grund af snavs, eller hvis robottens vægt ændres, ved at noget tilføjes eller tages af. En PID controller kan håndtere disse problemer. Kontrol signalet fra en PID controller bliver udregnet ved at tage summen af tre forskellige faktorer der afhænger af error signalet: en proportional, integral og differentiale faktor. I kurset forklarer Egerstedt at: Proportionalforstærkningen er proportional med størrelsen af error. Den har en middel responsrate. Integralforstærkningen er proportional med størrelsen af den akkumulerede error over tid. Det betyder at integralforstærkningen er god til at opnå præcise resultater og er robust over for store udsving over kort tid, som kan opstå på grund af signal-støj. Den har en langsom responsrate og kan medføre oscillation. Integralet af error kan estimeres ved at tage summen af error værdien for hver udregning (hver cyklus). Differentialeforstærkningen er proportional med størrelsen af den momentære ændring i error og har en hurtig responsrate. Den er sensitiv over for signal støj og kan give meget kraftige signaler. Den afledte funktion til error kan estimeres ved at trække error i sidste cyklus fra error i den nuværende cyklus. De konstanter der ganges på de tre error værdier kan udregnes matematisk, eller findes ved at prøve sig frem. Ved at forstå hvordan de forskellige konstanter påvirker robottens respons, og ved at skrive deres individuelle indflydelser ud til en konsol kan man komme med kvalificerede bud på passende værdier. Vores implementering af PID controllere kan ses i calc_angle funktionen i methods.ino. I følgende tabel er forskellige værdier for henholdsvis proportional, integral og differentiale-forstærkning demonstreret grafisk. Figur 3a: Graf over forskellige proportionalforstærkninger. Figuren er en graf med et referencesignal og den resulterende værdi for tre forskellige proportionalitetsforstærkninger. (Wikipedia, 2014) 12

13 Figur 3b: Graf over forskellige integralforstærkninger. Figuren er en graf med et referencesignal og den resulterende værdi for tre forskellige integralforstærkninger. (Wikipedia, 2014) Figur 3c: Graf over forskellige differentialeforstærkning. Figuren er en graf med et referencesignal og den resulterende værdi for tre forskellige differentialforstærkninger. (Wikipedia, 2014) Designvalg I dette afsnit beskrives de beslutninger vi har truffet i forhold til valg af hardware og software samt processtyring. Inden for hardware skal materialet, mekanikken (sensorer, aktuatorer osv.) og processoren vælges, og inden for software skal man beslutte hvilket programmeringssprog og software arkitektur man ønsker at benytte. I forhold til processtyring skal man beslutte hvad man vil arbejde hen imod samt hvordan man vil opnå det. I det følgende vil vores overvejelser for processtyring samt valg af hardware og software blive gennemgået, men generelt kan det siges, at der i så vid udstrækning som muligt arbejdes for at viden, tilegnet gennem dette projekt, er generelt anvendeligt til andre projekter, hvor hardware og software udvikles sammen. Arbejdstilrettelæggelse Denne opgave tager udgangspunkt i udviklingen af en robot-platform og dertilhørende software. Arbejdet er blevet tilrettelagt ud fra funktionelle specifikationer. Vi valgte at arbejde iterativt, hvor projektet udvikles i en række faser, og hvor hver fase påvirker tilrettelæggelsen af den næste. Da det er første gang vi arbejder med robotter, ville det ikke give mening at bruge energi på at lave en detaljeret plan for hele processen, da vi med stor sandsynlighed ville blive nødt til at afvige fra denne plan alligevel. 13

14 Indledningsvis besluttede vi at konstruere en tohjulet balance-robot. Vi definerede nogle funktionaliteter som vi ønskede at konstruere. Disse funktionaliteter var specificeret således at de både kunne op- og ned-skaleres, alt efter hvordan projektet forløb. At få robotten til at holde balancen er centralt for balance-robotten, og var derfor den første funktionalitet vi ønskede at udvikle. Det viste sig at kræve for meget at få den til at holde balancen i forhold til vores kompetencer. Vi valgte derfor at sænke vores ambitionsniveau og bygge en simplere differential drive robot i stedet. Til denne platform ønskede vi at konstruere en robot der kan følge en linje, registrere et objekt på linjen, køre rundt om objektet og finde linjen igen på den anden side. Dette overordnede mål delte vi op i to delmål som vi startede med: at følge en linje og registrere objekter. Hardware overvejelser Materiale Til robottens karosseri har vi brugt 4mm plader af forarbejdet træ af typen high density fiber, som er skåret ud med laserskærer. Vi valgte dette materiale da det er tilgængeligt og tit benyttes i FabLab RUC. Materialet er stærkt, billigt og forholdsvis simpelt at arbejde med og vores indledende prototyper viste at det var tilstrækkeligt til vores behov. Ved hjælp af vektorgrafik-programmet CorelDRAW 3 kan skræddersyede designs skæres på en laserskærer. CorelDRAW gør det nemt at videreudvikle på tidligere iterationer og bruge materiale fra andre eller tidligere projekter. Vores første prototype (som vi sidenhen videreudviklede på) tog udgangspunkt i en robot platform som vi fik af Nicolas Møbius, medarbejder i FabLab RUC (original fil findes i bilag 5). Møbius robot er udviklet til en robot workshop som han har holdt og er en differential drive robot med en robot-arm, som kan følge en linje. Til at holde komponenterne på vores robot sammen blev der benyttet lim-pistol og skruer. De to drivende hjul er belagt med et lag sandpapir for at øge friktionen med underlaget da hjulene på vores tidlige prototyper nemt skred. Figur 4a: Billede af karosseri i vektorgrafik Robottens komponenter blev udviklet i vektor-grafikprogrammet CorelDRAW. Figur 4b: Billede af det udskårne karosseri Ud fra en vektorgrafik fil er robottens karosseri skåret med en laserskærer. Figur 4c: Billede af det samlede karosseri Karosseriet er her i pap og uden elektroniske komponenter

15 Elektronik Til robotten har vi arbejdet med tre forskellige sensor-typer: lysfølsomme resistorer, infrarøde afstandsmålere og ultralyds afstandsmålere, og to forskellige typer aktuatorer: continuous drive motorer, motorer hvor hastighed og retning kan kontrolleres, og servoer, som kan rotere 180 grader og hvis position er kendt. Vi har valgt at arbejde med disse typer elektroniske komponenter fordi de indgår i mange slags robotter og installationer. For eksempel kan man konstruere en robot arm ved hjælp af servoer, infrarøde sensorer kan bruges til at skabe 3D kort af verden og continuous drive motorerne til alle selvkørende robotter. Derudover er alle disse dele nemt tilgængelige I hobbyforretninger på internettet og forholdsvist billige. For eksempel kostede vores robot samlet set omkring 700 kr, en prisoversigt ses i Pris, side 19. Da vi har arbejdet iterativt har vi samlet, skilt ad og ændret robotten mange gange. Vi har derfor forbundet størstedelen af de elektroniske komponenter igennem et breadboard. Breadboards bruges tit til prototyper da de gør det nemt og hurtigt at ændre forbindelser uden at behøve at lodde. Micro Controller Til at styre robotten har vi valgt at bruge en Arduino mikroprocessor fordi det er en alsidig, open-source platform som kan bruges til at styre motorer og modtage data fra sensorer ved hjælp af digitale såvel som analoge signaler. Arduino er en populær platform som benyttes i mange projekter til at løse et bredt spektrum af opgaver. Dette skyldes blandt andet at både udviklingsmiljøet og driverne fungerer på både Windows, Mac og Linux, der er mange offentligt tilgængelige libraries og læringsmateriale, hardwaren såvel som softwaren er open source og sidst men ikke mindst er det en billig platform i forhold til meget af konkurrencen (Torrone, 2011). Der findes flere forskellige Arduino modeller. Arduinos standard- og referencemodel, Arduino UNO, er den mest udbredte, og den som vi benytter i dette projekt. UNO hverken fylder eller vejer særlig meget og nem at montere. Figur 5: Billede af en Arduino Uno 15

16 En Arduino mikroprocessor er en alsidig, open-source platform som kan bruges til at styre motorer og modtage signaler fra sensorer ved hjælp af digitale såvel som analoge signaler. (Arduino.cc, 2014) En svaghed ved Arduino-hardwaren er at den er relativt gammel, og derfor har mindre hukommelse og processorkraft end nogle af de andre mikroprocessorer på markedet. For eksempel har Arduino UNO kun 32 KB hukommelse (Arduino.cc, 2014). Der findes mange standard libraries til Arduino, og det er nemt at lave flere, hvilket Arduino-fælleskabet har gjort. Dette gør det nemt og hurtigt at løse mange problemstillinger. På grund af den store mængde software som er tilgængelig er Arduino stadig meget populær, og et godt reference punkt. (Torrone, 2011) Arduino fungerer godt til mindre projekter, som vores robot, som skal bevæge sig rundt med et par motorer, baseret på input fra nogle sensorer og nogle beregningsmæssigt lette beregninger. Software overvejelser Arduino mikroprocessorer programmeres typisk med Arduinos IDE (integrated development environment). Denne software er gratis og open source (Arduino.cc, 2014). Arduino IDE-platformen kommer med en del kode der kan bruges til at læse sensordata og styre motorer. Derudover er der megen kode som er tilgængelig online. Noget af denne kode er skrevet af firmaer, som for eksempel producenten eller distributøren for et komponent, eller en tredjepart, som for eksempel privatpersoner, som har offentliggjort deres kode. Størstedelen af koden i dette projekt har vi selv skrevet, men det bygger på den kode der kommer med Arduino. Vi har også benyttet noget kode som vi har fundet på internettet, for eksempel er koden til ultralydssensoren tilpasset fra kode som vi fandt på sælgerens hjemmeside. (crcibernetica.com, 2014) Vores endelige kode er baseret på principperne for objekt-orienteret kodning og er blevet opdelt i mindre dele, der gør det nemmere at overskue, fejlfinde og genbruge koden. Arduino IDEen er understøttet af Windows, Mac og Linux og kommer med et library kaldet Wiring 4, som gør det nemmere at sende og modtage fra Arduino boardet. Programmeringssproget Arduino er baseret på C/C++. Selve det grafiske interface er baseret på Processing 5 IDEen. Selvom Processing er implementeret i Java er Arduino IDEen tilrettelagt således at de minder meget om hinanden. IDEen er designet med kunstnere og hobbyister i tankerne, og er derfor designet så den er nem at bruge (Torrone, 2011). For eksempel består et normalt Arduino program af to funktioner, void setup () og void loop (), som bliver kørt henholdsvis én og uendelig mange gange, i stedet for at brugeren selv skal skrive en main () funktion med et loop. Arduino programmer kan fungere selvstendigt, og være begrænset til selve Arduino boardet og dets sensorer og motorer, eller det kan forbindes med en computer eller radio sender og derved sende data frem og tilbage imellem de to systemer (Arduino.cc, Software, 2014). Det er dog ikke muligt at køre et Arduino program uden et Arduino board. I denne opgave ligger vores fokus på at lære robot-programmering at kende. Vores fokus er på at forstå hvordan robotter programmeres, og interaktionen imellem hardware og software. For at få denne forståelse har vi fravalgt robot-byggesæt som Lego Mindstorms som både er dyre (2500 kr. og op) (Lego 4 5 https://www.processing.org/ 16

17 Mindstorms, 2014) og fordi der er mange erfaringer at gøre sig ved at lave det selv. Når det er sagt, har vi ikke nødvendigvis tænkt os at skrive al koden selv. Så længe vi kan forstå koden, og hvordan den fungerer. Erfaringer Processtyring Da vi startede dette projekt ønskede vi at bygge en tohjulet balance robot. Til dette konstruerede vi to protoyper. Den anden prototype bestod af en ArduIMU V3 (tredjeparts Arduino-board med indbygget gyroskop) og to motorer som vist i følgende figur: Figur 6a: Balancerobotten set fra en vinkel Billede af den balancerobot vi konstruerede i starten af projektet, her set fra en vinkel der viser batteripakken. Figur 6b: Balancerobotten set oppefra Billede af den balancerobot vi konstruerede i starten af projektet, her ses ArduIMUen og tænd sluk kontakten. Vi testede denne hardware platform med et stykke software som var blevet udviklet af Nicolai Møbius, ansat i FabLab RUC, til en anden balance robot. Denne test viste at hardware platformen var tilstrækkelig til at få robotten til at holde balancen. 6 Da vi begyndte at arbejde med softwaren viste det sig dog at det var meget besværligt at modtage sensor data fra ArduIMU en og vi ville være nødt til at benytte store mængder kode som vi ikke ville forstå. Da projektet i høj grad handlede om at lære robot-programmering at kende, var det utilfredsstillende at være afhængig af så meget kode som vi ikke forstod. Derudover var balance-aspektet sværere end forventet. Vi ville være nødt til at bruge megen tid på at finjustere balance-aspektet så koden kunne reagere hurtigt nok til at holde balancen. Vi vurderede at dette ville tage for lang tid i forhold til hvor lidt generel indsigt det ville give os i robot programmering. Vi valgte derfor at konstruere en mere traditionel differential drive robot i stedet. En differential drive robot er ikke nær så krævende da den ikke kræver at koden reagerer inden for et bestem tidsrum. Denne platform gav os også mulighed for at arbejde med flere forskellige sensorer, og ikke blot et gyroskop. Vi kunne anvende flere af de erfaringer vi havde gjort os med balancerobotten, da vi valgte at genbruge motorer, materiale, viden om PID controllere og Arduino platformen (selvom vi skiftede board, programmeres de på samme måde). 6 En demonstration kan ses på: 17

18 At arbejde iterativt var det rette valg for os, da det betød at vi opdagede problemer tidligt i forløbet og kunne justere vores ambitionsniveau derefter. Hardware Robottens karosseri er skåret med en laserskærer i 4mm high density fiber-plader, måler 25x16,5x15 cm og vejer 760 g. Robotten styres af en Arduino Uno mikroprocessor og robot basen er udstyret med to aktive hjul som kan kontrolleres individuelt, samt et passivt hjul der kan rotere frit. Robotten er udstyret med tre infrarøde afstandsmålere, som peger ligeud og 45 til hver side, en ultralyds afstandsmåler som er placeret på en roterbar plade, så den kan foretage målinger i 180 grader. På robottens underside sidder to lysresistorer og en LED, som benyttes til at måle hvor meget lys der bliver reflekteret af underlaget. Ud over disse sensorer har vi monteret en LED til fejlfinding, som blinker så længe Arduinoen kører. Den færdige robot består af to etager som er forbundet med bærende elementer. FIGUR 7: Billede af vores robot På billedet ses vores endelige robot forfra. På den nederste plade sidder de to lysfølsomme resistorer, som peger nedad og gør det muligt for robotten følge en sort linje på gulvet. Bag lysresistorerne sidder motorerne til de to hjul og bag motorerne er Arduino-boardet skruet fast. Bagerst er et roterende hjul. På undersiden af denne plade sidder en batteripakke med fire AA-batterier. Foran lysresistorerne sidder de tre infrarøde sensorer. Sensorerne peger ligeud, og 45 til hver side. De infrarøde sensorer som vi har brugt har en effektiv afstand fra 20 til 150 cm (Datasheet for de infrarøde sensorer: Bilag 1b). For at kunne måle afstanden til objekter som er tættere på end 20 cm, eller som ikke befinder sig lige foran eller 45 grader til en af siderne har vi monteret en ultralydssensor (som kan måle helt ned til 1 cm (Datasheet for ultralydssensoren: Bilag 1c)) på en roterende plade. Pladen er monteret 18

19 således at ultralyds-sensoren måler ud fra robottens omdrejningspunkt; midt imellem de to hjul og roteres af en servo som kan roterer 180 grader. Bagved ultralyds-sensoren sidder breadboardet, som gør det nemt at overskue og ændre forbindelsen mellem Arduino-boardet og dets eksterne komponenter. Bagerst på den øverste plade sidder et 9-volt batteri. Pris En af grundende til at robotter er blevet mere udbredte er at prisen på komponenter er faldet. I følgende har vi udregnet en ca. pris for vores robot. Smådele som HDF-plade, ledninger og skruer er ikke medregnet. Produkt Pris pr. enhed Antal Pris total Pris fundet på $US Arduino UNO Revision 3. 24, ,95 sparkfun.com Infrared sensor SHARP 2Y0A02 F 33 14, ,85 sparkfun.com Ultrasonic Range Finder SDM-IO crcibernetica.com SG-5010 Tower Pro (Servo) Adafruit.com Breadboard 4,95 1 4,95 sparkfun.com Total pris $125,75 Total pris DKK ~700 DKK Til sammenligning kan det siges at for 20 år siden, i 1994, ville en Intel 486SX2 mikroprocessor der er lige så kraftig som den på et Arduino board alene kostede 249$ (Poulson, 2014), hvilket er dobbelt så meget som vores robot. Software Den hardware platform som vi har udviklet har et stort potentiale. Vi har fokuseret på at få robotten til at kunne følge en linje og registrere afstanden til objekter foran den. I følgende afsnit vil dele af koden og udviklingsprocessen blive fremhævet for at illustrere implementering, struktur og erfaringer som vi har gjort os i løbet af projektet. Se [bilag 4] for komplet API og oversigt over hvad de forskellige funktioner og klasser indeholder. Programmets overordnede struktur Softwaredelen af projektet er opbygget efter principperne for objektorienteret programmering og det endelige produkt består af syv filer; en fil til hoved-programmet, en fil til funktioner og fem klasser, en for hver type motor og sensor. RobProg.ino-filen er hoved-programmet, og det program der kalder de øvrige funktioner og hvor de forskellige objekter bliver skabt. Programmet starter med at importere de fem klasser vi har skrevet samt det inkluderede servo bibliotek. Servo biblioteket er et bibliotek der kommer med Arduino IDEen og som benyttes ofte til at kontrollere motorer ved hjælp af digitale signaler. 19

20 Derefter bliver de variabler som ændres ofte initialiseret, det defineres hvilke pins der er forbundet til hvilke komponenter, variabler til PID controlleren defineres, og andre hardware specifikke variabler. Derefter anvendes disse variabler og variabler med standard værdier (værdier man typisk ikke har behov for at ændre) til at initialisere resten af variablerne, blandt andet de objekter der bruges til at holde styr på sensorer og motorer. Kernedelen af programmet finder sted i void loop (). Det er her sensormålingerne bliver taget, og kontrol-signalerne bliver udregnet og sendt til motorerne. De fem klasser vi har skrevet ligger i.h filer, såkaldte header filer. Vi har valgt at skrive hver af klasserne i en header fil, frem for at separere funktionerne til en.cpp fil (C++). Der er ikke nogen praktisk forskel imellem at have sine klasser i en header fil, eller have en header og en C++ fil, ud over hvordan filerne vises. Da vores klasser er relativt korte, mente vi at det var mest overskueligt at holde dem samlet i én fil. Constructors i Arduino Da vi skrev klasserne til sensorerne og motorerne, stødte vi på nogle problemer når vi ønskede at initialisere vores objekter. Til at skrive klasserne brugte vi en guide, Writing a Library for Arduino (Arduino.cc, LibraryTutorial, 2014). I denne guide gennemgås hvordan et bibliotek skrives ved hjælp af et eksempel på et bibliotek. I biblioteket er der lavet to funktioner der kan få en LED til at blinke, som kan bruges til at morse. I denne guide vises et kort eksempel: Figur 8: Eksempel fra guiden Writing a Library for Arduino Eksemplet viser en mulig implementering af det library som blev skrevet i guiden Writing a Library for Arduino. I dette eksempel initieres et Morse objekt med navnet morse og skriver SOS med morsekode. Selvom vi ikke skrev biblioteker søgte vi inspiration i denne guide, da det at skrive klasser minder meget om. Eksemplet viser en mulig implementering af det library som blev skrevet i guiden Writing a Library for Arduino. I dette eksempel initieres et Morse objekt med navnet morse og skriver SOS med morsekode. På linje 3, hvor morse objektet initialiseres gives tallet 13 som argument. Denne værdi benyttes i constructoren og referer hvilken pin LEDen der skal blinke sidder på. Vi testede koden og tallet 13 blev benyttet i constructoren, som man ville forvente. Efter at have set dette eksempel skrev vi vores egne constructors ud fra samme princip. Vores kode fungerede ikke som forventet. Efter at have undersøgt problemet på internettet fandt vi en diskussion på Arduino.cc s forum der diskuterede dette problem. Det viste sig at i Arduino kan man ikke kontrollerer hvornår constructoren bliver kaldt, hvilket betyder at den ikke kan tage imod argumenter fra andre 20

21 klasser. For at omgå dette problem bruger man i Arduino ofte en begin funktion, som overtager constructorens rolle, og som initialiserer variablerne i runtime. Der skal stadig være en constructor, men i vores tilfælde er de alle tomme. Test og verificering Når man skriver kode er det vigtigt at sikre at koden gør som forventet. Sådanne test afslører ofte problemer med koden, som så skal fejlfindes. Selvom målet med fejlfindingen for projekter hvor hardware og software udvikles sammen er det samme som for rene software projekter er det vores erfaring at processen bliver mere kompliceret af interaktionen mellem software og hardware. I løbet af dette projekt gjorde vi os flere erfaringer omkring disse forskelle som vil blive gennemgået i følgende afsnit. Da vi har skrevet vores kode objekt orienteret, er koden naturligt delt op i mindre dele, som kan testes hver for sig. Denne praksis fulgte vi også under test af hardwaren. Til at teste de analoge signaler fra lysresistorerne og de infrarøde sensorer brugte vi et program, kaldet Guino, til at visualisere sensor målingerne. Programmet er udviklet af Mads Hobye, ansat i FabLab RUC, og offentliggjort på instructables.com (Hobye, 2014) Figur 9: Billede af Guino interfacen Billedet viser Guino s interface, med knapper til venstre, to sliders i midten of en sinuskurve til højre. Sinuskurven er sensor-input. (Hobye, 2014) Vi brugte programmet til at sikre at signalerne, som modtages fra sensorerne, opfører sig som forventet, for eksempel at signalstyrken fra de infrarøde sensorer afhænger af afstanden til nærmeste objekt. Vi brugte også Guino programmet til at visualisere signalet, for at se effekten af sensorstøj. Signal behandling Guino-programmet viste at særligt de infrarøde sensorer havde meget signal støj, så meget at det var tydeligt at vi blev nødt til at lave en form for signal behandling. Signal behandling er et stort område i sig selv, og vil ikke blive behandlet i dybden i denne opgave. Da signalstøjen var forholdsvis jævn vurderede vi, at det at tage gennemsnittet af de sidste X antal målinger, ville være tilstrækkeligt til at gøre signalet brugbart. Indledningsvis skrev vi en sensor signal klasse. Klassen indeholdt et array af sensormålinger, hvor den ældste sensor måling blev overskrevet når der blev tilføjet en ny måling. Vi havde en funktion der kunne udregne og returnere gennemsnittet af værdierne. På denne måde havde vi et gennemsnit som løbende blev opdateret. Denne løsning fungerede som forventet og udregnede korrekt et gennemsnit. Da vi talte 21

22 med en ansat i FabLab RUC påpegede han at der findes en anden, og mere elegant løsning til at udregne et løbende gennemsnit: Figur 10: Kode udsnit fra methods.ino funktion til udregning af løbende gennemsnit running_average funktionen udregner et løbende gennemsnit ved at reducere det gamle gennemsnit med en procentdel, og vægte den nye måling derefter. Jo større multiplier værdien er, jo mindre vægt har hver enkelt måling. Ved at reducere det gamle gennemsnit med en procentdel, og vægte den nye måling derefter kan man udregne et løbende gennemsnit, uden at behøve at gemme værdierne individuelt. Denne metode er mere effektiv og nemmere at overskue, end vores oprindelige løsning, selvom resultaterne er ens. Selvom vi ikke kunne se nogen forskel i ydeevne imellem de to metoder er det altid en god ide at skrive koden så effektiv og simpel som muligt, særligt når man har så begrænset processor kraft og hukommelse som man har på en Arduino, og når systemet afhænger af at sensormålinger og behandling bliver udført i real time, som man er med mobile robotter. Hardware eller software løsning En komplikation der kan dukke op når man udvikler hardware og software sammen, er at finde ud af hvorvidt et problem er et hardware eller et software problem. Da vi havde verificeret at lysresistorerne og PID controlleren overordnet fungerede som de skulle, var vi nødt til at kalibrere PID-forstærkningerne, så robotten faktisk kunne følge en linje. På trods af megen arbejde med kalibrering, og grundige test af både lys resistorerne og PID controlleren forblev robottens præstation utilfredsstillende. Tilsyneladende vekslede robotten imellem at reagere for svagt og for kraftigt til linjens hældning, typiske problemer ved forkerte PID forstærkninger. Efter lang tid opdagede vi at robottens aktive hjul ofte lavede små hjulspind, ikke noget man ville forvente som resultat af forkerte PID forstærkninger. Ved nærmere inspektion lagde vi mærke til, at det frit roterende hjul nogen gange stødte imod kanten af stregen, som var lavet af tape, med siden til, i stedet for lige på. Dette medførte at robotten til tider blev bremset, i stedet for blot at køre efter PID controllerens kontrol signaler. Problemet skyldes at integrale-gainet voksede uhensigtsmæssigt mens robotten stod stille. Ved at forskyde det frit roterende hjul, så det ikke længere var placeret lige under omdrejningspunktet, kunne vi eliminere problemet, og vi fik nu endelig mulighed for at kalibrere PID forstærkningerne. I samspillet mellem hardware og software kan det være svært at lokalisere årsagen til et problem. Små fejl kan have store konsekvenser, og når man introducerer et hardware-komponent, er der flere komponenter og flere interaktioner hvor sådanne fejl kan opstå, og det er ikke altid tydeligt hvad et problem skyldes. 22

23 Fejlfinding I rene software projekter ændrer et stykke kodes funktionalitet sig ikke med mindre man ændrer i koden, eller i noget kode som den afhænger af. Det vil sige at, når man har verificeret at et stykke kode virker, kan man med en vis sikkerhed regne med at det vil fortsætte med at virke, hvis det ikke bliver ændret i, og derfor ikke behøver verificeres igen. I starten af processen arbejdede vi ud fra denne antagelse. Vi havde implementeret og verificeret de afstandsmålinger vi fik fra de infrarøde sensorer og skulle nu anvende disse målinger til at dreje ultralydssensoren. Systemet opførte sig ikke helt som forventet og vi kunne ikke finde noget sted i den nye kode der kunne forklare denne opførsel. Efter nogen tid besluttede vi at teste de infrarøde sensorer, som vi egentlig var overbevist virkede da vi havde verificeret dem. Det viste sig at en af de infrarøde sensorers lodning på printpladen var gået op, således at der til tider var løs forbindelse, hvilket resulterede i et fejlsignal. Dette resulterede i en vigtig erfaring som påvirkede vores videre arbejde: Hardware kan ændre sig uden man bevidst har gjort noget ved det. Når hardware, tilsyneladende spontant, kan gå i stykker eller ændre funktionalitet er man nødt til at have en endnu mere stringent test- og fejlfindings-procedure, hvor selv elementer der virkede for nylig kan være årsag til komplikationer. Segmenteret vs samlet test Vi havde struktureret vores arbejde ud fra objekt-orienterede principper om at opdele projektet i mindre dele, som er nemmere at overskue og udvikle, som så samles til sidst. Da vi testede afstandsmålingerne og linjefølgningen sammen, opførte robotten sig igen på uforudset vis. Robotten havde store vanskeligheder med at følge linjen og kørte mere ujævnt end før. Vi mistænkte at den samlede byrde på mikroprocessoren var blevet for stort, da det lignede at robotten ikke kunne følge med de signaler som den modtog. For at teste denne hypotese installerede vi en LED som på skift tændte og slukkede hver gang en cyklus i loop funktionen blev gennemført. Det viste sig at der ikke var markant forskel imellem tiden hver cyklus tog, men at nogle gange når alle sensorer og motorer var aktive på én gang var strømforbruget for højt, og Arduino-boardet gik ud. Selvom både afstandsmålingerne og linjefølgningsdelene fungerede hver for sig var det ikke muligt at køre dem på samme tid. Vi havde valgt at anvende to strømforsyninger for at undgå dette problem, men det viste sig, ikke at være tilstrækkeligt. Dette problem kunne modvirkes, enten i softwaren, ved at begrænse signalerne man sender til motorerne, så de ikke pludseligt trækker megen strøm, eller ved at organisere strømforsyningerne anderledes, så strømforsyningen aldrig blev overbelastet. Odometri Odometri er at bruge data fra bevægelses-sensorer til at finde ændringer i position over tid. I den endelige version af robotten blev odometri-komponentet valgt fra. Dette skyldes både tidsbegrænsninger og selve Arduino-boardet. De sensorer som vi havde tænkt os at benytte til at måle hjulenes rotation kræver to analoge pins pr. hjul. Arduino-boardet har 6 analoge pins, hvor af 5 af dem allerede er i brug til de øvrige sensorer. Vi valgte i stedet at fokusere på afstandsbedømmelse og mobilitet. Som konsekvens af dette fravalg er der ikke nogen god måde at finde hjulenes hastighed. Der er derfor ikke nogen måde at udregne en error værdi som kan bruges til at justere hjulenes hastighed, eller nogen måde at estimerer robottens position eller orientering. Odometrien var en del af den oprindelige plan, og størstedelen af koden til den er allerede skrevet. 23

24 Fravalget af odometri medførte flere forskellige problematikker. Den mekanisk modstand i vores to motorer er forskellig. Det betyder, at selvom det samme signal sendes til begge motorer, er det ikke muligt at få robotten til at køre ligeud (bortset fra at lade den følge en lige linje på gulvet). Hvis odometrien havde været implementeret, kunne man bruge den til at kalibrere motorerne ud fra hjulenes omdrejningshastighed. En anden konsekvens af den manglende odometri er, at vores kontrol-signaler bliver arbitrære. I følgende figur, figur 11 ses koden der omregner unicycle hastighederne, den lineære og angulære hastighed, til hjulhastighederne: Figur 11: Kode-udklip uni_2_diff-funktionen fra methods.ino filen Denne funktion benyttes til at omregne unicycle hastigheder, den lineære og angulære hastighed, til hjulhastigheder, som sendes som kontrol signal til hjulene. Udregningerne i denne kode afhænger af hjulenes radius (R) og afstanden mellem hjulene (L). Omregningen fra unicycle-hastighederne til hjulhastighederne relaterer sig til robottens konstruktion. Men da kontrol-signalerne, som sendes til hjulene, er baseret på motorernes elektromekaniske modstand, og ikke er i meter per sekund (eller noget tilsvarende) er unicycle-hastighederne nødt til at være arbitrære, for at robotten opfører sig korrekt. I følgende afsnit vil vi beskrive dokumentationen for vores arbejde og software. Dokumentation Der er rig mulighed for at genbruge eller arbejde videre på det arbejde vi har udført i forbindelse med dette projekt. Det materiale vi har udviklet er frigivet til det offentlige rum og kan frit genanvendes såfremt de rette ophavsmænd akkrediteres. Når projektet er gennemført vil hardwaren og software overgå til FabLab RUC som tak for hjælpen. Karosseri Tegningerne som blev brugt til at skære robottens karosseri er inkluderet som henholdsvis bilag 2a og 2b, både i CorelDRAWs fil format (.cdr) og som en HPGL Plotter fil (.plt). At kunne drage nytte af disse filer kræver et program der kan anvende mindst en af disse fil formater, og en laserskærer. Begge dele er tilgængelige i FabLab RUC. Elektronik De elektriske komponenter vi har anvendt og deres konfiguration er blevet gennemgået tidligere i rapporten. De tekniske specifikationer kan findes i bilag 1a-d. 24

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

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

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

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1 Fra Computer til Virkelighed TPE-kursus Elektroniske Systemer P1 Fra Computer til Virkelighed En kort introduktion til kurset Systems Engineering Projektfaser Opsamling og opgave Om kurset Mål: at I lærer

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Arduinostyret klimaanlæg Afsluttende projekt programmering C Arduinostyret klimaanlæg Afsluttende projekt programmering C Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleverings-dato: 02-03-2012 Afleverings-dato: 11-05-2012 Programmeringvejleder: Karl G. Bjarnason

Læs mere

Fremtidens kassesystem

Fremtidens kassesystem Fremtidens kassesystem Gør hverdagen nemmere, og giver et smil på læben. Fremtidens kassesystem Dette projekt er lavet af Emil Toft, Thomas Gandrup Sørensen & Omran El-Habet (9. klasse, Antvorskovskole).

Læs mere

Maskiner og robotter til hjælp i hverdagen

Maskiner og robotter til hjælp i hverdagen Elektronik er en videnskab og et fagområde, der beskæftiger sig med elektriske kredsløb og komponenter. I daglig tale bruger vi også udtrykket elektronik om apparater, der udnytter elektroniske kredsløb,

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

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011 Spil Rapport Spil lavet i GameMaker Kevin, Mads og Thor 03-02-2011 Indholdsfortegnelse Indledning... 2 HCI... 2 Planlægning / Elementær systemudvikling... 2 Kravspecifikationer... 4 Spil beskrivelse...

Læs mere

CIVILINGENIØR, CAND. POLYT. I ROBOTTEKNOLOGI Master of Science in Robot System Engineering

CIVILINGENIØR, CAND. POLYT. I ROBOTTEKNOLOGI Master of Science in Robot System Engineering Kapitel 9 Den uddannelsesspecifikke del af studieordningen for uddannelsen til: CIVILINGENIØR, CAND. POLYT. I ROBOTTEKNOLOGI Master of Science in Robot System Engineering Studiestart september 2009, Version

Læs mere

Kursuskatalog 2012 TwinCAT Basic og Extended

Kursuskatalog 2012 TwinCAT Basic og Extended Kursuskatalog 2012 TwinCAT Basic og Extended Basic Modul 1 Software Kursus K120101 K120102 K120103 K120104 K120105 K120106 Dato 31.1-1.2.12 6.-7.3.12 8.-9.5.12 21.-22.8.12 2.-3.10.12 20.-21.11.12 Modul

Læs mere

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4 Maskine Udlejning 15. oktober 2010 Jacob Weng, Jeppe Boese og Mads Anthony Roskilde Tekniske Gymnasium Udlejningsvirksomhed 3.4 Indholdsfortegnelse Problemformulering:... 2 Planlægning:... 2 Analyse af

Læs mere

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

Mathias Turac 01-12-2008

Mathias Turac 01-12-2008 ROSKILDE TEKNISKE GYMNASIUM Eksponentiel Tværfagligt tema Matematik og informationsteknologi Mathias Turac 01-12-2008 Indhold 1.Opgaveanalyse... 3 1.1.indledning... 3 1.2.De konkrete krav til opgaven...

Læs mere

Idekatalog. Så vidt jeg husker fremgik det ret tydeligt hvad der skulle være i ansøgningen. Der var bare virkelig mange informationer der skulle med.

Idekatalog. Så vidt jeg husker fremgik det ret tydeligt hvad der skulle være i ansøgningen. Der var bare virkelig mange informationer der skulle med. Ansøgning Yderligere bemærkninger til ansøgningen Det var fedt at rammerne var så åbne, som jeg så det var der kun to krav til projektet: Det skulle være open source og det skulle have det offentliges

Læs mere

Så har jeg boret huller i aluminiumsprofilen, og boret den fast i den nederste MDF-plade.

Så har jeg boret huller i aluminiumsprofilen, og boret den fast i den nederste MDF-plade. Jeg har altid bøjet en del i akryl, og altid brugt en varmluftblæser til formålet. Det var hvad jeg havde til rådighed og fungerede fint når man først har fået lidt erfaring med det. Man kan så købe en

Læs mere

Mini SRP. Afkøling. Klasse 2.4. Navn: Jacob Pihlkjær Hjortshøj, Jonatan Geysner Hvidberg og Kevin Høst Husted

Mini SRP. Afkøling. Klasse 2.4. Navn: Jacob Pihlkjær Hjortshøj, Jonatan Geysner Hvidberg og Kevin Høst Husted Mini SRP Afkøling Klasse 2.4 Navn: Jacob Pihlkjær Lærere: Jørn Christian Bendtsen og Karl G Bjarnason Roskilde Tekniske Gymnasium SO Matematik A og Informations teknologi B Dato 31/3/2014 Forord Under

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

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets. Dagens program Har alle fået? Har nogen betalt for meget? Hav jeres koder klar Domæner change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog Hvad er widgets Hvad er

Læs mere

Studieretningsprojekter i machine learning

Studieretningsprojekter i machine learning i machine learning 1 Introduktion Machine learning (ml) er et område indenfor kunstig intelligens, der beskæftiger sig med at konstruere programmer, der kan kan lære fra data. Tanken er at give en computer

Læs mere

Læringsprogram. Talkonvertering. Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen. Klasse 2.4. 1.

Læringsprogram. Talkonvertering. Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen. Klasse 2.4. 1. Læringsprogram Talkonvertering Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen Klasse 2.4 1. marts 2011 Fag: Vejleder: Skole: Informationsteknologi B Karl G. Bjarnason Roskilde

Læs mere

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Side 1 af 8 Indholdsfortegnelse 1 PAKKENS INDHOLD... 3 2 INSTALLATION... 4 2.1 PLACERING... 4 2.2 FORBRUG... 4 2.3 12V TILSLUTNING... 4

Læs mere

Brugervejledning Bearbejdet af ScanDis A/S. ClearNote +

Brugervejledning Bearbejdet af ScanDis A/S. ClearNote + Brugervejledning Bearbejdet af ScanDis A/S + + Vejledning til + Brugervejledning version 7.2.1 Copyright 2006 by Optelec, The Netherlands og ScanDis A/S All rights reserved. Alle rettigheder forbeholdes.

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

Kapitel 2 Tal og variable

Kapitel 2 Tal og variable Tal og variable Uden tal ingen matematik - matematik handler om tal og anvendelse af tal. Matematik beskæftiger sig ikke udelukkende med konkrete problemer fra andre fag, og de konkrete tal fra andre fagområder

Læs mere

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Side 1 af 8 Indholdsfortegnelse 1 PAKKENS INDHOLD... 3 2 INSTALLATION... 4 2.1 PLACERING... 4 2.2 FORBRUG... 4 2.3 12V TILSLUTNING... 4

Læs mere

Optimering af fraværsregistrering

Optimering af fraværsregistrering Journal Optimering af fraværsregistrering Eksamensprojekt i Programmering C, klasse 3.4, 2011 AFLEVERET 09-05-2014 Indhold Abstract... Fejl! Bogmærke er ikke defineret. Problemformulering... 2 Produktet...

Læs mere

Byens Rum. The Meaningful City of Tomorrow

Byens Rum. The Meaningful City of Tomorrow Byens Rum The Meaningful City of Tomorrow The vision of the future is always changing, dependent of the technology and knowledge on all fields: If you design the best building you know to design, that's

Læs mere

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau Roskilde Tekniske Gymnasium Eksamensprojekt Programmering C niveau Andreas Sode 09-05-2014 Indhold Eksamensprojekt Programmering C niveau... 2 Forord... 2 Indledning... 2 Problemformulering... 2 Krav til

Læs mere

Computerspil rapport. Kommunikation og IT. HTX Roskilde klasse 1.4. Casper, Mathias Nakayama, Anders, Lasse og Mads BC. Lærer - Karl Bjarnason

Computerspil rapport. Kommunikation og IT. HTX Roskilde klasse 1.4. Casper, Mathias Nakayama, Anders, Lasse og Mads BC. Lærer - Karl Bjarnason Computerspil rapport Kommunikation og IT HTX Roskilde klasse 1.4 Casper, Mathias Nakayama, Anders, Lasse og Mads BC Lærer - Karl Bjarnason Indledning Vi har lavet et computerspil i Python som er et quiz-spil

Læs mere

Benyt evt. programmeringsguiden Kør frem vælg sekunder i stedet for rotationer.

Benyt evt. programmeringsguiden Kør frem vælg sekunder i stedet for rotationer. Lego Mindstorms Education NXT nat1 nat april 2014 Dette dokument ligger på adressen: http://www.frborg-gymhf.dk/eh/oev/legonxtnat1nat2014.pdf Følgende er en introduction til Lego Mindstorms NXT. Her er

Læs mere

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Hvorfor & Hvordan lære Elever At programmere Arduinoer Hvorfor & Hvordan lære Elever At programmere Arduinoer Jens Dalsgaard Nielsen JDN / No.1 Teknologi konkurrencen IPADs, mobilos, HTC'er Medicentre JDN / No.2 IPAD, Iphone, HTC,... 1000 Mhz 8000000 kbyte

Læs mere

Installations guide Saxo ERPTrader. Microsoft Dynamics NAV 2009 / 2013 / 2013R2

Installations guide Saxo ERPTrader. Microsoft Dynamics NAV 2009 / 2013 / 2013R2 Installations guide Saxo ERPTrader Microsoft Dynamics NAV 2009 / 2013 / 2013R2 Indhold Introduktion...3 Forudsætninger...3 Software krav...3 Installer MSI pakken...4 Importer Saxo ERPTrader objekterne...5

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

Kursuskatalog 2013 TwinCAT Basic og Extended

Kursuskatalog 2013 TwinCAT Basic og Extended Kursuskatalog 2013 TwinCAT Basic og Extended Kursusoversigt 2013 - Basic Modul 1 Software Kursus K130101 K130102 K130103 K130104 K130105 Dato 29.- 30.01.13 05.-06.03.13 07.-08.05.13 27.-28.08.13 22.-23.10.13

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

Object-Relational Mapping

Object-Relational Mapping Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe 06-06-2010 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel

Læs mere

Embedded controller, almen.

Embedded controller, almen. Ver. 310807 s. 1 Bilag 3 Valgfri specialefagskatalog Data- og kommunikationsuddannelsen Undervisningsministeriet September 2007 /Steen Albertsen Ver. 310807 s. 2 Embedded controller, almen. Varighed 1

Læs mere

Computerundervisning

Computerundervisning Frederiksberg Seminarium Computerundervisning Koordinatsystemer og Funktioner Lærervejledning 12-02-2009 Udarbejdet af: Pernille Suhr Poulsen Christina Klitlyng Julie Nielsen Indhold Introduktion... 3

Læs mere

Byg EN HULE LAMPE VARIGHED: LANGT FORLØB

Byg EN HULE LAMPE VARIGHED: LANGT FORLØB VARIGHED: LANGT FORLØB Byg EN HULE LAMPE Byg EN HULE LAMPE Til læreren Varighed: Langt forløb Tidsestimat: Syv dobbeltlektioner Dine elever i 5., 6. og 7. klasse kan i et langt forløb designe og bygge

Læs mere

Styringsteknik. Et projekt i faget styringsteknik. En rapport af Rune Zaar Østergaard

Styringsteknik. Et projekt i faget styringsteknik. En rapport af Rune Zaar Østergaard Styringsteknik Et projekt i faget styringsteknik. I1 & Q1 I2 En rapport af Rune Zaar Østergaard Styringsteknik 2007 Indholdsfortegnelse 1.0 Formål...3 2.0 Indledning (min ide)... 3 3.0 Problemdefinition...

Læs mere

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Programmering, algoritmik og matematik en nødvendig sammenblanding? Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1 Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D.

Læs mere

Intelligent. bolig uden besvær. økonomisk komfortabelt sikkert enkelt

Intelligent. bolig uden besvær. økonomisk komfortabelt sikkert enkelt Intelligent bolig uden besvær økonomisk komfortabelt sikkert enkelt Få en mere komfortabel og sikker bolig med et lavere elforbrug zensehome er fremtidens bygningsinstallation i diskret og tidløst design

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Institution Uddannelse Fag og niveau Lærer(e) Hold Termin hvori undervisningen afsluttes: maj-juni 2013 HTX

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

Læs mere

Webstech Trådløs Sensor Overvågning. Brugervejledning

Webstech Trådløs Sensor Overvågning. Brugervejledning Webstech Trådløs Sensor Overvågning Brugervejledning Besøg venligst vores hjemmeside for senest opdaterede udgave eller for hjælp Support Dato Version Ændringer 1. Januar 2013 1.0 Nyt layout for 2013 kunder

Læs mere

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner ROSKILDE TEKNISKE GYMNASIUM Læringsprogram Lommeregner Programmering Malte Fibiger, Rasmus Ketelsen, Nicojal Jensen og Leon Bøgelund, Klasse 3.36 04-12-2012 Indholdsfortegnelse Indledende afsnit... 3 Problemformulering...

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

ROSKILDE TEKNISK GYMNASIUM 6-10-2014. Matematik og IT projekt i klasse 3.4 af: Casper Lykke Larsen - Lars-Emil Jakobsen - Thomas Denckert Hernes

ROSKILDE TEKNISK GYMNASIUM 6-10-2014. Matematik og IT projekt i klasse 3.4 af: Casper Lykke Larsen - Lars-Emil Jakobsen - Thomas Denckert Hernes mmmatematiks RUMLIGE FIGURER 6-10-2014 ROSKILDE TEKNISK GYMNASIUM RUMLIGE FIGURER Matematik og IT projekt i klasse 3.4 af: Casper Lykke Larsen - Lars-Emil Jakobsen - Resume In the weeks from 11/09-2014

Læs mere

Vi vil alligevel forsøge at få brugerne til at tænke på om der er brug for at lyset er tændt og om vi kan få dem til at slukke efter sig.

Vi vil alligevel forsøge at få brugerne til at tænke på om der er brug for at lyset er tændt og om vi kan få dem til at slukke efter sig. Adfærds datalogning Indholdsfortegnelse Introduktion... 2 Problemformulering... 2 Udvikling af dataloggerne... 2 Sensorer... 5 Lysmåling... 6 Bevægelses måling... 6 Opsætning af loggerne... 8 PIR... 8

Læs mere

AF2208N og AF2208N + trådløse Wi-fi forstærker / AP Long-range

AF2208N og AF2208N + trådløse Wi-fi forstærker / AP Long-range AF2208N og AF2208N + trådløse Wi-fi forstærker / AP Long-range INDLEDNING: Vær opmærksom på at AF2208N er en forstærker. Det vil sige at den er og kan aldrig være bedre, end det signal den får ind. Så

Læs mere

Social Media Rapport for VIRKSOMHED A/S af Bach & McKenzie

Social Media Rapport for VIRKSOMHED A/S af Bach & McKenzie Social Media Rapport for VIRKSOMHED A/S af Bach & McKenzie Dato: 22-08-2014 Copyright af Bach & McKenzie 2014 Introduktion Indholdsfortegnelse 03 Hovedtal Kære VIRKSOMHED A/S Tillykke med jeres nye Social

Læs mere

Lærervejledning til undervisningsforløbet. Det digitale spejl

Lærervejledning til undervisningsforløbet. Det digitale spejl Lærervejledning til undervisningsforløbet Det digitale spejl Introduktion Det digitale spejl er et undervisningsforløb om net- etikette og digital adfærd. De traditionelle informationskanaler som fx aviser

Læs mere

Trafikmodellering* Claus Michelsen & Jan Alexis Nielsen. Syddansk Universitet

Trafikmodellering* Claus Michelsen & Jan Alexis Nielsen. Syddansk Universitet * Trafikmodellering* Claus Michelsen & Jan Alexis Nielsen Syddansk Universitet * Inspireret af Swetz, F. & Hartzler, J. S. (eds) 1991, Yellow Traffic Lights, in Mathematical Modeling in the Secondary School

Læs mere

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100. SecVision - Quick Manual v1.0

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100. SecVision - Quick Manual v1.0 QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100 SecVision - Quick Manual v1.0 1. System Login 1.1. Bruger Login ID: admin Password: 00000 1.2. Indstilling af dato/tid og harddisk

Læs mere

Kommunikationsprotokoller Summit06 worksession. Lisa Wells Datalogisk Institut Aarhus Universitet

Kommunikationsprotokoller Summit06 worksession. Lisa Wells Datalogisk Institut Aarhus Universitet Kommunikationsprotokoller Summit06 worksession Datalogisk Institut Aarhus Universitet Plan Kort introduktion til protokoller Protokoller i ISIS Katrinebjerg projekter Internet-baseret trådløs telefoni

Læs mere

Kom i gang med. Find på Programmér Del

Kom i gang med. Find på Programmér Del Kom i gang med Find på Programmér Del version 1.3 SCRATCH er et nyt programmeringssprog. Med Scratch kan du lave dine egne interaktive animationer, spil og musik. Scratch er gratis og "open source". Du

Læs mere

Hjælp til at opstille kompetencelæringsmål

Hjælp til at opstille kompetencelæringsmål 1 Hjælp til at opstille kompetencelæringsmål Dette skal hjælpe til at udstationeringer kan blive så målrettede som muligt. Vi definerer først begreberne kompetence og kompetenceudvikling. Derefter præsenterer

Læs mere

Professional Series bevægelsesdetektorer Ved, hvornår alarmen skal lyde. Ved, hvornår den ikke skal.

Professional Series bevægelsesdetektorer Ved, hvornår alarmen skal lyde. Ved, hvornår den ikke skal. Professional Series bevægelsesdetektorer Ved, hvornår alarmen skal lyde. Ved, hvornår den ikke skal. Nu med Antimask teknologi, flere zoner og spraydetektering Uovertrufne Bosch teknologier forbedrer detekteringsevnen

Læs mere

Vejledning Flex-Control:

Vejledning Flex-Control: Vejledning Flex-Control: Når du kommer hjem med din startpakke eller dine løse komponenter, så er du nu klar til at komme i gang. 1. Start med at pakke alle komponenter ud. 2. Fjern nu det lille stykke

Læs mere

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre Postregistrering Eksamensprojekt i Lavet af: Frantz Furrer Vejleder: Claus Borre Side af 4 Titelblad: Skolens navn: Svendborg Tekniske Gymnasium - Rapport: Rapportens titel: Postregistrering Side antal:

Læs mere

Lonbox PCM2001 betjeningsenhed

Lonbox PCM2001 betjeningsenhed PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 Lonbox PCM2001 betjeningsenhed Bruger vejledning Oktober 2002 Denne manual beskriver installation

Læs mere

Brugervejledning & instruktion MTW 12/1. Varenr. 572096 MTW 12/2. Varenr. 572099 MTW12/1101-1

Brugervejledning & instruktion MTW 12/1. Varenr. 572096 MTW 12/2. Varenr. 572099 MTW12/1101-1 Brugervejledning & instruktion MTW 12/1 Varenr. 572096 MTW 12/2 Varenr. 572099 MTW12/1101-1 INDHOLD 1.0 Beskrivelse 2.0 Installation 3.0 Programmering 4.0 Termostat / P.I.D. funktion 4.1 MTW 12/1 termostat

Læs mere

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje. Maple Dette kapitel giver en kort introduktion til hvordan Maple 12 kan benyttes til at løse mange af de opgaver, som man bliver mødt med i matematiktimerne på HHX. Skærmbilledet Vi starter med at se lidt

Læs mere

Automatisk Vandingssystem

Automatisk Vandingssystem Automatisk Vandingssystem Projektdokumentation Aarhus Universitet Gruppe 6-3. Semester - F15 vejleder: Michael Alrøe dato: 28-05-2015 Lærke Isabella Nørregård Hansen - 201205713 - IKT Kasper Sejer Kristensen

Læs mere

MJPower engineering Ecu Link.

MJPower engineering Ecu Link. MJPower engineering Ecu Link. Trin for trin instruktioner. I dette eksempel starter vi med at teste en cykel med et Power Commander nul map. Man er nødt til at have en præcis omdrejningstal registrering,

Læs mere

R100APM Premier Rower COMPUTER

R100APM Premier Rower COMPUTER R100APM Premier Rower COMPUTER 1 LCD Display 130 x 58.5mm Liquid Crystal Display PULSE Display Viser din puls per minut (bmp) SPM Display Antal træk i minuttet LEVEL Display 1~16 Modstands-niveau BRUGER

Læs mere

Regneark hvorfor nu det?

Regneark hvorfor nu det? Regneark hvorfor nu det? Af seminarielektor, cand. pæd. Arne Mogensen Et åbent program et værktøj... 2 Sådan ser det ud... 3 Type 1 Beregning... 3 Type 2 Præsentation... 4 Type 3 Gæt... 5 Type 4 Eksperiment...

Læs mere

Acronis et stærkt værktøj til backup. Af Hanne B. Stegemüller 6. juni 2015

Acronis et stærkt værktøj til backup. Af Hanne B. Stegemüller 6. juni 2015 Acronis et stærkt værktøj til backup Af Hanne B. Stegemüller 6. juni 2015 Acronis True Image 2015 Denne guide handler om det meget stærke værktøj til backup, der hedder Acronis. Jeg baserer guiden på flere

Læs mere

Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq

Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq Projekt varmemåler wertyuiopåasdfghjklæøzxcvbnmqwe Afsluttende projekt

Læs mere

Computerstøttet beregning

Computerstøttet beregning CSB 2009 p. 1/16 Computerstøttet beregning Lektion 1. Introduktion Martin Qvist qvist@math.aau.dk Det Ingeniør-, Natur-, og Sundhedsvidenskabelige Basisår, Aalborg Universitet, 3. februar 2009 people.math.aau.dk/

Læs mere

Kom godt i gang med LEGO Education Innovation Studio

Kom godt i gang med LEGO Education Innovation Studio Kom godt i gang med LEGO Education Innovation Studio Mekanik Energi Robotter og IT Problemløsning Kreativitet Samarbejde LEGO Education Innovation Studio Indhold LEGO Education Innovation Studio...4 Kom

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

Brugerdreven innovation

Brugerdreven innovation Det innovative potentiale Brugerdreven innovation Hvad er det, brugere kan se? Hvordan optager organisationer brugerviden? Om at skære ud i pap Cases: Fjernvarmeanlæg, rensningsanlæg, indeklima Jacob Buur

Læs mere

Betjeningsvejledning. Hvis du ikke læser andet heri - LÆS DISSE 2 PUNKTER! OPBEVARES I PLASTICPOSE PÅ MOTORCYKLEN! VEDLIGEHOLD

Betjeningsvejledning. Hvis du ikke læser andet heri - LÆS DISSE 2 PUNKTER! OPBEVARES I PLASTICPOSE PÅ MOTORCYKLEN! VEDLIGEHOLD VEDLIGEHOLD FJERNBETJENING Fjernbetjeningen indeholder elektroniske komponenter og skal beskyttes mod slag og fugt. Derfor: Skil ikke fjernbetjeningshuset ad undtaget for at skifte batterier. Fjernbetjeningens

Læs mere

SMART Notebook 11.3 software til Windows - og Maccomputere

SMART Notebook 11.3 software til Windows - og Maccomputere Produktbemærkninger SMART Notebook 11.3 software til Windows - og Maccomputere Lidt om disse produktbemærkninger Disse produktbemærkninger opsummerer funktionerne i SMART Notebook 11.3 samarbejdsbaserede

Læs mere

QUICK START Updated: 18. Febr. 2014

QUICK START Updated: 18. Febr. 2014 QUICK START Updated: 18. Febr. 2014 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get

Læs mere

Pædagogisk vejledning til. Materialesæt. Dash Og Dot

Pædagogisk vejledning til. Materialesæt. Dash Og Dot Pædagogisk vejledning til Materialesæt Dash Og Dot Pædagogisk vejledning til materialesættet Dash og Dot Materialesættet kan lånes hos VIA Center for Undervisningsmidler og evt. hos andre CFU er i Danmark.

Læs mere

Hvordan skaber vi organisationer, der mestrer forandring?

Hvordan skaber vi organisationer, der mestrer forandring? Hvordan skaber vi organisationer, der mestrer forandring? Programoversigt 15:00 Velkomst Baggrund og ambitioner Fire markante ledelsesmæssige og organisatoriske udfordringer To kritiske stemmer på traditionel

Læs mere

Mark like a Professional. Markeringssystem FlyMarker PRO

Mark like a Professional. Markeringssystem FlyMarker PRO Mark like a Professional Markeringssystem FlyMarker PRO Mark like a Professional FlyMarker PRO Version MOBIL Med den håndholdte CNC markeringssystem Fly- Marker PRO, bliver markering af store, tunge og

Læs mere

Installationsmanual Trådløs Bevægelsessensor

Installationsmanual Trådløs Bevægelsessensor Trådløs Bevægelsessensor Indholdsfortegnelse KOM GODT I GANG... 2 UDPAKNING... 2 MONTERING... 4 Montering af væg-/loftbeslaget... 4 INSTALLATION AF BATTERIER... 4 EFTER INSTALLATION AF BATTERIER... 5 TEST

Læs mere

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

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

At udvikle og evaluere praktisk arbejde i naturfag

At udvikle og evaluere praktisk arbejde i naturfag Kapitel 5 At udvikle og evaluere praktisk arbejde i naturfag Robin Millar Praktisk arbejde er en væsentlig del af undervisningen i naturfag. I naturfag forsøger vi at udvikle elevernes kendskab til naturen

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

Projekt 7.4 Kvadratisk programmering anvendt til optimering af elektriske kredsløb

Projekt 7.4 Kvadratisk programmering anvendt til optimering af elektriske kredsløb Projekt 7.4 Kvadratisk programmering anvendt til optimering af elektriske kredsløb Indledning: I B-bogen har vi i studieretningskapitlet i B-bogen om matematik-fsik set på parallelkoblinger af resistanser

Læs mere

Bruger Manual GRIPO 4925 GSM-modul

Bruger Manual GRIPO 4925 GSM-modul Bruger Manual GRIPO 4925 GSM-modul GRIPO 4925 er let at tilslutte og anvende. Læs hvor simpelt det kan gøres i denne manual. Indhold 1 Introduktion... 1 Vedligeholdelse...1 Gripo hotline...1 Gripo hjemmeside...1

Læs mere

Bilag 4.A s MASH. Indhold

Bilag 4.A s MASH. Indhold Bilag 4.A s MASH Indhold 1.1 Indledning 1 1.1.1 Formål med undersøgelsen 1 1.1.2 Beskrivelse af smash metoden 1 1.2 s MASH målinger (omfang, placering og resultater) 1.2.1 Undersøgelsens forløb 5 5 1.2.2

Læs mere

Opstilling af model ved hjælp af differentialkvotient

Opstilling af model ved hjælp af differentialkvotient Opstilling af model ved hjælp af differentialkvotient N 0,35N 0, 76t 2010 Karsten Juul Til eleven Dette hæfte giver dig mulighed for at arbejde sådan med nogle begreber at der er god mulighed for at der

Læs mere

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO...

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO... INDHOLDSFORTEGNELSE INDLEDNING... 7 Kristian Langborg-Hansen KAPITEL ET... 9 I gang med App Inventor Installation af App Inventor... 10 Trådløs installation... 11 Installation af emulator (Windows)...

Læs mere

COMPUTER ANATOMI. 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE

COMPUTER ANATOMI. 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE COMPUTER ANATOMI 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE 1 Indholdsfortegnelse Kapitel 1: Opbygning s.2 Kapitel 2: CPU s.3 Kapitel 3: Motherboard s.4 Kapitel 4: Ram s.6 Kapitel 5: Grafikkort s.7 Kapitel

Læs mere

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

Kom godt i gang med Icotera fiberboks. med indbygget router. 25562 - TRE BRE booklet 120x120 fiberboks ICOTERA rev06.indd 1 Kom godt i gang med Icotera fiberboks med indbygget router 25562 - TRE BRE booklet 120x120 fiberboks ICOTERA rev06.indd 1 04-10-2012 10:25:12 Tillykke med din nye fiberboks Inden du får glæde af fiberbredbåndet,

Læs mere

STYKLISTE AP 500 MANUAL 1 1 ELEKTRONIK MODUL 2 1 SERVOMOTOR 3 1 LEDNINGSNET 5 1 AP 500 MONTERINGS KIT 5.1 1 WIRETRÆK BESLAG

STYKLISTE AP 500 MANUAL 1 1 ELEKTRONIK MODUL 2 1 SERVOMOTOR 3 1 LEDNINGSNET 5 1 AP 500 MONTERINGS KIT 5.1 1 WIRETRÆK BESLAG STYKLISTE # ANTAL BESKRIVELSE 1 1 ELEKTRONIK MODUL 2 1 SERVOMOTOR 3 1 LEDNINGSNET 5 1 AP 500 MONTERINGS KIT 5.1 1 WIRETRÆK BESLAG 5.2 3 WIRE BESKYTTER 5.3 1 KABELHOLDER 5.4 1 SPÆNDESKIVE 5.5 1 WIRETRÆK

Læs mere

Arbejdet på kuglens massemidtpunkt, langs x-aksen, er lig med den resulterende kraft gange strækningen:

Arbejdet på kuglens massemidtpunkt, langs x-aksen, er lig med den resulterende kraft gange strækningen: Forsøgsopstilling: En kugle ligger mellem to skinner, og ruller ned af den. Vi måler ved hjælp af sensorer kuglens hastighed og tid ved forskellige afstand på rampen. Vi måler kuglens radius (R), radius

Læs mere

Automatiser jeres produktion let, billigt og fleksibelt

Automatiser jeres produktion let, billigt og fleksibelt Automatiser jeres produktion let, billigt og fleksibelt Universal Robots udvikler fleksibel og prisgunstig robotteknologi til industrien. Vi sætter slutbrugeren i centrum og gør teknologien let at bruge

Læs mere

AP800 Installations manual til: Ssang Yong Rexton XDI-270 / E-230

AP800 Installations manual til: Ssang Yong Rexton XDI-270 / E-230 AP800 Installations manual til: Ssang Yong Rexton XDI-270 / E-20 AS Marketing CC00000100-MA / Version 5 ABE 90864 Maj 2006 e1 024151 2 Advarsel! Forkert kabel tilslutning kan resultere i kortslutninger,

Læs mere

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER INSTALLATIONS MANUALEN SKAL GENNEMLÆSES OMHYGGELIG FØR IBRUGTAGNING ADVARSEL FOR SIKKER INSTALLATION Inden installation af automatikken skal balance fjederen på

Læs mere