summaryrefslogtreecommitdiff
path: root/host/simu/robots/aquajim
diff options
context:
space:
mode:
authorNicolas Schodet2009-05-21 07:03:58 +0200
committerNicolas Schodet2009-05-21 07:03:58 +0200
commite3784691ff5369873f0b82c9bcfa8b0a735de754 (patch)
treed568d7f4b9742a758168294cf31dcab67c3f4ba4 /host/simu/robots/aquajim
parentbc6b95e862251823af27d6114f416f5a831b8660 (diff)
* host/simu/robots/aquajim:
- added elevator puck slots. - added lost puck display.
Diffstat (limited to 'host/simu/robots/aquajim')
-rw-r--r--host/simu/robots/aquajim/model/sorter.py16
-rw-r--r--host/simu/robots/aquajim/view/elevator.py12
2 files changed, 26 insertions, 2 deletions
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 = [ ]
diff --git a/host/simu/robots/aquajim/view/elevator.py b/host/simu/robots/aquajim/view/elevator.py
index 8c83ac5e..7c27d4d3 100644
--- a/host/simu/robots/aquajim/view/elevator.py
+++ b/host/simu/robots/aquajim/view/elevator.py
@@ -24,6 +24,8 @@
"""AquaJim elevator."""
from simu.inter.drawable import Drawable
+from simu.view.table_eurobot2009 import puck_attr
+
class Elevator (Drawable):
width = 320 / 1.2
@@ -56,6 +58,11 @@ class Elevator (Drawable):
self.reset ()
self.trans_translate ((-35, -150))
self.draw_line ((-10, 300), (-10, 0), (70, 0), fill = '#808080')
+ i = 15
+ for puck in self.model.lost:
+ self.draw_circle ((-40, i), 15,
+ **puck_attr[puck.color])
+ i += 15
if self.height is not None:
self.trans_translate ((0, self.height))
self.draw_line ((0, 150), (0, 0), (70, 0))
@@ -63,4 +70,9 @@ class Elevator (Drawable):
self.trans_translate ((5 + self.door_value * 70, 0))
self.draw_line ((0, 120), (0, 0),
fill = self.door_limit and 'red' or 'black')
+ i = 0
+ for puck in self.model.elevator_slot:
+ self.draw_rectangle ((0, i), (70, i + 30),
+ **puck_attr[puck.color])
+ i += 30