Mercurial > pkubik
changeset 7:f3882a23fffa
Make the python code run on micropython
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Tue, 23 Dec 2014 23:22:00 +0100 |
| parents | b6f583d259ef |
| children | a04aacdb5999 |
| files | creep.py robot.py |
| diffstat | 2 files changed, 18 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/creep.py Mon Dec 22 21:38:38 2014 +0100 +++ b/creep.py Tue Dec 23 23:22:00 2014 +0100 @@ -23,7 +23,7 @@ def __init__(self, serial): super(Creep, self).__init__(serial) self.robot = self - self.on_ground = set(self.legs) + self.on_ground = set([0, 1, 2, 3]) self.speed = [0.0, 1.0] self.rotation = 0.0 self.gait = 'forward' @@ -31,7 +31,7 @@ def _raise_leg(self, leg): """Raises the leg off the ground.""" - self.on_ground.remove(leg) + self.on_ground.remove(leg.index) leg.move_to((None, None, self.step_height)) for frame in range(2): yield @@ -42,7 +42,7 @@ for frame in range(2): yield leg.move_to((None, None, leg.home[2])) - self.on_ground.add(leg) + self.on_ground.add(leg.index) def _advance_leg(self, leg): """Moves the leg forward.""" @@ -100,7 +100,8 @@ They should all move in the opposite direction than the speed. """ while True: - for leg in self.on_ground: + for leg_index in self.on_ground: + leg = self.legs[leg_index] leg.move_by((self.speed[0] * 0.5 * leg.x_dir, -self.speed[1], 0)) if self.rotation: @@ -108,12 +109,14 @@ yield def run(self): - for (_1, _2) in itertools.izip(self.stomp_anim(), self.retract_anim()): + stomp_anim = self.stomp_anim() + retract_anim = self.retract_anim() + while True: + next(stomp_anim) + next(retract_anim) self.update() time.sleep(0.125) if __name__ == '__main__': - import serial - - Creep(robot.ServoController(serial.Serial('/dev/ttyUSB0', 57600))).run() + Creep.make_robot().run()
--- a/robot.py Mon Dec 22 21:38:38 2014 +0100 +++ b/robot.py Tue Dec 23 23:22:00 2014 +0100 @@ -130,18 +130,18 @@ ry = r * math.cos(a + radians) - self.base self.move_leg_to(leg, (rx, -ry * y_dir, None)) - -def make_robot(serial_device='/dev/ttyS0'): - serial = open(serial_device, 'w') - servos = ServoController(serial) - robot = Robot(servos) - return robot + @classmethod + def make_robot(cls, serial_device='/dev/ttyS0'): + serial = open(serial_device, 'w') + servos = ServoController(serial) + robot = cls(servos) + return robot if __name__ == '__main__': import time - robot = make_robot() + robot = Robot.make_robot() robot.update() time.sleep(1) steps = 10
