Operácie

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

Z SensorWiki

Riadok 11: Riadok 11:
 
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:  
  
[[Súbor:priaIDE02.png]]
+
[[Súbor:priaIDE02.png|350px|center]]
  
 
a vhodne ho pomenujeme
 
a vhodne ho pomenujeme

Verzia zo dňa a času 10:31, 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:

PriaIDE02.png

a vhodne ho pomenujeme

PriaIDE03.png

potom vstúpime do prostredia, ktoré sa skladá z niekoľkých častí:

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.