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