Rose-Hulman Robotics Team

Changeset 430

Show
Ignore:
Timestamp:
02/25/09 23:33:19 (3 years ago)
Author:
mosttw
Message:

Completed gain modification GUI

Location:
trunk/software/rb
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/software/rb/controller.py

    r429 r430  
    99                self.drive = rb.drive.Drive(rbconfig.left_motor_port, 
    1010                                            rbconfig.right_motor_port) 
     11         
     12        def set_mode(self, mode): 
    1113                ''' 
    1214                Set the current mode.  Override this method in a subclass 
  • trunk/software/rb/gui/gui.glade

    r428 r430  
    11<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    22<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> 
    3 <!--Generated with glade3 3.4.5 on Wed Feb 25 20:07:54 2009 --> 
     3<!--Generated with glade3 3.4.5 on Wed Feb 25 23:31:38 2009 --> 
    44<glade-interface> 
    55  <widget class="GtkWindow" id="window"> 
     
    5959            </child> 
    6060            <child> 
    61               <widget class="GtkVBox" id="speed_body"> 
     61              <widget class="GtkVBox" id="drive_body"> 
    6262                <property name="visible">True</property> 
    6363                <child> 
     
    8383                    <property name="visible">True</property> 
    8484                    <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> 
    8890                      </widget> 
    8991                      <packing> 
    9092                        <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> 
    97113                      </widget> 
    98114                      <packing> 
    99115                        <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> 
    107137                      </widget> 
    108138                      <packing> 
    109139                        <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> 
    135141                        <property name="position">4</property> 
    136142                      </packing> 
    137143                    </child> 
    138144                    <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> 
    146150                      </widget> 
    147151                      <packing> 
     
    155159                  </packing> 
    156160                </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> 
    157219              </widget> 
    158220              <packing> 
     
    161223            </child> 
    162224            <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> 
    166229              </widget> 
    167230              <packing> 
  • trunk/software/rb/gui/gui.py

    r425 r430  
    8888                return True 
    8989 
     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 
    90107        # utilities 
    91108        def set_speed(self, lspeed, rspeed): 
  • trunk/software/rb/gui/gui.xml

    r428 r430  
    11<?xml version="1.0"?> 
    2 <!--Generated with glade3 3.4.5 on Wed Feb 25 20:07:54 2009 --> 
     2<!--Generated with glade3 3.4.5 on Wed Feb 25 23:31:38 2009 --> 
    33<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> 
    1927  </object> 
    2028  <object class="GtkWindow" id="window"> 
     
    6977            </child> 
    7078            <child> 
    71               <object class="GtkVBox" id="speed_body"> 
     79              <object class="GtkVBox" id="drive_body"> 
    7280                <property name="visible">True</property> 
    7381                <child> 
     
    93101                    <property name="visible">True</property> 
    94102                    <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> 
    98108                      </object> 
    99109                      <packing> 
    100110                        <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> 
    107131                      </object> 
    108132                      <packing> 
    109133                        <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> 
    117155                      </object> 
    118156                      <packing> 
    119157                        <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> 
    148159                        <property name="position">4</property> 
    149160                      </packing> 
    150161                    </child> 
    151162                    <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> 
    158168                      </object> 
    159169                      <packing> 
     
    167177                  </packing> 
    168178                </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> 
    169233              </object> 
    170234            </child> 
    171235            <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> 
    175240              </object> 
    176241              <packing> 
  • trunk/software/rb/gui/speedgraph.py

    r425 r430  
    4848                center_y = a.height / 2.0 
    4949                 
    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 
    5154                step_x = a.width / float(DATA_WINDOW) 
    5255                self.draw_line(context, center_y, start_x, step_x, (0, 255, 0), self.ldata[-DATA_WINDOW:])