Janee...
Mit den Gleichungen hast du so gesehen Recht, aber die IK ist eben nicht sooo anspruchsvoll, weil es eben nicht mehrere Möglichkeiten gibt. Es gibt meistens 2 Möglichkeiten, in dem man das Knie nach hinten oder vorne knickt, aber es gibt keine Lösungsmengen.
Den Link hab ich oben ja schon gepostet: https://www.robotshop.com/community/...nematics/11759 ...aber da sieht man, wie man sukzessive die 3 Winkel der Servos ausrechnen kann. Und wie man auch sieht - es sind nur 3 Formeln und fertich!
Bei mir sieht das so aus:
Code:def moveFeetAbsolute(self, id, p): error = 0 self.tmp[0] = (p - self.anubis['position']) * self.Rt # Die Position der Base wird abgezogen und um die Lage von Anubis zurückgedreht. p = self.tmp[0] - self.npLegBase[id] # Die LegBase wird ebenfalls abgezogen, damit das Bein im 0-Punkt startet # In p ist nun der Punkt gespeichert, der vom 0-Punkt aus über die 3 Gelenke j1 - j3 erreicht werden soll. j1 = math.atan2(p[1], -p[2]) * self.rad2deg lengthYZ = math.sqrt(p[1] * p[1] + p[2] * p[2]) t = math.sqrt(p[0] * p[0] + lengthYZ * lengthYZ) / self.legLength if t > 1.0: t = 1.0 error |= 1 if t < -1.0: t = -1.0 error |= 1 gamma = 2 * math.asin(t) # Winkel des Ellenbogens alpha = (self.deg180_2rad - gamma) / 2 j2 = (alpha - math.atan2(p[0], lengthYZ)) * self.rad2deg j3 = (gamma - self.deg180_2rad) * self.rad2deg return self.defineServoGoalPosition(id, error, j1, j2, j3)
Grüße, Marcus







Zitieren


Lesezeichen