Designspecifikation Autonom Bandvagn

Relevanta dokument
Kravspecifikation Autonom Bandvagn

Systemskiss. LiTH Autonom bandvagn med stereokamera Gustav Hanning Version 1.0. Status. TSRT10 8Yare LIPs. Granskad

Projektplan Autonom Bandvagn

Användarhandledning Autonom Bandvagn

Användarhandledning. Redaktör: Patrik Molin Version 1.0. Mobile Scout. Status. LiTH Granskad Godkänd. TSRT71 Patrik Molin

LiTH Autonom bandvagn med stereokamera Användarhandledning. Gustav Hanning Version 0.1. Status. Granskad. Godkänd.

LiTH Mobile Scout. Kravspecifikation. Redaktör: Patrik Molin Version 1.0. Status. Granskad Godkänd. TSRT71 Patrik Molin.

Designspecifikation. LiTH Autonom bandvagn med stereokamera Gustav Hanning Version 1.0. Status. TSRT10 8Yare LIPs.

Kravspecifikation. LiTH Autonom bandvagn med stereokamera Gustav Hanning Version 1.0. Status. TSRT10 8Yare LIPs.

Systemskiss Minröjningsbandvagn

Projektplan. Redaktör: Patrik Molin Version 1.0. Mobile Scout. Status. LiTH Granskad Godkänd. TSRT71 Patrik Molin

Kravspecifikation. LIPs. Marcus Arvidsson & Jacob Bernhard Version 1.1. LiTH 22 november imap. Status Granskad. Autonom bandvagn 1

Systemskiss. Joachim Lundh TSRT10 - SEGWAY 6 december 2010 Version 1.0. Status:

Designspecifikation. Redaktör: Patrik Molin Version 1.0. Mobile Scout. Status. LiTH Granskad Godkänd. TSRT71 Patrik Molin

LiTH. WalkCAM 2007/05/15. Testplan. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Användarhandledning. LiTH Autonom bandvagn med stereokamera Jacob Bernhard Version 0.2. Status

Testplan. Flygande Autonomt Spaningsplan. Version 1.0. Dokumentansvarig: Henrik Abrahamsson Datum: 14 mars Status.

Systemskiss. Självetablerande sensornätverk med 3G och GPS. Version 0.2. Christian Östman Datum: 15 maj 2008

Felsökning av kommunikation mellan DLS och GPS mottagare.

Lunds Tekniska Högskola Avdelningen för industriell elektroteknik och automation

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Testspecifikation. Henrik Hagelin TSRT10 - SEGWAY 6 december 2010 Version 1.0. Status:

LIPs Daniel Axehill ChrKr Projektdirektiv_Saab_v3 CKr

Testplan. Redaktör: Sofie Dam Version 0.1. Status. Planering och sensorfusion för autonom truck Granskad Dokumentansvarig - Godkänd

Testprotokoll. Redaktör: Sofie Dam Version 0.1. Status. Planering och sensorfusion för autonom truck Granskad Dokumentansvarig - Godkänd

LIPs Martin Lindfors ChrKr Projdir2017_sbd.doc CKr

Systemskiss. LiTH Kamerabaserat Positioneringssystem för Hamnkranar Mikael Ögren Version 1.0. Status

HARALD Testprotokoll

Testprotokoll Autonom målföljning med quadcopter

Position Nokia N76-1

TENTAMEN I DYNAMISKA SYSTEM OCH REGLERING

Systemskiss. LiTH AMASE Accurate Multipoint Acquisition from Stereovision Equipment. Jon Månsson Version 1.0

HARALD. Systemskiss. Version 0.3 Redaktör: Patrik Johansson Datum: 20 februari Status

LiTH, Reglerteknik Saab Dynamics. Testplan Collision avoidance för autonomt fordon Version 1.0

Användarhandledning. Redaktör: Jenny Palmberg Version 1.0. Status. LiTH Fordonssimulator. Granskad Godkänd. TSRT71 Jenny Palmberg

Projektdirektiv Hanna Nyqvist Sida 1

REGLERTEKNIK Inledande laboration (obligatorisk)

Läran om återkopplade automatiska system och handlar om hur mätningar från givare kan användas för att automatisk göra förändringar i processen.

Systemkonstruktion Z3

Användarhandledning Minröjningsbandvagn

För att få ett effektiv driftsätt kan det ibland behövas avancerad styrning.

LiTH. WalkCAM 2007/05/15. Testrapport. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

LiTH Autonom styrning av mobil robot Projektplan. Martin Elfstadius & Fredrik Danielsson. Version 1.0

LiTH Golfspelande industrirobot Designspecifikation. Designansvarig: Mikaela Waller Version 1.0. Status. Granskad Martin

Systemskiss Autonom målföljning med quadcopter

Testplan Autonom truck

TAIU07 Matematiska beräkningar med Matlab

Robotarm och algebra

Datorteknik 2 (AVR 2)

Global Positioning System GPS i funktion

Testplan Autonom målföljning med quadcopter

LiTH 7 december Optimering av hjullastare. Testplan. Per Henriksson Version 1.0. LIPs. TSRT10 testplan.pdf WHOPS 1. tsrt10-vce@googlegroups.

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

F13: Regulatorstrukturer och implementering

HARALD. Version 0.2 Redaktör: Patrik Johansson Datum: 8 maj Status. Granskad - yyyy-mm-dd Godkänd - yyyy-mm-dd

Arduinokurs. Kurstillfälle 4

