summaryrefslogtreecommitdiff
path: root/digital
diff options
context:
space:
mode:
Diffstat (limited to 'digital')
-rw-r--r--digital/ai/tools/apbirthday.py49
-rw-r--r--digital/ai/tools/test_simu.py3
-rw-r--r--digital/io-hub/tools/io_hub/init.py2
-rw-r--r--digital/io-hub/tools/io_hub/mex.py5
4 files changed, 58 insertions, 1 deletions
diff --git a/digital/ai/tools/apbirthday.py b/digital/ai/tools/apbirthday.py
new file mode 100644
index 00000000..13f06959
--- /dev/null
+++ b/digital/ai/tools/apbirthday.py
@@ -0,0 +1,49 @@
+import asserv
+import asserv.init
+import io_hub
+import io_hub.init
+
+from proto.popen_io import PopenIO
+import math
+import subprocess
+
+class Robot:
+ """APBirthday robot instance."""
+
+ import simu.model.table_eurobot2013 as table_model
+ import simu.view.table_eurobot2013 as table_view
+
+ import simu.robots.apbirthday.link.bag as robot_link
+ import simu.robots.apbirthday.model.bag as robot_model
+ import simu.robots.apbirthday.view.bag as robot_view
+
+ # TODO: use right position.
+ robot_start_pos = {
+ False: (250, 2000 - 250, math.radians (0)),
+ True: (3000 - 250, 2000 - 250, math.radians (180))
+ }
+
+ client_nb = 3
+
+ def __init__ (self, proto_time, instance = 'robot0'):
+ self.instance = instance
+ def proto (proto_class, cmd, init):
+ cmd = [ s.format (instance = instance) for s in cmd ]
+ return proto_class (PopenIO (cmd), proto_time, **init)
+ def prog (cmd):
+ cmd = [ s.format (instance = instance) for s in cmd ]
+ subprocess.Popen (cmd)
+ # TODO: use apbirthday model for asserv.
+ asserv_cmd = ('../../mimot/src/asserv/asserv.host',
+ '-i{instance}:asserv0', '-m9', 'guybrush')
+ io_hub_cmd = ('../../io-hub/src/apbirthday/apbirthday.host',
+ '-i{instance}:io0')
+ beacon_stub_cmd = ('../../beacon/src/stub/simu_stub.host',
+ '-i{instance}:beacon0')
+ self.asserv = proto (asserv.Proto, asserv_cmd,
+ asserv.init.host['guybrush'])
+ self.io = proto (io_hub.ProtoGuybrush, io_hub_cmd,
+ io_hub.init.host['apbirthday'])
+ self.beacon_stub = prog (beacon_stub_cmd)
+ self.protos = (self.asserv, self.io)
+
diff --git a/digital/ai/tools/test_simu.py b/digital/ai/tools/test_simu.py
index 330541e2..acb89c5d 100644
--- a/digital/ai/tools/test_simu.py
+++ b/digital/ai/tools/test_simu.py
@@ -142,6 +142,9 @@ def run (default_robot, test_class = TestSimu):
elif options.robot == 'guybrush':
import guybrush
robot = guybrush.Robot
+ elif options.robot == 'apbirthday':
+ import apbirthday
+ robot = apbirthday.Robot
else:
parser.error ("unknown robot")
app = test_class (robot, options.robot_nb)
diff --git a/digital/io-hub/tools/io_hub/init.py b/digital/io-hub/tools/io_hub/init.py
index c9aae2c9..59be1523 100644
--- a/digital/io-hub/tools/io_hub/init.py
+++ b/digital/io-hub/tools/io_hub/init.py
@@ -4,5 +4,7 @@ host = {
),
'guybrush': dict (
),
+ 'apbirthday': dict (
+ ),
}
target = host
diff --git a/digital/io-hub/tools/io_hub/mex.py b/digital/io-hub/tools/io_hub/mex.py
index ba141b99..9ad38a69 100644
--- a/digital/io-hub/tools/io_hub/mex.py
+++ b/digital/io-hub/tools/io_hub/mex.py
@@ -25,6 +25,7 @@
from utils.observable import Observable
import simu.mex.msg
+import simu.link.mex_gpio
ADC_NB = 8
@@ -253,7 +254,7 @@ class Mex:
self.notify ()
def __init__ (self, node, instance = 'io-hub0',
- pwm_nb = 0, contact_nb = 0, output_nb = 0, codebar = False):
+ pwm_nb = 0, contact_nb = 0, output_nb = 0, gpios = False, codebar = False):
self.adc = tuple (self.ADC (node, instance, i) for i in range (0, ADC_NB))
if pwm_nb:
self.pwm = tuple (self.PWM () for i in range (0, pwm_nb))
@@ -266,6 +267,8 @@ class Mex:
self.output = tuple (self.Output () for i in range (0, output_nb))
self.__output_pack = self.Output.Pack (node, instance,
self.output)
+ if gpios:
+ self.gpios = simu.link.mex_gpio.MexGpio.Pack (node, instance)
if codebar:
self.__codebar_pack = self.Codebar.Pack (node, instance)
self.codebar = tuple (self.Codebar (self.__codebar_pack, i)