Quazi als fortsetzung dieses Threads
Beitrag "Algorithmus für Linefollower mit 5 Sensoren"
bin ich auf einpaar Problematiken gestoßen, die dieser LF:
http://www.seattlerobotics.org/encoder/200610/article2/index.php
scheinbar nicht hat.
Die Frage lautet jetzt wieso?
Aktuelles:
Ich baue gerade einen Linienverfolgunsroboter, wo die Motoren mit PID
angesteuert werden sollen.
Den PID Algorithmus schreibe ich in C auf einen ATmega644, der vorläufig
mit 8 MHz internen Quarz betrieben wird.
Problem bei den Sensoren, Detail:
Im Bild ist das Problem recht gut zu erkennen. Die Wertigkeiten tauchen
nämlich 2 mal auf. wenn der Sensor auf die Linie zukommt und wenn er
wegkommt.
Dh.: Wenn die Linie zukommt, so habe ich zB:
sensorLinks0 = 0, sensorLinks1 = 30, sensorRechts0 = 0, sensorRechts1 =
0
Jetzt wird diese Wertigkeit (wie auch immer sie realisiert wird) dem PID
übergeben. Soweit so gut.
Jetzt nehmen wir an diese ausregelung reicht nicht, so kann es sein,
dass wenn die Linie noch weiter nach links geht, ich nach einer Zeit
wieder auf sensorLinks = +30 komme.
====> Wertigkeit ist nicht mehr linear und die erste Voraussetzung
für den Regelkreis ist für die Katz!
Also dachte ich mir eine Lösung aus und die Überlegung passt
prinzipiell.
Siehe Bild 2. (Hoffe die Idee ist selbsterklärend).
Idee: Mit dem 1/0 Sensor weiß ich auf welcher Seite der
Vollwertigkeitssensoren ich bin und somit rechne ich softwaretechnisch
noch eine Korrektur dazu.
Jedoch funktioniert das mit den Anordnungen nicht sehr gut weil die 1/0
Sensoren nicht den ganzen Bereich abdecken und es zu sozusagen größeren
"Lücken" kommen könnte.
Jetzt habe ich lange überlegt sowohl eine SW als auch HW-Technische
Lösung zu finden, und habe einmal recherschiert und sehe, dass alle die
das PID System verwenden keine ähnliche Problematik haben.
Z.B.:
http://www.seattlerobotics.org/encoder/200610/article2/index.php
siehe Video PID (etwas weiter unten).
Der verwendete Sensor den ich momentan habe ist der cny70. Das Problem
gilt aber auch für andere Sensoren der Art.
Meine Frage jetzt also:
Wie macht so etwas richtig?
Ich wäre euch sehr dankbar für Beiträge und Ideen.
lg andy
Andy S. schrieb:> Die Frage lautet jetzt wieso?
Die Sensoren werden so kalibriert, dass ein linearer Verlauf
Signal-Distanz von der Mitte erhalten wird.
Die Linie ist breiter als ein Sensor bzw. die Sensoren ausreichend
schmal und eng genug für die Linie angeordnet. D.h. die Situation dass
ein Sensor allein ein doppeldeutiges Signal (10%/10%) liefert, kommt
nicht vor. Im Rahmen der HW "sehen" stets mehrere Sensoren die Line.
Ich denke dein Problem ist bei deinem Algo der zu große Abstand der
Sensoren untereinander, ansonsten könntest du ja mithilfe der
Nachbarsensoren die genaue Linienposition ermitteln und müsttest nicht
auf die digitalen Sensoren zurückgreifen.
Für dein Problem solltest du deshalb die Linie genau lokalisieren
können, also entweder die Sensoren näher zusammen und damit rumrechnen,
oder des Sichtbereich der Sensoren vergrößern (eventuell mehr Abstand
zum Boden), damit sich die Sichtbereiche überlappen.
:-)
Stefan B. schrieb:> Die Sensoren werden so kalibriert, dass ein linearer Verlauf> Signal-Distanz von der Mitte erhalten wird.
Das ist mir schon klar.
Stefan B. schrieb:> Die Linie ist breiter als ein Sensor bzw. die Sensoren ausreichend> schmal und eng genug für die Linie angeordnet.
Genau. Aber trotzdem besteht die Möglichkeit
Stefan B. schrieb:> D.h. die Situation dass> ein Sensor allein ein doppeldeutiges Signal (10%/10%) liefert, kommt> nicht vor.
Sehe dir einmal das Bild an und sag mir dann, dass das nicht vorkommt.
lg andy
Floh schrieb:> Ich denke dein Problem ist bei deinem Algo der zu große Abstand der> Sensoren untereinander
Das ist absolut richtig. Auf jedenfall stellt das ein Problem dar. Die
cny70
http://www.krause-robotik.de/service/download/forum/CNY70.jpg
habe aber leider Abstände dazwichen.
Und mit einem Transistor geht das glaube ich auch nicht gut, weil ja ein
kleiner Abstand immer bestehen bleibt.
Floh schrieb:> also entweder die Sensoren näher zusammen und damit rumrechnen
Damit rumrechnen ist gut.
Ohne zusätzliche Information kann ich nichts rumrechnen. Ich könnte
höchstens schauen wie er 10ms vorher reagiert hat und wenn er trotzdem
kleiner wird dann soll er den Wert größer wählen, aber SW technisch sind
da sicher noch einpaar Lücken drinn.
lg andy
Floh schrieb:> Für dein Problem solltest du deshalb die Linie genau lokalisieren> können, also entweder die Sensoren näher zusammen und damit rumrechnen,> oder des Sichtbereich der Sensoren vergrößern
... oder die Linie breiter machen
Andy S. schrieb:> Das ist absolut richtig. Auf jedenfall stellt das ein Problem dar. Die> cny70> http://www.krause-robotik.de/service/download/forum/CNY70.jpg> habe aber leider Abstände dazwichen.
Du kannst sie ja auch 'auf der Linie' versetzt anordnen
+-----+ +-----+ +-----+
| | | | | |
+-----+ +-----+ +-----+
+------+ +------+
| | | |
+------+ +------+
dann rücken ihre Sichtbereiche auch näher zusammen.
Aber wenn ich mir dein Photo ansehe, hast du noch jede Menge Leerraum
zwischen den Sensoren, der nicht sein muss
Aber was auch immer du tust, die Anordnung muss so sein, dass die Linie
entweder komplett und exakt unter einem Sensor liegt oder aber dass 2
Sensoren die Linie sehen können. Nur dann kannst du exakt sagen, wo die
Linie in Bezug zu den Sensoren liegt.
Andy S. schrieb:> Genau. Aber trotzdem besteht die Möglichkeit
Dein Bild ist etwas zu klein für mich ;-)
Bei den Leuten aus Seattle sind die Maße der Linie und die Abstände der
Sensoren in einer Zeichnung angegeben (Anhang). Dort kann ich mir nicht
vorstellen, wie ein zweideutiges Signal eines Sensors alleine entsteht.
Bei deiner Fotomontage mit deutlich schmalerer Linie kannst du natürlich
ein Falschsignal provozieren.
Karl heinz Buchegger schrieb:> ... oder die Linie breiter machen
Das kann ich nicht weil bei dem Roboterwettbewerb das schon auf 1,5 cm
ausgelegt ist.
Karl heinz Buchegger schrieb:> Du kannst sie ja auch 'auf der Linie' versetzt anordnen>>> +-----+ +-----+ +-----+> | | | | | |> +-----+ +-----+ +-----+>> +------+ +------+> | | | |> +------+ +------+>> dann rücken ihre Sichtbereiche auch näher zusammen.
Ja, habe ich auch schon genau so überlegt, aber wie erkenne ich die
unterschiedlichen 10%?
Da bei den cny70 es links und rechts noch Abstände gibt geht es einmal
mit denen nicht.
Wenn ich jetzt Phototransistoren nehme, so habe ich das Problem dass ich
sehr sehr viele brauche um den Effekt der Linearität zu bekommen und
dann hätte man ein Problem mit dem ADC.
Karl heinz Buchegger schrieb:> Aber wenn ich mir dein Photo ansehe, hast du noch jede Menge Leerraum> zwischen den Sensoren, der nicht sein mussAndy S. schrieb:> bin ich auf einpaar Problematiken gestoßen, die dieser LF:> http://www.seattlerobotics.org/encoder/200610/arti...>> scheinbar nicht hat.>> Die Frage lautet jetzt wieso?
Das ist ja die große Frage. Wie macht er das??
Und wenn du dir das Video anschaust, dann stellst du fest, dass es
einwandfrei funktioniert.
lg andy
Stefan B. schrieb:> Bei deiner Fotomontage mit deutlich schmalerer Linie kannst du natürlich> ein Falschsignal provozieren.
Bei dem ist die Linie auch 5mm breit.
So hat der das Problem offensichtlich beseitigt.
Er verteilt so große Wertigkeiten (den ausgemessenen Werten), sodass das
garnicht mehr auffallt.
Gut, dass du mich darauf aufmerksam machst.
Also wäre das Ziel sehr große Sensoren zu nehmen, somit könnte man
diesen Effekt bedrängen.
lg andy
Andy S. schrieb:> Das ist ja die große Frage. Wie macht er das??>> Und wenn du dir das Video anschaust,
Wenn ich mir vor allen Dingen seine Aufbauskizze mit den Massen ansehe,
dann stelle ich fest, dass er seine Sensoren so angebracht hat, dass er
von Sensormitte zu Sensormitte genau den Abstand hat, der der
Linienbreite entspricht.
Und wenn ich mir das jetzt in Form von Signalen vorstelle, dann stelle
ich fest, dass es zu dem von dir beschriebenen Fall nicht kommen kann.
Denn etweder es sieht nur 1 Sensor die Linie, dann liegt die Linie genau
darunter (oder es handelt sich um einen Randsensor und die Linie ist
schon ausserhalb der Anordnung), oder aber es sehen immer 2 Sensoren die
Linie, dann sagt mir das Verhältnis der beiden (nebeneinanderliegenden)
Sensorwerte wie die Linie in Bezug auf diese beiden Sensoren liegt. Und
das ist immer eindeutig
Andy S. schrieb:> Also wäre das Ziel sehr große Sensoren zu nehmen, somit könnte man> diesen Effekt bedrängen.
Nein, das stimmt nicht. Eher kleinere Sensoren uns nahe beieinander.
Plastikgehäuse links/rechts etwas abschleifen, damit die CNY70 enger
zusammen kommen? Nach der Skizze im Datenblatt könnte man da 28% Breite
einsparen...
Lichtschutz dann durch eine dünne Metallfolie. Oder geschickte Anordnung
mit beabsichtigtem Fremdlicht benachbarter Sensoren.
Karl heinz Buchegger schrieb:> Und wenn ich mir das jetzt in Form von Signalen vorstelle, dann stelle> ich fest, dass es zu dem von dir beschriebenen Fall nicht kommen kann.>> Denn etweder es sieht nur 1 Sensor die Linie, dann liegt die Linie genau> darunter (oder es handelt sich um einen Randsensor und die Linie ist> schon ausserhalb der Anordnung), oder aber es sehen immer 2 Sensoren die> Linie, dann sagt mir das Verhältnis der beiden (nebeneinanderliegenden)> Sensorwerte wie die Linie in Bezug auf diese beiden Sensoren liegt. Und> das ist immer eindeutig
Karl, du hast das Rätsel gelöst!
Ich glaube jetzt zu wissen wie der das macht:
Das ist dabei der Punkt:
oder aber es sehen immer 2 Sensoren die
> Linie, dann sagt mir das Verhältnis der beiden (nebeneinanderliegenden)> Sensorwerte wie die Linie in Bezug auf diese beiden Sensoren liegt. Und> das ist immer eindeutig
Denn wenn der 2te schon reagiert, dann weiß ich bald komme ich in die
2te Hälfte des ersten Sensors, so kann ich die Wertigkeit vom ersten
korrigieren und sie dadurch vergrößern (SW technisch) und diese rechne
ich dann zur Sensor2 Wertigkeit dazu.
Stimmt meine Überlegung?
lg andy
Andy S. schrieb:> Das kann ich nicht weil bei dem Roboterwettbewerb das schon auf 1,5 cm> ausgelegt ist.
Zufälligerweise RoboCup? :-D
Wenn die Linie 1,5cm breit ist, reicht es, wenn die Sensorenmittepunkte
1,5 cm nahe zusammen sind, das ist machbar.
Wenn du die Sensoren noch enger kriegst, wird die Auflösung natürlich
noch besser.
:-)
Andy S. schrieb:> Andy S. schrieb:>> Also wäre das Ziel sehr große Sensoren zu nehmen, somit könnte man>> diesen Effekt bedrängen.>> Nein, das stimmt nicht. Eher kleinere Sensoren uns nahe beieinander.
Das kann man so nicht sagen.
Das hängt auch vom Abstand zur Unterlage und vom Sichtwinkel des Sensors
ab.
Aber auf jeden Fall muss die Anordnung so sein, dass immer 2
nebeneinanderliegende Sensoren die Linie sehen können (oder sie exakt
unter einem Sensor liegt). D.h. wenn das Signal von einem Sensor am
abnehmen ist, muss das Signal vom danebenliegenden Sensor schon
zunehmen.
Andy S. schrieb:> Karl, du hast das Rätsel gelöst!
Und das in nur 20 Sekunden beim Drüberscrollen durch die Web-Page :-)
> Denn wenn der 2te schon reagiert, dann weiß ich bald komme ich in die> 2te Hälfte des ersten Sensors, so kann ich die Wertigkeit vom ersten> korrigieren und sie dadurch vergrößern (SW technisch) und diese rechne> ich dann zur Sensor2 Wertigkeit dazu.
Du korrigierst da überhaupt nichts.
Du suchst dir von deinen Sensorwerten die beiden größten
(nebeneinanderliegenden) raus und bestimmst deren Verhältnis zueinander.
Dieses Verhältnis ist ein direktes Mass dafür wie die Linie in Bezug auf
die beiden Werte liegt. Damit kriegst du den Distanz-Bruchteil der Lage
der Linie in Bezug auf die beiden Sensoren und wie weit der nähere der
beiden Sensoren an der Mittellinie liegt, weißt du.
Karl heinz Buchegger schrieb:> D.h. wenn das Signal von einem Sensor am> abnehmen ist, muss das Signal vom danebenliegenden Sensor schon> zunehmen.
Ja im Endeffekt wäre das genau die Vorgangsweise. Jetzt könnte man sich
noch anschaun wie man die Auswertung macht, 2 Möglichkeiten sehe ich da:
1)
MesseSensorLinks() * 10
MesseSensorLinks2() * 20
Also mit verschiedenen Wertigkeiten
oder:
2)
MesseSensorLinks()
MesseSensorLinks2()
Abfrage(Wenn 2ter Sensor anfangt ein Signal zu bekommen) dann:
zähle vom vorigen Sensor 255+ weitere Änderungen.
Im ersten Fall muss man sich dann damit spielen bis man eine gute
liniarität hinbekommt.
Beim zweiten ist das so, dass ich die Sensoren so anordnen muss, dass
genau bei der Hälfte des ersten Sensors der zweite Sensor anfangt. Also
auch keine große Hürde.
lg andy
Hi
>Lichtschutz dann durch eine dünne Metallfolie. Oder geschickte Anordnung>mit beabsichtigtem Fremdlicht benachbarter Sensoren.
In der Schaltung aus dem Link werden die LEDs der Optokoppler einzeln
geschaltet.
MfG Spess
Karl heinz Buchegger schrieb:> Du korrigierst da überhaupt nichts.> Du suchst dir von deinen Sensorwerten die beiden größten raus und> bestimmst deren Verhältnis zueinander. Dieses Verhältnis ist ein> direktes Mass dafür wie die Linie in Bezug auf die beiden Werte liegt.> Damit kriegst du den Distanz-Bruchteil der Lage der Linie in bezug auf> die beiden Sensoren und wie weit der nähere der beiden Sensoren an der> Mittellinie liegt, weißt du.
Hmm, da könnte es aber sein, dass beide Sensoren den gleichen Wert
haben.
Also man muss beim Auslesen Wertigkeiten vergeben und somit ist
automatisch eine genaue Erkennung nicht möglich sondern durch
Ausprobieren zu lösen.
lg andy
spess53 schrieb:> In der Schaltung aus dem Link werden die LEDs der Optokoppler einzeln> geschaltet.
Jetzt wo du es erwähnst, ist sicherlich ein guter Aspekt.
Ist die Frage wieso er einen Sensor ausschlten will.
Strom sparen?
Andy S. schrieb:> Karl heinz Buchegger schrieb:>> Du korrigierst da überhaupt nichts.>> Du suchst dir von deinen Sensorwerten die beiden größten raus und>> bestimmst deren Verhältnis zueinander. Dieses Verhältnis ist ein>> direktes Mass dafür wie die Linie in Bezug auf die beiden Werte liegt.>> Damit kriegst du den Distanz-Bruchteil der Lage der Linie in bezug auf>> die beiden Sensoren und wie weit der nähere der beiden Sensoren an der>> Mittellinie liegt, weißt du.>> Hmm, da könnte es aber sein, dass beide Sensoren den gleichen Wert> haben.
Ja. Das wird sogar passieren.
Dann liegt die Linie genau mittig zwischen den beiden Sensoren. Jeder
Sensor sieht genau die Hälfte der Linie.
Ach so. Ser Seitenlichtschutz durch das Gehäuse (oder Metallfolie) ist
aber vermutlich wichtig. Man will ja das reflektierte Licht der Linie
bzw. Nichtlinie erkennen und durch die Seitenstrahlung könnte es zu
Problemen mit Überstrahlung kommen. Statt Metallfolie ginge vielleicht
auch eine spezielle Anordnung, die den Steg zwischen Fototransistor und
IR-LED ausnutzt:
D|T T|D D|T T|D D|T
statt
D|T D|T D|T D|T D|T
oder
T T T T T
- - - - -
D D D D D
Karl heinz Buchegger schrieb:> Ja. Das wird sogar passieren.> Dann liegt die Linie genau mittig zwischen den beiden Sensoren. Jeder> Sensor sieht genau die Hälfte der Linie.
Das verschwendet aber Rechenzeit dies extern auszuwerten.
Wird wahrscheinlich die allgemeine Methode besser sein wenn man sie
austestet und anschließend anpasst.
lg andy
Floh schrieb:> oder des Sichtbereich der Sensoren vergrößern (eventuell mehr Abstand> zum Boden), damit sich die Sichtbereiche überlappen.
Verkleinert sich dadurch nicht der Sichtbereich?
lg andy
Andy S. schrieb:>> T T T T T>> - - - - ->> D D D D D>> Das würde aber vom Konzept her nicht funktionieren!
Das war nur ein Schnellschuß für eine andere Konfiguration, die bei
entfernten Seitenwänden möglicherweise schlecht funktioniert.
Mit Seitenwänden komme ich nicht drauf, weshalb das grundsätzlich nicht
funktionieren sollte. In "Fig. 11 - Relative Collector Current vs.
Displacement" im CNY70 Datenblatt ist IMHO keine Abhängigkeit von der
Ausrichtung "waagerecht" vs. "senkrecht" zu erkennen.
http://www.vishay.com/docs/83751/cny70.pdf
Andy S. schrieb:> Karl heinz Buchegger schrieb:>> Ja. Das wird sogar passieren.>> Dann liegt die Linie genau mittig zwischen den beiden Sensoren. Jeder>> Sensor sieht genau die Hälfte der Linie.>> Das verschwendet aber Rechenzeit dies extern auszuwerten.> Wird wahrscheinlich die allgemeine Methode besser sein wenn man sie> austestet und anschließend anpasst.
Ich hab die Mathe jetzt nicht gemacht. Aber solche Dinge laufen immer
auf dieselbe Art von Formel hinaus.
Wenn die Linie t% zwischen den Sensoren S1 und S2 liegt (die
delta_x auseinander liegen), dann
liefert Sensor 1 ein Signal in der Höhe von s1 = t * delta_x
liefert Sensor 2 ein Signal in der Höhe von s2 = ( 1 - t ) * delta_x
gesucht ist also dasjenige t, welches s1 und s2 erklären kann.
Wie gesagt: Ich habs jetzt nicht durchgerechnet und aus dem Bauch heraus
sag ich mal
s2
Distanz vom Sensor 1 = ---------- * delta_x
s1 + s2
Angenommen die Sensoren liegen 10 mm auseinander.
--
S1 misst 128, S2 misst 128
128 / ( 128 + 128 ) * 10 = 0.5 * 10 = 5
dann liegt die Linie 5mm von s1 entfernt
--
S1 misst 255, s2 misst 0
0 / ( 255 + 0 ) * 10 = 1 * 10 = 0
Die Linie liegt 0 mm von 1 entfernt, also genau unter s1
--
S1 misst 0, s2 misst 255
255 / ( 255 + 0 ) * 10 = 1 * 10 = 10
Die linie liegt 10 mm von s1 entfernt, also genau unter s2
--
s1 misst 200, s2 misst 30
30 / ( 200 + 30 ) * 10 = 30 / 230 * 10 = 1.3
Die Linie liegt 1.3mm von s1 entfernt
Karl heinz Buchegger schrieb:> Ich hab die Mathe jetzt nicht gemacht. Aber solche Dinge laufen immer> auf dieselbe Art von Formel hinaus.>> Wenn die Linie t% zwischen den Sensoren S1 und S2 liegt (die> delta_x auseinander liegen), dann> liefert Sensor 1 ein Signal in der Höhe von s1 = t * delta_x> liefert Sensor 2 ein Signal in der Höhe von s2 = ( 1 - t ) * x>> gesucht ist also dasjenige t, welches s1 und s2 erklären kann.>> Wie gesagt: Ich habs jetzt nicht durchgerechnet und aus dem Bauch heraus> sag ich mal> s1 + s2> Distanz vom Sensor 1 = ---------- * delta_x> s
Ok verstehe was du meinst. Bin eh davon ausgegangen, dass du das so
machst.
Aber wie gesagt, ist das halt nicht die einzige Methode die effizient
ist.
Denn wie du weißt arbeite ich mit einer 8 Bit Harvard Architektur und
das Schlüsselwort basiert auf 8 Bit.
Da sind Divisionen immer was schlechtes, deshalb auch mein Einwand von
vorher.
Ok im großen und ganzen fand ich diese Diskussion sehr interessant.
Ich danke für die entsprechende Motivation die ihr gezeigt habt und sage
somit bis bald!
lg andy
Andy S. schrieb:> Da sind Divisionen immer was schlechtes, deshalb auch mein Einwand von> vorher.
Und ich habs dir schon einmal gesagt:
In den paar µ-Sekunden, die diese Berechnung braucht, bewegt sich dein
Robot noch nicht mal einen tausendstel Millimeter vorwärts.
Summa summarum sind wir wieder dort, wo wir schon so oft waren:
Du hast keinen Tau, bittest um Hilfe. Dann betet man dir alles bis ins
kleinste Detail vor woraufhin du den Grosskotz raushängen lässt, der von
Anfang an schon alles wusste.
Schön langsam sollte man meinen, ich hätte meine Lektion gelernt.
Andy S. schrieb:> Aber wie gesagt, ist das halt nicht die einzige Methode die effizient> ist.
Bring das Teil erst zum Laufen, dann kannst du dir übers optimieren
Gedanken machen.
> Denn wie du weißt arbeite ich mit einer 8 Bit Harvard Architektur und> das Schlüsselwort basiert auf 8 Bit.
Das kann dir als C-Progger beinahe egal sein, der Compiler kann sowas.
> Da sind Divisionen immer was schlechtes, deshalb auch mein Einwand von> vorher.
Dann verechnest die Konstanten so, dass man durch eine 2er-Potenz teilt,
wenn die Geschwindigkeit wirklich nicht ausreichen würde. Das lässt sich
dann über Schieben realisieren.
Meine Frage steht noch:
Ist das fürn RoboCup?
:-)
Karl heinz Buchegger schrieb:> Schön langsam sollte man meinen, ich hätte meine Lektion gelernt.
Also ich weiß nicht. Nimmst du das Forum wirklich so persönlich oder was
ist jetzt. Jetzt habe ich einmal einen Vorschlag für dich:
Gehe von der emotionalen Seite einmal runter und bleib realistisch.
Ich sagte nicht, dass deine Idee auch nur annähernd scheitern wird. Aber
lass mich halt einfach mal meine Ideen umsetzen. Ich hoffe du verstehst
das.
>woraufhin du den Grosskotz raushängen lässt, der von>Anfang an schon alles wusste.
Der wird auch schon langsam alt. Ich glaube du suchst Streit oder sowas
in der Art, den werde ich dir aber leider nicht geben. Wenn du meinst,
dass ich alles weiß, dann fühle ich mich geehrt. Aber so langsam ehrst
du mich zu oft, also bitte behalte die wirklich (!) unnötigen Kommentare
für dich.
Fakt ist aber, dass du mir sehr geholfen hast und ich dir dafür danke.
Floh schrieb:> Meine Frage steht noch:> Ist das fürn RoboCup?
Nein, Robotchallenge Wien.
lg andy
Karl heinz Buchegger schrieb:> Ich hab die Mathe jetzt nicht gemacht. Aber solche Dinge laufen immer> auf dieselbe Art von Formel hinaus.>> Wenn die Linie t% zwischen den Sensoren S1 und S2 liegt (die> delta_x auseinander liegen), dann> liefert Sensor 1 ein Signal in der Höhe von s1 = t * delta_x> liefert Sensor 2 ein Signal in der Höhe von s2 = ( 1 - t ) * delta_x>> gesucht ist also dasjenige t, welches s1 und s2 erklären kann.>> Wie gesagt: Ich habs jetzt nicht durchgerechnet und aus dem Bauch heraus> sag ich mal> s2> Distanz vom Sensor 1 = ---------- * delta_x> s1 + s2> Angenommen die Sensoren liegen 10 mm auseinander.> S1 misst 128, S2 misst 128>> 128 / ( 128 + 128 ) * 10 = 0.5 * 10 = 5>> dann liegt die Linie 5mm von s1 entfernt> S1 misst 255, s2 misst 0>> 0 / ( 255 + 0 ) * 10 = 1 * 10 = 0>> Die Linie liegt 0 mm von 1 entfernt, also genau unter s1> S1 misst 0, s2 misst 255>> 255 / ( 255 + 0 ) * 10 = 1 * 10 = 10>> Die linie liegt 10 mm von s1 entfernt, also genau unter s2> s1 misst 200, s2 misst 30>> 30 / ( 200 + 30 ) * 10 = 30 / 230 * 10 = 1.3>> Die Linie liegt 1.3mm von s1 entfernt
Im endeffekt ist mir nur das als bester Ansatz übergeblieben.
Es funktioniert jetzt auch schon gut.
Danke nochmal.
lg andy