Projektplan. LiTH Autonom bandvagn med stereokamera Henrik Berggren Version 1.0. Status. TSRT10 8Yare LIPs. Granskad

Roboten. Sida 1 av 11

Veckoblad 1, Linjär algebra IT, VT2010

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Systemskiss. Michael Andersson Version 1.0: Status. Platooning Granskad DOK, PL Godkänd Erik Frisk

Testplan. LiTH. Autopositioneringssystem för utlagda undervattenssensorer Martin Skoglund Version 1.1. Status

Lösningar Heureka 2 Kapitel 3 Rörelse i två dimensioner

2 / 3-axlig joystick med PWM-utgångar

Systemskiss. LiTH. Autopositioneringssystem för utlagda undervattenssensorer Erik Andersson Version 1.0. Status

LIPs Isak Nielsen ChrKr Projektdirektiv13_ROV.doc CKr

Systemskiss. Vidareutveckling Optimal Styrning av Radiostyrd Racerbil. Version 1.0 Simon Eiderbrant. Granskad Erik Olsson 20 September 2012

LIPs Fredrik Ljungberg ChrKr Projektdirektiv18_ROV.doc CKr

EV3 Roboten. Sida 1 av 13

Välkomna till TSRT19 Reglerteknik Föreläsning 3. Sammanfattning av föreläsning 2 PID-reglering Blockschemaräkning Reglerdesign för svävande kula

Micro:bit och servomotorer

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Kravspecifikation Autonom målföljning med quadcopter

Kravspecifikation. LiTH Segmentering av MR-bilder med ITK Anders Eklund Version 1.0. Status

TrackBlock Tracking System Bruksanvisning

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

ATU. Användarmanual. Larmöverföringsenhet Firmware Version

Systemskiss. Redaktör: Anders Toverland Version 1.0. Status. LiTH Fordonssimulator. Granskad Godkänd. TSRT71 Anders Toverland

Regulatorer Avfrostningsregulatorer Differentialtermostater Multistegsregulatorer

IT-lösningar SMARTA PRODUKTER SOM FÖRENKLAR DIN VARDAG. Innehållsregister

DENVER HSM Naturbildskamera. Snabbstartsguide

Sirius II Installation och Bruksanvisning

Servicemanual. Autonomous Pallet System 800 Prototyp. Utfärdat:

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

Svensk manual Version Revision 3

TENTAMEN I DYNAMISKA SYSTEM OCH REGLERING

Testplan. Vidareutveckling av Optimal Styrning av Radiostyrd Racerbil. Version 1.1 Fredrik Karlsson 26 november Granskad JL, FK 26 november 2012

Designspecifikation. LiTH Autonom styrning av mobil robot Martin Elfstadius. Version 1.0. Status. TSRT71 Reglerteknisk projektkurs

Final i Wallenbergs Fysikpris

LABORATIONSINSTRUKTION DIGITAL REGLERTEKNIK. Lab nr. 3 DIGITAL PI-REGLERING AV FÖRSTA ORDNINGENS PROCESS

9.1 Kinetik Rotation kring fix axel Ledningar

Kravspecifikation Remotely Operated Underwater Vehicle

Systemskiss. Flygande Autonomt Spaningsplan. Version 1.0. Dokumentansva Datum: 13 februari Dokumentansvarig: Henrik Abrahamsson.

Robotfotboll med Arduino

Projektplan. LiTH Segmentering av MR-bilder med ITK Anders Eklund. Version 1.0. Status. Bilder och grafik projektkurs, CDIO MCIV LIPs

Denna tentamen består av två delar. Först sex enklare uppgifter, som vardera ger maximalt 2 poäng. Andra delen består av tre uppgifter, som

Projektdirektiv Oskar Ljungqvist Sida 1. Kund/Examinator: Daniel Axehill, Reglerteknik/LiU

Transkript:

Designspecifikation Autonom Bandvagn Version 1.0 Redaktör: Johan Norberg Datum: 1 oktober 2009 Status Granskad Jonas Callmer 2009-09-30 Godkänd

Projektidentitet E-mail: Hemsida: Beställare: Kund: Kursansvarig: Handledare: Handledare: Handledare: bandvagn@googlegroups.com kommer senare Jonas Callmer, Linköpings Universitet Telefon: 013-28 23 06, E-mail: callmer@isy.liu.se Pelle Carlbom, SAAB Bofors Dynamics Telefon: 013-18 62 13, E-mail: Pelle.Carlbom@saabgroup.com David Törnqvist, Linköpings Universitet Telefon: 013-28 18 82, E-mail: tornquist@isy.liu.se Karl Granström, Linköpings Universitet Telefon: 013-28 28 03, E-mail: karl@isy.liu.se Torbjörn Crona, SAAB Bofors Dynamics Telefon: 013-18 66 42, E-mail: torbjorn.crona@saabgroup.com Johan Bejeryd, SAAB Bofors Dynamics E-mail: johan.bejeryd@saabgroup.com Gruppdeltagare Namn Ansvar Telefon E-mail @student.liu.se Erik Hagfalk (EH) Projektledare (PL) 070-254 53 31 eriha936 Johan Norberg (JN) Dokumentansvarig (DOK) 073-060 84 62 johno227 Jon Bjärkefur (JB) Navigationsansvarig (NAV) 070-862 77 37 jonbj981 Ola Tybrandt (OT) Testansvarig (TEST) 073-619 03 51 olaty661 Erik Eriksson Ianke Sensoransvarig (SA) 073-063 44 65 erier955 (EEI) Orhan Gafurovic (OG) Estimeringsansvarig (EST) 073-922 24 62 orhga172 Johan Särnbrink (JS) Modellansvarig (MOD) 070-308 33 35 johsa779 André Emilsson (AE) ARM-ansvarig (ARM) 073-507 74 68 andem364

