Mercurial > circuitpython-spiderwing
diff python/gait.py @ 3:8ed8f30b0568 draft
Update gaits
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 23 Jul 2017 20:23:29 +0200 |
| parents | cf2cd5a35d24 |
| children |
line wrap: on
line diff
--- a/python/gait.py Mon May 15 20:01:55 2017 +0200 +++ b/python/gait.py Sun Jul 23 20:23:29 2017 +0200 @@ -2,12 +2,12 @@ class Creep: - speed = 2 + speed = 2.3 stride = 36 - shift = 12 - shift_steps = 2 - raise_leg = 10 - raise_steps = 2 + shift = 8 + shift_steps = 1 + raise_leg = 30 + raise_steps = 1 next_leg = ( (2, 0, 3, 1), # forward (1, 3, 0, 2), # backward @@ -25,35 +25,31 @@ self.dx = 1 self.dy = 0 self.rotation = 0 - self.spread = 20 - leg = robot.legs[0] - self.height = 20 + self.spread = 0 + self.raise_spread = 10 + self.height = 30 self.last_leg = 0 def move(self): - print("Moving legs backwards") for leg in self.on_ground: dx = self.dx * leg.x_dir * self.speed dy = self.dy * leg.y_dir * self.speed leg.move_to(leg.x - dx, leg.y - dy, self.height) - #leg.rotate_by(-self.rotation * leg.x_dir * leg.y_dir / 2) + leg.rotate_by(-self.rotation * leg.x_dir * leg.y_dir / 2) utime.sleep_ms(10) def step(self, leg): dx = (leg.x_dir * self.shift - self.shift_x) / self.shift_steps dy = (leg.y_dir * self.shift - self.shift_y) / self.shift_steps - print("Shifting body by (%d, %d) %d times" % (dx, dy, self.shift_steps)) for step in range(self.shift_steps): self.robot.move_by(dx, dy, 0) self.shift_x += dx self.shift_y += dy self.move() self.on_ground.remove(leg) - print("Raising leg by %d %d times" % (self.raise_leg, self.raise_steps)) for step in range(self.raise_steps): - leg.move_by(0, 0, self.raise_leg) + leg.move_by(self.raise_spread, self.raise_spread, self.raise_leg) self.move() - print("Moving leg forward") leg.move_to( (self.shift_x + self.dx * self.stride) * leg.x_dir + self.spread, (self.shift_y + self.dy * self.stride) * leg.y_dir + self.spread, @@ -61,17 +57,14 @@ ) self.move() self.move() - print("Lowering leg") for step in range(self.raise_steps - 1): leg.move_by(0, 0, -self.raise_leg) self.move() self.on_ground.append(leg) self.move() - print("Leg done") def run(self, steps): for step in range(steps): - print("Moving leg %d" % self.last_leg) leg = self.robot.legs[self.last_leg] self.step(leg) self.last_leg = self.next_leg[0][self.last_leg]
