Absender: Timo Sandmann
Datum: Di, 27.05.2008 12:12:32
In-reply-to:
<000001c8bf6b$d5ef8830$0200a8c0@mexpnew>
References:
<000001c8bf6b$d5ef8830$0200a8c0@mexpnew>
Hallo, Am 26.05.2008 um 22:05 schrieb Frank Menzel:
Hallo Timo, habe jetzt noch mal catch_pillar getestet und dabei DISTSENS_AVERAGE eingeschaltet. Die Version 3 hatte hierbei recht gut funktioniert, istjedoch leider in einem Grossteil der Fälle direkt vor dem Objekt stehengeblieben. Wäre er etwas weiter gegangen, so hätte er das Objekt gecatcht.
wahrscheinlich stimmt die berechnete Entfernung nicht so ganz, weil durch DISTSENS_AVERAGE das Objekt erst später registriert wird. Die Distanzsensoren messen ja eh nur recht selten und wenn man dann noch drei alte Werte mit einrechnet, wird das halt sehr ungenau (für die Erkennung von Objekten beim Drehen). Stimmen die Werte der Distanzsensoren ohne DISTSENS_AVERAGE denn bei dir? Vielleicht hilft es auch, das Kalibrierverhalten noch mal durchlaufen zu lassen.
Hier ist mir aufgefallen, dass auch Wände als einzufangende Objekte gelten, wenn er sich zu dieser hingedreht hatte. Und erkennt er, dass das Objekt nicht plausibel ist, dreht er sich nicht weiter, um die Volldrehung zu beenden.
Ja das habe ich da bisher auch noch gar nicht eingebaut, weil ich erstmal das Objekt unter Idealbedingungen vernünftig erkennen wollte. Die Wanderkennung lässt sich aber ja leicht aus Version zwei übernehmen.
Genau dies ist aber so in der Version 2 angedacht, was hier wiederum der Vorteil ist. Diese fängt jedoch das Objekt kaum ein (da habe ich in meiner ursprünglich eingereichtenPatchversion noch andere Erinnerungen, jedoch jetzt nicht als Vergleichverfügbar). Hier ist der Effekt, dass er bei Erkennen des Objektes mit dem linken Sensor (blau leuchtet) kurz anhält und dann weiterdreht. Auch wenn rechts blau leuchtet, so dreht er einfach weiter ohne es mit rechts zu erkennen.
Bei mir hat er da immer zu spät angehalten (wenn das Objekt weiter als 15 cm entfernt ist) und es dann natürlich nicht mehr gesehen, als er die Entfernung messen wollte. Ich glaube dann dreht er weiter, bis links erneut etwas gesehen wird (erste Messung war halt ungültig), das passiert aber natürlich nie mehr. Was man noch probieren könnte wäre, in der Abbruchfunktion für bot_turn() sofort mit voller Kraft in die Gegenrichtung drehen, um möglichst schnell zu bremsen. Ob das aber wirklich klappt, dass der Bot noch vor dem Objekt zum Stehen kommt, weiß ich nicht.
Gruß Timo