Power Chess Final Delivery

Interessen rundt sjakk har eksplodert det siste året, blant annet The New York Times melder om rekordsalg og en økning på over 1000% på salg av fysiske sjakkbrett. Økningen i salget er hovedsakelig påvirket av den populære serien the Queen’s Gambit, og streaming programmet PogChamp. Men det er et problem, vi er midt i en pandemi og ingen kan spille fysisk sjakk mot hverandre.

Heldigvis sitter vi på løsningen: Power Chess!
Ved å bruke Power Chess kan du spille et fysisk sjakkparti mot hvem du vil uansett hvor i verden motstanderen befinner seg.

Slik fungerer det:

Hver spiller har hvert sitt sjakkbrett som er koblet på internett og bruker AI som identifiserer hvilke trekk som er utført. Når et sjakktrekk er identifisert vil sjakkbrettet til motstanderen utføre det samme sjakktrekket.

Under ser dere den automatiske lego-armen i Action. Filmen viser først et sjakktrekk på sjakkbrett 1, deretter ser vi lego-armen på sjakkbrett 2 på motstanderen sitt sjakkbrett.

Teknologien bak Power Chess

API og Azure Cognitive Services

Gjennom å integrere oss mot SharePoint, function app og ACS (Azure Cognitive Services)

I den tekniske løsningen vår benytter vi en integrasjon mot SharePoint, for å detektere at en ny fil har blitt lagt til, samt uthenting av denne filens innhold.

Videre har vi en integrasjon mot Function App som vi kjører et POST-kall mot tjenesten som gir oss 64 objekter tilbake.

Disse 64 objektene sendes til Azure Cognitive Services for analysering av innholdet.

Deretter blir dataen(Sjakkbrettet) prosessert og sendt til DataVerse ved en create.

Flow:

Ved å bruke Power Automate sin Cloud Flow har vi opprettet en Flow som trigges ved opprettelse av en ny fil i SharePoint i en mappe vi har kalt “Moves”. Ved å bruke en standard funksjon i Flow som henter innholdet i filen, får vi en string som vi kan sende til function app.

Function-app

Function appen mottar en string gjennom HTTP protokollen og deretter kutter opp bildet/Sjakkbrettet i 64 objekter, samt legger metadata på hver enkelt objekt for å identifisere hvor plasseringen er. Deretter blir disse sendt tilbake til flowen gjennom HTTP.

CRM / Dataverse

All dataen vi prosesserer illustrerer vi i en Model Driven app. Her kan vi se oversikt over alle rundene i enhvert spill, og posisjonene på alle brikkene. Ved hjelp av plattformen, og litt fancy HTML-kode, har vi fått denne skalerbar i forhold til enheter og skjermstørrelser.
Er man «on-the-run», kan man enkelt åpne applikasjonen via telefonen, og få en tilsvarende opplevelse.

HTML/CSS og Javascript kan være et kraftig verktøy. Om man trives i «den ville vesten», får man virkelig testet seg. Det har vært en god utfordring for oss CRM-konsulenter, men er fornøyd med resultatet.

Rasberry PI + Lego Boost

For å kontrollere Boost motoren til Lego har vi benyttet en Raspberry PI med Python script som kan sende signaler til boost motoren via BLE (Bluetooth Low Energy).

Badger vi clamer med denne posten:

#Glossy Pixels
#High 5
#Go With the Flow
#Chameleon
#Plug N’ Play
#Power User Love

Collaborate and Share Knowledge!

Point Taken og AITC deler kunnskap og erfaringer.

Både Point Taken og AITC benytter IoT enheter som Raspberry PI og knytter disse mot Lego sine motorer som primært går på Bluetooth. Sammen har vi diskutert og delt erfaring knyttet til å det koble seg til disse motorene fra Lego. Vi har også vært dypt i praten om hvordan vi skal unngå at disse Bluetooth Low Energy (BLE) ikke skal skru seg av mellom omgangene vi kjører scriptene våre.

Vi diskuterte også hvilke teknologier de har benyttet i forkant av dette, hvorfor de brukte Python fremfor Node.js. Her har begge partene hadde en “lang” vei i forkant, og det å dele disse erfaringene har vært svært kunnskapsrikt.

Med dette claimer vi følgende badge:

Power Chess one step further

API og Azure Cognitive Services

Gjennom å integrere oss mot SharePoint, function app og ACS (Azure Cognitive Services)

I den tekniske løsningen vår benytter vi en integrasjon mot SharePoint, for å detektere at en ny fil har blitt lagt til, samt uthenting av denne filens innhold.

Videre har vi en integrasjon mot Function App som vi kjører et POST-kall mot tjenesten som gir oss 64 objekter tilbake.

Disse 64 objektene sendes til Azure Cognitive Services for analysering av innholdet.

Deretter blir dataen(Sjakkbrettet) prosessert og sendt til DataVerse ved en create.

Flow:

