Hoge prestaties lijn volgeling Robot (11 / 12 stap)

Stap 11: Het PD-algoritme


We hebben dus nu het hart van het project bereikt. Bijna elke goed als volgeling robot moet dit algoritme om ervoor te zorgen dat we de lijn optimaal zal volgen. De robot heeft twee of vier motoren. Die zeggen dat wij de richting dat de robot volgen meer macht te verlenen aan een motor of de andere zal bepalen. We kunnen controle van de snelheid van de motoren door het gebruik van de pols-breedte-modulatie, die is geïntegreerd in de code van de robot, en laat ons een functie, MotorsSpeed(a,b) om de snelheid van de motor A van-1000 tot 1000 en de snelheid van de motor B -1000 tot 1000 wilt gebruiken. We citeer het, maar het houdt geen steek hier uitleggen hoe het werkt. (Maar ik beloof dat het doet!)

 void MotorsSpeed(int A,int B){ ///If mode equals alfa then we invert the motors voltage MotorASpeed(MODE == ALFA ? A : B); MotorBSpeed(MODE == BETA ? A : B); } 
 void MotorASpeed(int S){ S = min(S,1000); S = max(S,-1000); ADIR = S > 0 ? 0 : 1; S = S > 0 ? S : 1000 + S; CCP1CONbits.DC1B1 = S % 4; CCPR1L = S / 4; } void MotorBSpeed(int S){ S = min(S,1000); S = max(S,-1000); BDIR = S > 0 ? 0 : 1; S = S > 0 ? S : 1000 + S; CCP2CONbits.DC2B = S % 4; CCPR2L = S / 4; } 

Dus nu we de PD-algoritme waarvan de doelstelling zijn zal om te beslissen hoeveel reageren zal uitvoeren (hoe veel meer macht gegeven aan één motor dan de andere) wanneer de lijn is ver van het centrum van de sensor-array op basis van twee voorwaarden:

  • Evenredig: Deze term is in verhouding tot hoe ver de sensor array centrum vanuit het midden van de lijn is
  • Derivaat: De waarde van deze term is volgens hoeveel de sensor-array centrum is verhuisd van de laatste keer (de snelheid van verandering). Het toevoegen van deze term formule zal het maken van de robot om te "voorspellen" waren de lijn zal worden in de volgende iteratie welke oorzaken (als we het correct gebruiken) een enorme daling van de oscillaties.

Er zijn twee constanten, die zijn KP en KD dat zegt hoeveel elke term van de robot gedrag beïnvloedt. Testen om deze naar de beste waarden is onderdeel van de ontwikkeling van de robot. Het resultaat van de formule zullen evenredig aan hoeveel macht wordt gegeven aan een motor dan de andere. Als het resultaat is positief, waarschijnlijk motor A zal hebben meer macht dan B, in het andere geval, motor B meer macht dan A.

Ik heb toegevoegd in de robot een derde termijn KR, dat dat maakt als de motorsnelheid negatief is (wat betekent dat het gaat in omgekeerde manier), dan is de snelheid wordt vermenigvuldigd met een factor. Dit is niet nodig, maar vanwege de kenmerken van mijn motors ik vergde toe te voegen.

Neem nu een kijkje van de PID-algoritme (dat heeft de KR-ding, maar je kunt negeren)

 void LineFollow(){ double kp,kd,kr,speed; ///POSICION has the value of the center of the line previously calculated kp = KP[speedMode]; kd = KD[speedMode]; kr = KR[speedMode]; DER = POSICION - LP; ///We calculate how much the line has moved from the last iteration PIDf = (POSICION* kp + DER * kd); if (PIDf > 0){ MotorsSpeed(Mr(speed-PIDf,kr) , speed); ///Mr makes the value to multiply by KR if it is negative. You can delete it }else{ MotorsSpeed(speed , Mr(speed+PIDf,kr) ); ///Mr makes the value to multiply by KR if it is negative. You can delete it } LP = POSICION; ///We store the last line position } 

Gerelateerde Artikelen

Lijn volgeling Robot

Lijn volgeling Robot

dit is mijn tweede lijn volgeling Robot en zoals de naam doet vermoeden, het is een robot waarvan het doel is een lijn te volgen. Deze robot kan worden gebruikt in wedstrijden waar een robot moet het volgen van een route in de kortst mogelijke tijd v
ZWARTE lijn VOLGELING ROBOT

ZWARTE lijn VOLGELING ROBOT

is een zwarte lijn volgeling robot met Ir-sensoren en micro-controller 8051. Zijn een kosteneffectieve model en heeft perfecte uitgang in bijna alle terreinen.De volgende regel robot is er een die een zwarte pad detecteertover een wit oppervlak en vi
Lijn volgeling Robot zonder Arduino of Microcontroller

Lijn volgeling Robot zonder Arduino of Microcontroller

hier heb ik een lijn volgeling robot zonder microcontroller of Arduino uitgelegd. Dit is zeer eenvoudig project voor beginners. Hier hoef je niet te gebruiken op enige kennis van programmeren. Dus laten we proberen...Stap 1: Verzamelen van het materi
Kaart met kartonnen viaduct voor lijn volgeling robot

Kaart met kartonnen viaduct voor lijn volgeling robot

Ik heb om een beetje meer plezier met mijn Makeblock mBot in lijn volgeling modus, deze aangepaste kaart gemaakt met een kartonnen viaduct.Een kaart voor een lijn volgeling robot is eigenlijk vrij eenvoudig te maken. Wat zal ik u tonen hier is hoe ik
Lijn volgeling Robot met behulp van Camera Shield in 1Sheeld & Arduino

Lijn volgeling Robot met behulp van Camera Shield in 1Sheeld & Arduino

Het was zo lang omdat mijn laatst Instructables gepubliceerde. Eigenlijk, ik probeerde te doen van de zeer populaire project, maar met een nieuwe tools en een gemakkelijke manier vooral in codering. Ik heb gewerkt op een lijn volgeling robot die het
LINUSBot - lijn volgeling Robot - met PID controle

LINUSBot - lijn volgeling Robot - met PID controle

LINUSBot - lijn volgeling Robot - met PID controleLINUSBot - PID controleDit is een aanvulling op de eerste "instructables" van de LINUSBot (lijn na robot).Nu de robot de controle van verplaatsingen gedaan door een PID-regelaar heeft, evenredige
Hoe maak je's werelds kleinste lijn volgeling robot (robo Rizeh)

Hoe maak je's werelds kleinste lijn volgeling robot (robo Rizeh)

Hoe maak je's werelds kleinste lijn volgeling robot (vibrobot)"roboRizeh"gewicht: 5gr grootte: 19 x 16 x 10 mmdoor: Naghi Sotoudehwww.roborizeh.IRHet woord "Rizeh" is een Perzisch woord dat 'piepklein' betekent. Rizeh is een zeer klein
Arduino gebaseerde lijn volgeling robot met behulp van Pololu kW-8RC lijn sensor

Arduino gebaseerde lijn volgeling robot met behulp van Pololu kW-8RC lijn sensor

UPDATE FEB 2012: deze gids is featured op de Adafruit bloghttp://www.adafruit.com/blog/2012/02/14/Arduino-based-line-follower-robot/Dit is de Faz3a II, mijn eerste lijn-volgende robot, die hopelijk ook te gebruiken voor het oplossen van de doolhof. I
Autonome lijn volgeling robot

Autonome lijn volgeling robot

dit is een volgeling van de lijn die ik had gebouwd in het eerste jaar van mijn engineering undergraduate program. De robot maakt gebruik van arduino is hersenen en kunnen volgen van zwarte lijn op een witte ondergrond dwz een volgeling van de zwarte
LINUSBot - lijn volgeling Robot

LINUSBot - lijn volgeling Robot

de werking van deze Robot is vrij eenvoudig.Infrarood sensoren geplaatst aan de voorkant van het chassis zal volgen wanneer onze Robot is over een zwarte lijn beweegt of als er op een witte achtergrond.In dit project zullen we de juiste afgeronde cha
Arduino lijn volgeling robot

Arduino lijn volgeling robot

Het doel van de regel die volgt robot:Het volgt de lijn op twee verschillende manieren.Witte lijnen op een zwarte achtergrond te volgen een zwarte lijn op een witte achtergrond informatie over robots volgen:Infrarood sensoren dankzij een eder.kısa va
Eenvoudigste lijn volgeling Robot

Eenvoudigste lijn volgeling Robot

een paar dagen geleden, zag ik een robot op...om eerlijk te zijn, was het circuit een puinhoop te zien, hoewel het schema simpel, was dus ik een nieuwe PCB hiervan maakte, en een kleine dingen, om een zeer nette en kleine circuit van het vernieuwde..
Lijn volgeling Android Robot - PID Control - Setup

Lijn volgeling Android Robot - PID Control - Setup

== > Dit project kreeg de 2e prijs bij 2016 Robotics wedstrijd.Thanks a lot voor alle stemmen ;-)Het doel van dit project is om te bouwen van een Robot volgeling lijn met PID controle. Wij zullen ook een Android toestel gebruiken om gemakkelijk opste
Analoge lijn volgeling upgraden naar Arduino met Attiny85

Analoge lijn volgeling upgraden naar Arduino met Attiny85

SamenvattingIn dit Instructable zullen wij tonen u hoe om te upgraden een goedkope analog lijn volgeling in een intelligente Arduino lijn volgeling door de LM393 comparator IC te vervangen door een intelligente Attiny85 en Arduino sketch.IntroductieL