Hilfe bei Robomow RL500 Begrenzungsgeber

fosi

New member
Hallo,
Hilferuf an die Roboterspezialisten.
Ich würde gerne den von euch entwickelten Rasenroboter (Ardumower) nachbauen.
Da ich schon seit Jahren einen Robomow RL500 besitze, muss ich den vorhandenen Begrenzungsgeber für beide verwenden.
Mein Gebersignal sieht so aus.(Dateien im Anhang)

Kann mir einer sagen, ob die von euch entwickelten Softwarefilter, für meinen Fall auch zu verwenden sind. Wenn ja, ist es möglich die eine abgespeckte Version mit einem Analogausgang für das Begrenzungssignal und einen Binärsignal für Begrenzungssignal innen/außen von euch zu bekommen.
Da ich Anfänger bin und auch nicht der große Mathematiker, wäre ich für Hilfe sehr dankbar.

Ich hätte auch noch Bilder vom Empfängersignal für innerhalb/außerhalb und genau auf dem Begrenzungssignal.
 
Hallo,

gern kann ich das probieren (im Prinzip muss nur der "Code" des Matched Filters geändert werden, und schon geht alles auch für Robomow RL500) -

Frage: Könntest Du einmal das Signal einmal aufzeichnen (z.B. als .WAV-Datei mit Soundkarten- oder Oszilloskop-Software)? Dann könnte ich den Filter damit austesten und sofort sehen ob es funktioniert...

Gruss,
Alexander
 
Hallo Alexander,
vielen Dank für Deine Antwort.
Ich habe versucht, die Empfangskurve aufzunehmen, aber das ist nur ein hin und her springen.
Im Anhang ist ein Video von dem hin und her springen und die Aufzeichnungsdatei (rec).
Leider habe ich keine Ahnung, wie ich das ändern könnte und kann nur für “ innerhalb/über dem Draht/außerhalb“ jeweils Bilder liefern.
Wenn Du jetzt immer noch mir weiterhelfen willst, hätte ich noch einen Vorschlag, ich sende Dir meinen Geber (RTL500) zu, so könntest Du vernünftig das Signal analysieren.


Mit freundlichen Grüßen
Heinz
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1218/Inn_2.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Hallo Heinz,

die Dateien (Deine Aufzeichnungsdatei etc.) müssten vor dem Hochladen "gezippt" werden (.zip) - ansonsten werden sie anscheinend vom Forums-Filter gefressen (hier ist nichts sichbar).

Wie hast Du eigentlich "Kanal 2" erfaßt, ist das das Signal an einer Spule? Im Prinzip wäre ein Spulensignal schon gar nicht so verkehrt, da ja der Filter später auch mit einem Spulensignal arbeiten muss.

Man kann den Filter übrings selber durch probieren entwickeln - mit diesem Oszilloskop hätte man die Möglichkeit dazu (benötigt aktuellen Browser Chrome oder Firefox): http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html
Der Clou ist dass man das echte Signal (max. 1V) über Mikro/Line-In einspeisen und den Filter (z.B. Matched-Filter Template, d.h. gesuchte Signalabfolge) dann in Echtzeit ändern kann und direkt sieht wie er reagiert.

Z.B. würde man für den Ardumower-Schleifensender einstellen:
1. Filter: Match (verwendet die Frequenz 9615 Hz und die Signalabfolge unter "Matched filter template")
2. Math: MinMax (stellt nur den pos. (bzw. neg.) Peak des Filter-Ergebnisses dar, was jeweils absolut größer ist)

Mit diesen Einstellungen bekommt man ein Filter-Ergebnis, dessen Amplitude die Signalstärke des Senders wiedergibt sowie das Vorzeichen (pos./neg.) ob man sich innerhalb oder außerhalb der Schleife befindet.

Die genaue Funktionsweise (Schleife, Matched Filters etc.) hatte ich ja hier schon mal im Video erklärt.

Ich werde als nächstes noch eine Möglichkeit zum Aufzeichnen in das Web-Oszilloskop einbauen (Record to .wav).

Noch besser wäre ja, wenn Du das Signal aufzeichnen könntest - Dann könnten wir alle einen guten Filter dafür finden...

Gruss,
Alexander
 
Hallo Alexander,
ich habe mir dasSchleifenempfänger Kit und das Board (Nano V3.0 ATmega328-AU) von eurem Shop gekauft.
Das Senderausgangssignal auf Kanal 1 und das Schleifenempfängerausgangsignal auf Kanal 2 geklemmt.
Mein PC-Oszilloskop (DSO-2090 USB) kann aufzeichnen, aber keine wav-Datei, sondern nur rec-Dateien erzeugen.
Kannst Du damit etwas anfangen oder mir erklären, wie ich das Schleifenempfängerausgangsignal in einer wav-Datei speichern kann.

Ich habe mir das Video von Dir angeschaut und darum um eine abspeckte Version mit den Filtern, das gefilterte Signal auf einem Analogausgang und ein Binärsinal für innen/außen gebeten, weil ich totaler Anfänger bin und erst dann, wenn ich das Programm verstehe, den nächsten Bauabschnitt fortsetzen werde.
Im Anhang eine Datei von den Signalen(Anzeige springt immer hin und her) am Oszilloskop und die Aufzeichnungsdatei.

Mit freundlichen Grüßen
Heinz
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1218/Arduino_Versuche_HF.zip/
 
Zuletzt bearbeitet von einem Moderator:
Hallo Heinz,

alles klar, jetzt verstehe ich Deine Bilder auch :) - Ich kann nichts versprechen, da ich selber kein Experte in Signalverarbeitung bin ;-)

Dein Schleifen-Signal kann ich inzwischen mit der DSO-Software abspielen.

Mal schauen was sich machen lässt...

Gruss,
Alexander
 
@Heinz: das sind meine ersten Erkenntnisse:

Das RL500 Signal hat eine Länge von 48ms und sieht scheinbar wie folgt aus:

- 8 ms lang "LOW"
- 8 ms lang "HIGH"
- 16 ms lang 8 kHz Sinus (ergibt Zeitdauer pro Sinus 125 uS bzw. 128 Sinus-Folgen mit 8 kHz)
- 16 ms lang 8 kHz Sinus Phasenverschoben zum vorherigen Block

Die beiden 8ms langen LOW, HIGH Blöcke wird man vermutl. in der Spule nicht detektieren können - diese werden sich als 16 ms Stille zeigen.

Das deckt sich auch recht gut mit dieser Seite: http://ocfnash.wordpress.com/2010/06/26/discman-powered-mower/
Ein Matched Filter Template (8000 Hz) sähe also wie folgt aus:
-128 Folgen "0,0" (Stille)
-128 Folgen "-1,1" (Rechteck)
-128 Folgen "1,-1" (Rechteck phasenverschoben)

Allerdings ist fraglich ob der Matched Filter uns hier hilft:

Könnte man die LOW, HIGH Blöcke in der Spule empfangen, wäre er perfekt (hier: Eingangssignal mit starkem Rauschen überlagert):
robomow_rl500_signal.png


Kommen diese Blöcke aber als Stille in der Spule daher, hat man gleich große Peaks im negativen und positiven, kann also außen und innen nicht wirklich unterscheiden:
robomow_rl500_signal_coil.png


Daher würde es ständig zwischen innen/außen springen...

Vielleicht hat jemand anderes eine Idee? :)
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/robomow_rl500_signal.png/
 
Zuletzt bearbeitet von einem Moderator:
Hallo Alexander,
ich möchte mich trotzdem recht herzlich für Deine Bemühungen bedanken.
Ich probiere es schon Monate lang und komme auf kein vernünftiges Ergebnis.
Werde mir ein leichteres Hobby suchen, das ich auch lösen kann.

Mit frendlichen Grüßen
Heinz
 
Hallo Heinz,

wir sollten nicht gleich aufgeben :) - meine Erkenntnisse haben nur gezeigt, dass der Matched Filter hier anscheinend nicht die Lösung ist. Werde mal einen Experten fragen, ob der eine Idee hat...

Gruss,
Alexander
 
Nachtrag: ein möglicher Ansatz z.B. wäre dies mit FFT zu lösen - das Robomow RL500 Signal ist ja in 3 Blöcke aufgeteilt:

Beispiel: ADC 16 Khz Sample-Rate:
- 256 Samples Stille
- 256 Samples 8 Khz Oszillator
- 256 Samples 8 Khz Oszillator phasenverschoben

Beispielsweise wählt man ein "Fenster" dessen Breite etwa einem halben Block entspricht (128 Samples). Mit diesem Fenster führt man die FFT durch (z.B. https://code.google.com/p/ardumower/source/browse/trunk/ardumower/unused/fix_fft.h) und verschiebt das Fenster dann immer um 128 Samples.

128 Samples FFT_1 => Peak, Phase
128 Samples FFT_2 => Peak, Phase
128 Samples FFT_3 => Peak, Phase
128 Samples FFT_4 => Peak, Phase
128 Samples FFT_5 => Peak, Phase
128 Samples FFT_6 => Peak, Phase

Man erhält für jede FFT einen Peak wenn die Oszillator-Frequenz vorhanden ist. Desweiteren erhält man für diese Peaks die Phaseinformation. Nun wertet man aus, wie sich die Phase ändert.

Mal schauen was mir noch einfällt...
 
Hallo Alexander,
ich kann doch nicht erwarten, dasst Du meine Probleme löst,
denn Deine letzen Lösungansätze sind leider schon über meinem Horizont.
Ich bin bereits 68 Jahre und wollte mich nur sinnvoll beschäftigen und nicht verzweifeln.
Wenn Du es trotzdem weiter versuchst, bin ich selbstverständlich an der Lösung sehr interessiert,
aber ich kann leider zu neuen Lösungsansätzen nichts mehr beitragen.
Vieleicht haben andere Mitglieder auch so ein Problem, dann könnten es mehrere Forummitglieder verwenden.
Mit freundlichen Grüßen
Heinz
 
Ich formuliere hier nochmal das Problem (da ich gerade feststelle dass es mit der FFT-Idee vermutl. auch nicht zu lösen wäre):

Das Signal des Robomow RL500 ist in 3 Blöcke aufgebaut, vereinfachend (verkürzt) als "Signal innen" dargestellt. Das "Signal außen" ist dann einfach das inverierte Signal zu "Signal innen".


Code:
Signal innen   0  0  0  0  0  0, -1  1 -1  1 -1  1,  1 -1  1 -1  1 -1 
Signal außen   0  0  0  0  0  0,  1 -1  1 -1  1 -1, -1  1 -1  1 -1  1


Ziel ist dass man erkennen möchte, ob "Signal innen" oder "Signal außen" auftritt.

Beispielsweise könnte man auf die Idee kommen, einen Oszillator mitlaufen zu lassen - Aber je nach (zufälliger) Phasenverschiebung des Oszillators (hier als "Oszillator 1" und "Oszillator 2" dargesellt) wäre dieser in Phase (oder auch nicht) mit dem zweiten Block des gesuchten Signals):


Code:
Signal innen   0  0  0  0  0  0, -1  1 -1  1 -1  1,  1 -1  1 -1  1 -1 
Oszillator 1   1 -1  1 -1  1 -1,  1 -1  1 -1  1 -1,  1 -1  1 -1  1 -1

Signal innen   0  0  0  0  0  0, -1  1 -1  1 -1  1,  1 -1  1 -1  1 -1 
Oszillator 2  -1  1 -1  1 -1  1, -1  1 -1  1 -1  1, -1  1 -1  1 -1  1


Vielleicht hat jemand anderes eine Idee? :)
 
Mir ist noch eine Idee eingefallen: an den Stellen wo die Phase wechselt (zu Beginn des 2. Blocks/Ende des 3. Blocks und zwischen dem 2. und 3. Block) hat das Signal eine andere Frequenz - darauf könnte z.B. einen Bandpaß setzen und erhält dann ein Signal welches nur am Anfang mit sich selbst korreliert - man könnte am Bandpaß gefilterten Signal auch einfach nur die Peaks (pos/neg getrennt) zählen:

robomow_rl500_bandpass.png

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/robomow_rl500_bandpass.png/
 
Zuletzt bearbeitet von einem Moderator:
@Heinz: Du könntest einmal folgendes ausprobieren:

1. Spule direkt an den PC anschließen (Mikrofoneingang/Line-In)
2. Web Oszilloskop aufrufen: http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html 3. Filter Bandpaß wählen ("Bandpass") und Frequenz auf 4000 Hz (?) einstellen

Nun müsstest Du theoretisch (wie in meiner Simulation) im negativen und positiven eine unterschiedliche Anzahl von Peaks erhalten. Beim Wechsel der Spule von "innen" zu "außen" müsste sich dieses umkehren.

Vielleicht kannst Du das bestätigen :) Bandpaß geht evtl. auch mit einem guten USB-Oszilloskop...
 
@Heinz: dann stimmt die Frequenz für den Bandpaß-Filter noch nicht ganz

Vorschlag: nimm mal eine kostenlose Soundkarten-Software wie z.B. Audacity: http://audacity.sourceforge.net/?lang=de
Diese starten, dann Spule wieder an den PC anschließen und in Audacity auf den roten Aufnahmeknopf drücken und das Signal für 10 Sekunden aufzeichnen. Das ganze mit "Projekt unter" speichern (Achtung: es werden eine Datei und ein Unterordner für das Projekt erstellt). Das gespeicherte Projekt vollständig zippen und dann hier im Forum anhängen.

Mit der Sound-Aufzeichnung kann ich dann den Filter selber austesten...

Danke
Alexander
 
Oben