- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 9 von 9

Thema: Roboter in Echtzeit über den Browser steuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier Avatar von Clark79
    Registriert seit
    25.03.2014
    Beiträge
    15
    Hallo! Ein Bekannter von mir hat das auch mal versucht, aber die Zeitverzögerung ist trotzdem geblieben. Gibt es da nicht aber eine spezielle Software oder so dafür?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Ich glaube ich habe den größten Flaschenhals gefunden: beim CGI muss erst Python gestartet werden, und auf einem 400MHz MIPS core dauert das anscheinend ein bisschen..

    Aber ich habe einen Lösungspfad gefunden -> Einen Webserver in Python, der auf einem anderen Port läuft und die POST-Anfragen entgegen nimmt und gleich die anderen µC über I2C ansteuert.
    Das HTML-File mit den Buttons (fast gleich wie oben, sieht auch genauso aus):
    HTML-Code:
    <html>
    
        <head><title>Robot</title></head>
    
        <body>
            <h4> Hello, this is Robot </h4>
            
            <style>
                .hide { overflow:hidden; position:absolute; top:-1px; left:-1px; width:1px; height:1px; }
            </style>
            <iframe name="hiddenFrame" class="hide"></iframe>
    
            <form action="http://192.168.0.251:8001/" method="POST" target="hiddenFrame">
                Movement:<br/>
                <input type="submit" value="↖ " name="Submit_FL" style="height:80px; width:80px" />
                <input type="submit" value="↑ " name="Submit_F" style="height:80px; width:80px" />
                <input type="submit" value="↗ " name="Submit_FR" style="height:80px; width:80px" />
                <br/>                                                    
                <input type="submit" value="← " name="Submit_L" style="height:80px; width:80px" />
                <input type="submit" value="Stop"     name="Submit_Stop" style="height:80px; width:80px" />
                <input type="submit" value="→ " name="Submit_R" style="height:80px; width:80px" />
                <br/>                                                 
                <input type="submit" value="↙ " name="Submit_BL" style="height:80px; width:80px" />
                <input type="submit" value="↓ " name="Submit_B" style="height:80px; width:80px" />
                <input type="submit" value="↘ " name="Submit_BR" style="height:80px; width:80px" />
                
                <br/>
                <br/>
                Mode:</br>
                <input type="submit" value="Speed" name="Submit_mode_speed"  />
                <input type="submit" value="Torque" name="Submit_mode_torque"  />
            </form>
        </body>
    
    </html>
    Und das Python-Script, das auf Port 8001 horcht:
    Code:
    #!/usr/bin/env python
    
    import SimpleHTTPServer
    import SocketServer
    import logging
    import cgi
    
    import sys
    
    from RobotLibrary import I2C as I2C
    from RobotLibrary import robot_motorctrl as motor
    from RobotLibrary import robot_servoctrl as servo
    
    PORT = 8001
    I = ""
    
    class ServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    
        def do_HEAD(self):
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
        
        def do_GET(self):
            self.do_HEAD()
            self.wfile.write("""Thank you for your request..""") # Text der zurueckgegeben wird
        def do_POST(self):
            logging.warning("======= POST STARTED =======")
            logging.warning(self.headers)
            form = cgi.FieldStorage(
                fp=self.rfile,
                headers=self.headers,
                environ={'REQUEST_METHOD':'POST',
                         'CONTENT_TYPE':self.headers['Content-Type'],
                         })
            logging.warning("======= POST VALUES =======")
            print(form)
            i2c.OPEN('/dev/i2c-0')
    
            if   "Submit_F" in form:
                motor.SET_MOTORS(20,20)
            elif "Submit_FL" in form:
                motor.SET_MOTORS(10,20)
            elif "Submit_FR" in form:
                motor.SET_MOTORS(20,10)
            elif "Submit_L" in form:
                motor.SET_MOTORS(0,15)
            elif "Submit_Stop" in form:
                motor.STOP()
            elif "Submit_R" in form:
                motor.SET_MOTORS(15,0)
            elif "Submit_B" in form:
                motor.SET_MOTORS(-10,-10)
            elif "Submit_BL" in form:
                motor.SET_MOTORS(-18,-10)
            elif "Submit_BR" in form:
                motor.SET_MOTORS(-10,-18)
            
            elif "Submit_mode_speed" in form:
                motor.MOVEMODE(motor.MoveMode_Speed)
            elif "Submit_mode_torque" in form:
                motor.MOVEMODE(motor.MoveMode_Torque)
                
            i2c.CLOSE()
    
            logging.warning("\n")
            #SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
            self.do_GET()
    
    httpd = SocketServer.TCPServer(("", 8001), ServerHandler)
    
    print("RoboServer, Port = 8001")
    httpd.serve_forever()
    Wohl noch einige Fehler drin, denn das ganze ist mehr oder weniger zusammen gecopy- & pasted ( von hier https://snipt.net/raw/f8ef141069c3e7...b58c25bf/?nice und hier https://www.assembla.com/spaces/onio...python/history )

    Aber: Jetzt ist die Reaktionsgeschwindigkeit VIEL VIEL höher, so um die 200ms grob geschätzt Supergeile Sache, jetz muss ich das nur noch ordentlich Programmieren. Und jetzt kann man evtl. auch mit z.B. Javascript alle 500ms oder so pollen, so dass der Robo nach spätestens 1sec ohne Poller stehenbleibt

Ähnliche Themen

  1. RP6 über Funk und Tastatur echtzeit steuern
    Von cmani2009 im Forum Robby RP6
    Antworten: 21
    Letzter Beitrag: 05.06.2010, 08:28
  2. schrittmotor und 2 hubmagnete über den pc steuern
    Von fabianzenger im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 2
    Letzter Beitrag: 21.04.2008, 06:57
  3. RC-Fernsteuerung über den PC - Steuern
    Von www.joachimdieterich.de im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 31.12.2004, 09:25
  4. Roboter über PC steuern
    Von jens84 im Forum Elektronik
    Antworten: 17
    Letzter Beitrag: 03.07.2004, 10:03
  5. Antworten: 14
    Letzter Beitrag: 23.02.2004, 16:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress