Ohjelmointi ja Robotiikka

1 Avaustunti

Takaisin

Ohjelmointi ja Robotiikka, O&R!

Tämän sivun kuvaaman sisällön on tarkoitus palvella yläkoulun lyhyenä 1 vvt valinnaiskurssina 9. luokalla.
Soveltuu pidettäväksi 8. luokalla, monialaisiin opintokokonaisuuksiin ja osittain matematiikan ohjelmointiopetukseen.

Alustus

  • Orientoitumista kurssin teemoihin - videolinkki: pahvinosturi
  • Mitä robotiikka on: voimaa, liikeratoja ja koodia - Slides-tiedosto
  • Mistä tunnistat robotin
  • Kurssin teemat: ohjelmointi, robottien ohjaus, 3D-koordinaatisto, 3D-suunnittelu, esineiden valmistustekniikat
  • Miksi kurssi on olemassa?
    • Jotta oppilaat kiinnostuisivat tekniikasta ja mahdollisuuksista kehittää taitojaan!
    • Jotta kotimainen tuotteiden suunnittelu ja valmistus löytäisi kehityskelpoista työvoimaa!

Harjoitus lyijykynällä A4-paperille

  • A-puoli:
    • Kirjoita ohjelmakoodi jostakin arkisesta askareesta kuten kahvin keitto, kouluun lähtö tai vaikkapa jonkin esineen etsiminen.
    • Käytä haluamaasi kieltä, mieti komentojen selkeyttä ja järjestystä
    • Pohdi myös, mitä siitä seuraa, jos ohjelmaa suorittaessa tapahtuu jokin virhe tai poikkeama
    • Parhaille ohjelmakoodeille palkinto ensi tunnilla
  • B-puoli
    • Kerro jotakin lähtötiedoistasi. Millä olet mahdollisesti ohjelmoinut, onko sinulla 3D-tulostin tai muuta sellaista.
    • Kerro toiveistasi tälle kurssille

Lopuksi, jos aikaa, voidaan keskustella eri tavoista välittää voimaa. Millä nimellä kutsutaan nesteen paineeseen perustuvaa voimansiirtojärjestelmää johdatteluvideon pahvinosturissa? Vihje: Ei pneumatiikka vaan se toinen.

Kuva: Aineksia maskotiksi? Tämä on selvästi jonkinlainen tikanheittolaite eli -koje.

2 Johdatus ohjelmointiin Pythonilla

Takaisin

Palaute ja palkinnot ensimmäisen tunnin harjoituksesta

  • Huomioidaan erityisesti komentojen ilmaisuvoimaa ja tarkoituksenmukaista määritteiden käyttöä
  • Hyvän komentojonon järjestys on looginen ja yksityiskohtien tarkkuus säilyy yhdenmukaisena alusta loppuun
  • Erityisansioksi luetaan poikkeustilanteiden käsittely
  • Ohessa esimerkki vuokaaviona esitetystä komentorakenteesta aliohjelmineen

polkup_koodi.pdf

Kivi-Paperi-Sakset demonstraatio

  • Valitaan vapaaehtoinen
  • Käynnistetään ohjelma
  • Pelataan kunnes jompi kumpi on voittanut viisi erää
  • Käydään läpi koodia sanallisesti osa osalta - karkeasti
    • Muuttujien alustus
    • Toistettava silmukka
    • Ohjelman ydin yhdellä rivillä: käsimerkin arvonta
    • Tietojen tallennus
    • Suorituksen päättyminen
  • Keskustelua "älykkään" KSP-tekoälyn kehittämisestä ja erilaisista pelistrategioista

Johdatus ohjelmointiin Pythonilla

  • Replit.com - kirjautuminen google-tunnuksilla
  • Musta ikkuna on käyttäjälle näkyvä komentokehote
    • Kokeillaan komentoja, jotka tallentavat muuttujiin tietoa ja kutsuvat sitä takaisin
    • Kokeillaan yhteenlaskua
  • Valkoinen ikkuna on suunnittelijan näkymä, jonne suoritettava ohjelmakoodi kirjoitetaan
  • Ohjelmakoodi käynnistetään Run-näppäimellä. Sitä pitääkin kokeilla usein, jotta mahdolliset virheet eivät kasaudu pahasti

Ohjelmoidaan yhteenlaskukone

