示例#1
0
    def do_GET(self):
        try:
            self.send_response(200)
            op = self.path[1:]
            if op == "index.html" or op == "":
                self.send_header("Content-type", "text/html")
                self.end_headers()
                self.wfile.write(
                    "<html><head>"
                    + "<meta http-equiv='Content-Type'"
                    + "content='text/html; charset=utf-8' />"
                    + "<script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>"
                    + "<script type='text/javascript'>"
                    + "function runCommand(name){ $.get(name, '' , "
                    + "function(data){ /*alert(data);*/ }); } "
                    + "</script>"
                    + "</head><body>"
                    + "<h1>Available commands</h1>"
                )
                for moveName in moves:
                    self.wfile.write(
                        "<a style='min-width:20em;margin:1em;font-size:120%;' href='javascript:"
                        + 'runCommand("'
                        + moveName
                        + '")'
                        + "'>"
                        + moveName
                        + "</a><br>"
                    )
                self.wfile.write("</body></html>")
            else:
                self.send_header("Content-type", "text/plain")
                self.end_headers()
                moveName = op.replace("%20", " ")
                if moveName in moves:
                    self.wfile.write(json.dumps({"operation": op}))
                    runMovement(move, moveName)
                else:
                    self.wfile.write(json.dumps({"operation": "not found"}))

            return
        except IOError:
            self.send_error(404, "File Not Found: %s" % self.path)
示例#2
0
文件: robot.py 项目: techninja/PoMoCo
 def replantFoot(self,endHipAngle,stepTime=1):
     runMovement(self.replantFoot_function,endHipAngle,stepTime)
示例#3
0
文件: robot.py 项目: techninja/PoMoCo
 def setFootY(self,footY,stepTime=1):
     runMovement(self.setFootY_function,footY,stepTime)
示例#4
0
文件: robot.py 项目: techninja/PoMoCo
 def setHipDeg(self,endHipAngle,stepTime=1):
     runMovement(self.setHipDeg_function,endHipAngle,stepTime)
示例#5
0
文件: GUI.py 项目: YggdrasiI/PoMoCo
    def __init__(self, master, controller):
        self.con = controller
        self.master = master

        self.frame = Frame(self.master)

        self.frame.pack()

        #setup menu system
        menu = Menu(root)
        root.config(menu=menu)
        filemenu = Menu(menu)

        menu.add_cascade(label="File", menu=filemenu)
        filemenu.add_command(label="New")
        filemenu.add_command(label="Save Offsets", command=self.saveOffsets)
        
        # TODO: bring these over from servitorGui
        #filemenu.add_command(label="Open Offsets", command=self.openOffsets)
        #filemenu.add_command(label="Save Positions", command=self.savePositions)
        #filemenu.add_command(label="Open Positions", command=self.openPositions)

        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.quitApp)
        master.createcommand('exit', self.quitApp)  

        #setup kill button
        self.killButton = Button(self.frame, text="Kill All Servos",fg="red",
                                font=("Helvetica", 20),command=self.estop)
        self.killButton.grid(row=0,column=14)

        self.loadOffsets()

        self.servos = []
        #setup left side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(0+i*4,[1,8+i*5])
            self.newServo(1+i*4,[1,9+i*5])
            self.newServo(2+i*4,[1,10+i*5])
            self.newServo(3+i*4,[1,11+i*5])
            self.addSpace([0,12+i*5])

        #setup right side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(16+i*4,[11,8+i*5])
            self.newServo(17+i*4,[11,9+i*5])
            self.newServo(18+i*4,[11,10+i*5])
            self.newServo(19+i*4,[11,11+i*5])
            self.addSpace([11,12+i*5])

        #add some spaces for asthetics
        self.addSpace([10,1])

        # generate buttons for all move functions
        counter = 0
        for move_name in moves:
            b = Button(self.frame, text=move_name)
            b.move_name = move_name
            b.sel = lambda b = b: runMovement(move,b.move_name)
            b.config(command = b.sel)
            b.grid(row=counter+8, column=0)
            #b.pack()
            counter += 1

        self.poll()
        self.estop()
