Programmierung RoboPro mit Kamera

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Trix
Beiträge: 6
Registriert: 27 Mai 2016, 17:14

Programmierung RoboPro mit Kamera

Beitrag von Trix » 27 Mai 2016, 17:33

Hallo zusammen,
wir sollen für die Schule mit den Robotics TXT Advanced und Profo Electronics Baukästen einen Roboter mit Spurerkenner und Hindernisserkenner und ein Hochregallager bauen und komplett programmieren. Dabei gelten folgende Vorgaben:

- Regal mit horizontal verstellbarem Hub
- Regal muss automatisch Roboter als Transportmittel erkennnen
- Transportmittel muss autonom vorgegebener Fahrspur folgen (schwarz, ca. 15mm breit)
- Transportmittel muss Hindernisse erkennen können, mit denen es kollidieren könnte und sofort beim Erkennen für min. 5 Sekunden stehen bleiben
- Hindernis darf nicht berührt werden
- Transportmittel muss min 0,7km/h schnell fahren

Wir haben das Programm Robo Pro zur Verfügung. Ohne Vorkenntnisse des Programmierens stehen wir aber ziemlich auf dem Schlauch.
Hindernisse und die Spur sollen nur mit der Kamera erkannt/ausgelesen werden.
Wir bitten um Hilfe beim Programmieren in genanntem Programm und/oder Beispiele.

Vielen Dank im Voraus

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Programmierung RoboPro mit Kamera

Beitrag von hamlet » 28 Mai 2016, 00:30

Hallo Trix,
- Regal mit horizontal verstellbarem Hub
- Regal muss automatisch Roboter als Transportmittel erkennnen
- Transportmittel muss autonom vorgegebener Fahrspur folgen (schwarz, ca. 15mm breit)
- Transportmittel muss Hindernisse erkennen können, mit denen es kollidieren könnte und sofort beim Erkennen für min. 5 Sekunden stehen bleiben
- Hindernis darf nicht berührt werden
- Transportmittel muss min 0,7km/h schnell fahren
Ist diese Liste Eure gesamte Aufgabenstellung, oder gab's da noch mehr? Falls das wirklich alles ist, solltet Ihr dem Aufgabensteller irgendwie höflich darauf hinweisen, dass man mit so unvollständig hingeschmierten Anforderungen nicht viel anfangen kann. Fragen, die sich mir stellen:
  • Was bitte ist ein Regal mit horizontal verstellbarem Hub?
  • Wie tut das Regal kund, dass es den Roboter als Transportmittel erkannt hat? Was ist denn da überhaupt die Aufgabenstellung. Was soll da wohin transportiert werden.
  • Wie sieht die Fahrspur genau aus? Schwarz auf weiß, pink oder kariert? Oberflächenstruktur? Minimaler Kurvenradius?
  • Was sind das für Hindernisse? Blaue Klötze, Hundehaufen, Schlaglöcher oder ein von "Anforderungsmanagement" träumender Oberstudienrat. Liegen die Hindernisse auf oder neben der Linie?
  • Was soll denn nach den fünf Sekunden Stillstand passieren. Soll das Hindernis umfahren oder gesprengt werden?
  • 0.7 km/h = 70000cm / 3600s ~ 20 cm/s das ist ambitioniert, d.h. das ist verdammt schnell für einen kleinen fischertechnik-Roboter und wahrscheinlich nicht einfach realisierbar.
Abgesehen von der unzureichend spezifizierten Aufgabenstellung – " Macht mal was Feines mit 'nem autonomen Hochregal und Renn-Roboter" – halte ich die Vorstellungen Eures Aufgabenstellers für Anfänger für viel zu komplex.
Ein Beispiel einer brauchbaren Aufgabenbeschreibung findet Ihr z.B. hier: http://www.robocupgermanopen.de/de/junior/rescue
Die könnt Ihr ja mal Eurem Betreuer zukommen lassen, mit dem freundlichen Hinweis, dass die Unterrichtsvorbereitung nüchtern viel besser von der Hand geht.

Ansonsten findet Ihr im RoboPro-Installationsverzeichnis viele Beispielprogramme und didaktisches Begleitmaterial im PDF-Format. Die RoboPro-Hilfe ist auch nicht schlecht:
C:\Program Files (x86)\ROBOPro\TXT-Discovery-Set_de.pdf
C:\Program Files (x86)\ROBOPro\Sample Programs\ROBOTICS TXT Discovery Set\Trail_searcher_3.rpp
C:\Program Files (x86)\ROBOPro\RoboProDE.chm

Beginnt mit einfachen Aufgaben zum Warmwerden mit RoboPro und fischertechnik. Baut z.B. einen einfachen Spurverfolger: Den Roboter nach Anleitung aufbauen, die Beispielprogramme verstehen, probieren und evtl. verbessern … und dann kreativ werden und Spaß damit haben. Und vielleicht findet Ihr dann in Zusammenarbeit mit Eurem Betreuer doch noch eine spannende und realisierbare Aufgabe.

Viel Erfolg,
Helmut

Trix
Beiträge: 6
Registriert: 27 Mai 2016, 17:14

Re: Programmierung RoboPro mit Kamera

Beitrag von Trix » 31 Mai 2016, 16:04

Hallo Helmut,

vielen Dank für deine ausführliche Antwort! :)
Haben nun einige weitere Details bekommen.

Unser aktuelles Hauptproblem ist, wie man ein Programm erstellt, dass dazu führt,
dass die Kamera eine schwarze, max. 15 mm breite Spur auf weißem Untergrund (Papier) erkennt und dieser folgt,
egal ob Kurven, geradeaus oder ähnliches.

Hat da jemand für uns einen Hinweis oder Tipps?

Vielen Dank im Voraus und noch einen schönen Tag :)

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Programmierung RoboPro mit Kamera

Beitrag von hamlet » 31 Mai 2016, 19:53

Hi Trix,
wie oben schon erwähnt:
Ansonsten findet Ihr im RoboPro-Installationsverzeichnis viele Beispielprogramme und didaktisches Begleitmaterial im PDF-Format. Die RoboPro-Hilfe ist auch nicht schlecht:
C:\Program Files (x86)\ROBOPro\TXT-Discovery-Set_de.pdf
C:\Program Files (x86)\ROBOPro\Sample Programs\ROBOTICS TXT Discovery Set\Trail_searcher_3.rpp
C:\Program Files (x86)\ROBOPro\RoboProDE.chm
... die Links hatte ich erst später hinzugefügt.
Fangt am besten mit dem "TXT-Discovery-Set_de.pdf". Am Anfang gibt's wichtige Tips und Beschreibungen der Aktoren und Sensoren. Ab Seite 23 wird's für Euch dann richtig interessant. Die entsprechenden Beispielprogramme findet Ihr in "C:\Program Files (x86)\ROBOPro\Sample Programs\ROBOTICS TXT Discovery Set\". Die RoboPro-Hilfe ist eine gute Referenz mit Beispielen für alle RoboPro Elemente und Programmier-Techniken.
Viel Spaß,
Helmut

Trix
Beiträge: 6
Registriert: 27 Mai 2016, 17:14

Re: Programmierung RoboPro mit Kamera

Beitrag von Trix » 02 Jun 2016, 12:33

Hey Helmut
hast uns sehr weitergeholfen, sind nun ein ganzes Stück weitergekommen was das Verständnis angeht. Danke!!!

Haben mittlerweile auch das Regal mit horizontalem Hub aufgebaut (Regalboden, wo sich nach rechts und links bewegt) und dieses mit einer Lichtschranke versehen.
Wie verschaltet man nun die Batterie mit dem Motor des Zahnrades und der Lichtschranke so, dass sich das Regal bewegt (egal wie), sobald der Roboter die Lichtschranke 'berührt'? Benötigt man dafür das Bauteil 152 063 (Interface)???

Vielen Dank und viele Grüße,
Trix

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Programmierung RoboPro mit Kamera

Beitrag von hamlet » 02 Jun 2016, 19:45

Hi Trix,
Fein, das freut mich zu hören.
Ja, das macht Ihr am besten mit dem kleinen Electronics-Modul. Im Prinzip ist das ein kleiner Controller mit ein paar einfachen fest installierten Programmen, die die beiden Ausgänge abhängig von den drei Eingängen ansteuern. Schaut mal in das Begleitheft des Moduls:
http://www.fischertechnik.de/de/home/Ed ... hefte.aspx
http://www.fischertechnik.de/de/Resourc ... ?raid=7984
Dort findet Ihr Anschlusspläne und Beschreibungen der verschiedenen Programme. Recht weit hinten im Dokument ist ein flexibles Grundprogramm beschrieben. Vielleicht passt aber auch eines der modell-spezifischen Programme für Eure Hochregal-Anwendung.
Weitere Programme findet Ihr hier:
http://www.fischertechnik.de/de/home/do ... -tech.aspx
http://www.fischertechnik.de/de/Resourc ... ?raid=7939
Viel Spaß,
Helmut

Trix
Beiträge: 6
Registriert: 27 Mai 2016, 17:14

Re: Programmierung RoboPro mit Kamera

Beitrag von Trix » 07 Jun 2016, 16:44

Hallo Helmut,

haben das Hochregal aktuell mit zwei Tastern, dem Interface und der Lichtschranke programmiert. Jedoch tut es noch nicht so wie es sollte.
Haben uns überlegt, dass das Regal über die Lichtschranke den Roboter erkennen soll, also ist die Lichtschranke vorgelagert.
Wenn diese Lichtschranke betätigt ist, soll der eine Taster das Regal in Bewegung setzen, der andere Taster das ganze wieder anhalten. Ist die Lichtschranke nicht betätigt soll es auch bei Betätigung des Tasters keine Reaktion des Regals geben...

Sinn dahinter auf die Praxis bezogen ist, dass der Roboter ankommt und ein zustätzlicher Mitarbeiter, der nur für Logistik zuständig ist durch Betätigung der Taster dem Roboter den Zugriff auf das Regal erlaubt...

Kannst du uns da helfen?
Anbei die aktuelle Interface-Belegung:
- Motor Regal: M1
- Taster für Regalbewegung an: I1
- Taster für Regalbewegung aus: I3
- Lichtschranke (Fototransistor): I2

Interface und Lampe für Lichtschranke an die Batterie

Besten Dank mal wieder und viele Grüße,
Trix

PS: Zwischenzeitlich wurde unser Roboter auf den Namen "Helmut" getauft... :)

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Programmierung RoboPro mit Kamera

Beitrag von hamlet » 07 Jun 2016, 21:41

Hallo Trix,
Mhm, ich bin mir nicht sicher, ob sich Euer Plan realisieren lässt. Mit dem Grundprogramm wird das nicht funktionieren. Ich denke auch, dass keines der Spezialprogramme passt … deren Funktion habe ich aber nur überflogen.
Verwendet Ihr das Grundprogramm? Wenn ja, habt Ihr den Eingang I2 (Lichtschranke) invertiert?

Begleitheft Seite 12 + 16
DIP1 - DIP3: Kehrt die Funktion der Eingänge um. Diese Funktion wird z. B. beim Einsatz
einer Lichtschranke benötigt. Hier stehen die DIP-Schalter 1-3 auf „ON“. Der Eingang
wird aktiviert, wenn die Lichtschranke unterbrochen wird.

Grundprogramm: 0 0 0 0 0
• M1: Motor mit Funktion:
o I1 = Motor links
o I2 = Motor rechts
o I3 = Motor Stop
• M2: Blinklicht (nur LED) oder Motor Rechts-/Linkslauf,
Frequenz 0,5 s bis 5 s über Potentiometer einstellbar
• I1, I2 und I3 als Eingang (Schließer)
Wenn ich die (verdammt oberflächliche) Doku richtig verstehe, reagieren die Eingänge nur auf Schaltvorgänge in einer bestimmten Richtung (Flanken-Trigger), also entweder auf Ein->Aus bzw. Aus->Ein, falls der Eingang invertiert ist. Der Zustand der anderen Eingänge ist dabei völlig unerheblich.
Bei Eurer Schaltung müsste das Regal bei Unterbrechung der Lichtschranke direkt losfahren. Dann kann man es noch über I3 anhalten oder über I1 in der anderen Richtung wieder anfahren. Aber die ursprüngliche Richtung ist dann blockiert. Der Roboter müsste dazu die Lichtschranke kurz verlassen.

