Script demo_rawPosable_py
|
|
1
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
10 cmd.Cmd.__init__(self)
11 self.c = L.Cluster()
12 self.p = []
13 self.ngs = None
14 self.prompt = "RawPose> "
15
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
33
35 self.do_off('')
36 return True
37
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
47 if self.p:
48 self.p.pop(-1)
49 print "%d poses remain" % len(self.p)
50
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
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