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:


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:

2.2a. Yhtevys Android tiedokonehen da Sphero robotan välil

Tiedokoneh da miäččy ollah yhtevyksis Bluetooth radivolinkin kauti.


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:

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

Ä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:

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.

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.



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