- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: Kommunikation zwischen Roboter und Website

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.04.2016
    Beiträge
    10

    Kommunikation zwischen Roboter und Website

    Hallo Forum,

    an der FH arbeiten wir schon etwas länger an einem Roboter der gewisse Boniturarbeiten in landwirtschaftlichen Versuchsparzellen autonom erledigen soll.
    Hierzu konnte mir das Forum schon bei anderen Problemen sehr gut weiter helfen. Hierfür noch einmal großen Dank.

    Aktuell sitze ich an dem Problem, dass gewisse Messwerte laufend auf einer Internetseite angezeigt werden sollen, sowie auch verschiedene Vorgänge über eine Internetseite gesteuert werden sollen.

    Auf dem Roboter läuft Ubuntu 16.04 und wir arbeiten mit ROS, Programmiersprache C++. Ein LAMP-Server wurde komplett installiert.

    Nun stellt sich mir die Frage wie ich die Kommunikation zwischen der Internetseite und dem Roboter am besten umsetzen kann.

    Die folgenden Konzepte habe ich bis jetzt im Internet gefunden:

    1. Datenabfrage und - übergabe mittels PHP
    Vorteil wäre die einfache Programmierung, allerdings sehe ich es als großen Nachteil, dass die Seite durchgehend neu geladen werden muss.

    2. CGI, hat soweit ich das richtig verstanden habe die gleichen Vor- und Nachteile wie Option 1.

    3. Ajax und MySQL
    Eine JavaScript-Anwendung im Browser holt sich durchgehen die Daten aus einer MySQL-Datenbank.
    Dies hätte den Vorteil, dass die Seite nicht durchgehend neu geladen werden muss,
    allerdings stelle ich mir den Rechenaufwand durch die Datenbank als sehr hoch vor.

    Des weiteren habe ich noch etwas über Sockets gelesen. Allerdings hatte ich hierbei das Gefühl, dass hierbei das ganze von der Programmierung sehr Aufwändig wird.

    Hat von euch jemand Erfahrung mit diesem Bereich und könnte mir vielleicht ein paar Infos oder Tipps geben, wie ich am besten an das Problem herangehen kann?

    Vielen Dank im voraus
    Florian

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Der datenbank ansatz ist schonmal garnicht verkehrt! du kannst aus dem laufenden messprogramm die daten in die datenbank updaten und dann per php und einer etwas geschickt geschriebenen webseite die im hintergrund einen frame mit den daten immer weider neu lädt und per JS dann aus dem frame menschenlesbar auf der eigentlichen seite updatet ohne dass man ständig die ganze seite reloaden muss.

    Beschreib doch mal eben die Daten die du darstellen weillst, denn eine Datenbank macht nur Sinn wenn du die aten protokollieren möchtest. Wenn du Daten live haben willst, bietet sich auch ein simpler socket dafür an, der einfach eine Zeichenkette antwortet wenn er gefragt wird. Die Zeichenkette ist dann eine ursimple HTML seite mit den Daten udn auf der eigentlichen Webseite sitzt dann wieder ein JS der das gnaze menschenlesbar umsetzt
    Code:
    String response = "<html>" + newline;
     response += "<p title='data1'>" + newline; 
    response += data1 + newline;
    response += "</p>" + newline
    response += "</html>";
    Diese mini Webseite lädst du dann in einem Frame und holst die informationen per JS.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.01.2007
    Beiträge
    37
    Zitat Zitat von FlorianKr Beitrag anzeigen
    Hallo Forum,

    1. Datenabfrage und - übergabe mittels PHP
    Vorteil wäre die einfache Programmierung, allerdings sehe ich es als großen Nachteil, dass die Seite durchgehend neu geladen werden muss.

    3. Ajax und MySQL
    Eine JavaScript-Anwendung im Browser holt sich durchgehen die Daten aus einer MySQL-Datenbank.
    Dies hätte den Vorteil, dass die Seite nicht durchgehend neu geladen werden muss,
    allerdings stelle ich mir den Rechenaufwand durch die Datenbank als sehr hoch vor.
    Das mit PHP und MySQL ist ganz gut.
    Sieht dir mal Websockets (secure websockets) an. Da hast du eine bidirektionale Socketverbindung, Clientseitig in JS, brauchst die Seite nicht mehr neu zuladen.. Wäre der eleganteste und schönste weg. Du kannst so auch Serverseitig neue Daten an die Clients senden, ohne das die Seiten einen Request absenden. Innerhalb des Websockets würde ich Daten im JSON Format übertragen, aber das ist geschmackssache.
    In der zwischenzeit gibt es auch für PHP ganz schöne Websocket implementierungen. (mit solchen fertigen libs ist es auch nicht mehr so aufwändig.)

    https://entwickler.de/online/websock...hp-132012.html
    http://socketo.me/


    Geändert von TMoS (17.05.2017 um 10:48 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    die websockets vergess ich immer *facepalm*
    klar die beste lösung
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    26.04.2016
    Beiträge
    10
    Hallo,

    vielen Dank für die schnellen Antworten.

    Bei den Daten handelt es sich um aktuelle Messdaten und verschiedene Regelparameter der autonomen Lenkung.

    Aktuell zeichnen wir unsere Messdaten in csv-Dateien auf, weswegen ich die Datenbank nicht unbedingt benötigen würde.

    Das mit den sockets/websockets hört sich gut an. Wenn ich das richtig verstanden habe, müsste dies doch auch eine sehr ressourcenschonende Variante sein.

    Ich werde mich da mal genauer einlesen in das Thema.

    Vielen Dank
    Florian

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    du müsstest dir halt noch ein simples protokoll einfallen lassen dass du dann auf robo und JS seite jeweils dann wieder zu lesbaren daten zusammensetzen kannst. Dafür würde ich mich einer passenden Library bedienen, vll. hat wer aus Forum eine brauchbare ... ich hab so n kram bisher iegentlich immer in Java gemacht und da gibts streamreader und writer die mir meine datentypen serialisieren udn wieder zusammenbauen

    Wunderschöne Erläuterung zu Websockets in meinen Augen
    https://os.alfajango.com/websockets-slides

    und ein netter hinweis wie man Daten automatisch serialisieren kann
    https://os.alfajango.com/websockets-slides/#/19/1
    Geändert von Ceos (17.05.2017 um 14:53 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.01.2007
    Beiträge
    37
    ja. der link oben ist kaputt:
    http://socketo.me/

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Defiant
    Registriert seit
    17.04.2005
    Ort
    Hamburg
    Beiträge
    183
    Wenn du sowieso schon ROS verwendest, wieso fürs Web nicht die Robot Web Tools. Verwenden Rosbridge als Brücke zu ROS.

Ähnliche Themen

  1. I²C Kommunikation zwischen AVR - PIC
    Von Eigo im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 17.05.2010, 21:02
  2. Roboter über internet Website steuern
    Von Mikel36 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 10.12.2008, 18:13
  3. Kommunikation zwischen 2 µC´s
    Von Blamaster im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 18
    Letzter Beitrag: 07.01.2008, 07:50
  4. SPI Kommunikation zwischen 2 AVR's
    Von Ruppi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 05.07.2007, 10:34
  5. Kommunikation zwischen PC und BOT
    Von corpsealive im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 9
    Letzter Beitrag: 07.07.2006, 07:40

Stichworte

Berechtigungen

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

12V Akku bauen