Changeset 425
- Timestamp:
- 02/25/09 19:01:28 (3 years ago)
- Location:
- trunk/software/rb
- Files:
-
- 1 added
- 6 modified
-
controller.py (modified) (1 diff)
-
gui/analog.py (modified) (4 diffs)
-
gui/compass.py (modified) (2 diffs)
-
gui/gui.glade (modified) (2 diffs)
-
gui/gui.py (modified) (4 diffs)
-
gui/gui.xml (modified) (2 diffs)
-
gui/speedgraph.py (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/software/rb/controller.py
r420 r425 4 4 class Controller(): 5 5 def __init__(self): 6 #self.drive = rb.drive.FakeDrive(rbconfig.left_motor_port, 7 # rbconfig.right_motor_port) 8 self.drive = rb.drive.Drive(rbconfig.left_motor_port, 9 rbconfig.right_motor_port) 6 self.mode = "stop" 7 self.drive = rb.drive.FakeDrive(rbconfig.left_motor_port, 8 rbconfig.right_motor_port) 9 #~ self.drive = rb.drive.Drive(rbconfig.left_motor_port, 10 #~ rbconfig.right_motor_port) 11 12 def set_mode(self, mode): 13 ''' 14 Set the current mode. Override this method in a subclass 15 to do something useful. 16 ''' 17 self.mode = mode -
trunk/software/rb/gui/analog.py
r422 r425 1 from math import pi 1 2 import gtk 2 3 … … 19 20 def redraw(self, event): 20 21 self.queue_draw() 21 if self.controller.drive.left.target == 0 and self.controller.drive.right.target == 0:22 self.builder.get_object("stop").set_active(True)23 22 24 23 # /\ … … 31 30 # -1 _\/_ -1 32 31 def expose_cb(self, da, event): 33 from math import pi34 32 alloc = self.get_allocation() 35 33 w, h = alloc.width, alloc.height … … 47 45 x = float(self.controller.drive.left.target - self.controller.drive.right.target) 48 46 y = float(self.controller.drive.left.target + self.controller.drive.right.target) 49 log_debug("left=%f, right=%f, x=%f, y=%f" %50 (self.controller.drive.left.target, self.controller.drive.right.target,51 ( x/4+0.5), (-y/4+0.5)))47 #~ log_debug("left=%f, right=%f, x=%f, y=%f" % 48 #~ (self.controller.drive.left.target, self.controller.drive.right.target, 49 #~ ( x/4+0.5), (-y/4+0.5))) 52 50 x = ( x/4+0.5) * w 53 51 y = (-y/4+0.5) * h -
trunk/software/rb/gui/compass.py
r402 r425 75 75 return False 76 76 77 def queue_redraw(self):78 alloc = self.allocation79 self.queue_draw_area(alloc.x, alloc.y, alloc.width, alloc.height)80 81 77 def new_direction(self, color, direction): 82 78 ''' … … 107 103 def update(self, new_direction): 108 104 self.direction = new_direction 109 self.compass_widget.queue_ redraw()105 self.compass_widget.queue_draw() 110 106 111 107 -
trunk/software/rb/gui/gui.glade
r403 r425 1 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 2 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> 3 <!--Generated with glade3 3.4.5 on Thu Feb 19 03:42:002009 -->3 <!--Generated with glade3 3.4.5 on Wed Feb 25 17:23:04 2009 --> 4 4 <glade-interface> 5 5 <widget class="GtkWindow" id="window"> … … 55 55 <property name="type">tab</property> 56 56 <property name="position">1</property> 57 <property name="tab_fill">False</property> 58 </packing> 59 </child> 60 <child> 61 <widget class="GtkVBox" id="speed_vbox"> 62 <property name="visible">True</property> 63 <child> 64 <widget class="GtkAlignment" id="speed_graph"> 65 <property name="visible">True</property> 66 <child> 67 <placeholder/> 68 </child> 69 </widget> 70 </child> 71 <child> 72 <widget class="GtkLabel" id="speed_status_label"> 73 <property name="visible">True</property> 74 <property name="ellipsize">PANGO_ELLIPSIZE_END</property> 75 </widget> 76 <packing> 77 <property name="expand">False</property> 78 <property name="position">1</property> 79 </packing> 80 </child> 81 </widget> 82 <packing> 83 <property name="position">2</property> 84 </packing> 85 </child> 86 <child> 87 <widget class="GtkLabel" id="speed_label"> 88 <property name="visible">True</property> 89 <property name="label" translatable="yes">Speed</property> 90 </widget> 91 <packing> 92 <property name="type">tab</property> 93 <property name="position">2</property> 57 94 <property name="tab_fill">False</property> 58 95 </packing> -
trunk/software/rb/gui/gui.py
r424 r425 8 8 from rb.gui.compass import CompassWidget 9 9 from rb.gui.analog import AnalogWidget 10 from rb.gui.speedgraph import SpeedGraph 10 11 11 12 import os.path … … 21 22 def __init__(self): 22 23 Controller.__init__(self) 23 24 24 gobject.threads_init() 25 25 … … 43 43 44 44 # Add widgets 45 self.analog = AnalogWidget(self)45 self.analog = AnalogWidget(self) 46 46 self.compass = CompassWidget() 47 self.speed_graph = SpeedGraph(self.drive) 47 48 self.builder.get_object("analog_body").add(self.analog) 48 49 self.builder.get_object("compass_body").add(self.compass) 50 self.builder.get_object("speed_graph").add(self.speed_graph) 49 51 50 52 self.window.show_all() 51 53 gtk.main() 52 54 55 def set_mode(self, mode): 56 Controller.set_mode(self, mode) # set the mode attribute 57 # TODO: disable manual motor control when in autonomous mode 58 if mode == 'stop': 59 self.set_speed(0, 0) 60 elif mode == 'autonomous': 61 print "Autonomous mode not yet implemented" 62 elif mode == 'manual': 63 print "Switching to manual mode" 64 53 65 def key_press_cb(self, widget, event): 54 nb = self.builder.get_object("notebook")55 tab = nb.get_current_page()66 nb = self.builder.get_object("notebook") 67 tab = nb.get_current_page() 56 68 57 69 # E-Stop 58 if event.keyval in (gtk.keysyms.Escape, gtk.keysyms.space):59 self.set_ speed(0, 0)70 if event.keyval in (gtk.keysyms.Escape, gtk.keysyms.space): 71 self.set_mode('stop') 60 72 61 73 # Switch tabs … … 88 100 89 101 def mode_cb(self, widget=None, data=None): 90 log_debug("gui: Stopping motors") 91 self.set_speed(0, 0) 102 ''' 103 Callback for mode selection toggle buttons. 104 ''' 105 new_mode = { 106 'mode_stop': 'stop', 107 'mode_manual': 'manual', 108 'mode_auto': 'autonomous', 109 }[widget.get_name()] 110 self.set_mode(new_mode) -
trunk/software/rb/gui/gui.xml
r403 r425 1 1 <?xml version="1.0"?> 2 <!--Generated with glade3 3.4.5 on Thu Feb 19 03:42:002009 -->2 <!--Generated with glade3 3.4.5 on Wed Feb 25 17:23:04 2009 --> 3 3 <interface> 4 4 <object class="GtkWindow" id="window"> … … 49 49 <packing> 50 50 <property name="position">1</property> 51 <property name="tab_fill">False</property> 52 </packing> 53 </child> 54 <child> 55 <object class="GtkVBox" id="speed_vbox"> 56 <property name="visible">True</property> 57 <child> 58 <object class="GtkAlignment" id="speed_graph"> 59 <property name="visible">True</property> 60 <child> 61 <placeholder/> 62 </child> 63 </object> 64 </child> 65 <child> 66 <object class="GtkLabel" id="speed_status_label"> 67 <property name="visible">True</property> 68 <property name="ellipsize">PANGO_ELLIPSIZE_END</property> 69 </object> 70 <packing> 71 <property name="expand">False</property> 72 <property name="position">1</property> 73 </packing> 74 </child> 75 </object> 76 </child> 77 <child type="tab"> 78 <object class="GtkLabel" id="speed_label"> 79 <property name="visible">True</property> 80 <property name="label" translatable="yes">Speed</property> 81 </object> 82 <packing> 83 <property name="position">2</property> 51 84 <property name="tab_fill">False</property> 52 85 </packing>

