Stap 2: Firmware
Aan het begin, ik gepland op alle servo besturingselementen programmeren mezelf met behulp van een arduino en de standaard servo-bibliotheek, maar dan struikelde over de servoregelaars Pololu Mini Maestro en besloot een van degenen te gebruiken. Anders programmeren slowmotion servo bewegingen zou waarschijnlijk hebben genomen veel te lang. Met deze controllers kunt opgeven op welke snelheid en versnelling, de PWM-waarde verzenden (in 1/4e milliseconde resolutie) en via serieel protocol en wachten tot het 'gereed' signaal. Vervolgens u de volgende waarde verzenden, enzovoort.
De robot zelf is werken in een poolcooerdinatenstelsel, zijnde kundig voor roteren (hoek) en uit te breiden/intrekken van (radius) de arm. Het scherm van de iPad is – aan de andere kant – een vrij goed voorbeeld van een Cartesiaans systeem (x - en y-coördinaten). Dus hoe krijgen we van de ene naar de andere?
Antwoord: MATH! (Of geometrie, als u merkt dat minder intimiderend ;-))
Sir Pythagoras was zo vriendelijk om te laten weten hoe de berekening van de betrekkingen tussen alle hoeken in een rechthoekige driehoek. En omdat elke willekeurige driehoek kan onderverdeeld worden in 2 rechthoekige driehoeken, gecombineerd met enige kennis van sinussen/cosinussen, etc. en de afmetingen van de robot, dit geeft ons de mogelijkheid om:
-Ten eerste het transformeren van x - en y-coördinaten van de iPad in hoek - en radius-waarden voor de robotarm (de hoek gaat rechtstreeks naar de base-servo)
- Dan het vertalen van de straal van het poolcooerdinatenstelsel in hoek-waarden voor de twee arm-servo's.
Het feit dat ik besloot vroeg niet te gaan van de volledige 3D, maar slechts 2, 5D, maakte dit deel veel gemakkelijker, aangezien ik voorkomen dingen zoals omgekeerde cinematica dat kon.
De waarde voor hoe hoog het puntje van de robot boven het oppervlak van de iPads zweeft niet is gecontroleerd en berekend als een hoek, maar gewoon in een ms (milliseconden) waarde die wordt toegevoegd aan / afgetrokken van de servo's PWM signaal.