Databaser til selvkørende biler

Jeg har i forbindelse med faget databaser på pba i softwareudvikling udarbejdet en synopsis om databaser til selvkørende biler.

Indholdsfortegnelse

  • Afgræsning og problemformulering
  • Indledning
  • Hvordan opbevares data som genereres af selvkørende bilers sensorer
  • Bag filer
  • Database med tilhørende GUI til bag filer
  • High definition maps
  • Sikkerhed I databaser til selvkørende biler
  • Sammenfatning
  • Spørgsmål til drøftelse

Afgræsning og problemformulering

Jeg har i de seneste par år fulgt udviklingen af selvkørende biler tæt, og jeg har i min specialiseringsperiode på datamatiker uddannelsen i 2015 arbejdet med teknologi til selvkørende biler, hvor jeg byggede min egen selvkørende robot. Jeg synes det gav god mening at fortsætte med dette emne i en synopsis til faget databaser, da der er sket en stor udvikling i teknologien til selvkørende biler de seneste par år. Jeg har ikke endnu været i dybden med database delen i emnet selvkørende biler, når vi snakker om databaser i stor skala. Min problemformulering til synopsen databaser til selvkørende er derfor formuleret således:

Selvkørende biler bruger data fra flere forskellige typer af sensorer til at løse komplekse problemstillinger i forbindelse med transport fra a til b. Hvordan opbevares data fra sensorer på selvkørende biler sikkert i databaser, så data kan bruges under transport i realtid, og efter transport til at optimere selvkørende bilers performance på vejen.
Indledning

Der dør over 1.2 millioner mennesker i hele verden hvert år i trafikken, og vi mennesker står over for store klimaudfordringer på jorden, hvis vi ikke fremskynder overgangen til vedvarende energikilder. Næsten alle trafikuheld skyldes menneskefejl, og vi bør derfor finde på bedre transportløsninger, så vi kan få reduceret antallet af trafikuheld. Vi er dog heldigvis kommet så langt i den teknologiske udvikling, at det nu er muligt at bygge selvkørende elektriske biler, som ikke kører på benzin, og som kan køre helt af sig selv på vejen uden at lave mange af de menneskefejl, som ofte fører til trafikuheld. Selvkørende elektriske biler kan lade sig gøre ved hjælp af avanceret computer hardware og sensorer, som indsamler data til machine learning algoritmer, der kan opfatte miljøet omkring bilen, og som derefter planlægger kørsel og kontrol af bilen. Der skal dog rigtig meget sensor data til, og der skal bygges præcise kort af verden, før den selvkørende teknologi virker i praksis med den teknologi vi har i øjeblikket. Det giver især nogle udfordringer i forbindelse med håndteringen af data, da hardware og software skal kunne klare den store volumen af data, som selvkørende biler bruger og genererer. Hvordan alt denne data til de selvkørende biler gemmes, samtidig med at der bliver taget højde for sikkerhed, er noget jeg har tænkt mig at undersøge nærmere i denne synopsis om databaser til selvkørende biler.

Hvordan opbevares data som genereres af selvkørende bilers sensorer

En selvkørende bil har flere forskellige typer af sensorer monteret på bilen. Kamera, LIDAR, Radar, GPS og Odometry sensorer er monteret på stort set alle selvkørende biler i dag, som en selvkørende bil bruger til at køre autonomt fra afrejsested til destination / køre sig selv fra a til b.

Alle disse sensorer generer både hver for sig og tilsammen store mængder af data, når en selvkørende bil kører rundt på vejen. Selvkørende biler kan i princippet køre 24 timer i døgnet, da der ikke behøves en chauffør bag rattet. Det stiller høje krav til både hardware og software i forbindelse med lagring af store mængder af sensor data.
Data fra sensorer på en selvkørende bil skal kunne gemmes midlertidigt under kørsel, da en selvkørende bil hele tiden lokaliserer sig selv i forhold til sine omgivelse, samt opfatter objekter i omgivelserne omkring bilen, så bilen kan planlægge kørsel og kontrol af bilens retning og hastighed. Det kræver rigtig meget computer kraft at løse disse opgaver, og det har medført at der de seneste par år er sket en stor udvikling af specialbygget GPU hardware til selvkørende biler, som kan behandle store mængde af data parallelt. Det er heller ikke alle der har adgang til selvkørende biler endnu, og det har medført at der er blevet brugt meget energi på at udvikle avanceret simuleringsværktøjer til selvkørende biler, så teknologien kan testes i et virtuelt miljø inden teknologien testes i den virkelige verden.