Dokumenthistorik Version Datum Ändringar Signatur Granskare 0.1 2009-09-06 Första utkastet JS EEI AE 0.2 2009-09-22 Lagt till beskrivning av masterenheten JN JB ALLA samt navigationsenhe- ten 0.3 2009-09-25 Uppdaterad efter kommentarer JN EH ALLA från handledaren 0.4 2009-09-30 Uppdaterad efter kommentarer Alla ALLA från beställaren och kund 1.0 2009-10-01 Uppdaterad efter kommentarer från beställaren OT EEI

Innehåll 1 Inledning och bakgrund 1 2 Systemöversikt 1 2.1 Ingående delsystem........................................ 2 3 Masterenhet L1 3 3.1 Gränssnitt............................................. 3 3.2 Kommunikation med andra enheter............................... 3 4 Scoutenhet 3 4.1 Navigationsenhet L2....................................... 4 4.1.1 Sensormodul....................................... 4 4.1.1.1 Odometer.................................... 4 4.1.1.2 GPS....................................... 4 4.1.1.3 ARM-kommunikation............................. 5 4.1.2 Mobilitetsmodul..................................... 6 4.1.2.1 Estimering................................... 6 4.1.2.2 Navigering................................... 6 4.1.2.3 Reglering.................................... 7 4.1.3 Modeller.......................................... 7 4.1.3.1 Koordinatsystem................................ 7 4.1.3.2 Odometermodell................................ 8 4.1.3.3 Fordonsmodell................................. 9 4.1.4 Kommunikation med andra enheter.......................... 9 4.1.5 Nätverksmodul...................................... 10 4.2 Framdrivningsenhet ARM.................................... 10 4.2.1 Komponenter....................................... 10 4.2.1.1 Utvecklingskortet (SAM7H64)........................ 11 4.2.1.1.1 Inkoppling av utvecklingskortet................... 11 4.2.1.1.2 Programmering av utvecklingskortet................ 11 4.2.1.2 Odometrar (US Digital E5-500-188-1-S-D-3-B)............... 12 4.2.1.3 Motorer (Sabertooth 2x25).......................... 12 4.2.1.3.1 PWM................................. 13 4.2.2 Styrprincip........................................ 13 4.2.3 Kommunikation med andra enheter.......................... 14 5 Konventioner 14 5.1 Dokumentkonventioner...................................... 14 5.2 Kodkonventioner......................................... 14

Autonom Bandvagn 1 1 Inledning och bakgrund Saab Bofors Dynamics vill ta fram en bandvagn som ska kunna kartlägga olika miljöer autonomt. Projektet inleddes våren 2009 med framtagning av specifikationer, kontrollprogram, nätverkskommunikation, navigationstekniker med mera. Projektgruppens uppgift är främst att ordna framdrivningen av bandvagnen. Både manuell och autonom drift ska vara möjlig. Projektet bygger vidare på arbete utfört av projektgruppen O hara s under våren 2009. 2 Systemöversikt Systemet består i huvudsak av en masterenhet L1 och en scoutenhet. Scoutenheten består i sin tur av två delsystem, navigationsenheten L2 samt framdrivningsenheten ARM. En översiktsbild av systemet kan ses i figur 1. Masterenheten är en laptop som använder operativsystemet Linux och denna kommunicerar trådlöst med scoutenheten. Figur 1: Översiktlig systemskiss över systemet. Scoutenhetens fysiska delar består av en bandvagn av typ MMP30 samt en laptop som använder operativsystemet Linux. På bandvagnen sitter två stycken DC-motorer, en på vardera sida som driver enheten. Plattformen innehåller även två batterier som via en spänningsregulator tillhandahåller spänning till motorer och övrig elektronik i bandvagnen. På varje motor sitter en odometer och i mån av tid kommer bandvagnen att utrustas med en GPS-mottagare. I framtida projekt ska även en kamera monteras på roboten.

Autonom Bandvagn 2 Från L1 ska en brytpunktsbana kunna skickas trådlöst till scoutenheten som sedan autonomt följer denna bana. Det ska även gå att styra bandvagnen i manuellt läge. Sensordata som hastighet och position och övrig debugdata ska kunna skickas från scoutenheten till masterenheten och där visas för användaren. 2.1 Ingående delsystem De i systemet ingående delsystemen är: Masterenheten L1 Scoutenheten Navigationsenheten L2 Framdrivningsenheten ARM Kommunikation mellan de olika modulerna sker trådlöst via WLAN eller seriellt enligt RS232. Mer information kan hittas nedan under respektive delsystem. En översiktsbild över de olika C++-klasserna i respektive delsystem samt hur data hämtas och sänds mellan klasserna kan ses i figur 2. Figur 2: Översiktsbild av de olika klasser som finns i systemet

