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":
Code:
// 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
Bild hier
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