Viser innlegg med etiketten Robotene i bruk. Vis alle innlegg
Viser innlegg med etiketten Robotene i bruk. Vis alle innlegg

Simulerte samtaler med roboter

Guiden introduserer Paivi Laaksos arbeider på HVL-Kronstad.  
Under nettverkskonferansen på Notodden la Jon Hoem (denne posten er hentet fra Jons blogg) frem Robotassistert kunstguide.

Innlegget diskuterte roboter som guider i forhold til kunst og knytter dette opp til bruk av programmerbare roboter i skolen. Mer spesifikt: en søken etter å finne tangeringspunkter mellom tema som er aktuelle for kunst og håndverk og roboter som kan programmeres på ulike måter.

Talegrensesnitt – forstått som løsninger som gir oss mulighet til å styre ulike artefakter med stemmen – omgir oss i stadig økende grad. Med stadig synkende priser og størrelse når det gjelder hardware og forbedringer av TTS (Tale Til Skrift) vil stadig flere objekter rundt oss komme til å reagere på tale. For eksempel kan en lett se for seg at drillen som kan styres med talekommandoer vil kunne bli rimeligere å produsere sammenlignet med den som krever en rekke brytere. Det betyr selvsagt ikke at alle maskiner vil bli stemmestyrte, men denne typen teknologi vil omgi oss på stadig flere områder, ikke minst knyttet til fjernstyring.

Overgangen til talegrensesnitt har nok i første omgang større implikasjoner for språkfagene enn for Kunst og håndverk, men det er ingen grunn til at ikke alle fag vil måtte forholde seg til dette. Ikke minst fordi det vil føre med seg nye koblinger mellom det auditive og det taktile, et området som i dag er en blind flekk innen faget. Noen vil kanskje mene at dette er noe som fullt og helt håndteres av faget musikk – jeg er ikke blant dem.

Dette er i korte trekk noe av bakgrunnen for at jeg ønsker at koding av og for lyd også skal få en plass innen Kunst og håndverk. Så spørs det om eksemplet mitt er det beste: Tanker er at elever skal kunne arbeide med formidling av kunst, der de selv må finne ut hva som skal formidles og hvilke alternativer som til enhver tid skal tilbys brukerne. Kodingen av Aisoy-robotene kan gjøres svært enkelt, slik som vist i skjermdumpet til høyre, eller en kan lage mer kompleks kode der en programmerer inn mer tilfeldige valg, valg som er knyttet til betingelser (f eks input fra sensorer, f eks kamera som leser QR-koder, eller sensoren for NFC-tagger) og selvsagt ulike former for brukerinteraksjon. Prototypen jeg viste på Notodden er basert på et enkelt dialogtre der hver talte sekvens avsluttes med at brukeren velger mellom to veier videre. Dette er en løsning som minner litt om den som er benyttet i noen andre eksempler: der roboten stiller spørsmål og der den stiller spørsmål på bakgrunn av lister.

Gjennom prosjektet Robotassistert undervisning, ved HVL, ønsker vi å fortsette med å eksperimentere med ulike løsninger. Dette skjer både i form av utviklingsprosjekter ved HVL, men ikke minst håper vi at studenter tar med seg robotene og gjør forsøk i praksis. Fordi robotene er relativt rimelige (prisen er sammenlignbar med et nettbrett), noe som gjør at en kan tillate elever å eksperimentere med dem. Sammenligningen med Pepper (28 kilo til drøye 20 tusen euro + moms) er kanskje ikke helt rettferdig, men poenget er at elever kan gjøre like mye med de rimelige robotene som den dyre. Og tilgjengeligheten i skolen er selvfølgelig en helt annen.

Det er potensielle forbindelser i mange retninger her. Aisoy-robotene gir mulighet til å jobbe i grenselandet mellom det skriftlige og det muntlige, gjennom å kode for tale. De har imidlertid begrensede muligheter når det gjelder å koble til ulike former for periferiutstyr. Her må en imidlertid tenke at det ikke behøver å være slik at alle elever koder for samme plattform: noen kan kode for Lego Mindstorms, andre kan jobbe med roboter som de fra Aisoy, men atter andre kan kode for f eks Micro:bits.

Hvorfor bruke roboter for å lære koding i skolen

Illustrasjon fra foredrag om Robotassistert undervisning.
Vi lever i en verden der stadig flere prosesser digitaliseres, helt eller delvis. Svært mye av det som omgir oss i hverdagen måles og styres av digitale programmer. Selv om de fleste av oss ikke skal bli programmerere er programmering dermed noe som angår oss alle. Gjennom dagligliv og utdanning skal barn og unge lære å forstå dette samfunnet for dermed å bli bedre i stand til å påvirke det i positiv retning.

Ulike former for programmering / koding er lett tilgjengelig via skjermmediene. Det er imidlertid noe annet å styre fysiske ting, i stedet for virtuelle objekter som bare visualiseres via skjermen til en datamaskin. En robot er en del av den fysiske virkeligheten som omgir oss og det blir dermed ekstra spennende å kunne kontrollere den.

Et virtuelt miljø, slik vi f eks kan skape et spillbrett i et dataspill, er svært kontrollerbart. Det finnes ingen objekter eller hendelser i miljøet som ikke er definert gjennom programmet som styrer spillet. Med roboter er det annerledes, siden disse agerer i virkelige, fysiske omgivelser. Hvordan disse omgivelsene registreres gjennom sensorer og kan manipuleres gjennom robotens bevegelser. Aisoy-robotene er ikke laget for å forflytte fysiske objekter eller kjøre en programmert rute, men disse robotene kan til gjengjeld interagere gjennom bevegelse, uttrykk og ikke minst gjennom tale.

Danske folkeskoler har allerede investeret millioner i små robotter, som etter sigende kan lære elevene matematik og engelsk. Slik fungerer det imidlertid ikke, ifølge danske forskere. Det viser seg imidlertid at robotene er svært godt egnet til er å lære elever å kode.

En fysiske verden er ikke ideell, slik som en simulert spillverden, noe som krever en annen tankegang og oppmerksomhet knyttet til hvordan vi tenker omkring problemløsing. F eks er det støy, utfordringer med å få robotens kamera til å observere ulike objekter, vibrasjoner, etc. Løsningene blir dermed sjelden perfekte, det er alltid rom for forbedring og eventuell videreutvikling. Det gjør koding med roboter til et svært godt supplement til skrembasert koding, både for elever som har vanskelig for å konsentrere seg ved ren skjerminteraksjon, men også for elever som trenger utfordringer de kan strekke seg etter.

Roboters faktiske tilstedeværelse gjør at vi kan lage fysiske tillegg til den. Det kan være egne 3D-printede deler, klær, tillegg til robotens omgivelser etc. På den måten kan elevenes ideer omsettes i konkrete sammenhenger, som appellerer på helt andre måter enn hva en kan gjøre kun på skjerm.

Programmerbare roboter bygger bro mellom to skapende univers: det som kan skapes på skjerm og det som vi kan skape med fysiske materialer. En robot står så å si med en fot i hver av disse leirene. Den nye generasjonen Aisoy-roboter får innebygget NFC-leser, noe som åpner for nye bruksmåter, nettopp i møter mellom koding go fysiske omgivelser,

Å arbeide med roboter er en skapende prosess og handler om mye mer enn bare å kode. Koding kan dessuten gjøres på ulike måter som skalerer godt. Blokkeditoren ScratchX gir enkel tilgang til koding, men kan samtidig brukes til avanserte prosjekter.
Programmering er en kreativ måte å jobbe på. Du begynner med det som på mange måter er analogt til et blankt ark, som så kan fylles med kode. Koding er en form for logisk språkliggjøring av det som skal skje, og kan sammenlignes med å skrive innenfor noen gitte regler. På samme måte som noen former for dikt har en bestemt struktur, har koding en syntaks og innebygget logikk som elevene må forholde seg til. Ikke minst når denne kodelogikken blandes med robotens evne til tale blir den språklige sammenhengen tydelig og spennende å jobbe med.

Mye kan oppnås med rimelig teknologi. Aisoy-robotene plasserer seg prismessig (5-6.000 kroner) litt over Lego Mindstorms. Aisoy-robotene kan imidlertid programmeres til å snakke, og har på denne måten egenskaper som langt dyrere alternativer (f eks NAO fra knapt 100.000,– og oppover). Aisoy og Lego kan til sammen fylle alle de egenskapene som det er naturlig å se for seg at en kan jobbe med i grunnskolen.
Koding behøver ikke ende opp med noe spesielt, eller noe som oppfattes som direkte nyttig. Det kan være moro bare å få roboten til å sette sammen og lese egne dikt, jobbe med ulike faktaopplysninger eller fortelle vitser for den saks skyld. Uansett hva en koder er det tilfredsstillende å oppleve sammenhengen mellom koden på skjermen og det roboten foretar seg. 

Koding og programmering minner svært mye om håndverk. Det handler om måter å skape digitale produkter på og er slik sett ikke så forskjellig fra hvordan andre behersker ulike verktøy og maskiner for å forme fysiske materialer. Mange tar etter hvert til orde for de vi kan kalle kodesløyd i skolen, en virksomhet passer svært godt inn sammen med mye av det elevene allerede gjør i kunst og håndverk. Roboter og 3D-printere (som jo også er roboter) er en svært god måte å la det analoge og det digitale møtes.

Mitch Resnick, en av de som står bak programmeringsspråket Scratch, forklarer i et intervju i Edutopia hvorfor han mener at koding bør undervises i alle skoler. Han peker på noen svært vesentlige forhold knyttet til at koding handler om langt mer enn det realfaglige. Koding er først og fremst er en måte å formidle på og elever bør lære koding med hovedfokus på kommunikasjon og formidling:

The first question I would ask is: “Why should we learn coding at all?” Many people embrace coding in schools as a pathway to jobs as computer programmers and computer scientists, and of course they’re right that those opportunities are expanding rapidly. But that’s not a great reason for everyone to learn how to code.

Very few people grow up to be professional writers, but we teach everyone to write because it’s a way of communicating with others—of organizing your thoughts and expressing your ideas. I think the reasons for learning to code are the same as the reasons for learning to write. When we learn to write, we are learning how to organize, express, and share ideas. And when we learn to code, we are learning how to organize, express, and share ideas in new ways, in a new medium.

Resnicks syn på koding i skolen passer godt i den sammenhengen vi har beskrevet: en tilnærming til koding ved hjelp av fysiske roboter med andre egenskaper enn det meste annet som per i dag er tilgjengelig på markedet. Aisoy-robotene kan programmeres til å endre uttrykk og snakke og forstå tale:



Bildet ovenfor er kanskje det ideelle møtet mellom barn og programmerbar teknologi: roboten som både fungerer som en assistent og "lesevenn", men som også kan programmeres ved hjelp av nevnte Scratch.

Det er ikke noe i veien med å programmere spill på skjerm, få en liten elektrisk bil til å bevege seg som en robotstøvsuger, automatisere en enkel mekanisk prosess eller lignende. Det kan være både givende, nyttig og lærerikt. Mitt poeng er imidlertid at denne inngangen til programmering ikke har like stor appell til alle, samt at nettopp talegrensesnitt er noe som er i ferd med å få stor betydning i vår samtid.

I skolen fokuseres det ofte på analyser av eksisterende artefakter, systemer og hendelser. Eksempler kan være slik man i fysikken studerer systemer og setter opp formler for hvordan disse systemene fungerer. Eller dersom man i matematikken løses ferdig definerte oppgaver. Eller for den saks skyld hvordan vi leser og tolker kjente litterære tekster. Slike tilnærminger har absolutt verdi, og kan helt klart kan lede til forståelse, forutsatt at disse aktivitetene settes inn i en sammenheng i dialog med en kompetent lærer. Samtidig kan en med fordel se mer til hvordan artefakter, systemer og hendelser faktisk designes.

Hvem er det som skaper systemene? Hvorfor er systemer designet for å ha noen bestemte funksjoner? Hvem og hva bestemmer forutsetningene for de oppgavene som skal løses? Hvordan formulerers en oppgave for at den skal bli entydig og forståelig?

Koding av roboter i skapende sammenhenger gir anledning til å formulere og løse en lang rekke slike spørsmål av varierende kompleksitet.

Koble Aisoy-roboten til ScratchX

Aisoy-robotene kan brukes til mye forskjellig, men vi er mest interessert i hvordan de kan programmers i ScratchX, av elever og lærere.

For å kunne programmere roboten må vi koble sammen en datamaskin og roboten. Roboten setter opp sitt eget, trådløst nettverk, slik at vi kan koble oss til den direkte, uten at roboten behøver å sende informasjon ut på Internett. Vi jobber med andre ord lokalt slik at vi kan vøære helt sikre på at roboten ikke sender noe informasjon (lyd, bilde mm) ut av klasserommet.

Selve tilkoblingsprosesesn har noen steg som vi må gjennom. Her tar vi alle detaljene. Selv om dette er flere steg tar det ikke lang tid:
  1. Slå på roboten
  2. Knytte datamaskinen til robotens nettverk
  3. Sette opp en forbindelse til robotens IP-adresse
  4. Åpne ScratchX
  5. Knytte datamaskinen til robotens nettverk igjen
  6. Lage, laste inn og endre programmer i Scratch X
  7. Koble ScratchX til roboten
2. Knytte datamaskinen til robotens nettverk
Aller først må vi knytte datamaskinen til robotens trådløse nettverk. Dette dukker opp som "Aisoy1-xxxx" i datamaskines nettverksinnstillinger.

