summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Schodet2010-05-10 08:34:02 +0200
committerNicolas Schodet2010-05-10 08:34:02 +0200
commit022d4aa4f9e6ee7aad29a46d4ce3df5383426f6b (patch)
tree4ee00b24cfc5eb94d02150613cd5e2779df3db14
parent4cad0f3f5d037062aad81a88514e04336e473829 (diff)
host/simu/robots/marcel/model: add clamp limit when objects are in the clamp
-rw-r--r--host/simu/robots/marcel/model/loader.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/host/simu/robots/marcel/model/loader.py b/host/simu/robots/marcel/model/loader.py
index f80da1ba..44ff83bc 100644
--- a/host/simu/robots/marcel/model/loader.py
+++ b/host/simu/robots/marcel/model/loader.py
@@ -52,6 +52,7 @@ class Loader (Observable):
self.clamp_load = [ ]
self.load = [ ]
self.front_elements = [ ]
+ self.tickness = None
self.clamp_pos = [ None, None ]
self.robot_position.register (self.__robot_position_notified)
self.clamp_link[0].register (self.__left_clamp_notified)
@@ -79,6 +80,16 @@ class Loader (Observable):
if not c.state:
c.state = True
c.notify ()
+ # Update motors limits.
+ elements = self.clamp_load if self.clamp_load else self.front_elements
+ tickness = sum (e.radius * 2 for e in elements)
+ if tickness != self.tickness:
+ limit = (((self.CLAMP_WIDTH - tickness) * 0.5 + 5)
+ / self.CLAMP_PULLEY_RADIUS)
+ for l in self.clamp_link:
+ l.limits.max = limit
+ l.limits.notify ()
+ self.tickness = tickness
def __elevator_notified (self):
if self.elevator_link.angle is None:
@@ -144,7 +155,7 @@ class Loader (Observable):
if (self.robot_position is None
or self.clamp_pos[0] is None
or self.clamp_pos[1] is None):
- return None
+ return elements
# Matrix to transform an obstacle position into robot coordinates.
m = TransMatrix ()
m.translate ((-self.robot_position.pos[0],