From e3784691ff5369873f0b82c9bcfa8b0a735de754 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 21 May 2009 07:03:58 +0200 Subject: * host/simu/robots/aquajim: - added elevator puck slots. - added lost puck display. --- host/simu/robots/aquajim/model/sorter.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'host/simu/robots/aquajim/model') diff --git a/host/simu/robots/aquajim/model/sorter.py b/host/simu/robots/aquajim/model/sorter.py index 61ecdf71..41f7712f 100644 --- a/host/simu/robots/aquajim/model/sorter.py +++ b/host/simu/robots/aquajim/model/sorter.py @@ -38,6 +38,7 @@ class Sorter (Observable): self.into = into or () self.arm_slot = [ None, None, None ] self.bridge_slot = [ None, None ] + self.elevator_slot = [ ] self.lost = [ ] self.arm_motor_link = arm_motor_link self.arm_motor_link.register (self.__arm_motor_notified) @@ -115,8 +116,8 @@ class Sorter (Observable): if (self.bridge_door_servo_value > 0.9 and self.bridge_finger_servo_value > 0.5 and self.bridge_slot[1] is not None): - # Drop until elevator is fully implemented. - self.lost.append (self.bridge_slot[1]) + # Pass to elevator. + self.elevator_slot.append (self.bridge_slot[1]) self.bridge_slot[1] = None self.__bridge_puck_update () self.notify () @@ -134,7 +135,18 @@ class Sorter (Observable): self.notify () def __elevator_door_notified (self): + # Contact. self.elevator_door_contact.state = (self.elevator_door.angle != self.elevator_door.max_stop) self.elevator_door_contact.notify () + # Puck exit. + if (self.elevator_door.angle == self.elevator_door.max_stop + and self.elevator_slot): + exit_pos = self.__transform ((-150, 0)) + if exit_pos is not None: + for i in range (len (self.elevator_slot)): + self.elevator_slot[i].pos = exit_pos + self.elevator_slot[i].notify () + exit_pos = (exit_pos[0] + 2, exit_pos[1] + 2) + self.elevator_slot = [ ] -- cgit v1.2.3