Autonom Bandvagn 3 3 Masterenhet L1 Masterenheten består av följande delsystem: Laptop Nätverk Mjukvarugränssnitt Masterenheten är en laptop med operativsystemet Linux där ett användargränssnitt körs. Från användargränssnittet skickas kommandon till bandvagnen. Bandvagnen kan endera köras i autonomt eller manuellt läge. I autonomt läge skickas en av användaren specificerad brytpunktsbana till bandvagnen som sedan ska följa denna bana. I manuellt läge skickar användaren styrkommandon direkt till bandvagnen. 3.1 Gränssnitt Det användargränssnitt (GUI) som kommer att användas på masterenheten har utvecklats av projektgruppen O hara s. Användaren kan med hjälp av GUI:t ansluta till bandvagnen och därefter skicka och ta emot data från bandvagnen. Programmet är utvecklat i C++ och använder Qt-biblioteket för det grafiska gränssnittet [2]. Vid start av programmet möts användaren av ett anslutningsfönster där ip-adressen till roboten skrivs in. Efter att anslutningen är upprättad kan styrkommandon skickas till roboten. En brytpunktsbana kan ritas upp och skickas till roboten, som sedan utför förflyttning efter brytpunktsbanan. I manuellt läge skickas styrkommandon direkt till roboten. Användaren kan via ett hastighetsreglage ställa in önskad hastighet för roboten. Med hjälp av tangentbordet kan sedan användaren styra roboten. När en tangent trycks ner sänds hastighetsinformation och rotationshastighet till roboten via det trådlösa nätverket och roboten utför sedan förflyttning enligt det önskade kommandot. Gränssnittet visar också avlusningsdata från roboten. 3.2 Kommunikation med andra enheter Masterenheten kommunicerar med scoutenheten via WLAN där data skickas i båda riktningarna. Navigationsenheten skickar data då masterenheten begär data. För att kommunicera med scoutenheten, som fungerar som server, ansluter masterenheten till scoutenheten genom att ange navigationsenhetens ip-nummer. Data loggas till fil när den ankommer till masterenheten. 4 Scoutenhet Scoutenheten består av två stycken delsystem, navigationsenheten L2 samt framdrivningsenheten ARM. Kommunikation mellan scoutenheten och omvärlden sker genom navigationsenheten till masterenheten via WLAN.

Autonom Bandvagn 4 4.1 Navigationsenhet L2 Navigationsenheten består av en laptop och sitter på bandvagnschassit. Den har tre huvudsakliga uppgifter: Sköta kommunikationen mellan masterenheten och scoutenheten. Beräkna styrsignaler till framdrivningsenheten utifrån nuvarande position, orientering, hastighet och önskad position. Samla in sensordata och tidsmärka 4.1.1 Sensormodul Sensormodulen är en egen tråd som kontinuerligt läser av värden från alla sensorer. Dessa värden sparas undan i klasser för de olika sensorerna. I sensormodulen finns publika getfunktioner som returnerar dessa värden. Sensormodulen skickar direkt vidare sensordata till nätverksmodulen. All data tidsstämplas i sensormodulen när de läses in. Formatet på tiden är i antal sekunder med decimaldel från dess att modulen startades. En annan uppgift som sensormodulen har är att ställa ut börvärden för bandhastigheterna till ARM-enheten. Detta görs via en publik funktion ActuateWS som anropas från mobilitetsmodulen. Kommunikationen med ARM-enheten sköts från en kommunikationsklass. 4.1.1.1 Odometer Odometerklassen använder ARM-kommunikationsdelen för att fråga efter odometerdata. Odometerdata tolkas sedan och sparas ner i lokala variabler. 4.1.1.2 GPS GPS är ett satellitbaserat globalt navigeringssystem. Det var ursprungligen avsett för militera ändamål, men GPS kan också förse exakt positions och tidsinformation för civila tillämpningar. Minst tjugofyra satelliter i sex omloppsbanor runt jorden utgör systemet som sänder kontinuerligt kodad positions- och tidsinformation i L-band frekvens. Signalerna tas emot och den kodade informationen används för att beräkna en position i GPS-systemets koordinatsystem. GPS är det mest populära navigationssystemet idag. GPS-mottagarna bestämmer position genom att beräkna den tid det tar för de radiosignaler som skickas från de olika satelliterna att nå jorden. Ekvationen S = T V där S=avstånd, T =tid och V =hastighet är central i beräkningar av position. Radiovågor färdas med ljusets hastighet. Tiden avgörs med hjälp av en kodmatchningsteknik inuti GPS-mottagaren. När tiden har bestämts, och det faktum att satellitens position rapporteras i alla kodade navigeringsmeddelanden, kan mottagaren, med hjälp av trigonometri, avgöra sin placering på jorden. Positionsnoggrannheten beror av mottagarens förmåga att korrekt beräkna den tid det tar för de olika satellitsignalerna att färdas till jorden. Och i detta ligger problemet. Det finns fyra primära källor till fel som kan påverka mottagarens beräkning. Dessa fel består av:

