Stap 4: Plant de bewegingen van de Robot
Hoewel de robot slechts twee DC-motoren heeft, is het geschikt voor het uitvoeren van een reeks complexe bewegingen. Om te houden dit Instructable zo eenvoudig mogelijk, heb ik gekozen om slechts ongeveer drie tientallen uniforme basisbewegingen en een paar complexe bewegingen gevormd door de combinatie van de basisbewegingen te definiëren.
Zoals u in de foto's in stap 2 zien kunt, gebruik ik geen rotatie sensoren in de wielen, ultrasone sensoren of een ander type sensor voor het meten van de afstand tussen objecten of de reisde afstand. Dit voorkomt dat de robot uitvoeren van hoge precisie bewegingen. Echter kunt controleren alleen de richting en de snelheid van de motoren u bereiken een niveau van nauwkeurigheid goed genoeg om te bewegen van de robot.
Het eerste wat dat je moet weten om te kunnen berekenen van de nodige uitvoeringstijd voor elke beweging is de gemiddelde snelheid van de robot. Om dat te doen, plaats een lintmeter parallel aan de robot en beide motoren simultaan wordt geactiveerd voor één of twee seconden, de reisde afstand meten en afleiden van de snelheid. Ik heb in mijn configuratie, 13.7 centimeter per tweede aanwerving 62,5% van de maximale motorsnelheid (250/400, zie Pololu Arduino library). Met andere woorden, als u wilt verplaatsen de robot 1 meter (100 cm) vooruit, de motoren moest worden gelijktijdig geactiveerd voor 7.299270... seconden. Ik heb besloten te houden van de tijd het tellen in de milliseconden resolutie, maar als u wilt bereiken hogere verkeer precisie, kunt u overwegen verhoging van de resolutie naar microseconden. Lang verhaal kort, verplaatsen de robot 1 meter, ik heb om te activeren van beide motoren tegelijk voor 7299 milliseconden. Vanaf dit nummer wordt alles regel van drie voor andere afstanden. Voor het uitvoeren van de boog of cirkelvormige bewegingen, is één wiel sneller dan de andere. Draai de robot aan de zijkanten, slechts één wiel moet worden geactiveerd of beide in tegengestelde richtingen (om te schakelen op een eigen as). Hier zul je sommige trigonometrie gebruiken om erachter te komen de afgelegde door elk wiel en voor hoe lang elke motor moet worden geactiveerd. Een goed uitgangspunt voor deze concepten kan worden gevonden in de volgende links (ik ben niet van plan om verder te gaan op dit hier): http://rossum.sourceforge.net/papers/CalculationsForRobotics/CirclePath.htm en http://math.stackexchange.com/questions/60176/move-two-wheeled-robot-from-one-point-to-another.
Zoals u aan het einde van de video hierboven zien kunt, maak ik ook de robot "tekenen" sommige eenvoudige geometrische vormen (vierkant, driehoek en cirkel) op de verdieping. Deze bewegingen worden bereikt door de combinatie van de basisbewegingen (bijvoorbeeld gaan zetten, gaan vooruit, draai, etc.). De combinatie van deze bewegingen in de BitVoicer Server Stem Schema is gemaakt en u zult hen niet zien in de Arduino schets gepresenteerd in de volgende stap.