Robotický simulátor PRIA IDE: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 61: | 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: |
Verzia z 10:34, 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:
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.