From ef661915c1e89a5eea7a8c83748eb835c9d8f6f9 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 30 Apr 2012 16:11:37 +0200 Subject: digital/ai/tools, host/simu/robots: factorize output definitions --- digital/ai/tools/test_simu_control_guybrush.py | 38 ++++++++++++++------------ host/simu/robots/guybrush/model/bag.py | 31 +++++++++++++++------ 2 files changed, 42 insertions(+), 27 deletions(-) diff --git a/digital/ai/tools/test_simu_control_guybrush.py b/digital/ai/tools/test_simu_control_guybrush.py index 003c91f7..adf27a85 100644 --- a/digital/ai/tools/test_simu_control_guybrush.py +++ b/digital/ai/tools/test_simu_control_guybrush.py @@ -25,18 +25,13 @@ from test_simu import TestSimu, run from Tkinter import * import math +import simu.robots.guybrush.model.bag + +defs = simu.robots.guybrush.model.bag.Bag + class TestSimuControl (TestSimu): """Interface with extra control.""" - UPPER_CLAMP_OPEN = 1 << 1 - UPPER_CLAMP_OUT = 1 << 2 - UPPER_CLAMP_IN = 1 << 3 - UPPER_CLAMP_DOWN = 1 << 4 - UPPER_CLAMP_UP = 1 << 5 - DOOR_OPEN = 1 << 6 - DOOR_CLOSE = 1 << 7 - LOWER_CLAMP_1_CLOSE = 1 << 8 - LOWER_CLAMP_2_CLOSE = 1 << 9 LOWER_CLAMP_ROTATION_STROKE = int (16 * 250) def __init__ (self, robot_class, *args): @@ -46,9 +41,9 @@ class TestSimuControl (TestSimu): self.asserv = self.robots[0].asserv self.mimot = self.robots[0].mimot self.robot_model = self.robots[0].model - self.io.output (self.UPPER_CLAMP_UP, 'toggle') - self.io.output (self.UPPER_CLAMP_IN, 'toggle') - self.io.output (self.DOOR_CLOSE, 'toggle') + self.io.output (1 << defs.OUTPUT_UPPER_CLAMP_UP, 'toggle') + self.io.output (1 << defs.OUTPUT_UPPER_CLAMP_IN, 'toggle') + self.io.output (1 << defs.OUTPUT_DOOR_CLOSE, 'toggle') def create_widgets (self): TestSimu.create_widgets (self) @@ -61,18 +56,25 @@ class TestSimuControl (TestSimu): button = Button (self.control_frame, text = name, padx = 0, pady = 0, command = command) button.pack () - out_button ('LClamp 1 open', self.LOWER_CLAMP_1_CLOSE) - out_button ('LClamp 2 open', self.LOWER_CLAMP_2_CLOSE) + out_button ('LClamp 1 open', + 1 << defs.OUTPUT_LOWER_CLAMP_1_CLOSE) + out_button ('LClamp 2 open', + 1 << defs.OUTPUT_LOWER_CLAMP_2_CLOSE) self.lower_clamp_rotate_button = Button (self.control_frame, text = 'LClamp rotate', padx = 0, pady = 0, command = self.lower_clamp_rotate_command) self.lower_clamp_rotate_button.pack () out_button ('UClamp up/down', - self.UPPER_CLAMP_UP | self.UPPER_CLAMP_DOWN) + 1 << defs.OUTPUT_UPPER_CLAMP_UP + | 1 << defs.OUTPUT_UPPER_CLAMP_DOWN) out_button ('UClamp in/out', - self.UPPER_CLAMP_IN | self.UPPER_CLAMP_OUT) - out_button ('UClamp open', self.UPPER_CLAMP_OPEN) - out_button ('Door open', self.DOOR_OPEN | self.DOOR_CLOSE) + 1 << defs.OUTPUT_UPPER_CLAMP_IN + | 1 << defs.OUTPUT_UPPER_CLAMP_OUT) + out_button ('UClamp open', + 1 << defs.OUTPUT_UPPER_CLAMP_OPEN) + out_button ('Door open', + 1 << defs.OUTPUT_DOOR_OPEN + | 1 << defs.OUTPUT_DOOR_CLOSE) self.backward_var = IntVar () self.backward_button = Checkbutton (self.control_frame, text = 'Backward', variable = self.backward_var) diff --git a/host/simu/robots/guybrush/model/bag.py b/host/simu/robots/guybrush/model/bag.py index 00d653a0..f9c98814 100644 --- a/host/simu/robots/guybrush/model/bag.py +++ b/host/simu/robots/guybrush/model/bag.py @@ -33,6 +33,16 @@ import random class Bag: + OUTPUT_UPPER_CLAMP_OPEN = 1 + OUTPUT_UPPER_CLAMP_OUT = 2 + OUTPUT_UPPER_CLAMP_IN = 3 + OUTPUT_UPPER_CLAMP_DOWN = 4 + OUTPUT_UPPER_CLAMP_UP = 5 + OUTPUT_DOOR_OPEN = 6 + OUTPUT_DOOR_CLOSE = 7 + OUTPUT_LOWER_CLAMP_1_CLOSE = 8 + OUTPUT_LOWER_CLAMP_2_CLOSE = 9 + def __init__ (self, scheduler, table, link_bag): self.color_switch = Switch (link_bag.io_hub.contact[0], invert = True) self.color_switch.state = random.choice ((False, True)) @@ -45,18 +55,21 @@ class Bag: output = link_bag.io_hub.output contact = [ Switch (c) for c in link_bag.io_hub.contact[3:] ] self.clamps = Clamps (table, self.position, link_bag.mimot.aux[0], - (PneumaticCylinder (output[8], None, scheduler, - 0., 30., 150., 75., 30.), - PneumaticCylinder (output[9], None, scheduler, - 0., 30., 150., 75., 30.)), + (PneumaticCylinder (output[self.OUTPUT_LOWER_CLAMP_1_CLOSE], + None, scheduler, 0., 30., 150., 75., 30.), + PneumaticCylinder (output[self.OUTPUT_LOWER_CLAMP_2_CLOSE], + None, scheduler, 0., 30., 150., 75., 30.)), contact[0:4], - PneumaticCylinder (output[4], output[5], scheduler, + PneumaticCylinder (output[self.OUTPUT_UPPER_CLAMP_DOWN], + output[self.OUTPUT_UPPER_CLAMP_UP], scheduler, 0., 1., 1., 1., 1., contact[4], contact[5]), - PneumaticCylinder (output[3], output[2], scheduler, + PneumaticCylinder (output[self.OUTPUT_UPPER_CLAMP_IN], + output[self.OUTPUT_UPPER_CLAMP_OUT], scheduler, 0., 1., 1., 1., 0.), - PneumaticCylinder (None, output[1], scheduler, - 0., 30., 150., 75., 30.), - PneumaticCylinder (output[7], output[6], scheduler, + PneumaticCylinder (None, output[self.OUTPUT_UPPER_CLAMP_OPEN], + scheduler, 0., 30., 150., 75., 30.), + PneumaticCylinder (output[self.OUTPUT_DOOR_CLOSE], + output[self.OUTPUT_DOOR_OPEN], scheduler, 0., 1., 1., 1., 1., contact[7], contact[6]) ) def distance_sensor_exclude (o): -- cgit v1.2.3