Script demo_rawPosable_py
[hide private]
[frames] | no frames]

Source Code for Script script-demo_rawPosable_py

  1  #!/usr/bin/python 
  2   
  3  import ckbot.logical as L 
  4  import cmd 
  5  from sys import stdout as STDOUT 
  6  from time import sleep, time as now 
  7   
8 -class RawPosable( cmd.Cmd ):
9 - def __init__(self):
10 cmd.Cmd.__init__(self) 11 self.c = L.Cluster() 12 self.p = [] 13 self.ngs = None 14 self.prompt = "RawPose> "
15
16 - def do_populate(self,line):
17 try: 18 n = eval(line) 19 except Error,err: 20 print err 21 return 22 if type(n) != tuple: 23 n = (n,) 24 self.c.populate(*n) 25 self.ngs = [ 26 (m.name,m.get_pos,m.set_pos) 27 for m in self.c.itermodules() 28 ] 29 self.ngs.sort()
30
31 - def do_who(self,line):
32 print self.c.p.scan()
33
34 - def do_EOF(self,line):
35 self.do_off('') 36 return True
37
38 - def do_off(self,line=''):
39 for m in self.c.itermodules(): 40 if hasattr(m,'go_slack'): 41 try: 42 m.go_slack() 43 except Error,err: 44 print Error,err
45
46 - def do_drop(self,line=''):
47 if self.p: 48 self.p.pop(-1) 49 print "%d poses remain" % len(self.p)
50
51 - def emptyline(self):
52 if self.ngs is None: 53 print "poplate the cluster first!" 54 return 55 print "Adding pose",len(self.p)+1 56 v = [x[1]() for x in self.ngs] 57 print " ".join(["%6s " % n for n,g,s in self.ngs ]) 58 print " ".join(["%6d " % vi for vi in v]) 59 self.p.append( v )
60
61 - def do_execute(self,line=''):
62 if not line.strip(): 63 dt = 0.1 64 else: 65 dt = eval(line) 66 err = None 67 try: 68 t0 = now() 69 for pose in self.p: 70 print "%6.2f " % (now()-t0), 71 print " ".join(["%6s " % n for n,g,s in self.ngs ]) 72 print "%6s" % ':', 73 print " ".join(["%6d " % vi for vi in pose]) 74 STDOUT.flush() 75 for v,(n,_,s) in zip(pose,self.ngs): 76 s(v) 77 sleep(dt) 78 except Error,err: 79 pass 80 self.do_off() 81 if err: 82 raise err
83
84 - def postcmd(self,stop,line):
85 self.c.p.update() 86 try: 87 m = self.c.itermodules().next() 88 v = m.get_voltage() 89 if v<16: 90 print "Voltage:",v 91 if v<14: 92 print "*** LOW VOLTAGE *** force quit!" 93 self.do_off() 94 stop = True 95 except StopIteration: 96 pass 97 return stop
98 99 if __name__=="__main__": 100 app = RawPosable() 101 try: 102 app.cmdloop() 103 finally: 104 app.do_off() 105