Changeset 430
- Timestamp:
- 02/25/09 23:33:19 (3 years ago)
- Location:
- trunk/software/rb
- Files:
-
- 5 modified
-
controller.py (modified) (1 diff)
-
gui/gui.glade (modified) (5 diffs)
-
gui/gui.py (modified) (1 diff)
-
gui/gui.xml (modified) (4 diffs)
-
gui/speedgraph.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/software/rb/controller.py
r429 r430 9 9 self.drive = rb.drive.Drive(rbconfig.left_motor_port, 10 10 rbconfig.right_motor_port) 11 12 def set_mode(self, mode): 11 13 ''' 12 14 Set the current mode. Override this method in a subclass -
trunk/software/rb/gui/gui.glade
r428 r430 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 Wed Feb 25 2 0:07:542009 -->3 <!--Generated with glade3 3.4.5 on Wed Feb 25 23:31:38 2009 --> 4 4 <glade-interface> 5 5 <widget class="GtkWindow" id="window"> … … 59 59 </child> 60 60 <child> 61 <widget class="GtkVBox" id=" speed_body">61 <widget class="GtkVBox" id="drive_body"> 62 62 <property name="visible">True</property> 63 63 <child> … … 83 83 <property name="visible">True</property> 84 84 <child> 85 <widget class="GtkEntry" id="gain_value_1"> 86 <property name="visible">True</property> 87 <property name="can_focus">True</property> 85 <widget class="GtkLabel" id="gain_label_k"> 86 <property name="visible">True</property> 87 <property name="label" translatable="yes">k_p</property> 88 <property name="use_underline">True</property> 89 <property name="mnemonic_widget">gain_value_kp</property> 88 90 </widget> 89 91 <packing> 90 92 <property name="expand">False</property> 91 </packing> 92 </child> 93 <child> 94 <widget class="GtkEntry" id="gain_value_2"> 95 <property name="visible">True</property> 96 <property name="can_focus">True</property> 93 <property name="padding">4</property> 94 </packing> 95 </child> 96 <child> 97 <widget class="GtkSpinButton" id="gain_value_kp"> 98 <property name="visible">True</property> 99 <property name="can_focus">True</property> 100 <property name="width_chars">5</property> 101 <property name="adjustment">0 -30000 30000 1 10 10</property> 102 </widget> 103 <packing> 104 <property name="position">1</property> 105 </packing> 106 </child> 107 <child> 108 <widget class="GtkLabel" id="gain_label_ki"> 109 <property name="visible">True</property> 110 <property name="label" translatable="yes">k_i</property> 111 <property name="use_underline">True</property> 112 <property name="mnemonic_widget">gain_value_ki</property> 97 113 </widget> 98 114 <packing> 99 115 <property name="expand">False</property> 100 <property name="position">1</property> 101 </packing> 102 </child> 103 <child> 104 <widget class="GtkEntry" id="gain_value_3"> 105 <property name="visible">True</property> 106 <property name="can_focus">True</property> 116 <property name="padding">3</property> 117 <property name="position">2</property> 118 </packing> 119 </child> 120 <child> 121 <widget class="GtkSpinButton" id="gain_value_ki"> 122 <property name="visible">True</property> 123 <property name="can_focus">True</property> 124 <property name="width_chars">5</property> 125 <property name="adjustment">0 -30000 30000 1 10 10</property> 126 </widget> 127 <packing> 128 <property name="position">3</property> 129 </packing> 130 </child> 131 <child> 132 <widget class="GtkLabel" id="gain_label_kd"> 133 <property name="visible">True</property> 134 <property name="label" translatable="yes">k_d</property> 135 <property name="use_underline">True</property> 136 <property name="mnemonic_widget">gain_value_kp</property> 107 137 </widget> 108 138 <packing> 109 139 <property name="expand">False</property> 110 <property name="position">2</property> 111 </packing> 112 </child> 113 <child> 114 <widget class="GtkComboBox" id="gain_set_pick"> 115 <property name="visible">True</property> 116 <property name="items" translatable="yes">Left 117 Right 118 Both</property> 119 </widget> 120 <packing> 121 <property name="position">3</property> 122 </packing> 123 </child> 124 <child> 125 <widget class="GtkButton" id="gain_button"> 126 <property name="visible">True</property> 127 <property name="can_focus">True</property> 128 <property name="receives_default">True</property> 129 <property name="label" translatable="yes">Set Gains</property> 130 <property name="response_id">0</property> 131 <signal name="activate" handler="gain_activate_cb"/> 132 </widget> 133 <packing> 134 <property name="expand">False</property> 140 <property name="padding">3</property> 135 141 <property name="position">4</property> 136 142 </packing> 137 143 </child> 138 144 <child> 139 <widget class="GtkButton" id="gain_eeprom_button"> 140 <property name="visible">True</property> 141 <property name="can_focus">True</property> 142 <property name="receives_default">True</property> 143 <property name="label" translatable="yes">Write to EEPROM</property> 144 <property name="response_id">0</property> 145 <signal name="activate" handler="gain_eeprom_write_cb"/> 145 <widget class="GtkSpinButton" id="gain_value_kd"> 146 <property name="visible">True</property> 147 <property name="can_focus">True</property> 148 <property name="width_chars">5</property> 149 <property name="adjustment">0 -30000 30000 1 10 10</property> 146 150 </widget> 147 151 <packing> … … 155 159 </packing> 156 160 </child> 161 <child> 162 <widget class="GtkHBox" id="hbox2"> 163 <property name="visible">True</property> 164 <child> 165 <widget class="GtkCheckButton" id="gain_left_check"> 166 <property name="visible">True</property> 167 <property name="can_focus">True</property> 168 <property name="label" translatable="yes">Set Left</property> 169 <property name="response_id">0</property> 170 <property name="active">True</property> 171 <property name="draw_indicator">True</property> 172 </widget> 173 </child> 174 <child> 175 <widget class="GtkCheckButton" id="gain_right_check"> 176 <property name="visible">True</property> 177 <property name="can_focus">True</property> 178 <property name="label" translatable="yes">Set Right</property> 179 <property name="response_id">0</property> 180 <property name="active">True</property> 181 <property name="draw_indicator">True</property> 182 </widget> 183 <packing> 184 <property name="position">1</property> 185 </packing> 186 </child> 187 <child> 188 <widget class="GtkButton" id="gain_button"> 189 <property name="visible">True</property> 190 <property name="can_focus">True</property> 191 <property name="receives_default">True</property> 192 <property name="label" translatable="yes">Set Gains</property> 193 <property name="response_id">0</property> 194 <signal name="clicked" handler="gain_set_cb"/> 195 </widget> 196 <packing> 197 <property name="position">2</property> 198 </packing> 199 </child> 200 <child> 201 <widget class="GtkButton" id="gain_eeprom_button"> 202 <property name="visible">True</property> 203 <property name="can_focus">True</property> 204 <property name="receives_default">True</property> 205 <property name="label" translatable="yes">Write to EEPROM</property> 206 <property name="response_id">0</property> 207 <signal name="clicked" handler="gain_eeprom_write_cb"/> 208 </widget> 209 <packing> 210 <property name="position">3</property> 211 </packing> 212 </child> 213 </widget> 214 <packing> 215 <property name="expand">False</property> 216 <property name="position">3</property> 217 </packing> 218 </child> 157 219 </widget> 158 220 <packing> … … 161 223 </child> 162 224 <child> 163 <widget class="GtkLabel" id="speed_label"> 164 <property name="visible">True</property> 165 <property name="label" translatable="yes">Speed</property> 225 <widget class="GtkLabel" id="drive_label"> 226 <property name="visible">True</property> 227 <property name="label" translatable="yes">Drive</property> 228 <property name="justify">GTK_JUSTIFY_FILL</property> 166 229 </widget> 167 230 <packing> -
trunk/software/rb/gui/gui.py
r425 r430 88 88 return True 89 89 90 def gain_set_cb(self, widget=None, data=None): 91 ''' 92 Callback to set the gains on the motor controllers. 93 ''' 94 kp = int(self.builder.get_object("gain_value_kp").get_value()) 95 ki = int(self.builder.get_object("gain_value_ki").get_value()) 96 kd = int(self.builder.get_object("gain_value_kd").get_value()) 97 gains = (kp, ki, kd) 98 99 left = gains if self.builder.get_object("gain_left_check").get_active() else None 100 right = gains if self.builder.get_object("gain_right_check").get_active() else None 101 if left or right: 102 self.drive.setgain(left, right) 103 104 def gain_eeprom_write_cb(self, widget=None, data=None): 105 self.drive.eewrite() 106 90 107 # utilities 91 108 def set_speed(self, lspeed, rspeed): -
trunk/software/rb/gui/gui.xml
r428 r430 1 1 <?xml version="1.0"?> 2 <!--Generated with glade3 3.4.5 on Wed Feb 25 2 0:07:542009 -->2 <!--Generated with glade3 3.4.5 on Wed Feb 25 23:31:38 2009 --> 3 3 <interface> 4 <object class="GtkListStore" id="model1"> 5 <columns> 6 <column type="gchararray"/> 7 </columns> 8 <data> 9 <row> 10 <col id="0">Left</col> 11 </row> 12 <row> 13 <col id="0">Right</col> 14 </row> 15 <row> 16 <col id="0">Both</col> 17 </row> 18 </data> 4 <object class="GtkAdjustment" id="adjustment1"> 5 <property name="upper">30000</property> 6 <property name="lower">-30000</property> 7 <property name="page_increment">10</property> 8 <property name="step_increment">1</property> 9 <property name="page_size">10</property> 10 <property name="value">0</property> 11 </object> 12 <object class="GtkAdjustment" id="adjustment2"> 13 <property name="upper">30000</property> 14 <property name="lower">-30000</property> 15 <property name="page_increment">10</property> 16 <property name="step_increment">1</property> 17 <property name="page_size">10</property> 18 <property name="value">0</property> 19 </object> 20 <object class="GtkAdjustment" id="adjustment3"> 21 <property name="upper">30000</property> 22 <property name="lower">-30000</property> 23 <property name="page_increment">10</property> 24 <property name="step_increment">1</property> 25 <property name="page_size">10</property> 26 <property name="value">0</property> 19 27 </object> 20 28 <object class="GtkWindow" id="window"> … … 69 77 </child> 70 78 <child> 71 <object class="GtkVBox" id=" speed_body">79 <object class="GtkVBox" id="drive_body"> 72 80 <property name="visible">True</property> 73 81 <child> … … 93 101 <property name="visible">True</property> 94 102 <child> 95 <object class="GtkEntry" id="gain_value_1"> 96 <property name="visible">True</property> 97 <property name="can_focus">True</property> 103 <object class="GtkLabel" id="gain_label_k"> 104 <property name="visible">True</property> 105 <property name="label" translatable="yes">k_p</property> 106 <property name="use_underline">True</property> 107 <property name="mnemonic_widget">gain_value_kp</property> 98 108 </object> 99 109 <packing> 100 110 <property name="expand">False</property> 101 </packing> 102 </child> 103 <child> 104 <object class="GtkEntry" id="gain_value_2"> 105 <property name="visible">True</property> 106 <property name="can_focus">True</property> 111 <property name="padding">4</property> 112 </packing> 113 </child> 114 <child> 115 <object class="GtkSpinButton" id="gain_value_kp"> 116 <property name="visible">True</property> 117 <property name="can_focus">True</property> 118 <property name="width_chars">5</property> 119 <property name="adjustment">adjustment1</property> 120 </object> 121 <packing> 122 <property name="position">1</property> 123 </packing> 124 </child> 125 <child> 126 <object class="GtkLabel" id="gain_label_ki"> 127 <property name="visible">True</property> 128 <property name="label" translatable="yes">k_i</property> 129 <property name="use_underline">True</property> 130 <property name="mnemonic_widget">gain_value_ki</property> 107 131 </object> 108 132 <packing> 109 133 <property name="expand">False</property> 110 <property name="position">1</property> 111 </packing> 112 </child> 113 <child> 114 <object class="GtkEntry" id="gain_value_3"> 115 <property name="visible">True</property> 116 <property name="can_focus">True</property> 134 <property name="padding">3</property> 135 <property name="position">2</property> 136 </packing> 137 </child> 138 <child> 139 <object class="GtkSpinButton" id="gain_value_ki"> 140 <property name="visible">True</property> 141 <property name="can_focus">True</property> 142 <property name="width_chars">5</property> 143 <property name="adjustment">adjustment2</property> 144 </object> 145 <packing> 146 <property name="position">3</property> 147 </packing> 148 </child> 149 <child> 150 <object class="GtkLabel" id="gain_label_kd"> 151 <property name="visible">True</property> 152 <property name="label" translatable="yes">k_d</property> 153 <property name="use_underline">True</property> 154 <property name="mnemonic_widget">gain_value_kp</property> 117 155 </object> 118 156 <packing> 119 157 <property name="expand">False</property> 120 <property name="position">2</property> 121 </packing> 122 </child> 123 <child> 124 <object class="GtkComboBox" id="gain_set_pick"> 125 <property name="visible">True</property> 126 <property name="model">model1</property> 127 <child> 128 <object class="GtkCellRendererText" id="renderer1"/> 129 <attributes> 130 <attribute name="text">0</attribute> 131 </attributes> 132 </child> 133 </object> 134 <packing> 135 <property name="position">3</property> 136 </packing> 137 </child> 138 <child> 139 <object class="GtkButton" id="gain_button"> 140 <property name="visible">True</property> 141 <property name="can_focus">True</property> 142 <property name="receives_default">True</property> 143 <property name="label" translatable="yes">Set Gains</property> 144 <signal handler="gain_activate_cb" name="activate"/> 145 </object> 146 <packing> 147 <property name="expand">False</property> 158 <property name="padding">3</property> 148 159 <property name="position">4</property> 149 160 </packing> 150 161 </child> 151 162 <child> 152 <object class="GtkButton" id="gain_eeprom_button"> 153 <property name="visible">True</property> 154 <property name="can_focus">True</property> 155 <property name="receives_default">True</property> 156 <property name="label" translatable="yes">Write to EEPROM</property> 157 <signal handler="gain_eeprom_write_cb" name="activate"/> 163 <object class="GtkSpinButton" id="gain_value_kd"> 164 <property name="visible">True</property> 165 <property name="can_focus">True</property> 166 <property name="width_chars">5</property> 167 <property name="adjustment">adjustment3</property> 158 168 </object> 159 169 <packing> … … 167 177 </packing> 168 178 </child> 179 <child> 180 <object class="GtkHBox" id="hbox2"> 181 <property name="visible">True</property> 182 <child> 183 <object class="GtkCheckButton" id="gain_left_check"> 184 <property name="visible">True</property> 185 <property name="can_focus">True</property> 186 <property name="label" translatable="yes">Set Left</property> 187 <property name="active">True</property> 188 <property name="draw_indicator">True</property> 189 </object> 190 </child> 191 <child> 192 <object class="GtkCheckButton" id="gain_right_check"> 193 <property name="visible">True</property> 194 <property name="can_focus">True</property> 195 <property name="label" translatable="yes">Set Right</property> 196 <property name="active">True</property> 197 <property name="draw_indicator">True</property> 198 </object> 199 <packing> 200 <property name="position">1</property> 201 </packing> 202 </child> 203 <child> 204 <object class="GtkButton" id="gain_button"> 205 <property name="visible">True</property> 206 <property name="can_focus">True</property> 207 <property name="receives_default">True</property> 208 <property name="label" translatable="yes">Set Gains</property> 209 <signal handler="gain_set_cb" name="clicked"/> 210 </object> 211 <packing> 212 <property name="position">2</property> 213 </packing> 214 </child> 215 <child> 216 <object class="GtkButton" id="gain_eeprom_button"> 217 <property name="visible">True</property> 218 <property name="can_focus">True</property> 219 <property name="receives_default">True</property> 220 <property name="label" translatable="yes">Write to EEPROM</property> 221 <signal handler="gain_eeprom_write_cb" name="clicked"/> 222 </object> 223 <packing> 224 <property name="position">3</property> 225 </packing> 226 </child> 227 </object> 228 <packing> 229 <property name="expand">False</property> 230 <property name="position">3</property> 231 </packing> 232 </child> 169 233 </object> 170 234 </child> 171 235 <child type="tab"> 172 <object class="GtkLabel" id="speed_label"> 173 <property name="visible">True</property> 174 <property name="label" translatable="yes">Speed</property> 236 <object class="GtkLabel" id="drive_label"> 237 <property name="visible">True</property> 238 <property name="label" translatable="yes">Drive</property> 239 <property name="justify">GTK_JUSTIFY_FILL</property> 175 240 </object> 176 241 <packing> -
trunk/software/rb/gui/speedgraph.py
r425 r430 48 48 center_y = a.height / 2.0 49 49 50 start_x = a.width * (1 - len(self.ldata) / float(DATA_WINDOW)) 50 if len(self.ldata) < DATA_WINDOW: 51 start_x = a.width * (1 - len(self.ldata) / float(DATA_WINDOW)) 52 else: 53 start_x = 0 51 54 step_x = a.width / float(DATA_WINDOW) 52 55 self.draw_line(context, center_y, start_x, step_x, (0, 255, 0), self.ldata[-DATA_WINDOW:])

