Ich habe eine neues Linienfolgerprogramm erstellt. Neu sind die Kalibrierungsfunktion für den Lichtsensor und die Möglichkeit, die Leistung der Motoren mit der Rechts- bzw. Links-Taste während des laufenden Programms anzupassen.
Nach einigen (wenig erfolgreichen) Experimenten mit Polynomen zur Berechnung der Radgeschwindigkeiten, habe ich mich dann doch für eine einfachere Lösung entschieden 🙂
Die Lichtsensorwerte (0 – 100) werden einfach in den zulässigen Wertebereich (-100 – 100) des Steuerungsblocks (hier: -90 – 90) umgerechnet. Das funktioniert sehr gut mit niedrigen Leistungseinstellungen und ist auch bei höheren Werten noch akzeptabel.
Download the Mindstorms Project File
Ich habe zwei kleine Teststerecken (DIN A4) erstellt, die du hier und hier herunterladen kannst.
Die Anleitung zum Bau des Roboters findest du in diesem Blogpost.
This works great with low power settings and is still acceptable with higher settings.
it is a great program, any idea if we need it to stop at the end if there is white end and, how to maximize the power and make it move straight .
light sensor calibration (min 128) and (max128)
and when run program it round it self
can you tell me where is the mistake?
Hi, I am not sure what exactly causes your problem but the light sensor should return normalized values between 0 and 100…
Hey we are trying to program your idea in Java.
Our Colorsensor only return values from 0 to 1
Can you please explain your calculation again, so we can transfer it to our code?
It´s a simple linear function. http://www.wolframalpha.com/input/?i=plot+1.8x-90
The result is passed to the steering block that takes values from -100 to 100 (I chose to limit it with +-90 for no special reason but I suppose it runs smoother this way).
(1,8*100)-90=90 (turn e.g. left)
(1,8*50)-90=0 (don´t turn just drive)
(1,8*0)-90=-90 (turn e.g. right)
You could use (180*lightsensorvalue)-90=steeringblock_input (If you have implemented something like the steering block)