Inhoudsopgave:

Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO - Ajarnpa
Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO - Ajarnpa

Video: Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO - Ajarnpa

Video: Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO - Ajarnpa
Video: Microbit - op afstand bestuurbare auto - remote control 2wd rc car 2024, November
Anonim
Image
Image
Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO
Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO
Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO
Een op afstand bestuurbare Arduino zelfbalancerende robot maken: B-robot EVO

Door jjrobotsjjrobotsVolg meer van de auteur:

Pybot: Python + 3D-geprinte robotarm
Pybot: Python + 3D-geprinte robotarm
Pybot: Python + 3D-geprinte robotarm
Pybot: Python + 3D-geprinte robotarm
Eenvoudig gemotoriseerd roterend display (op Arduino gebaseerd + bestuurd vanaf uw smartphone)
Eenvoudig gemotoriseerd roterend display (op Arduino gebaseerd + bestuurd vanaf uw smartphone)
Eenvoudig gemotoriseerd roterend display (op Arduino gebaseerd + bestuurd vanaf uw smartphone)
Eenvoudig gemotoriseerd roterend display (op Arduino gebaseerd + bestuurd vanaf uw smartphone)
Robotarmgrijper
Robotarmgrijper
Robotarmgrijper
Robotarmgrijper

Over: We houden van robots, doe-het-zelf en grappige wetenschap. JJROBOTS heeft tot doel Open robotprojecten dichter bij de mensen te brengen door hardware, goede documentatie, bouwinstructies + code, "hoe het werkt" info … Meer over jjrobots »

------------------------------------------------

UPDATE: er is hier een nieuwe en verbeterde versie van deze robot: De B-robot EVO, met nieuwe features

------------------------------------------------

Hoe werkt het?

B-ROBOT EVO is een op afstand bestuurbare zelfbalancerende arduino-robot gemaakt met 3D-geprinte onderdelen. Met slechts twee wielen kan B-ROBOT voortdurend zijn evenwicht bewaren door zijn interne sensoren te gebruiken en de motoren aan te drijven. Je kunt je robot besturen, hem laten bewegen of draaien, door commando's te sturen via een smartphone, tablet of pc terwijl hij zijn evenwicht behoudt.

Deze zelfbalancerende robot leest 200 keer per seconde zijn traagheidssensoren (versnellingsmeters en gyroscopen geïntegreerd op de MPU6000-chip) uit. Hij berekent zijn houding (hoek ten opzichte van de horizon) en vergelijkt deze hoek met de doelhoek (0º als hij het evenwicht wil bewaren zonder te bewegen, of een positieve of negatieve hoek als hij vooruit of achteruit wil gaan). Gebruikmakend van het verschil tussen de doelhoek (laten we zeggen 0º) en de werkelijke hoek (laten we zeggen 3º) stuurt hij een besturingssysteem om de juiste commando's naar de motoren te sturen om zijn evenwicht te bewaren. De commando's aan de motoren zijn versnellingen. Als de robot bijvoorbeeld naar voren wordt gekanteld (hoek van de robot is 3º), stuurt hij een commando naar de motoren om vooruit te versnellen totdat deze hoek tot nul is teruggebracht om het evenwicht te bewaren.

Stap 1: Een beetje meer in de diepte…

Een beetje meer in de diepte…
Een beetje meer in de diepte…
Een beetje meer in de diepte…
Een beetje meer in de diepte…
Een beetje meer in de diepte…
Een beetje meer in de diepte…

Het fysieke probleem dat B-ROBOT oplost, wordt de omgekeerde slinger genoemd. Dit is hetzelfde mechanisme dat je nodig hebt om een paraplu boven je hand te balanceren. Het draaipunt bevindt zich onder het zwaartepunt van het object. Meer informatie over Inverted Pendulum hier. De wiskundige oplossing voor het probleem is niet eenvoudig, maar we hoeven het niet te begrijpen om het evenwichtsprobleem van onze robot op te lossen. Wat we moeten weten, is hoe we het evenwicht van de robot moeten herstellen, zodat we een besturingsalgoritme kunnen implementeren om het probleem op te lossen.

Een besturingssysteem is erg handig in robotica (een industriële automatisering). In feite is het een code die informatie ontvangt van sensoren en doelcommando's als invoer en dientengevolge outputsignalen creëert om de robotactuators (de motoren in ons voorbeeld) aan te drijven om het systeem te regelen. We gebruiken een PID-controller (Proportioneel + Derivatief + Integraal). Dit type regeling heeft 3 constanten om kP, kD, kI aan te passen. Van Wikipedia: "Een PID-regelaar berekent een 'fout'-waarde als het verschil tussen een gemeten [Input] en een gewenst setpoint. De controller probeert de fout te minimaliseren door [een output] aan te passen.” Dus je vertelt de PID wat hij moet meten (de "Input"), waar je die meting wilt hebben (het "Setpoint",) en de variabele die je wilt aanpassen om dat te laten gebeuren (de "Output").

De PID past dan de uitgang aan en probeert de ingang gelijk te maken aan het setpoint. Ter referentie, een watertank die we willen vullen tot een niveau, de Input, Setpoint en Output zouden het niveau zijn volgens de waterniveausensor, het gewenste waterniveau en het water dat in de tank wordt gepompt. kP is het proportionele deel en is het belangrijkste deel van de besturing, dit deel is evenredig met de fout. kD is het afgeleide deel en wordt toegepast op de afgeleide van de fout. Dit deel hangt af van de dynamiek van het systeem (hangt af van de robot, de gewichtsmotoren, inertia…). De laatste, kI, wordt toegepast op de integraal van de fout en wordt gebruikt om constante fouten te verminderen, het is als een trim op de uiteindelijke uitvoer (denk aan de trimknoppen op een RC-autostuur om de auto helemaal recht te laten gaan, kI verwijdert de afwijking tussen het gewenste doel en de werkelijke waarde).

Op B-ROBOT wordt het stuurcommando van de gebruiker toegevoegd aan de motoruitgang (een motor met een positief teken en de andere met een negatief teken). Als de gebruiker bijvoorbeeld het stuurcommando 6 stuurt om naar rechts te draaien (van -10 tot 10), moeten we 6 optellen bij de linkermotorwaarde en 6 aftrekken van de rechtermotor. Als de robot niet vooruit of achteruit beweegt, is het resultaat van het stuurcommando een spin van de robot

Stap 2: Hoe zit het met de afstandsbediening?

"laden = "lui"

Aanbevolen: