Virtueller Arm KR6/2 für OfficeLite V4.1.7

  • Hallo,



    Wie versprochen beim Thema "Probleme mit cross.ocx" , stelle ich Euch den virtuellen Arm des KR6/2 zur Verfügung.


    Das Programm, das Ihr auf meinem Site http://mfj.chez-alice.fr/html/index_en.html in der Rubrik "NEWS" runterladen könnt, stellt eine Verbindung zu OfficeLite V4.1.7 dar. So kann man sehen, was der Roboter wirklich macht, während man ihn mit OfficeLite programmiert.


    Die Software hat nicht den Anspruch, ein wirkliches professionelles Werkzeug zu sein (wie Kuka Sim), aber das Lernen der Bedienung eines Kuka-Roboters macht so schon mehr Spaß.


    Durch die Änderung des beigefügten Quellcodes, könnt Ihr Euch eine wirklich virtuelle Umgebung erstellen... Oder einfach nur sehen, wie man die CrosscommExe.exe OLE-Schnittstelle mit dem C++Builder benutzt (da gibt es ja nicht so viel Informationen zu).



    Schönen Gruß aus Frankreich,
    Tilman

  • Schritt für Schritt zum Roboterprofi!
  • DAS ist ja stark!


    Lustig, ganz genau das selbe wollte ich auch schon mal realisieren, bin aber leider an der crosscom gescheitert...


    Finde ich auch klasse, dass der Quellcode gleich mit dabei ist, so könnte ich es mir vielleicht noch selbst beibringen eine Schnittstelle zu programmieren.


    Also ganz großes :danke::beerchug::grinser043: an alle Beteiligten!


    ABER: Trotz scheinbar richtiger Einstellungen (.bat) bewegt sich das Ärmchen leider nicht. Ports der Firewall müssten auch offen sein. :huh:

  • Hallo Nils,



    Vielen Dank für Deine Rückmeldung.


    Wir haben an unserer Schule IMERIR nur einen Roboter, und der ist ständig in Benutzung. Außerdem ist es im Atelier ziemlich laut... (lauter Studenten... :->) Deswegen habe ich, eigentlich zunächst einmal für mich selbst, diese kleine Anwendung programmiert. Viel Zeit zum Programmieren und zum Testen hatte ich leider nicht, sorry!


    <<bewegt sich das Ärmchen leider nicht>>


    Die Gründe können vielseitig sein. Hier einige Vorschläge, um das Problem besser einzukreisen.


    1) OfficeLite: Ich habe nur die Version 4.1.7 getestet. Bei anderen Versionen ist sicher die OLE-Schnittstelle anders.


    2) Posserver.exe: Wenn man das Programm ausführt, wird entweder OfficeLite gestartet, oder (wenn OfficeLite bereits läuft) die Verbindung zur OLE-Schnittstelle hergestellt.


    Wenn die Verbindung zu Crosscomm richtig funktioniert, kann man die Winkel der einzelnen Achse auf der GUI sehen. Die Kontrolleuchte Cross muß grün leuchten.


    3) Dann werden die Winkel als Datagram losgeschickt (UDP/IP). Empfänger, also dort wo der Arm visualisiert wird, ist der Rechner der im Eingabefeld angegeben ist. Es ist "localhost" für denselben Rechner, sonst eine IP-Adresse (z.B. 192.168.0.1) oder der Name des Rechners (z.B. Feu09, bei mir).


    Ich benutzte normalerweise 2 Rechner. Im Augenblick läuft OfficeLite bei mir auf einem alten Pentium 500MHz Computer unter W2K den ich über VNC bediene, das reicht vollkommen aus. Grund dafür ist, daß OfficeLite 4.1.7 nicht so gut auf neueren Rechnern mit Multicore Prozessoren läuft. Instant Player benötigt dagegen mehr Leistung!


    Wenn der UDP Sender richtig funktioniert, leuchtet die Kontrolleuchte "Arm" ebenfalls grün.


    4) Instant Player


    Man kann das Programm alleine starten (im Menu Programme) und dann mit "File -> Open File" die wrl Datei anwählen (z.B. d:\SimuKr6\Visu\Kr6.wrl). Es müßte der Arm zu sehen sein, mit allen Achswinkeln auf 0°. Es gibt eine Konsole (Menu Windows->Console) die anzeigt, ob alles richtig läuft.


    Kleine Anmerkung: ich habe den Instant Player unter XP und Vista getestet. Er funktioniert nicht mit W2K, keine Erfahrung habe ich, was Windows 7 angeht (ich teste das mal die nächsten Tage). Die Linux Version ist unter Fedora nicht zum Laufen zu bringen :-<.


    5) Jetzt fehlt nur noch die Steuerung des Arms über das External Authoring Interface. Es ist ein kleines Java Programm was die Daten vom PosServer auf dem Port 4849 empfängt, und dann an den Instant Player an den Port 4848 weitergibt. Dieses Programm muß auf demselben Rechner wie der Instant Player ausgeführt werden.


    In der Datei KR6.bat, kann man sehen:


    start "Arm Server" "%JAVADIR%\bin\javaw" -cp "%SIMUKR6DIR%\visu;%PLAYERDIR%\bin\instantreality.jar" kr6


    Es wird die "Java Virtual Machine" gestartet (javaw), die Variable CLASSPATH wird so gesetzt, daß die Bibliothek für EAI und das Programm kr6(.class) gefunden werden.


    Zum Debuggen kann man auch die Zeile ändern in


    "%JAVADIR%\bin\java" -cp "%SIMUKR6DIR%\visu;%PLAYERDIR%\bin\instantreality.jar" kr6


    (also kein <<start "Arm Server">>, und <<java>> anstatt <<javaw>>)


    Dann öffnet sich ein DOS-Fenster in dem "MFJ Arm Server" ausgegeben werden sollte. Sonst läuft hier was falsch.


    6) Firewall: eigentlich meldet sich der Windows-Firewall von alleine, wenn auf einen Port zugegriffen wird, und bittet um Erlaubnis.


    Ich hoffe, meine Tips helfen Dir weiter. Sonst melde Dich noch mal!



    A+,
    Tilman

  • Hallo Nils,



    Mache mal den folgenden Test:


    Öffnen der Konsole Cmd.exe


    Dann in den Ordner Visu gehen:
    > d:
    > cd \SimuKr6\Visu


    Einmal kr6.bat ausführen.
    > kr6.bat


    Deiner Schilderung zufolge, öffnet jetzt bereits der Instant Player. Das ist schon die halbe Miete. Dann kopiere einmal den folgenden Befehl in die Konsole (mit der rechten Maustaste)


    > "%JAVADIR%\bin\java" -cp "%SIMUKR6DIR%\visu;%PLAYERDIR%\bin\instantreality.jar" kr6


    Was passiert?



    A+,
    Tilman

  • Wenn es denn funktionieren würde wäre das SUPER :grinser043: :grinser043:


    Hab nur eben auch ein Problem.
    Beim Start von PosServer bekomme ich sofort den Fehler "Klasse nicht registriert" :kopfkratz:
    Komm einfach nicht drauf was da fehlen könnte :denk: :huh:


    Die Visu funktioniert soweit einwandfrei.


    System Win XP SP2 - auf beiden Rechnern.
    Hab PosServer auch auf dem Visu Rechner probiert - gleicher Fehler.


    Für jegliche Hinweise bin ich sehr aufgeschlossen.


    Ein dickes :danke: schon mal im Voraus


    Servus Roland

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • UUUps sorry - sehe gerade dass meine Office Version V4.1.6 OL#7 ist.


    Ob es wohl daran liegt :huh:

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • Hallo Roland,


    <<UUUps sorry - sehe gerade dass meine Office Version V4.1.6 OL#7 ist.
    Ob es wohl daran liegt >>


    Bestimmt!


    Mein Programm beinhaltet keinerlei Quellcode von OfficeLite, sondern benutzt die OLE Schnittstelle, die während der Installation von OfficeLite auf Deinem Rechner installiert wird. Der Aufruf der Funktionen erfolgt dann mit Hilfe von dem sogenannten IDispatch Interface.


    Es ist durchaus möglich, daß sich diese Schnittstelle bei unterschiedlichen Versionen von OfficeLite ändert. Du müßtest dann für Deine Version die entsprechende TypLib mit dem C++Builder neu importieren (wie ich im Projekt "PosServer\lib\Kuka.bpk" gemacht habe)


    Die Version der Bibliothek auf meinem Rechner ist "CCCACE96-1B8B-4249-AE4F-5382E3E5C34F". Diese ID müßtest Du in der Registry für den Server CrosscommExe.Exe finden, sonst findet mein Programm die benötigten Funktionen nicht.



    A+,
    Tilman

  • Hallo Ihr beiden,



    Der Aufruf der Funktionen erfolgt dann mit Hilfe von dem sogenannten IDispatch Interface.


    Wie wäre es, wenn du das IDispatch Interface mit Late Binding ansprichst, ohne die Typbibliothek zu importieren ?


    Ein


    Variant word_app = Variant::CreateObject("word.application");


    funktioniert im C++ Builder auch wunderbar, egal welche MS Office Version installiert ist ...


    Wird hier doch auch verwendet:
    http://www.roboterforum.de/rob….0.html;msg30113#msg30113



    Grüße


    Urmel

  • Hallo Urmel,



    <<Wie wäre es, wenn du das IDispatch Interface mit Late Binding ansprichst, ohne die Typbibliothek zu importieren?>>


    Vielen Dank erst einmal für Deinen Vorschlag! Das ist eine gute Idee. Mit dieser Technik bekommt man eine gewisse Unabhängigkeit zu der benutzten Version von OfficeLite. Allerdings sprechen auch einige Gründe dagegen.


    - Mein Ziel war es nicht, eine überall funktionierende Software zu erstellen. Dann hätte ich sowieso alles anders gemacht :->. Ich wollte nur selbst, mit minimalem Aufwand, das "Ärmchen" bewegen. Die Lösung habe ich dann veröffentlicht, da in diesem Forum oft Fragen zum Thema CrosscomExe oder Cross.ocx gestellt werden (auch von mir). Eine existierende Lösung hilft da oft weiter.


    - Mir lag das Programm von Paul Chavant [http://paul.chavent.free.fr] vor (ein ehemaliger Schüler der IMERIR). Daran habe ich mich zunächst orientiert.


    -Late Binding hat den Nachtteil, daß man nicht genau die Änderungen in der jeweiligen Schnittstelle kennt. Man kann Glück haben, oder auch nicht. Der Programmieraufwand ist jedoch deutlich höher [http://word.mvps.org/faqs/interdev/earlyvslatebinding.htm]:


    <<To those unfortunate souls using programming environments in which you have to use late binding, all I can say is: Look on the bright side – you could have ended up as an Assembly language programmer ...>>


    - Das Importieren der Typen Bibliothek ist mit dem C++ Builder einfach. Man schiebt dann die importierte Komponente auf die GUI und braucht dann "nur noch" die Funktionen des Objekts aufzurufen.


    - Vielleicht noch ein Wort zu der Verwendung von CrosscomExe oder Cross.ocx: Ich selber rate unseren Schülern davon ab, da diese Schnittstellen nicht dokumentiert sind. Wir werden nächstes Jahr die RS232 Schnittstelle benutzten (mit einem RS232 Server, Moxa NPort 5110, den wir in den Schaltschrank einbauen), um die Ergebnisse eines Bildverarbeitungsprogramms in den Roboter einzulesen.



    Viele Grüße,
    Tilman

    Zitat

  • Deiner Schilderung zufolge, öffnet jetzt bereits der Instant Player. Das ist schon die halbe Miete. Dann kopiere einmal den folgenden Befehl in die Konsole (mit der rechten Maustaste)


    > "%JAVADIR%\bin\java" -cp "%SIMUKR6DIR%\visu;%PLAYERDIR%\bin\instantreality.jar" kr6


    Was passiert?


    In der Konsole erscheint die Meldung: MFJ Arm Server


    ...dann ein paar Sekunden Stille...


    ...und dann kommt eine Fehlermeldung: java.lang.Error: please start vrml viewer first at kr6.main(kr6.java:107)



    Sorry für die sehr späte Antwort.

  • Hallo Nils,



    <<Sorry für die sehr späte Antwort.>>


    Macht nichts, ich war sowieso die letzten Tage in Deutschland und hätte gar nicht antworten können :->


    <<please start vrml viewer first at kr6.main(kr6.java:107)>>


    Das Java Programm versucht mit dem InstantPlayer über dessen EAI Schnittstelle zu kommunizieren. Das geschieht mit dem Befehl (Zeile 101 im Programm kr6.java) :


    browser=vrml.eai.BrowserFactory.getBrowser(address,EAIPORT);


    address ist hier "localhost" und EAIPORT hat den Wert 4848.


    Wenn nach 5 Sekunden der InstantPlayer nicht gefunden wird, bricht das Programm mit der von Dir geschilderten Fehlermeldung ab.


    Folgende Ursachen sind denkbar:


    1) Der InstantPlayer läuft noch nicht. Siehst Du bereits den Arm (alle Achs-Winkel auf 0°), bevor Du das Java-Programm startest? Sonst starte den Player doch erst einmal manuell oder mit KR6.bat.


    2) Dein Firewall verhindert die Kommunikation mit dem InstantPlayer. Schalte den doch mal aus.


    3) Sonst weiß ich auch nicht weiter... Ich habe diesen Teil des Programms aus einem Beispiel kopiert und es hat geklappt... Im Forum http://forum.instantreality.org/ gibt es einen (aber auch nur einen) ähnlichen Fall...


    Den InstantPlayer, der auf dem selben Rechner wie das Java-Programm installiert sein muß, habe ich mit Windows XP, Vista und Win7 getestet. Der funktionierte bei mir immer einwandfrei. Allerdings ist der InstantPlayer nicht mit Windows 2000 kompatibel.



    Schöne Grüße,
    Tilman

  • Hallo,



    Wir, das heißt die Ingenieur-Schule IMERIR/Frankreich) haben letzte Woche ein Paket aus Deutschland bekommen :lol: mit OfficeLite 5.5.OL.


    Cross.ocx funktioniert weiterhin :biggrins: : wir können also auch mit dieser Version unseren "Virtuellen Arm" steuern. Die einzige Änderung, die wir festgestellt haben, ist daß cross.ocx nicht mehr das GUI startet.


    Wir lassen jetzt einfach unsere Anwendung von OfficeLite starten, daß ist auch viel logischer (eine großen Dank :danke: an den irren Polterer, der hier im Forum beschrieben hat, wie das geht).


    Falls Ihr an der kompilierten Version Interesse habt, Download an gewohnter Stelle.


    Ich habe auch noch ein Frage an Euch :hilfe: : wie kann ich an das Programmierhandbuch Version 5.5 bekommen; wenn möglich auch in französischer Sprache ? Das könnte ich gut für meinen Unterricht gebrauchen.


    Mit freundlichen Grüssen,
    Tilman/Perpignan


  • wie kann ich an das Programmierhandbuch Version 5.5 bekommen; wenn möglich auch in französischer Sprache ?


    Schreib mir 'ne PN mit deiner Mailadresse.
    Die Dokumentation auf französisch ist leider stark begrenzt.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden