From 2e95e3a33bcb34aeec66551503c692c1cb80ab61 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 9 Feb 2009 20:05:30 +0100 Subject: * all python: - changed tabs to spaces. --- host/inter/inter_node.py | 266 +++++++++++++++++++++++------------------------ 1 file changed, 133 insertions(+), 133 deletions(-) (limited to 'host/inter/inter_node.py') diff --git a/host/inter/inter_node.py b/host/inter/inter_node.py index 96648c6f..12aaee6e 100644 --- a/host/inter/inter_node.py +++ b/host/inter/inter_node.py @@ -49,160 +49,160 @@ class InterNode (Inter): IO_PATH = 0xb4 def __init__ (self): - Inter.__init__ (self) - self.node = Node () - self.node.register (0xa0, self.handle_asserv_0) - self.node.register (0xa8, self.handle_asserv_8) - self.node.register (self.IO_JACK, self.handle_IO_JACK) - self.node.register (self.IO_COLOR, self.handle_IO_COLOR) - self.node.register (self.IO_SERVO, self.handle_IO_SERVO) - self.node.register (self.IO_SHARPS, self.handle_IO_SHARPS) - self.node.register (self.IO_PATH, self.handle_IO_PATH) - self.tk.createfilehandler (self.node, READABLE, self.read) - self.date = 0 - self.synced = True - self.step_after = None - self.step_time = None - self.obstacles = [ ] - self.dist_sensors = [ - DistSensor (self.tableview.robot, (150, 127), 0, 800), - DistSensor (self.tableview.robot, (150, 0), 0, 800), - DistSensor (self.tableview.robot, (150, -127), 0, 800), - DistSensor (self.tableview.robot, (-70, 100), pi, 800), - DistSensor (self.tableview.robot, (-70, -100), pi, 800), - ] - for s in self.dist_sensors: - s.obstacles = self.obstacles - s.hide = True - self.tableview.robot.drawn.extend (self.dist_sensors) - self.path = Path (self.tableview.table) - self.tableview.drawn.append (self.path) - self.tableview + Inter.__init__ (self) + self.node = Node () + self.node.register (0xa0, self.handle_asserv_0) + self.node.register (0xa8, self.handle_asserv_8) + self.node.register (self.IO_JACK, self.handle_IO_JACK) + self.node.register (self.IO_COLOR, self.handle_IO_COLOR) + self.node.register (self.IO_SERVO, self.handle_IO_SERVO) + self.node.register (self.IO_SHARPS, self.handle_IO_SHARPS) + self.node.register (self.IO_PATH, self.handle_IO_PATH) + self.tk.createfilehandler (self.node, READABLE, self.read) + self.date = 0 + self.synced = True + self.step_after = None + self.step_time = None + self.obstacles = [ ] + self.dist_sensors = [ + DistSensor (self.tableview.robot, (150, 127), 0, 800), + DistSensor (self.tableview.robot, (150, 0), 0, 800), + DistSensor (self.tableview.robot, (150, -127), 0, 800), + DistSensor (self.tableview.robot, (-70, 100), pi, 800), + DistSensor (self.tableview.robot, (-70, -100), pi, 800), + ] + for s in self.dist_sensors: + s.obstacles = self.obstacles + s.hide = True + self.tableview.robot.drawn.extend (self.dist_sensors) + self.path = Path (self.tableview.table) + self.tableview.drawn.append (self.path) + self.tableview def createWidgets (self): - Inter.createWidgets (self) - self.nowLabel = Label (self.rightFrame, text = 'Now: 0 s') - self.nowLabel.pack () - self.stepButton = Button (self.rightFrame, text = 'Step', - command = self.step) - self.stepButton.pack () - self.stepSizeScale = Scale (self.rightFrame, orient = HORIZONTAL, - from_ = 0.05, to = 1.0, resolution = 0.05) - self.stepSizeScale.pack () - self.playVar = IntVar () - self.playButton = Checkbutton (self.rightFrame, variable = - self.playVar, text = 'Play', command = self.play) - self.playButton.pack () - self.tableview.bind ('<2>', self.place_obstacle) - self.showSensorsVar = IntVar () - self.showSensorsButton = Checkbutton (self.sensorFrame, variable = - self.showSensorsVar, text = 'Show sensors', command = - self.show_sensors) - self.showSensorsButton.pack () + Inter.createWidgets (self) + self.nowLabel = Label (self.rightFrame, text = 'Now: 0 s') + self.nowLabel.pack () + self.stepButton = Button (self.rightFrame, text = 'Step', + command = self.step) + self.stepButton.pack () + self.stepSizeScale = Scale (self.rightFrame, orient = HORIZONTAL, + from_ = 0.05, to = 1.0, resolution = 0.05) + self.stepSizeScale.pack () + self.playVar = IntVar () + self.playButton = Checkbutton (self.rightFrame, variable = + self.playVar, text = 'Play', command = self.play) + self.playButton.pack () + self.tableview.bind ('<2>', self.place_obstacle) + self.showSensorsVar = IntVar () + self.showSensorsButton = Checkbutton (self.sensorFrame, variable = + self.showSensorsVar, text = 'Show sensors', command = + self.show_sensors) + self.showSensorsButton.pack () def step (self): - """Do a step. Signal to the Hub we are ready to wait to the next step - date.""" - self.node.wait_async (self.date - + int (self.stepSizeScale.get () * self.TICK)) - self.synced = False - self.step_after = None - self.step_time = time.time () + """Do a step. Signal to the Hub we are ready to wait to the next step + date.""" + self.node.wait_async (self.date + + int (self.stepSizeScale.get () * self.TICK)) + self.synced = False + self.step_after = None + self.step_time = time.time () def play (self): - """Activate auto-steping.""" - if self.playVar.get (): - if self.step_after is None and self.synced: - self.step () - self.stepButton.configure (state = DISABLED) - else: - if self.step_after is not None: - self.after_cancel (self.step_after) - self.step_after = None - self.stepButton.configure (state = NORMAL) + """Activate auto-steping.""" + if self.playVar.get (): + if self.step_after is None and self.synced: + self.step () + self.stepButton.configure (state = DISABLED) + else: + if self.step_after is not None: + self.after_cancel (self.step_after) + self.step_after = None + self.stepButton.configure (state = NORMAL) def read (self, file, mask): - """Handle event on the Node.""" - self.node.read () - if not self.synced and self.node.sync (): - self.synced = True - self.date = self.node.date - self.nowLabel.configure (text = 'Now: %.2f s' % (self.date - / self.TICK)) - self.update () - if self.playVar.get (): - assert self.step_after is None - next = self.step_time + self.stepSizeScale.get () - delay = next - time.time () - if delay > 0: - self.step_after = self.after (int (delay * 1000), - self.step) - else: - self.step () + """Handle event on the Node.""" + self.node.read () + if not self.synced and self.node.sync (): + self.synced = True + self.date = self.node.date + self.nowLabel.configure (text = 'Now: %.2f s' % (self.date + / self.TICK)) + self.update () + if self.playVar.get (): + assert self.step_after is None + next = self.step_time + self.stepSizeScale.get () + delay = next - time.time () + if delay > 0: + self.step_after = self.after (int (delay * 1000), + self.step) + else: + self.step () def handle_asserv_0 (self, msg): - x, y, a = msg.pop ('hhl') - self.tableview.robot.pos = (x, y) - self.tableview.robot.angle = float (a) / 1024 - self.update (self.tableview.robot) + x, y, a = msg.pop ('hhl') + self.tableview.robot.pos = (x, y) + self.tableview.robot.angle = float (a) / 1024 + self.update (self.tableview.robot) def handle_asserv_8 (self, msg): - a, = msg.pop ('l') - self.actuatorview.arm.angle = float (a) / 1024 - self.update (self.actuatorview.arm) + a, = msg.pop ('l') + self.actuatorview.arm.angle = float (a) / 1024 + self.update (self.actuatorview.arm) def handle_IO_JACK (self, msg): - m = Msg (self.IO_JACK) - m.push ('B', self.jackVar.get ()) - self.node.response (m) + m = Msg (self.IO_JACK) + m.push ('B', self.jackVar.get ()) + self.node.response (m) def handle_IO_COLOR (self, msg): - m = Msg (self.IO_COLOR) - m.push ('B', self.colorVar.get ()) - self.node.response (m) + m = Msg (self.IO_COLOR) + m.push ('B', self.colorVar.get ()) + self.node.response (m) def handle_IO_SERVO (self, msg): - for t in self.actuatorview.rear.traps: - t.pos = float (msg.pop ('B')[0]) / 255 - self.update (self.actuatorview.rear) + for t in self.actuatorview.rear.traps: + t.pos = float (msg.pop ('B')[0]) / 255 + self.update (self.actuatorview.rear) def handle_IO_SHARPS (self, msg): - m = Msg (self.IO_SHARPS) - for i in self.dist_sensors: - d = i.distance or 800 - d /= 10 - if d > 10: - v = 0.000571429 * d*d + -0.0752381 * d + 2.89107 - else: - v = 2.2 / 10 * d - v *= 1024 / 5 - m.push ('H', v) - assert v >= 0 and v < 1024 - self.node.response (m) + m = Msg (self.IO_SHARPS) + for i in self.dist_sensors: + d = i.distance or 800 + d /= 10 + if d > 10: + v = 0.000571429 * d*d + -0.0752381 * d + 2.89107 + else: + v = 2.2 / 10 * d + v *= 1024 / 5 + m.push ('H', v) + assert v >= 0 and v < 1024 + self.node.response (m) def handle_IO_PATH (self, msg): - self.path.path = [ ] - while len (msg) >= 4: - self.path.path.append (msg.pop ('hh')) - self.update (self.path) + self.path.path = [ ] + while len (msg) >= 4: + self.path.path.append (msg.pop ('hh')) + self.update (self.path) def place_obstacle (self, ev): - pos = self.tableview.screen_coord ((ev.x, ev.y)) - if self.obstacles: - self.obstacles[0].pos = pos - else: - self.obstacles.append (Obstacle (self.tableview.table, pos, 150)) - self.tableview.drawn.append (self.obstacles[0]) - self.update (*self.obstacles) - self.update (*self.dist_sensors) - self.update () + pos = self.tableview.screen_coord ((ev.x, ev.y)) + if self.obstacles: + self.obstacles[0].pos = pos + else: + self.obstacles.append (Obstacle (self.tableview.table, pos, 150)) + self.tableview.drawn.append (self.obstacles[0]) + self.update (*self.obstacles) + self.update (*self.dist_sensors) + self.update () def show_sensors (self): - hide = not self.showSensorsVar.get () - for i in self.dist_sensors: - i.hide = hide - self.update (*self.dist_sensors) - self.update () + hide = not self.showSensorsVar.get () + for i in self.dist_sensors: + i.hide = hide + self.update (*self.dist_sensors) + self.update () if __name__ == '__main__': import mex.hub @@ -210,9 +210,9 @@ if __name__ == '__main__': h = mex.hub.Hub (min_clients = 1) fh = utils.forked.Forked (h.wait) try: - app = InterNode () - app.mainloop() + app = InterNode () + app.mainloop() finally: - fh.kill () - import time - time.sleep (1) + fh.kill () + import time + time.sleep (1) -- cgit v1.2.3