Umrisserkennung beschleunigen, aber wie?



  • beschreibe nochmal, was die einschränkungen für die geschwindigkeit des sensors sind, und wie im allgemeinen die rohlinge aussehen. kann man z.b. kreise mit großem radius schnell abfahren?



  • Non Sequitur schrieb:

    beschreibe nochmal, was die einschränkungen für die geschwindigkeit des sensors sind, und wie im allgemeinen die rohlinge aussehen. kann man z.b. kreise mit großem radius schnell abfahren?

    Naja, das übliche Kreuztisch- Schrittmotorantriebs- Problem wie bei jedem Plotter. Manche juckeln deswegen ohnehin nur mit konstanter Start/Stop- Geschwindigkeit vor sich hin, meist wird aber eine Beschleunigung über eine Rampentabelle endlicher Länge implementiert.
    Wenn Du eine Fahrt hast, ist das wie eine Vektorkette, die über die Punkte A, B, C geht. Je länger der einzelne Weg, desto höher kann man beschleunigen. Natürlich verlängert sich auch der Bremsweg entsprechend. Man kann aber anhand der bewegten Massen ein Regelwerk aufstellen, daß der Knickwinkel bei B untersucht wird und z.B. gesagt wird, bei 2° Knickwinkel interessiert es mich nicht, ich muß nicht voll abbremsen, sondern nur auf 98%, weil der Motor da genug Drehmomentreserve hat, um das "en passant" nachzuliefern.
    Der Betriebs- "GAU" ist in der Hinsicht, wenn C und A zusammenfallen, so daß A->B->A ansteht, d.h. die bewegte Masse muß nicht nur angehalten, sondern in die Gegenrichtung beschleunigt werden. Ist echt heftig und bringt Mechanik und Motor an die Grenzen.

    Mit den kleinen Kreisen habe ich kurze, eher winkelige Teilvektoren und durch das Zurücksetzen komme ich in die Nähe des "harten" Belastungsfalls.
    Richtig ist, daß große Kreise sehr zügig durchfahren werden können. 🙂

    Bei den Rohlingen handelt es sich um Grabsteine, wie unterschiedlich die sind, kannst Du hier sehen: http://www.grabstein.at/products.php Bei Refreshen des Browsers werden neue Modelle nachgeladen.

    @geloescht:
    Klingt interessant, spart mir das Zurücksetzen und damit Hauptteil der Rappelei. Dürfte sich auch noch leicht umbauen lassen, ich probier's mal aus!
    🙂



  • pointercrash() schrieb:

    Mit den kleinen Kreisen habe ich kurze, eher winkelige Teilvektoren und durch das Zurücksetzen komme ich in die Nähe des "harten" Belastungsfalls.
    Richtig ist, daß große Kreise sehr zügig durchfahren werden können. 🙂

    Gut. Man kann natürlich jeden Kreis mit genug Punkten rastern, dass jede Ecke weniger als 2 Grad hat. Wie groß ist also ein großer, wie groß ein kleiner Kreis, im Verhältnis zum Stein? Und wieviel schneller ist 'schnell' gegenüber 'langsam'? Würde es z.B. was bringen so eine Bahn für die grobrasterung zu benutzen?



  • Non Sequitur schrieb:

    Gut. Man kann natürlich jeden Kreis mit genug Punkten rastern, dass jede Ecke weniger als 2 Grad hat. Wie groß ist also ein großer, wie groß ein kleiner Kreis, im Verhältnis zum Stein? Und wieviel schneller ist 'schnell' gegenüber 'langsam'? Würde es z.B. was bringen so eine Bahn für die grobrasterung zu benutzen?

    Start/Stop- Frequenz habe ich bei 1,2 kHz, im Reversierungsfall muß ich auf 600 Hz runter, Fullspeed liegt bei 20 kHz. Das Ganze ist natürlich über Riementrieb und Kugelrollspindelsteigungen für jede Achse eigens skaliert, so daß diese Antriebsverhältnisse motorseitig für alle Achsen in etwa gleich sind.

    Problemlos "groß" für alle Achsen hat ein Kreis von 20 cm plus, ein durchschnittlicher Stein ist etwa 120 cm * 80 cm, unterhalb von 5 cm Radius hört man schon, daß sich die Mechanik plagt und keine echte Speed mehr aufnimmt.

    Zur Abtastkurve: Würde nahezu ungebremst durchlaufen, aber wie geht's dann weiter?



  • pointercrash() schrieb:

    Zur Abtastkurve: Würde nahezu ungebremst durchlaufen, aber wie geht's dann weiter?

    Das war nichts lösungsrelevantes, nur Brainstorming. Ich würde erstmal schauen, ob der Vorschlag von geloescht schon ausreicht.

    Eine weitere straightforward-Lösung: nimm einen Kreisradius R, der am schnellsten durchlaufen wird. Ziehe einen Kreis, der 2 Schnittpunkte mit der Objektkante hat. Bestimme neuen Mittelpunkt für einen Kreis aus den Schnittpunkten (hier schlau sein.). Der Mittelpunkt zweimal die gewünschte Auflösung vom alten entfernt. Nun schwenkst du auf vom alten auf den neuen Kreis, wieder möglichst schlau, oder auf der nächsten Tangente beider Kreise. Dann wiederholst du das Ganze, bis du einmal rum bist.

    Auf diese Weise erhälst du pro Drehung ~ 2 neue Randpunkte. Durch geeignete Wahl des Radius und der Mittelpunkt-Schrittweite sind sie näherungsweise gleichverteilt (2R mod s = 0.5 prbbly) (zumindest auf der Geraden).

    Mögliche Nachteile wären: Das ist schon relativ komplex, also Codewartung höher, Instabilität des Algos möglich, könnte sein, dass es gar nichts bringt. Und du fährst die Hälfte der Zeit rückwärts.

    Vorteile: Du bist die hohen zweiten Ableitungen los.



  • Erstmal Dank an alle Poster für's Grübeln und die Vorschläge!

    Bin gerade dabei, den Ansatz von geloescht zu coden ... auf dem Prototyp- Modell der Anlage sehe ich schon die ersten Moves ... 🙂
    Bin gespannt, ob das bereits ausreicht, wenn nicht, geh' ich euch wieder auf den Zeiger.
    😃



  • falls der rohling auf nem untergrund liegt der immer gleich ist, koenntest du eventuell mit ner billigen webcam schon sehen wie die umrisse sind, das ist relativ einfach implementiert, denk ich mir. notfalls noch nen schnell rotierenden laserptr 😉

    naja, auch nur brainstorming.



  • rapso schrieb:

    ... mit ner billigen webcam schon sehen wie die umrisse sind, das ist relativ einfach implementiert, denk ich mir. notfalls noch nen schnell rotierenden laserptr 😉 naja, auch nur brainstorming.

    Hi rapso, mit einer Kamera wär's theoretisch möglich. Rumexperimentiert hab' ich da auch schon, da ich dem Werkzeugbahngenerator in der Vorschau auch Bitmaps unterlegen kann (hab' mir dazu extra eine EOS ausgeliehen) - und es dann ganz schnell aufgegeben. Problem sind die Optiken, die mal gut und gerne um ein paar Zentimeter verzeichnen, eine perspektivische Entzerrung wird da schon schwer bis unmöglich. Bei einer VGA- Webcam kannstes sowieso vergessen, weil da ein Pixel so 10 cm² Arbeitsfläche abdeckt.
    Irgendwo in den Bereich +/- 5 mm sollte es hingehen.

    Rotationslaserscanner scheitert schlicht an pekuniären Gründen, der erwähnte Sensor ist eigentlich ein Triangulationslaserdistanzsensor, bei dem ich in diesem Fall nur das "object in range"- Signal auswerte. Den brauche ich auch zu anderen Zwecken und für weiteres Gerümpel habe ich sowieso keinen Platz mehr auf der Konsole 😉 .

    Bisher schaut die Lösung von geloescht gar nicht mal schlecht aus, irgendwo hab' ich noch an Bug drin, weil er manchmal die Kontur verliert und dann irgendwo endlos im Nirvana seine Kreise zieht, aber die Moves sind eindeutig smoother als das, was ich vorher hatte. 🙂



  • die dinge muessen sich ja nicht ausschliessen.
    soweit ich das problem verstanden habe ist dein 'plotter' blind und kann nur true/false liefern, gleichzeitig auch noch sehr traege, wenn auch genau.
    die camera ist wiederrum schnell, weitsichtig, aber ungenau.

    du koenntest nun also die cam nutzen um den kolos einzuweisen, nur fuer den fall dass die bisherigen vorschlaege nicht ausreichend sind.



  • rapso schrieb:

    du koenntest nun also die cam nutzen um den kolos einzuweisen, nur fuer den fall dass die bisherigen vorschlaege nicht ausreichend sind.

    Fast. Lies mal weiter oben nach, das Ding nimmt ja nach so drei Zentimetern echt Fahrt auf und zumindest ein Fußpunkt ist bekannt. Wenn ich da drüberrausche, weiß ich zumindest für den Anfang der Mäanderfahrt, wo es losgehen sollte.

    Bin übrigens mit dem Modell eigentlich fertig, der Bug war ein Hystereseproblem. Bei erreichen des "Objekt da" habe ich die Auswertung vorgenommen, um den neuen Kreis zu berechnen, aber die Mechanik schwingt ja nach und das Signal toggelt ein paarmal. Manchmal bin ich mit dem nächsten Mäander auf "Objekt weg" gestartetet, schon rutscht das irgendwohin, Danke.

    Bin gespannt, was die "echte" Maschine dazu sagt, wird morgen damit gefüttert.

    EDIT: Naja, toll ist es nicht, das große Ding rumpelt dann doch ziemlich herum. Zumindest doppelt so schnell und halb so laut ist es, ich werde noch ein wenig mit den Radien herumspielen und evtl. zwei, drei Meßfahrten ansetzen und dann sehen, ob es sich lohnt, Einzelsegmente zu beschleunigen ...


Anmelden zum Antworten