mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Linefollower: Sensorauswahl und deren Problematiken


Autor: Andy S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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/arti...

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/arti...
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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
:-)

Autor: Andy S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/foru...
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy S. schrieb:

> Das ist absolut richtig. Auf jedenfall stellt das ein Problem dar. Die
> cny70
> http://www.krause-robotik.de/service/download/foru...
> 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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 muss

Andy 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei den Leuten aus Seattle

bzw. beim Meister Elm

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
:-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan B. schrieb:
> oder
>
> T T T T T
> - - - - -
> D D D D D

Das würde aber vom Konzept her nicht funktionieren!

lg andy

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?
:-)

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.