Moin Moin,
wir arbeiten momentan als 3er-Team an einer Komponente zusammen mit vielen anderen Teams und benötigen gerade mal ein wenig Brainstorming ^^
Wir haben einen Roboter mit verschiedenen Verhaltensskripten, eines unserer Skripte tracked ein Objekt mit der RoboCam und passt die Position des Roboters dann geringfügig in Abhängigkeit zur Objektposition an.
D.h. ich kann z.B. eine Flasche, einen Ball, ..., tracken lassen und bewege ich das Objekt, folgt sowohl die Kamera als auch der Roboter selbst dem Objekt.
Die Problematik dabei ist jetzt die Berechnung der Objektdaten. Die Raw-Infos sind genau genug, wenn der Robo stillsteht, d.h. z.B. Flasche auf 1m Entfernung und 'nen halben Meter nach rechts (vom Robo aus gesehen) erkennt er wunderbar, dreht sich in Richtung des Objekts, läuft ein Stück drauf zu um es genauer zu betrachten (das Goal ist halt, einen sinnvollen Mindestabstand zu halten und dabei möglichst direkt gerade auf das Objekt zu gucken).
Schwierig wird das ganze dadurch, dass die Bilddaten natürlich total noisy sind, wenn er anfängt zu laufen (der Robo wackelt stark, also verwackelte Bilder).
Im Stillstand erkennt unser Skript auf 1m Entfernung z.B. einen Winkel von 15° zum Objekt auf ungefähr +/- 5-10° genau, je nach Objekt (Größe, Gleichmäßigkeit...).
Beim laufen hingegen geht die Genauigkeit oft so stark in den Keller, dass wir bei +/- 30° und mehr ankommen.
D.h. der Robo tracked das Objekt im Stillstand, dreht sich korrekt, läuft korrekt (zuerst), aber beim laufen korrigiert er dann wieder (wegen den noisy data) seine Richtung/Winkel vollkommen falsch.
Finalerweise wollen wir aber, dass er auch bewegten Objekten einigermaßen folgen kann (es ist also keine Option, das Objekt nur einmal zu tracken und danach immer die Altdaten zu nehmen).
Man könnte natürlich den Robo zwischendurch beim Laufen immer wieder stehen bleiben lassen und neu zu tracken, aber auch das ist ja nicht sooo die tolle Lösung.
Hat vielleicht jemand eine gute Idee, wie man die Rawinfos vernünftig filtern könnte?
Sowas wie Horizontaler Abstand, Vertikaler Abstand, Winkel, Radius, Luftliniendistanz u.v.m funktioniert im Stand halt ziemlich gut (z.B. bei einer 2m entfernten Wasserflasche schätzt er die Entfernung auf ungefähr 1,95m bis 2,05m, fängt er aber wieder an zu laufen sind wir bei 1,2m bis 3,8m - murks^^)
Wir haben aktuell keine tolle Idee, außer vielleicht beim laufen dauernd Mittelwerte zu bilden. Hat jemand möglicherweise mehr Erfahrung mit sowas und 'ne gute Idee, wie man solche noisy Bildinfos gut filtern könnte?
Viele Grüße & Danke
ascer
wir arbeiten momentan als 3er-Team an einer Komponente zusammen mit vielen anderen Teams und benötigen gerade mal ein wenig Brainstorming ^^
Wir haben einen Roboter mit verschiedenen Verhaltensskripten, eines unserer Skripte tracked ein Objekt mit der RoboCam und passt die Position des Roboters dann geringfügig in Abhängigkeit zur Objektposition an.
D.h. ich kann z.B. eine Flasche, einen Ball, ..., tracken lassen und bewege ich das Objekt, folgt sowohl die Kamera als auch der Roboter selbst dem Objekt.
Die Problematik dabei ist jetzt die Berechnung der Objektdaten. Die Raw-Infos sind genau genug, wenn der Robo stillsteht, d.h. z.B. Flasche auf 1m Entfernung und 'nen halben Meter nach rechts (vom Robo aus gesehen) erkennt er wunderbar, dreht sich in Richtung des Objekts, läuft ein Stück drauf zu um es genauer zu betrachten (das Goal ist halt, einen sinnvollen Mindestabstand zu halten und dabei möglichst direkt gerade auf das Objekt zu gucken).
Schwierig wird das ganze dadurch, dass die Bilddaten natürlich total noisy sind, wenn er anfängt zu laufen (der Robo wackelt stark, also verwackelte Bilder).
Im Stillstand erkennt unser Skript auf 1m Entfernung z.B. einen Winkel von 15° zum Objekt auf ungefähr +/- 5-10° genau, je nach Objekt (Größe, Gleichmäßigkeit...).
Beim laufen hingegen geht die Genauigkeit oft so stark in den Keller, dass wir bei +/- 30° und mehr ankommen.
D.h. der Robo tracked das Objekt im Stillstand, dreht sich korrekt, läuft korrekt (zuerst), aber beim laufen korrigiert er dann wieder (wegen den noisy data) seine Richtung/Winkel vollkommen falsch.
Finalerweise wollen wir aber, dass er auch bewegten Objekten einigermaßen folgen kann (es ist also keine Option, das Objekt nur einmal zu tracken und danach immer die Altdaten zu nehmen).
Man könnte natürlich den Robo zwischendurch beim Laufen immer wieder stehen bleiben lassen und neu zu tracken, aber auch das ist ja nicht sooo die tolle Lösung.
Hat vielleicht jemand eine gute Idee, wie man die Rawinfos vernünftig filtern könnte?
Sowas wie Horizontaler Abstand, Vertikaler Abstand, Winkel, Radius, Luftliniendistanz u.v.m funktioniert im Stand halt ziemlich gut (z.B. bei einer 2m entfernten Wasserflasche schätzt er die Entfernung auf ungefähr 1,95m bis 2,05m, fängt er aber wieder an zu laufen sind wir bei 1,2m bis 3,8m - murks^^)
Wir haben aktuell keine tolle Idee, außer vielleicht beim laufen dauernd Mittelwerte zu bilden. Hat jemand möglicherweise mehr Erfahrung mit sowas und 'ne gute Idee, wie man solche noisy Bildinfos gut filtern könnte?
Viele Grüße & Danke
ascer