PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Internet Steuerung für Roboter



rXenon
30.05.2006, 23:17
Hallo,
ich möchte eine Internetsteuerung basteln, die man per Webbrowser verwenden kann. Dort sollen ein paar Buttons sein, die eine Zahl von 0-255 an den Server senden: d.h. , dass ein Computer ein Weberver ist, auf dem die Dateien liegen, die im Browser des Benutzers angezeigt werden. Wenn der
Benutzer nun einen der Buttons drückt, soll am Server zum Beispiel in Delphi etwas passieren.

Mit welcher Sprache ist das überhaupt zu realisieren? PHP glaube ich nicht, da man damit, um dem Server etwas mitzuteilen, immer die Seite neu laden muss - also eigentlich nicht so schick.

Dazu kommt wie sieht die Verarbeitung der Befehle auf dem Server aus?

Cybrix
31.05.2006, 14:10
ich kann dir da nicht wirklich weiter helfen aber vielleicht hilft dir dieser link!

www.ulrichradig.de

und dann auf AVR Projekte und dort auf Webserver!

so wie ich das sehe ist das einfach in html geschrieben habe es aber nur kurz überflogen!

Gruß cybrix

rXenon
31.05.2006, 16:35
Ne leider hilft mir das nicht so wirklich weiter, da dort ein Webserver auf AVR Basis gebaut wurde. Ich habe aber vor einen kompletten PC zu verwenden als Server.

Decoder
31.05.2006, 17:20
hi

hmm...hab mal ein Projekt gehabt bei dem ich mit Visual Basic über den Parallelport eine 27Mhz 8kanal fernsteuerung angesteuert habe(war auch ein Wert zwischen 0 und 255 TLL). Da man mit VB auch SQL abfragen kann dachte ich mir könnte ich das ganze auch per PHP machen. Nur muss dazu VB die ganze Zeit die SQL DB abrufen. Das belastet die natürlich. Aber rein theoretisch würde des gehen.

bekoeppel
31.05.2006, 17:42
Hmm wenn der Server auf Linux läuft, könntest du ein CGI-Script machen, und das im Browser bedienen.

Das CGI kann doch auf andere Programme zugreifen, die dann eben halt die Übertragung machen.
Oder in PHP, Safemode off, dann kannst du, ich vermute mal mit exec(...) auch irgendwas ausführen auf dem Server.

lg

Decoder
31.05.2006, 18:24
Problematisch wär hald auch die geschwindigkeit. Kommt auf die Verbindung an...aber bis das signal letztendlich beim Roboter is können locker 2 Sekunden vergehen.

Mit CGI hab ich ned viel erfahrung.
Mit PHP müsstest du hald den Wert aus SQl auslesen/schreiben und das VB Script liest dann den Wert aus der SQL DB aus und gibt es an den Parallelport weiter. Nur wie gesagt bis das PHP script neu geladen is und den aktuellen wert ausgelesen hat vergeht ne Zeit.

rXenon
31.05.2006, 18:58
Also ich habe das mal mit php probiert. Es funktioniert zwar mit exec, aber das Problem ist halt wirklich, dass jedesmal die Seite neu geladen werden muss mit einem Parameter.

@ bekoeppel Ob ich auf dem Rechner nun Linux oder Windows habe, ist mir nicht so wichtig. Wie sieht das denn aus mit einem CGI-Script?

@Decoder Ob ich nun einen Wert in SQL schreibe und mit VB auswerte oder ob ich eine Exe habe die einen Parameter erwartet, die ich mit exec aufrufe ist eigentlich egal. Nur dass exec halt leichter ist. Btw ich kenne irgendwoher dein Avatar... In welchem Forum bist du Vielposter?^^

Decoder
31.05.2006, 19:51
Anmeldungsdatum: 09.05.2006
Beiträge: 8
nein bin kein Vielposter ;)

rXenon
31.05.2006, 20:04
Ich habe doch gemeint in einem anderen Forum

Decoder
31.05.2006, 21:16
wüsste nicht in welchem. :-s

marvin42x
01.06.2006, 00:49
Was in der Richtung entsteht gerade hier:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=16297&postdays=0&postorder=asc&start=0

Ich weis nicht genau was Dir vorschwebt aber schau Dir das vielleicht mal an.

Netter Gruß

rXenon
03.06.2006, 23:18
Also ein CGI Skript ist nicht geeignet, da es wie auch PHP darauf basiert die Seite neu zu laden nur eben einen Parameter mitzusenden.

Beherrscht vielleicht jemand Flash und weiß ob es damit eine Möglichkeit gibt?

UlrichC
04.06.2006, 00:15
Tach,
ja mit Internet kann man wirklich keine Echtzeitanwendungen machen \:D/

Internet braucht eben seine Zeit (auch ohne CGI) 8-[

Flash ist nicht das Problem:
Flash wäre dann aber auch Frontend auf einer CGI Middelware auch wenn diese dann möglicherweise von Macromedia wäre.

Um die Standards des reinen CGIs zu umgehen könnte man AJAX oder gleich Java verwenden.

Freundlicher Gruß,
Christian Ulrich

rXenon
04.06.2006, 12:09
Ist es denn möglich mit Java direkt auf den Server zuzugreifen, d.h. dort etwas zu starten?

UlrichC
04.06.2006, 12:52
Ist es denn möglich mit Java direkt auf den Server zuzugreifen, d.h. dort etwas zu starten?
Jain das ist (nicht) möglich.

Der Browser ist immer Client im verteilten System (like Internet) und hat nur die Möglichkeit mittels TCP/IP+Protokoll mit dem Server zu kommunizieren.
Somit führt der Weg im Internet immer indirekt auf den Server.

Wenn alles auf einem Rechner laufen würde (also kein verteiltes System), könnte man von Direkt sprechen.
Direkt wäre in diesem Fall ein Systemaufruf (dort etwas Starten) etc.

Um deine Frage zu Beantworten:
Mit Jave, Flash etc. kann man im Browser mittels Socked-Verbindung eine Kommunikation zu einem Server (auch Webserver) aufbauen.
In allen Fällen braucht man im Internet hierfür zwei Programmteile. Ein Programmteil dient als Oberfläche im Browser... ein anderer Teil für die Wünsche der Oberfläche (direkt) aus.

Ohne Bild und Ton ist das schwer zu erklären. Zumal die meisten Erklärungen im Internet zu Flash, Java etc. von Direkt sprechen aber indirekt meinen ;-)

Superhirn
04.06.2006, 13:06
Hallo,

Nimm doch einfach ein chatrotokoll wie irc. Der webserver ist dann auch ein irc server (oder auch ein externer) und schickt die meldungen, die er vie chat bekommt, an den roboter weiter.

ba4_philipp
02.07.2006, 21:56
Ich würde deinen Delphiteil so bauen, das er auf einem TCP Port lauscht (meinetwegen auch UDP) und du so schonmal per TCP/IP den Roboter steuern kannst.

Jetzt lässt du entweder PHP dorthin connecten und etwas schicken. Oder wenn du nichts neu laden möchtest usw, dann baust du dir ein Java Applet was die Verbindung dorthin aufbaut.

Oder wenns nicht unbedingt durch den Browsr sein muss, kannst du dir auch einen Client in Delphi bauen der dann von einem anderen Computer aus, den Roboter steuern kann. So ähnlich hab ich es in meinem Auto auch gemacht.

Problem bei Java und dem Delphiclient ist, das es so dann zB nicht mehr durch einen Proxy durchgeht. (würde mit Tricks auch gehen)

Gruß Philipp

jomaii
02.07.2006, 23:51
Hallo,

seit einiger Zeit gibt es das sog. Microsoft Robotics Studio. Neben einigen anderen netten features bietet es auch die moeglichkeit, einen roboter komplett ueber web zu steuern.

Hier ein link:
http://msdn.microsoft.com/robotics/

Ich habe das MRS vor zwei Wochen af der RoboBusiness 2006 in Pittsurgh im Einsatz auf Industrierobotern von KuKA und auf allen moeglichen mobilen Plattformen gesehen. Es ist noch nicht voll ausgereift, aber sehr vielversprechend. Es nimmt einem eine menge arbeit ab.

Ich glaube auch, es ist umsonst.

Viele Gruesse,
Jomaii

Klaus W. H.
15.08.2006, 14:14
Also, mit php sollte es schon klappen.
Die Startseite einfach in zwei frames aufteilen.
In einem Frame liegen die Bedienelemente und im anderen wird das cgi bzw. php script ausgeführt. Hat dieser zweite Frame eine Höhe von 0, wirst Du auch kein Nachladen bemerken. Ok. In der Statusbar des Browsers. Ich nutze solche "unsichtbaren" Frames um in recht schneller Folge vom Browser aus zu prüfen, ob auf dem Server neue Daten vorliegen. Und nur dann wird der Hauptframe aktualisiert.
Sollten Dir Frames nicht gefallen, weil mal jemand sagte, das sei "unsauber", nimm halt iframes. Das sollte genauso klappen.
Und mit php könntest Du via fopen und fwrite zumindest unter Linux auch gleich was über den seriellen Port ausgeben.

Gruß Klaus

mojo777
17.10.2006, 23:08
hi,
also generell geht der spaß über dll.
1)
du schreibst eine dll mit den funktionen, die du brauchst. da kann alles möglich gemacht werden. von mp3 abspiele bis kompletten pc steuern...
diese dll bindest du als extention in php ein und erlaubst ihr den zugriff.
dann benutzt du unter php ganz einfach die funktion wie z.b. play_song('c:\musik\lala.mp3');

2. möglichkeit.
ich habe es meinerzeit so gemacht:
du schreibst eine exe. konsolenanwendung. diese kannst du dann mit parameterübergabe aus php aufrugen mit shellexec oder so...
der exe (konsolenanwendung) musst du aber dann zugriffe auch unter windows(!) auf das desktop system erlauben.


aber im allgemeinen ist es ein recht aktuelles forschungsgebiet. ich habe ein paar plakate bei uns an der uni gesehen und weiss, dass die oberdruiden mit java arbeiten. aber wenn du keine "echtzeit" steuerung realisieren willst, reicht auch sogar eine "dreckige" konsolenanwendung :-D

gruß

Nr. 5
15.02.2007, 18:10
Informier dich mal über AJAX.
Damit kann man Scripts auf dem Server aufrufen, daten vom Server hohlen etc. ohne die Seite neu zu laden. Ist eigentlich nur Javascript.
Hab irgendwo ein Beispiel aufm Server, aber finde es grad nicht.

Battle MC
16.02.2007, 18:18
Schau mal hier, da hat jemand seinen roboter über das Internet steuerbar gemacht, zwar hackt das Teil manchmal, aber was will man verlangen, wenn jeder an dem Teil rumpielen kann.
http://www.btxtech.com/projects/robot/robot_overview.php

Mfg Fabian

Benji
17.02.2007, 09:43
Also wenn ich auch mal meinen Senf dazugeben kann...

Ich würde es auch mit PHP machen (vielleicht weil ich nichts anderes kann :-) ). Wenn du nicht ein speicherfressendes Design mit vielen Bilder usw. benutzt, dauern die Ladezeiten (Aktualisierungen) nicht so lange.

Ich habe mal so ein Projekt realisiert. Allerdings für eine Heizungs- und Lichtsteuerung. Die Website habe mit PHP programmiert und die Zustände von den Buttons in einer Datei auf den Server gespeichert. Dazu habe ich ein Programm in C geschrieben, welches immer den Zustand der Datei ausgelesen hat. Mit den Daten kannst du ja nun machen was du willst.

Nun betreffend der Geschwindigkeit ist eine Lichtsteuerung sicher weniger heikel als einer Robotersteuerung...

MfG Benji

scales
01.03.2007, 22:08
ich hab bei meinem Roboter ein Java-Applet benutzt,
eine Seite immer neu zu laden ist unpraktisch, mit Java hat man eine ganz normale Socket-Direktverbindung.

Zuerst hab ich auch eine Steuerung per CGI versucht (das Prinzip ist ja das gleiche wie PHP),
aber bei einem Roboter ist da die Reaktionszeit einfach zu schlecht.

Kommt eben drauf an was du überhaupt damit steuern willst,
aber auch wenn die Geschwindigkeit keine Rolle spielt, würde mich das andauernde neu-gelade stören

mojo777
02.03.2007, 00:08
hi scales,
also die java methode ist auf jeden die "bessere" wenn nicht die beste.
ich weiss, dass unsere leute am lehrstuhl das auch so machen. könntest du mir vielleicht ein paar links/bücher zu diesem thema epfehlen?

gruß

Nr. 5
02.03.2007, 09:43
Nochmal:
Informiert euch mal über Ajax!
Das ist DIE Lösung für solche Sachen.

mojo777
02.03.2007, 09:59
hi nr5. ajax ist groß.
sag mal wenigstens konkrete literatur :)

Nr. 5
02.03.2007, 10:12
hi nr5. ajax ist groß.
sag mal wenigstens konkrete literatur :)

Mit Ajax einen String an den Webserver zu übergeben, der diesen String dann mit PHP auswertet ist eine Sache von 20 Zeilen Code.
Gibt aber auch ganze Bücher drüber:
http://www.amazon.de/AJAX-Modernes-Webscripting-mit-CD/dp/3898427641/ref=pd_ka_6/028-3499034-6967758?ie=UTF8&s=books&qid=1172830313&sr=8-6
http://www.amazon.de/Ajax-Action-Das-Entwicklerbuch-f%C3%BCr/dp/3827324149/ref=pd_ka_4/028-3499034-6967758?ie=UTF8&s=books&qid=1172830313&sr=8-4
http://www.amazon.de/AJAX-PHP-Eine-vollst%C3%A4ndige-Einf%C3%BChrung/dp/3827323584/ref=pd_ka_5/028-3499034-6967758?ie=UTF8&s=books&qid=1172830313&sr=8-5

Nr. 5
02.03.2007, 10:13
PS: online tutorials tuns auch-> google hilft weiter, 100 % ^^

mojo777
02.03.2007, 10:31
ok. ohne jetzt groß zu googeln, kann ich shcon sagen dass die methode mit sockets schneller ist.

wobei ich mal mitbekommen habe, dass man in ajax soetwas ähnliches implementieren kann. (du merkst ich habe nicht wirklich die ahnung von dem viech). das wäre ann evtl eine gute alternative zu einem java applet.

gruß

Nr. 5
02.03.2007, 10:35
Wer mal z.B. googleMail benutzt hat, der weiß was Ajax ist und wie schnell es ist. Mit Ajax tauscht man eigenntlich nur über Javascript Daten mit einem Script auf dem Webserver aus. Für eine Robotersteuerung bräuchte man dann nur 4 Buttons die dann an ein Script auf dem Webserver z.b. die Zahlen 1 bis 4 senden.
Das Script wertet die Zahlen aus und gibt sie an ein eigenständiges Programm auf dem Rechner aus, das dann den Roboter entsprechend ansteuert.

scales
02.03.2007, 20:16
Ajax ist ja eben die Methode die Daten an eine Art Script auf dem Server zu schicken,
mag sein dass das für Webmail reicht, aber ich denke wenn man einen Roboter steuern will ist eine Direktverbindung erste Wahl.
Die Daten übers Internet an einen Server zu schicken, und von dort an den Roboter dauert noch lang genug.

konkrete Tutorials kenn ich keine mehr, aber die gibts über Java Applets wie Sand am mehr.

Nr. 5
02.03.2007, 20:47
Ajax ist ja eben die Methode die Daten an eine Art Script auf dem Server zu schicken,
mag sein dass das für Webmail reicht, aber ich denke wenn man einen Roboter steuern will ist eine Direktverbindung erste Wahl.
Die Daten übers Internet an einen Server zu schicken, und von dort an den Roboter dauert noch lang genug.

konkrete Tutorials kenn ich keine mehr, aber die gibts über Java Applets wie Sand am mehr.
Und ich sage per Ajax und einem Steuer-Programm auf dem Webserver wird nicht merkbar langsamer sein.

vohopri
14.07.2007, 17:28
Hallo,

vielleicht interressiert der thread noch jemanden, das Thema find ich jedenfalls spannend und ich hab einiges an Internet Applikationen gebastelt.

Ich würd in Delphi einen kleinen HTTP Server schreiben, der dem Browser die Steuerseite mit den Buttons auf Anfrage schickt. Anschliessend wertet er die Daten aus, die der Browser mit der Post Methode sendet und gibt sie entwprechend aufbereitet über eine Schnittstelle aus. Das kann Parallel, Seriell oder Soundkarte sein. Die Verzögerungen sind erfahrungsgemäss gering, unter 500 ms von Breitbandanschluss zu Breitbandanschluss.

grüsse,
vohopri

nexusnoesis
13.01.2009, 13:23
Ich kann da meinen Blog empfehlen: http://nexno.blogspot.com

Dort habe ich auch Sourcecode liegen (oben rechts bei Downloads) welcher u.a. mit Ajax arbeitet. Der Roboter ist per Browser steuerbar, während man (mit ca 4 fps) die Webcam live sieht. Schauts euch einfach mal an und wenns gefällt würd ich mich natürlich über Kommentare dort freuen :)

LuZ
13.01.2009, 16:08
Hallo,

ich habe vor kurzem testweise einen uC über die serielle Schnittstelle mit dem PC verbunden. Der uC hat an den PC nur gesendet, ob ein Taster gedrückt ist oder nicht.
Das ganze hat dann ein Python-Script ausgewertet, das gleichzeitig auch einen kleinen Server enthielt. Dann konnte man, allerdings "nur" über Telnet (o.ä.), erfahren, ob der Taster gedrückt ist oder nicht.
Das ganze ist zwar die Rückrichtung, aber das ließe sich ja ändern.
Es bleibt aber die Frage, wie das ganze auf der Client-Seite gehandhabt werden kann. Ich habe es selbst noch nicht weiterverfolgt...

Gruß LuZ