summaryrefslogtreecommitdiff
path: root/host
diff options
context:
space:
mode:
authorNicolas Schodet2012-04-13 21:52:01 +0200
committerNicolas Schodet2012-04-13 21:52:28 +0200
commit35d0598da33712d7361be4ae3d2de472df6b645b (patch)
tree83079f3ab6ea3d0a7904251c36efecdaa399374b /host
parent104bee8c4abe624303fe8e1b8d58fdb66c450b3d (diff)
host/simu/robots: add beacon on robots
This is used for match with two robots.
Diffstat (limited to 'host')
-rw-r--r--host/simu/robots/guybrush/model/bag.py19
-rw-r--r--host/simu/robots/marcel/model/bag.py19
-rw-r--r--host/simu/robots/robospierre/model/bag.py19
3 files changed, 42 insertions, 15 deletions
diff --git a/host/simu/robots/guybrush/model/bag.py b/host/simu/robots/guybrush/model/bag.py
index 6eeddeee..2e751426 100644
--- a/host/simu/robots/guybrush/model/bag.py
+++ b/host/simu/robots/guybrush/model/bag.py
@@ -24,6 +24,7 @@
"""Guybrush bag of models."""
from simu.model.switch import Switch
from simu.model.position import Position
+from simu.model.round_obstacle import RoundObstacle
from simu.model.distance_sensor_sensopart import DistanceSensorSensopart
from simu.model.pneumatic_cylinder import PneumaticCylinder
from simu.robots.guybrush.model.clamps import Clamps
@@ -38,7 +39,9 @@ class Bag:
self.color_switch.notify ()
self.jack = Switch (link_bag.io_hub.contact[1], invert = True)
self.strat_switch = Switch (link_bag.io_hub.contact[2], invert = True)
- self.position = Position (link_bag.asserv.position)
+ self.beacon = RoundObstacle (40, 5)
+ table.obstacles.append (self.beacon)
+ self.position = Position (link_bag.asserv.position, [ self.beacon ])
output = link_bag.io_hub.output
self.clamps = Clamps (table, self.position, link_bag.mimot.aux[0],
(PneumaticCylinder (None, output[8], scheduler,
@@ -52,15 +55,21 @@ class Bag:
0., 1., 1., 1., 0.),
PneumaticCylinder (None, output[1], scheduler,
0., 30., 150., 75., 30.))
+ def distance_sensor_exclude (o):
+ return o is self.beacon
self.distance_sensor = [
DistanceSensorSensopart (link_bag.io_hub.adc[0], scheduler, table,
- (20, 20), pi * 10 / 180, (self.position, ), 5),
+ (20, 20), pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io_hub.adc[1], scheduler, table,
- (20, -20), -pi * 10 / 180, (self.position, ), 5),
+ (20, -20), -pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io_hub.adc[2], scheduler, table,
- (-20, -20), pi + pi * 10 / 180, (self.position, ), 5),
+ (-20, -20), pi + pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io_hub.adc[3], scheduler, table,
- (-20, 20), pi - pi * 10 / 180, (self.position, ), 5),
+ (-20, 20), pi - pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
]
self.path = link_bag.io_hub.path
self.pos_report = link_bag.io_hub.pos_report
diff --git a/host/simu/robots/marcel/model/bag.py b/host/simu/robots/marcel/model/bag.py
index 0f51b2ba..67cc0359 100644
--- a/host/simu/robots/marcel/model/bag.py
+++ b/host/simu/robots/marcel/model/bag.py
@@ -25,6 +25,7 @@
from simu.model.switch import Switch
from simu.model.position import Position
from simu.robots.marcel.model.loader import Loader
+from simu.model.round_obstacle import RoundObstacle
from simu.model.distance_sensor_sensopart import DistanceSensorSensopart
from math import pi
@@ -34,19 +35,27 @@ class Bag:
self.jack = Switch (link_bag.io.jack)
self.color_switch = Switch (link_bag.io.color_switch)
self.contact = [ Switch (contact) for contact in link_bag.io.contact ]
- self.position = Position (link_bag.asserv.position)
+ self.beacon = RoundObstacle (40, 5)
+ table.obstacles.append (self.beacon)
+ self.position = Position (link_bag.asserv.position, [ self.beacon ])
self.loader = Loader (table, self.position, link_bag.mimot.aux[0],
link_bag.mimot.aux[1], link_bag.asserv.aux[0],
link_bag.asserv.aux[1], link_bag.io.contact[0:2])
+ def distance_sensor_exclude (o):
+ return o is self.beacon
self.distance_sensor = [
DistanceSensorSensopart (link_bag.io.adc[0], scheduler, table,
- (30 - 20, 0), 0, (self.position, ), 5),
+ (30 - 20, 0), 0, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io.adc[1], scheduler, table,
- (20 - 20, 20), pi * 30 / 180, (self.position, ), 5),
+ (20 - 20, 20), pi * 30 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io.adc[2], scheduler, table,
- (20 - 20, -20), -pi * 30 / 180, (self.position, ), 5),
+ (20 - 20, -20), -pi * 30 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io.adc[3], scheduler, table,
- (-30 - 20, 0), pi, (self.position, ), 5),
+ (-30 - 20, 0), pi, (self.position, ), 5,
+ distance_sensor_exclude),
]
link_bag.io.adc[4].value = 0
link_bag.io.adc[5].value = 0
diff --git a/host/simu/robots/robospierre/model/bag.py b/host/simu/robots/robospierre/model/bag.py
index d25a4668..f95f48ef 100644
--- a/host/simu/robots/robospierre/model/bag.py
+++ b/host/simu/robots/robospierre/model/bag.py
@@ -24,6 +24,7 @@
"""Robospierre bag of models."""
from simu.model.switch import Switch
from simu.model.position import Position
+from simu.model.round_obstacle import RoundObstacle
from simu.model.motor_basic import MotorBasic
from simu.model.distance_sensor_sensopart import DistanceSensorSensopart
from simu.robots.robospierre.model.clamp import Clamp
@@ -40,7 +41,9 @@ class Bag:
self.strat_switch = Switch (link_bag.io_hub.contact[9], invert = True)
self.contact = [ Switch (contact)
for contact in link_bag.io_hub.contact[2:9] ]
- self.position = Position (link_bag.asserv.position)
+ self.beacon = RoundObstacle (40, 5)
+ table.obstacles.append (self.beacon)
+ self.position = Position (link_bag.asserv.position, [ self.beacon ])
self.clamping_motor = MotorBasic (link_bag.io_hub.pwm[2], scheduler,
8 * pi, 0, pi)
self.door_motors = [ MotorBasic (link_bag.io_hub.pwm[i], scheduler,
@@ -48,15 +51,21 @@ class Bag:
self.clamp = Clamp (table, self.position, link_bag.mimot.aux[0],
link_bag.mimot.aux[1], self.clamping_motor, self.door_motors,
self.contact[0:7], link_bag.io_hub.codebar)
+ def distance_sensor_exclude (o):
+ return o is self.beacon
self.distance_sensor = [
DistanceSensorSensopart (link_bag.io_hub.adc[0], scheduler, table,
- (20, 20), pi * 10 / 180, (self.position, ), 5),
+ (20, 20), pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io_hub.adc[1], scheduler, table,
- (20, -20), -pi * 10 / 180, (self.position, ), 5),
+ (20, -20), -pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io_hub.adc[2], scheduler, table,
- (-20, -20), pi + pi * 10 / 180, (self.position, ), 5),
+ (-20, -20), pi + pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
DistanceSensorSensopart (link_bag.io_hub.adc[3], scheduler, table,
- (-20, 20), pi - pi * 10 / 180, (self.position, ), 5),
+ (-20, 20), pi - pi * 10 / 180, (self.position, ), 5,
+ distance_sensor_exclude),
]
self.path = link_bag.io_hub.path
self.pos_report = link_bag.io_hub.pos_report