Stap 6: fysica
De bots gehele navigatie wordt gedaan door de PING-sensor. Deze informatie wordt weergegeven als een lange reeks van gehele getallen. Het is aan ons onze kennis van onze robot en mechanica gebruiken deze gegevens om relevant te maken.
Een gemakkelijke out zou aan het stuur de robot vooruit totdat het aantal minimaal veilige afstand benaderd en vervolgens om te zetten tot de afstand voor het groter dan de minsafe en herhaal is. Mij watertje trying voor nog meer plezier met mijn arduino dan dit :)
Als we de robot, spin een cirkel en verzamelen van gegevenspunten van onze PING-functie, kunnen we deze gegevens gebruiken vertegenwoordigen het grondplan van een kamer in poolcoördinaten indien wij een overeenkomstige hoek zou kunnen associëren.
We lossen voor die bijbehorende hoek door het meten van de hoeksnelheid van een van de robots center wielen, te vermenigvuldigen met de omtrek en de hoeveelheid tijd van spinnen in het wiel. Door betreffende dit booglengte kunnen we oplossen voor verandering in de hoek (foto 1).
Een eenvoudigere manier, meer praktische manier om dit te doen zou zijn voor het meten van de hoeveelheid keer de robot te duurt maken een volledige draai en beseffen dat de hoeksnelheid (omega r) vermenigvuldigd met verandering in tijd gelijk de robots wijzigen in hoek (foto 2).
Gewoon voor de lol zetten wij deze polaire coördinaten naar cartesische coördinaten (met het gebruik van onze berekende theta-waarden) door het realiseren van die de zonde van de opgenomen hoek gelijk aan de x-component gedeeld door de afstand van PING sensor (P1 en P2 op foto 3 is). Oplossen voor x. We kunnen afleiden dat een waarde voor y de hetzelfde gebruikt cosinus.
Om het allemaal samen kunnen we berekenen x- en y-coördinaten voor elk gegevenspunt gevangen genomen door onze PING sensor (foto 4). Laten we beginnen met 120 gegevens punten voor een volledige scan.
Mijn probleem is, wanneer ik de batterijen wijzigt, de robot zal blijken verschillende tempo. Evenzo, als de batterij sterft die de robot zal langzamer draaien. Maken van de tijd die nodig is om te doen een volledige 360 in een globale constante maakt het gemakkelijker om te meten en het opnieuw invoeren van de juiste vertraging in uw programma.
Het is mogelijk om te controleren van de huidige de motoren aan het tekenen bent, maar als u puls breedte modulatie op uw motors gebruikt, de huidige in een golf zal verplaatsen.
Is er een manier om de locatie van de robots nauwkeuriger plot door deze bewakingsgegevens (stroom, spanning enz)?