Robotiekkua da ohjelmoindua 9-99 vuodehizile
Oza I. Sphero -robotan ohjuamine
Martti Penttonen
Karjalan Kielen Kodi
5.11.2017
1. Tämän kursan syväindös
Täl kursal tuttavummo tiedotehniekkah taulutiedokonehen (libo
Android-telefonan) da Sphero-robotan vuoh. Hedi allus näjemmö, kui
robottua voi käzin ohjata tiedokoneheči da lopukse rubiemmo jo sidä vähäzen
ohjelmoimah. Piätavoiteh ongi tuttavuo ohjelmoindah - kui suaha
tiedokoneh ruadamah oman mielen mugah.
Opastundas käytämmö nämii vehkehii da ohjelmii:
-
Sphero miäččyrobottu, tarkah sanojen Sphero 2.0
-
Android taulutiedokoneh libo telefon, Android 5.0 libo uvvembi
-
Spherol ajettavat ohjelmat. Täl kursal käytämmö Sphero Edu ohjelmua.
Ruavon lopendas Sphero Sleep ohjelmu voi olla hyövylline.

Kuva 1. Sphero -ohjelmien ikonazet Androidas.
2. Sphero robottu - mi se on?
Enne ku voimmo ruveta käyttämäh Sphero robottua, on hyvä vähäzen
tiediä sen ominažuksis.
2.1. Sphero robotan rakendeh
Sphero on miäčynmuodoine robottu, käitöi da jallatoi. Nimitys
"robottu" tulou ruadamistu merkiččijäs sanas. Kuibo voi ruadua käzittäh
da jalloittah? Sphero maltau liikkuo pyörimäl. Se voi vaihtua värii da
paista tiedokoneheh (anglien kielen aktsental). Sih niškoi Spheros on:
-
protsessoru, robotan "aivot", da vähäzen mustuo ohjelmien ajandah
-
kaksi motorua, niilöin vuo se voi liikkuo da kiändyö
-
giroskoppu, kudai avvuttau pidiä suundu
-
sensorat, kuduat tunnustetah vauhtin, ähkästyksen, pakundan i muudu
-
LED-väritulet
-
akkumul'atoras on virdua čuasun-kahten ruandah.
2.2a. Yhtevys Android tiedokonehen da Sphero robotan välil
Tiedokoneh da miäččy ollah yhtevyksis Bluetooth radivolinkin kauti.
-
Yhtevyönottoh niškoi miäččy pidäy ottua pezäspäi da se pidäy nostattua
koputtamal kaksi kerdua. Se rubieu ozuttamah led-tuliloil omua nimie.
Jogahizel miäčyl on oma nimi Sphero-XYZ, mis X, Y da Z ollah värilöi,
R=ruskei, G=vihandu, B=sinine, Y=keldaine, O=oranžu, W=valgei.
Kaikkiedah 6x6x6=216 nimie. Meil on miäčyt WRR
(valgei-ruskei-ruskei) da BYR (sinine-keldaine-ruskei).
-
Tiedokonehes pidäy laittua Bluetooth piäle. Se kyzyy, kunne otetah
yhtevys. Pidäy vallita miäčyn nimen mugah.
-
Tiedokonehes pidäy käynnistiä ohjelmu Sphero Edu. Kodvazen peräs se
ilmoittau, saigo se yhtevyön miäčynke - Sphero Connected.
-
Ohjelman lopendan jälgeh miäččy pidäy salvata. Ku ohjelmu da Bluetooth
oldaneh salvattu, miäčyn pidäs sammuo panemal se pezäh. Libo suorittamal
ohjelmu Sphero Sleep.
-
Ku kesken ruandan miäččy ruvennou blinkettämäh ruskiedu, akkumul'uator
on tyhjenemäs. Se pidäy panna pezäh lad'd'avumah. Nenga kolmes čuasus se
lad'd'avuu tävvekse. Lad'd'uandan aigah pezäs blinkettäy sinine tuli,
akkumul'uattoran tävvyttyy palau kiindei sinine tuli.
-
Ku Sphero ei muite ruvenne sammumah, opi nenga: Pane miäččy pezäh.
Pezän sinisty nybliä painajen nosta miäččy pezäs. Sen jälgeh pane järilleh
pezäh, toinah rubieu uinuomah.
Kuva 2. Sphero Edu ohjelman algutila. Internettu ei ole käytös.
2.2b. Yhtevys Sphero Mini robotanke
Sygyzyl 2017 Sphero sai pienembän vellen Sphero Minin. Se
on fiizillizesti vähäzen erilaine migu suurembi Sphero, a päivitetty
Sphero Edu ohjelmisto toimiu kudakui yhtenjyttyöh Minisgi.
Yhtelläh nämmä erot pidäy ottua huomavoh:
-
Minil ei ole lad'd'uandupeziä. Se lad'd'atah irrottamalla kuoret kui
jäičäs da čökkiämäl sydämeh telefonan lad'd'aimen mikro-USB čökin.
Tyhjy akkumul'uator lad'd'avuu čuasus. Tävvel lad'd'avuksel Mini
ruadau nenga čuasun.
-
Yhtevys telefonan/taulutiedokonehen da miäčyn välil toimiu
bluetoothači kui suurembas Spheros, a yhtevyön luajindu menöy
eri tabah. Sphero Edu (libo Sphero Mini) ohjelman avattuu miäččy
pidäy tuvva tiedokonehen viereh da vuottua ilmoitustu
yhtevykses. Ku yhtevys ei ruvenne rodivumah, voi avata Minin kuoret
da liittiä se lad'd'aimeh, se toinah avvuttau.
-
Minin voi sammuttua Shpero Mini ohjelman Advanced men'us löydyjäl
nybläl, a se ei ole vältämätöi. Ilmai sidä miäčyn tuli sammuu erähän
minuutan peräs da se menöy pienen kulutuksen tilah.
2.3. Miäčyn ominažuot ohjelmis
Miäččyy ajajes pidäy tiediä suundu, vauhti da aigu,
hätkengo sih suundah sil vauhtil ajetah. On hyvä mustua, ku suures
vauhtis ei kerras voi jyrkäh kiändyö. Suundu ilmoitetah astehis
(gruadusois), 0° on edehpäi (iäreh, pohjazeh), 90° oigieh
(päivännouzuh), 180° iččehpäi (suveh) da 270° hurah
(päivänlaskuh). Miäčyn perävalgo pidäy azettua iččehpäi.
Kuva 3. Suunnan ozutus Sphero-robotas
Vauhti ozutetah luvul 0..255. Täyzi vauhti 255 on nenga 2 m/s.
Sen mugah 128 tarkoittau nenga metrii sekundas.
Aigu ilmoitetah sekundois, se voi olla murdo-oziigi, millisekundah
suate, ezim. 0.5 tarkoittau puoldu sekundua. Ohjelmoijes käsky
roll 0.5 128 45
käsköy robottua siirdymäh puoli metrii koillizeh.
Sphero voi ozuttua 256x256x256 värii, se on 16777216 värivivahtustu.
Värin voi libo vallita kuvas, libo ilmoittua kolmel luvul 0..255.
Värilöi ollah ezimerkikse
-
(0,0,0)=mustu
-
(255,0,0)=ruskei
-
(0,255,0)=vihandu
-
(0,0,255)=sinine
-
(255,255,0)=keldaine
-
(255,0,255)=fuksia (fioletovoi)
-
(0,255,255)=syani
-
(255,255,255)=valgei
-
(127,127,127)=keskiharmai
-
--- da enämbi 16 miljonua muudu värii ---
Ähkähtyssensoran arvo 0 tarkoittau ku ähkähtysty libo ravevundua ei ole,
suurembi lugu tarkoittau suurembua ähkähtysty.
3. Sphero robotan ajamine käziohjavuksel
Kebjevin taba piästä kontaktah Sphero-robotanke on ohjata sen liikundua
käzin, ga nenga ei piäze tuttavumah sen "älykkähembih"
robottutoimindoloih.
Kačommo ezmäi kui robottua ajetah Sphero Edu ohjelmal. Ku
painaldammo Kuvan 2 oigies alačupus olijua liikujan miäčyn kuvua,
ekruanale roih Kuva 4.
Kuva 4. Sphero Edu käzinohjuandutilas.
Käyttöliittymäs on nengomat nyblät:
-
× ylähän hural viey järille algunäyttöh
-
värikkähäs pyöräkös vallitah miäčyn väri
-
asteikol oigies reunas vallitah miäčyn kirkahus
-
horizontualizel asteikol vallitah miäčyn vauhti 0-2 m/s
-
panemal sormi sinizeh täpläh da siirdämäl siirdyy miäččy
-
azeta tagatuli iččehpäi (suundah 180 °) painamal AIM simvolua alareunas
da kierdämäl
Sphero Edun sormelohjuandutila on helpo käyttiä. Ezmäi pidäy suunnata
tagatuli da panna vauhti hil'l'azekse da siirdiä sormie hillakkazeh.
Huomua ku täyzi vauhti on 2 m/s - nengomal vauhtil miäččy karguau käzispäi.
4. Sphero robotan ohjuamine piirdämäl
Ken maltau polgupyöräl ajua, se pyzyy dorogal. A voibigo putilleh
leikata stanit, ku kädeh annetah vaiku nožničat da palaine kangastu?
Toinah olis parembi tiediä miärät da hyvin piirdiä leikkuanduviivat
enne leikondua.
Nygöi opimmo ohjata Sphero robottua piirdämäl ezmäi sen
dorugu da ajamal sit piirustuksen mugah. Ezmäi pidäy painaldua Kuvan 2
algutilas alareunan keskimästy ohjelmoindunybliä. Tulemmo Kuvan 5a
tilandeheh. Painaldamal +-nybliä tulemmo valličendutilandeheh, kudamas
valličemmo Draw - piirrä, Kuva 5b. Pidäy andua nimi piirroksele da sit
painaldua Create - luaji.
Kuva 5. a) Ohjelmoindutila vallittu. b) Vallitah piirdämine.
Sit vai piirdämäh, kui Kuvis 6a da 6b.
Robottu lähtöy matkah painaldamal Start nybliä. Ga enne sidä toinah
robottu pidi siirdiä hyväh kohtah lattiel da suunnata perätuli
AIM-nybläl.
Kuvan 6a noumeran 8 voimmo piirdiä yhtes palas, a kuibo 10, eihäi
Sphero malta lendiä. Voimmo piirdiä LED-tulenke da siirdyö välimatkat
pimienny. Kuvas 6b piirrämmö kolmikon, kudaman sivut ollah eri värizet.
Jogahizen sivun jälgeh kävymmö alareunan värinybläs vaihtamas värin. Huomua
ekruanan oigien alačupun kaksi nuoldu: Huranpuoleine nuoli pyhkii
jälgimäi piirretyn viivan da oigienpuoline nuoli piirdäy uvvessah
jo pyhkityn viivan.
Kuva 6. a) Sphero luadiu noumeran 8. b) Piirdämine mones ozas.
5. Ohjelmoindu palakižannu
Ohjelmoindu andau mahton äijiä monipuolizembah da tarkembah robotan
ohjuandah. Ohjelmoimah piäzemmö valliččemal ohjelmoindutilas, nygöi ei
Draw a Blocks, Kuva 7a.
Kuva 7. a) Valliče Blocks ohjelmoindu. b) Aja metri edehpäi.
c) Luaji kolmikko.
Kuva 7b ozuttau, kui Sphero edus luajitah ohjelmua palazii siirdelemäl
kui palakižas. Luajimmo ohjelman, kudai ajau robottua metrin edehpäi.
-
Ekruanan alareunas on men'u, kudamas luvetellah käskytiippoi. Valličemmo
käskytiipan Action (Toimindu). Avavuu uuzi men'u.
-
Edehpäi ajandah niškoi on käsky Roll (Pyöri), kudamas on kolme kentiä.
-
Enzimäzes kentäs pidäy sanuo, hätkengo ajetah. Pidäy painua sidä
nybliä da ilmoittua monigo sekundua. (Sekundan tuhandesoziigi sua
ilmoittua!). Kirjutammo 2 sekundua. Lopuksi pidäy painaldua
v-merkii alahan.
-
Toizes kentäs ilmoitetah vauhti, graafizesti libo noumeroil 0..255.
Suurin vauhti on 2 m/s, sendah 64 panou vauhtikse nenga 0.5 m/s.
-
Pidäy vie ilmoittua suundu. Kuvan 2 mugah edehpäi on 0 °.
Nygöi Kuvan 7b ohjelman ainavo käsky "roll 2s 64°" on valmis.
-
Sit vai painaldua Start nybliä. Ajandan jälgeh pidäy vie loppie
ohjelmu Stop nybläl.
Ezimerkiohjelmu 6b piirdäy tazasivuzen kolmikon, kudaman sivun piduhus
on nenga puoli metrii. Se on vähästy enämbi puoldu metrii sendäh, ku
miäččy ei kerras azetu puolen metrin jälgeh. Kulmis miäččy azetetah
sekundakse, ku se kergies kiändyö.
Kuvan 8 ohjelmat ezitelläh uuzi ohjavorakendeh, petlu.
Kuvan 8a ohjelmu piirdäy 36-kulmikon, a se ozutahes pyöräköle juuri
sendäh ku miäččy ei kergie kulmis jyrkäh kiändyö. Olis jygei kirjuttau
erikseh jogahine 36-kulmikon sivu, kebjiembi on luadie net petlas,
a jogahizel kerral pidäy muuttua suundua, kiändiä 10° oigieh.
Otammo käyttöh muuttujan kulmu, kudai on allus 0, a kierros kierroksel
kazvau 360:eh. Miäččy matkuau kaikkiedah 36*0.1*(64/256)*2=1.8m,
sendäh pyöräkön läbimiäry on 1.8/π≈0.6m
Ohjelmu 8b blinkettäy vuorotellen ruskiedu, vihandua da sinisty
tuldu. Petlan LoopForever vuoh se sidä ruadau loputtomasti.
Kuva 8. a) Pyöräkkö (36-kulmikko). c) Loputoi petlu vaihtau
värii.
Kuvan 9 ohjelmat ollah vähäzen vaigiembat. Ohjelmu 8a valliččou
piävyndähizesti luvun 1, 2 libo 3 da sen mugah valliččou da ozuttau
värin ruskei, vihandu libo sinine da vie murdajen sanou sen.
Ohjelmu 8b arbou čuajulelähtöjälletyksen.
Kižuajat azetutah piirih miäčyn ymbärile. Käynnistyksen jälgeh
se arbou piävyndähizen aijan 5-6 sekundua da sen aijan se pyöriy
vihandannu. Sen jälgeh se blinkettäy ruskiedu da lähtöy
piävyndähizeh suundah. Ken on lähimbänny sidä suundua, voi lähtie
čuajule, a lähtijes hänen pidäy puistaldua miäččyy, kuni se rubieu
uvvessah pyörimäh, da azettua se lattiele jiäjien kižuajien keskeh.
Kuva 9. a) Piävyndähine väri. b) Čuajulelähtendykiža
6. Ohjelmat Javascriptannu
Nygöi muutammo Blocks ohjelmat tekstoikse, kudamat ollah Javascript
-kielizii ohjelmii. Muundamine tapahtuu nenga.
-
Mene Sphero Edun ohjelmoindutilah da valliče jo luajittu Blocks-ohjelmu,
ezim. kolmikko.blk, Kuva 10a
-
Painalda Blocks-ekruanan oigies yläčupus nägyjii kolmie čökehty.
Tulou nägyvih men'u (Kuva 10b), painalda JavaScript Code. Ekruanale jiävihes
ohjelmu Javascript-kielizenny, Kuva 10c.
-
Painalda ekruanan alareunas Copy Code. Ohjelmu on kopiruittu Androidan
ruadostolale.
-
Peruuta painamal × Blocks-ohjelmah da vie toizen kerran ←:l
ohjelmanvalličendusivule. Painalda +-nybliä. Nävytäh Draw, Blocks da
Text vaihtoehtot. Kirjuta ohjelmale nimi kolmikko.js, valliče Text da
Create, Kuva 10d.
-
Ekruanal nägyy ohjelman alguu, pyhki se. Paina tyhjiä ekruanua
sormel kuni jiävihes Paste (Liitä) -nybly, Kuva 10e. Nygöi painalda sidä
nybliä. Jiävihes jo nähty ohjelmutekstu, Kuva 10f. Olet luadinnuh
Javascript-ohjelman, kudaman voit suorittua Start-nybläl.
Kuva 10. Block-ohjelman muundamine Javascript-ohjelmakse.
Nygöi voimmo muundua aijembi luajitut ohjelmat Javascript-kielizikse:
kolmikko.js
async function startProgram() {
await roll(30, 64, 1);
await roll(30, 0, 1);
await roll(150, 64, 1);
await roll(150, 0, 1);
await roll(270, 64, 1);
await roll(270, 0, 1);
}
pyorakko.js
var kulmu = 0;
async function startProgram() {
kulmu = 0;
for (var count_28 = 0; count_28 < 36; count_28++) {
setMainLed({ r: 255, g: 255, b: 255 });
await roll(kulmu, 64, 0.1);
kulmu = (kulmu + 10);
await delay(0.025);
}
}
varipetlu.js
async function startProgram() {
while (true) {
setMainLed({ r: 255, g: 0, b: 0 });
await delay(1);
setMainLed({ r: 0, g: 255, b: 0 });
await delay(1);
setMainLed({ r: 0, g: 0, b: 255 });
await delay(1);
await delay(0.025);
}
}
piavyndahine.js
var vari = 0;
async function startProgram() {
while (true) {
vari = getRandomInt(1, 3);
if ((vari === 1)) {
setMainLed({ r: 255, g: 2, b: 0 });
speak("rooskei");
} else {
if ((vari === 2)) {
setMainLed({ r: 0, g: 255, b: 0 });
speak("vihandoo");
} else {
setMainLed({ r: 0, g: 0, b: 255 });
speak("sininay");
}
}
await delay(5);
await delay(0.025);
}
}
cuajule.ps
var k = 0;
var r = 0;
var t = 0;
async function startProgram() {
while (true) {
r = getRandomFloat(0, 1);
t = (3 + r);
await spin((360 * t), t);
speak("chuayule");
await delay(5);
await delay(0.025);
}
}
Blocks-ohjelmat voi kiändiä Javascriptakse, no kaikkii Javascript
ohjelmii ei voi kiändiä Blocks-muodoh. Allus palakiža ohjelmoindu on
helpombua, ku ei tarviče käskylöi mustua, a toziohjelmoindah se olis
liijan hil'l'ua. Ohjelmoindu tekstannu on raviembua.
Jatkokursoil opastummo ohjelmoimah Sphero -robottua Python
ohjelmoindukielel.
Liiteh. Sphero Edu Blocks käskyt
Al on luvettelo Javascript käskylöis, kuduat lövvytäh Sphero Edu Blocks
men'us. Tarkembua tieduo Spheron ohjelmoindas Javascript kielel löydyy
internetas https://sphero.docsapp.io
Actions:
Roll 0s 0 0°
Stop
SetColor vari
PlaySound Cat
Speak text
SetSpeed 0
SetHeading 0°
Spin 0o 0s
Fade vari 0s vari
Strobe vari 0s 0
BackLED 0
RawMotor 0 0 0s
Stabilization On
ResetAim
Controls:
Delay 0s
Loop 0
LoopForever
LoopUntil true
If true Then
If true Then Else
ExitProgram
|
Operators:
Set var = 0
Add
Subtract
Multiply
Divide
Exponent
Sqrt
Round
Floor
Ceiling
Abs
Sign
Mod
Min
Max
RandomFloat 0 to 0
RandomInt 0 to 0
|
Comparators:
Equal
NotEqual
LessThan
LessThanOrEqual
GreaterThan
GreaterThanOrEqual
And
Or
Sensors:
Heading
Speed
Color
---readonly---
Location
Velocity
Orientation
Accelerometer
Gyroscope
VerticalAccel
|
Events:
OnCollision
OnLand
OnFreefal
OnGyroMax
OnCharging
OnNotCharging
Variables:
Add
Edit
Functions:
Add
Edit
Parameters:
Add
Edit
|