From 49f4a007eebbf5bc1ac3a9c2c86d742963547875 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Fri, 15 Mar 2013 20:03:51 +0100 Subject: digital/ai, digital/io-hub, host/simu/robots: add basic APBirthday simulation --- digital/ai/tools/apbirthday.py | 49 +++++++++++++++++++++++++++++++++++++ digital/ai/tools/test_simu.py | 3 +++ digital/io-hub/tools/io_hub/init.py | 2 ++ digital/io-hub/tools/io_hub/mex.py | 5 +++- 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 digital/ai/tools/apbirthday.py (limited to 'digital') 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) -- cgit v1.2.3