Vår nye robot predikerer og serverer deg kaffe

Kafferoboten er proppfull av artig teknologi. Her forklarer vi hvordan den ble bygget og hvilke teknologier vi har benyttet

Lars Erik Finholt

23. april 2021

Skjermbilde 2021-04-27 kl. 10.27.17

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.

 

server (1).gif
Roboten serverer deg akkurat den kaffen du vil ha. 

 

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. 

 

Sjekk hva kafferoboten foreslår for deg

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.

 

Kafferoboten skjermbilde fra applikasjon
Bruker tester applikasjonen til kafferoboten fra sin Mac. Det kan du også gjøre! 

 

“Buzzwords” i praksis 

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. 

 

 

Slik fungerer roboten

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. 

Kjøres i skyen

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.

peker.png
Hendene gjenkjennes og brukes til å kontrollere frontend

 

Predektiv analyse gjør roboten smartere over tid 

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. 

tre.jpg
Forenklet versjon av et beslutningstreet

 

Programmering av roboten

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:

 

 

Programmering av robotarmen og griperen 

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.

 

 

En kraftig industrirobot trenger god sikkerhet

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. 

 

lidar.png
Skjermbilde fra konfigurering av lidarens soner, til høyre sees den gule lidaren foran roboten

 

Kan styres med HoloLens 

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.

Bilde av AR briller
AR - sett utenfra til venstre, og gjennom Hololens til høyre

 

En stor datasjø gir innsikt

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. 

Funn fra datasjøen

Flest kaffe blir servert mandag morgen kl 9. Den typiske bruker er mann som ikke smiler, han har ikke briller og er 23 år.

datafactory.png
Datafactory benyttes for å flytte data over til en dataplattform

 

bi2.png

 

Iterativ Hardware

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: 

tegning.png
Konseptet tar form
planke-robot.png
Prototype 1 av robot. Snekret sammen med 2"x 4" og skrudd fast på et bord

 

Oppsettet på Herøya 

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:

Robot montert
Endelig versjon utstilt i kantina på Herøya industripark

 

Studenter ved USN lagde AI-modell

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.
 

Lag din egen robot! 

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!

Innovasjonsprosjekt på tvers av labbene i Bouvet 

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! 

sponsors.png