3. Sette opp en forbindelse til robotens IP-adresse
Når datamaskinen er koblet til robotens nettverk åpner du nettleseren (eventuelt en ny fane) og skriver inn https://<robotens IP-nummer>:9090

Roboten viser IP-nummeret om du holder en flat hånd øverst på robotens bakside i noen sekunder. Holder du opp mot 10 sekunder skrur du også av robotens autonomi – det kan være en fordel, for ellers prater den i vei, litt på egenhånd, noe som kan forstyrre de programmene vi selv legger inn.

I mitt tilfelle viser roboten IP-nummeret 192.168.33.1. Jeg skriver dermed https://192.168.33.1:9090 i nettleseren. I Chrome får jeg en beskjed om at forbindelsen ikke er sikker. Det er ikke no problem i dette tilfellet, siden vi jo kun kobler oss til roboten. Trykk "Vis detaljer" og fortsett:


Du får da denne meldingen:


Dette betyr at vi nå kan koble oss til ScratchX

4. Åpne ScratchX
Om datamskinen din er koblet til et nettverk via en kabel (i tillegg til trådløst) kan du trolig gå videre med en gang. 

I mange tilfeller har datamaskinen kun trådløs nettverkstilkobling. Da må vi for denne operasjonen endre hvilket nettverk vi er tilkoblet – dvs vi kobler fra robotens nettverk og kobler til det nettverket vi vanligvis bruker for å komme på Internett.
Om du vil laste ned noen av eksempelfilene (.sbx-filer)må du gjøre dette mens du er tilkoblet internett. Eksempelfilene finner du under kodeeksempler.
Når du er koblet til Internett skriver (kopierer) du inn http://scratchx.org/?url=http://aisoy.github.io/ScratchX/aisoy_scratch.js#scratch i den samme fanen som du var i i punkt 3.

Du får da opp denne meldingen – trykk deg videre:


Du kommer nå til et tom ScratchX-grensesnitt der de robotspesifikke blokkene er synlig. Dette grensesnittet fungerer på samme måte som vanlig Scratch.

5. Knytte datamaskinen til robotens nettverk igjen
Om datamaskinen din kun har trådløs kobling til nettverk må vi tilbake under nettverksinnstillinger og igjen bytte ttil robotens trådløse nettverk.

Dette betyr at vi nå kjører ScratchX i datamaskinens minne, uten å være koblet til Internett. Lukker du den fanen du hoibber i vil dette medføre at ScrachX må lastes inn på nytt.


6. Lage, laste inn og endre programmer i Scratch X
Her kan du laste opp en av eksempelfilene, eller du kan begynne å sette sammen din egen kode:


For å kunne kjøre programmer via roboten må vi bruke kodeblokken som forbinder ScratchX med roboten. Skriv inn robotens IP (i mitt tilfelle 192.168.33.1) klikk på blokken og dialogboksen nedenfor kommer opp. ScratchX kommuniserer nå med roboten



Lese QR-koder

QR-koder er noe dere kan lage selv og Aisoy-roboten leser disse og kan dermed komme med en respons. Det er en fordel å holde selve koden så kort som mulig, f eks ett ord eller et tall. Til høyre ser du QR-koden for navnet "Anne".

Det kan være litt vanskelig å skanne kodene siden vi jo ikke ser det roboten ser. Løsningen er å gi en visuell tilbakemelding fra roboten til brukeren straks koden er registrert, f eks i form av en kort tekst i robotens munn, deretter en videre respons.

ScratchX-koden nedenfor leter etter en QR-kode med verdien "1" og skriver deretter "Number 1" i robotens munn. Her er Scratch-funksjonen "Join" benyttet, men vi kunne skrevet inn teksten direkte. "Join" gir imidlertid en fleksibilitet som vi senere kan utnytte i kombinasjon med variabler:


Vi kan også gi en auditiv respons  (via robotens talesyntese) dersom det ikke er den riktige QR-koden som vises foran roboten:


Laget kjapt en liten snutt (se nedenfor). QR-koden som er brukt i videoen er skrevet ut i ca 8X 8 cm og jeg holder den 10-15 cm fra roboten. Kameraet sitter i robotens venstre øye.

Dette kan brukes for å la roboten stille spørsmål og elevene svarer ved å holde opp gjenstander med QR-koder, eller kodene kan være plassert ved gjenstander som roboten forteller noe om, eller det kan brukes for å identifisere sider i en bok der roboten så leser tekst eller kommer med annen informasjon.



Lag en terning med QR-koder, 1-6: