Mercurial > Kubik
changeset 130:b10c6eaed9e2
rotate
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Wed, 09 Jul 2014 19:10:11 +0000 |
| parents | 62a59cad5ccd |
| children | 6617b34e4047 |
| files | kubik.py rotate.py squats.py |
| diffstat | 3 files changed, 24 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/kubik.py Wed Jul 09 17:43:19 2014 +0000 +++ b/kubik.py Wed Jul 09 19:10:11 2014 +0000 @@ -111,12 +111,13 @@ """Rotate the leg around the center of the body horizontally.""" radians = math.radians(degrees) x, y, z = self.position - bx, by = self.base[0] + x, self.base[1] - y * self.y_direction + bx = self.base[0] + x + by = self.base[1] + y * self.y_direction r = _length(bx, by) a = math.atan2(bx, by) rx = r * math.sin(a + radians) - self.base[0] ry = r * math.cos(a + radians) - self.base[1] - self.move_to((rx, -ry * self.y_direction, None)) + self.move_to((rx, ry * self.y_direction, None)) def update(self): hip, knee, ankle = self._inverse_kinematics(self.position)
--- a/rotate.py Wed Jul 09 17:43:19 2014 +0000 +++ b/rotate.py Wed Jul 09 19:10:11 2014 +0000 @@ -1,20 +1,30 @@ import kubik + STEP = -10 STRIDE = 20 -SWING = 10 -SWING_SPEED = 1 +SWING = 12 +SWING_SPEED = 4 SPEED = 1 HEIGHT = -35 +OVERLAP = 2 FPS = 12 def swing(robot): pause = STRIDE / SPEED + 3 - SWING * 2 / SWING_SPEED + first = True while True: + if first: + start = SWING_SPEED; + first = False + for i in range(0, SWING, SWING_SPEED): + yield + else: + start = -SWING for i in range(pause): yield - for i in range(-SWING, SWING, SWING_SPEED): + for i in range(start, SWING, SWING_SPEED): for l1, l2 in zip(robot.legs[:2], robot.legs[2:]): l1.move_by((-SWING_SPEED, 0, 0)) l2.move_by((SWING_SPEED, 0, 0)) @@ -39,6 +49,7 @@ leg.rotate(STRIDE * side) if not first: leg.rotate(STRIDE * side) + pass else: first = False for i in range(2): @@ -48,15 +59,16 @@ leg.rotate(-SPEED * side) yield + if __name__ == '__main__': robot = kubik.Robot() robot.home() delay = (2 * STRIDE / SPEED + 6) / 4 animations = [ -# swing(robot), - rotate(robot.legs[0], 1, 0 * delay), - rotate(robot.legs[1], -1, 1 * delay), - rotate(robot.legs[3], -1, 2 * delay), - rotate(robot.legs[2], 1, 3 * delay), + swing(robot), + rotate(robot.legs[0], 1, 0 * delay + OVERLAP), + rotate(robot.legs[1], -1, 1 * delay - OVERLAP), + rotate(robot.legs[3], -1, 2 * delay + OVERLAP), + rotate(robot.legs[2], 1, 3 * delay - OVERLAP), ] robot.run_animations(animations, FPS)