Samalla harjoitellaan seuraavat käsitteet
  • Muuttujien nimeäminen ja tallennus
  • x=4 tarkoittaa, että muuttujan x arvoksi tallennetaan 4
  • x=x+1 tarkoittaa, että muuttujan arvoa kasvatetaan yhdellä (kyse ei ole yhtälöstä)
  • Muuttujatyypit: str, int, float
  • Syöte eli input
    • a=input()
  • Tuloste eli output
    • print(a)
  • Monimutkaiset tulosteet, joissa on "tekstiä" ja muuttujien arvoja
    • print("Muuttuja a: ",a)

Haaste - julkaistavaksi tunin lopulla

  • Kehitä tai etsi ja löydä pythonille koodi, joka hakee nappia painamalla päivän lämpötilan jostakin sääpalvelusta.
  • Suoritus pitää voida demonstroida replit.com pilvipalvelussa. Silloin voidaan varmistua, että oppilas on todella löytänyt ja tunnistanut oikeat koodirivit.
  • Haaste on voimassa kurssin ajan.
  • Luvassa on palkinto.

3 Ohjelmoinnin askeleita

Takaisin

Rakenteiden opettelua tuntiesimerkein

Kenties kaikissa ohjelmointikielissä on ehtolauseita ja toistolauseita.

Ehtolauseet ovat jossittelua. Ne koostuvat ehdosta ja ehdollisista komennoista. Ne suoritetaan vain, jos ehto täyttyy. Ehtolause voi myös olla tyyppiä joko-tai. Silloin kahdesta vaihtoehdosta toinen toteutuu.

Toistolauseet muodostuvat toistokomennosta sekä toistettavista komennoista. Toistojen lukumäärä voidaan määrittää ennalta tai sitten toiston loppumiselle voidaan käyttää sopivaa ehtorakennetta.

Oheisessa tiedostossa on esimerkit olennaisimmista komennoista, joita aloittelija tarvitsee. Lisäksi tiedostossa on esimerkkejä ehtolauseista ja toistolauseista sekä muutamia tehtäviä, joissa niitä voi harjoitella.

PYTHON_ohjelmointi_johdantoesimerkit.pdf

Alla olevan linkki johtaa python-dokumenttiin, josta löytyvät jokseenkin kaikki mahdolliset komennot.
https://docs.python.org/3.6/library/

Tuloste noppatehtäviä varten

Koodaus_noppateht.pdf

Haastavia tehtäviä sekä esimerkkejä vaativammista ohjelmista

Osa alla olevista esimerkeistä on keskeneräisiä. Sinun tehtäväsi on kirjoittaa koodi valmiiksi. Alasivulta löytyy malliratkaisuja. Loppupään ohjelmat ovat jokseenkin valmiita esimerkkejä. Niiden avulla voit opetella tunnistamaan komentoja ja komentorakenteita kuten ehto- ja toistolauseita ohjelmakoodista. Tunnilla saatetaan kirjoittaa johdetusti joitakin näistä esimerkeistä joko sellaisenaan tai vähän muunneltuna.

Tilastoharjoitus - täydennä aloituskoodi:
https://repl.it/@vjhalla/Tilastoharjoitus-aloitus#main.py
Esim nopanheittoon, sisältää vain pari komentoa.
Tähän on hyvät tulostettavat ohjeet edellä olevassa pdf.tiedostossa nimeltään koodaus_noppatehtäviä.
Ratkaisusivulta löytyy esimerkkikoodi, joka tutkii toistokokeena nopanheittoa kahdella kuusitahoisella nopalla

Nimen lyhenne - täydennä aloituskoodi:
https://repl.it/@vjhalla/Lyhenne-aloitus#main.py
Sisältää muutamia komentoja ja ohjaavia kommentteja.
Esimerkiksi näin, jos nimi on "Vilpertti Harmaa", lyhenne on silloin "HAVI".
Ratkaisusivulta löytyy esimerkkikoodi.

Finder, etsijä - täydennä aloituskoodi:
https://repl.it/@vjhalla/Finder-aloitus
Koodi on melko valmis ja sitä voi kokeilla.
Voit täydentää palautteen, joka kertoo käyttäjälle, mistä kohtaa tekstiä hakuosumat löytyvät.
Vihje: Kun selaat nettisivua, CTRL+F avaa etsimistyökalun eli finderin.
Ratkaisusivulta löytyy esimerkkikoodi. Jos olet oikein etevä, voit pohtia, miten tämän hakuohjelman voisi kohdistaa suoraan jollekin nettisivulle.

Mopon potkiminen - kokeile ja muokkaa
https://repl.it/@vjhalla/Mopo-tulille
Ohjelmakoodi soveltaa satunnaisuutta ja todennäköisyyden muuttumista käynnistysyritysten edetessä.
Onko lopputulema aina sama?

Alkulukutesti - kokeile ja tutki
https://repl.it/@vjhalla/Alkulukutesti
Matematiikassa alkuluku on sellainen luku, jolla ei ole tekijöitä.
Se on siis jaollinen vain itsellään ja ykkösellä.
Tämä ohjelma testaa, onko kysytty luku alkuluku vai ei.

Alkulukuskanneri - kokeile ja tutki
https://repl.it/@vjhalla/Alkulukuskanneri
Tämä ohjelma testaa ja hakee kaikki ehtoihisi sopivat alkuluvut.

KSP-ohjelma (kivipaperisakset) - kokeile ja tutki:
https://repl.it/@vjhalla/KSP-toimii
Tämä kokeiltiin ohjelmoinnin johdatustunnilla.
Tunnista komento, jolla tietokone arpoo kiven, sakset tai paperin.
Tunnista komento, joka tallentaa tulokset.
Tunnista komento, joka lopettaa toistosilmukan.

Tekstipohjainen pelidemo - kokeile ja tutki:
https://repl.it/@vjhalla/Oliokokeilu
Minkälaiseen peliin pelaajan kokema tilanne voisi liittyä?
Ovatko valintavaihtoehdot riittäviä?
Missä tilanteessa Örkki ottaa voimajuomaa?
Tulisiko vastustajien olla älykkäämpiä?
Onko satunnaisuuden merkitys riittävä, entä liiallinen?

Nettisivut ja koodaus

HTML ja Javascript-harjoituksia
https://www.w3schools.com/

Ohjelmointi - Python turtle

Takaisin

Turtle on graafinen ohjelmointityökalu, jonka tarkoitus on helpottaa piirtokomentojen oppimista ja koordinaatistossa liikkumista. Siksi piirtäminen tapahtuu ikään kuin hidastettuna. Mielikuva kilpikonnasta merkitsee sitä, että kilpikonna kulkee ohjelmoijan määräämää liikerataa pitkin ja jos kynä on määrätty alas, se piirtää mennessään.

Komentoja:
https://docs.python.org/3.6/library/turtle.html

Aloituslinkki harjoitteluun:
https://repl.it/@vjhalla/Turtle-aloitus

Kerrostalon piirtäminen - täydennä aloituskoodihttps://repl.it/@vjhalla/TurtleKerrostalo-alkuHyödynnämme funktioita ikkunoiden piirtämisessä. Ensin pitää määritellä ikkunafunktio def-komennolla.
Define on englantia ja tarkoittaa suomeksi määrittele.
Ikkuna komennetaan kutsumalla funktiota nimellä ohjelmakoodissa: Ikkuna()
Sulkuihin lisätään määritteet, jotka koskevat ikkunan sijaintia, kokoa ja väriä.
Funktioiden avulla melko kompakti koodi voi piirtää monimutkaisen kokonaisuuden.
Ratkaisusivulta löytyy esimerkkikoodi.

Tähtitaivas funktioilla ja satunnaisuudella - täydennä aloituskoodi
https://repl.it/@vjhalla/Tahtitaivas
Ratkaisusivulta löytyy esimerkkikoodi.

Robotit - mBot

Takaisin
Demo: Kulunvalvontabotti
(Toteutetaan mahdollisuuksien salliessa)

Mbotin kyvyt
  • Toiminnot
    • Eteen ja taakse eri nopeuksilla
    • Oikea pyörä eteen ja taakse (käännökset)
    • Vasen pyörä eteen ja taakse (käännökset)
    • Valot (eri värejä)
    • Äänet (eri sävelkorkeuksia)
    • Komennot voidaan niin, että
      • asetusarvo jää päälle tai
      • toiminto kestää tietyn ajan
        Ⓔ Eteen 100 % nopeudella 5 sekunnin ajan
  • Odota
    • Tämä on yksi tärkeimmistä komennoista
    • Robotin prosessori odottamaan ennen kuin se suorittaa seuraavan komennon
    • Sillä aikaa robotti suorittaa edellisen komennon mukaista toimintoa
      Ⓔ Odota 2 sekuntia
  • Aistit
    • Etäisyystutka eteen päin
    • Lattiaan suunnattu harmaasävykamera
      • Vasen ja oikea
      • Kykenee seuraamaan mustaa viivaa
    • Aisteja voi käyttää toimintojen ehtona.
      Ⓔ Peruutetaan, jos edessä on seinä liian lähellä

3D-suunnittelu

Takaisin


Kuva: Rasia ja kansi - mallinnettu OnShapella. Huomaa, kannen ura on valmistettu käyttäen rasiaa työkaluna. Osat on asetettu osittain sisäkkäin ja niiden toisiaan leikkaava eli päällekkäinen osuus on poistettu vain kannesta. Ura pitää suljetun kannen sivusuunnassa paikoillaan.


Kuva: 3D-malli Saimaan portin yhtenäiskoulun logosta ja samalla luonnos yhden "spykin" kolikosta.


Kuva: Koordinaattiakselit mallinnettuna OnShape-sovelluksella. Kyseessä on kokoonpanonäkymä. Tulostettavien osien pitäisi olla löydettävissä sieltä nimellä "xyz coordinate axes - printable parts".

3D-suunnittelu OnShape-sovelluksella

  • Luo tili OnShape-selainsovellukseen
  • Opiskelijalisenssi on ilmainen. Sillä suunnitellut työt ovat nettisivujen kautta avoimia mutta niitä ei saa ladattua tiedostoina ulos pilvestä.
  • OnShape on CAD-ohjelma. CAD = Computer Aided Design
    Suomeksi tietokoneavusteinen suunnittelu
  • OnShape-ohjelman komennot ovat nykyaikaiset ja vastaavat hyvin lähelle kalliiden ammattiohjelmistojen periaatteita
  • Nykyisin esineet suunnitellaan kolmiulotteisina.

1. Oppitunti

  • Toimitaan mallin mukaan ja lopussa vähän kokeillaan
  • Piirustustasot ja suuntakuution käyttö
  • Sketsin eli piirustuksen laadinta
  • Extrude eli pursotus
    • Vertaa kermavaahtokoristeluun esim. tähtisuulakkeella
  • Osittain sisäkkäisten muotojen tai kappaleiden yhdistely.
    • Unioni eli yhdiste - sisältää kaiken kappaleiden vaatiman tilan
    • Intersect eli leikkaus - sisältää vain kappaleiden yhteisen eli sisäkkäisen tilan
    • Except eli poisto tai vähennys - sisältää toisesta kappaleesta vain sen osan, mihin toinen kappale ei ulotu

Varsinkin except on hauska menetelmä rakentaa vaihtelevia muotoja. Siinä kappaleesta syödään pala pois ja tähän tarkoitukseen käytetään tavallaan toista kappaleta, joka saa toimenpiteen myötä mennä menojaan.

2. Oppitunti

  • Astetta oma-aloitteisempaa työskentelyä
  • Keksi jokin hyvin yksinkertainen tehtävä, esim
    • Noppa, avaimenperä, terottimen kuori, ontto kartio
  • Tai opastuksen avulla vähän vaativampi, esim
    • Kahvimuki - ohjeet tunnilla tai videolta
    • Harjakattoisen talon pienoismalli

Tietotunti-1: Esineiden valmistus

Takaisin

Miten kolmiulotteisia esineitä valmistetaan?

Miten 3D-koordinaatistossa liikutaan?

Aarteenetsintä xyz-koordinaatistossa!
Katso koordinaatit listasta ja lähde liikkeelle origosta.

Katsotaan Slides-esitys ja video-otteita seuraavista aiheesta valmistustekniikat

  • CNC-sorvaus
  • 3D-tulostus
  • Valutekniikka
  • Pakottaminen (taonta ja valssaus)
    • Musiikkikappale työstötekniikoista Juice: Valssaaja konepajalla
  • Teollisuuden automaatio
    • Tuotantolinjat
    • Robottityöasemat


Sekalaisia esimerkkejä

Lopputuotos

Takaisin

Lopputuotos voi olla esimerkkiksi jotain tällaista

  • Ohjelmointitehtävä - tekstiä tai kuvia (turtle)
  • 3D-suunnittelua (Onshape)
  • Robottiohjelma (mBot)
  • Tiedonhakutehtävä: Slides-esitys
    • Erilaiset ohjelmointikielet
    • Tekoälyn kehitys
    • Tekoälyn vaikutus ohjelmointityöhön
    • Älyvaatteet
    • Itse ajavat autot
    • Robotti kotona
      • Seuraa?
      • Kotieläin?
      • Apuri?
    • Starship S-market
    • Miksi nVidia on niin arvokas?
    • Mitä kaikkea konenäkö mahdollistaa?
    • Augmented reality

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä