Operácie

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

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Bez shrnutí editace
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
(3 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.)
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, ktorý si vhodne pomenujeme:  
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:  


<CENTER>[[Súbor:priaIDE02.png|350px]]&nbsp;&nbsp;[[Súbor:priaIDE03.png|350px]]</CENTER>
<CENTER>[[Súbor:priaIDE02.png|350px]]&nbsp;&nbsp;[[Súbor:priaIDE03.png|350px]]</CENTER>
Riadok 128: Riadok 128:
senzorov. To už je však vaša úloha.
senzorov. To už je však vaša úloha.


'''Úloha 1:''' 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 vidno koncový stav v simulátore ako aj váš program. Odovzdajte v Classsrome a získate 2 body.
 
 
{| 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.
|}




Riadok 169: Riadok 179:
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).
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 vidno koncový stav v simulátore ako aj váš program. Odovzdajte v Classsrome a získate príslušný počet bodov.
 
 
{| 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:

  

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


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


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č.

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:

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).

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.

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.

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.

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.