Ved å bruke Power Automate sin Cloud Flow har vi opprettet en Flow som trigges ved opprettelse av en ny fil i SharePoint i en mappe vi har kalt “Moves”. Ved å bruke en standard funksjon i Flow som henter innholdet i filen, får vi en string som vi kan sende til function app.

CRM / Dataverse

CRM gir oss en visuell fremstilling av sjakktrekkene og gir oss et digitalt sjakkbrett for å verifisere at AI har plukket opp riktig sjakktrekk.

Visuell fremstilling av sjakktrekkene
Digital fremstilling av sjakkbrettet som vil vise siste gjennomført sjakktrekk

Function-app

Function appen mottar en string gjennom HTTP protokollen og deretter kutter opp bildet i 64 objekter, samt legger metadata på hver enkelt objekt for å identifisere hvor plasseringen er. Deretter blir disse sendt tilbake til flowen gjennom HTTP.

Power BI

Vi har påbegynt Power BI rapporten som henter ut data fra hvert sjakkparti. Fra rapporten under ser dere hvem som spiller mot hverandre, vinnersjanse, sjakktrekk og lokasjonen til Fredrik og Mathias.

Rapporten er under utvikling

Lego-armen

Vi har begynt å bygge armen som skal flytte legobrikkene / Sjakkbrikkene. Armen er enda ikke komplett som dere ser, men vi har fått armen til å bevege seg.

Badges vi claimer:

Shark tank – Power Chess idea ♟️

Interessen rundt sjakk har eksplodert det siste året, blant annet The New York Times melder om rekordsalg og en økning på over 1000% på salg av fysiske sjakkbrett. Økningen i salget er hovedsakelig påvirket av den populære serien the Queen’s Gambit, og streaming programmet PogChamp. Men det er et problem, vi er midt i en pandemi og ingen kan spille fysisk sjakk mot hverandre.

Heldigvis sitter vi på løsningen: Power Chess!
Ved å bruke Power Chess kan du spille et fysisk sjakkparti mot hvem du vil uansett hvor i verden motstanderen befinner seg.

Slik fungerer det:

Hver spiller har hvert sitt sjakkbrett som er koblet på internett og bruker AI som identifiserer hvilke trekk som er utført. Når et sjakktrekk er identifisert vil sjakkbrettet til motstanderen utføre det samme sjakktrekket.

Teknologien som vi bruker for å gjenskape en fysisk handling kan bli gjenbrukt til andre business caser.

Teknologien som vi bruker for gjenkjenne en fysisk handling ved hjelp av AI, for så å digitalisere den for analyse og berikelse, kan også gjenbrukes til helt andre forretningscaser, som for eksempel. å lære roboter å utføre komplekse handlinger.

Til denne posten claimer vi:

Power thru Microsoft technology

IOT, Azure, DevOps, Power

Ved å lage et objekt av hver rute på sjakkbrettet, også sende disse til ACS (Azure Cognitive Services)
så kan vi gjenkjenne om ruten har et objekt i seg. Dette bruker vi videre til å lagre data i DataVerse. Her er et eksempel på ACS sin gjenkjenning av en rute med brikke på.

Når trekket er utført bruker vi en Raspberry PI som er knyttet til webkamera over brettet
Denne sender http request som trigger flowen, hvor innholdet er en base64 string.
Denne sender vi til function app, som kutter opp dette bildet til 64 objekter og legger metadata
basert på posisjon.
Deretter sender flowen dette videre til ACS, for bildegjenkjenning og for å hente ytteligere metadata.
Så videre til Dataverse for lagring og visualisering av trekkene som er blitt gjort. Raspberry pien vil kjøre et program som gjør at vi kan kontrollere lego boost motoren
siden raspberryen er tilknyttet via bluetooth. Deretter kan vi gjennom dette programmet nå disse funksjonenen gjennom HTTP requests.

I neste steg bruker vi Model-driven til å illustrere dataen som kommer fra trekkene som har blitt gjennomført.

Tabellvisningen av et gjennomført sjakkspill. Her ser vi lokasjonen til brikkene og hvilken brikke som har blitt flyttet.

CI/CD – Pipeline

Vi har startet med en bygg og release pipeline.

Power Chess (Remote physical chess)

Beskrivelse av tech:

Azure Cognitive Service bruker vi for å kunne lese brettet, for å spore opp hvilke trekk som har blitt gjort.

Dataverse bruker vi for å lagre alle trekkene.

Microsoft Flow bruker vi for å integrere de ulike kompinoentene, rask og enkelt. #No code/ Low code.

Lego Boost vil være motoren for å flytte selve brikkene.

Lego bruker vi for å lage prototype av sjakkbrettene.

Flyt:

Business case:

Business caset er å kunne spille på et fysisk sjakkbrett med hvem du vil, uansett hvor i verden du er. Har du en bestefar uten teknisk kompetanse som du ikke kan besøke på grunn av restriksjoner kan du likevel få spilt et fysisk parti med sjakk.

Til denne posten claimer vi: Early delivery