Kafferoboten er proppfull av artig teknologi. Her forklarer vi hvordan den ble bygget og hvilke teknologier vi har benyttet
Lurer du på hva slags maskinlæringsalgoritme som blir benyttet, eller hvordan vi kommuniserer med roboten, eller kanskje hvordan du selv kan lage deg en kafferobot - da er dette artikkelen for deg.
Kafferoboten er en intelligent robot som basert på deg og ditt ansiktsuttrykk kommer med forslag til hvilken drikk du har mest behov for. Om roboten synes du ser litt trøtt ut, foreslår den kanskje en espresso. Virker blodsukkeret ditt å være lavt får du kanskje tilbud om en kakao. Deretter lager roboten drikken du velger og serverer den til deg via en avansert robotarm.
Ideen kom ironisk nok til live under en prat rundt kaffemaskina. Flere av oss hadde lyst å lære mer om IoT, og når robot-ideen kom opp spant vi raskt videre på den. Vi så en masse muligheter til å bruke roboten som et prosjekt til å vise fram hva Bouvet kan tilby industrikunder. Og timingen var perfekt, i og med at vi skulle flytte kontor til Herøya våren 2021. Vi planla derfor lansering av kafferoboten som en markering av at vi flyttet inn.
Du kan nå prøve den samme applikasjonen som kjører på Herøya fra din maskin.
Klikk deg inn på https://www.kafferobot.no/app/ og sjekk hva kafferoboten foreslår for deg.
Ved å bruke kafferoboten som utgangspunkt kan vi fortelle gode historier rundt mange “buzzwords” og på en morsom måte vise frem hva vi leverer og brenner for.
Vi kan fortelle om IoT og peke på sensorene, vi kan snakke om Big Data eller digital tvilling og samtidig vise det i praksis på en så enkel måte at alle kan forstå det. Maskinlæring og AI ufarliggjøres ved å forklare hvordan kaffevalget blir gjort.
Samtidig ser vi at den også kan brukes i internopplæring. Det har vært, og er fortsatt, masse morsomme oppgaver for de som er med. Fokuset har vært på at man bidrar der man har lyst. Så langt har vi kun brukt ressurser som har vært uten oppdrag.
Roboten tar et bilde av deg og analyserer en rekke parametere som blant annet din alder, kjønn, hårvekst og humør. Systemet tar valg basert på en modell vi har trent opp, og foreslår en drikk til deg.
Dersom du er uenig med kafferoboten kan du korrigere foreslått drikk. Deretter henter roboten en kopp, plasserer den i kaffemaskina, trykker på valgt drikk, venter, og til slutt plasserer den koppen foran brukeren.
Det meste av software kjører i skya. Selve applikasjonen som brukeren benytter, er en nettleserapplikasjon skrevet i React. Applikasjonen er designet for å vise video i fullskjerm fra kamera på robotarmen.
Vi benytter en ML-modell fra Mediapipe (https://github.com/google/mediapipe) for å detektere posisjon til hendene dine.
Når vi ser at du holder en hånd innenfor et gitt område, kan vi trigge en aksjon. All prosessering av video foregår i nettleseren.
React-applikasjonen tar så et bilde av brukeren som sendes til en tjeneste (Azure Cognitive Services) som kan detektere ulike egenskaper ved et ansikt. De estimerte egenskapene ved ansiktet (alder, kjønn, hårfarge, humør, sminke, smil, etc) sendes inn til en ML-modell basert på et beslutningstre.
PS! Bildet blir slettet umiddelbart lokalt, og Microsofts databehandleravtale sikrer at bildet heller ikke blir lagret i skyen.
Et beslutningstre er et modelleringsverktøy brukt i prediktiv analyse forå dele opp og sortere informasjon som finnes i større datamengder.
I prediktiv analyse og maskinlæring er det ofte bedre med fler og mer. Vi har derfor benyttet maskinlæringsalgoritmen Random Forest som består av flere beslutningstrær som sammen stemmer på riktig resultat.
Denne ML-modellen er skrevet i Python, og installert som et API i egen docker-kontainer i Azure.
Webapplikasjon får foreslått kaffe fra api’et, og viser det til brukeren. Brukeren kan så endre valget dersom hen ikke er fornøyd med hva Random Forrest algoritmen foreslo. Modellen oppdaterer seg selv regelmessig, og vil dermed få kafferoboten til å bli smartere og smartere jo mer den blir brukt.
Når brukeren ber om å få servert kaffe forsøker applikasjonen å sende en kommando (POST til localhost:5001) til robot-kontrolleren, som kjører på den samme PC'en som nettleseren. Dersom denne kommandoen ikke kommer fram antar applikasjonen at det ikke finnes noen robot, og viser isteden en film av roboten som serverer kaffe.
Prøv roboten selv her https://www.kafferobot.no/app/
Når "velg-drikk" kommandoen fra webapplikasjonen (1=Kaffe, 2=Kakao, osv) når fram til robot-kontrolleren, starter den å sende instruksjoner videre til KUKA-kontrolleren.
Kommunikasjon med roboten går via en OPC UA protokoll som er vanlig i industrien. Disse instruksjonene (1=GetCup,2=PlaceCup, 3=SelectCoffee, osv) vil igjen trigge programmerte bevegelser i roboten.
Robotbevegelsene er programmert ved hjelp av en håndkontroll, se video under:
På roboten er det montert en griper som kan åpnes og lukkes via Digital IO. Dette programmeres i KRL (KUKA Robot Language).
På tuppen av griperen er det laget en tilpasning som tar tak i koppene. Den er laget slik at den holder akkurat hardt nok til å ikke få med seg flere kopper, men samtidig kunne ta koppen ut fra holderen. Det skulle en del justering til før vi traff rett punkt på koppen.
Ytterst på tuppen av griperen er det montert en liten gummi-peker. Den benyttes til å trykke på kaffemaskinens skjerm.
Dette er en kraftig industrirobot som kan potensielt gjøre mye skade, og en sikkerhetssone er derfor sikret med en Lidar. Det er en 3D skanner som sender ut mange lyspulser, og bruker disse til å danne seg en bilde av omgivelsene. Dersom noe kommer innenfor de lyserøde områdene går roboten ned til 10% hastighet, kommer noe innenfor det røde området stopper roboten helt.
Vi har også laget en AR (Augmented Reality) versjon av kafferoboten for Hololens. I den kan man se en virtuell versjon av en kaffevelger som man kan "snurre" på til man får ønsket kaffe. Applikasjonen legger valgt drikk på en kø i Azure. Deretter vil en enkel service plukker opp kommandoen og sende den videre til robotkontrolleren på samme måte som nettleseren.
Alle data fra kafferoboten lagres i en dataplattform. Data flyttes fra kafferobotens lager i Azure (blob store og sql database) til en datasjø. Flytting gjøres ved hjelp av Azure Data Factory.
Dataplattformer inneholder gjerne mye informasjon fra mange systemer. Det gir oss mulighet til å grave etter verdifull innsikt. I vårt tilfelle kunne man kanskje funnet sammenheng mellom lav utetemperatur og mange kakaovalg. Det er laget et par Power BI rapporter som henter data direkte fra dataplattformen.
Flest kaffe blir servert mandag morgen kl 9. Den typiske bruker er mann som ikke smiler, han har ikke briller og er 23 år.
Utvikling av roboten har gått gjennom flere iterasjoner. Hardware ble også kjørt i flere iterasjoner, den første versjonen ble snekret sammen på en kveld for å få et inntrykk av hvordan det hele ville oppleves.
Under er iterasjoner av selve konseptskissa:
Når vi fikk roboten i hus lagde vi neste versjon siden roboten er stor og tung, og krevde et litt mer robust feste. Denne versjonen ble også brukt for å finne ut hvordan den endelige standen skulle se ut.
Se timelapse fra bygging under:
Vi har også kjørt et studentprosjekt i samarbeid med Universitetet i Sørøst-Norge, https://www.usn.no/ hvor vi studenter har laget en AI-modell som kan finne nivået av kaffebønner i en beholder.
Om du leste avsnittet om hvordan den virker, la du kanskje merke til at den gjorde en POST til https://localhost:5001/type?1 . Åpne developer-tools og se selv.
Dersom du lager noe, f.eks en node app, som svarer på en GET på den porten, vil du være i stand til å motta kommandoer fra webapplikasjonen. Derfra burde ikke veien være altfor lang til å koble på en liten robot, f.eks en LEGO mindstorm eller tilsvarende som setter i gang din egen kaffemaskin!
Fortell oss gjerne hvordan det går!
Kafferoboten er et innovasjonsprosjekt som ble iverksatt i Grenland. Etterhvert vært blitt mange bidragsytere fra hele Bouvet. Vi har fått kollegaer fra Oslo, Stavanger, Vestfold og Agder med på laget.
Vi arrangerte blant annet en intern Hackaton i Bouvet hvor vi opprettet en del oppgaver som vi håpet å få løst. Parallelt kjørte vi et direktesendt opptak fra kontoret her i Grenland, hvor vi snekret en prototype av robotarmen.
Takk til alle rause samarbeidspartnere!
Vi har lånt en skikkelig industrirobot fra KUKA Norge, https://www.kuka.com/ De har også stilt med tekniker som har bistått i oppsett og konfigurering av robot
Sick Sverige, https://www.sick.com/ har lånt oss, og bistått med oppsett av lidaren Microscan3 og integrasjon med roboten
Schunk https://schunk.com/ har levert griper
Cody https://cody.no/ har tilpasset griperen slik at den klarer å trekke ut pappkoppene
Kaffemann, https://kaffemann.no/ har lånt oss den tøffeste kaffemaskina de har
Herøya industripark, https://www.heroya-industripark.no/ har latt oss plassere roboten midt i kantina