Selvkørende biler bruger også kort databaser i form af high definition maps, som er præcise kort af veje og omgivelse helt ned til centimeter-niveau. High definition maps gør det nemmere for bilen at lokalisere sig selv, og gør at der er mere computer kraft til rådighed til andre opgaver fx at holde øje med biler, cyklister og fodgængere i lyskryds. Hvordan high definition maps er opbygget vil jeg komme ind på senere i synopsen.

Sensor data fra kørsel på en rute kan og bliver også brugt offline efter kørsel til optimering af hardware og software på den selvkørende bil, så den kan køre endnu bedre. For at kunne gemme data fra sensorer, har jeg valgt at kigge nærmere på robot operating systems bag filer, som er en fil format, der kan bruges til at gemme sensor data til offline brug. Bag filer kan nemt genafspilles, og det gør at bag filer er rigtig gode til debugging og visualisering af sensor data.

Bag filer

Robot operating system (ROS) er et robot middleware, som bruges til at udvikle robotteknologi. ROS bliver brugt i flere projekter, hvor der udvikles teknologi til selvkørende biler. ROS er bygget op omkring en graf arkitektur, hvor noder kan kommunikere med hinanden i et netværk ud fra et publish subscribe design pattern. En kamera node kan fx publish/udgive kamera data i form af messages til et topic, som andre noder i netværket kan subscribe/lytte til.

Ros bag filer er en fil format, som bliver brugt til at gemme message data fra topics i ROS netværket. Bag filer kan nemt genafspilles og visualiseres, hvilket gør at bag filer er gode til debugging af sensor data efter kørsel af selvkørende bil.

En selvkørende bil der er bygget op omkring ROS, vil have alle sine sensorer bygget op som noder, der publisher message data til topics på ROS netværket. Bag filer går ind og gemmer message data på disse topics i netværk transport laget i ROS.

Bag filer er som standard ikke særligt produktivt at arbejde med, da alt data er serialiseret i kompakte bag filer, som er svære at læse, hvis de åbnes direkte i en tekst editor. Bag filers data tilgås ved hjælp af kommandolinjen og API’er, som er bygget specielt til bag filer og serialiseret data. Der er udviklet en package ved navn rosbag i ROS, som giver et kommandolinjeværktøj til at arbejde med bag filer, samt et API som kan bruges til at læse og skrive til bag filer enten med C++ eller python kode. Rosbag kan fx bruges til at få information om en bag file, optage en bag file på et bestemt topic i ROS eller afspille en bag file. Det er rigtig godt værktøj at bruge, når man arbejder med de enkelte bag filer i ROS. For at gøre det endnu nemmere at arbejde med bag filer, har jeg kigget på mulighederne for at bygge en database med tilhørende GUI til bag filer.

Database med tilhørende GUI til bag filer

En selvkørende bil har mange sensorer monteret, og den generer derfor mange bag filer, da der normalt bliver lavet en bag file til hver sensor. Med tiden bliver det hurtigt uoverskueligt at holde styr på bag filer i terminalen, og der kan med fordel udvikles en database til bag filer med tilhørende GUI, som giver et bedre overblik af bag filer til selvkørende biler.

Features til programmet ville være følgende, automatisk folder overvågning, tekstbaseret søgning, filtrering af bag filer, hierarkisk folder oversigt, oversigt af metadata i bag fil, download knap, tagging. Derudover skal programmet have en høj performance, høj tilgængelighed og en skalerbar arkitektur, da selvkørende biler generer rigtig meget data til bag filer. Programmet skal også have en vis form for fleksibilitet, så der nemt kan foretage ændringer, når der kommer nye typer af sensorer og andre metoder at løse problemerne på.

Et løsningsforslag ville være en NoSQL database dokument database i form af Mongodb, som programmet skulle bygges op omkring. Programmet ville skulle lægge i skyen, så det er muligt at skalerer databasen op horisontalt i stor størrelse til en lav pris. Til programmet ville jeg bygge en simpel web GUI, som nemt kan tilgås af flere personer fx et udviklingsteam på 5 til 10 personer.

High definition maps

High definition maps er geografisk præcise 3D kort af verden, som selvkørende biler bruger til at lokalisere sig selv, når de kører rundt på vejen. High definition maps er præcise helt ned til centimeter-niveau, og er fyldt med stort set alle objekter i 3D, der er langs vejen: Vejnet, bygninger, træer, lyskryds, streger på vejen, vejskilte, bump på vejen, vejarbejde og mange andre objekter bliver lavet præcist i 3D i high definition maps. High definition maps bliver konstrueret ved at køre selvkørende biler med SLAM algoritmer rundt i forvejen på de ruter, hvor der skal køre selvkørende biler. Avanceret mapping algoritmer i form af SLAM – simultaneous localization and mapping tager sensor data på ruten som input, og kan derefter konstruere et kort af ukendte miljøer, samtidig med at den selvkørende bil holder styr på sin position i det ukendte miljø. Andre selvkørende biler kan derefter bruge dette kort, så de ikke selv skal bruge computer kraft på at generere deres eget kort.
High definition maps kan med fordel bygges op i flere lag, hvor de mere statiske objekter er i de nederste lag fx vejnet og bygninger, som sjældent ændrer sin position i kortet. Vejarbejde og vejskilte bliver placeret i de øvre lag af kortet, da de er mere dynamiske, og de ofter ændrer sin position i kortet. Statiske objekter i mere pålidelige i forbindelse med lokalisering af bilen, hvorimod bilen skal være mere opmærksom på dynamiske objekter såsom vejarbejde, som nemt kan skifte position fra dag til dag.
Transport er på et eller andet punkt en stor transportforbindelse mellem mennesker i et stort netværk. Mennesker transporterer sig fx ofte til og fra arbejde eller skole, og på denne rute er der mange objekter og genstande, som har forbindelse til transportmidlet. Flere og flere af disse genstande og objekter på transportruterne vil i fremtiden blive koblet på internettet (Internet of Things), fordi det nu er muligt at bygge små computer chips. Netværksteknologien bliver hurtigere og hurtigere med 5G netværksteknologi, som er lige på trapperne. Jeg finder derfor NoSQL graph databaser utrolig spændende, da graph databaser giver muligheden for at analysere og hente data hurtigt i komplekse virtuelle modeller af transport.

Graph databaser er bygget op omkring nodes i form af datapunkter og edges, som forbinder de enkelte nodes, så det er tydeligt at se hvilke nodes som forbinder sig med hinanden. En graph database til selvkørende biler kunne bestå af nodes i form af: selvkørende bil, almindelig bil, lastbil, cyklist, fodgænger, arbejdsplads, skole, lyskryds, vejarbejde, hvor edges forbinder selvkørende bil med andre nodes, som den støder på i forbindelse med transport på en rute fra a til b.

Kortlægning af high definition maps af vejene i hele verden er en enorm opgave. Her vil crowdsourcing med tiden muligvis blive mere og mere populært, da der kommer flere selvkørende biler og intelligente devices på vejene, som kan hjælpe til med at bygge high definition maps ved at identificere nye områder og objekter i omgivelserne. Denne løsning med crowdsourcing giver dog anledning til problemer i forhold til privacy, da der vil blive opsamlet store mængder data af omgivelserne langt vejene. Det er værd at tænke sikkerhed ind i databaser, hvor udarbejdelse og opbevaring af high definiation maps forekommer.

Sikkerhed I databaser til selvkørende biler

Selvkørende biler går under betegnelsen livskritiske systemer, da der er menneskeliv på spil, når bilen kører rundt på vejen helt af sig selv. Det ville være katastrofalt for de personer, som bruger selvkørende biler som transportmiddel, og mennesker som opholder sig langt vejen, hvis andre fik tilgang til kontrollen af disse biler på grund af sikkerhedshuler og lav prioritering af sikkerhed.

Der er i øjeblikket et stort kapløb mellem alle de store bilfabrikanter og globale software virksomheder, hvor alle arbejder på at komme først til marked med selvkørende biler, og de produkter og services som bygges op omkring teknologien. For virksomhederne kan opnå en konkurrencemæssig fordel, vælger de fleste at holde deres selvkørende teknologi hemmelig, så andre konkurrenter ikke kan få indblik i deres teknologi. Sikkerhed er derfor også et rigtig vigtigt element i forbindelse med udvikling af teknologi til selvkørende biler.

Virksomheder der arbejder med udvikling af teknologi til selvkørende biler, bør begrænse adgangen til alle it-systemer og databasesystemer med multifaktor autentificering, og kun give adgang til personale, som har brug for adgang til fx databaser med data. Logging af it-systemer og databasesystemer ville også være en god ide, da det giver virksomheden mulighed for at få indblik i hvad deres medarbejdere laver, og om der er nogle uden for virksomheden, som har fået adgang til systemerne. Der kører i øjeblikket flere retssager i verden, hvor virksomheder sagsøger tidligere medarbejdere, fordi virksomheden mener at de tidligere medarbejdere har taget kode, filer og data med videre til den nye virksomhed, hvor medarbejderen er ansat.

