Stap 13: Software: beweging plannen
Met onze tafel van hoekige waarden en onze pixelgegevens van de camera is het nu tijd om te schilderen! Hoe moet de arm wel verplaatsen? Hoewel de servo's relatief snel zijn, zou ze gewoon instellen op de volgende gewenste vorm resulteren in te abrupt een motie. Oplossen van dit vereist interpolatie tussen de punten van de twee doel op een ingestelde snelheid. Heb ik de motie sequentie georganiseerd in een reeks van vormen en acties die zijn opgeslagen in een array dat ik naar als de wachtrij van de beweging verwijzen. Hier is hoe de wachtrij is ingesteld:
Nadat de foto is verwerkt, laden een reeks vormen (set van 4 hoeken) als u wilt verplaatsen van de arm in een verticale positie
laden van het pad om te bereiken van het palet van verf
laden van de paden terug te keren naar de rechtop
de afbeelding array doorlopen
controleren om te zien als een pixel donker of licht is
Als een pixel donker is laadt vervolgens de overeenkomende shape (de resulterende matrix van de Processing schets) in de wachtrij
laden van een shape die gelijk is aan de hoeken, maar tilt de elleboog hoek terug een beetje (zodat de arm zal niet slepen tussen pixels wanneer interpoleren)
als dertig vormen zijn geladen in de wachtrij (15 persen van de borstel om canvas en 15 keer leunend)
laden van de pad-reeks voor het ophalen van meer verf en wilt terugkeren naar een zeer leaned terug houding (interpoleren van de rechtop ook sleept al punten)
Zodra de cyclus complete heeft, laden de volgorde van de pad voor "going to slapen" in de water-cup
Uitvoering
Zodra de wachtrij vol is, zullen wij moeten uitvoeren. Deze stap bestaat uit loopt door onze lijst totdat we een lege waarde bereiken en vervolgens terug te gaan naar knooppersen controleren. Elke stap terwijl loopt door de wachtrij interpoleert tussen shapes, vandaar dat heeft meer vloeiende bewegingen.
Interpolatie
Om de beweging tussen shapes glad, zullen we interpoleren tussen de twee hoeken op 1.0 stappen, maar variabele tijden per gewricht, zodat de gewrichten al op de gewenste vorm op hetzelfde moment aankomen. Om dit te doen, zullen we eerst berekenen dat de overgang tussen de twee hoeken voor elk gewricht (de deltaTheta per gewricht). Na het vinden van alle van de deltaTheta-waarden zullen we hen vind je de grootste sorteren. Wij zal dan de grootste deltaTheta vermenigvuldigt met de minimale hoeveelheid tijd die de motor één graad reizen kunt (dit is de minimale stap die we zullen ingesteld). Dit zal de totale tijd zo ingesteld dat de motor die moet gaan de meeste, niet om het even welk zich sneller bewegen dan het één graad per graad, terwijl de motoren die hebben lagere waarden van de deltaTheta, zal update door één graad veel langzamer is, omdat hun totale reisafstand is zo klein kan reizen. Berekening van de tijd gebaseerd op de grootste hoekige verandering betekent ook dat de arm niet langzamer beweegt dan als een vaste tijd had vastgesteld, aangezien de verandering tussen shapes misschien wel heel klein. De volledige tenuitvoerlegging van de interpolatie-functie wordt zwaar commentaar in mijn schets van Galileo.