Ga direct naar de hoofdinhoud

GPS-navigatie

Ontwikkel een algoritme om de Hero Bot naar een specifieke positie op het speelveld te navigeren. Gebruik de blokken [Rijden naar] en [Draai naar richting], de GPS-sensor, de armmotor en de inlaatmotor om de Hero Bot naar de positie (1380,-1380) te sturen om de rood gemarkeerde Triball op te pakken. Rijd vervolgens met de robot naar de positie op (600,-300) en scoor de Triball in het doel van de Rode Alliantie.

  • Selecteer de VRC Virtual Skills - Over Under Playground.
  • Gebruik de checklist voor de voorbereiding om Startlocatie “H”, SStartrichting “Noord”en Robotvoorbelasting “Nee” voor de robot te selecteren.
  • Ontwikkel een algoritme om de robot naar een specifieke positie te navigeren.
  • Programmeer de robot om de armmotor te laten draaien, zodat de arm volledig naar beneden kan zakken om een ​​Triball van het veld op te pakken.
  • Gebruik het algoritme om de robot naar de coördinaten (1380, -1380) te navigeren en de robot te draaien naar een koers van 135 graden.
  • Programmeer de robot om de inlaatmotor te laten draaien, zodat deze de groene Triball (rood gemarkeerd) oppakt.
  • Gebruik het algoritme om de robot naar de coördinaten (600, -300) te navigeren en de robot 90 graden te draaien.
  • Programmeer de robot om de inlaatmotor te laten draaien en zo de Triball naar het doel van de Rode Alliantie te lanceren. 

Handige tips

  • Gebruik de GPS-sensor om de X- en Y-coördinaten van de Hero Bot op het speelveld te bepalen. Voor meer informatie over het gebruik van de GPS-sensor in de VRC Over Under Playground, klik hier .
  • Gebruik de Reporter-blokken uit de categorie Sensing om positiegegevens van de GPS-sensor te verkrijgen.

    VEXcode GPS-positieblok dat 'GPS-positie X in mm' uitleest.

    VEXcode GPS-positieblok dat 'GPS-positie Y in mm' uitleest.

    • Overeenkomend Python-commando:

      gps.x_positie(MM)
      gps.y_positie(MM)
  • Gebruik de blokken en uit de categorie Variabelen om twee variabelen te declareren waarin de oorspronkelijke X- en Y-coördinaten van de Hero Bot worden opgeslagen.

    Stapel VEXcode Set-variabeleblokken. Het eerste blok leest 'stel X1 in op GPS-positie X in mm'. Het tweede blok leest 'stel Y1 in op GPS-positie Y in mm'.

    • Overeenkomend Python-commando:

      X1 = gps.x_position(MM)
      Y1 = gps.y_position(MM)
  • Voor hulp bij het declareren van een variabele en het opslaan van gegevens in het project, selecteer je de knop "TUTORIALS" in VR en kies je de tutorial Gegevens opslaan.

    Het pictogram 'Tutorials' in de VEXcode VR-werkbalk.

    VEXcode VR Handleiding voor het opslaan van gegevens (pictogram).

  • Voor meer informatie over de naamgevingsregels voor variabelen in VEXcode VR, dit artikel.
  • Gebruik de coördinaten van de robot (x1,y1), de coördinaten van de doelpositie (x2,y2) en een functie om de rijrichting te bepalen.
    • Bereken de hoek theta θ van de lijn die deze twee punten verbindt.

      Diagram van twee wiskundige uitdrukkingen. De eerste uitdrukking luidt 'theta is gelijk aan atan((y2 - y1) / (x2 - x1))'. De tweede uitdrukking luidt: '- pi / 2 is kleiner dan theta, wat kleiner is dan pi / 2'.

      Een wiskundig diagram van bovenaf laat zien dat de robot zich op coördinaat (X1, Y1) bevindt en dat een lijn wijst naar coördinaat (X2, Y2). De afstand wordt aangeduid met de variabele d, de hoek met de variabele theta. De horizontale afstand tussen de punten wordt weergegeven als 'x2 - x1', en de verticale afstand wordt weergegeven als 'y2 - y1'.

    • Zet de hoek theta θ om naar de koers.

      Pseudocodevoorbeeld voor wiskundige uitdrukking (Startrichting: Noord):

      als X1 gelijk is aan X2:
      	als Y2 > Y1:
      		koers = 0
      	anders:
      		koers = 180
      anders:
      	als X2 > X1:
      		koers = 90 - atan((Y2 - Y1) / (X2 - X1))
      	anders:
      		koers = 270 - atan((Y2 - Y1) / (X2 - X1))
    • Het diagram, van bovenaf gezien, toont de robot binnen een cirkel met labels die de cirkel'tot 360 graden markeren.
  • Gebruik het blok functie uit de categorie Operators en selecteer de functie atan om de hoek theta θ te berekenen.

    Leeg VEXcode-functieblok dat 'leest op een lege'.

    • Overeenkomend Python-commando:

      math.atan( ) / math.pi * 180
  • Gebruik de coördinaten van de robot (x1,y1), de coördinaten van de doelpositie (x2,y2) en de stelling van Pythagoras om de afgelegde afstand te berekenen.

    De wiskundige uitdrukking luidt 'd = sqrt((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)'

    Hetzelfde diagram van bovenaf als eerder, dat het verschil tussen twee coördinaten weergeeft. De robot bevindt zich op coördinaat (X1, Y1) en een lijn wijst naar coördinaat (X2, Y2). De afstand wordt aangeduid met de variabele d, de hoek met de variabele theta. De horizontale afstand tussen de punten wordt weergegeven als 'x2 - x1', en de verticale afstand wordt weergegeven als 'y2 - y1'.

  • Gebruik het blok functie uit de categorie Operators en selecteer de functie sqrt om de rijafstand te berekenen.

    Leeg VEXcode-functieblok dat 'wortel van een lege' leest.

    • Overeenkomend Python-commando:

      math.sqrt( )