Selvkørende biler vil i fremtiden kunne hente større mængder af data fra databaser i skyen ved hjælp af hurtig netværksteknologi i form af 5G. Det er vigtigt at prioritere sikkerhed af netværket, som har forbindelse til bilen. Stærke krypteringsalgoritmer vil kunne hjælpe med at optimere sikkerheden, da alt data bliver krypteret mellem database i skyen og bilens netværk. Afholdelse af loadtest og stresstest kan hjælpe med at give indblik i en bedre forståelse af, hvordan it-systemet virker under en bestemt belastning, og hvordan it-systemet virker i peaktime fx myldretid om morgenen eller eftermiddag, hvor der er en høj belastning. Distributed-Denial-of-Service angreb på selvkørende bilers netværk kan og vil forekomme i takt med at der kommer flere og flere selvkørende biler på vejene. Forebyggelse af og håndtering af DDoS angreb kan hjælpe med at holde database serveren kørende, mens de selvkørende biler kører rundt på vejen.

Fysisk sikkerhed af hardwaren på bilen er også nødvendigt for at undgå personer, som prøver at kobler sig direkte ind bilens hardware, eller konkurrenter som prøver at reverse engineer bilens hardware og software. Hardware på bilen skal placeres sikkert i sådan en grad at det er svært for at andre at tilgå disse komponenter. Det samme gælder for hardware i skyen, som har forbindelse til de selvkørende biler.

Virksomheder der udvikler teknologi til selvkørende biler, er nød til at gøre brug af specialister i databaser og sikkerhed, da det er så kritisk et system. Disse specialiser bør indgå direkte i udviklingsteams, så der undgås interne konflikter i virksomheden, og de database og sikkerhedsmæssige udfordringer løses.

Sammenfatning

Selvkørende biler generer og bruger store mængder af data, og selvkørende biler stiller derfor store krav til de tilknyttede databasesystemer. Databaser til selvkørende biler skal kunne skaleres op i stor skala på bilens egen hardware, så der er plads i databaserne til sensor data og high definition maps, som selvkørende biler gør brug af. Derudover skal disse databaser også kunne skaleres i skyen, så selvkørende biler kan hente nyt opdateret kort data, når de kører forskellige steder i verden.

Ros bag filer er en fil format, som kan bruges til at gemme serialiseret sensor data fra selvkørende biler. Bag filer kan genafspilles og visualiseres, hvilket gør at bag filer er gode til debugging af sensor data efter kørsel af selvkørende bil. Bag filer er som standard ikke særligt produktive at arbejde med, da alt data er serialiseret i bag filer, og data tilgås ved hjælp af kommandolinjeværktøj og API’er. Bag filer kan med fordel gemmes i en NoSQL dokument database, så det er hurtigere, nemmere og mere skalerbart at arbejde med flere bag filer, som bliver genereret af en flåde af flere selvkørende biler spredt geografisk i verden.

Selvkørende biler bruger sensor data til at generer high definitions maps, som er centermeter-niveau præcise kort selvkørende bruger til lokalisering af sig selv i forhold til omgivelserne. High definitions maps består af rigtig mange objekter, som har forbindelse til den selvkørende kørende, da den planlægger sin kørsel i forhold til de objekter der er i nærhenden af bilen. Graph databaser er en databaser arkitektur, som har mange interessante parraleller til high definitions maps, da begge består af mange noder/objekter som har forbindelse til hinanden. I fremtiden vil der komme endnu flere intelligente devices i trafikken, som selvkørende biler kan bruge til at forbedre sin kørsel. Graph databaser vil i de kommende år helt klart have en stor betydning i videreudvikling af teknologi til selvkørende biler.

Sikkerhed er vigtig del i forbindelse med udvikling af teknologi til selvkørende biler. Der er hård konkurrence mellem virksomheder der udvikler teknologien, som gør at virksomhederne er nød til at holde deres teknologi hemmeligt fra sine konkurrenter og selv egne medarbejdere. Selvkørende biler er et livskritisk system, hvor menneskeliv er på spil, når de kører rundt i trafikken. Det er vigtigt at have specialister i sikkerhed og databaser på de udviklingsteams, der udvikler teknologi til selvkørende biler.

Spørgsmål til drøftelse

Hvilke fordele og ulemper er der ved NoSQL databaser dokumenter databaser og graf databaser i forhold til relationelle databaser?

Hvilke big data database platforme kan bruges til selvkørende biler?

Hvilke færdigheder skal en specialist i databaser og sikkerhed have i forbindelse med udvikling af teknologi til selvkørende biler?