Operácie

Robotický simulátor PRIA IDE: Rozdiel medzi revíziami

Z SensorWiki

 
(13 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 9: Riadok 9:
 
Simulátor sa nachádza na adrese https://ide.pria.at
 
Simulátor sa nachádza na adrese https://ide.pria.at
  
Najprv si treba založiť nový projekt, alebo vytvoriť kópiu z niektorého už existujúceho. My na úvod použijeme projekt ZPOC:  
+
Najprv si treba založiť nový projekt, alebo vytvoriť kópiu z niektorého už existujúceho. My na úvod použijeme projekt '''ZPOC1: vysavac''', ktorý si vhodne pomenujeme:  
  
[[Súbor:priaIDE02.png]]
+
<CENTER>[[Súbor:priaIDE02.png|350px]]&nbsp;&nbsp;[[Súbor:priaIDE03.png|350px]]</CENTER>
  
a vhodne ho pomenujeme
+
potom už vstúpime do prostredia, ktoré sa skladá z niekoľkých častí, opísaných na nasledovnom obrázku:
  
[[Súbor:priaIDE03.png]]
+
<CENTER>[[Súbor:priaIDE04.png|750px|center]]</CENTER>
 
 
potom vstúpime do prostredia, ktoré sa skladá z niekoľkých častí:
 
 
 
[[Súbor:priaIDE04.png]]
 
  
  
Riadok 65: Riadok 61:
 
spustení programu. Ľavý senzor detekuje prekážku vo vzdialenosti 2458, stredný a pravý nevidia až do konca svojho rozsahu (4000) nič.
 
spustení programu. Ľavý senzor detekuje prekážku vo vzdialenosti 2458, stredný a pravý nevidia až do konca svojho rozsahu (4000) nič.
  
[[Súbor:priaIDE06.png]]
+
<CENTER>[[Súbor:priaIDE06.png|450px]]</CENTER>
  
 
Teraz by už nemalo byť ťažké pomocou testovania stredného senzora napísať program, ktorý dovolí robotovi priamočiary pohyb až po najbližšiu prekážku:
 
Teraz by už nemalo byť ťažké pomocou testovania stredného senzora napísať program, ktorý dovolí robotovi priamočiary pohyb až po najbližšiu prekážku:
Riadok 90: Riadok 86:
  
 
<tabs>
 
<tabs>
<tab name="Simulator 2">
+
<tab name="Simulator 3">
  
 
[[Súbor:priaIDE08.png]]
 
[[Súbor:priaIDE08.png]]
Riadok 131: Riadok 127:
 
Po chvíli isto prídete na to, že robot často ostane zaseknutý medzi nábytkom. Preto treba jeho pohyb zabezpečiť kombináciou viacerých
 
Po chvíli isto prídete na to, že robot často ostane zaseknutý medzi nábytkom. Preto treba jeho pohyb zabezpečiť kombináciou viacerých
 
senzorov. To už je však vaša úloha.
 
senzorov. To už je však vaša úloha.
 +
 +
 +
 +
{| style="padding:0 0.5em;"|
 +
<!-- Right column 3 orange -->
 +
| style="width:70%; vertical-align:top; border:1px solid #fad67d; background:#faf6ed;"|
 +
<div style="border-bottom:1px solid #fad67d; background:#faecc8; padding:0.2em 0.5em; font-size:110%; font-weight:bold;">'''Úloha 1:'''</div>
 +
<div style="border-bottom:1px solid #fad67d; padding:0.4em 1em 1em;">
 +
Vypracujte program v robotickom simulátore na kompletné povysávanie miestnosti. <BR>
 +
Hotový program spustite v simulátore a po splnení úlohy spravte screenshot na ktorom bude ZRETEĽNE vidno koncový stav v simulátore ako aj CELÝ a JASNÝ váš program.
 +
Odovzdajte v Classsrome a získate 2 body.
 +
|}
 +
 +
 +
Na riešenie druhej úlohy si znova spravíme lokálnu kópiu úlohy '''ZPOC 2: Parkovanie''', ktorou sa nám nahrá aj nové prostredie pre robota.
 +
 +
<CENTER>[[Súbor:priaIDE10.png|750px|center]]</CENTER>
 +
 +
V prostredí sa nachádzajú tri garáže, ich číslo zároveň určuje počet bodov, ktoré môžete získať. Ak naprogramujete robota len pomocou na pevno zadaných pohybov a trafíte tak do garáže 2, dostanete 2 body.
 +
Ak použijete senzory na navigáciu po čiare ktorými trafíte do garáže 3, dostanete 3 body ([https://www.youtube.com/watch?v=XwQzhn6HOfw ukážka]). Ak naviac zdetekujete dopravnú značku a vhodne odbočíte, ďalej po čiare trafíte až do garáže 4, dostanete 4 body ([https://www.youtube.com/watch?v=8EQUf5FLpq0 ukážka]).
 +
Auto musí byť v garáži zaparkované "pekne" teda nie zarazené do steny. Nie je možné kombinovať úlohy, teda napr. nemôžete prísť do garáže 4 bez pomoci senzorov.
 +
 +
<CENTER>[[Súbor:priaIDE11.png|750px|center]]</CENTER>
 +
 +
Na detekciu čiary použite senzory č. 0 (celkom vľavo), 1 (vľavo), 2 (vpravo) a 3 (celkom vpravo). Senzory detekujú čiaru (log. 1) na bielom podklade (log. 0). Ukážkový základ programu, ktorý sa vám do
 +
prostredia nahrá detekuje biely podklad. Za predpokladu, že čiara je presne medzi nimi (0-0) sa bude robot pohybovať rovno vpred. V prípade, že čiara uhne bokom, jeden zo senzorov ju zdetekuje (1) a
 +
robot sa zastaví. Vaša úloha potom spočíva v doprogramovaní tak, aby robot zabočil príslušným smerom a pokračoval tak v sledovaní čiary.
 +
 +
<tabs>
 +
<tab name="Simulator 4">
 +
 +
[[Súbor:priaIDE12.png]]
 +
 +
</tab>
 +
<tab name="Python"><source lang="python" style="background: LightYellow;">
 +
while True:
 +
  if not hedgehog.get_digital(1) and not hedgehog.get_digital(2):
 +
    hedgehog.commands(
 +
      hedgehog.move_motor_cmd(0, 1000),
 +
      hedgehog.move_motor_cmd(1, 1000),
 +
    )
 +
  else:
 +
    hedgehog.commands(
 +
      hedgehog.brake_cmd(0),
 +
      hedgehog.brake_cmd(1),
 +
    )
 +
</source></tab>
 +
</tabs>
 +
 +
 +
Na detekciu odbočky - červená dopravná značka - môžete použiť pravý senzor vzdialenosti (č. 6) a na správne zaparkovanie vo vnútri všetky tri senzory vzdialenosti (4, 5 a 6).
 +
 +
 +
 +
 +
{| style="padding:0 0.5em;"|
 +
<!-- Right column 3 orange -->
 +
| style="width:70%; vertical-align:top; border:1px solid #fad67d; background:#faf6ed;"|
 +
<div style="border-bottom:1px solid #fad67d; background:#faecc8; padding:0.2em 0.5em; font-size:110%; font-weight:bold;">'''Úloha 2:'''</div>
 +
<div style="border-bottom:1px solid #fad67d; padding:0.4em 1em 1em;">
 +
Vypracujte program v robotickom simulátore na zaparkovanie vozidla do garáže.
 +
Hotový program spustite v simulátore a po splnení úlohy spravte screenshot na ktorom bude CELKOM ZRETEĽNE vidno váš program a tiež koncový stav v simulátore.
 +
Odovzdajte v Classsrome a získate príslušný počet bodov.
 +
|}
 +
 +
 +
 +
 +
 +
[[Category: Základy počítačov]]

Aktuálna revízia z 14:39, 27. november 2022


Simulátor sa nachádza na adrese https://ide.pria.at

Najprv si treba založiť nový projekt, alebo vytvoriť kópiu z niektorého už existujúceho. My na úvod použijeme projekt ZPOC1: vysavac, ktorý si vhodne pomenujeme:

PriaIDE02.png  PriaIDE03.png

potom už vstúpime do prostredia, ktoré sa skladá z niekoľkých častí, opísaných na nasledovnom obrázku:

PriaIDE04.png


Teraz skúsime program trocha rozšíriť o jeden pohyb naviac a potom vypíšeme do konzoly stav senzorov.

PriaIDE05.png


import math

hedgehog.commands(
  hedgehog.move_motor_cmd(0, 1000),
  hedgehog.move_motor_cmd(1, 1000),
)
sleep(1)

hedgehog.commands(
  hedgehog.brake_cmd(0),
  hedgehog.brake_cmd(1),
)
hedgehog.commands(
  hedgehog.move_motor_cmd(0, 1000),
  hedgehog.move_motor_cmd(1, -1000),
)
sleep(1)

hedgehog.commands(
  hedgehog.brake_cmd(0),
  hedgehog.brake_cmd(1),
)

print(''.join([str(x) for x in ['SEN: ', round(hedgehog.get_analog(4)), ' / ', round(hedgehog.get_analog(5)), ' / ', round(hedgehog.get_analog(6))]]))

Po stlačení sa robot posunie, pootočí a vypíše stav svojich troch predných senzorov. Na nasledujúcom obrázku je stav po treťom spustení programu. Ľavý senzor detekuje prekážku vo vzdialenosti 2458, stredný a pravý nevidia až do konca svojho rozsahu (4000) nič.

PriaIDE06.png

Teraz by už nemalo byť ťažké pomocou testovania stredného senzora napísať program, ktorý dovolí robotovi priamočiary pohyb až po najbližšiu prekážku:

PriaIDE07.png

while hedgehog.get_analog(5) >= 200:
  hedgehog.commands(
    hedgehog.move_motor_cmd(0, 1000),
    hedgehog.move_motor_cmd(1, 1000),
  )

Rovnako môžeme na detekciu prekážky použiť aj nárazník (senzor číslo 8) a aby mohol vysávať aj ďalej, môžeme po detekcii prekážky trocha cúvnuť a otočiť sa iným, náhodným smerom. Takto to budeme opakovať donekonečna (treba doplniť slučku WHILE).

PriaIDE08.png

import random

while hedgehog.get_digital(8):
  hedgehog.commands(
    hedgehog.move_motor_cmd(0, 1000),
    hedgehog.move_motor_cmd(1, 1000),
  )

hedgehog.commands(
  hedgehog.move_motor_cmd(0, -1000),
  hedgehog.move_motor_cmd(1, -1000),
)
sleep(1)

hedgehog.commands(
  hedgehog.brake_cmd(0),
  hedgehog.brake_cmd(1),
)

hedgehog.commands(
  hedgehog.move_motor_cmd(0, 1000),
  hedgehog.move_motor_cmd(1, -1000),
)

sleep(random.random())

hedgehog.commands(
  hedgehog.brake_cmd(0),
  hedgehog.brake_cmd(1),
)

Po chvíli isto prídete na to, že robot často ostane zaseknutý medzi nábytkom. Preto treba jeho pohyb zabezpečiť kombináciou viacerých senzorov. To už je však vaša úloha.


Úloha 1:
Vypracujte program v robotickom simulátore na kompletné povysávanie miestnosti. 
Hotový program spustite v simulátore a po splnení úlohy spravte screenshot na ktorom bude ZRETEĽNE vidno koncový stav v simulátore ako aj CELÝ a JASNÝ váš program. Odovzdajte v Classsrome a získate 2 body.


Na riešenie druhej úlohy si znova spravíme lokálnu kópiu úlohy ZPOC 2: Parkovanie, ktorou sa nám nahrá aj nové prostredie pre robota.

PriaIDE10.png

V prostredí sa nachádzajú tri garáže, ich číslo zároveň určuje počet bodov, ktoré môžete získať. Ak naprogramujete robota len pomocou na pevno zadaných pohybov a trafíte tak do garáže 2, dostanete 2 body. Ak použijete senzory na navigáciu po čiare ktorými trafíte do garáže 3, dostanete 3 body (ukážka). Ak naviac zdetekujete dopravnú značku a vhodne odbočíte, ďalej po čiare trafíte až do garáže 4, dostanete 4 body (ukážka). Auto musí byť v garáži zaparkované "pekne" teda nie zarazené do steny. Nie je možné kombinovať úlohy, teda napr. nemôžete prísť do garáže 4 bez pomoci senzorov.

PriaIDE11.png

Na detekciu čiary použite senzory č. 0 (celkom vľavo), 1 (vľavo), 2 (vpravo) a 3 (celkom vpravo). Senzory detekujú čiaru (log. 1) na bielom podklade (log. 0). Ukážkový základ programu, ktorý sa vám do prostredia nahrá detekuje biely podklad. Za predpokladu, že čiara je presne medzi nimi (0-0) sa bude robot pohybovať rovno vpred. V prípade, že čiara uhne bokom, jeden zo senzorov ju zdetekuje (1) a robot sa zastaví. Vaša úloha potom spočíva v doprogramovaní tak, aby robot zabočil príslušným smerom a pokračoval tak v sledovaní čiary.

PriaIDE12.png

while True:
  if not hedgehog.get_digital(1) and not hedgehog.get_digital(2):
    hedgehog.commands(
      hedgehog.move_motor_cmd(0, 1000),
      hedgehog.move_motor_cmd(1, 1000),
    )
  else:
    hedgehog.commands(
      hedgehog.brake_cmd(0),
      hedgehog.brake_cmd(1),
    )


Na detekciu odbočky - červená dopravná značka - môžete použiť pravý senzor vzdialenosti (č. 6) a na správne zaparkovanie vo vnútri všetky tri senzory vzdialenosti (4, 5 a 6).



Úloha 2:
Vypracujte program v robotickom simulátore na zaparkovanie vozidla do garáže.
Hotový program spustite v simulátore a po splnení úlohy spravte screenshot na ktorom bude CELKOM ZRETEĽNE vidno váš program a tiež koncový stav v simulátore. 
Odovzdajte v Classsrome a získate príslušný počet bodov.