- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 63

Thema: LabView-Fernsteuerungs-Tool mit diversen Routinen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773

    LabView-Fernsteuerungs-Tool mit diversen Routinen

    Hallo!
    Ich möchte euch heute endlich vorstellen, was ich für meine Bachelorarbeit an der Uni Regensburg und Kooperation mit der Hochschule Regensburg erarbeitet habe:
    (Achtung! Jetzt kommt viiiiiieeeel Text… ) Wem das zu viel Text ist, für den habe ich das ganze HIER nochmal schnell und kurz zusammengestellt: Was schon jetzt möglich ist, und was noch kommen soll.
    Es handelt sich dabei um ein umfassendes Fernsteuerungstool (Bluetooth oder Seriell) für den RP6 mit M32 und M128 (wahlweise auch nur Base oder Base mit M32).
    Die Programme auf den Controllern stammen dabei im Großen und Ganzen von Fabian E.‘s „Remotrol“. Ich habe lediglich seine OpenSource-Codes etwas verändert bzw. angepasst (ADCs, Sensorwerte, …) .
    Dafür gibt’s hier nochmal ein gaaaaannnnnz großes Danke an Fabian E. für das Bereitstellen des gesamten Sourcecodes und für die Hilfe bei einigen Problemen!!!!
    DANKE!!!!!!!

    -> Zum Download gibts die (aktuelle?) Firmware und alles Weitere HIER.

    Das LabView-Programm zeigt zunächst, ebenfalls ähnlich (nur graphisch nicht so schön) wie die Remotrol von Fabian E., sämtliche Sensoren des RP6: Geschwindigkeit, Motorstrom, Helligkeit, Temperatur, Mikrofon, Bumper (vorne, hinten), ACS (vorne, hinten), Batterie. Außerdem die Sensoren von SnakeVision und dessen Taster, ein Feuchtigkeitssensor, den Ultraschall-Entfernungssensor SRF02 sowie ein 2D-IR-Abstandssensormodul. Des Weiteren ist ein Kamerabild eingebunden.
    Fangen wir mal links im sogenannten Frontpanel (Hauptfenster, siehe angehängte Fotos) an:
    Oben lässt sich der RP6 stoppen, die Serielle Schnittstelle kann ausgewählt werden. Das Fern-Starten des RP6 funktioniert leider nur mit dem Basismodul, nicht mit den Erweiterungen. Daran wird natürlich noch gearbeitet.
    Daneben sind die Sensorwerte Temperatur, Luftfeuchtigkeit und SnakeVision angebracht. Darunter ist eine Registrierkarte, welche folgendes enthält:
    - „Routinen“ (erkläre ich später)
    - „Einstellungen“: Wie hoch ist die Tolleranzschwelle (= Differenz zweier gleichartiger Sensoren, wird bei den Routinen näher erklärt), wie hoch ist die Geschwindigkeit (kann mit den Tasten „+“ und „-„ eingestellt werden), An- und Abschalten von SnakeVision und 2D-IR-Sensor, Einstellen bzw. (De-)Aktivieren der ACS vorne und hinten, Aktivieren des automatischen Anhaltens bei Bumperberührung in der jeweiligen Fahrtrichtung. Außerdem kann das ACS aus Stromspargründen automatisiert werden. Dann ist es vorne an, wenn man vorwärts fährt und hinten, wenn man rückwärts fährt.
    - „Beeper“: Einstellen von Tonhöhe und –Dauer. Geht leider nur bei der M32, der Beeper der M128 krächzt nur ein bisschen.
    - „LEDs“: Schalten aller LEDs der drei Module einzeln oder gemeinsam. Achtung: Die verwendeten I/Os (z.B. zum Schalten der hinteren ACS oder des SnakeVision) sind an die LEDs gekoppelt.
    - „Distanz“: Die Sensoren des 2D-IR und des SRF02 werden dargestellt. Mehr dann, wenn ich die Routinen erkläre.

    Zurück zum Frontpanel: in der Mitte werden alle Hauptsensoren (Motor-Zeugs, Bumper, ACS, Batterie… ) dargestellt. Das ACS (vorne wie hinten) wird in drei Entfernungsstufen aufgetragen (grün, gelb, rot). Ein Foto des RP6 zeigt zusätzlich die Zustände aller LEDs der drei Module und ob der RP6 bereit ist, das heißt ob das Programm auf dem RP6 läuft und eine Übertragung stattfindet. Und man sieht (nur als Gag), welche Pfeiltaste auf der Tastatur man gedrückt hat (das sind die vier dicken, grünen Punkte).
    Rechts daneben ist wieder eine Registrierkarte, in der gegliedert ist:
    - „Anleitung“: hier wird alles, was ich hier schreibe, nochmal erklärt.
    - „Video“: Zeigt das Live-Kamerabild. Die vier IR-Dioden des 2D-IR-Sensors können als „Nachtsicht-Scheinwerfer“ genutzt werden.
    - „Kamera-Einstellungen“: Kamera kann (de-)aktiviert werden, weitere Einstellungen…
    - „Verarbeitung“: Zeigt ein alle 200ms überarbeitetes Kamerabild, in welchem 2-Euro-Münzen gesucht und mit einem Fadenkreuz versehen werden. Wie genau nach einem eingespeicherten Foto einer 2-Euro-Münze gesucht werden soll, kann unter „Kamera-Einstellungen“, „Minimum Match Score“ eingestellt werden.
    - „Tracking“: Ist noch leer; es werden gerade nur die gefahrenen Strecken der Ketten angezeigt. Ich möchte hier später einmal aus den Bewegungsdaten des RP6 (vielleicht mit Kompass) eine Karte mit Objekten (durch ACS, SRF02, 2D-IR oder Bumper erkannt) darstellen.
    Darunter sind alle Servopositionen der 11 möglichen Servos dargestellt.

    Rechts neben diesem Block sind eher unwichtige Sachen in einer Registrierkarte zusammen gefasst: Gesendete und empfangene Daten, Manuelles Initialisieren der Seriellen COM-Schnittstelle (wurde bisher noch nie gebraucht, da sie bei Programmstart automatisch initialisiert wird), Zeit, Datum, Zahl der einzelnen Programmaufrufe, Direkt-Auswahl von Befehlen wie „fahre vorwärts“, „drehe dich links“, „Beepe“…

    Zur Tastatursteuerung:
    Normale Pfeiltastensteuerung (vor, zurück, Drehung links rechts, Kurve links rechts vor zurück, stopp mit den vier Pfeiltasten). Geschwindigkeitsparameter kann mit „+“ und „-„ eingestellt werden. Scheinwerfer können über „*“ oder „/“ (Multiplikator und Divisor im Numpad) geschaltet werden, der Beeper kann mit Enter angeschaltet werden – Standard ist das der Kammerton „a“, solange man nicht die Tonhöhe verstellt. Die Leertaste gibt ein Stoppsignal. Die 11 Servos können über die Tastatur angesteuert werden, z.B. über w-a-s-d die ersten zwei, der dritte über q-e, die nächsten beiden über t-f-g-h und wieder einer über r-z und so weiter.
    Außerdem können statt der Pfeiltasten auch Tasten im Frontpanel in der ersten Registrierkarte unter „Einstellungen“ gedrückt werden.

    Zu den Routinen:
    Es gibt 6 Routinen:
    - „Fernsteuerung“: ist eine Fernsteuerung (klar!) mit allen Funktionen wie oben beschrieben.
    - „TV-Remote“: der RP6 kann mit einer TV-Remote gesteuert werden (siehe Beispielprogramme von Arexx). Es funktionieren 2 Servos, die Motoren (Ziffern 1-9), Licht, Beeper, Geschwindigkeitsparameter +/-.
    - „MoveAround!“: der RP6 fährt unter Beachtung des ACS vorne vorwärts durch die Gegend. ACS vorne wird automatisch aktiviert, wenn noch nicht geschehen.
    - „Wärmequelle“: Der RP6 aktiviert das SnakeVision und vergleicht dessen zwei Werte mit dem oben schon angesprochenen Toleranzwert und fährt den RP6 zum „wärmeren“ Punkt. Wird dabei ein Vielfaches des Toleranzwertes überschritten, dreht sich der RP6 erst mal, bis sich der Unterschied der Temperaturen links und rechts nicht mehr so stark unterscheidet.
    - „Lichtquelle“: Wie „Wärmequelle“, nur eben mit den Helligkeitssensoren.
    - „Abstandhalter“: In der linken Registrierkarte unter „Distanz“ kann in dieser Routine ein Abstands-Mittelwert der insgesamt 4 Sensoren des 2D-IR-Sensors (benannt mit Q1Q2, Q3Q4, Q5Q6 und Q7Q eingespeichert werden. Von nun an versucht der RP6, diesen Wert zu halten. Speichert man z.B. einen Wert ein, während die Hand etwa 30cm vor dem Sensor ist, und bewegt man danach die Hand, versucht der RP6 durch Vor- und Zurückfahren, die 30cm zu halten. Als Toleranz dient wieder der einstellbare Toleranzwert. Achtung: Diese IR-Sensoren sind nicht (wie z.B. die Sharp-IRs) Frequenzmoduliert. Das heißt, dass u.a. direktes Sonnenlicht die gemessenen Werte ganz schön durcheinander bringt. Dafür kann man die ordentlich hellen vier IR-LEDs als Scheinwerfer für die Kamera ganz gut verwenden, machen ordentlich was her.
    Wird eine Routine deaktiviert, oder beendet man das LabView-Programm, hält der RP6 (normalerweise…) sofort an. Zwei Routinen können nie gleichzeitig laufen. Für nicht-Standardsensoren (z.B. Snake, 2D-IR) kann man in der Registrierkarte "Routinen" wählen, ob die Routine vor- oder rückwärts ausgeführt werden soll (je nachdem, ob der Sensor vorne oder hinten angebaut ist).
    Alle Routinen können auch durch die 5 Taster der M32 und durch den SnakeVision-Taster aktiviert werden.
    Alle Aktionen, welche man durch die Tastatur steuern kann (ausgenommen der Pfeiltastensteuerung), sind auch in den anderen Routinen steuerbar (Beeper, Licht, Geschwindigkeit, Servos).

    Ich habe außerdem eine weitere Zusatzplatine im RP6-Layout mit Eagle erstellt, welche einen weiteren Akkuanschluss (verpolungs- und kurzschlussgesichert, auf 5V geregelt, mit Ladeeinheit), USRBUS und XBUS (SDA und SCL sind extra mehrfach herausgeführt, um z.B. SRF02 anzuschließen), ein BTM-222-Modul mit Adapter für 5V-Betrieb, einen Feuchtigkeitssensor, einen Batterie-Spannungssensor, einige Transistoren zum Schalten der Sensoren usw., sowie einen auf etwa 6,6V gehobenen, durch einen Transistor mit genügend Strom versorgten und über einen 470uF-Kondensator abgesicherten Servoverteiler für die 11 Servos bereit hält. An diese Platine ist eigentlich alles Weitere (Kamera, alle neuen Sensoren, Servos, …) angeschlossen und über USRBUS und einen weiteren 10-Pol-Stecker (für die acht Servos, die durch die M32 gesteuert werden) mit den jeweiligen anderen Platinen verbunden. Lediglich die Scheinwerfer sowie die Schaltung für das hintere ACS sind direkt auf die Basisplatine gelötet.
    Die Sensoren (Kamera mit SRF02, 2D-IR, SnakeVision) sind jeweils auf zwei Servos montiert.
    Eine hintere Stoßstange hat zwei Sharp-Sensoren, zwei Bumper und zwei LEDs. Die Sharps liegen an ADC0 und 1 der Base, die Bumper zusammen mit den LEDs an I/Os der Base.

    Theoretisch sollte das ganze auch nur mit der Basis oder mit Basis+M32 laufen, habe ich noch nie ausprobiert.

    Was kommt nun?
    - Leider hatte ich die letzten Wochen keine Zeit mehr. Jedoch möchte ich das oben angesprochene „Tracking“ noch einbauen. Später soll dann auch an Hand dieser Daten z.B. die kürzeste Verbindung zwischen zwei Punkten gefahren werden können.
    - Die Kamera soll mehr als nur 2-Euro-Münzen erkennen, z.B. ist mit LabView das Barcode-Lesen möglich, Buchstaben- und Ziffernerkennung, oder eine Laserpunkt-Verfolgung… sie das Projekt von Biohazardry: hier und ein Video hier.
    - Einige Routinen sind noch nicht ganz ausgearbeitet, da steckt in jedem Fall noch Potenzial drin.
    - Das ACS und die „Ausweich-Funktion“ könnten auch in anderen Routinen genutzt werden.
    - Das LCD wird derzeit noch gar nicht verwendet, das soll sich ändern.
    - Der RP6 könnte Befehle, die man im PC eingibt, via IR z.B. an andere Roboter senden.
    - Programmeinstellungen und Sensordaten (gesendete/empfangene Daten, das letzte Kamerabild, die Tracking-Karte etc) könnten in einer separaten Datei abgespeichert werden.
    - Wenn das neue WLAN-Zusatzmodul rauskommt, werde ich außerdem versuchen, das Programm auf dieses Modul zu übertragen – M32 und M128 würden dann erst einmal komplett rausfliegen (der RP6 wiegt jetzt schon 1,5 Kilo und braucht bei voller Sensor-, Servo-, Scheinwerfer- und Motorenauslastung viel zu viel Strom). Vielleicht hilft mir ja Fabian E.?????
    EDIT: Fabian E. hat sich für das Projekt M256 beworben!!!!!
    Danach muss natürlich auch das LabView-Programm angepasst werden und auf WLAN umgestellt werden und bei 60 I/Os, die das neue Ding zur Verfügung hat, kann man ja echt noch einiges ausbauen.

    Ein großer Nachteil meiner Fernsteuerung ist die Unselbstständigkeit des RP6 selbst, da nahezu alle Aktionen (und vor allem die Reaktionen) auf dem PC geschehen, nicht auf dem RP6. Das hat den Vorteil der großen Rechenleistung des PCs, aber auch den großen Nachteil, dass manche (Re-) Aktionen relativ spät eingeleitet werden (z.B. sofortiges Stoppen nach Bumperberührung). Das soll sich aber ändern, ich möchte gewisse grundlegende (Re-)Aktionen direkt im RP6 abarbeiten.
    In dieser Bachelorarbeit stand jedoch die LabView-Programmierung im Vordergrund, weniger die Mikrocontroller-Programmierung, welche ich bei weitem noch nicht ausreichend beherrsche, denke ich.


    Ich hoffe, euch gefällt es!
    Ich möchte mich auch bei Euch (insbesondere bei den Admins, bei Biohazardry und vor allem bei Fabian E.) bedanken! Habt mir echt viel geholfen, wenns mal wieder nicht weiter ging oder ich so Fragen hatte wie „Wie lese ich denn eigentlich einen ADC aus???“
    Danke Euch. Ach ja, um Meinungen/Vorschläge/Kritik wird gebeten
    Grüße,
    Fabian
    Geändert von fabqu (05.07.2012 um 09:43 Uhr) Grund: Aktualisierung der Downloads

  2. #2
    Max Web
    Gast
    Hallo,

    ein sehr schönes Projekt hast Du da, so etwas hätte ich auch gerne als Bachelorarbeit, wenn es so weit ist

    Ich plane derzeit ein ähnliches Programm, daher habe ich ein paar Fragen:
    Du schreibst, dass die Aktionen des RP6 erst etwas später eingeleitet werden - wie lange dauert das in etwa, bis die aktualisierten Sensordaten auf dem PC ankommen?
    Welche Baudrate verwendest Du mit dem BTM222 und wie oft/wann aktualisierst Du Deine Sensordaten? Wie schneidet das Remotrol-Protokoll dabei performancemäßig ab, d.h. wie viele Kommandos/Sensorupdates pro Sekunde kriegst Du übertragen?
    Ein kleiner Vorschlag, falls es wirklich so langsam ist: Eventuell könntest Du bei Kollisionen eine Art "Basis-Verhalten" auf dem Roboter implementieren, welches per PC auch abschaltbar ist und den Roboter sofort stoppt.

    Weiter würde es mich sehr interessieren, welches Kameramodul Du verwendest und wie Du die Daten zum PC überträgst.

    Grüße,

    Max Web

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi Max,
    danke dir.
    Ich versuche dir deine Fragen mal so gut wie möglich zu beantworten.
    Das einfachste: Baudrate habe ich von Fabian E. übernommen, 38400.
    Die Daten werden laufend alle 200ms (glaube ich) vom RP6 gesendet, der PC arbeitet sie dann simultan ab. Die Zeitverzögerung zwischen einer Aktion und der Reaktion ist dabei deutlich unter einer Sekunde, in der Regel merkt man es nicht. Nur bei den Bumperanschlägen merkt man, dass der RP6 (im Gegensatz zu den Beispielprogrammen z.B.) noch ganz kurz weiterfährt.
    Das Senden von befehlen an den RP6 klappt ganz gut, nur darf man es nicht übertreiben (ich lasse immer etwa 20-50ms zwischen zwei Befehlen). Wenn man mit der vollen PC-Leistung rechnet und Daten schickt, gehts natürlich schief!
    Das mit dem Basis-Verhalten hatte ich mir auch schon überlegt, zumindest was Bumper und evtl auch noch ACS betrifft. Hatte nur in der Bachelorarbeit dafür keine Zeit mehr, steht auf der ToDo-Liste.
    Ich hatte schon einmal einen Thread hier, der sich mit meinem größten Problem beschäftigte: Bei laufenden Motoren (und den ganzen anderen Stromfressern Servos, superhelle LEDs und so zeugs) versagte die gesamte Kommunikation sowohl der Module untereinander, als auch vom M128 zum PC. In der Regel stürzte dabei die M128 als erste ab, während die Base noch im letzten Befehl hängen blieb und z.B. einfach weiterfuhr. Das habe ich aber mit der getrennten Stromversorgung (eine für Base, M32 und M128, eine für alle weiteren Sensoren, die Servos und weitere Spielereien) ganz gut in den Griff bekommen.

    Grüße

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Ich wollte gerade den Sourcecode der uCs und die .exe einstellen, jedoch sind die Dateien zu groß...
    Auch als .zip! (630kb alleine die .exe)
    Besteht überhaupt Interesse? Dann würd ichs mal anders versuchen; z.B. mit diesem Link hier. Weiß nicht, ob das wirklich klappt
    Weiß nur nicht, ob das geht.
    Würde mich sehr über Kritik/Anregungen freuen!!! Fragen immer gern hier an mich!

    Grüße

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Bei mir hat's geklappt!

    Danke!
    Gruß
    Dirk

  6. #6
    Max Web
    Gast
    Hallo,

    bei der Firmware kann ich jetzt nur die Konfiguration M128=Master, M32=Slave, Base=Slave finden, ich selbst nutze aber nur die Base und ein RNControl 1.4 mit einer portierten M32 Lib.
    Der Source scheint aber nach kurzem Drüberschauen fast komplett auf Remotrol zu basieren - funktioniert das Programm auch, wenn ich einfach die Originaldateien der Remotrol benutze oder kriege ich dann Probleme?

    Vielleicht sollte noch erwähnt werden, dass man zum Ausführen auch die LabView Runtime-Engine benötigt - diese ist in LabView enthalten (Tip für alle Studenten: Schaut mal nach, ob ihr LabView von eurer Uni kostenlos bereitgestellt bekommt) oder kann auch im Internet unter http://joule.ni.com/nidu/cds/view/p/id/2534/lang/en heruntergeladen werden.

    Grüße,

    Max Web

Ähnliche Themen

  1. Suche Datenblätter zu diversen ICs (Pollin)
    Von C_Classic im Forum Elektronik
    Antworten: 21
    Letzter Beitrag: 22.05.2010, 19:34
  2. Mit AVR-DOS bytes von diversen Bereiche der karte lesen
    Von sato im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 05.08.2007, 19:23
  3. LCD routinen in C
    Von _maddin im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 28.01.2007, 21:29
  4. I²C Bus Slave Routinen
    Von ACU im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 27.04.2006, 20:52
  5. LCD routinen
    Von ebb im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 13.01.2006, 21:12

Berechtigungen

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

Labornetzteil AliExpress