Autonom Bandvagn 5 Mätbrus i mottagaren. Fel i utsänt positionsmeddelande. Flervägsutbredning. Jonosfär- och troposfärfördröjningar i radiosignalen. GPS-mottagare kan generera positionsberäkningar i realtid med en frekvens av 100 beräkningar per sekund. Positionsberäkningarna kan matas ut via RS232 som meddelanden i NMEAformat (National marine electronics association). GPS-mottagaren som är tänkt att användas i projektet kan komma strömförsörjas via USB-porten. Det finns olika meddelande för NMEA protokollet. Några exempel är GLL,GGA och RMC. GGA formatet innehåller önskvärd data som position, höjd och tid. GGA (Global Positioning System Fix Data) meddelande ser ut enligt nedan: ($GP GGA, hhmmss.ss, ddmm.mmmm, s, dddmm.mmmm, s, n, qq, pp.p, saaaaa.aa, M, ±xxxx.xx, M, sss, aaaa cc < CR >< LF >) Fält Beskrivning $ Meddelandeflagga GP Meddelandekälla (GPS) GGA Meddelandetyp hhmmss.ss UTC-tid givet i timmar,minuter och sekunder ddmm.mmmm Latitud i grader, minuter och decimalminuter s s=n eller s=s för nord eller syd i latitud dddmm.mmmm Longitud i grader, minuter och decimalminuter s s=e eller s=w öst eller väst i longitud n Kvalitetsindikator, 0 = ingen position beräknad, 1 = position beräknad i normalläge, 2 = position beräknad i differentialläge, 9= position beräknad mha uppslagsvärden qq Antal använda satelliter vid positionsberäkning pp.p HDOP =0.0 to 9.9, horisontell precisionsutspädning saaaaa.aa Antenn-altitud M Altitudenhet, M = meter xxxx.xx Geoidal separation M Enhet för geoidal separation, M = meter sss Ålder hos differentialdata i sekunder aaaa Differential referensstationsidentitet *cc Kontrollsumma, för att kontrollera data <CR><LF> Carriage return och line feed Tabell 1: GGAs meddelande beskrivning GPS-klassen kommunicerar med GPS-hårdvaran, tolkar data och sparar ner resultatet i lokala variabler. 4.1.1.3 ARM-kommunikation I denna klass finns funktioner för att nollställa ARM-enheten, skicka styrkommandon och fråga om odometerdata. Styrkommandot som skickas till ARM-enheten innehåller två hastigheter, en för vardera band. Meddelandet som skickas har följande utseende: svxxyy. XX är två bytes som

Autonom Bandvagn 6 Uppgift Fråga Svar Ställa in hastighet svxxyy svok Hämta odometerdata updi LXXRYY Nollställ ARM-enheten rese reseok Tabell 2: Kommunikation mellan ARM-enheten och navigationsenheten. anger vänster bands hastighet i mm/s. Mest signikfikant bit är hastighetens tecken. YY anger analogt höger bands hastighet. Som svar får vi svok (set velocity ok). ARM-enheten returnerar odometerdata då den mottar kommandot updi. Meddelandet som returneras har följande format: LXXRYY. XX är körd sträckändring sedan senaste mätning på vänster band i tiondels mm och YY är analogt på höger band. Den mest signifikanta biten är teckenbit. Det är även möjligt att nollställa variablerna för körd sträcka på banden i ARM-enheten genom att sända meddelandet rese. Svaret blir då reseok (reset ok). En lista över möjliga kommandon som navigationsenheten kan sända samt svar från ARMenheten kan ses i tabell 2. Sensormodulen frågar efter odometerdata 30 gånger per sekund. Hastighet till ARMenheten sätts i takt med att odometerdata mottages. 4.1.2 Mobilitetsmodul Mobilitetsmodulen körs i en egen tråd. Modulens uppgift är att hämta sensordata från sensormodulen, utföra estimering av bandvagnens tillstånd och navigera bandvagnen. I manuellt läge skickar modulen bara vidare kommandon från nätverksmodulen till sensormodulen, som i sin tur styr roboten. I autonomt läge hanterar modulen en koordinatlista och reglerar bandvagnen till målen i listan. 4.1.2.1 Estimering Estimeringsklassen hanterar de olika koordinatsystemen samt förbehandlar odometer- respektive GPS-data. Dess huvudsakliga funktionalitet är att skatta bandvagnens position. Exakt hur detta ska gå till beror på vilka sensorer som används och vad som visar sig vara mest lämpligt. Vi ska ha möjlighet att använda ett Kalmanfilter både när vi har tillgång till GPS-data och när vi inte har tillgång till GPS-data. Det kompletta Kalmanfiltret ska ha en tidsuppdateringsdel där vi använder hastighet, fordonsmodell och eventuellt utställd styrsignal för prediktering samt en uppdateringsdel med odometerdata och/eller GPS-data. För odometerdata kommer vi att använda den odometermodell som utvecklades av projektgruppen O hara s under vårterminen 2009. Mer information om modeller finns i kapitel 4.1.3. 4.1.2.2 Navigering Navigeringsklassen hanterar bandvagnens övergripande navigering. Det finns dels funktionalitet för manuella kommandon, dels för autonoma. Denna funktionalitet anropas via två olika execute-funktioner.

