Inhoudsopgave:

SnappyXO Precieze Mover Robot - Ajarnpa
SnappyXO Precieze Mover Robot - Ajarnpa

Video: SnappyXO Precieze Mover Robot - Ajarnpa

Video: SnappyXO Precieze Mover Robot - Ajarnpa
Video: Differential Drive Robot 2024, November
Anonim
SnappyXO Precieze Mover Robot
SnappyXO Precieze Mover Robot

Laat uw Arduino-robot rechtdoor gaan voor een bepaalde afstand of draai naar een bepaalde hoek met behulp van de PreciseMovement Arduino-bibliotheek.

De robot heeft een rollende kogelgieter of gelijkwaardig nodig om wrijving tijdens het draaien te minimaliseren.

www.pololu.com/product/954

U kunt de robot vertellen om vooruit te gaan naar een bepaalde afstand of om te draaien naar een bepaalde hoek. Het programma bepaalt zijn positie met behulp van gegist bestek. Aangezien de positieschattingen alleen afhankelijk zijn van de wielsnelheid, zal slippen aanzienlijke fouten veroorzaken. De ontwerper van de robot moet ervoor zorgen dat het risico op wegglijden tot een minimum wordt beperkt.

Dit is getest om te werken met de SnappyXO-robot.

Stap 1: Leslocatie gewijzigd

De tutorial is verplaatst naar de onderstaande pagina. Deze tutorial wordt niet meer onderhouden.

sites.google.com/stonybrook.edu/premo

Stap 2: Bouw de SnappyXO differentiële aandrijfrobot

De PreciseMovement-bibliotheek die we zullen gebruiken, is alleen compatibel met differentiële aandrijfrobots. U kunt ervoor kiezen om andere 2 wiel aangedreven robots te gebruiken.

Stap 3: Sluit de elektronica aan

Sluit de elektronica aan
Sluit de elektronica aan

Voor de standaard SnappyXO optische encoder:

D0 (encoderuitgang) -> Arduino digitale pin

VCC -> Arduino 5V

GND -> GND

Motor- en Arduino-vermogen:

De motorstroombron moet geschikt zijn voor de motoren die u gebruikt. Voor de SnappyXO-kit worden 4AA-batterijen gebruikt voor de motorvoeding en 9V-batterij voor de Arduino-voeding. Zorg ervoor dat ze allemaal een gemeenschappelijke GND hebben.

Stap 4: Installeer de PreciseMovement Arduino-bibliotheek

downloaden:

github.com/jaean123/PreciseMovement-library/releases

Hoe Arduino-bibliotheek te installeren:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Stap 5: Coderen

Arduino-code:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

Deze parameters vereisen aanpassing. Andere parameters die in de code worden aanbevolen, kunnen worden aangepast voor betere prestaties.

  • Controleer en stel de motorpinnen in onder ARDUINO PINS.
  • Stel LENGTE en RADIUS in.

    • LENGTE is de afstand van het linkerwiel tot het rechterwiel.
    • RADIUS is de straal van het wiel.
  • Stel PULSES_PER_REV in, wat het aantal pulsen is dat de encoder uitvoert voor één wielomwenteling.

    • Merk op dat dit verschilt van het aantal pulsen dat de encoder afgeeft voor één omwenteling van de motoras, tenzij de encoders zijn aangesloten om rechtstreeks van de wielas te lezen.
    • PULSES_PER_REV = (pulsen per omwenteling motoras) x (overbrengingsverhouding)
  • Stel STOP_LENGTH in als je ziet dat de robot doorschiet na de voorwaartse beweging.

    De robot stopt zodra de geschatte positie STOP_LENGTH verwijderd is van het doel. De STOP_LENGTH is dus de geschatte afstand die de robot nodig heeft om tot stilstand te komen

  • PID-parameters

    KP_FW: Dit is de proportionele component van de voorwaartse beweging. Verhoog dit totdat de robot rechtdoor gaat. Als u het niet recht kunt krijgen door dit af te stemmen, heeft de hardware waarschijnlijk een fout. (bijv. verkeerde uitlijning van het wiel, enz.)

    KP_TW: Dit is de proportionele component van de draaiende beweging PID. Begin gewoon met een lage waarde en verhoog deze totdat de draaisnelheid, of de hoeksnelheid van de robot tijdens het draaien, snel genoeg is, maar geen overshoot veroorzaakt. Om waarnemingen te doen, kunt u de robot laten afwisselen van 0 naar 90 en terug door het volgende in de lusfunctie in te voegen

Plaats dit in een lus om KP_FW af te stemmen:

verhuizer.forward(99999);

Plaats dit in een lus om af te wisselen van 0 tot 90 om KP_TW af te stemmen:

verhuizer.twist(90); // Twist 90 CW

vertraging (2000);

mover.twist(-90) // Twist 90 CCW

vertraging (2000);

Merk op dat om de hoeksnelheid bij TARGET_TWIST_OMEGA daadwerkelijk te verdraaien, de KI_TW ook moet worden afgesteld, omdat een proportionele controller zich nooit op het exacte doel zal vestigen. Het is echter niet nodig om met die exacte hoeksnelheid te draaien. De hoeksnelheid moet gewoon langzaam genoeg zijn.

Stap 6: Hoe het werkt

Als je benieuwd bent hoe het werkt, lees dan verder.

De voorwaartse beweging wordt recht gehouden met behulp van het pure achtervolgingsalgoritme op een rechtlijnig pad. Meer over Pure Pursuit:

De twist PID-controller probeert de hoeksnelheid van de twist op TARGET_TWIST_OMEGA te houden. Merk op dat deze hoeksnelheid de hoeksnelheid van de hele robot is, niet de wielen. Er wordt slechts één PID-controller gebruikt en de output is de PWM-schrijfsnelheid van zowel de linker- als de rechtermotor. Gegist bestek wordt gedaan om de hoek te berekenen. Zodra de hoek de foutdrempel bereikt, stopt de robot.

Aanbevolen: