Zuletzt geändert am 12. Juli 2019 um 07:00

Airsoft Pellet Bitmaps (build blog)

Version vom 12. Juli 2019, 07:00 Uhr von Axl (Diskussion | Beiträge) (Links)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Das Projekt

Ziel des Projekts ist die Erzeugung von physischen Bitmap-Bildern mit Airsoft pellets.

Die Pellets kommen in verschiedenen Farben und sollen entsprechend der Bildvorlage in einen vertikalen Bilderrahmen einsortiert werden.

Artefakte

Das Projekt entsteht aus einer Reihe von Hard- und Software-Artefakten, die später zu den individuellen Maschinen zusammengeführt werden:


Transport

Optischer Trigger

Der Sensor soll ein Pellet im Plexiglas-Rohr erkennen. Er besteht aus einer aufgesägten Gabellichtschranke mit roter LED.


Photo Eye - Version 2

Der Einsatz einer Infrarot-Lichtschranke war erfolglos, da einige Kugelfarben zu wenig Infrarot-Licht absorbieren. Daher wir eine blaue LED (Pollin 120216) für die Lichtschranken benutzt, die mit allen Kugelfarben funktioniert. Die Lichtschranke wird direkt auf das 10 mm Rohr aufgesteckt. Sie wird zusätzlich Schrumpfschlauch und einer kleinen Datei:Photo eye shell 003.scad gegen Umgebungslicht abgeschirmt.

  • Sender: Blaue LED (Pollin 120216)
  • Empfänger: Fototransistor 5 mm 1200 nm Everlight Opto PT 331 C (Conrad 156408)



Kugelbahn - Sorter exits

Die Kugeln werden nach Vereinzelung in einem Rohr mit 5° Gefälle nach unten transportiert.


Vereinzelung

Aus einer Reihe vor Pellets gleicher Farbe soll genau ein Pellet entnommen werden. Da diese Funktion oft gebraucht wird soll der Aufbau sehr einfach sein und nur eine Bewegung per Servo ausgeführt werden. Die Ansteuerung der Servos erfolg über einen Arduino Servo Shield


Farberkennung

Die Farbe eines Pellets soll schnell und eindeutig erkannt werden.

Farbsensor Eigenbau

Der Sensor besteht aus einer 5 mm RGB LED und einem Fototransistor mit Verstärkerschaltung. LED und Transistor sind in einem Winkel von 45° angeordnet, der sich bei Tests als günstig erwiesen hat und wenig störende Reflektionen und Umgebungslicht einfängt.


Farbsensor von Watterott


Sortierung

Testaufbau: Die Sortierung erfolgt mit Hilfe von zwei Kreisscheiben, die von Servomotoren bewegt werden. In beiden Scheiben ist ein 7 mm Loch für ein Pellet. Sind beide Löcher an der gleichen Position, wird das Pellet ausgeworfen. Sind die Löcher nicht deckungsgleich, kann das Pellet durch synchrone Bewegung der Servos an eine Position bewegt werden.

Im aktuellen Setup ist damit steuerbar:

  • Holen eines Pellets aus einen zuführenden Röhrchen
  • Erfassung der Farbe mit einem Farbsensor
  • Auswurf des Pellets in eines von sechs Fächern

Farberkennung per Software

Die eigentliche Erkennung der Farbe erfolgt analog zur Farberkennung in der Wikipedia per Quantifizierung. Die drei Messwerte für rot, grün und blau werden dabei als dreidimensionale Koordinaten X, Y und Z im RGB-Raum interpretiert. Es wird eine Reihe von Messwerten aufgenommen und nach dem Muster "wenn dominante Farbe rot dann klassifiziere Pellet rot" verarbeitet.

Der Mittelwert aller Messwerte zu einer erkannten Farbe ergibt einen Markerpunkt. Spätere Messwerte ermitteln mit Hilfe der Euklidischen Distanz den nächstgelegenen Markerpunkt und ordnen damit das Pellet einer Farbe zu.

Zur Visualisierung der Messwerte in RGB-Raum wird aus Processing eine Datei im OpenSCAD Format erzeugt: Datei:3D diagram example colors.scad (für Wiedergabe der Farbe nur Preview Rendering / 'F5')

Aufbewahrung

Die Pellets werden in Platikflaschen nach Farben sortiert aufbewahrt. Die Pellets können mittels eines drehbaren Stabes durch eine Öffnung im Boden aus der Flasche gefördert werden.

Aufbau als vertikales Bild

Test

Zwei Plexiglas Platten im Abstand von gut 6 mm, mit vertikalen Kanälen aus Nylonschnur als 'Spacer'. Für den Spacer sind 1,5 mm Durchmesser rechnerisch optimal.

Gesamtaufbau

Test Run Movie: Pattern schwarz/weiß

Software Repository

pellet_patter software on github    Software auf github

unter anderem mit Processing Code zur Umwandlung von Bitmap-Bildern in den Farbraum der Pellets:



Links