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
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 ZPOC, ktorý si vhodne pomenujeme:  


<CENTER>[[Súbor:priaIDE02.png|350px|center]]</CENTER>
<CENTER>[[Súbor:priaIDE02.png|350px|center]][[Súbor:priaIDE03.png|350px|center]]</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]]





Verzia z 10:33, 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 ZPOC, 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.