Mir ist eben folgendes in den Sinn gekommen:
Den Fototransistor der Lichtschranke, die entlang der Frontseite Eures Regals und parallel zur Bewegungsachse des Regals verläuft, parallel an I1 und I2 anschließen, wobei einer der Eingänge, z.B. I1, invertiert ist. Achtet dabei auf die richtige Polarität des Fototransistors (Verkabelungspläne in der Bauanleitung)! Den beweglichen Teil des Regals mit einem Schalter ausstatten, der sowohl an der Warte-Position des Regals als auch von dem wartenden Roboter betätigt wird. Den Taster als Schließer verkabeln und mit I3 verbinden. Vielleicht müsst Ihr noch eine Platte mit Gelenk an den Taster fummeln um die Trefferquote zu erhöhen.
Ich bin mir nicht sicher, ob das mit dem parallelen Anschluss des Fototransistors an I1(invertiert) und I2 funktioniert. Wenn ja, wäre die Funktion wie folgt.
  • Der Roboter unterbricht die Lichtschranke => Der Fototransistor sperrt => I1 reagiert => Das Regal bewegt sich von der Warte-Position in Richtung Roboter.
  • Das Regal erreicht den Roboter => Der Taster schließt => I3 reagiert => Das Regal bleibt beim Roboter stehen.
  • Helmut macht Sachen (-; … ich fühle mich geehrt.
  • Der Roboter verlässt seine Position und gibt die Lichtschranke wieder frei => Der Fototransistor schaltet durch => I2 reagiert => Das Regal fährt zurück zur Warte-Position
  • Das Regal erreicht seine Warte-Position => Der Taster schließt => I3 reagiert => Das Regal stoppt an der Warte-Position.
  • Das funktionierte auch wenn der Roboter voreilig abhaute.
Beste Grüße,
Helmut

Trix
Beiträge: 6
Registriert: 27 Mai 2016, 17:14

Re: Programmierung RoboPro mit Kamera

Beitrag von Trix » 08 Jun 2016, 13:32

Hey Helmut,

du sagst es, recht oberflächliche Beschreibung, wie das Interface was tut...
Nach Rücksprache mit den Betreuern ist es so, dass das Regal autonom den Roboter erkennt.
Von der Logik her soll das Programm wie folgt funktionieren:

- Roboter fährt an Regal, erkennt dieses als Regal und nicht als Hindernis und beendet daraufhin sein Programm
- Regal erkennt Roboter über Taster, die vom Roboter berührt werden. Bei Betätigung beider Taster wird Regal in Bewegung gesetzt

Somit ist die Lichtschranke und das Interface ja überflüssig. Hast du eine Idee, wie der Roboter das Regal als Signal zum Beenden erkennt, aber trotzdem relativ nahe daran fährt?
Und wie verschalte ich die beiden Taster des Regals als UND-Schaltung mit dem Motor des Regals und der Batterie? Mit dem Kabelverlegen haben wir so die Problemchen :lol:

Wieder vielmals Danke und beste Grüße,
Trix

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Programmierung RoboPro mit Kamera

Beitrag von hamlet » 08 Jun 2016, 19:30

Hi Trix,
vernünftig, dass Ihr mit einer simplen Lösung beginnt. Man braucht nicht für jedes Problem gleich einen Controller. "if all you have is a hammer, everything looks like a nail"
Hast du eine Idee, wie der Roboter das Regal als Signal zum Beenden erkennt, aber trotzdem relativ nahe daran fährt?
Lasst mal Eure Phantasie spielen. Ich weiß ja gar nicht wie Euer Regal genau aussieht. Es ginge evtl. mit der Kamera und einem Spur-Sensor, der ja die Breite, Farbe und Position von bis zu fünf Spuren gleichzeitig erkennen kann. Ihr könntet Euer Regal zum Beispiel mit roten Balken verzieren, um es von Hindernissen unterscheidbar zu machen. Oder die Spur ändert Form und/oder Farbe. Das Regal könnte auch ordentlich Lärm schlagen, wenn es den Roboter erkennt. Den könnte der Roboter mit dem Mikrofon der Kamera (ab RoboPro 4.2.3) detektieren. Oder den Boden vor dem Regal mit Alu-Folie bekleben, die den Kontakt zwischen zwei Drähten, die Roboter über den Boden schleift, schließt. ...
Und wie verschalte ich die beiden Taster des Regals als UND-Schaltung mit dem Motor des Regals und der Batterie?
Als Reihenschaltung. Das schafft Ihr. Kiekt Euch mal die Seiten fünf und sechs des Begleithefts an. Dort sind auch noch andere wichtige Grundschaltungen recht gut erklärt. Die dort vorgestellte Polwende-Schaltung könnte später für Euch noch sehr interessant werden.
Beste Grüße,
Helmut

thkais
Beiträge: 381
Registriert: 31 Okt 2010, 21:45

Re: Programmierung RoboPro mit Kamera

Beitrag von thkais » 08 Jun 2016, 22:51

Hallo,

mit dem Programm "Schiebetür" des Electronics-Moduls wäre folgendes möglich:
- Roboter fährt an Regal und löst einen Taster aus -> Motor des Regals fährt bis Endtaster 1 ("Tür wird geöffnet")
- solange der Roboter die Lichtschranke unterbricht, bleibt der Motor des Regals stehen
- fährt der Roboter aus der Lichtschranke heraus, fährt der Motor des Regals (etwas zeitverzögert) zurück bis auf Endtaster 2 ("Tür wird geschlossen")
Gruß
Thomas

Trix
Beiträge: 6
Registriert: 27 Mai 2016, 17:14

Re: Programmierung RoboPro mit Kamera

Beitrag von Trix » 20 Jun 2016, 13:52

Vielen Dank euch beiden für eure Hilfe, mittlerweile wird es langsam :D
Der Roboter verfolgt die Spur, justiert nach, erkennt Hindernisse anhand von der Abfrage nach der Farbe und das Regal auch über Farbe. Das Regal erkennt den Roboter mithilfe der Fototransistoren, die auf die vorne angebrachten LEDs des Roboter reagieren.

Einziges Problem ist nur noch:
wenn Unterprogramm "Blinken" in Unterprogramm "Spur folgen" eingefügt ist funktioniert aus irgendeinem Grund die korrekte Spurverfolgung nicht mehr.
Fügen wir das Unterprogramm "Blinken" im Hauptprogramm ein tut es nicht so, wie es sollte...
An was kann das liegen und wie können wir es so verschachteln, dass er Spur folgen und Blinken parallel macht?

Aktuell sieht unser Hauptprogramm grob so aus:
Eingang, LED vorne an, Unterprogramm "Spur folgen", "HIndernis prüfen" -> ergibt "Hindernis prüfen" kein Hindernis wieder oberhalb von "Spur folgen" rein, erkennt er ein Hindernis wird abgefragt, ob es wirklich ein Hindern oder ein Regal ist. Wenn Hindernis dann Warnleuchte an und 10sek warten, wenn Regal dann Warnleuchte aus und Programm beenden.

Wie immer vielmals danke und einen schönen Tag.

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Programmierung RoboPro mit Kamera

Beitrag von hamlet » 20 Jun 2016, 18:55

Hi Trix,
Versucht mal Euer "Blinken"-Unterprogramm in einen parallelen Prozess z.B. im Hauptprogramm zu hängen.
Die Kommunikation zwischen den Prozessen kann einfach über globale Variablen erfolgen.
Schaut Euch dazu am Besten in der Hilfe das Kapitel "5.2 Variablen und mehrere Prozesse" an.
Beste Grüße,
Helmut

Antworten