Rose-Hulman Robotics Team

Changeset 459

Show
Ignore:
Timestamp:
03/14/09 17:41:06 (3 years ago)
Author:
mosttw
Message:

Added shell to GUI

Location:
trunk/software
Files:
4 modified

Legend:

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

    r458 r459  
    244244                v1 = sin(time.time()) * .05 - random.random() * .01 
    245245                v2 = cos(time.time()) * .05 - random.random() * .01 
    246                 return (self.left.target + v1, self.right.target + v2) 
     246                return ( 
     247                        clip(self.left.target + v1, -1.0, 1.0), 
     248                        clip(self.right.target + v2, -1.0, 1.0) 
     249                ) 
    247250 
    248251 
  • trunk/software/rb/gui/gui.py

    r458 r459  
    33import gtk 
    44 
     5import os.path 
     6from thread import start_new_thread 
     7 
    58import rbconfig 
    6 from rb.core.event   import connect 
     9from rb.shell        import Shell 
    710from rb.core.logging import log_debug, log_info 
    811from rb.controller   import Controller 
     
    1215from rb.transcript import TranscriptLogger 
    1316 
    14 import os.path 
    1517 
    1618# Full path to the GUI definition file 
     
    7173                self.set_navigator('analog') 
    7274                 
     75                start_new_thread(self._run_shell, ()) 
    7376                gtk.main() 
     77         
     78        def _run_shell(self): 
     79                Shell(self).cmdloop() 
     80                gobject.idle_add(gtk.main_quit) 
    7481         
    7582        def process(self, type, data): 
  • trunk/software/rb/shell.py

    r458 r459  
    2828from rb.transcript import TranscriptLogger 
    2929 
    30 class Shell(cmd.Cmd, Controller): 
     30 
     31class Shell(cmd.Cmd): 
    3132        ''' 
    3233        A robot control shell. 
     
    3536        prompt = getattr(rbconfig, 'name', 'robot').lower() + '> ' 
    3637 
    37         def __init__(self): 
     38        def __init__(self, controller): 
     39                self.controller = controller 
    3840                cmd.Cmd.__init__(self) 
    39                 Controller.__init__(self) 
    40                 self.set_navigator('shell') 
    41                 try: 
    42                         self.cmdloop() 
    43                 except: 
    44                         self.drive.running = False 
    4541         
    4642        def preloop(self): 
    4743                self.eval_locals = { 
    48                         'drive': self.drive 
     44                        'drive': self.controller.drive 
    4945                } 
    50                 self.init_drive() 
    5146                 
    5247                try: 
     
    116111                try: 
    117112                        lspeed, rspeed = unpack(cmd, (0.0, float), (0.0, float)) 
    118                         self.drive.setspeed(lspeed, rspeed) 
     113                        self.controller.drive.setspeed(lspeed, rspeed) 
    119114                except ValueError: 
    120115                        print "Invalid parameters" 
    121116 
    122117        def do_getspeed(self, cmd): 
    123                 self.drive.getspeed() 
     118                self.controller.drive.getspeed() 
    124119 
    125120        def do_setgain(self, cmd): 
     
    127122                        kp, ki, kd, m = unpack(cmd, (0, int), (0, int), (0, int), ('b', str)) 
    128123                        if   m == 'l': 
    129                                 self.drive.setgain((kp,ki,kd),None) 
     124                                self.controller.drive.setgain((kp,ki,kd),None) 
    130125                        elif m == 'r': 
    131                                 self.drive.setgain(None,(kp,ki,kd)) 
     126                                self.controller.drive.setgain(None,(kp,ki,kd)) 
    132127                        else: 
    133                                 self.drive.setgain((kp,ki,kd),(kp,ki,kd)) 
     128                                self.controller.drive.setgain((kp,ki,kd),(kp,ki,kd)) 
    134129                except ValueError: 
    135130                        print "Invalid Parameters" 
    136131 
    137132        def do_getspeed(self, cmd): 
    138                 print self.drive.getspeed() 
     133                print self.controller.drive.getspeed() 
    139134 
    140135        def do_setdc(self, cmd): 
    141136                ldc, rdc = unpack(cmd, (0, int), (0, int)) 
    142                 print self.drive.setdc(ldc, rdc) 
     137                print self.controller.drive.setdc(ldc, rdc) 
    143138 
    144139        def do_disable(self, cmd): 
    145                 print self.drive.disable() 
     140                print self.controller.drive.disable() 
    146141        def help_disable(self): 
    147142                print "Disable the drive" 
    148143 
    149144        def do_enable(self, cmd): 
    150                 print self.drive.enable() 
     145                print self.controller.drive.enable() 
    151146        def help_enable(self): 
    152147                print "Enable the drive" 
    153148 
    154149        def do_getdc(self, cmd): 
    155                 print self.drive.getdc() 
     150                print self.controller.drive.getdc() 
    156151 
    157152        def do_getgain(self, cmd): 
    158                 print self.drive.getgain() 
     153                print self.controller.drive.getgain() 
    159154 
    160155        def do_getstat(self, cmd): 
    161                 print self.drive.getstat() 
     156                print self.controller.drive.getstat() 
    162157 
    163158        def do_eewrite(self, cmd): 
    164                 print self.drive.eewrite() 
     159                print self.controller.drive.eewrite() 
    165160         
    166161        def do_stop(self, cmd): 
    167                 self.drive.set_speeds(0.0, 0.0) 
     162                self.controller.drive.set_speeds(0.0, 0.0) 
    168163         
    169164        def help_stop(self): 
     
    186181                print ("Without arguments, list available commands.  With a command " 
    187182                       "name as an argument, get more information on that command") 
     183 
     184 
     185class ShellController(Controller): 
     186        def __init__(self): 
     187                Controller.__init__(self) 
     188                self.init_drive() 
     189                self.set_navigator('shell') 
     190                try: 
     191                        Shell(self).cmdloop() 
     192                finally: 
     193                        self.drive.running = False 
     194 
    188195 
    189196def unpack(str, *specs): 
  • trunk/software/shell

    r398 r459  
    11#!/usr/bin/python2.5 
    22 
    3 from rb.shell import Shell 
    4 Shell() 
     3from rb.shell import ShellController 
     4ShellController()