Autonom Bandvagn 7 Den första Execute-funktionen används i manuellt läge. L2-enheten får då in hastighet samt rotationshastighet från L1-enheten. Dessa räknas om till hastigheter för banden. Sedan utförs eventuell mättning. Vid autonomt läge undersöker Execute-funktionen först om bandvagnen ska stanna. Sedan kontrollerar funktionen om det finns nya koordinater att lägga till i navigeringslistan. Funktionen hanterar även om aktuell koordinatlista ska nollställas. Klassen tar även hand om beräkning av reglerfel i funktionen CalculateControlError. Vidare hanterar klassen den aktuella koordinatlistan med funktionen HandleTargets. Denna byter vid behov aktuell koordinat att reglera till. 4.1.2.3 Reglering När reglerfel beräknats och målkoordinat ställts in kan reglering utföras. Till att börja med kommer en enkel PD-regulator att användas. PD-regulatorn används för att reglera bandvagnens vinkel. För att ställa in denna regulator kan vi behöva utföra ett stegsvarsexperiment. För att reglera bandens grundhastigheter används en enkel if-sats. Om avståndet till aktuellt mål är mer än ett visst antal meter så används halva maxhastigheten. Annars används en hastighet som är proportionell mot avståndet till målet. Till denna grundhastighet adderas sedan de hastigheter som PD-regulatorn vill använda för att justera bandvagnens vinkel. Slutligen mättas dessa styrsignaler. I den tekniska dokumentationen från projektgruppen O hara finns ett avsnitt om utvecklingsmöjligheter, där de föreslår att man kan använda en MPC-regulator istället. Fördelen är att man då kan dra nytta av att navigationsenheten vet vilka brytpunktsmål som kommer efter nuvarande. Detta förslag kommer att testas om tid finns. 4.1.3 Modeller För att ha nytta av sensordata och för att kunna prediktera bandvagnens tillstånd behövs modeller. 4.1.3.1 Koordinatsystem Det finns fem stycken koordinatsystem definierade för systemet. Dessa koordinatsystem är: Fixt koordinatsystem (x 1, x 2, x 3 ) utgår ifrån robotens initalläge. x 1 sätts i den riktning som är rakt fram för roboten då den startar. x 2 pekar 90 åt vänster och x 3 rakt upp ur roboten. Origo i detta system anses vara robotens centrum i initialäget. Detta system kallas det fixa koordinatsystemet. GPS-koordinatsystem (x g1, x g2, x g3 ). x g1 -axel är i östlig riktning och x g2 -axel i nordlig riktning. Observera att dess orientering inte är känd vid start utan måste skattas efter hand som scout rör sig. Hädanefter kallas detta koordinatsystem det globala koordinatsystemet. Internt koordinatsystem (x s1, x s2, x s3 ) som är fäst vid scouten. Den första vektorn pekar alltid i robotens körriktning. Vid initialläget är detta koordinatsystem helt överlappande med det fixa men kommer efterhand rotera. Vinkeln från x 1 till x s1

Autonom Bandvagn 8 betecknas med ψ i intervallet ] π, π]. Detta koordinatsystem kallas det interna koordinatsystemet. IMU-koordinatsystem (x i1, x i2, x i3 ) som är fixt i det interna koordinatsystemet med origo i IMU:n. Hädanefter kallat IMU-koordinatsystemet. Kamerans koordinatsystemet (x c1, x c2, x c3 ) som är fixt i det interna koordinatsystemet med origo i kamerans optiska centrum och x 3 -axeln längs kamerans optiska axel. Koordinatsystemet kallas för kamerakoordinatsystemet. 4.1.3.2 Odometermodell Projektgruppen O hara s har tagit fram en modell för hur körd sträcka på banden görs om till en koordinat i det fixa koordinatsystemet. Den data som estimeringen får in av odometern består av körd sträcka på höger (r wheel ) respektive vänster (l wheel ) band. Först tas det föregående värdet bort för att få ändringen. (r wheel, l wheel ) ( r wheel, l wheel ) (a) Svängd vinkel (b) Ändring i koordinater Figur 3: Figurer vid omräkning av odometerdata Detta ska nu användas för att beräkna en positionsändring (i det fixa koordinatsystemet) samt en svängd vinkel ψ. Den medellängd som scouten färdats (c l - centerline i figur 3a) fås enligt c l = l wheel + r wheel 2 Vinkeln α kan då fås genom sambandet för båglängd c l = α r. Här är dock r okänd så istället identifieras sambanden (1) l wheel = α(r d 2 ) c l = αr r wheel = α(r + d 2 )

Autonom Bandvagn 9 där d är scoutens bredd (mellan vardera av bandens tyngdpunkter). Kombineras detta med ekv. (1) fås r wheel = α( c l α + d 2 ) = l wheel + r wheel + α d 2 2 r wheel l wheel = αd Vinkeln räknas allstå enligt ekvation (2). α = r wheel l wheel d Ur figur 3b ser vi att den sökta vinkeln ψ är samma som α ty (2) α + β + π 2 = π ψ + β + π 2 = π Ur denna figur fås även omräkningen till positionsändringen i kartesiska koordinater c l x s1 = sin( ψ) ψ (3) x s2 = c l (1 cos( ψ)) ψ (4) Omräkningen till de fixa koordinatsystemet kan sedan ske genom rotationsmatrisen ( ) cos(ψ) sin(ψ) R = sin(ψ) cos(ψ) där ψ är den totala vinkeln som roterats sedan start. 4.1.3.3 Fordonsmodell Projektgruppen O hara s har i sin tekniska dokumentation tagit fram en stor fordonsmodell. För att få modellen att fungera är det en del parameterbestämning som ska göras och justeringar på modellen måste eventuellt göras så att den överensstämmer hyfsat med verkligheten. Om odometermodellen ger dåliga resultat och om tid finns ger vi denna fordonsmodell en chans. Ett annat sätt att få fram en bra fordonsmodell som även är anpassad till den miljö scouten befinner sig i, är att låta scouten köra en viss initieringsrunda och sedan behandla datan i t.ex. Modelica där en fordonsmodell kan tas fram. Man kan då även få en uppfattning om hur bra modellen är. 4.1.4 Kommunikation med andra enheter Navigationsenheten använder sig av ett gränssnitt och skapar ett Socket-objekt då någon vill kommunicera med L2, på så sätt kan L2 prata med flera samtidigt. L2 är kopplad via USB till framdrivningsenheten och till masterenheten via WLAN.

Autonom Bandvagn 10 ID Namn Beskrivning 0 Heartbeat Kommando för att kontrollera att kommunikationen ej brutits. 1 Manual Styrsignaler i manuellt läge, hastighet samt rotationshastighet. 2 Automatic Styrkommandon i autonomt läge, innehåller koordinatlista. 3 ImageMeasurements Kameradata från en framtida kamera. 4 GPSData Positioner i x, y och z led från GPS:en. 5 WheelData Hastigheten hos de båda banden. 6 IMUData Data från en framtida IMU-enhet. 7 Status Statusdata som innehåller position, hastighet, vinkel och vinkelhastighet. 8 ImageProcessingData Data för en framtida bildbehandling. Tabell 3: Meddelandetyper för kommunikation mellan navigationsenheten och masterenheten. 4.1.5 Nätverksmodul Nätverksmodulen är en egen tråd som har hand om kommunikation mellan masterenheten och navigationsenheten. Den består av två klasser, en socketklass samt en nätverksklass. Socket är en hjälpklass som kapslar in hanteringen av sockets i C++ i en egen klass. Funktioner för att ansluta och lyssna på en port tillhandahålls, samt funktioner för att sända och mottaga data. Endast nätverksmodulen kommunicerar med socketklassen. Nätverksmodulen innehåller instanser av socketklassen för kommunikation till masterenheten. Vid start av programmet börjar modulen att lyssna efter en inkommande anslutning. När masterenheten ansluter går sedan nätverksmodulen in i en loop som kontrollerar om det finns data att sända eller att ta emot. Finns data att skicka, sänds denna iväg. Finns data att mottaga, tas data emot och kontrolleras. Varje meddelande består av en header följt av ett antal databytes. Headern består i sin tur av tre variabler bestående av meddelandetyp, längd utöver headern samt en checksumma. I tabell 3 visas en lista över möjliga meddelandetyper samt en beskrivning av dessa. 4.2 Framdrivningsenhet ARM Framdrivningsenheten har till uppgift att sköta regleringen av motorerna utifrån den önskade hastigheten från navigationsenheten samt sensordata från odometrarna. Den består av ett utvecklingskort (SAM7H64) från Olimex med en ARM-processor från Atmel (AT91SAM7S64) samt av två odometrar vilka är ansluta till motorerna och kopplade till utvecklingskortet. L2-enheten försörjer mikrokontrollern och de båda odometrarna med ström genom USB. 4.2.1 Komponenter Nedan följer ingående beskrivningar av komponenterna i delsystemet.

Autonom Bandvagn 11 4.2.1.1 Utvecklingskortet (SAM7H64) Utvecklingskortet vi kommer använda är framtaget av Olimex och är av typen SAM7H64. På utvecklingskortet sitter en ARM-processor med 64 Kbyte flashminne som kommer hantera all kommunikation med navigationsenheten, motorer och odometrar. Kommunikationen med navigationsenheten kommer ske via USB och det är även via detta gränssnitt som utvecklingskortet strömförsörjs. Utvecklingskortet kommer styra hastigheterna på bandvagnens motorer genom sammankoppling av Tx pinnen på utvecklingskortet och S1 på motordrivsteget. Kommunikationen är enkelriktad TTL RS-232 från utvecklingskortet till motordrivsteget. Odometerdata kommer att samlas in och lagras på utvecklingskortet för att mot begäran skickas till navigationsenheten och för att upprätthålla önskad vinkelhastighet på motorerna genom PID-reglering. Kommunikationen är enkelriktad TTL från odometrarna till utvecklingskortet. 4.2.1.1 Inkoppling av utvecklingskortet Inkopplingen av utvecklingskortet kommer ske enligt figur 4. Figur 4: Inkoppling till utvecklingskortet SAM7H64. 4.2.1.1 Programmering av utvecklingskortet Programmeringen av utvecklingskortet görs med en ARM-USB-TINY kontakt mellan utvecklingsdatorn och utvecklingskortet. För att sköta programmeringen i eclipse miljö krävs en del inställningar.

Autonom Bandvagn 12 4.2.1.2 Odometrar (US Digital E5-500-188-1-S-D-3-B) För att mäta hur mycket hjulen på bandvagnen vrider sig används två odometrar av typen E5-500-180-I-S-D-3-B från UD Digital. Odometrarna består av en optisk sensor och en skiva med 500 markeringar som är kopplad till det hjul vars rotation man vill mäta. Sensorn känner av när den passerar en markering och ger då ifrån sig en signal. Odometrarna har 3 kanaler, CHA, CHB och CHI. CHA och CHB går höga när sensorn passerar en markering och genom att se vilken av dem som går hög först kan man avgöra åt vilket håll hjulet snurrar. Om CHA går hög före CHB, och man ser odometern uppifrån med odometerns skal vänt uppåt, roterar hjulet medsols och tvärt om. CHI går hög då hjulet har snurrat ett varv. Odometrarna matas med 5 volt från motordrivstegets 5 volt utmatning. Genom att mäta tiden mellan pulserna kan vi sedan beräkna hjulens rotationshastighet. Anslutningar: Brun - jord Violett - Index Blå - CHA Orange - +5 volt Gul - CHB 4.2.1.3 Motorer (Sabertooth 2x25) Motorerna som driver bandvagnen styrs av ett drivsteg av modell Sabertooth 2*25. Drivsteget tar emot kommandon från mikrokontrollern och lägger sedan ut lämplig spänning till motorerna. Kommandon till drivsteget kan ges på flera olika sätt, men den metod vi kommer använda är simplified serial mode. Simplified serial mode innebär att man kontrollerar båda motorerna genom att skicka ett åtta bitars tal till drivsteget via RS-232. Om talet är 1-127 kontrolleras motor ett. 1 betyder full back, 64 betyder stop och 127 betyder full fart framåt. Om talet är 128-255 kontrolleras motor två, och hastighetsregleringen fungerar på motsvarande sätt som för motor ett. Om talet är noll stängs båda motorerna av. På drivstegets ovansida finns en DIP-switch och det är med hjälp av den som man ställer in vilket läge drivsteget ska arbeta i. Det finns även ett antal andra inställningar som man kan välja med hjälp av DIP-switchen. För att välja simplified serial mode ska switch 1 vara i övre läget och switch två i undre läget. Med hjälp av switch tre kan man välja en funktion som heter lithium cutoff, som gör att drivsteget varnar om batterierna håller på att bli urladdade. Lithium cutoff är aktiverad då switch tre är i nedre läget. DIP-switchen används i simplified serial mode dessutom för att ställa in baud rate, dvs. vilken hastighet vi skickar kommandon till drivsteget. Det finns fyra olika hastigheter och de kan ställas in med switch fyra och fem enligt figur 5. Hastigheterna 9600 och 19200 rekommenderas att börja med. Switch sex ska vara i övre läget, vilket gör att drivsteget arbetar i standard simplified serial mode. Detta används då vi inte har flera drivsteg inkopplade. Drivsteget kommer även användas för att bidra till strömförsörjningen av ARM-processorn och odometrarna. Inkoppling sker enligt figur 4.

Autonom Bandvagn 13 Figur 5: Konfiguration av DIP-switch. 4.2.1.3 PWM Som ett alternativ till simplified serial mode skulle pulsviddsmodulering, PWM, kunna användas för att få större säkerhet vid bruten kommunikation mellan ARM-enheten och motorerna. Scoutenheten är dock redan förberedd för att använda simplified serial mode varför denna metod kommer användas. 4.2.2 Styrprincip Framdrivningsenheten får styrkommandon från navigationsenheten innehållande önskad vinkelhastighet på vardera band. ARM-processorn reglerar hastigheten individuellt på varje sida och beräknar utsignaler till motorerna utifrån önskat börvärde och nuvarande bandhastighet. Nuvarande bandhastighet bestäms utifrån data från odometrarna. Regulatorerna för att reglera bandhastigheten är av PID-typ. Vi kommer använda oss av en PID-regulator med justering av I-delen för att motverka integratoruppvridning. Detta är nödvändigt då vi har begränsad styrsignal. Följande algoritm kommer användas till regulatorn: I n = I n 1 + K T s T i e n (5) v n = Ke n + I n + K T d T s (e n e n 1 ) (6) u max, v n > u max u n = v n, u min v n u max (7) u min, v n < u min I n = I n + T s T t (u n v n ) (8) där I n är I-delen, K förstärkningen, T s sampeltiden, T i integraltiden, e n reglerfelet, v n den beräknade styrsignalen, u n den verkliga styrsignalen och T d deriveringstiden.

Autonom Bandvagn 14 Justeringen av I-delen sköts av ekvation (8). När styrsignalen går in i en begränsning ger tilldelningen i ekvation (8) att I n reduceras. En tumregel för att välja T t är att välja den till T i. Övriga parametrar kommer bestämmas med hjälp av stegsvarsexperiment. Det ska vara möjligt att stänga av regulatorerna och reglera bandhastigheterna manuellt från masterenheten. 4.2.3 Kommunikation med andra enheter Framdrivningsenheten kommunicerar med navigationsenheten via RS-232 över USB. Från navigationsenheten skickas börvärden för regulatorerna till framdrivningsenheten. Framdrivningsenheten skickar tillryggalagd sträcka för de två olika banden till navigationsenheten. 5 Konventioner För att dokument och kod ska se enhetlig ut har vi kommit överens om följande konventioner. 5.1 Dokumentkonventioner Följande dokumentkonventioner ska användas: Inget stycke får sakna inledande text. Vid referering av en funktion använder man makrot texttt. 5.2 Kodkonventioner Följande kodkonventioner ska användas: Engelska ska användas vid all namngivning. Klasser har formen av substantiv i singularis, t.ex. Odometer eller namnet på modulen t.ex. NetworkModule. Metoder har formen Verb alternativt VerbSubstantiv, t.ex. Send, GetAngle. Klass- och metodnamn använder PascalCase, vilket innebär första tecknet i varje ord versalt. Datamedlemmar, lokala variabler samt parametrar använder camelcase, t.ex. operationlist. Inga understreck i namn på varken klasser, datamedlemmar eller metoder. Indentering är två positioner, mellanslag (space) inte tab. Curly-braces placeras på egen rad med samma indentering som föregående instruktion, sk. Allman indent style. Ett mellanrum runt operatorer, dock inte före eller efter parenteser i funktionsdefinitioner och funktionsanrop.

Autonom Bandvagn 15 För integrala typer används direkt anrop med värde, för större typer används konstantreferenser eller pekare. Samma för returtyper. Nedan följer ett exempel på hur kod i C++ ska formateras: c l a s s MyClass : p u b l i c ABase { p u b l i c : i n t MyMethod( i n t thisisaparameter ) ; p r i v a t e : AnotherClass data ; } i n t MyClass : : MyMethod( i n t thisisaparameter ) { i f ( thisisaparameter <= 4) { r eturn thisisaparameter 2 ; } } return thisisaparameter + 4 ; Referenser [1] Projektgruppen O hara s tekniska dokumentation. [2] Webbsidan: Qt - A cross-platform application and UI framework http: //qt.nokia.com/. [3] Projektgruppen O hara s kod. [4] Industriell reglerteknik, Kurskompendium, 2008.