Autonom kundkorg Användning av Ultra Wideband radio och LiDAR för realtids- positionering samt objektdetektering och kollisionsundvikning Kandidatarbete inom System- och Reglerteknik ROBYN BLIXTH, OSKAR EKMAN, HARALD JANHÄLL, ALBIN JÖNSSON, RICKARD LY, HERMAN STRÅGEGÅRD INSTITUTIONEN FÖR ELEKTROTEKNIK CHALMERS TEKNISKA HÖGSKOLA Göteborg 2025 www.chalmers.se www.chalmers.se Kandidatarbete 2025 Autonom kundkorg Användning av Ultra Wideband radio och LiDAR för realtidspositionering samt objektdetektering och kollisionsundvikning Robyn Blixth, Oskar Ekman, Harald Janhäll, Albin Jönsson, Rickard Ly, Herman Strågegård Institutionen för Elektroteknik Avdelningen för System- och Reglerteknik EENX16-25-11 Chalmers Tekniska Högskola Göteborg 2025 Autonom kundkorg Användning av Ultra Wideband radio och LiDAR för realtidspositionering samt objektdetektering och kollisionsundvikning © ROBYN BLIXTH, OSKAR EKMAN, HARALD JANHÄLL, ALBIN JÖNSSON, RICKARD LY, HERMAN STRÅGEGÅRD, 2025. Handledare: Nikolce Murgovski, Institutionen för Elektroteknik Examinator: Jonas Sjöberg, Institutionen för Elektroteknik Kandidatarbete 2025: EENX-25-11 Institutionen för Elektroteknik Avdelning för System- och reglerteknik Chalmers Tekniska Högskola SE-412 96 Göteborg Telefon +46 31 772 1000 Omslagsbild: En bild på den färdiga prototypen för detta projekt. Skriven i LATEX, template by Kyriaki Antoniadou-Plytaria Göteborg 2025 iii Autonom kundkorg Användning av Ultra Wideband radio och LiDAR för realtidspositionering samt objektdetektering och kollisionsundvikning Robyn Blixth, Oskar Ekman, Harald Janhäll, Albin Jönsson, Rickard Ly, Herman Strågegård Institutionen för Elektroteknik Chalmers Tekniska Högskola Sammanfattning Denna rapport beskriver hur implementeringen av Light Detection and Ranging (Li- DAR) och Ultra Wideband (UWB), tillsammans med enkel mekatronik, signalfiltre- ring och reglerteknik, tillämpats i syfte att skapa en prototyp av autonom kundkorg som kan följa efter en specifik ledare och samtidigt undvika kollision med omgivning- en. Kundkorgen realtidspositionerar relativt till ledaren, personen den följer, med UWB-enheter placerade på både ledaren och kundkorgen. Kalmanfilter används för att reducera brus i mätvärdena, och PID-regulatorer används för att styra korgen till ledaren. Hinder i körvägen detekteras med LiDAR. Prototypen testades empiriskt mot en kravspecifikation, som låg till grund för utvärderingen, men även utifrån and- ra prestandarelaterade aspekter. Fälttester visade att prototypen uppfyllde de cen- trala funktionerna, men vissa utmaningar kvarstår. De främsta utmaningarna som förhindrade att samtliga krav uppfylldes var noggrannheten i UWB-positioneringen, aspekter av den mekaniska konstruktionen och brister i kollisionsundvikningen som ibland gav falska negativa och falska positiva hinder. Nyckelord: Ultra Wideband, LiDAR, autonom kundkorg, objektdetektering, kolli- sionsundvikning, realtidspositionering, Kalmanfilter, reglersystem. iv Autonomous shopping basket Use of Ultra-Wideband Radio and LiDAR for Real-Time Positioning, Object Detection, and Collision Avoidance Robyn Blixth, Oskar Ekman, Harald Janhäll, Albin Jönsson, Rickard Ly, Herman Strågegård Institution for Electrical Engineering Chalmers University of Technology Abstract This report describes the implementation of Light Detection and Ranging (LiDAR) and Ultra-Wideband (UWB), in combination with basic mechatronics, signal filte- ring, and control engineering, for the purpose of developing a prototype of an auto- nomous shopping cart that can follow a specific leader while simultaneously avoiding collisions with its surroundings. The cart determines its real-time position relative to the leader - the person it follows - using UWB devices on the leader and mounted on the cart. A Kalman filter is used to reduce noise in the measurements, and PID controllers are employed to steer the cart toward the leader. Obstacles in the path are detected using LiDAR. The prototype was tested empirically against a requi- rements specification, which formed the basis for evaluation, as well as from other performance-related aspects. Field tests showed that the prototype fulfilled the core functionalities, but some challenges remained. The main issues that prevented full compliance with the requirements were related to the accuracy of UWB positioning, aspects of the mechanical design, and deficiencies in the collision avoidance system sometimes resulting in both false positive and false negative in obstacle detection. Keywords: Ultra-Wideband, LiDAR, autonomous shopping basket, object detection, collision avoidance, Real-Time positioning, Kalman filter, control system. v Förord Detta kandidatarbete har genomförts med hjälp och stöd från flertalet personer och organisationer. Vi vill här rikta dem ett stort tack. Vi vill först och främst tacka vår handledare Nikolce Murgovski för hans stöd och idéer genom hela arbetet. Vi väl även varmt tacka Gustav Malmström, som genom sitt examensarbete på SAAB i Jönköping gav oss möjligheten att få låna Ultra Widebandsensorer vilket gav oss möjlighet till att genomföra realtidspositionering. Vi vill dessutom rikta ett stort tack till föreningen ETA och dess medlemmar på Chalmers Tekniska Högskola, som varit till stor hjälp under arbetet. Till sist vill vi även tacka Maxi ICA Stormarknad Göteborg för att vi fick erhålla en kundkorg som användes till vår robot och för att vi fick möjligheten att testa roboten i deras butiksmiljö. Robyn Blixth, Oskar Ekman, Harald Janhäll, Albin Jönsson, Rickard Ly, Herman Strågegård Göteborg, Maj 2025 vi Akronymer Nedan följer en lista över akronymer som har använts genom hela kandidatarbetet, listade i alfabetisk ordning: DC Direct Current LiDAR Light Detection and Ranging LOS Line-of-sight NLOS Non-line-of-sight PWM Pulse Width Modulation RPM Rotationer per minut ToF Time of Flight TWR Two-Way Ranging TDoA Time Difference of Arrival UART Universal Asynchronous Receiver/Transmitter USB Universal Serial Bus UWB Ultra Wideband vii viii Innehåll Akronymer vii Figurer xi Tabeller xiii 1 Inledning 1 1.1 Syfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Kravspecifikation . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.2 Valt koncept . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Avgränsningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Teori 3 2.1 LiDAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Ultra Wideband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Kalmanfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3.1 Predikteringsekvationer . . . . . . . . . . . . . . . . . . . . . . 6 2.3.2 Korrigeringsekvationer . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Reglersystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.1 PID-regulator . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Komponentval och konstruktion 9 3.1 Drivlina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.1 Hårdvara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.2 Mjukvara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Konstruktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4 Implementation 17 4.1 Implementering av UWB . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Implementering av LiDAR . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3 Implementering av Kalman Filter . . . . . . . . . . . . . . . . . . . . 19 4.4 Implementering av kod . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.5 Styrsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5.1 Parametrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5.2 Motorsignaler . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ix Innehåll 5 Tester och Resultat 25 5.1 Precision och noggrannhet för MDEK1001 . . . . . . . . . . . . . . . 25 5.2 Positionsmätning genom UWB med Kalmanfilter . . . . . . . . . . . 27 5.3 Positionsmätning genom UWB i cirkulär bana . . . . . . . . . . . . . 29 5.4 Avståndsmätning för LiDAR-enheten . . . . . . . . . . . . . . . . . . 30 5.5 Mätning av avvikelse vid färd rakt fram . . . . . . . . . . . . . . . . 32 5.6 Mätning av hastighet . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.7 Belastningstest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.8 Mätning av bromssträcka . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.9 Svänga runt hörn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.10 Avstånd från ledaren . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.11 Följa ledare bland hinder . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.12 Test i matvarubutik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.13 Resultat för resterande krav i kravspecifikationen . . . . . . . . . . . 38 6 Diskussion 41 6.1 Testresultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.1.1 LiDAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.1.2 Ultra Wideband . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.1.3 Körförmåga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2 Avvikelser från planering . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.3 Jämförelse med tidigare kandidat- och examensarbete . . . . . . . . . 44 6.4 Vidareutveckling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.5 Samhälleliga och etiska aspekter . . . . . . . . . . . . . . . . . . . . . 45 7 Slutsats 47 Referenser 49 A Kravspecifikation III B Beräkning för val av motor V C Kostnader för prototypens komponenter VII x Figurer 2.1 Estimerad position för en tagg genom trilateration. Avstånden d1,d2 och d3 representerar avstånden mellan ankarna och taggen. Skärnings- punkten mellan cirklarna är den estimerade positionen. . . . . . . . . 4 2.2 Visualisering av det diskreta Kalman filtrets rekursiva loop som växlar mellan prediktering och korrigering. . . . . . . . . . . . . . . . . . . . 6 2.3 Blockdiagram för ett enkelt reglersystem med återkoppling där r är referensvärdet, e är felet, ws är störningar i systemet, wm är störningar i sensorerna, y är processvärdet och ym är uppmätta processvärdet. . 8 3.1 CAD-modell av växellådan med drivhjul. . . . . . . . . . . . . . . . . 10 3.2 Raspberry Pi 4 Model B . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Raspberry Pi Pico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4 HAT-MDD10 Motordrivare till Raspberry Pi . . . . . . . . . . . . . . 11 3.5 UWB-utvecklingskit MDEK1001. . . . . . . . . . . . . . . . . . . . . 12 3.6 Okdo Lidar Module Kit för LiDAR LD06 Raspberry Pi . . . . . . . . 12 3.7 Illustration av kommunikationsflödet mellan robotens komponenter. Pilar symboliserar kommunikation via kabel, medan streckade linjer symboliserar trådlös kommunikation. . . . . . . . . . . . . . . . . . . 13 3.8 Konstruktion och placering av komponenter för roboten. Undersidan ses till vänster och ovansidan ses till höger. . . . . . . . . . . . . . . . 14 3.9 3D-printad modell av en ”självscanner” med UWB-tagg i handtag och powerbank ovanpå. . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1 Fyra ankare med trilaterationscirklar, samt markerat avstånd och vin- kel mellan tagg och referenspunkt. . . . . . . . . . . . . . . . . . . . . 18 4.2 LiDAR-sensorns synfält i miljö med flera hinder. De blå punkterna är objekt och de gula linjerna är vägen strålen tagit. Röda linjerna mar- kerar det närmsta punkterna i synfältet och den uppmätta distansen för dessa, samt konfidensvärdet, skrivs ut högst upp i rutan. . . . . . 19 4.3 Ofiltrerade x-koordinater jämförda med Kalmanfiltrerade x-koordinater för olika värden på processbruset Qvar. . . . . . . . . . . . . . . . . . 21 4.4 Flödesschema för huvudloopen i kontrollsystemet, som visar hur ro- boten navigerar mot målet och undviker hinder. . . . . . . . . . . . . 22 5.1 Verklig position (färgade kryss) jämfört med uppmätt position (fär- gade prickar) för 10 olika positioner. . . . . . . . . . . . . . . . . . . 26 xi Figurer 5.2 Exempel på uppställning för avståndsmätning med hjälp av UWB med LOS (vänster) och NLOS (höger). . . . . . . . . . . . . . . . . . 28 5.3 Verklig position (färgade kryss) jämfört med filtrerad, uppmätt posi- tion (färgade prickar) för 10 olika positioner runtom roboten. . . . . . 28 5.4 Uppställning för test av UWB-mätning i cirkulär bana. . . . . . . . . 30 5.5 Verklig bana (heldragen svart linje) jämfört med filtrerad, uppmätt position (blå prickar) för gående person med UWB-tagg. . . . . . . . 30 5.6 Exempeluppställningar för test av LiDAR-enheten. . . . . . . . . . . 31 5.7 Grafisk presentation av resultatet från LiDAR-testet där även avvi- kelsen mellan verklighet och uppmätt distans är presenterad. . . . . . 31 5.8 Uppställning inför test vid mätning av avvikelse vid färd rakt fram. . 32 5.9 Resultat från testning av avvikelse i rak färdriktning, digitalt åter- skapat, där varje enskild färg markerar vägen roboten tog under en iteration av testet och centrumlinjen är markerad i svart. . . . . . . . 34 5.10 Testuppställning vid svängning av hörn. . . . . . . . . . . . . . . . . 36 5.11 Körväg av robot för mätning 2 vid test med tagg-bärare bakom hörn vid start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.12 Ett fotografi tagen från testet i matvarubutik. . . . . . . . . . . . . . 38 5.13 Sammanställning av vilka krav i kravspecifikationen som uppfyllts där grönt innebär uppfyllt, rött innebär ej uppfyllt, gult innebär delvis uppfyllt och blå innebär ej testat. . . . . . . . . . . . . . . . . . . . . 40 A.1 Kravspecifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV B.1 Friläggning av kundkorg med hjul placerade för differentialstyrning, samt de krafter som uppstår vid rörelse. . . . . . . . . . . . . . . . . V xii Tabeller 2.1 Notation av vektorer och matriser i Kalmanfilter. . . . . . . . . . . . 6 5.1 Vänster tabell visar medelvärdet av medelfel och standardavvikelse i x- och y-riktning, medan höger visar medianen av dessa. . . . . . . . 27 5.2 Feluppskattning för LOS. Vänster tabell visar medelvärdet av me- delfel och standardavvikelse i x- och y-riktning, medan höger visar medianen av dessa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.3 Feluppskattning för NLOS. Vänster tabell visar medelvärdet av me- delfel och standardavvikelse i x- och y-riktning, medan höger visar medianen av dessa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4 Mätresultat från mätning av avvikelser vid färd rakt fram, där största avvikelsen [cm] över en färdad sträcka på 282 centimeter noterats. Positivt värde är förskjutning åt höger. . . . . . . . . . . . . . . . . . 33 5.5 Resultat från tester av robotens förmåga att svänga runt hörn. . . . . 36 C.1 Komponentlista med inköpspriset för varje komponent samt det sam- manlagda priset för alla komponenter. Samtliga priser är uttryckt i SEK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII xiii 1 Inledning I en alltmer automatiserad värld utvecklas ständigt produkter och föremål för att underlätta och effektivisera vardagen. Redan idag har matvarubutiker introducerat smarta lösningar för sina kunder. Exempelvis finns det kundvagnar som kan lå- sas upp med en app på mobilen istället för med mynt, samt kundvagnar som med en skärm på sig visar olika erbjudanden från butiken [1][2]. Ännu mer utvecklade kundvagnar använder artificiell intelligens och maskininlärning för att scanna det kunderna handlar direkt när produkten läggs ner i kundvagnen, och där betalning sker direkt på kundvagnen [3]. Alla ovannämnda exempel ger möjlighet till förbättrad kundupplevelse men ing- en lösning inkluderar hur kundvagnar eller kundkorgar förflyttar sig, kunden måste fortfarande dra eller bära korgen. Det finns enstaka exempel på kundvagnar som körs autonomt, dock är dessa exempel endast illustrerade i korta och väldigt redigerade videor som speglar möjliga framtida matvarubutiker [4]. En självkörande kundkorg skulle kunna följa efter kunden genom butiken, kunna anpassa sin hastighet och svänga utan att kollidera med hinder som uppkommer. När korgen körs helt auto- nomt, utan att kunden behöver greppa den kan inkluderingen av fler kunder öka. Det kan gälla äldre, skadade personer eller andra som på något sätt har svårigheter att bära eller dra en kundkorg efter sig. Den autonoma kundvagnen har utforskats av kandidatarbeten tidigare. År 2022 vi- dareutvecklades en prototyp från ett tidigare års arbete [5]. Stora framsteg i mjuk- vara gjordes genom nytt regler- och kollisionsundvikningssystem med hjälp av en kamera och artificiell intelligens. Roboten lyckades följa en person, men vissa för- bättringsområden kvarstod. Prototypen kunde inte urskilja mellan olika individer och följde efter godtycklig människa. Problem i följningsförmågan uppstod då le- daren försvann ut från synfältet, exempelvis runt hörn. Vidare led en asymmetrisk konstruktion och sneda hjul till svårigheter att köra rakt fram. Slutligen saknade den förmåga att navigera runt hinder. 1.1 Syfte Syftet med projektet är att utveckla en prototyp av en autonom kundkorg som ska kunna följa efter en utvald person utan att tappa bort sig eller börja följa ett oönskat mål. Den skall även på egen hand detektera, undvika och navigera runt hinder. 1 1. Inledning 1.1.1 Kravspecifikation En kravspecifikation har tagits fram för att konkretisera vilka mål som ska uppfyllas utifrån syftet (se Figur A.1 i Appendix A). Större fokus har lagts på prototypens förmåga att navigera i en butiksmiljö. De tester som gjorts och vilket resultat de gav beskrivs mer i Kapitel 5. 1.1.2 Valt koncept Med kravspecifikationen i åtanke valdes det mest önskvärda konceptet som tilläm- pas i den slutliga prototypen. En kort beskrivning ges nedan: Prototypen ska vara i samma storleksordning som en handdragen kundkorg. Ett bat- teri driver de två likströmsmotorerna som i sin tur driver respektive hjul. Svängning möjliggörs med differentialstyrning och bromsning sker genom motorbroms. Drivli- nan styrs av en dator på roboten som får insignaler från Ultra Wideband (UWB) och LiDAR sensorer på fordonet. UWB sensorer ger position till en specifik individ som ska efterföljas och en LiDAR-sensor bestämmer avstånd till hinder runtomkring fordonet. Detaljerad teoretisk beskrivning av sensorerna ges i avsnitt 2.1, 2.2. 1.2 Avgränsningar För att undvika att projektet blev allt för omfattande togs nedanstående avgräns- ningar fram: • Ej genomföra analys för produktionskostnader kopplade till form och funktion. • Endast anta att produkten används i en inomhusmiljö utan stora nivåskillna- der eller ojämnt underlag. • Ta fram konceptförklaringar men inte ritningar. • Endast undersöka möjligheter för rörelse av vagnen, ej andra funktioner som exempelvis varuigenkänning eller betalsystem. • Ej undersöka hur eventuella batterier eller andra energikällor laddas för den färdiga produkten. Utöver avgränsningarna fanns det även en budget på 5000 SEK som sattes av Insti- tutionen för Elektroteknik. 2 2 Teori I detta kapitel presenteras teorin bakom UWB, LiDAR, Kalmanfilter och reglersy- stem. Kapitlet syftar till att redogöra för hur roboten bestämmer sin position med UWB, hur LiDAR detekter objekt, hur Kalmanfilter hjälper till att dämpa mätbrus och hur reglersystem reglerar robotens rörelse. 2.1 LiDAR LiDAR är en förkortning av ”Light Detection And Ranging” och innefattar all tekno- logi som mäter avstånd med hjälp av ljus [6]. Det finns många olika former av LiDAR men i detta projekt användes en ”2D planar scanning LiDAR”. Denna LiDAR-enhet kan mäta avstånd i alla riktningar runt sig i det horisontella planet, med andra ord en 360 graders vy. Tekniken bygger på att en laserstråle sänds ut från enheten och träffar en yta som reflekterar tillbaka delar av signalen. LiDAR-enheten beräknar det avstånd till den träffade ytan genom att mäta ToF, som använder följande formel förenklad [7][8] distans = c · T 2 , (2.1) där c [m/s] är ljusets hastighet och T är tiden, i sekunder, det tar mellan att lasern skickats och att den mottagits. Enheten för kvoten blir då meter. LiDAR-enheten roterar kontinuerligt och gör flera mätningar per varv och med insamlad mätdata är det möjligt att skapa en tvådimensionell bild av omgivningen omkring LiDAR- enheten. 2.2 Ultra Wideband UWB är en radioteknik som enligt FCC (Federal Communications Commission) sträcker sig över ett brett frekvensområde, från 3,1 GHz till 10,6 GHz och med en bandbredd nära eller över 500 MHz [9]. Tekniken sänder korta pulser vilket möj- liggör snabb dataöverföring med låg strömförbrukning [10]. På grund av sin breda bandbredd har UWB en mycket låg överföringseffekt, vilket gör att den inte stör andra smalbandiga teknologier som UWB överlappar med [11]. För exempelvis Wi- Fi uppfattas UWB mest som bakgrundsbrus, även om detta bland annat använder frekvensband på 5 eller 6 GHz [12]. 3 2. Teori För att använda UWB i ett system för realtidspositionering (förkortat RTLS på engelska), används ankare och taggar för att estimera en position [9]. Ett ankare placeras på en känd koordinat och en tagg kopplas på den person eller det objekt vars position som ska spåras. För att få en position i 2D-planet krävs tre ankare, medan fler ankare ger en högre mätnoggrannhet [13]. Det finns mer än en beräkningsmetod för att estimera en position för taggen, till exempel Two-Way Ranging (TWR), Ti- me Difference of Arrival (TDoA) och Reverse TDoA [9]. För de UWB-moduler som använts i detta projekt beräknas TWR med förprogrammerad inbäddad kod [14]. Likväl kommer denna beräkningsmetod förklaras för att ge en matematisk förståelse för trianguleringen som tillämpas i projektet. Figur 2.1 visar hur tre ankare med sina kända positioner används för att estimera en position för taggen. Taggen sänder ut en kort puls som sedan fångas upp av alla ankarna [9]. Därefter svarar ankarna genom att skicka en puls tillbaka till taggen, och genom att taggen registrerat rundresetiden, samt ankarnas bearbetningstid, kan taggen beräkna avståndet till vardera ankare likt ToF, enligt ekvation (2.1), där T är rundresetiden subtraherat med ankarets bearbetningstid. Vid mätning mellan ett ankare och en tagg erhålls ett avstånd på l längdenheter, men inte en riktning. Var- je ankare kan då ses som mittpunkten på varsin cirkel med radien l längdenheter. Med trilateration bestäms positionen för taggen som den punkt där alla cirklar skär varandra [15]. Notera att Figur 2.1 illustrerar ett idealt fall, där taggen beräknats till en viss punkt. I realistiska fall möts inte cirklarna alltid vid en punkt, utan de skapar ett litet område, vilket ger en osäkerhet i den estimerade positionen. Figur 2.1: Estimerad position för en tagg genom trilateration. Avstånden d1,d2 och d3 representerar avstånden mellan ankarna och taggen. Skärningspunkten mellan cirklarna är den estimerade positionen. 4 2. Teori Eftersom taggens position ligger i skärningspunkten mellan cirklarna, kan cirkelns ekvation användas för att beräkna de okända koordinaterna (x, y). Ekvationen for- muleras på följande sätt di = √ (x − xi)2 + (y − yi)2, (2.2) där index i representerar respektive ankare. Därefter kvadreras båda sidor och hö- gerledet utvecklas för alla i = 1, 2, ..., n, vilket ger di 2 = x2 − 2xix + xi 2 + y2 − 2yiy + yi 2. (2.3) Det finns olika metoder för att lösa ut x och y där ett sätt är att subtrahera ekva- tionerna med varandra. Detta görs för att eliminera termerna x2 och y2. För varje ekvation i som subtraheras med varje ekvation j fås di 2 −dj 2 = (x2 −2xix+xi 2+y2 −2yiy+yi 2)−(x2 −2xjx+xj 2+y2 −2yjy+yj 2), (2.4) vilket sedan kan förenklas till di 2 − dj 2 = −2x(xi − xj) + xi 2 − xj 2 − 2y(yi − yj) + yi 2 − yj 2. (2.5) När n = 3 fås tre ekvationer från Ekvation (2.3), där den första subtraheras med den andra och den tredje, samt den andra med den tredje. Subtraktionen genererar linjära ekvationer som den i Ekvation (2.5). För n punkter fås n(n−1) 2 linjära ekva- tioner som används för att vidare lösa ut x och y. När n = 3 fås alltså 3 linjära ekvationer. Det finns ytterligare olika tillvägagångssätt för att vidare lösa ut x och y, men dessa metoder tas inte upp i denna rapport. 2.3 Kalmanfilter Vid användning av sensorer uppstår brus som en naturlig följd. Brushantering är särskilt viktigt för detta projekts ändamål för att säkerställa en korrekt och precis ef- terföljning av fordonets mål. Adaptiva filter är en variant av filter som är användbar i en dynamisk miljö, vilket är relevant för den självkörande kundkorgen. På grund av filtrets förmåga att justera dess parametrar med avseende på en förlustfunktion, kan den användas i miljöer med okända variabler [16]. Kalmanfilter är ett adaptivt filter som är särskilt lämpat för efterföljande fordon vilket drogs som slutsats i tidigare examensarbete som använde UWB i liknande än- damål [17]. Därför kommer endast detta filter utvärderas för UWB i denna rapport. Filtret uppdaterar parametrar rekursivt från tidigare mätdata och framtida tillstånd predikteras (se Figur 2.2) [18]. I andra termer så estimerar prediktionsekvationer näs- ta tillstånd och korrigeringsekvationer ger feedback om hur rätt estimeringen är för att bilda en bättre prediktering. Detta kan göras även om delar av det modellerade systemet är okänt. Nedan följer en mer överskådlig förklaring av ekvationerna, men härledningen av dessa kommer inte förklaras. Notationer av variabler sammanställs i Tabell 2.1. 5 2. Teori Figur 2.2: Visualisering av det diskreta Kalman filtrets rekursiva loop som växlar mellan prediktering och korrigering. Tabell 2.1: Notation av vektorer och matriser i Kalmanfilter. Term Namn Dimension x Tillståndsvektor nx × 1 z Mätningsvektor nz × 1 F Tillståndsövergångsmatris nx × nx P Skattad kovarians nx × nx Q Processbrusets kovarians nx × nx R Mätbrusets kovarians nz × nz H Observationsmatris nz × nx K Kalmanvikt nx × nz k Diskret tidsindex 2.3.1 Predikteringsekvationer I Ekvation (2.6) predikteras nästa tillstånd av processen som mäts. Detta görs genom att multiplicera tidigare estimerat tillstånd x̂k−1 med tillståndsövergångsmatrisen F . Matrisen beskriver hur tidigare tillstånd relaterar till nästa tillstånd. Till exempel: om tillståndsvektorn innehåller position, hastighet och acceleration av ett fordon, innehåller tillståndsövergångsmatrisen rörelseekvationer som beskriver framtida rö- relse [19]. x̂− k = Fx̂k−1 (2.6) Därefter i Ekvation (2.7) predikteras skattad kovarians P , det vill säga osäkerheten i skattningen, baserat på tidigare estimerad osäkerhet Pk−1 och processbrusets kova- rians Q [18]. Q kan betraktas som osäkerheten i modellen som beskriver processen. Baserat på tidigare exempel kan det uppstå från luftfriktion eller vind som ger ett fel mellan verklig hastighet och estimerad hastighet [20]. P − k = FPk−1F T + Q (2.7) 2.3.2 Korrigeringsekvationer Först beräknas Kalmanvikt Kk i Ekvation (2.8), vilket bestämmer påverkan som den nya mätningen har på skattningen [18]. Denna vikt beror på osäkerheten i skatt- 6 2. Teori ningen P − k och osäkerheten i mätningen R. Notera att ett högre brus i mätningarna ger större R och därmed dämpas effekten av de nya uppmätta värdena. Likartat leder stora osäkerheter i skattningen till ett stort P och nya mätvärden viktas högre än gamla prediktioner. Kk = P − k HT (HP − k HT + R)−1 (2.8) I nästa steg som visas i Ekvation (2.9), uppdateras tillståndsestimeringen x̂− k med de uppmätta värdena i mätningsvektorn zk. Differensen mellan uppmätt värde och predikterat värde viktas med Kalmanvikt. Observationsmatrisen H beskriver hur tillståndet relaterar till mätningarna som observeras. x̂k = x̂− k + Kk(zk − Hx̂− k ) (2.9) Även skattningens osäkerhet uppdateras i Ekvation (2.10) som reflekterar hur osä- kerheten minskar efter att nya mätningar inkorporeras. Pk = (I − KkH)P − k (2.10) 2.4 Reglersystem Ett reglersystem är ett system som automatiskt justerar en process för att hålla ett visst önskat tillstånd, så kallad börvärde. Det fungerar genom att mäta ett faktiskt värde (processvärde), jämföra det med börvärdet, och utifrån skillnaden (reglerfelet) påverka processen via en reglerstrategi, till exempel en PID-regulator [21]. Målet är att minimera felet och stabilt uppnå det önskade resultatet, trots yttre störningar eller förändringar i systemet. Då en relativ position från UWB-ankarna till taggen erhålls i kartesiska koordinater (x, y) kan dessa omvandlas till polära koordinater (r, θ) där r är avstånd och θ är vinkel och beräknas med följande formler, r = √ x2 + y2 , θ =                      arctan ( y x ) x > 0 arctan ( y x ) + π x < 0, y ≥ 0 arctan ( y x ) − π x < 0, y < 0 π 2 x = 0, y > 0 − π 2 x = 0, y < 0 . (2.11) De polära koordinaterna kan enskilt användas som parametrar att reglera för att en robot ska följa efter ett mål. Avståndsparametern r regleras genom att felet i börvärde och processvärde matas in i en regulator som behandlar felet utifrån olika parametrar som kan justeras beroende på önskat resultat. De nya värdet kallas för styrsignal och matas sedan in i systemet som genom en ny funktion ändrar avstån- det, så att ett nytt processvärde erhålls. Med ett nytt processvärde kan nu ett nytt fel beräknas och cykeln upprepas tills dess att det börvärdet är det samma som processvärdet. Med samma princip regleras vinkelparametern θ. 7 2. Teori Störningar som reglersystemet utsätts betecknas w. Störningarna ger upphov till brus i reglersystemet signaler. I Figur 2.3 presenteras en enkel modell av hur ett reglersystem kan modelleras med ett block diagram. Figur 2.3: Blockdiagram för ett enkelt reglersystem med återkoppling där r är refe- rensvärdet, e är felet, ws är störningar i systemet, wm är störningar i sensorerna, y är processvärdet och ym är uppmätta processvärdet. 2.4.1 PID-regulator En väldigt vanlig regulator som möjliggör stor flexibilitet i omvandling av felet till styrsignal är en PID-regulatorn. Den bygger på tre komponenter som vars påverkan på styrsignalen justeras genom att var sin konstant som bestäms utefter önskade kvalitéer hos styrsignalen. Förhållande mellan konstanterna påverkar kraftigt hur styrsignalen utformas. Den matematiska formeln för regulatorn är, u(t) = Kpe(t) + Ki ∫ t 0 e(τ)dτ + Kd de(t) dt , (2.12) där u(t) är styrsignalen, e(t) är felet och Kp, Ki, Kd är konstanter [21]. 8 3 Komponentval och konstruktion I detta kapitel redogörs först valet av de komponenter som användes till roboten. Komponentvalet är uppdelat i två kategorier, Drivlina och Automation. Vidare av- slutas kapitlet med en beskrivning av robotens konstruktion och placering av kom- ponenterna. Totalpriset för de använda komponenterna samt de individuella priserna presenteras i Appendix C. 3.1 Drivlina För att roboten skulle kunna förflytta sig utan externa krafter krävdes en drivlina. I detta delkapitel beskrivs hur motorerna dimensionerades utefter kravspecifikatio- nen, samt vilket batteri som valdes för att driva motorerna. I Appendix B redogörs de fullständiga beräkningarna för valet av motor. Notera att två motorer har använts i projektet, en för varje drivhjul. Beräkningarna visade att under kontinuerlig drift krävs ungefär 7,15 W per motor, ett moment på 0,23 Nm och en vinkelhastighet på 294,9 RPM. Enligt tumregler för motordimensionering bör en motor ha 1,5–2 gånger den nominella effekten som krävs i drift [22], vilket ger Pnominell ≥ 1,5 · 7,15 ≈ 10,73 W. En motor med moment och vinkelhastighet precis över de beräknade fanns vid till- fället inte att få tag på. För robotens framdrivning valdes därför en DC-motor med nominell effekt på 19,8 W, nominellt varvtal på 143 RPM och nominellt moment på 0,59 Nm [23]. Den valda motorn har tillräcklig nominell effekt (19,8 W > 10,73 W). För att anpassa vald motor till de krav som beräknats fram för moment och vinkelhastighet, används en 3D-printad växellåda med en uppväxling på 1:2, vilket fördubblade varvtalet till 286 RPM, vilket var nära det önskade på 294,9 RPM och ansågs vara acceptabelt. Det resulterande momentet halverades till 0,286 Nm vil- ket var lite högre än det önskade på 0,23 Nm, men gav en marginal för eventuella friktionsförluster. Även drivhjulen är 3D-printade och däcket skrevs ut i mjuk TPU- plast för bättre grepp. En CAD-modell av ett drivhjul monterat på växellådan visas i Figur 3.1. 9 3. Komponentval och konstruktion Figur 3.1: CAD-modell av växellådan med drivhjul. För att driva framdrivningen valdes ett blybatteri på 12 V och 7,0 Ah som energikälla [24]. Spänningsnivån på 12 V ligger inom intervallet som motorn hanterar. 3.2 Automation Automatiseringen var det mest omfattande implementationsområdet i projektet ef- tersom det inkluderade ingripande ämnen som reglering, följningsförmåga och kolli- sionsundvikning. För att implementera dessa funktioner krävdes olika komponenter, som beskrivs i nästkommande avsnitt, följt av ett avsnitt som kort beskriver den mjukvara som användes. 3.2.1 Hårdvara I detta avsnitt beskrivs valet av de komponenter som utgjorde fordonets styrsystem och sensorer. Därefter beskrivs respektive komponents ändamål i projektet, samt hur kommunikationen mellan komponenterna såg ut. Raspberry Pi 4 Model B (se Figur 3.2) är en kompakt enkortsdator och är ett populärt val i hobbyprojekt och prototypframställning [25]. Datorn är utrustad med General Purpose Input Output (GPIO) pins som kan kopplas till annan elektronisk hårdvara som sensorer vilket möjliggör inbäddad programmering. Dess beräknings- kraft gör den lämpad till rollen som centralenhet som behandlar information från sensorer för att sedan skicka ut styrsignaler. 10 3. Komponentval och konstruktion Figur 3.2: Raspberry Pi 4 Model B Raspberry Pi Pico är en mikrokontroller med programmerbara GPIO pins som an- vänds för enklare beräkningar och styrning (se Figur 3.4) [26]. I detta projekt styr den ström till motorerna beroende på styrsignal från centralenheten. Figur 3.3: Raspberry Pi Pico Hat-MDD10 är en två-kanals motorkontroller som tar en PWM-signal och en hög/låg- signal per kanal för att kontrollera hastigheten samt riktningen på motorerna. Denna motorkontroller hanterar strömmar upp till 10 A och spänningar upp till 24 V. I detta projekt antog den rollen som förstärkare för den Raspberry Pi Pico som an- vänds. Figur 3.4: HAT-MDD10 Motordrivare till Raspberry Pi 11 3. Komponentval och konstruktion MDEK1001 (se Figur 3.5) är ett utvecklingskit av Qorvo som erbjuder en nybör- jarvänlig ingång till framtagning av UWB-applikationer [27]. Utvecklingsbrädorna kan enkelt konfigureras till att vara antingen ankare eller tagg med hjälp av inbäd- dad fast programvara. Efter nätverket av UWB-moduler har konfigurerats används triangulering för att automatiskt beräkna taggens position som kan överföras med Universal Serial Bus (USB) till dator. Utvecklingsbrädan baseras på DWM1000 mo- dulen som har en radio-antenn designad för lokalisering av objekt i realtid till en precision av 10 cm [28]. Figur 3.5: UWB-utvecklingskit MDEK1001. LiDAR LD06 (se Figur 3.6) är en ”planar scanning LiDAR” från OKDO [7]. Modulen möjliggör för enkel anslutning till Raspberry Pi och kommunicerar via Universal Asynchronous Receiver/Transmitter (UART), som är en metod för att omvandla parallell data till seriell data [29]. LiDAR-enheten användes i detta projekt för att identifiera avståndet till väggar och andra objekt i omgivningen, för att sedan låta Raspberry Pi 4 Model B skicka styrsignal till motorer att stanna eller svänga om kollision ska undvikas. Figur 3.6: Okdo Lidar Module Kit för LiDAR LD06 Raspberry Pi 12 3. Komponentval och konstruktion Figur 3.7 illustrerar kommunikationsflödet mellan de ovannämnda komponenterna. En av UWB-modulerna konfigurerades till att vara tagg som med UWB-signaler kommunicerar med fyra andra moduler som konfigurerades till ankare. Efter att en position estimerats av taggen får den sista UWB-modulen, som är konfigurerad som lyssnare, denna information. En lyssnare möjliggör informationsöverföring från tagg till Raspberry Pi 4 utan att en kabel är kopplad mellan dem. Istället överför USB positionsmätning från lyssnaren till Raspberry Pi 4. LiDAR-modulen skickar även sin data via UART till Raspberry Pi 4. Vidare överförs data från Raspberry Pi 4 till Raspberry Pi Pico via UART, som i sin tur sänder en Pulse Width Modulation signal (PWM-signal) till motordrivaren. PWM avgör hur stor andel av tiden då DC-ström mellan motordrivare och motor är hög, alltså regleras effektiv spänning. Motorerna får därmed varierande effekt beroende på information från sensorerna. Samtliga komponenter strömförses av tidigare nämnda batteri, med undantag för UWB-taggen. För mer förklaring kring hur mjukvaran på Raspberry Pi 4 bearbe- tar data från båda sensorerna, samt hur mjukvaran på Raspberry Pi Pico skickar signaler till motordrivaren, hänvisas till Kapitel 4. Figur 3.7: Illustration av kommunikationsflödet mellan robotens komponenter. Pilar symboliserar kommunikation via kabel, medan streckade linjer symboliserar trådlös kom- munikation. 3.2.2 Mjukvara Mjukvara som använts i projektet har haft en betydande inverkan på slutresultatet. För att säkerställa ett bra resultat inom projektets tidsram valdes i första hand pro- gramvara som gruppmedlemmarna tidigare använt, där detta var applicerbart, även om denna programvara inte är lika optimerad som annan programvara. Den beräknande och datahanterande enheten för roboten är Raspberry Pi 4 Model B, vilket är en dator, och behöver därför ett operativsystem. Raspberry Pi OS är ett linux-baserat operativsystem som är anpassat för Raspberry Pi av olika modeller. Operativsystemet erbjuder en användarvänlig GUI (Graphical User Interface), som några av gruppmedlemmarna använt tidigare, och är samtidigt resurssnålt i förhål- lande till andra alternativ [30]. 13 3. Komponentval och konstruktion Python användes eftersom det är ett programmeringsspråk som de flesta i grup- pen är bekanta med. Fördelen med Python är att det är ett programmeringsspråk som har stor tillgång till offentligt publicerat material som kan vara användbart för projektet. 3.3 Konstruktion Konstruktionen av roboten utformades med hjälp av de önskemål och krav som ställdes i kravspecifikationen. Dessa önskemål och krav handlade om robotens di- mensioner, vikt och att komponenterna inte skulle synas. I Figur 3.8 visas robotens undersida (till vänster) och ovansida (till höger), där placering för respektive kompo- nent markerats. Notera att robotens framsida är riktad uppåt på den vänstra bilden och nedåt på den högra bilden. Figur 3.8: Konstruktion och placering av komponenter för roboten. Undersidan ses till vänster och ovansidan ses till höger. Ramen för roboten skapades av fyrkantsrör i stål för att ge en robust och tålig grund. En plastskiva monterades på ramen för att skapa en monteringsyta för komponen- terna. Drivhjulen med dess växellådor, placerades i mitten av båda långsidorna, och kopplades till varsin motor. Placeringen av drivhjulen, tillsammans med differential- styrningen, gör att roboten kan svänga runt sin egen axel, vilket möjliggör svängning även vid trånga ytor. Ramen skapades för att passa till motorer som inte krävde extra växling, vilket gjorde att växellådorna med drivhjul sticker utanför ramen. I hörnen, undertill på roboten, monterades caster-stödhjulen för ökad stabilitet. Rasp- berry Pi 4, Raspberry Pi Pico, motordrivaren och den UWB-modul som agerade som lyssnare, monterades ovanför de skivor som motorerna var monterade på. Skivorna var fästa till en bjälke, av samma slag som ramen, med gångjärn. Dessa belastades sedan med var sin tryckfjäder och tillsammans uppgav de fjädring i drivaxlarna. Kor- gen monterades på ovansidan. Framför korgen placerades LiDAR-enheten eftersom vyn framtill var av störst intresse. De fyra UWB-modulerna som konfigurerades till ankare monterades på korgens topp, nära dess hörn. Ett hål gjordes i korgen för 14 3. Komponentval och konstruktion att skapa plats för batteriet. För att uppnå rätt spänningar för komponenterna an- vändes en DC-DC omvandlare och en linjär spänningsregulator. De två sistnämnda är dock inte markerade i Figur 3.8. En av- och på-knapp implementerades också mellan batteriet och resten av systemet, för att enkelt kunna stänga av och sätta på systemet utan att koppla bort batteriet manuellt. Av- och på-knappen syns inte i Figur 3.8. Prototypens slutgiltiga dimensioner blev 460 mm i bredd, 540 mm i djup och 490 mm i höjd. En modell av en scanner 3D-printades för att efterlikna känslan av att hålla i en självscanner med UWB-modulen inuti. Taggen placerades i handtaget och ström- försörjdes av en powerbank som placerades ovanpå (se Figur 3.9). Figur 3.9: 3D-printad modell av en ”självscanner” med UWB-tagg i handtag och po- werbank ovanpå. 15 3. Komponentval och konstruktion 16 4 Implementation I detta kapitel förklaras hur UWB-modulerna och LiDAR-enheten implementerades, samt hur Kalmanfiltret skapades. Vidare ges en överskådlig beskrivning om hur koden som är skriven fungerar, samt en förklaring till hur kollisionsundvikningen fungerar. Till sist ges förklaringar till hur olika parametrar fastställdes. 4.1 Implementering av UWB Implementeringen av UWB-modulen MDEK1001 var problemfri. En app skapad av företaget själva laddades ner till en Android-enhet, där både ankarna, taggen och lyssnaren kunde anslutas. Figur 4.1 visar placeringen av ankarna, med avstånd och vinkel från referenspunkten till taggen. Referenspunkten bestämdes till att va- ra punkten precis framför LiDAR-enheten. Ankarna i detta projekt placerades i en rektangel, lite innanför ramens kant. Notera att ankarna inte hade samma höjd som ramen, utan placerades högre upp. Figur 3.8 visar tydligt placeringen i höjdled för ankarna. Genom appen ställdes position in för ankare manuellt. För att bestämma var i koordinatsystemet som respektive ankare befann sig, mättes avståndet mellan refe- renspunkten och varje ankare i x-led och y-led. För att få ut data om taggens position användes egenskriven kod i Python som kommunicerar med UWB-modulerna via UART. Koden byggde på modulernas inbyggda mjukvara som använde trilateration, vilket beskrivs i avsnitt 2.2. Från positionen beräknades ett avstånd från referens- punkten till den person som höll i taggen, samt vinkel mellan tagg och referenspunkt. 17 4. Implementation Figur 4.1: Fyra ankare med trilaterationscirklar, samt markerat avstånd och vinkel mellan tagg och referenspunkt. 4.2 Implementering av LiDAR För att möjliggöra avståndsmätning och hinderdetektering integrerades en LiDAR- sensor på roboten. Den kommunicerar med Raspberry Pi 4 via en seriell anslutning (UART). Sensorn monterades längst fram på roboten för att maximera synfältet framåt, men detta medförde också vissa begränsningar då sensorn endast kunde se framåt och därmed inte detekterade objekt bakom sig. Ett GitHub-repository [31] skrivet i Python användes för att hantera signalerna från LiDAR-enheten. En LiDAR gör det möjligt att se omgivningen i 360 grader, men eftersom att syftet var att upptäcka hinder framför roboten, samt att korgen som monterades bakom LiDAR-enheten hade setts som ett hinder, minskades vyn till 210 grader framåt. Ett konfidensvärde följde med varje mätning. Med ett konfidensfilter var det sedan möjligt att ignorera mätningar som gav ett konfidensvärde under en justerbar gräns. Denna implementation utvärderades ej. I Figur 4.2 visas LiDAR- enhetens synfält, och markerat i rött är det objekt som ligger närmast enheten, vars avstånd till LiDAR-enheten också går att avläsa. 18 4. Implementation Figur 4.2: LiDAR-sensorns synfält i miljö med flera hinder. De blå punkterna är objekt och de gula linjerna är vägen strålen tagit. Röda linjerna markerar det närmsta punkterna i synfältet och den uppmätta distansen för dessa, samt konfidensvärdet, skrivs ut högst upp i rutan. 4.3 Implementering av Kalman Filter För att tillämpa Kalman filtrets ekvationer som förklarades i teoriavsnitt 2.3 be- hövdes matriser och vektorer som beskriver systemet att bestämmas. Processen att bestämma dessa redogörs för i detta avsnitt och grundade sig på tidigare examens- arbete. Tillståndsvektorn x, som från och med nu noteras som s för att inte förväxlas med x-koordinaten, kunde beskrivas som följande för ett diskret tidssteg k [17]: ŝk =      xk ẋk yk ẏk      , där x, y var koordinater i x- och y-led och ẋ, ẏ var hastighet i respektive riktning. Med finit differens approximerades hastigheten som derivatan av positionen i diskret tid t = k∆t: ẋk ≈ xk+1 − xk ∆t . Nästa tillstånd beskrevs som: ŝk+1 =      xk + ∆t · ẋk ẋk yk + ∆t · ẏk ẏk      = F ŝk. 19 4. Implementation Tillståndsövergångsmatrisen blev därmed: F =      1 ∆t 0 0 0 1 0 0 0 0 1 ∆t 0 0 0 1      . Tiden mellan UWB-mätningar mättes till ∆t = 0, 14 s. UWB-modulerna som användes kunde mäta position i tre dimensioner, men för vårt syfte behandlades endast koordinater i planet och därmed blev mätningsvektorn zk = [ xk yk ] . Förhållandet mellan mätningsvektorn och tillståndsvektorn gavs av zk = Hsk + v där v var brusvektor. H matrisen extraherade x- och y-koordinaten från tillståndsvektorn. H = [ 1 0 0 0 0 0 1 0 ] . R matrisen speglade de mätosäkerheter i UWB-antennerna vilket reflekterades i de uppmätta koordinaterna. I vårt fall var det en 2x2 kovariansmatris R = [ σ2 x 0 0 σ2 y ] . En simplifiering gjordes i antagandet att mätbruset i x och y var oberoende av varandra. Bestämmandet av standardavvikelsen σ för varje koordinat redogörs i av- snitt 5.1. Resultatet blev σx = 23 och σy = 18 i cm för avstånd inom 5 m. Därefter behandlades processbrusets kovarians Q. På grund av svårigheter att mo- dellera detta förenklades det till att vara ett brus som försköt ett predikterat tillstånd till att motsvara det verkliga tillståndet [17]. Matrisen förenklades till Q =      qvar 0 0 0 0 qvar 0 0 0 0 qvar 0 0 0 0 qvar      . Ett högre Q gjorde att förtroendet i modellen blir lägre eftersom prediktionen behö- ver större förskjutning. I praktiken blev filtret mer responsivt men brusigt för högt Q. Å andra sidan jämnade filtret ut prediktionerna mer för lägre Q men reaktio- ner till plötsliga ändringar blev långsammare. Detta samband visas i Figur 4.3 där Kalmanfiltret av olika magnitud på qvar applicerades på positionen av en gående människa inom 2 meter av roboten. Kalmanfiltret innehöll de matriser och vektorer som tidigare bestämts i detta avsnitt. qvar = 10 valdes som en medelväg mellan snabb responsivitet och förmåga att jämna ut brus. 20 4. Implementation Figur 4.3: Ofiltrerade x-koordinater jämförda med Kalmanfiltrerade x-koordinater för olika värden på processbruset Qvar. Slutligen bestämdes den initiala kovariansen för skattningen P0 och initiala till- ståndsvektorn s0. Dessa innehöll startvärden som filtret sedan rekursivt uppdatera- de och var relevant för hur snabbt filtret konvergerade mot det initiala tillståndet. Eftersom målet ofta placerades stillastående en meter rakt framför roboten vid start så sattes dessa till att vara: P0 =      100 0 0 0 0 100 0 0 0 0 100 0 0 0 0 100      , s0 =      0 0 100 0      . 4.4 Implementering av kod Vid uppstart initierade systemet UWB-modulen för att bestämma robotens posi- tion, LiDAR-sensorn för att upptäcka hinder, samt UART-kommunikationen för att skicka styrkommandon till en Raspberry Pi Pico. Den sistnämnda användes för att styra motorerna. I varje iteration av huvudloopen hämtades robotens aktuella position i förhållan- de till målet via UWB. Utifrån detta beräknades både avståndet till målet och riktningen dit. Om roboten befann sig tillräckligt nära målet, stannade den. Om ett hinder upp- täcktes inom en definierad säkerhetszon framför roboten, aktiverades ett hinderund- vikande beteende. Beroende på hindrets position och målets riktning, kunde roboten exempelvis backa eller svänga för att undvika kollision. 21 4. Implementation Om inget hinder fanns och roboten inte var framme, användes PID-reglering för att styra rörelsen. En PID-regulator kontrollerade hastigheten baserat på avståndet till målet, medan en annan styrde riktningen utifrån vinkelavvikelsen. De beräknade styrkommandona skickades via UART till Raspberry Pi Pico, som styrde motorerna. Loopen upprepades kontinuerligt, vilket gjorde att roboten hela tiden anpassade sin rörelse i realtid baserat på målets position och hinder i omgiv- ningen. Figur 4.4 visar ett flödesschema över denna huvudloop i koden. Figur 4.4: Flödesschema för huvudloopen i kontrollsystemet, som visar hur roboten navigerar mot målet och undviker hinder. Systemet implementerades med en strategi för att undvika hinder som kombine- rade direkt kollisionsdetektion med ett avståndsbaserat styrfält. En LiDAR-sensor avnändes för att kontinuerligt övervaka området framför roboten och identifiera po- tentiella hinder. När ett föremål befann sig för nära roboten, har denna stannat och utfört en undvikande manöver genom att rotera eller backa i en kontrollerad riktning, beroende på hinderpositionen i förhållande till rörelseriktningen. Utöver direkta hinder tog systemet även hänsyn till närliggande objekt genom att införa ett potentiellt styrfält. Styrningen justerades redan på avstånd från hinder genom påverkan från det potentiella styrfältet. Fältet beräknades baserat på hin- derpositioner i ett begränsat synfält framför roboten. En hinderposition definierades till att vara en LiDAR-mätning som upptäckte en punkt inom en meter till sensorn. Hinder nära roboten ackumulerade fler punkter från LiDAR-sensorn. Algoritmen räknade antalet hinderpositioner i synfältet på vänster och höger sida om roboten 22 4. Implementation och gav en starkare styrsignal för att svänga i motsatt riktning för varje sådan position. 4.5 Styrsystem Styrsystemet i detta sammanhang avser den programvara som datorn kör och dess utformning. Följande två avsnitt beskriver hur olika relevanta parametrar fastställ- des och hur motorsignalerna är uppbyggda. 4.5.1 Parametrar För att roboten skulle uppnå önskad funktion implementerades diverse parametrar i programmet. Bland de viktigaste av dessa var regulatorparametrar, styrsignalbe- gränsningar, önskat följningsavstånd och säkerhetsdistans till hinder. De två signalerna som regleras, det vill säga vinkel och distans till målet (θ och d), behandlas i separata reglersystem och tilldelas därför individuella reglerpara- metrar. Valet av parametervärden gjordes genom att iterativt testa, med hjälp av grundförståelse för påverkan av de olika komponenterna, olika kombinationer. Det framkom att den integrerande faktorn för de båda regulatorerna inte bidrog till nå- gon förbättring av körförmågan. Vidare för att minimera oscillationer begränsades vinkelregulatorn till att endast reglera fel över absolutvärde 10 grader. 4.5.2 Motorsignaler Regulatorernas styrsignaler skickades till mikrokontrollern som därefter sände mo- torsignalen till motordrivaren enligt Ekvation (4.1) - (4.2). pvänster = vfram + vsväng (4.1) phöger = vfram − vsväng (4.2) Styrsignalen vfram från distansregulatorn kopplades till hastigheten framåt och an- tog ett värde mellan 0 och 100. Distansregulatorn var inställd på endast positiva värden då backning när ledaren närmade sig korgen skulle försvåra processen att placera varor i korgen. Styrsignalen vsväng från vinkelregulatorn avgjorde hur myc- ket roboten svängde och antog värden mellan -100 och 100. Dessa enhetslösa värden kombinerades enligt Ekvation (4.1)-(4.2) för att bilda en procentsats p för respektive hjul. Från dessa ekvationer tydliggörs även hur svängningen uppstod som resultat av att vsväng bildade en differens mellan rotationshastigheten av motorer. Positiv vsväng gjorde att vänsterhjul snurrade snabbare än högerhjul alltså svängde roboten åt höger. Vidare avgjorde tecknet framför p polariteten för motorn. Absolutvärdet av p begränsades till att vara maximalt 100 då procentsatsen motsvarade arbetscy- keln för PWM-signalen till motordrivaren. På så sätt bestämde p effektmatningen för respektive motor. 23 4. Implementation 24 5 Tester och Resultat För att undersöka och analysera hur komponenterna fungerar i praktiken har ett antal tester genomförts. Syftet med dessa tester var att se hur väl de krav och öns- kemål som ställdes i kravspecifikationen uppfylldes (se Figur A.1 i Appendix A), samt för att testa sensorernas noggrannhet. Nedan presenteras en lista på de tester som gjorts. I följande avsnitt ges en beskrivning av dessa tester tillsammans med testernas resultat: • Precision och noggrannhet för MDEK1001 • Positionsmätning genom UWB med Kalmanfilter • Positionsmätning genom UWB i cirkulär bana med Kalmanfilter • Avståndsmätning för LiDAR-enheten • Mätning av avvikelse vid färd rakt fram • Mätning av hastighet • Belastningstest • Mätning av bromssträcka • Svänga runt hörn • Avstånd från ledaren • Följa ledare bland hinder • Test i matvarubutik. 5.1 Precision och noggrannhet för MDEK1001 För att undersöka vilken positionsprecision och noggrannhet UWB-modulerna hade, genomfördes ett test där uppmätt position jämfördes med verklig position. Enligt datablad rekommenderas ett avstånd mellan ankarna på 20 till 25 meter för bätt- re prestanda [32]. Dessutom förväntades taggen befinna sig inom det området som ankarna spänner upp. Dock var ankarna i detta projekt monterade på roboten och kunde därför inte uppnå avstånd inom det rekommenderade intervallet, därav in- tresset att undersöka hur det påverkade mätningarna. Taggen, som var monterad i scannern, sattes fast på ett stativ för få den i un- gefärlig höjd som om att en person höll i den (70 cm över marken). Stativet ställdes på tio godtyckligt valda positioner inom fem meter. 100 mätvärden samlades in för varje position. Gränsen på fem meter valdes på basis från tidigare observationer där både noggrannhet och precision försämrades avsevärt efter det avståndet. 25 5. Tester och Resultat Figur 5.1 visar ovanifrån vilka punkter som valdes (de färgade kryssen) och jämför det med de uppmätta punkterna med korresponderande färg. Figur 5.1: Verklig position (färgade kryss) jämfört med uppmätt position (färgade pric- kar) för 10 olika positioner. Sedan analyserades normalfördelningen av felet mellan verklig och uppmätt x- och y-koordinat för varje position. Eftersom normalfördelningen skiljde sig avsevärt från position till position gjordes en förenkling. Standardavvikelsen σ i x- och y-riktning för alla positioner beräknades som medelvärdet av varje standardavvikelse. Detsam- ma gjordes för medelfelet µ. Måtten sammanställs i Tabell 5.1. Ytterligare beräk- 26 5. Tester och Resultat nades medianen av dessa mått för att minimera påverkan från avvikande positio- ner med mycket högre medelfel och standardavvikelse än resterande positioner. Ett exempel på en sådan avvikare är det rosa krysset i Figur 5.1. Medianvärdena sam- manställs i Tabell 5.1. Den genomsnittliga avvikelsen användes i Kalmanfiltret från avsnitt 4.3. Tabell 5.1: Vänster tabell visar medelvärdet av medelfel och standardavvikelse i x- och y-riktning, medan höger visar medianen av dessa. Mått Uppmätt fel (cm) Genomsnittlig µx 67,9 Genomsnittlig µy −21,5 Genomsnittlig σx 22,5 Genomsnittlig σy 17,7 Mått Uppmätt fel (cm) Median µx 47,6 Median µy −4,2 Median σx 17,9 Median σy 16,6 5.2 Positionsmätning genom UWB med Kalman- filter Testet som mätte precision och noggrannhet för MDEK1001 visade tydliga fel på korrekt uppmätning av avstånd, samt tydliga tecken på brus. Ett Kalmanfilter ska- pades därefter, och mer exakt hur det togs fram förklaras i avsnitt 4.3. Utförandet av detta test gick ut på att placera den färdiga roboten på en öppen yta, och syftade till att verifiera krav 1.8 i kravspecifikationen, som anger ett maximalt tillåtet fel i avståndsuppmätning på 0,3 meter och önskemål 1.12 - kan identifiera ledaren bakom solida objekt. Testet gjordes i två etapper, där den första var att mäta med line-of- sight (LOS) och därefter med non-line-of-sight (NLOS). Stativet placerades ut på olika positioner runt om roboten (se Figur 5.2), där dessa positioner var samma po- sitioner som användes för att skapa Kalmanfiltret (se avsnitt 5.1). Uppmätningarna genomfördes och jämfördes med de verkliga positionerna, först utan objekt mellan tagg och robot och därefter med svarta trälådor mellan för att uppnå NLOS. Fi- gur 5.3 visar resultatet för testet och Tabell 5.2 - 5.3 sammanställer medelfel och standardavvikelse för uppskattningarna. Något som inte framgår av figurerna eller tabellerna är att för NLOS-fallet tog det i vissa fall mer än dubbelt så lång tid att samla de 100 punkterna. 27 5. Tester och Resultat Figur 5.2: Exempel på uppställning för avståndsmätning med hjälp av UWB med LOS (vänster) och NLOS (höger). (a) Utan blockerad vy mellan robot och mål (b) Med blockerad vy mellan robot och mål Figur 5.3: Verklig position (färgade kryss) jämfört med filtrerad, uppmätt position (fär- gade prickar) för 10 olika positioner runtom roboten. 28 5. Tester och Resultat Tabell 5.2: Feluppskattning för LOS. Vänster tabell visar medelvärdet av medelfel och standardavvikelse i x- och y-riktning, medan höger visar medianen av dessa. Mått Uppskattat fel (cm) Genomsnittlig µx 55,4 Genomsnittlig µy −23,2 Genomsnittlig σx 16,8 Genomsnittlig σy 17,7 Mått Uppskattat fel (cm) Median µx 76,1 Median µy −17,1 Median σx 13,8 Median σy 14,5 Tabell 5.3: Feluppskattning för NLOS. Vänster tabell visar medelvärdet av medelfel och standardavvikelse i x- och y-riktning, medan höger visar medianen av dessa. Mått Uppmätt fel (cm) Genomsnittlig µx 62,7 Genomsnittlig µy −5,5 Genomsnittlig σx 14,3 Genomsnittlig σy 14,5 Mått Uppmätt fel (cm) Median µx 74,7 Median µy −24,8 Median σx 12,9 Median σy 13,0 Resultaten från både LOS- och NLOS-testerna visar att det uppmätta felet i posi- tionsuppskattningen överskred den tillåtna gränsen, då det uppmätta medelfelet i samtliga fall översteg 30 cm. 5.3 Positionsmätning genom UWB i cirkulär ba- na En cirkel med radien tre meter tejpades upp på ett golv, och roboten placerades så att referenspunkten (mittpunkten precis framför LiDAR-sensorn) var precis ovanför cirkelns mittpunkt. En person höll i UWB-taggen och gick runt cirkelns kant (se Figur 5.4), fram tills att 500 mätpunkter samlades in. Syftet med testet var att se hur noggrann avståndsmätning blev när taggen rörde sig. Precis som testet i Avsnitt 5.2 gjordes även detta test i två delar, först med LOS och sedan med NLOS, där svarta trälådor placerades ut och inkapslade roboten. De uppmätta positionerna jämfördes med den faktiska cirkulära gångbanan. 29 5. Tester och Resultat Figur 5.4: Uppställning för test av UWB-mätning i cirkulär bana. Figur 5.5 visar resultatet för testet. För båda testen syns det tydligt att UWB- modulerna underskattar det verkliga avståndet. Figur 5.5a visar dock en mer defini- erad cirkel, där mätpunkterna inte är lika utspridda som de är i Figur 5.5b. Med en blockerad vy kan man också se att en del punkter avviker från de andra punkterna (uppe till vänster i figuren). (a) Utan blockerad vy mellan robot och mål (b) Med blockerad vy mellan robot och mål Figur 5.5: Verklig bana (heldragen svart linje) jämfört med filtrerad, uppmätt position (blå prickar) för gående person med UWB-tagg. 5.4 Avståndsmätning för LiDAR-enheten För att mäta LiDAR-enhetens precision i att mäta avstånd till objekt inom sitt synfält, gjordes ett test likt det som genomfördes för UWB-modulerna. Roboten 30 5. Tester och Resultat placerades på en öppen yta. Två batterier användes som godtyckliga objekt och placerades på varandra. Det gjordes 10 mätningar där objektet placerades på oli- ka avstånd och vinklar från roboten, men inom LiDAR-sensorns synfält. För varje mätning mättes avståndet mellan sensorns centrum och objektet och jämfördes med det avstånd sensorn mätte upp. Jämfört med testet med UWB modulerna gjordes detta test med kortare avstånd av den anledning att LiDAR-sensorns syfte är att upptäcka närliggande objekt. Figur 5.6: Exempeluppställningar för test av LiDAR-enheten. Avstånden som uppmättes av LiDAR-sensorn hade en generell avvikelse på 1-2%. Den maximala avvikelsen var 2,1% vid 48 cm avstånd. Det användes 10 mätvärden mellan 5,5 - 380 cm. Vid alla de 8 tillfällen där det uppmättes en avvikelse var den uppmätta längden kortare än den faktiska längden. Figur 5.7: Grafisk presentation av resultatet från LiDAR-testet där även avvikelsen mellan verklighet och uppmätt distans är presenterad. 31 5. Tester och Resultat 5.5 Mätning av avvikelse vid färd rakt fram För att utvärdera hur bra roboten var på att köra rakt fram mättes avvikelser från en mittlinje (se Figur 5.8). Stora vita papper tejpades fast på ett golv och en penna sattes fast bak på roboten. Sträckan roboten körde var på 282 cm, vilket motsvarade den totala längden på pappersarken. Längden ansågs vara tillräcklig för att uppfatta avvikelser, samtidigt som det motsvarar ett rimligt avstånd mellan tagg och robot. Taggen ställdes på en pedestal en bit framför slutet på pappersarken, ett avstånd motsvarande längden på roboten. Roboten startade vid början av pappersarken och markerade med hjälp av pennan sin väg fram till taggen. Det gjordes 10 mätningar för detta test, och för varje mätning mättes avståndet från papprets mittlinje till den punkt på robotens spår som låg längst bort från mittlinjen. Figur 5.8: Uppställning inför test vid mätning av avvikelse vid färd rakt fram. Avvikelser i färdbanan i förhållande till den kortaste vägen uppvisades. Mätresulta- ten presenteras i Tabell 5.4. 32 5. Tester och Resultat Tabell 5.4: Mätresultat från mätning av avvikelser vid färd rakt fram, där största avvi- kelsen [cm] över en färdad sträcka på 282 centimeter noterats. Positivt värde är förskjut- ning åt höger. Nummer Största avvikelse (cm) 1 -4 2 32 3 107 4 -2 5 23 6 0 7 101 8 31 9 -6 10 81 Median-avvikelsen var 27 cm, vilket motsvarade 0,1 cm förskjutning åt höger per cm som färdades rakt fram. Den största uppmätta avvikelse var 107 cm, vilket motsvarar en avvikelse på 0,4 cm per cm i färdriktningen. Färdbanorna presenteras i Figur 5.9, där det framgår att roboten antingen kör nära en rak färd eller avviker till höger. 33 5. Tester och Resultat Figur 5.9: Resultat från testning av avvikelse i rak färdriktning, digitalt återskapat, där varje enskild färg markerar vägen roboten tog under en iteration av testet och centrum- linjen är markerad i svart. 5.6 Mätning av hastighet Eftersom roboten inte hade en komponent monterad på sig som kunde mäta hastig- het gjordes ett praktiskt test. Testet gjordes på en sträcka på fyra meter. En timer startades när roboten passerade startlinjen och stoppades när den korsade mållin- jen. Testet genomfördes först tre gånger med roboten inställd på att köra 100% av sin maximala hastighet. Därefter genomfördes testet tre gånger till, fast denna gång med hastigheten på 80% av sin maxhastighet. Denna inställning används också i den implementerade koden eftersom roboten annars kör för snabbt, vilket gör att den inte hinner svänga eller manövrera på ett tillförlitligt sätt. Den högsta uppmätta hastigheten var 2,4 km/h. För 80 % av maximal hastighet uppmättes en verklig hastighet på 1,9 km/h. Enligt krav 1.10 i kravspecifikationen ska robotens körhastighet ligga mellan 4 och 6 km/h. Eftersom samtliga uppmätta värden låg under detta intervall kan det kon- stateras att kravet inte uppfylldes. 34 5. Tester och Resultat 5.7 Belastningstest Enligt krav 1.2 i kravspecifikationen skulle roboten klara av last på upp till 15 kg. För att testa detta gjordes ett belastningstest. Först vägdes den färdiga roboten ut- an någon last för att bestämma dess egenvikt. Efteråt lastades korgen med stegvis ökande vikter: först 5 kg, sedan 7,5 kg och till sist 10 kg. Efter varje vikttillägg observerades hur robotens körförmåga påverkades. Robotens egenvikt var 8 kg. Vid last på 5 kg märktes inte någon märkbar för- ändring på körförmåga. Vid 7,5 kg last noterades det att roboten kunde köra framåt emellanåt, att den började slira och fick problem med att backa. Vid 10 kg last kun- de roboten vid vissa tillfällen flytta på sig framåt, men förlorade helt förmågan att backa eftersom hjulen inte fick något grepp. Roboten klarade dock strukturellt alla viktnivåer under testet. Sammanfattningsvis uppfyllde roboten inte kravet eftersom den inte klarade att köra med en last på 15 kg. 5.8 Mätning av bromssträcka För att kontrollera att roboten uppfyller krav 1.7 i kravspecifikationen, som fast- ställer att bromssträckan ska vara kortare än 0,5 meter, genomfördes en mätning av bromssträckan. Roboten startade utan last med maxhastighet, en bit bakom en bestämd linje och när den passerade linjen stängdes roboten av manuellt. Testet gjordes 3 gånger och avståndet mellan linjen och roboten mättes upp efter varje mätning. Den bromssträcka som uppmättes vid maximal hastighet var i genomsnitt 44 cm. Den högsta uppmätta bromssträckan var 47 cm. Notera att detta resultat gäller för den maximala uppmätta hastigheten, 2,4 km/h. Då samtliga mätvärden låg under gränsvärdet på 0,5 meter kan det konstateras att kravet uppfylldes. 5.9 Svänga runt hörn För att utvärdera robotens förmåga att navigera i mer verklighetstrogna miljöer där vägen inte alltid är rak, gjordes ett test där roboten fick följa efter en person som bar UWB-taggen runt ett hörn. Två olika varianter av testet gjordes (se Figur 5.10), och båda varianterna genomfördes tre gånger vardera. Det första scenariot innebar att tagg-bäraren redan stod bakom ett hörn när roboten sattes igång, och det andra scenariot av testet gick ut på att tagg-bäraren stod framför roboten när den sattes igång, och efter starten gick runt hörnet. 35 5. Tester och Resultat (a) Start bakom hörn. (b) Start framför korg. Figur 5.10: Testuppställning vid svängning av hörn. Testerna visar varierande resultat beroende på startsituation. Resultatet från tes- terna framgår i Tabell 5.5 nedan. Tabell 5.5: Resultat från tester av robotens förmåga att svänga runt hörn. Figur 5.11 visar den körväg roboten tog för mätning med tagg-bärare bakom hörn vid start. Bilden visar att roboten klarade av att svänga, dock med en väldigt stor svängradie. Figur 5.11: Körväg av robot för mätning 2 vid test med tagg-bärare bakom hörn vid start. 36 5. Tester och Resultat 5.10 Avstånd från ledaren Krav 1.1 i kravspecifikationen angav att roboten ska stanna när avståndet till den som bär taggen är mindre än 70 cm. Testet utfördes genom att ledaren, det vill säga personen som bar taggen, först gick en bit bortom roboten och stannade. Roboten skulle därefter automatiskt följa efter och stanna när den bedömde att det angivna avståndet till ledaren hade uppnåtts. Det kortaste avståndet mellan ledaren och ro- boten mättes vid varje testtillfälle. Testet upprepades fem gånger. Medelavståndet mellan ledaren och roboten var 50 cm, med värden mellan 31 och 65 cm. Därmed uppfylldes det uppställda kravet. 5.11 Följa ledare bland hinder Detta test genomfördes för att undersöka robotens förmåga att navigera i både sta- tiska miljöer och i enlighet med önskemål 1.12 (”att klara av dynamiska miljöer”). För att efterlikna en mer realistisk miljö placerades föremål ut på en öppen yta för att representera stillastående hinder, samtidigt som en person rörde sig runt i området för att simulera rörliga, dynamiska hinder. De stillastående hinderna var i samma storleksordning som roboten. Testledaren promenerade runt i området, och det observerades om roboten kolliderade med något hinder eller stötte på andra problem under testets gång. När roboten skulle undvika fasta hinder inträffade kollisioner sällan. Dock, på grund av många hinder och smala passager, hände det ibland att roboten stannade för att undvika en krock. I de flesta fall lyckades roboten ta sig fram till testledaren. I en dynamisk miljö undvek roboten i regel att kollidera med den rörliga personen, så länge foten inte pekade direkt mot roboten. Detta eftersom LiDAR-sensorn inte identifierar så låga objekt. När foten däremot pekade mot roboten ökade risken för kollision, även om detta inte alltid ledde till en faktisk krock. 5.12 Test i matvarubutik Eftersom roboten är ämnad att användas av kunder i matvarubutiker, gjordes ett test på Maxi ICA Stormarknad Göteborg. Butiken har både öppna ytor och smalare gångar mellan hyllor. En stor del av varorna i butiken står på antingen Europapallar eller hyllor vars ben befinner sig en bit in från hyllans kant. Vidare gjordes testet en tid då väldigt få kunder besökte butiken. Det gjordes inga mätningar i testet. Istället observerades den generella körförmågan. Vid testkörningen noterades att roboten vid ett flertalet tillfällen krockade in i hyl- lor, frysdiskar och pallar. I vissa fall stannade roboten till, trots att det var fri sikt. Roboten hade dessutom svårt att färdas rakt vid körning rakt fram, utan körde en slalomliknade bana för att ta sig fram. Detta visar tydliga tecken på kraftig oscilla- 37 tion. Däremot klarade roboten av att svänga runt hörn de flesta gånger, ibland utan problem och ibland med att roboten först höll på att köra in i ett hinder, men lycka- des stanna, backa och sedan fortsätta svängen. Vid några av tillfällena en kollision inträffade, gick axeln mellan ett drivhjul och dess växellåda av och krävde byta till en ny axel. Eftersom roboten körde långsammare än gånghastighet ökade avstån- det mellan roboten och användaren successivt under gång. Detta medförde att den UWB-baserade positioneringen blev mycket mindre tillförlitlig för längre avstånd än fem meter, och roboten navigerade i fel riktning som led in i hinder. Roboten hamnade i en cykel där den försökte köra i en vägg och justerade sig själv för att inte kollidera. Därmed uppfylldes inte önskemålet 1.9 att kunna följa ett mål inom 10 m. Sammanfattningsvis hade roboten brister i sin förmåga att både navigera till taggens position och att upptäcka hinder. I Figur 5.12 visas en fotografi från testet. Figur 5.12: Ett fotografi tagen från testet i matvarubutik. 5.13 Resultat för resterande krav i kravspecifika- tionen Eftersom alla tester utfördes i rumstemperatur och på plan yta ansågs kraven gäl- lande temperatur i användningsmiljö och att klara av nivåskillnad vara uppfyllda. Dessutom ansågs önskemålet om att robotens komponenter skulle vara dolda, vara delvis uppfyllt. En majoritet av komponenterna blev dolda under roboten medan UWB-modulerna, LiDAR-enheten och batteriet blev synliga på ovansidan. Krav 1.6 (svängradie), testades inte då robotens manövreringsförmåga redan ve- rifierats genom dess konstruktion med differentialstyrning, vilken möjliggör rotation kring den egna axeln. Därför ansågs det inte nödvändigt att genomföra ett separat testmoment för detta krav. 5. Tester och Resultat Utifrån samtliga tester har det konstaterats vilka krav från kravspecifikationen som uppfylldes eller ej. Dessa är sammanställda i Figur 5.13 nedan. 39 5. Tester och Resultat Figur 5.13: Sammanställning av vilka krav i kravspecifikationen som uppfyllts där grönt innebär uppfyllt, rött innebär ej uppfyllt, gult innebär delvis uppfyllt och blå innebär ej testat. 40 6 Diskussion I detta kapitel analyseras resultat för att jämföras med kravspecifikationen. Det diskuteras förbättringsområden och etiska aspekter för framtida utveckling. 6.1 Testresultat Resultaten diskuteras i sin helhet för tre olika områden: LiDAR, Ultra Wideband och körförmåga. 6.1.1 LiDAR Utifrån de tester som utfördes i syfte att undersöka sensorerna är det tydligt att LiDAR-enheten utför väldigt precisa mätningar. Anledningen till att samtliga test- värden var kortare än de LiDAR-enheten mätte upp, kan vara kopplat till brister i metoden för mätning, det var svårt att urskilja var exakt som enheten invändigt gjorde sina mätningar. Vid testning i den tänkta miljön (en butik) visade systemet dock tecken på störningar i LiDAR-enhetens mätningar. Ibland upptogs mätningar som var mycket kortare än det verkliga avståndet. Roboten reagerade då som att det var ett hinder i vägen, även om det inte var det. Detta kan tyda på brister i konfidensfiltret eller att dammpartiklar uppmättes. 6.1.2 Ultra Wideband Den andra sensortekniken, UWB, visade mindre önskvärd mätdata. Anledningen till detta kunde primärt vara att just denna tekniken har i detta projekt blivit tillämpad utanför den menade användningsområdet. Att UWB-ankarna satt så tätt som de gjorde kan varit den största anledningen till att mätningarna inte överensstämde med verkligheten. Felet var stort i genomsnitt mellan uppmätt värde till det fak- tiska värdet och i spridningen mellan uppmätta värden för samma faktiska värde. Utifrån testet med cirkulär rörelse kring prototypen framgick det att den uppmätta distansen tenderade att vara kortare än den verkliga, eftersom alla uppmätta punk- ter befann sig inom cirkeln i Figur 5.5. De andra precisionstesterna för UWB visade dock att vid fåtal tillfällen kan den uppmätta distansen vara längre än den faktiska. Vidare visar Tabell 5.1 - 5.3 att de uppmätta koordinaterna tenderade att vara mer än en halvmeter förskjutna positivt i x-led, medan y-koordinaternas absolutvärde var i regel lägre än verkligheten. Detta visade sig inte vara ett alltför stort problem 41 6. Diskussion i praktiken, åtminstone för LOS-förhållanden, eftersom riktningen dit roboten ska köra är grovt densamma. Men de höga felen kunde ha varit en orsak till oscillatio- nerna som uppstod under testet i matvarubutiken. Något som framgår från Tabell 5.2 - 5.3 är att NLOS-förhållanden inte ger någon tydlig försämring av de uppskattade positionerna. Tvärtom så blir standardavvikel- sen några centimeter mindre i medelvärde och median. Detta strider mot förväntan eftersom hinder borde störa radiosignalernas färd mellan ankare och tagg, vilket ger ökad brus för trianguleringen. Däremot visar Figur 5.5 en tydlig ökning av varians för NLOS. Detta kan tyda på att filtret predikterar olika bra beroende på om det är ett stillastående eller rörligt mål. Hur medelfelet påverkas av NLOS är svårtolkat utifrån befintlig mätdata och det behövs ytterligare data för att dra slutsatser. Kalmanfiltret som implementerades hade ingen tydlig effekt på reduceringen av de ovannämnda medelfelen, vilket är förväntat då filtret saknar förmåga att prediktera att punkterna är kraftigt förskjutna i genomsnitt. Däremot minskade filtret standar- davvikelsen av mätningarna med några centimeter eftersom den filtrerar bort brus. Bruset kunde ha minimerats ytterligare genom att minska på processbruset i filtret, men då hade systemet istället blivit ännu långsammare på att reagera på ändringar i målets rörelse. I sin helhet visar UWB-resultaten ett mycket högre medelfel och varians än förväntat på grund av den närliggande uppsättning av ankare. Effekten av siktförhållanden och Kalmanfilter är inte lika tydlig och det behövs fler test för att komma till en konkret slutsats. Användning av endast 100 mätpunkter för varje position är för lågt, vilket synliggörs i de motsägande medel- och medianvärdena som både visar förbättring och försämring. Samtidigt kunde valet av positioner runtom roboten vara mer systematisk för att tydligare undersöka hur vissa avstånd och vinklar påverkar resultatet. En annan potentiell felkälla är att platsen för uppsamlingen av ofiltrerade positioner inte var densamma som för senare test med filter. Den förstnämnda hade fler objekt kring sig som kunde reflektera UWB-signaler och medföra störningar som ger högre varians. 6.1.3 Körförmåga Testerna för hastighet, bromssträcka och maximal belastning visade sig alla inte uppfylla kraven. Den uppmätta bromssträckan nådde faktiskt upp till kravet men detta var vid omkring hälften av den hastighet som kravspecifikationen krävt. Bris- ter i bromstestet är att för få mätningar gjordes och att testet innebar att bryta strömtillförseln till motorerna istället för att till exempel kortsluta motorerna. I testet som gjordes gavs motorn möjlighet att ”ladda ur” det uppbyggda rörelsemo- mentet, i form av elektromotorisk kraft, genom motorkontrollern vilket troligtvis gav upphov till den långa stoppsträckan. Den maximala hastigheten som uppmättes nådde inte heller upp till kravet. Detta tros vara en direkt orsak av att den motor som var beräknad vara mest lämplig, inte var tillgänglig och istället ersattes med en liknande motor med samma effekt, men med annan utväxling i kombination med 42 6. Diskussion en 3D-printad växellåda med okänd verkningsgrad. Implementationen av växellådan förklarar också delvis resultatet i belastningstestet. Då växellådan inte var en del av planeringen för slutprodukten gjordes inga försök att utveckla den för prototy- pen. Den sköra 3D-printade växellådan begränsade den fjädring som kunde läggas på drivaxlarna och därmed begränsade friktionskraften mellan däcken och golvet. Detta förklarar varför däcken börjar slira då 7,5 kg lastar roboten. Från testet av avvikelsen vid färd rakt fram påvisas en stark dragning åt höger. Detta gäller dock inte alltid. Tre möjliga förklaringar till detta har identifierats till att vara olikheter mellan motorerna som gör att samma pulsvidd inte ger samma rotation. Ytterligare kan olikheter i de 3D-printade växellådorna också ger upphov till olika rotation. Den sista faktorn tros vara fel i mätningar från UWB-modulerna, då målet tenderar att vara förskjutet en halvmeter åt höger. Den sistnämnda tros vara den primära orsaken till de störta avvikelserna i färdriktning. De tester som gjordes för att utvärdera roboten under användning visar att pro- totypen går att använda i en butiksmiljö. I situationer då roboten har fri sikt till ledaren lyckas den alltid navigera sig fram till ledaren. Vägen den tar är sällan rak och i vissa fall åker roboten ortogonalt mot färdriktningen mot ledaren. Trots detta är det möjligt att ”hämta upp” roboten genom att gå närmare och leda den i rätt riktning om den skulle åka åt fel håll och tappa bort ledaren. I fall då ledaren går utanför synfältet kan ändå roboten mäta upp en position nära nog för att navigera runt hindret med hjälp av LiDAR-enheten som förhindrar kollisionen med hindret. Under testet i butiksmiljö kolliderade dock roboten med väggar vid diverse tillfällen. Detta kunde i vissa fall förklaras av att geometrin i den nivån där LiDAR-enheten gör mätningar inte alltid stämmer överens med nivåerna som roboten med korgen tar upp. Väggar som når hela vägen ner till marken kolliderar roboten med betydligt mer sällan, men inte aldrig. Dessa kollisioner är direkt kopplade till programvaran då LiDAR-enheten bedöms ha en tillräcklig uppdateringsfrekvens. Fel med programmet kan vara att hinderdetekteringen uppdateras för sällan och/eller att hinderdetekte- ringens algoritm är bristfällig, det vill säga att parametrarna för hinderdetekteringen felinställda eller att en annan algoritm hade kunnat implementeras för att erhålla ett bättre resultat. 6.2 Avvikelser från planering Den prototyp som konstruerades under projektet avvek från den ursprungliga pla- neringen i diverse aspekter. Anledningen till dessa orsaker skiljer sig åt för varje avvikelse och presenteras nedan: Ursprungsplanen var att använda ett UWB-chip DWM3000 som är en direkt efter- trädare till chipet DWM1000 inuti MDEK1001 [33]. Planen var att programmering på själva chipet skulle erbjuda större friheter än att programmera på en helhetslös- ning som MDEK1001. Det visade sig att den DWM3000 varianten var begränsat i stöd i form av programmeringsbibliotek och gick inte att implementera med grup- pens bristfälliga kunskaper inom inbäddade system. 43 6. Diskussion Till följd av de ändringar i motor som beskrivits tidigare blev designen annorlun- da från den tilltänkta. Med en växellåda i drivlinan fanns det inte längre plats för drivpaketet under roboten, detta medförde att hjulen istället stack ut cirka 10 cm utanför roboten och därmed försvann en viktig del ur designaspekten. Även håll- fastheten försämrades markant, då hjulen, axlarna och växellådan var utskrivna i PETG-plast var de väldigt sköra för stötar. Även UWB-modulernas storlek gjorde att de inte längre gick att fälla in i konstruktionen som tänkt. Detta medförde att de fick monteras synligt istället. 6.3 Jämförelse med tidigare kandidat- och exa- mensarbete Jämfört med föregående arbete som utvecklade en autonom kundkorg [5] har stora framsteg gjorts med denna prototyp. För det första kan roboten följa en specifik per- son utan att förväxla den med någon annan eftersom nuvarande system förlitar sig på en unik radiosignal istället för personigenkänning. För det andra fungerar spår- ningen av målet utan att den är i sikte på grund av UWB-tekniken. Slutligen har kollisionsundvikningen nått betydligt längre i denna iteration då LiDAR-tekniken samlar mycket mer distansdata än ultraljudssensorer som användes i tidigare pro- jekt. Det gör att roboten kan svänga undan olika mycket beroende på avstånd till och storleken av ett hinder. På tal om körförmåga lyckas denna iteration inte nå gånghastigheten vilket är en försämring. Däremot lider den inte av lika stora oscil- lationsproblem eftersom vinkelregulatorn endast aktiveras för stora fel. Å andra sidan är UWB-efterföljningen en tydlig försämring jämfört med tidiga- re efterföljande robot som använder samma teknik [17]. Examensarbetet visar att mätnoggrannhet under tio centimeter kan uppnås då ankarna är placerade 40 cm ifrån varandra. I denna prototyp är avstånd mellan ankare högre men medelfelet är runt 50-70 cm. Det tidigare arbetet använder ett UWB-chip med samma antenn som på MDEK1001, men skillnaden är förmodligen annorlunda konfigurering vilket gör sensorerna olika lämpade på att mäta positioner utanför området som ankarna spänner ut. Hur exakt konfigurationen skiljer sig är komplicerat att avgöra eftersom MDEK1001 innehåller inbäddad kod och omprogrammeringen av detta låg utanför projektets ramar. 6.4 Vidareutveckling UWB-testen visar att det finns tydliga förbättringsområden för mätnoggrannheten och precisionen av den ofiltrerade datan. Samma uppställning av ankare på korg hade kunnat användas i fortsättningen, men då bör andra UWB-moduler som är inställda för den uppställningen användas. Ett annat alternativ är att följa datab- ladets rekommendation och placera ett flertal MDEK1001-moduler utspridda över ett rum, samtidigt som taggar ställs på varje robot. På så sätt uppnås förmodligen 44 6. Diskussion högre mätnoggrannhet och precision för positionsmätningarna. Om utspridning av MDEK1001-moduler uppnår bättre mätvärden hade omfattning- en kunnat skalas upp markant utan större förändringar, med två taggar på varje robot för att avgöra riktning och position, och en tagg på varje person kan man para ihop kund och korg och låta dessa samspela i butiken. Alternativt kan det vara möjligt att endast använda en tagg per robot och istället utgöra riktning enbart ge- nom att jämföra position med den senaste uppmätta positionen i kombination med iakttagelse av styrsignalen mellan mätningar. Med ytterligare uppgradering med planeringsalgoritmer och kartläggning av butiken via LiDAR-mappning kan man dessutom optimera robotarnas rörelser och färdvägar i butiken. Förutom förbättringar i mjukvaran finns det flertal utvecklingsområden inom hård- vara. Nuvarande motor bör ersättas med den korrekt dimensionerade motor som tidigare benämnts för att undgå växellåda. På så sätt hade hjulen undvikit stötar genom att de placeras innanför ramen. Om vidareutveckling sker med nuvarande motor bör växellådan uppgraderas med exempelvis stålaxlar för att klara påfrest- ningen av framdrivningen. Processorn i Raspberry Pi 4B är underdimensionerad för den här applikationen, med detta följer att roboten inte gör tillräckligt snabba ju- steringar. Vidare bör någon form utav visuell representation av robotens handlingar implementeras för att underlätta för användaren att förstå vad roboten försöker gö- ra. Detta kan vara genom exempelvis en skärm eller olika färgade dioder. 6.5 Samhälleliga och etiska aspekter Att utveckla och skapa en autonom kundkorg innebär både möjligheter och ut- maningar utifrån dels samhälleliga- men också etiska aspekter. Ur ett samhälleligt perspektiv kan tekniken bidra till ökad tillgänglighet, särskilt för äldre eller perso- ner med nedsatt rörlighet. En självkörande kundkorg ger alltså butiker möjlighet att inkludera fler kunder. En produkt som görs autonom kan i många fall ersätta ett jobb som en männi- ska har kunnat göra tidigare. Idag kan butiksanställda behöva flytta på kundkorgar som kunder inte ställer tillbaka på rätt plats, men att ersätta en sådan uppgift ge- nom att korgen återvänder till sin station ersätter bara en arbetsuppgift och inte ett jobb. Detta skapar mer tid för de anställda att göra andra arbetsuppgifter. Det är också viktigt att tänka på hur denna teknik på kundkorgar påverkar mil- jön. För att minimera nyproduktion bör tekniken kunna integreras på kundkorgar som redan existerar eftersom en kundkorg ofta är tillverkad av plast. Dessutom är det viktigt att ta hänsyn till var och hur de nödvändiga komponenterna tillverkas, inte bara utifrån ett miljöperspektiv utan också med tanke på arbetsförhållandena i fabrikerna där de produceras. Vidare är valet av batteri, samt dess återvinningshan- tering två viktiga aspekter att ha i åtanke för att säkerställa en miljömässigt hållbar produkt. 45 6. Diskussion Mindre butiker kan till att börja med ha svårt att investera i denna teknik, vilket gör att den främst riktar sig till större butiker. Detta skulle kunna skapa konkurrens, där kunder väljer att gå till den butik som har dessa korgar. Däremot kan införskaf- fandet av autonoma kundkorgar också resultera i att kunder väljer att inte använda dem, alternativt väljer att avstå från att besöka butiken helt. Detta kan bero på att tekniken upplevs som komplicerad, vilket gör att en del kunder kan känna obehag. Äldre personer kan särskilt vara tveksamma till att använda en autonom kundkorg, vilket innebär att den möjliga lösningen, som har målet att inkludera fler människor, istället skapar svårigheter. Det är därför viktigt att tänka på hur denna teknologi kan implementeras på ett sätt som blir enkel att förstå för alla, och att det tydligt framgår hur produkten fungerar. Eftersom ingen kamera används som personigenkänning påverkas inte kundernas integritet genom någon form av datainsamling. Om en kundkorg skulle köra in i en kund eller på ett föremål kan frågor om vems ansvaret ligger på uppkomma, är det då butiken eller kunden som bär ansvaret? Det är frågor som borde besvaras innan en butik implementerar tekniken. 46 7 Slutsats Syftet med projektet var att utveckla en prototyp av en autonom kundkorg. Proto- typen utvärderades genom tester baserade på kravspecifikationen, men också andra tester ämnade att utvärdera prestanda. Resultaten visade att samtliga krav inte upp- fylldes, men att de centrala funktionskraven för personföljning och hinderdetektering uppnåddes. Slutligen testades prototypen i en matvarubutik där den uppvisade sag- da funktionalitet, men även vissa brister. Sammantaget uppnåddes en fungerande prototyp med grundläggande funktionali- tet för personföljning och hinderdetektering. Dock kvarstår vissa utmaningar för att uppnå robust och tillförlitlig autonom navigering i mer komplexa miljöer. 47 7. Slutsats 48 Referenser [1] E. Landt, “Butik i Nyköping börjar med digitala mynt till kundvagnar”, SVT Nyheter, [Online], okt. 02, 2023. URL: https : / / www . svt . se / nyheter / lokalt/sormland/butik-i-nykoping-borjar-med-digitala-mynt-till- kundvagnar--4c8r09 (hämtad 2025-02-05). [2] L. Dunn, “AI-Powered Shopping Carts Are Here,” Consumed, Nov, 19, 2024, [Online]. URL: https://consumed.substack.com/p/ai-powered-shopping- carts-are-here?utm_campaign=post&utm_medium=web (hämtad 2025-02-05). [3] R. Redman, “Kroger tests ‘smart’ shopping cart from Caper,” Supermarket News, Jan, 19, 2021, [Online]. URL: https://www.supermarketnews.com/ grocery-technology/kroger-tests-smart-shopping-cart-from-caper (hämtad 2025-02-05). [4] Binary Tech, “World’s first self driving smart shopping cart ELI | New in- vention technology”, YouTube, Nov. 26, 2018, [Video]. URL: https://www. youtube.com/watch?v=_held95qCQ4 (hämtad 2025-02-06). [5] K. Agneholm, A. Ahmad, J. Ekarna, S. Jansson, M. Nilsson och H. Palm, “Elektriskt assisterad kundvagn,” Opublicerad, 2022. [6] J. C. F. Diaz, W. E. Carter, R. L. Shrestha och C. L. Glennie, Lidar remote sensing. 2013, vol. 2, s. 757–808. doi: 10.1007/978-1-4419-7671-0_44. URL: https : / / www . scopus . com / inward / record . uri ? eid = 2 - s2 . 0 - 84905918298&doi=10.1007%2f978-1-4419-7671-0_44&partnerID=40& md5=74f170e8c80025b4e963dbb614285498. [7] RS, ”Okdo Lidar Module with Bracket Development Kit for LiDAR_LD06 Raspberry Pi SBC,” 2025 [Online]. URL: https://se.rs-online.com/web/ p/sensor-development-tools/2037609 (hämtad 2025-03-25). [8] S.-J. Xing, F.-M. Zhang, S.-Y. Cao, G.-W. Wang och X.-H. Qu, “Arbitrary and absolute length measurement based on femtosecond optical frequency comb,” Wuli Xuebao/Acta Physica Sinica, årg. 62, nr 17, 2013. doi: 10.7498/aps. 62.170603. URL: https://www.scopus.com/inward/record.uri?eid=2- s2.0-84884528536&doi=10.7498%2faps.62.170603&partnerID=40&md5= 9161d70b77d88dec60b1a82ea9ca6b04. [9] Qorvo US, Inc., Getting Back to Basics with Ultra-Wideband (UWB), White Paper, [Online], 2021. URL: https://www.qorvo.com/- /media/files/ qorvopublic / white - papers / qorvo - getting - back - to - basics - with - ultra-wideband-uwb-white-paper.pdf (hämtad 2025-03-25). [10] R. S. Kshetrimayum, “An introduction to UWB communication systems,” IEEE Potentials, årg. 28, nr 2, s. 9–13, 2009. URL: https://ieeexplore. ieee.org/stamp/stamp.jsp?tp=&arnumber=4803808 (hämtad 2025-03-25). 49 https://www.svt.se/nyheter/lokalt/sormland/butik-i-nykoping-borjar-med-digitala-mynt-till-kundvagnar--4c8r09 https://www.svt.se/nyheter/lokalt/sormland/butik-i-nykoping-borjar-med-digitala-mynt-till-kundvagnar--4c8r09 https://www.svt.se/nyheter/lokalt/sormland/butik-i-nykoping-borjar-med-digitala-mynt-till-kundvagnar--4c8r09 https://consumed.substack.com/p/ai-powered-shopping-carts-are-here?utm_campaign=post&utm_medium=web https://consumed.substack.com/p/ai-powered-shopping-carts-are-here?utm_campaign=post&utm_medium=web https://www.supermarketnews.com/grocery-technology/kroger-tests-smart-shopping-cart-from-caper https://www.supermarketnews.com/grocery-technology/kroger-tests-smart-shopping-cart-from-caper https://www.youtube.com/watch?v=_held95qCQ4 https://www.youtube.com/watch?v=_held95qCQ4 https://doi.org/10.1007/978-1-4419-7671-0_44 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84905918298&doi=10.1007%2f978-1-4419-7671-0_44&partnerID=40&md5=74f170e8c80025b4e963dbb614285498 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84905918298&doi=10.1007%2f978-1-4419-7671-0_44&partnerID=40&md5=74f170e8c80025b4e963dbb614285498 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84905918298&doi=10.1007%2f978-1-4419-7671-0_44&partnerID=40&md5=74f170e8c80025b4e963dbb614285498 https://se.rs-online.com/web/p/sensor-development-tools/2037609 https://se.rs-online.com/web/p/sensor-development-tools/2037609 https://doi.org/10.7498/aps.62.170603 https://doi.org/10.7498/aps.62.170603 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84884528536&doi=10.7498%2faps.62.170603&partnerID=40&md5=9161d70b77d88dec60b1a82ea9ca6b04 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84884528536&doi=10.7498%2faps.62.170603&partnerID=40&md5=9161d70b77d88dec60b1a82ea9ca6b04 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84884528536&doi=10.7498%2faps.62.170603&partnerID=40&md5=9161d70b77d88dec60b1a82ea9ca6b04 https://www.qorvo.com/-/media/files/qorvopublic/white-papers/qorvo-getting-back-to-basics-with-ultra-wideband-uwb-white-paper.pdf https://www.qorvo.com/-/media/files/qorvopublic/white-papers/qorvo-getting-back-to-basics-with-ultra-wideband-uwb-white-paper.pdf https://www.qorvo.com/-/media/files/qorvopublic/white-papers/qorvo-getting-back-to-basics-with-ultra-wideband-uwb-white-paper.pdf https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4803808 https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4803808 Referenser [11] O. Norrby och J. Friberg, “Inomhuspositionering med UWB och Bluetooth: Studie av kommersiella produkter och konstruktion av eget system,” examens- arb., Chalmers tekniska högskola, Göteborg, Sverige, 2018. [Online]. URL: https://odr.chalmers.se/server/api/core/bitstreams/1f4e60b1- 2c9e-4f28-8cd1-81bb998f1e04/content. [12] NETGEAR Team, “Difference Between 2.4 GHz, 5 GHz, and 6 GHz Wire- less Frequencies,” URL: https://www.netgear.com/hub/wifi/routers/ difference-2-4-ghz-5-ghz-and-6-ghz/ (hämtad 2025-03-25). [13] W. Chantaweesomboon, C. Suwatthikul, S. Manatrinon m. fl., “On performan- ce study of UWB real time locating system,” 2016, s. 19–24. doi: 10.1109/ ICTEmSys.2016.7467115. URL: https://www.scopus.com/inward/record. uri?eid=2-s2.0-84974594018&doi=10.1109%2fICTEmSys.2016.7467115& partnerID=40&md5=c5366fcfc80febf7fa2d6a2b65a6efa5. [14] Decawave Ltd., MDEK1001 Kit User Manual Module Development & Evalua- tion Kit for the DWM1001, Decawave Ltd., 2017. URL: https://www.qorvo. com/products/d/da007995 (hämtad 2025-05-09). [15] E. Teoman och T. Ovatman, “Trilateration in indoor positioning with an uncertain reference point,” 2019, s. 397–402. doi: 10.1109/ICNSC.2019. 8743240. URL: https://www.scopus.com/inward/record.uri?eid=2- s2.0-85068791997&doi=10.1109%2fICNSC.2019.8743240&partnerID=40& md5=125dd8247a15391ad776bc4473a9b307. [16] N. M. o. I. S. S.S Anikanov, “Simple adaptive filters for data pre-processing,” i (2012) 8th International Topical Meeting on Nuclear Plant Instrumentation, Control, and Human-Machine Interface Technologies 2012, NPIC and HMIT 2012: Enabling the Future of Nuclear Energy, San Diego, USA, 2012, s. 1104– 1111. URL: https://www.scopus.com/inward/record.uri?eid=2-s2. 0-84880486082&partnerID=40&md5=495ff3b91e373228df4dce5b250423fe (hämtad 2025-04-19). [17] G. Betancur och F. Treven, “A Framework for a Relative Real-Time Tracking System Based on Ultra-Wideband Technology,” Examensarbete, examensarb., Chalmers tekniska högskola, 2017. URL: https://odr.chalmers.se/items/ 73cfb119-9ca1-4550-8bbb-7d4da96d4715. [18] G. W. och G. Bishop, An Introduction to the Kalman Filter, Chapel Hill, NC, USA: Department of Computer Science University of North Carolina at Chapel Hill, 2006. [19] A. Becker. “Multivariate Kalman Filter,” Kalman Filter Tutorial. (2024), URL: https://www.kalmanfilter.net/kalmanmulti.html (hämtad 2025-05-03). [20] A. Becker. “Overview,” Kalman Filter Tutorial. (2024), URL: https://www. kalmanfilter.net/default.aspx (hämtad 2025-05-03). [21] O. Krejcar, I. Spicka, R. Frischer och M. Heger, “Incremental PIC controller with handled limit states and manual settings,” vol. 1, 2010, s. V1379–V1383. doi: 10.1109/ICMEE.2010.5558526. URL: https://www.scopus.com/ inward/record.uri?eid=2-s2.0-77957794774&doi=10.1109%2fICMEE. 2010.5558526&partnerID=40&md5=0dac81345b66529385967f6236c3c67e. [22] J. Fredriksson, L13 - Actuator III.pdf, Chalmers tekniska högskola, Maskin- teknologsektion, 2024. 50 https://odr.chalmers.se/server/api/core/bitstreams/1f4e60b1-2c9e-4f28-8cd1-81bb998f1e04/content https://odr.chalmers.se/server/api/core/bitstreams/1f4e60b1-2c9e-4f28-8cd1-81bb998f1e04/content https://www.netgear.com/hub/wifi/routers/difference-2-4-ghz-5-ghz-and-6-ghz/ https://www.netgear.com/hub/wifi/routers/difference-2-4-ghz-5-ghz-and-6-ghz/ https://doi.org/10.1109/ICTEmSys.2016.7467115 https://doi.org/10.1109/ICTEmSys.2016.7467115 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84974594018&doi=10.1109%2fICTEmSys.2016.7467115&partnerID=40&md5=c5366fcfc80febf7fa2d6a2b65a6efa5 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84974594018&doi=10.1109%2fICTEmSys.2016.7467115&partnerID=40&md5=c5366fcfc80febf7fa2d6a2b65a6efa5 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84974594018&doi=10.1109%2fICTEmSys.2016.7467115&partnerID=40&md5=c5366fcfc80febf7fa2d6a2b65a6efa5 https://www.qorvo.com/products/d/da007995 https://www.qorvo.com/products/d/da007995 https://doi.org/10.1109/ICNSC.2019.8743240 https://doi.org/10.1109/ICNSC.2019.8743240 https://www.scopus.com/inward/record.uri?eid=2-s2.0-85068791997&doi=10.1109%2fICNSC.2019.8743240&partnerID=40&md5=125dd8247a15391ad776bc4473a9b307 https://www.scopus.com/inward/record.uri?eid=2-s2.0-85068791997&doi=10.1109%2fICNSC.2019.8743240&partnerID=40&md5=125dd8247a15391ad776bc4473a9b307 https://www.scopus.com/inward/record.uri?eid=2-s2.0-85068791997&doi=10.1109%2fICNSC.2019.8743240&partnerID=40&md5=125dd8247a15391ad776bc4473a9b307 https://www.scopus.com/inward/record.uri?eid=2-s2.0-84880486082&partnerID=40&md5=495ff3b91e373228df4dce5b250423fe https://www.scopus.com/inward/record.uri?eid=2-s2.0-84880486082&partnerID=40&md5=495ff3b91e373228df4dce5b250423fe https://odr.chalmers.se/items/73cfb119-9ca1-4550-8bbb-7d4da96d4715 https://odr.chalmers.se/items/73cfb119-9ca1-4550-8bbb-7d4da96d4715 https://www.kalmanfilter.net/kalmanmulti.html https://www.kalmanfilter.net/default.aspx https://www.kalmanfilter.net/default.aspx https://doi.org/10.1109/ICMEE.2010.5558526 https://www.scopus.com/inward/record.uri?eid=2-s2.0-77957794774&doi=10.1109%2fICMEE.2010.5558526&partnerID=40&md5=0dac81345b66529385967f6236c3c67e https://www.scopus.com/inward/record.uri?eid=2-s2.0-77957794774&doi=10.1109%2fICMEE.2010.5558526&partnerID=40&md5=0dac81345b66529385967f6236c3c67e https://www.scopus.com/inward/record.uri?eid=2-s2.0-77957794774&doi=10.1109%2fICMEE.2010.5558526&partnerID=40&md5=0dac81345b66529385967f6236c3c67e Referenser [23] RS PRO, 12 V dc, 6000 gcm, Brushed DC Geared Motor, Output Speed 143 rpm, RS Components AB. URL: https://docs.rs- online.com/7575/ A700000007082249.pdf (hämtad 2025-04-28). [24] SAFETY DATA SHEET Valve Regulated Lead-Acid (VRLA) Battery, United Kingdom, Yuasa Battery Europe Ltd, 2011. URL: https://docs.rs-online. com/fef4/0900766b81506fde.pdf (hämtad 2025-04-10). [25] R. P. Press, Raspberry Pi 4 Model B specifications", u.d. URL: https://www. raspberrypi.com/products/raspberry-pi-4-model-b/specifications/ (hämtad 2025-03-19). [26] R. P. Press, Buy a Raspberry Pi Pico", u.d. URL: https://www.raspberrypi. com/products/raspberry-pi-pico/ (hämtad 2025-03-25). [27] PRODUCT BRIEF: MDEK1001, USA: Qorvo, 2017. URL: https://www. qorvo.com/products/p/MDEK1001#documents (hämtad 2025-03-19). [28] PRODUCT INFORMATION: DWM1000, USA: Qorvo, 2018. URL: https: //www.qorvo.com/products/p/DWM1000#documents (hämtad 2025-03-19). [29] L. Cao, J. Chen och J. Li, “Working principle and application analysis of UART,” 2023, s. 255–259. doi: 10.1109/EEBDA56825.2023.10090571. URL: https://www.scopus.com/inward/record.