示例#6
0
文件: robot.py 项目: rknowlto/PoMoCo
 def pointCircle(self, centerHipAngle = 0, radius = 15, orientation = 1, stepTime = 0.5):
     runMovement(self.pointCircle_function, centerHipAngle, radius, orientation, stepTime)
示例#7
0
文件: robot.py 项目: rknowlto/PoMoCo
 def setFootY(self, footY = 1000, footRx = 0, stepTime = 1):
     runMovement(self.setFootY_function, footY, footRx, stepTime)
示例#8
0
    def __init__(self, master, controller):
        self.con = controller
        self.master = master

        self.frame = Frame(self.master)

        self.frame.pack()

        #setup menu system
        menu = Menu(root)
        root.config(menu=menu)
        filemenu = Menu(menu)

        menu.add_cascade(label="File", menu=filemenu)
        #filemenu.add_command(label="New")
        #filemenu.add_command(label="Save Offsets", command=self.saveOffsets)
        
        # TODO: bring these over from servitorGui
        #filemenu.add_command(label="Open Offsets", command=self.openOffsets)
        #filemenu.add_command(label="Save Positions", command=self.savePositions)
        #filemenu.add_command(label="Open Positions", command=self.openPositions)

        #filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.quitApp)

        #setup kill button
        #self.killButton = Button(self.frame, text="Kill All Servos",fg="red",
        #                        font=("Helvetica", 12),command=self.estop)
        #self.killButton.grid(row=0,column=4)
        
        #arrays for icons, commands
        iconList = ["move_fwdleft.gif", "move_left.gif", "move_backleft.gif", "move_fwds.gif", "stop.gif", "move_back.gif", "move_fwdright.gif", "move_right.gif", "move_backright.gif", "rotate_ccw.gif", "rotate_cw.gif", "dance.gif", "sign_x.gif", "sign_hexy.gif", "sign_name.gif"]
        commandList = ["crab_fwdleft", "crab_left", "crab_backleft", "crab_fwd", "", "crab_back", "crab_fwdright", "crab_right", "crab_backright", "RotateLeft", "RotateRight", "dance_random", "sign_x", "sign_hexy", "sign_name"]
        
        #draw all the buttons and add icons/ commands
        counter = 0
        for icons in iconList:
            b = Button(self.frame)
            b.icon = PhotoImage(file="./Icons/" + icons)
            b.config(image=b.icon, width="150", height="150")
            b.move_name = commandList[counter]
            # modified command if the command is Stop
            if b.move_name=="":
                b.config(command = self.estop)
            elif b.move_name=="sign_name":
                b.sel = lambda b = b: move(b.move_name)
                b.config(command = b.sel)
            else:
                b.sel = lambda b = b: runMovement(move,b.move_name)
                b.config(command = b.sel)
            b.grid(row=(counter%3)*2+2, column=(counter/3)*2)
            #b.pack()
            counter += 1
            
        """
        for icons in iconList:
            b = Button(self.frame)
            b.icon = PhotoImage(file="./Icons/" + icons)
            b.config(image=b.icon, width="150", height="150")
            b.move_name = commandList[counter]
            b.sel = lambda b = b: runMovement(move,b.move_name)
            # exception if the command is Stop
            if b.move_name=="":
                b.config(command = self.estop)
            #elif b.move_name=="sign_name":
                #b.config(command = execfile("./DemoMoves/sign_name.py"))
            else:
                b.config(command = b.sel)
            b.grid(row=(counter%3)*2+2, column=(counter/3)*2)
            #b.pack()
            counter += 1
        """
        """
        #fwd left
        self.fwdLeftPhoto = PhotoImage(file="./Icons/move_fwdleft.gif")
        self.fwdLeftButton = Button(self.frame)
        #self.fwdLeftButton.move_name = "crab_fwdleft"
        #self.fwdLeftButton.sel = lambda self.fwdLeftButton = self.fwdLeftButton: runMovement(move, self.fwdLeftButton.move_name)
        #self.fwdLeftButton.config(image=self.fwdLeftPhoto, width="150", height="150", command = self.fwdLeftButton.sel)
        self.fwdLeftButton.func = lambda func = func: runMovement(move,"crab_fwdleft")
        self.fwdLeftButton.config(image=self.fwdLeftPhoto, width="150", height="150", command=self.fwdLeftButton.func)
        self.fwdLeftButton.grid(row=2, column=0)
        #fwd 
        self.fwdPhoto = PhotoImage(file="./Icons/move_fwds.gif")
        self.fwdButton = Button(self.frame)
        self.fwdButton.config(image=self.fwdPhoto, width="150", height="150")
        self.fwdButton.grid(row=2, column=2)
        #fwd right
        self.fwdRightPhoto = PhotoImage(file="./Icons/move_fwdright.gif")
        self.fwdRightButton = Button(self.frame)
        self.fwdRightButton.config(image=self.fwdRightPhoto, width="150", height="150")
        self.fwdRightButton.grid(row=2, column=4)
        #left
        self.leftPhoto = PhotoImage(file="./Icons/move_left.gif")
        self.leftButton = Button(self.frame)
        self.leftButton.config(image=self.leftPhoto, width="150", height="150")
        self.leftButton.grid(row=4, column=0)
        #stop
        self.stopPhoto = PhotoImage(file="./Icons/stop.gif")
        self.stopButton = Button(self.frame, command=self.estop)
        self.stopButton.config(image=self.stopPhoto, width="150", height="150")
        self.stopButton.grid(row=4, column=2)
        #right
        self.rightPhoto = PhotoImage(file="./Icons/move_right.gif")
        self.rightButton = Button(self.frame)
        self.rightButton.config(image=self.rightPhoto, width="150", height="150")
        self.rightButton.grid(row=4, column=4)
        #back left
        self.backLeftPhoto = PhotoImage(file="./Icons/move_backleft.gif")
        self.backLeftButton = Button(self.frame)
        self.backLeftButton.config(image=self.backLeftPhoto, width="150", height="150")
        self.backLeftButton.grid(row=6, column=0)
        #back
        self.backPhoto = PhotoImage(file="./Icons/move_back.gif")
        self.backButton = Button(self.frame)
        self.backButton.config(image=self.backPhoto, width="150", height="150")
        self.backButton.grid(row=6, column=2)
        #back right
        self.backRightPhoto = PhotoImage(file="./Icons/move_backright.gif")
        self.backRightButton = Button(self.frame)
        self.backRightButton.config(image=self.backRightPhoto, width="150", height="150")
        self.backRightButton.grid(row=6, column=4)
        
        #rotate left
        self.rotLeftPhoto = PhotoImage(file="./Icons/rotate_ccw.gif")
        self.rotLeftButton = Button(self.frame)
        self.rotLeftButton.config(image=self.rotLeftPhoto, width="150", height="150")
        self.rotLeftButton.grid(row=2, column=6)
        #rotate right
        self.rotRightPhoto = PhotoImage(file="./Icons/rotate_cw.gif")
        self.rotRightButton = Button(self.frame)
        self.rotRightButton.config(image=self.rotRightPhoto, width="150", height="150")
        self.rotRightButton.grid(row=4, column=6)        
        #dance
        self.dancePhoto = PhotoImage(file="./Icons/dance.gif")
        self.danceButton = Button(self.frame)
        self.danceButton.config(image=self.dancePhoto, width="150", height="150")
        self.danceButton.grid(row=6, column=6)        

        #sign stylised "X"
        self.signxPhoto = PhotoImage(file="./Icons/sign_x.gif")
        self.signxButton = Button(self.frame)
        self.signxButton.config(image=self.signxPhoto, width="150", height="150")
        self.signxButton.grid(row=2, column=8)        
        #sign Hexy
        self.signHexyPhoto = PhotoImage(file="./Icons/sign_hexy.gif")
        self.signHexyButton = Button(self.frame)
        self.signHexyButton.config(image=self.signHexyPhoto, width="150", height="150")
        self.signHexyButton.grid(row=4, column=8)        
        #write name
        self.writeNamePhoto = PhotoImage(file="./Icons/sign_name.gif")
        self.writeNameButton = Button(self.frame)
        self.writeNameButton.config(image=self.writeNamePhoto, width="150", height="150")
        self.writeNameButton.grid(row=6, column=8)
        """ 

        self.addSpace([1, 1])
        self.addSpace([3, 3])
        self.addSpace([5, 5])
        self.addSpace([7, 5])
        
        self.loadOffsets()

        # TODO add code to make sensible looking GUI
        # required buttons: fwds, bkwds, left, right, (diagonals?), turn_cw, turn_ccw
        # special buttons: sign Hexy (X?), sign custom message (requires dialog box)
        # stretch commands: modulate height, modulate body angles

        self.servos = []
        # remove code for slider generation
        """
        #setup left side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(0+i*4,[1,8+i*5])
            self.newServo(1+i*4,[1,9+i*5])
            self.newServo(2+i*4,[1,10+i*5])
            self.newServo(3+i*4,[1,11+i*5])
            #self.addSpace([0,12+i*5])

        #setup right side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(16+i*4,[11,8+i*5])
            self.newServo(17+i*4,[11,9+i*5])
            self.newServo(18+i*4,[11,10+i*5])
            self.newServo(19+i*4,[11,11+i*5])
            #self.addSpace([11,12+i*5])
        """
        #add some spaces for asthetics
        #self.addSpace([10,10])
        

        # generate buttons for all move functions
        """
        counter = 0
        for move_name in moves:
            b = Button(self.frame, text=move_name, font=("Helvetica", 7))
            b.move_name = move_name
            b.sel = lambda b = b: runMovement(move,b.move_name)
            b.config(command = b.sel)
            b.grid(row=counter+8, column=0)
            #b.pack()
            counter += 1
        """

        # don't need the following line as there are no sliders to update
        #self.poll()
        self.estop()
示例#9
0
文件: robot.py 项目: techninja/PoMoCo
 def replantFoot(self, endHipAngle, stepTime=1):
     runMovement(self.replantFoot_function, endHipAngle, stepTime)
示例#10
0
文件: robot.py 项目: techninja/PoMoCo
 def setFootY(self, footY, stepTime=1):
     runMovement(self.setFootY_function, footY, stepTime)
示例#11
0
文件: robot.py 项目: techninja/PoMoCo
 def setHipDeg(self, endHipAngle, stepTime=1):
     runMovement(self.setHipDeg_function, endHipAngle, stepTime)
示例#12
0
    def __init__(self, master, controller):
        self.con = controller
        self.master = master

        self.frame = Frame(self.master)

        self.frame.pack()

        # Setup menu system
        menu = Menu(root)
        root.config(menu=menu)
        filemenu = Menu(menu)

        menu.add_cascade(label="File", menu=filemenu)
        filemenu.add_command(label="New")
        filemenu.add_command(label="Save Offsets", command=self.saveOffsets)

        # TODO: Bring these over from servitorGui
        #filemenu.add_command(label="Open Offsets", command=self.openOffsets)
        #filemenu.add_command(label="Save Positions", command=self.savePositions)
        #filemenu.add_command(label="Open Positions", command=self.openPositions)

        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.quitApp)
        master.createcommand('exit', self.quitApp)

        # Setup kill button
        self.killButton = Button(self.frame,
                                 text="Kill All Servos",
                                 fg="red",
                                 font=("Helvetica", 20),
                                 command=self.estop)
        self.killButton.grid(row=0, column=14)

        self.loadOffsets()

        self.servos = []
        # Setup left side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(0 + i * 4, [1, 8 + i * 5])
            self.newServo(1 + i * 4, [1, 9 + i * 5])
            self.newServo(2 + i * 4, [1, 10 + i * 5])
            self.newServo(3 + i * 4, [1, 11 + i * 5])
            self.addSpace([0, 12 + i * 5])

        # Setup right side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(16 + i * 4, [11, 8 + i * 5])
            self.newServo(17 + i * 4, [11, 9 + i * 5])
            self.newServo(18 + i * 4, [11, 10 + i * 5])
            self.newServo(19 + i * 4, [11, 11 + i * 5])
            self.addSpace([11, 12 + i * 5])

        # Add some spaces for aesthetics
        self.addSpace([10, 1])

        # Generate buttons for all move functions
        counter = 0
        for move_name in moves:
            b = Button(self.frame, text=move_name)
            b.move_name = move_name
            b.sel = lambda b=b: runMovement(move, b.move_name)
            b.config(command=b.sel)
            b.grid(row=counter + 8, column=0)
            #b.pack()
            counter += 1

        self.poll()
        self.estop()
示例#13
0
 def gui_estop(self):
     servotorComm.runMovement(self.estop)
示例#14
0
 def gui_estop(self):
     servotorComm.runMovement(self.estop)
示例#15
0
    def __init__(self, master):
        self.con = servotorComm.Controller()  # Servo controller
        self.hexy = hexapod(self.con)
        self.master = master

        self.frame = Frame(self.master)

        self.frame.pack()

        #setup menu system
        menu = Menu(root)
        root.config(menu=menu)
        filemenu = Menu(menu)

        menu.add_cascade(label="File", menu=filemenu)
        filemenu.add_command(label="New")
        filemenu.add_command(label="Save Offsets", command=self.saveOffsets)
        # TODO: bring these over from servitorGui
        #filemenu.add_command(label="Open Offsets", command=self.openOffsets)
        #filemenu.add_command(label="Save Positions", command=self.savePositions)
        #filemenu.add_command(label="Open Positions", command=self.openPositions)

        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.quitApp)

        #setup kill button
        self.killButton = Button(self.frame,
                                 text="Kill All Servos",
                                 fg="red",
                                 font=("Helvetica", 20),
                                 command=self.gui_estop)
        self.killButton.grid(row=0, column=14)

        self.loadOffsets()

        self.servos = []
        #setup left side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(0 + i * 4, [1, 8 + i * 5])
            self.newServo(1 + i * 4, [1, 9 + i * 5])
            self.newServo(2 + i * 4, [1, 10 + i * 5])
            self.newServo(3 + i * 4, [1, 11 + i * 5])
            self.addSpace([0, 12 + i * 5])

        #setup right side, 4 groups of 4 servo controls
        for i in xrange(4):
            self.newServo(16 + i * 4, [11, 8 + i * 5])
            self.newServo(17 + i * 4, [11, 9 + i * 5])
            self.newServo(18 + i * 4, [11, 10 + i * 5])
            self.newServo(19 + i * 4, [11, 11 + i * 5])
            self.addSpace([11, 12 + i * 5])

        #add some spaces for asthetics
        self.addSpace([10, 1])

        # generate buttons for all move functions
        counter = 0
        for move_name in dir(self):
            if "move_" in move_name:
                b = Button(
                    self.frame,
                    text=move_name[5:],
                    command=lambda func=getattr(self, "move_" + move_name[
                        5:]): servotorComm.runMovement(func))
                b.grid(row=counter + 8, column=0)
                #b.pack()
                counter += 1

        #servoBars = []

        self.poll()
        self.estop()
示例#16
0
 def runCommand(self, op):
     # Use op as name of Move
     runMovement(self.move, op)