- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 63

Thema: LabView-Fernsteuerungs-Tool mit diversen Routinen

Baum-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

Ä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
  •  

12V Akku bauen