wer immer die inverse Kinematik auf Arduino selber portieren möchte, möge das gerne tun!
Bewährt hat sich wohl die Denavit–Hartenberg Konvention
https://en.wikipedia.org/wiki/Denavi...erg_parameters
IMO wäre es als User-Schnittstelle am einfachsten, und für verschiedene Robotarm-Designs am flexibelsten, wenn der Nutzer seine Robotmaße einfach eingeben könnte in eine Reihe von arrays. Statt die genauen Achs-Positionen einzugeben, könnte man sich auch auf "TILT" fürs abknicken und "ROTATE" fürs drehen in der Armlängsrichtung beschränken, für lineare Aktuatoren und auch für die virtuelle Greifposition in der Zange auch Typ "LINEAR":
Bild hierCode:// cusomize your arbitrary robot arm dimensions and design. #define MAXJOINTS 6 Jtype[0] = ROTATE; // turntable joint Jangl[0] = 270; // max turn angle Lleng[0] = 95; // turntable height in mm Jtype[1] = TILT; // shoulder joint Jangl[1] = 180; // max turn angle Lleng[1] = 105; // upper arm length in mm Jtype[2] = TILT; // elbow joint Jangl[2] = 180; // max turn angle Lleng[2] = 97; // forarm length in mm Jtype[3] = TILT; // wrist tilt Jangl[3] = 90; // max turn angle Lleng[3] = 65; // wrist length: not exaclty linear mounted! Jtype[4] = ROTATE; // metacarpal rotate. Jangl[4] = 90; // max turn angle Lleng[4] = 50; // metacarpal length Jtype[5] = LINEAR; // longitudinal finger length (not opening!!) Jangl[5] = 0; // virtual grab position, no motor used (claw open/close external cmd) Lleng[5] = 60; // finger length = grab area length metacarpal to fingertip
und das Robot-Programm verkettet dann diese Werte zur Kette der Teil-Arme, in dem es sie in seine Matrizen einsetzt.
Für mich persönlich überschreitet das meine Kompetenzen bei weitem, sonst würde ich es selber machen.
Daher, insb. @moppi: wenn du es dir zutraust: Immer gerne!
Zum Rechnen würde sich sicher ein M3 (Due) oder auch ein M4 mit fpu anbieten.
Lesezeichen