Autonomous navigation in terrain using stereo optics and GPS Examensarbete inom högskoleingenjörsprogrammet i datateknik Alexander Däldborg, Eric Palm Institutionen för data- och informationsteknik CHALMERS TEKNISKA HÖGSKOLA Göteborg, Sverige 2024 www.chalmers.se EXAMENSARBETE 2024 Autonomous navigation in terrain using stereo optics and GPS ALEXANDER DÄLDBORG ERIC PALM Institutionen för data- och informationsteknik Chalmers Tekniska Högskola Göteborgs Universitet Göteborg, Sverige 2024 Autonomous navigation in terrain using stereo optics and GPS ALEXANDER DÄLDBORG ERIC PALM © ALEXANDER DÄLDBORG, ERIC PALM, 2024. Handledare: Sakib Sistek, Institutionen för data- och informationsteknik Examinator: Lars Svensson, Institutionen för data- och informationsteknik Examensarbete 2024 Institutionen för data- och informationsteknik Chalmers Tekniska Högskola SE-412 96 Göteborg Sweden Telephone + 46 (0)31-772 1000 Omslagsbild: Den slutgiltiga fordonsprototypen i olika miljöer. Göteborg, Sweden 2024 Autonomous navigation in terrain using stereo optics and GPS ALEXANDER DÄLDBORG ERIC PALM Institutionen för data- och informationsteknik Chalmers Tekniska Högskola Sammanfattning Syftet med detta projekt var att utveckla ett autonomt navigationssystem för ett terränggående fordon med hjälp av stereo-optik och GPS-teknologi. Systemet är utformat för att möjliggöra navigering från en punkt till en annan i terräng genom att upptäcka och undvika hinder. Viktiga komponenter inkluderar en stereo-optisk kamera för djupuppfattning i syfte att identifiera hinder, en GPS-modul för lokalisering och en Nvidia Jetson Orin Nano enkortsdator som data processing och navigering. Rapporten diskuterar metodologi, implementering och resultat, den belyser de utmaningar som har mötts och föreslår förbättringar för framtida utveckling. Sammantaget försöker projektet visa att genomförbarheten av att använda stereo-optik och GPS för autonom navigering i terräng är möjligt och lägger grunden för vidare forskning och utveckling inom teknologier för autonoma fordon. Abstract The aim of this project was to develop an autonomous terrain navigation system utilizing stereo optics and GPS technology. The system was designed to enable a prototype vehicle to navigate from one point to another in off-road environments by detecting and avoiding obstacles. Key components included a stereoscopic camera for depth perception and obstacle detection, a GPS module for geolocation, and an Nvidia Jetson Orin Nano single-board computer for processing and control. The report discusses the methodology, implementation, and results, highlighting the challenges encountered and suggesting future improvements. Overall, the project demonstrates the feasibility of using stereo optics and GPS for autonomous terrain navigation, providing a foundation for further research and development in autonomous vehicle technologies. The report is written in Swedish. Nyckelord: Autonomous navigation, stereo optics, GPS, A* algorithm, Nvidia Jetson Orin Nano, obstacle detection, terrain navigation Förord Vi vill uttrycka vårt tack till alla som har hjälpt till och bidragit till genomförandet av detta projekt. Ett särskilt tack riktas till vår handledare Sakib Sistek på Chalmers tekniska högskola som har delat med sig av sina kunskaper och erfarenheter. Alexander Däldborg, Eric Palm, Göteborg, Juni 2024 Akronymer Nedan är en lista med akronymer som har använts genom rapporten, listade i alfabetisk ordning: 3D - Three Dimensional AI - Artificial Intelligence API - Application Programming Interface CCD - Charge-Coupled Device CMOS - Complementary Metal-Oxide Semiconductor CUDA - Compute Unified Device Architecture cuDNN - CUDA Deep Neural Network library DC - Direct Current DGPS - Differential Global Positioning System GLONASS - Global’naya Navigatsionnaya Sputnikovaya Sistema GNSS - Global Navigation Satellite System GPS - Global Positioning System GPU - Graphics Processing Unit IMU - Inertial Measurement Unit IR - Infraröd ISO - International Organization for Standardization LiDAR - Light Detection and Ranging NHTSA - National Highway Traffic Safety Administration NTSC - National Television System Committee OOP - Object Oriented Programming PWM - Pulse Width Modulation RADAR - Radio Detection and Ranging RGB - Red Green Blue SAE - Society of Automotive Engineers SDK - Software Development Kit SLAM - Simultaneous Localization and Mapping SONAR - Sound Navigation and Ranging TensorRT - Tensor Runtime Innehållsförteckning 1. Inledning 1 1.1 Syfte 1 1.2 Mål 1 1.3 Avgränsningar 2 2. Teknisk bakgrund 3 2.1 Självkörande fordon 3 2.2 Nvidia Jetson 4 2.2.1 Enkortsdatorn Nvidia Orin Nano 4 2.3 Kameror 5 2.3.1 Kort om kamerans historia 5 2.3.2 Digitalt fotografi 6 2.3.3 Kameror i fordon 8 2.3.4 Stereo-optik med kameror 8 2.4 Navigerings algoritmer 9 2.4.1 SLAM 10 2.5 GNSS 10 2.5.1 Position och attityds bestämning 10 2.5.2 Adafruit ultimate GPS 11 2.6 Motordrivare 11 2.6.1 MDD3A 12 2.6.2 PWM 12 3. Genomförande 13 3.1 Planering 13 3.2 Utförande 13 3.2.1 Installation och konfiguration av mjukvara 14 3.2.2 Montering och test av hårdvara 14 3.2.3 Utveckling av navigations algoritmer 14 3.2.4 Implementering av styrsystem 14 3.2.5 Integrering av GPS-funktionalitet 15 3.2.6 Integration och sluttest 15 3.3 Design & montering av hårdvara 15 3.3.1 Placering av komponenter 15 3.4 Kodimplementering 17 3.4.1 Systemarkitektur 17 3.4.2 Kamera 19 3.4.3 Motor, Driver och GPS 20 4. Resultat 22 4.1 Navigering med GPS 22 4.2 Implementering av styrsystem med PWM-motorer 23 4.3 Detektering av hinder med kamera 23 4.4 Autonom navigation och huvudmål 25 5. Diskussion 26 5.1 Etiskt användande av sensorer 26 5.1.1 Användande av GNSS 26 5.1.2 Användande av kameror 26 5.2 GPS 27 5.2.1 Precision och tillförlitlighet 27 5.2.2 Höjdmätning 27 5.2.3 Bestämning av attityd 27 5.3 Kamera 28 5.4 Andra förbättringsmöjligheter 29 5.4.1 Batteri och energiförsörjning 30 5.4.2 Miljöanpassning 30 5.4.3 Sensorintegration 31 5.4.4 Systemintegration och Kommunikation 31 5.4.5 Säkerhet och Redundans 32 6. Källförteckning 33 Figurer Figur I: Principen bakom en aktiv sensor 7 Figur II: Estimerad position i två plan från tre satelliter 11 Figur III: Illustration av en PWM-signals funktion 12 Figur IV: Illustration av de olika komponenternas position 16 Figur V: Samtliga moduler och deras beroenden 17 Figur VI: Rutt vald av A* algoritm 19 Figur VII: Svänghastighet beroende på vinkelskillnad 20 Figur VIII: Flödesdiagram som beskriver navigeringen 21 Figur IX: Resultat - varierande precision med GNSS-modul 22 Figur X: Begränsningar i körförmåga 23 Figur XI: Detektering och undvikande av hinder 24 Figur XII: Sluttest - fordonets navigering från Jupiter till Kokboken 25 1. Inledning I takt med den teknologiska utvecklingen inom områden som artificiell intelligens och automatisering, har intresset för autonoma fordon ökat markant. Denna rapport fokuserar på att utveckla ett självkörande terränggående fordon som använder stereo-optik och GPS för att navigera autonomt. Genom att kombinera dessa teknologier går det förhoppningsvis att bidra till framtida lösningar inom trafiksäkerhet. Projektet innefattar en detaljerad undersökning av de teoretiska grunderna, praktisk implementering, samt en diskussion om resultaten och potentiella framtida förbättringar. 1.1 Syfte Bilolyckor utgör en allvarlig utmaning för samhällen världen över. Enligt en rapport från Transportstyrelsen registrerades 220 dödsfall och nästan 2000 allvarliga personskador i Sverige under 2022 [1]. Majoriteten av dessa olyckor tros ha orsakats av mänskliga misstag som ouppmärksamhet, trötthet eller felaktiga beslut [2]. Med den snabba utvecklingen inom teknik och artificiell intelligens finns det ett stort intresse för att utveckla lösningar som kan minska frekvensen av dessa tragiska händelser. Syftet med detta projekt är att undersöka möjligheten att utveckla ett självkörande fordon som kan navigera autonomt med hjälp av en stereo-optisk kamera. Självkörande fordon som kan navigera och fatta beslut utan mänsklig inblandning, erbjuder en potentiell lösning för att öka trafiksäkerheten och minska risken för olyckor. 1.2 Mål Projektets huvudmål är att utveckla ett terränggående fordon som kan navigera autonomt. För att säkerställa att huvudmålet uppnås så har det delats det upp i fyra mindre delmål: ● Geografisk Positionering och Kompassriktning: Utveckla mjukvara som gör att fordonet kan bestämma sin geografiska position och kompassriktning. ● Styrsystem: Implementera ett styrsystem som kan driva och styra fordonet. Detta system måste kunna hantera både acceleration och styrning för att navigera genom varierande terräng. ● Identifiering och Hantering av Hinder: Utveckla en förmåga hos styrsystemet att identifiera hinder och navigera förbi dessa. 1 ● Autonom Navigering: Möjliggöra autonom navigering till en given geografisk koordinat genom att integrera funktionalitet av stereokamera och GNSS-mottagare som tillsammans används för att skicka styrsignaler till motordrivaren. 1.3 Avgränsningar För att hålla projektets omfattning hanterbart och fokuserat på de viktigaste aspekterna, införs följande avgränsningar: ● Körande på vägar: Fordonet kommer inte att följa förplanerade rutter längs bilvägar. Istället kommer det enbart att identifiera hinder i sin omedelbara omgivning och försöka köra runt dessa. Detta begränsar fordonets användbarhet till off-road scenarier där väginfrastruktur inte är nödvändig. ● Komplexitet i trafiksituationer: Fordonet kommer inte att designas för att interagera med komplexa trafiksituationer som tät stadstrafik eller korsningar med trafikljus och skyltar. Dess användning är begränsad till enklare navigeringsuppgifter i mindre komplexa miljöer. ● Sensor-område: Fordonet kommer inte att hantera områden utanför kamerans synfält. Om ett fordon eller hinder kommer in bakom fordonet så kommer det inte att detekteras. Fokus är att hantera hinder direkt framför eller i sidled inom kamerans räckvidd. ● Miljö och väder: Fordonet kommer inte att anpassas för alla terräng- och väderförhållanden. Exempelvis kommer det inte att kunna navigera genom vattenområden som sjöar eller floder, eller genom extremt ojämn terräng med stora höjdskillnader. Gällande väderförhållanden kommer fordonet inte att fungera optimalt i extrem värme eller kyla, och elektroniken kommer inte att vara skyddad mot alla typer av nederbörd och damm. 2 2. Teknisk bakgrund 2.1 Självkörande fordon Självkörande fordon, även kallade autonoma fordon, är fordon som använder en kombination av sensorer, kameror, RADAR och artificiell intelligens (AI) för att navigera och köra utan mänsklig inblandning. Det finns flera organisationer som har definierat vad som utgör ett självkörande fordon, däribland ISO (International Organization for Standardization), NHTSA (National Highway Traffic Safety Administration) och SAE (Society of Automotive Engineers) [3][4][5]. Trots att dessa definitioner varierar något beroende på organisationens fokus, är de i stort sett likartade. Enligt den definition som SAE utger kan självkörande bilar delas in i sex olika nivåer, där de tre första nivåerna kräver att föraren aktivt arbetar för att styra fordonet själv [5]. Dessa nivåer är definierade enligt följande: ● Nivå 0 (Ingen Automation): Fordonet styrs helt manuellt utan någon automation. Föraren är ansvarig för all körning, inklusive styrning, acceleration och bromsning. Exempel på detta är äldre fordon utan moderna förarassistanssystem. ● Nivå 1 (Förarassistans): Inkluderar funktioner som farthållare och backsensorer. På denna nivå kan fordonet hjälpa föraren med antingen styrning eller acceleration/bromsning, men inte båda samtidigt. Ett exempel är adaptiv farthållare som kan justera hastigheten baserat på avståndet till framförvarande fordon. ● Nivå 2 (Delautomation): Fordonet kan styra och accelerera/bromsa samtidigt, men föraren måste övervaka körningen och vara beredd att ingripa vid behov. Detta inkluderar system som kombinerar adaptiv farthållare och filhållningsassistans, där bilen kan hålla sig i körfältet och anpassa hastigheten automatiskt. ● Nivå 3 (Villkorlig Automation): Fordonet kan köra självständigt under vissa förhållanden, men föraren måste vara beredd att ta över kontrollen om systemet begär det. På denna nivå kan fordonet hantera de flesta aspekter av körningen, men föraren måste fortfarande vara uppmärksam och redo att ingripa. Ett exempel är ett trafikstocknings- assistanssystem som kan köra bilen autonomt i låga hastigheter i köer. 3 ● Nivå 4 (Hög Automation): Fordonet kan köra självständigt utan mänsklig inblandning under fördefinierade förhållanden eller i specifika miljöer, såsom bostadsområden med låg hastighet eller motorvägar. Föraren behöver inte ingripa inom dessa områden, men fordonet kan be om hjälp i mer komplexa situationer utanför dess operativa domän. Ett exempel är självkörande taxitjänster i begränsade stadsområden. ● Nivå 5 (Full Automation): Fordonet är helt autonomt och kan hantera alla aspekter av körningen under alla förhållanden som en mänsklig förare kan hantera. På denna nivå finns det inget behov av en mänsklig förare, och fordonet kan operera i alla miljöer, från tät stadstrafik till landsvägar. Ett sådant fordon skulle inte ens behöva ha traditionella kontroller som ratt och pedaler. Det kommer att vara nödvändigt att utveckla nya och bättre sensorer för att kunna använda dessa i autonoma fordon då dagens sensorer är väldigt känsliga för omgivningen [6]. De vanligaste sensorerna som används för de självkörande fordon som existerar redan idag inkluderar RADAR, LiDAR och kameror. Ytterligare en utmaning är att tolka sensordata för att kunna identifiera och analysera omgivningen till fordonet [7]. Varje plats har speciella unika förhållanden som gör det svårt att ha en enda lösning som kan appliceras för hela världens vägnät och trafikförhållanden. 2.2 Nvidia Jetson Nvidia Jetson är en serie av inbyggda dator-plattformar som är speciellt utformade för att accelerera maskininlärning och artificiell intelligens (AI) [8]. Dessa plattformar utvecklas av Nvidia, ett ledande företag inom utveckling av grafikprocessor-enheter (GPU) och AI-teknologi. Jetson-plattformarna används ofta inom applikationer såsom robotik, autonoma fordon, drönare och industriell automation. 2.2.1 Enkortsdatorn Nvidia Orin Nano För att uppnå syftet med arbetet används en enkortsdator från Nvidia Jetson-plattformen av typen Orin Nano, som har valts på grund av dess höga prestanda och energieffektivitet. Orin Nano är utrustad med en 1024-kärnig Nvidia Ampere GPU, vilket ger tillräcklig processorkraft för avancerad bildbehandling och AI-beräkningar lokalt på enheten [9]. Detta innebär att systemet kan bearbeta bilder och fatta beslut i realtid utan behov av konstant nätverksuppkoppling till en extern server. Orin Nano har även låga strömkrav och kan operera på 7-15W, vilket är avgörande för applikationer där energieffektivitet är viktig. Dess kompakta storlek och låga vikt gör den lämplig för integrering i små och rörliga plattformar, såsom autonoma fordon och drönare. Dessutom stöds Orin Nano av ett omfattande ekosystem av hårdvaru partners och mjukvaruverktyg, vilket underlättar utveckling och implementering 4 av komplexa applikationer. Nvidia har också utvecklat en mängd verktyg och SDK (Software Development Kits) för att underlätta utveckling på Jetson-plattformen. Exempelvis erbjuder Nvidia JetPack SDK ett komplett utvecklingsmiljö-paket som inkluderar en optimerad Linux OS, CUDA, cuDNN, och TensorRT, vilket gör det möjligt att maximera prestandan på Jetson-enheter. 2.3 Kameror Kameror är ett av flera vanliga alternativ till sensorer för självkörande bilar [10]. En kamera är väldigt lämplig att använda för att kartlägga omgivningen då kameror tillåter flera tekniker för att både känna igen objekt och skapa 3D-modeller av det kameran kan se. I jämförelse med annan hårdvara såsom LiDAR och RADAR är kameror relativt billiga att använda men de har även ett antal nackdelar. Vid hård nederbörd och under nattetid fungerar de inte lika bra som de gör vid bättre väder och med dagsljus. Genom framgångar i djup maskininlärning går det att få precisare och mer naturliga bilder med teknologi som CGAN (Cycle Generative Adversarial Network) vilket hjälper att återställa bilder tagna under dåliga förhållanden till en nära-infraröd (NIR) bild [11]. Det finns även kameror som har byggt in stöd för högre dynamiskt omfång och nattseende men dessa kameror kan snabbt bli väldigt dyra och kan fortfarande ha det svårt under specifika förhållanden [10]. Ett ytterligare begrepp för kameror är fokallängd. Fokallängd är ett viktigt begrepp inom fotografering och avbildningsteknik som beskriver avståndet mellan kameralinsen och bildsensorn när motivet är i fokus [12]. Fokallängden mäts i millimeter (mm) och påverkar bildens synfält och förstoringsgrad. En kortare fokallängd ger ett bredare synfält (vidvinkel), medan en längre fokallängd ger ett smalare synfält (telefoto). 2.3.1 Kort om kamerans historia Konceptet av en kamera har sitt ursprung i Asien där den kinesiske filosofen Mozi beskrev principerna bakom kameran som en enhet som kan projicera en bild av dess omgivning på en vägg [13]. Den första kameran av denna typ tillverkades av Ibn al-Haitham omkring år 1000 e.kr men den första beskrivna användningen skedde inte förrän 300 år senare av den engelske filosofen Roger Bacon. Därefter skedde flertalet förbättringar men det var först år 1814 som det första fotografiet togs av den franske uppfinnaren Joseph Nicephore Niepce. Detta gjordes genom att täcka en tenn-platta med bitumen som sedan exponerades till det ljus som kameran fångade. Fotografisk film uppfanns av amerikanen George Eastman Kodak som även skapade ett företag under 1885 som producerade den historiska Kodak-kameran och senare även Brownie-kameran. Efter dessa framsteg gick det väldigt snabbt i utvecklingen men det tog fram till 1981 för nästa stora framsteg där den magnetiska videokameran Mavica lanserades av det 5 japanska företaget Sony. Den första helt digitala kameran kom från det japanska företaget Fuji films 1988 och i dagsläget är det främst digitala kameror som används i allt från professionell fotografering till de kameror som återfinns i mobiltelefoner. 2.3.2 Digitalt fotografi Digitalt fotografi skiljer sig från analog fotografi genom att använda en kamerasensor istället för kemisk film för att generera och spara en bild som en digital fil [14]. Upplösningen av bilden begränsas av kamerasensorn, som vanligtvis är av typen CCD (Charge Coupled Device) eller CMOS (Complementary Metal-Oxide Semiconductor). Båda sensorerna reagerar på ljus, men de fungerar på olika sätt. Majoriteten av moderna kameror använder någon av dessa två. 2.3.2.1 CCD-sensor CCD-sensorer fungerar genom att registrera graden av de tre primära färgerna rött, grönt och blått genom att gruppera tre pixlar tillsammans [14]. De flesta kameror som använder en CCD-sensor har en Bayer-mask som tillhandahåller ett rutnät för varje grupp av pixlar så att en pixel är reserverad för rött och blått, medan två pixlar är reserverade för grönt. CCD-sensorer fungerar genom fotoelektrisk effekt, där uppfångat ljus spontant omvandlas till elektrisk laddning. Känsligheten hos CCD-sensorn varierar beroende på kvantverkningsgraden på chippet, vilket är ett mått på hur effektivt fotoner omvandlas till elektroner. 2.3.2.2 CMOS-sensor CMOS-sensorer skiljer sig från CCD-sensorer genom att den innehåller en signalförstärkare inkorporerad i varje pixel [14]. På chipet finns oftast även en analog-digital omvandlare, medan denna i en CCD-sensor ligger utanför chippet. CMOS-sensorn kan därför direkt läsa signalen från varje pixel. CMOS-sensorn använder också ett Bayer-filter för att generera RGB-bilder. En av fördelarna med CMOS-sensorer är att de kan tillverkas billigare och med lägre strömförbrukning jämfört med CCD-sensorer. CMOS-sensorer tenderar däremot att ha mer bildbrus och dåligare prestanda i förhållanden med lägre ljus än CCD-sensorer. 2.3.2.3 Andra sensorer Det finns ett antal olika sorters sensorer som används på fordon som exempelvis kameran. De flesta kameror brukar generellt kunna se allt ljus mellan 380 och 750 nanometer men det finns också kameror som kan se våglängder som är mindre [15]. Även andra typer av sensorer såsom LiDAR, SONAR och 6 även RADAR kan vanligtvis förekomma på olika typer av fordon. Dessa sensorer samlar in information om omgivningen som sedan tolkas och används på olika sätt beroende på applikation. Sättet som de olika sensorerna tar in information skiljer sig lite åt då de arbetar inom olika spektrum av ljud och ljus. SONAR -sensorer sänder ljudvågor som ligger ovanför det mänskliga hörbara spektrumet [15]. Sensorn kan sedan uppfatta reflektioner från olika material där större impedans skillnad mellan två material reflekterar mer energi, medan material som absorberar eller låter ljudvågen passera igenom reflekterar mycket mindre energi. Fordonsapplikationer brukar utnyttja att impedans-skillnaden mellan luft och många andra material såsom metall från en annan bil är hög för att upptäcka dessa med SONAR . Några nackdelar med SONAR är den relativt låga ljudhastigheten på ≈340 m/s och att den har en maximal räckvidd som vanligen ligger mellan 2-6 meter. RADAR fungerar på ett liknande sätt som SONAR men använder elektromagnetiska vågor istället för ljud [15]. Det går att använda RADAR för att mäta exempelvis avstånd, hastighet och även riktning av objekt genom att skicka och mäta reflekterade signaler. RADAR har längre räckvidd, snabbare signalhastighet och högre upplösning än SONAR men är även dyrare och mycket känsligare för interferens.LiDAR fungerar likt RADAR och SONAR men sänder ut och läser reflektioner av laserljus istället för ljud eller ljus i andra spektrum [15]. LiDAR erbjuder hög precision och långa detekteringsavstånd och kan även skapa punktmoln för detaljerad 3D-modellering. Nackdelen är att LiDAR teknologin är komplex vilket leder till höga datavolymer och mer bearbetning av data, vilket även ökar energiförbrukning och därmed kostnaderna. Teknologin är även lätt påverkad av reflektion och absorption i jämförelse med RADAR vilket gör att LiDAR är väldigt svårt att använda under dåliga väderförhållanden då regn och annan nederbörd försämrar mätresultaten. Gemensamt för SONAR, RADAR och LiDAR är att de är samtliga aktiva sensorer, vilket innebär att de skickar ut en signal och sedan läser den reflekterade signalen för att inhämta information. Passiva sensorer behöver inte skicka ut en signal utan använder enbart reflektioner från andra källor såsom exempelvis våran sol. Principen bakom en aktiv sensor illustreras i figur I. Gällande kameror så finns även de som arbetar utanför det vanliga spektrumet av synligt ljus [15]. Flertalet applikationer brukar använda en av två olika varianter av infraröda kameror, passiva eller aktiva. Ett aktivt system skickar ut ljus inom det infraröda spektrumet och fångar upp det ljus som reflekteras för att 7 Figur I: Principen bakom en aktiv sensor generera en bild. Passiva system förlitar sig istället på att mäta värmestrålning vilket har en optimal våglängd mellan 8-15 mikrometer. Sensorerna som används för att se inom IR-spektrat är främst CMOS-sensorer som blivit optimerade för att vara känsligare för infrarött ljus. Sensorerna kan även ha filter och linser som är speciellt utformade för att maximera uppfångat IR-ljus genom att filtrera bort det synliga spektrumet. 2.3.3 Kameror i fordon Kameror har använts i bilar under en väldigt lång tid; det första företaget som använde kameror i bilar var Buick i deras Centurion modell från 1956 [15]. Marknaden för backkameror tog fart först vid år 2000/2001 med Nissan Infiniti Q45. De tidigare systemen använde inte digital teknik utan förlitade sig på video-kamerarör eller CCD (Charge-Coupled Device) sensorer. CCD-tekniken ersatte gradvis video-rör och digitala kameror började få mer popularitet med utvecklingen av mer moderna CMOS sensorer. Digitala kameror möjliggjorde förbättrad bildkvalitet. Nutida användningsområden för kameror i bilar varierar mellan mänsklig vision såsom back-kameror och även maskinell vision där fordonet kan analysera och hämta information från omgivningen. Utvecklingen av kommunikationsteknologier för digitala kameror i bilar har delvis varit fristående från utvecklingen av bildsensor-teknologierna. Till en början använde alla digitala bilkameror analog kommunikation, vanligtvis NTSC-standarden (National Television System Committee) då det var ett tidigare vanligt kommunikationsgränssnitt [15]. På senare tid har däremot ökande krav på högre bildkvalitet lett till att även kommunikationen för digitala kameror börjat skifta mot digital kommunikation. 2.3.4 Stereo-optik med kameror Vilket som var det första stereo-optiska riktmedlet är inte helt säkert, men ett av de första dokumenterade är kikaren som kom under sent 1600-tal [16]. Utvecklingen av stereo-optisk fotografi har sitt ursprung i England, där den engelske fysikern Sir Charles Wheatstone var först med att beskriva teorin [17]. Produktionen av stereo-grafer innebar att ta två bilder av ett motiv med två olika kameror, placerade med ett avstånd på ungefär 6 centimeter mellan varandra för att simulera avståndet mellan en människas ögon. Ett stereoskop användes sedan för att slå samman de två bilderna och ge en illusion av en tredimensionell bild. I moderna applikationer används stereo-optiska kameror för att skapa en djupkarta av en scen genom att mäta skillnaden i position hos objekt mellan de två kamerorna [18]. Kamerorna måste vara synkroniserade för att få noggranna resultat, vilket ofta uppnås med specialiserad hårdvara. Genom att använda flera djupbilder kan en disparitetskarta skapas, som kodar djup-informationen och kan användas 8 för att konstruera en 3D-modell av de scener som stereokameran har fångat upp. Denna teknik är avgörande för autonoma fordon, eftersom det gör det möjligt för fordonet att förstå och navigera i sin omgivning på ett effektivt sätt. Kamerans fokallängd spelar stor roll för djupseendet då det påverkar hur mycket av omgivningen som kan fångas och hur detaljerade dessa bilder blir [19]. Vidvinkelobjektiv med kort fokallängd används ofta för att få en bred översikt medan längre fokallängd kan användas för att fokusera på specifika detaljer på längre avstånd. Längre fokallängd innebär då att områden nära kameran inte syns och därmed inte kan mätas medan kortare fokallängd gör att objekt som är långt borta inte är i fokus och därmed inte mätbara. 2.3.4.1 Zed 2i Stereokameran som används är en Zed 2i från företaget StereoLabs [20]. Denna stereokamera erbjuder flera fördelar såsom avancerad rumslig uppfattning, djupuppfattning och rörelsespårning vilket gör den väldigt mångsidig och användbar för flertalet applikationer. Utöver dessa funktioner har stereokameran även en inbyggd IMU (Inertial Measurement Unit) som kan mäta stereokamerans relativa orientering, hastighet och position från där detta initierades. Stereolabs erbjuder även flertalet inbyggda lösningar för ett antal olika användningsscenarier vilket även gör stereokameran väldigt användarvänlig att använda. En av dessa är möjligheten att skapa ett punktmoln genom att använda stereokamerans djupseende vilket går att använda för navigering. Zed 2i använder en fokallängd mellan 2-4 mm beroende på vilken variant av produkten som används vilket gör att den kan se och mäta djup mycket nära kameran. 2.4 Navigerings algoritmer För att kunna navigera i punktmoln krävs någon form av algoritm som bestämmer vilken väg som ska följas. Det finns ett flertal varianter av algoritmer som går att använda för detta syfte. Dijkstra's algoritm kan användas för att hitta den kortaste vägen i en graf genom att iterativt bearbeta samtliga noder i ordning efter deras avstånd från startpunkten [21]. Det finns två primära strategier som används för att hitta noden med det minsta avstånds-värdet under varje iteration. En av dessa är att använda en lista av noder som söks igenom, vilket är en effektiv metod för täta grafer. Den andra strategin innebär upprättandet av en prioritetskö där samtliga noder ordnas efter deras avstånd från tidigare besökta noder, vilket resulterar i bättre prestanda för glest fördelade grafer. En annan algoritm som går att använda för att navigera är A* som använder både en beräknad och en uppskattad kostnad för avståndet mellan startnod och mål [22]. A* använder två listor, en öppen och en stängd lista där algoritmen först besöker den nod med lägst summerade kostnaden för både beräknat och 9 uppskattat avstånd för att nå målet. När en nod fullt evaluerats, det vill säga när både noden och dess grannar besökts läggs den till i den stängda listan då det inte längre finns någon anledning att besöka noden igen. 2.4.1 SLAM När området som navigeringen utförs i är dynamiskt eller okänt kan det ofta krävas en helt annan form av navigeringsalgoritm. SLAM (Simultaneous Localization and Mapping) används främst för simultan lokalisering och kartläggning för att hjälpa robotar eller fordon navigera och skapa kartor över miljö i realtid, vilket är särskilt användbart i scenarier där miljön är okänd eller ständigt förändras [23]. Detta görs genom att bearbeta sensorinformation och robotens position samt förhållandet mellan dessa. Sensor informationen kan komma från flera typer av sensorer såsom kameror, LiDAR och andra. 2.5 GNSS Ett Global Navigation Satellite System (GNSS) är ett rymdbaserat system som tillhandahåller positionsbestämning, hastighet och tidsinformation till användare över hela jorden [24]. Det finns ett flertal av dessa system såsom Global Positioning System (GPS), "Global’naya Navigatsionnaya Sputnikovaya Sistema" (GLONASS) och Galileo Global Navigation Satellite System (Galileo) där respektive system drivs av USA, Ryssland och Europeiska Unionen. Systemen fungerar till stort sett på samma sätt där de främsta skillnaderna är antalet satelliter, vilka områden som de täcker, signalfrekvenser de arbetar på samt noggrannhet och precision. 2.5.1 Position och attityds bestämning Att bestämma en position i tre dimensioner med satellitbaserade system kräver att 4 eller fler satelliter används för mätning av avstånd [24]. För att bestämma en geografisk position i latitud och longitud, krävs endast tre satelliter. En position bestäms geometriskt genom att mäta avståndet till de satelliter som mottagaren tar emot data från. Mottagaren kan ha ett i klock förskjutning vilket ger en viss felaktighet i positionen som uppmätts. Noggrannheten i positionen påverkas av följande faktorer: ● Noggrannheten i varje satellitposition ● Noggrannheten i avståndsmätningen ● Den geometriska beräkningen 10 Det är även möjligt att bestämma hastighet och attityd av fordon eller andra objekt med GNSS mottagare. Hastigheten går att bestämma genom att använda Doppler-principen för radiosignaler då den relativa rörelsen av satelliterna till fordonet är mätbar. För att bestämma attityd krävs minst tre mottagare, ofta representerade i referensram där en enskild mottagare motsvarar “norr-”, “öst-” samt “upp-” axlar. Traditionellt så härleds attityd-parametrar från tröghetsnavigeringssystem eller elektroniska enheter men framväxten av billigare men högpresterande GNSS mottagare möjliggör pålitlig och noggrann attityd. För projektets syfte räcker det med att kunna bestämma fordonets position i latitud och longitud. I figur II illustreras hur en position i två plan bestäms genom triangulering. 2.5.2 Adafruit ultimate GPS Adafruit är ett företag som grundades 2005 av Limor Fried i syfte att skapa ett online forum för att lära alla åldrar elektronik [25]. GNSS-modulen som används är en Adafruit Ultimate GPS som är byggd runt ett MTK3339 chipset och kan följa upp till 22 satelliter på 66 olika frekvenskanaler [26]. Den kan uppdatera platsdata upp till 10 gånger per sekund och ska kunna bestämma både position och höjd. 2.6 Motordrivare Motordrivare är en vital del av alla projekt som använder någon form av motor då dessa tillhandahåller strömstyrka, strömriktning, spänning och flertalet moduler skyddar även mot farliga nivåer av dessa [27]. Genom att ansluta en motordrivare till en mikrokontroller eller enkortsdator kan ett enkelt gränssnitt etableras vilket tillåter anpassning av inställningar såsom acceleration, deceleration och andra parametrar för bättre systemprestanda. Motordrivare är mycket viktiga inom stora delar av den industriella världen där precision och noggrannhet är högsta prioritet. 11 Figur II: Estimerad position i två plan från tre satelliter. P är position, ∆q är felmarginal, S1-3 är satelliter och R1-3 är avståndet mellan position och satellit. 2.6.1 MDD3A Fordonet använder två stycken 9-volts DC-växelmotor och för att kunna styra båda motorerna från samma motordrivarkort används ett MDD3A från Cytron Technologies [28][29]. Motordrivarkortet kan operera mellan 4-16 volt vid 3 Ampere vilket är tillräckligt för båda motorer som används. Enkortsdatorn som används kan anslutas till motordrivarkortet genom PWM-portar vilket då möjliggör kontrollerad styrning av båda motorerna enskilt. 2.6.2 PWM För att kunna driva en elmotor via en digital signal används ofta Pulse Width Modulation, eller PWM för att simulera en analog signal [30]. Genom att skapa en våg som snabbt växlar mellan på och av simuleras en annan spänning vilket visas i figur III. För projektets ändamål används en spänning mellan 0 och 3.3V med frekvensen 50Hz för att styra de elmotorer som används. 12 Figur III: Illustration av en PWM-signals funktion 3. Genomförande 3.1 Planering Arbetet är uppdelat i flera etapper för att möjliggöra fokusering på de mer komplexa delarna av projektet. Nedan följer en plan som beskriver varje etapp i genomförandet: 1. Teoretisk bakgrund: Initialt kommer fokus att ligga på att samla in relevant teoretisk information. Detta inkluderar forskning om självkörande teknologier, algoritmer för identifiering av hinder och navigering. 2. Implementering av hårdvara: Nästa steg är implementeringen av stereokameran och monteringen av hårdvaran. Här ingår också utvecklingen av algoritmer för identifiering av hinder och vägval för navigering. Parallellt kommer mjukvaran för motorstyrning att utvecklas. 3. GPS-funktionalitet: Efter att kameran och motorstyrningen är implementerade, kommer GPS-funktionalitet att läggas till. Detta steg inkluderar att få fordonet att identifiera sin geografiska position och kompassriktning. 4. Integrering av system: När både kameran och GPS-funktionaliteten är på plats, kommer dessa att integreras till ett övergripande styrsystem som kan fatta beslut om navigering baserat på inhämtade data. Mjukvaran kommer primärt att skrivas med programmeringsspråket Python på en Nvidia Jetson Orin Nano i Linuxmiljö. Python används då det var ett av tre språk som hade mjukvarustöd i de API:er som används och var det enklaste av dessa att implementera. När varje etapp är genomförd kommer enhetstester att genomföras. Slutligen kommer ett integrationstest att genomföras där projektets huvudmål ska försöka uppnås genom att försöka få fordonet att autonomt navigera mellan entren till Kuggen vid campus Lindholmen till ingången vid hus Saga utan att köra på något hinder. 3.2 Utförande Initialt låg fokus på att undersöka och beställa hårdvara samt att samla in teoretisk bakgrundsinformation för att hitta lösningar på förväntade problem. Den initiala tidsplanen visade sig vara optimistisk då leveransen av beställd hårdvara tog längre tid än förväntat. När hårdvaran väl var tillgänglig fortsatte arbetet enligt den ursprungliga planen. Dessa steg hjälpte till att säkerställa en strukturerad och noggrann implementeringsprocess, vilket var nödvändigt för att uppnå projektets mål. 13 3.2.1 Installation och konfiguration av mjukvara Efter att tillgång till hårdvara blev tillgängligt påbörjades arbetet med att förbereda och sätta upp projektets hårdvara. En speciell version av operativsystemet Ubuntu installerades på enkortsdatorn, Nvidia Jetson Orin Nano. För att stödja bildbehandlingen installerades nödvändiga bibliotek och beroenden, inklusive CUDA, cuDNN och TensorFlow. Python-miljöer konfigurerades med de verktyg som behövdes för projektet, vilket möjliggjorde en smidig utvecklingsprocess. 3.2.2 Montering och test av hårdvara Med all hårdvara tillgänglig, monterades ett chassi med tillhörande motorer. Ett chassi med larvband valdes för dess goda terrängförmåga och möjlighet att bära nödvändig hårdvara. Motorerna anslöts och testades för att säkerställa att de kunde hantera den förväntade vikten och ge tillräcklig kraft. Stereo kameran installerades och testades noggrant. Den inbyggda mjukvaran från Stereo Labs verifierade kamerans funktionalitet. Egna skript utvecklades för att initiera kameran och läsa av djupdata. 3.2.3 Utveckling av navigations algoritmer Med hårdvaran på plats, började utvecklingen av algoritmer för navigering. Dessa algoritmer använder data från stereo kameran för att identifiera hinder och planera rutter. Bildbehandlingsalgoritmer implementerades för att identifiera hinder i omgivningen. En disparitetskarta från stereo kameran användes för att beräkna avståndet till hinder och skapa en djupkarta. Navigationsalgoritmer som A* implementerades för att planera den bästa möjliga vägen baserat på djupdata och identifierade hinder. Dessa algoritmer testades i simulerade miljöer för att säkerställa att de fungerar korrekt innan de implementerades på det fysiska fordonet. 3.2.4 Implementering av styrsystem För att driva motorerna baserat på navigationsalgoritmerna utvecklades ett styrsystem. Detta system testades genom att låta fordonet köra förutbestämda sträckor och genomföra svängar. PWM användes för att kontrollera motorernas hastighet och riktning. Ett tvåkanaligt motordrivarkort från Cytron Technologies anslöts till motorerna och enkortsdatorn för att möjliggöra kontrollerad styrning av båda motorerna. Testerna inkluderade justeringar i mjukvaran för att kompensera för eventuella avvikelser och förbättra prestandan. 14 3.2.5 Integrering av GPS-funktionalitet GNSS-modulen anslöts och konfigurerades för att ge realtidsdata om latitud och longitud. Mjukvara utvecklades för att beräkna avstånd och riktning mellan två koordinater. GNSS-modulen Adafruit Ultimate GPS anslöts till Nvidia Jetson Orin Nano via en seriell anslutning. Drivrutiner och mjukvara installerades för att möjliggöra kommunikation med GNSS-modulen. Mjukvara utvecklades för att ta emot och bearbeta GPS-data, beräkna avstånd och riktning till målkoordinater. Funktionaliteten testades genom att jämföra de värden som modulen gav med faktiska koordinater från webbtjänster som Google Maps. 3.2.6 Integration och sluttest Slutligen integrerades alla delsystem för att skapa ett komplett styrsystem som kan navigera mot ett mål och undvika hinder. Navigeringsalgoritmerna kombinerades med GNSS-funktionaliteten för att skapa ett sammanfogat system. Kamerans funktionalitet och GNSS-positionering används tillsammans för att kontinuerligt justera fordonets kurs och undvika hinder. Ett omfattande integrationstest genomfördes där fordonet navigerade från startpunkt till en målpunkt utan att kollidera med några hinder. 3.3 Design & montering av hårdvara Då syftet med projektet är att skapa en prototyp till ett terränggående fordon gjordes ett val där fordonet använder larvband för att förflyttas. Larvband fungerar bra i de flesta olika terrängmiljöerna där fordonet kan komma att testas, såsom i skog, sand och asfalt. Chassit valdes främst då det tillhörde motorer och larvband samt att monteringsytan var tillräckligt stor för att montera all hårdvara som används för att genomföra arbetet. 3.3.1 Placering av komponenter Hårdvaru fixturen designades i Autodesk Inventor och tillverkades senare med en 3D-skrivare. Detta tillvägagångssätt valdes för att snabbt och enkelt kunna göra justeringar vid behov, samt för att skapa en lätt konstruktion jämfört med alternativa material som metall eller trä. Komponenternas placering och anledningen till dessa beskrivs nedan i text och illustreras även i figur IV. Fixturen innehöll all hårdvara bortsett från själva chassit, motorer och larvbanden vilket gör att placeringen av komponenter blir vital för att de ska uppfylla sitt syfte. Centralt placerat inuti fixturen är det batteri som används för att driva all elektronik. Detta batteri är en powerbank på 15 50´000 mAh med substantiell tyngd vilket gjorde att den placerades centralt för att minimera den påverkan som tyngden gör på masscentrum. Figur IV: Illustration av de olika komponenternas position Kameran monteras framtill och högt för att maximera sensorernas möjlighet att läsa av och inhämta information om omgivningen. Den höga och främre placeringen av stereokameran innebär även att det blir en död zon precis nedanför fordonet där ingen sensor kan se, vilket skapar ett behov av en mänskligt genomförd kontroll före körning. GNSS-modulen monteras så att den har fri sikt och inte är täckt av någon del av fixturen eller annan hårdvara. Syftet är att minimera riskerna med att inte hitta någon fix för satelliterna som krävs för att bestämma fordonets position. Invid GNSS-modulen placeras även motordrivarkortet som placeras så att den enkelt kan kopplas till de båda motorer som används samt till PWM-anslutningar på enkortsdatorn. Centralt ovanpå fixturen, ovanför batteriet placeras enkortsdatorn så att den enklare kan anslutas till samtliga komponenter. Den hålls på plats av ytterligare en 3D-printad fixtur som även är till för att förhindra oönskade förflyttningar av batteriets position. 16 3.4 Kodimplementering Eftersom en stor del av arbetet involverade utveckling och implementering av mjukvara för att möjliggöra navigation med det byggda fordonet, har vi ägnat ett dedikerat kapitel åt att beskriva de mest kritiska funktionerna mer utförligt. 3.4.1 Systemarkitektur Systemet designades enligt en klient-server-princip för att separera den kod som kördes på fordonet från den som kördes lokalt. Denna uppdelning underlättar modulär utveckling och tydliggör systemets olika delar. Klienten användes för att skicka direkta styrsignaler till fordonet, såsom vilket läge som skulle användas eller vilken destination som valts. Figur V: Samtliga moduler och deras beroenden Serveren var själva koden till fordonet som tog emot styrkommandon och utföra de uppgifter som gavs. Denna uppdelning användes för att hålla systemets olika delar tydligt separerade och för att underlätta för en modulariserad utvecklingsmiljö. Valet gjordes även att fordonet skulle kunna köras både autonomt och manuellt. Det sistnämnda implementerades till stor del för att underlätta för testning under utvecklingen av systemets olika moduler. I linje med ovanstående designades även systemet enligt OOP 17 (objektorienterad programmering) principen med tydliga uppdelningar av de olika modulerna som används i syfte att värna om “hög kohesion, låg koppling” och för att undvika cykliska beroenden. Den hierarkiska moduluppdelningen illustreras i figur V. 3.4.1.1 Controller Den klass som hanterar initiering och koordinering av de olika delsystem som används. Här skapas alla de instanser av klasser som används och här skapas även den grundläggande hierarkin. Här startas även en separat tråd som används för att ta emot nätverkstrafik från en potentiell klient. För att undvika potentiella problem med att synkronisera server och klient så används en intern klass som är skyddad bakom ett primitivt trådlås för att hantera informationsutväxling mellan server och klient. Här återfinns även programmets huvud-loop som hanterar ifall programmet ska befinna sig i viloläge, autonomt läge eller manuellt läge. 3.4.1.2 Manual Manual-klassen innehåller primärt den loop där programmet hamnar ifall manual läge är valt, den enda som sker här är kamera uppdateringar som kontrollerar att fordonet inte har en orimlig vinkel vilken kan leda till vältrisk. De manuella styrkommandon som skickas till motorerna hanteras direkt av den tråd som hanterar nätverkskommunikation. 3.4.1.3 Autonomous Autonomous-klassen innehåller primärt den loop där programmet hamnar ifall autonomt läge är valt och innehåller all logik som är direkt anknuten till autonom navigering. För en utförlig beskrivning om hur navigeringen sker se avsnitt 3.4.3.3 3.4.1.4 Client Denna klass ansvarar för all användarinteraktion på klient-sidan och den gör det med hjälp av ett enkelt grafiskt gränssnitt skapat med python-modulen TKinter. Gränssnittet ger användaren möjlighet att ansluta till en specifik IP-adress, välja destination i det geografiska koordinatformatet samt välja mellan viloläge, autonomt läge eller manuellt läge. 3.4.1.5 Commands Klassen är grunden till de kommandon som går att skicka från en klient till servern. här utnyttjas en form av kommandomönster för att underlätta framtida utbyggnad. Klassen definieras hos både klienten och 18 servern. Skillnaden mellan dem är att de individuella kommandon som finns att tillgå är enbart definierade hos klienten medan i servern är de både definierade och implementerade. Alla kommandon exekveras hos servern. 3.4.2 Kamera Detta projekt använder en stereokamera som sensor för att fordonet ska få en uppfattning om omgivningen och för att kunna skapa en avbildning av terrängen i form av en mesh. Denna mesh används sedan för att skapa en väg som fordonet kan följa. 3.4.2.1 Avbildning av omgivning Avbildningen av omgivningen sker i flera steg som kombinerar stereovision och bildbehandling genom att stereokameran fångar två bilder och beräknar djupinformation för varje pixel i bilden. Detta används sedan för att skapa en mesh som används för att navigera. Djupet i bilden beräknas från dispariteten med hjälp av kalibreringsdata, vilket i tur beräknas som skillnaden i horisontell position mellan samma punkt i de två olika bilderna. Djupet går därefter att beräkna med formeln där Z är djup, ƒ är𝑍 = ƒ × 𝐵 𝑑 fokallängd, B är baslinjeavstånd och d är disparitet. Funktionalitet för djupberäkning är inbyggt i kameran och har utnyttjats i projektet. För att uppnå en bättre avbildning har kamerans interna inställningar finjusterats för att med bättre noggrannhet kunna avbilda omgivningens terräng. Stereokameran initieras även med ytterligare ett flertal sensorer vilket inkluderar rörelsesensorer vilket hjälper att ge en mer exakt representation av omgivningen mellan olika bilder. Kameran fångar kontinuerligt bilder och uppdaterar en 3D-karta som sparas i Camera-modulen över tid för att möjliggöra kontinuerlig navigering och ruttplanering. 3.4.2.2 Algoritmer För att navigera används flera algoritmer som bidrar till att bestämma vilken väg som ska följas i punktmolnet. Punktmolnet består av en mängd noder som sållas bort av ett filter ifall dessa anses ha en lutning som överstiger ett acceptabelt värde. 19 Figur VI: Rutt vald av A* algoritm, rödmarkerade noder visar vald rutt. A* algoritmen kan välja mellan noder som bedöms vara körbara efter att tidigare nämnda filter appliceras igen för att bestämma om en nod är körbar eller ej. Ett möjligt vägval illustreras i figur VI. 3.4.3 Motor, Driver och GPS I syfte att kunna navigera har, som tidigare nämnt, en stereokamera använts för att avbilda omgivningen och därefter planera en färdrutt. Navigeringen följer den väg som algoritmen valt ut. 3.4.3.1 Styrsystem För att kunna driva fordonet används två elektriska motorer som styrs med hjälp av två PWM-signaler och två binära signaler. Dessa används för att justera hastighet och riktning på motorerna. Speciella funktioner används för att hantera svängar och backning. Svängar utförs med hjälp av en sinusfunktion: där a är𝑓(𝑥) = 𝑎 𝑠𝑖𝑛(( 𝑥 360 ) × 2π) nuvarande satt max PWM-signal i procent och x är vinkelskillnad mot mål-nodel i grader. Funktionen ger ett värde som då skapar en PWM-signal till vänster och höger motor beroende på vilket håll fordonet ska svänga. Hastigheten som fordonet svänger illustreras i figur VII. För att fordonet ska kunna backa så skickas en binär signal till motordrivaren som då gör att de båda elmotorerna sätts i ett läge som gör att de backar istället för att köra framåt där PWM-signalen istället agerar broms. 3.4.3.2 GNSS För att avgöra om fordonet har nått målpunkten används en GNSS-modul som kontrollerar om fordonets latitud- och longitudkoordinater är inom en angiven felmarginal från målet. GNSS-modulen ansluts via en seriell anslutning till enkortsdatorn som då skickar kommandon för att ställa in uppdateringsfrekvens och dataformat. Därefter skapas en ny tråd där GNSS-modulen ansluter till flera satellitnavigeringstjänster, inklusive GPS och GLONASS för att bestämma position och beräkna avstånd samt riktning till det angivna målet. Dessa beräkningar utförs med hjälp av haversine-formeln vilket gör det möjligt för fordonet att korrigera sin kurs och nå målet. 20 Figur VII: Svänghastighet beroende på vinkelskillnad. Vid högre vinkelskillnader reduceras svänghastigheten för att minimera ryckigt beteende. 3.4.3.3 Fullständiga navigeringssystemet Den tidigare omskrivna navigerings algoritmen A* med tillhörande filter och styrsystemet kopplas samman med GNSS-modulens funktionalitet för att uppnå självstyrning mot ett angivet mål. Modulen används för att kontinuerligt kontrollera om fordonet har nått den fördefinierade målpositionen och fortsätter annars att beräkna och följa en väg som går i riktning mot målpunkten. Detta beteende illustreras i figur VIII. 21 Figur VIII: Flödesdiagram som beskriver navigeringen 4. Resultat Kapitlet analyserar resultatet från projektets genomförande. Då projektets huvudmål delats upp i flera mindre delmål kommer dessa att utvärderas individuellt för att avgöra om projektet har lyckats uppnå huvudmålet som gick ut på att skapa en prototyp till ett självkörande fordon som kan navigera autonomt. 4.1 Navigering med GPS Målet var att utveckla mjukvara som gjorde att fordonet kunde bestämma sin geografiska position och dess kompassriktning genom användandet av en GNSS-modul från Adafruit. Detta mål har till viss del uppnåtts då det är möjligt att bestämma geografisk position. Tyvärr så är det väldigt beroende på vart GNSS-modulen befinner sig. När modulen lyckas få en stark fix och mottagning till de satelliter som används för att bestämma den geografiska positionen har den en felmarginal på omkring 3 meter. Ibland får modulen väldigt fel när den inte lyckas få en bra anslutning vilket illustreras i figur IX. Modulen och mjukvaran fungerar som bäst när modulen är utomhus och inte täckt av något ovanför. Figur IX: Resultat - varierande precision med GNSS-modul I figur IX är markör “A” den plats som fordonet befinner sig på. Pil “B” och den gula cirkeln är vart GPS-modulen tror att den befinner sig, där den gula cirkeln visar rapporterade felmarginalen i mätningen. Målet med att bestämma fordonets kompassriktning med hjälp av GNSS-modulen har inte uppfyllts då detta visade sig vara en funktionalitet som den använda GNSS-modulen inte har inbyggt. Detta visade sig senare inte vara nödvändigt för att kunna genomföra navigeringen då denna funktionalitet gick att simulera med hjälp av den stereokameran som använts för projektet. Stereokameran har en inbyggd 22 magnetometer som kan avgöra hur mycket kameran har vridits vilket använts istället. Detta har inneburit en begränsning då kameran alltid behöver startas i en rak nordlig riktning (0° N) för att kunna användas som kompassriktning. 4.2 Implementering av styrsystem med PWM-motorer Styrsystemet skulle ha möjlighet att driva och styra fordonet genom varierande terräng som fordonet kunde tänkas befinnas i. Detta mål har uppnåtts med ett fåtal begränsningar. Fordonet kan köra på plan mark inom- och utomhus samt köra i lutningar som inte överstiger 25° då fordonets tyngd antingen får den att välta och på grund av att motorerna inte är tillräckligt starka för att driva det framåt. Dessa begränsningar illustreras i figur X. Fordonet har även möjlighet att svänga under körning och stillastående på plats (neutral styrning) samt förmågan att backa. Figur X: Begränsningar i körförmåga Trots valet av larvband som kontaktyta med marken finns ett antal hinder som inte kan övervinnas då dessa helt enkelt är för stora för fordonet. Helt vertikala hinder är också ett problem beroende på vilket material hindret består av då larvbanden inte biter fast i terrängen och enbart glider på kontaktytan. Exempelvis fungerar det att klättra över en kort vertikal jordhög men inte över en träbit som är lika hög. 4.3 Detektering av hinder med kamera Styrsystemet hade även som mål att kunna identifiera hinder och dynamiskt navigera förbi dessa. Inledningsvis var planen att använda algoritmer för bildigenkänning och stereoskopisk avbildning av terrängen genom användandet av stereo kamerans djupseende. Detta mål har till stor del uppnåtts enbart med hjälp av den stereoskopiska avbildningen. Styrsystemet beräknar normalvärden för de noder som identifierats och ifall dessa överstiger ett acceptabelt värde så anses dessa vara omöjliga att köra över. Innebörden av detta är att hinder som är för stora eller branta helt enkelt inte ses som terräng som kan 23 navigeras över. En illustration av undvikandet av ett hinder visas nedan i figur XI. Ett problem som kan uppstå är likt tidigare nämnt att små vertikala hinder fortfarande kan utgöra ett problem ifall dessa hamnar mellan två noder som anses vara körbara ifall materialet inte tillåter larvbanden att få grepp. Figur XI: Detektering och undvikande av hinder 24 4.4 Autonom navigation och huvudmål Delmålet var att integrera stereo-kamerans funktionalitet med GNSS-modulen så att dessa tillsammans kunde skicka signaler till styrsystemet för att uppfylla projektets huvudmål, att skapa ett fordon som autonomt kan navigera mellan två punkter. Både delmålet och huvudmålet anses ha blivit uppfyllda då fordonet lyckades genomföra det slutgiltiga testet som innebar att det skulle autonomt navigera från entren vid hus Jupiter till entren utanför Kokboken på campus Lindholmen. Vägen som fordonet körde visas i figur XII. Fordonet lyckades genomföra detta slutgiltiga test utan att köra på något hinder som förhindrade fordonets körförmåga. Fordonet stötte på ett fåtal problem när människor gick framför den under körning, ibland fortsatte den köra antingen rakt fram eller genom att försöka köra runt personen och några gånger fastnade den utan att köra vidare. Eftersom detta var en tidigare känd begränsning så anses slutmålet ändå ha uppnåtts. 25 Figur XII: Sluttest - fordonets navigering från Jupiter till Kokboken 5. Diskussion I detta kapitel diskuteras projektets användande av sensorer och etik som berör detta användande. Vidare diskuteras implementeringen av dessa sensorer och andra möjliga förbättringspunkter. 5.1 Etiskt användande av sensorer I detta projekt har båda kamera och GNSS (GPS & GLONASS) använts som sensorer. Användningen av dessa teknologier presenterar ett flertal etiska dilemman som främst berör integritet, samtycke och säkerhet. 5.1.1 Användande av GNSS Användande av GNSS-teknologi medför ett flertal etiska dilemman, främst angående integritet då teknologin möjliggör spårning av användaren i realtid. Denna typ av spårning kan missbrukas för att övervaka, kontrollera och på andra sätt göra intrång i användarens personliga integritet. I detta projekt används GNSS-modulen för att spåra fordonets- och inte användarens platsdata vilket reducerar risken för att detta ska inträffa. Däremot finns fortfarande en risk att denna data kan användas för att kartlägga användarnas beteenden ifall fordonet ofta används nära en specifik geografisk plats. Lagar och regler existerar för att skydda individers integritet men tyvärr finns inget lätt sätt att komma undan denna risk, användandet av denna teknologi bör enbart ske i samtycke med användaren. Ett annat etiskt dilemma är GNSS-modulens tillförlitlighet och precision. Ifall modulen tar emot och tolkar data felaktigt kan detta leda till navigationsproblem, vilket kan ha allvarliga konsekvenser för miljö ifall fordonet skulle köra ned i exempelvis sjö eller hav. Under all testning har fordonet varit under kontinuerlig övervakning för att säkerställa att fordonet inte skulle köra in i miljöer som ansågs vara känsliga och lätt påverkade. 5.1.2 Användande av kameror Att fotografera en individ eller dess egendom kan vara ett intrång i dennes personliga integritet och även med samtycke kan det utgöra en säkerhetsrisk ifall denna data hamnar i fel händer. Detta då känslig information som berör individers säkerhet och välbefinnande kan oavsiktligt avslöjas. I detta projekt har kamerateknologi använts för att avbilda fordonets omgivning och inte specifika individer eller objekt, men risken kvarstår att oavsiktlig avbildning av dessa förekommer. I offentliga 26 utrymmen är det mycket svårt att komma undan detta då det inte är praktiskt möjligt att informera varje individ som kan komma inom sensorns räckvidd. För att minimera risken med att sprida känslig information har de avbildningarna som används i rapporten valts ut för hand. 5.2 GPS GPS-modulens prestanda är en avgörande faktor för att uppnå exakt och pålitlig autonom navigering i vårt projekt. Under projektets gång har vi identifierat flera viktiga aspekter och utmaningar kopplade till användningen av GPS-teknologi: 5.2.1 Precision och tillförlitlighet En av de största utmaningarna med GPS-modulen var att säkerställa hög noggrannhet i positioneringen. Adafruit Ultimate GPS-modulen visade en genomsnittlig felmarginal på cirka 3 meter under optimala förhållanden. Dock observerades att denna noggrannhet kunde påverkas av omgivande miljöer, såsom byggnader eller träd, vilket orsakade en större felmarginal och ibland betydande avvikelser i den uppskattade positionen. Dessa variationer i noggrannhet gjorde det svårt att förlita sig enbart på GPS för noggrann navigering i alla scenarier. 5.2.2 Höjdmätning En annan funktionalitet som undersöktes var möjligheten att använda GPS för höjdmätning av terrängen framför fordonet. Genom att använda fyra eller fler satelliter går det att bestämma höjd men Adafruit Ultimate GPS-modulen har begränsad noggrannhet i höjdmätningar. Detta innebar att funktionen inte kunde användas för att exakt bedöma höjdskillnader. För att förbättra fordonets förmåga att navigera i varierande terräng skulle en mer exakt höjdmätare eller kompletterande sensor kunna övervägas. 5.2.3 Bestämning av attityd Försök att använda GPS-modulen för att bestämma fordonets kompassriktning och vinklar (yaw, pitch, roll) visade sig vara otillräckliga, eftersom denna funktionalitet inte stöds av den specifika modulen. Istället utnyttjades en magnetometer i stereokameran för att tillhandahålla dessa data. Denna lösning var dock inte optimal eftersom kameran alltid måste startas i en känd riktning (0° N) för att kalibreringen ska vara korrekt. En dedikerad attitydsensor skulle kunna förbättra denna aspekt av navigationssystemet. 27 5.2.4 Förbättringar i precision För att förbättra GPS-noggrannheten och pålitligheten i framtida iterationer av liknande projek kan följande åtgärder övervägas: ● Användning av Differential GPS (DGPS): Genom att använda en DGPS-lösning kan felmarginalen i positioneringen minskas betydligt, vilket ger en mer exakt positionering. Genom att adressera dessa utmaningar och implementera de föreslagna förbättringarna kan framtida versioner av det autonoma fordonet uppnå en högre grad av noggrannhet och pålitlighet i sin navigering, vilket är avgörande för dess användbarhet i praktiska applikationer. 5.3 Kamera Användningen av kamerateknologi i vårt autonoma fordon visade både fördelar och utmaningar som är viktiga att analysera för framtida förbättringar. 5.3.1 Upplösning och bilduppdateringsfrekvens Stereokameran som användes i projektet, Zed 2i från StereoLabs, levererade en hög upplösning och en bilduppdateringsfrekvens som var tillräcklig för att möjliggöra realtidsavbildning av terrängen. Upplösningen på kameran gjorde det möjligt att fånga detaljerade bilder av omgivningen, vilket var avgörande för att identifiera och undvika hinder. Trots detta påverkade höga upplösningar ibland bearbetningstiden negativt, särskilt när realtidsbeslut krävdes under snabb körning. 5.3.2 Algoritmer för bildbehandling och identifiering av hinder Projektet utnyttjade tidigare nämnda algoritmer för bildbehandling och identifiering av hinder baserade på den djupinformation som erhölls från stereokameran. Algoritmerna för avbildning och djupkartering fungerade bra under de flesta förhållanden, men det fanns begränsningar i prestanda under svåra ljusförhållanden såsom starkt motljus eller dåligt upplysta områden. Vidare utveckling av algoritmerna och användning av mer robusta tekniker för bildförbättring, 5.3.3 Anpassning för olika terrängförhållanden Stereokamerans förmåga att generera en djupkarta av omgivningen var en avgörande komponent i fordonets navigationssystem. Dock visar tester att kameran hade begränsningar i att korrekt bedöma och navigera genom mycket ojämn eller komplex terräng. För att förbättra denna aspekt kan kompletterande 28 sensorer, såsom LiDAR eller ultraljudssensorer, integreras för att ge en mer komplett bild av omgivningen och öka noggrannheten i hinderidentifieringen. 5.3.4 Kostnad och implementering En av fördelarna med att använda stereokamera-teknologi är dess kostnadseffektivitet jämfört med andra sensorteknologier som LiDAR. Trots detta kan kostnaderna för högpresterande stereokameror fortfarande vara höga, vilket kan vara en begränsande faktor för storskaliga implementeringar. Att utforska alternativ som billigare kameramodeller eller utveckla egna stereokamera-lösningar med enklare kameror kan vara värdefullt för att sänka kostnaderna. 5.3.5 Förbättringar och framtida arbete För att förbättra kamera teknologins prestanda och tillförlitlighet i framtida iterationer av projektet kan följande åtgärder övervägas: ● Avancerade bildbehandlingsalgoritmer: Implementering av mer avancerade algoritmer för bildbehandling, inklusive tekniker för att hantera svåra ljusförhållanden och dynamiska miljöer, kan förbättra fordonets navigationsförmåga. Exempelvis genom att implementera djupinlärningsalgoritmer för att bättre tolka bilddata från kamerorna eller Dense Optical Flow-algoritmer som kan tolka rörelsemönster för att undvika kollisioner. ● Optimering av bilduppdateringsfrekvens och upplösning: Genom att justera uppdateringsfrekvensen och upplösningen beroende på körförhållanden kan systemets prestanda optimeras utan att kompromissa med noggrannheten. ● Utveckling av egna stereokameralösningar: Utforskning av möjligheter att utveckla egna stereokameralösningar med enklare och billigare kameror kan sänka kostnaderna och anpassa systemet bättre till specifika behov. 5.4 Andra förbättringsmöjligheter Under projektets gång identifierades flera områden där ytterligare förbättringar kan genomföras för att öka fordonets prestanda, robusthet och användbarhet. Dessa förbättringar spänner över både hårdvara och mjukvara och omfattar olika aspekter av det autonoma systemet. För att enklare åskådliggöra dessa har vi delat upp dessa områden i olika kategorier som fokuserar på olika delar av implementeringen. 29 5.4.1 Batteri och energiförsörjning Ett av de viktigaste områdena för förbättring är energiförsörjningen. Den nuvarande batteri lösningen, en powerbank på 50,000 mAh, visade sig vara tillräcklig för att kunna genomföra de tester som valdes att göra, men begränsade fordonets driftstid. Batteriet påverkade även vikten och därmed fordonets prestanda vid körning i terräng. För att öka drifttiden och förbättra energi hanteringen kan följande åtgärder övervägas: ● Användning av högkapacitetsbatterier: Genom att byta till litiumjonbatterier med högre energitäthet kan längre drifttider och minskad vikt uppnås. Detta skulle möjliggöra längre testkörningar och bättre prestanda i olika terrängtyper. ● Optimering av energiförbrukning: Implementering av energibesparande algoritmer och förbättrad effektivitet i motorstyrningen kan minska den totala energiförbrukningen. Detta kan inkludera dynamisk justering av motorstyrka baserat på terräng och hastighet samt optimering av sensorer och processorkraft. ● Solpaneler och energiåtervinning: Integration av solpaneler för kontinuerlig laddning av batterierna under drift, samt undersökning av möjligheter för energiåtervinning från bromsning och andra rörelser. 5.4.2 Miljöanpassning Fordonets förmåga att operera under olika väderförhållanden och terrängtyper är kraftigt begränsat av den nuvarande hårdvarudesignen. Regn , snö och annan nederbörd är inte förhindrat från att komma åt kritisk hårdvara vilket innebär att det är en hög risk att viktiga komponenter kan gå sönder ifall fordonet brukas under förhållanden som inte är optimala. För att öka dess användbarhet kan följande förbättringar göras: ● Vattentätning och Partikelresistens: Genom att skydda elektroniken med vattentäta höljen och partikelfilter kan drift i regn, snö och dammiga miljöer möjliggöras. Detta skulle inkludera tätningar runt alla anslutningar och skyddande höljen för känsliga komponenter. ● Förbättrade Larvband eller Hjul: Användning av bredare och mer robusta larvband eller hjul kan förbättra terrängkörningsförmågan, inklusive körning över brant, stenig eller lerig terräng. Val av material med bättre grepp och slitstyrka kan också avsevärt förbättra prestandan. 30 ● Temperaturtåliga Komponenter: Användning av komponenter som är specifikt designade för att tåla extrema temperaturer, både höga och låga, kan säkerställa att fordonet kan operera under alla väderförhållanden. 5.4.3 Sensorintegration Fordonet kan identifiera hinder och navigera runt dessa, men har väldigt svårt att hantera dynamiska miljöer där miljön snabbt förändras från den ena stunden till den andra. För att förbättra fordonets förmåga kan integrationen av fler och mer avancerade sensorer övervägas: ● LiDAR: Kombinationen av LiDAR med befintliga kameror kan ge en mer exakt och pålitlig avbildning av omgivningen, särskilt under svåra väderförhållanden. LiDAR kan ge detaljerade 3D-kartor av omgivningen. ● SONAR: Användning av SONAR-sensorer för att upptäcka närliggande hinder och objekt i fordonets omedelbara omgivning kan förbättra säkerheten vid navigering i trånga utrymmen. Detta skulle leda till ökad komplexitet och att integrera all utökad sensordata skulle troligen vara väldigt svårt och kräva mer processorkraft. 5.4.4 Systemintegration och Kommunikation En avgränsning som gjordes var att fordonet inte skulle följa en förplanerad rutt längs med någon väg som ledde mot målet. Fordonet saknar likt tidigare nämnt sensorerna för att säkert kunna navigera i mer komplexa miljöer, såsom stadstrafik men ifall detta önskas skulle även någon form av vägledningssystem behöva utvecklas. Detta kan inkludera: ● Google Maps API: Användning av ett vägledningssystem baserat på Google Maps API eller liknande tjänster kan ge exakt vägledning längs bilvägar och hjälpa fordonet att undvika att åka utanför vägen. Integration med realtids trafikdata kan också förbättra ruttplaneringen. ● Förbättrad Väg igenkänning: Implementering av algoritmer för igenkänning av vägkanter, trafikskyltar och trafikljus kan möjliggöra säker navigering i mer komplexa trafikmiljöer. Detta kan inkludera användning av bild igenkänningstekniker för att identifiera vägmarkeringar och hinder i trafikmiljöer. 31 5.4.5 Säkerhet och Redundans Mjukvaran som används för att driva fordonet är väldigt rudimentär och även om det är kapabelt att genomföra de tester som beskrivits tidigare i rapporten är fordonet långt ifrån felfritt. För att säkerställa långsiktig drift och säkerhet kan ytterligare förbättringar göras: ● Fail-Safe Mekanismer: Implementera fail-safe mekanismer som gör att fordonet kan stanna säkert vid systemfel eller kommunikationsförlust. Detta kan inkludera redundanta system och automatiska nödstopp. ● Redundanta System: Användning av redundanta system för kritiska komponenter såsom sensorer och styrsystem kan öka tillförlitligheten och minska risken för total systemfel. ● Säkerhetsprotokoll: Utveckling och implementering av robusta säkerhetsprotokoll för att skydda mot cyberattacker och säkerställa att fordonets system är motståndskraftiga mot intrång. Detta kan inkludera kryptering av data och säkra kommunikationskanaler. ● Hinderigenkänning och Undvikande: Förbättra algoritmerna för hinderigenkänning och undvikande för att säkerställa att fordonet kan upptäcka och reagera på oväntade hinder snabbt och effektivt. 32 6. Källförteckning [1] Transportstyrelsen, “Fler miste livet i vägtrafiken under 2022”. Publicerad 2023-01-12 [Online] Tillgänglig: https://www.transportstyrelsen.se/sv/om-transportstyrelsen/pressrum/nyhetsarkiv/2023/fler-miste-livet-i-v agtrafiken-under-20222/#:~:text=Under%202022%20har%20220%20personer,den%2011%3Ae%20janua ri%202023. Hämtad 2024-01-16. [2] Trafikverket, "Trafikflöden och självkörande fordon Drive Me försökssträcka". Publicerad 2018-06-11 [Online]. Tillgänglig: http://trafikverket.diva-portal.org/smash/get/diva2:1364439/FULLTEXT01.pdf. Hämtad 2024-01-16. [3] ISO, “Intelligent transport systems — Low-speed automated driving (LSAD) systems for predefined routes — Performance requirements, system requirements and performance test procedures,” ISO 22737:2021, 2021. [Online]. Tillgänglig: https://www.iso.org/standard/73767.html. Hämtad 2024-01-16. [4] NHTSA, “Automated Vehicles for Safety.” [Online]. Tillgänglig: https://www.nhtsa.gov/vehicle-safety/automated-vehicles-safety. Hämtad 2024-01-16. [5] SAE International, “Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles,” J3016_202104, 2021. [Online]. Tillgänglig: https://www.sae.org/standards/content/j3016_202104/. Hämtad 2024-01-16. [6] J. Vargas, S. Alsweiss, O. Toker, R. Razdan, and J. Santos, “An Overview of Autonomous Vehicles Sensors and Their Vulnerability to Weather Conditions,” Sensors, vol. 21, no. 16, 2021, doi: 10.3390/s21165397. [7] A. Karnati, D. Mehta, and K. S. Manu, “Artificial Intelligence in Self Driving Cars: Applications, Implications and Challenges,” Ushus Journal of Business Management, vol. 21, no. 4, 2022. doi: 10.12725/ujbm.61.1. [8] NVIDIA, “Embedded Computing.” [Online]. Tillgänglig: https://developer.nvidia.com/embedded-computing. Hämtad 2024-01-16. [9] NVIDIA, “NVIDIA Jetson Orin.” [Online]. Tillgänglig: https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/. Hämtad 2024-01-16. [10] B. S. Jahromi, “Camera Technology in Self-Driving Cars,” medium.com. [Online]. Tillgänglig: https://medium.com/@BabakShah/camera-technology-in-self-driving-cars-610371db4b0b. Hämtad: 2024-03-20. [11] S. Lv, X. Huang, F. Cheng, and J. Shi, “Color Restoration of RGB-NIR Images in Low-Light Environment Using CycleGAN,” in 3D Imaging—Multidimensional Signal Processing and Deep Learning, L. C. Jain, R. Kountchev, Y. Tai, R. Kountcheva, Eds. Berlin: Springer, 2022, ch. 1, ISBN: 978-981-19-2448-4. 33 [12] Nikon, “Understanding Focal Length.” [Online]. Tillgänglig: https://www.nikonusa.com/learn-and-explore/c/tips-and-techniques/understanding-focal-length. Hämtad 2024-05-05. [13] S. R. Vijayalakshmi and S. Muruganand, Embedded Vision - An Introduction. Mercury Learning and Information, 2020. [Online]. Tillgänglig: https://app.knovel.com/hotlink/toc/id:kpEVAI0002/embedded-vision-an-introduction/embedded-vision-an -introduction. Hämtad 2024-01-26. [14] R. G. González-Acuña, H. A. Chaparro-Romo, and I. Melendez-Montoya, Optics and Artificial Vision. Bristol: Institute Of Physics Publishing, 2021. ISBN: 9780750337052. [15] K. Matheus and M. Kaindl, Automotive High Speed Communication Technologies - SerDes and Ethernet for Sensor and Display Applications. Hanser Publishers, 2023. Tillgänglig: https://app.knovel.com/hotlink/toc/id:kpAHSCTSD3/automotive-high-speed/automotive-high-speed. Hämtad 2024-01-26. [16] J. Greivenkamp, “Binoculars and Telescopes,” [Online]. Tillgänglig: https://wp.optics.arizona.edu/jgreivenkamp/wp-content/uploads/sites/11/2017/05/Binoculars-and-Telesco pes-OPTI-202.pdf. Hämtad 2024-02-08. [17] Britannica, “Development of Stereoscopic Photography,” [Online]. Tillgänglig: https://www.britannica.com/technology/photography/Development-of-stereoscopic-photography. Hämtad 2024-02-05. [18] F. Remondino and D. Stoppa, TOF Range-Imaging Cameras. Berlin: Springer, 2013. ISBN: 9783642275234. [19] Correlated, “Lens Selection and Stereo Angle,” [Online]. Tillgänglig: https://correlated.kayako.com/article/78-lens-selection-and-stereo-angle#:~:text=Typically%2C%20a%20 smaller%20stereo%20angle,to%20longer%20lenses%2Fhigher%20magnifications. Hämtad 2024-05-20. [20] Stereolabs, “ZED 2 Stereo Camera,” [Online]. Tillgänglig: https://www.stereolabs.com/products/zed-2. Hämtad 2024-01-16. [21] ChalmersGU Data Structure Courses, “Graph Shortest Path,” [Online]. Tillgänglig: https://chalmersgu-data-structure-courses.github.io/OpenDSA/Published/ChalmersGU-DSABook/html/Gr aphShortest.html. Hämtad 2024-01-20. [22] GeeksforGeeks, “A* Search Algorithm,” [Online]. Tillgänglig: https://www.geeksforgeeks.org/a-search-algorithm/. Hämtad 2024-01-20. [23] MathWorks, “Simultaneous Localization and Mapping (SLAM),” [Online]. Tillgänglig: https://se.mathworks.com/discovery/slam.html. Hämtad 2024-05-20. [24] B. Hofmann-Wellenhof, H. Lichtenegger, and E. Wasle, Global Navigation Satellite Systems, 1st ed. 2008. Berlin: Springer, 2008. ISBN: 9783211730171. 34 [25] Adafruit, “About Adafruit,” [Online]. Tillgänglig: https://www.adafruit.com/about. Hämtad 2024-01-15. [26] Adafruit, “Adafruit Ultimate GPS,” [Online]. Tillgänglig: https://learn.adafruit.com/adafruit-ultimate-gps. Hämtad 2024-01-15. [27] RoboCraze, “What is Motor Driver,” [Online]. Tillgänglig: https://robocraze.com/blogs/post/what-is-motor-driver. Hämtad 2024-01-18. [28] Amazon, “150RPM Motor Module,” [Online]. Tillgänglig: https://www.amazon.com/150RPM-Motor-Module-Remote-Control/dp/B07PF4VJ6D. Hämtad 2024-01-16. [29] Electrokit, “MDD3A Datasheet,” [Online]. Tillgänglig: https://www.electrokit.com/upload/product/41018/41018266/MDD3A%20Datasheet.pdf. Hämtad 2024-01-16. [30] Arduino, “Analog Output,” [Online]. Tillgänglig: https://docs.arduino.cc/learn/microcontrollers/analog-output/. Hämtad 2024-05-25. 35 INSTITUTIONEN FÖR DATA OCH INFORMATIONSTEKNIK CHALMERS TEKNISKA HÖGSKOLA Göteborg, Sverige www.chalmers.se