Inhaltsverzeichnis:

Präzise Wiimote Light Gun für Raspberry PI - Gunook
Präzise Wiimote Light Gun für Raspberry PI - Gunook

Video: Präzise Wiimote Light Gun für Raspberry PI - Gunook

Video: Präzise Wiimote Light Gun für Raspberry PI - Gunook
Video: Das sind die ERFOLGREICHSTEN Spiele ALLER Zeiten? (Exklusive Games) 2024, Juli
Anonim
Präzise Wiimote Light Gun für Raspberry PI
Präzise Wiimote Light Gun für Raspberry PI
Präzise Wiimote Light Gun für Raspberry PI
Präzise Wiimote Light Gun für Raspberry PI

Normalerweise ist die als Lichtpistole verwendete Wii-Fernbedienung für Retro-Spiele wie NES Duck Hunt nicht genau genug, da die Wii-Fernbedienung nicht den Punkt auf dem Fernseher auswählt, auf den sie gerichtet ist. Es kann nicht! Die Wii-Fernbedienung hat eine Infrarotkamera an der Vorderseite, die die Reihe der Infrarot-LEDs in der Sensorleiste sieht, aber sie kann nicht wissen, wie weit (oder in welche Richtung) der Fernseher von der Leiste entfernt ist oder wie groß der Fernseher ist. Emulatoren und Spiele umgehen dies, indem sie Fadenkreuze oder andere Zielindikatoren anzeigen, aber das ist kein genaues Zielschießen.

Damit die Wii-Fernbedienung als präzise Lichtpistole funktioniert, mit der Sie ein Ziel auf einem Fernseher auswählen können, sind vier Infrarot-LEDs erforderlich, die in einem bekannten vierseitigen Muster (keine gerade Linie) in derselben Ebene wie der Fernseher angeordnet sind. Die Wii-Fernbedienung sieht dann die vier LEDs und das Kamerabild kann verwendet werden, um eine Homographie zu berechnen, die es uns ermöglicht, herauszufinden, wohin die Kamera zeigt.

Die Hardware für dieses Projekt ist einfach. Es gibt vier Infrarot-LEDs in einfachen 3D-gedruckten Gehäusen, die oben und unten auf das TV-Gehäuse geklebt und an ein USB-Ladegerät angeschlossen werden können. Für den Fall, dass Sie kein Wii-Waffengehäuse haben, habe ich einen einfachen 3D-gedruckten Griff und ein Visier, das Sie an der Wii-Fernbedienung befestigen können (um Plastik zu sparen, habe ich meine zu einem Hybrid aus Holz und 3D-gedrucktem Kunststoff gemacht).

Die Python-basierte Software war schwieriger zu erstellen als die Hardware und ist derzeit nur für Linux verfügbar. Es kalibriert die LEDs und die Wii-Fernbedienung und verwendet dann Homographie-Berechnungen, um eine absolute Maus zu emulieren, die in Retroarchs fceumm NES-Emulator (und wahrscheinlich einigen anderen Emulatoren) auf meinem Raspberry PI 3B + recht gut funktioniert.

Lieferungen

  • Wii-Fernbedienung
  • Vier 940 nm 5 mm Infrarot-LEDs
  • Altes USB-Kabel mit funktionierendem Typ-A-Stecker
  • Raspberry PI 3 oder anderer Linux-Computer mit Bluetooth-Unterstützung
  • 3D-Drucker und Filament (optional)

Schritt 1: Infrarot-LED-Kette

Infrarot-LED-Kette
Infrarot-LED-Kette
Infrarot-LED-Kette
Infrarot-LED-Kette

Holen Sie sich ein altes USB-Kabel mit einem funktionierenden Typ-A-Stecker (normalerweise brechen meine Telefonladekabel am Micro-USB-Ende, daher habe ich Kabelreste mit einem funktionierenden Typ-A-Stecker).. Eigentlich ist es sogar in Ordnung, wenn die Datenkabel sind gebrochen, solange die Stromleitungen funktionieren. Schneiden Sie das andere Ende ab. Theoretisch sollte das rote Kabel +5 V und das schwarze geerdet sein, aber überprüfen Sie es mit einem Multimeter (stecken Sie es in ein Ladegerät und überprüfen Sie dann die Spannung zwischen dem roten und schwarzen Kabel).

Da Infrarot-LEDs einen Spannungsabfall von etwa 1,2-1,3 V haben, habe ich nur vier davon in Reihenschleife an das USB-Kabel gelötet. Stellen Sie sicher, dass die Drähte, die Sie löten, lang genug sind, dass Sie LEDs an der Unterseite des Fernsehers und zwei an der Oberseite platzieren können, mit einem angemessenen horizontalen Abstand zwischen den LEDs (etwa 10 Zoll oder so).

Genauer gesagt, um die LED-Schleife zu machen:

  • Löten Sie die Minusseite (Kathode, kürzeres Bein, mit flacher Kante) der ersten LED an das +5V USB-Kabel
  • Verbinden Sie die Plusseite der ersten LED (Anode, längerer Schenkel, mit runder Kante) mit der Minusseite der zweiten LED
  • Wiederholen Sie dies, um die zweite LED mit der dritten und die dritte mit der vierten zu verbinden
  • Verbinden Sie dann die Plusseite der vierten LED mit einem Draht mit dem Masse-USB-Kabel.

Um die Dinge ordentlicher zu machen, können Sie beim Anschließen Schrumpfschläuche verwenden. Verwenden Sie andernfalls Isolierband, um Kurzschlüsse zu vermeiden.

Stellen Sie sicher, dass Sie keine Kurzschlüsse haben. Schließen Sie es dann an ein USB-Ladegerät an und überprüfen Sie, ob es Infrarotlicht aussendet, indem Sie die LEDs mit einer Telefonkamera betrachten. (Viele Telefonkameras sind infrarotempfindlich.)

Schritt 2: An den Fernseher anschließen

An Fernseher anschließen
An Fernseher anschließen
An Fernseher anschließen
An Fernseher anschließen
An Fernseher anschließen
An Fernseher anschließen

Befestigen Sie nun zwei der LEDs an der Unterseite des Fernsehers und zwei an der Oberseite. Der horizontale Abstand sollte etwa zehn Zoll betragen. Wenn es zu viel ist, haben Sie möglicherweise Probleme mit dem Sichtfeld der Wii-Fernbedienungskamera, das sie alle erfasst. Aber wenn sie zu nahe sind, dann sagt meine geometrische Intuition, dass Sie eine geringere Präzision haben.

Zum Testen habe ich die LEDs mit Isolierband abgeklebt und dann für eine dauerhafte Verbindung vier hübsche kleine LED-Clips (Dateien sind hier) entworfen und gedruckt, die ich mit Heißkleber auf den Fernseher geklebt habe. Sie sollten die LEDs so nah wie möglich an der Ebene des Fernsehbildschirms platzieren, ohne dass die Blende sie vom Aufnahmeort verdeckt.

Schritt 3: Software installieren

Derzeit ist die Software nur Linux. Das folgende Setup ist für den Raspberry PI 3 mit Raspbian Stretch ausgelegt. Andere Linux-Systeme erfordern einige Änderungen. Bei früheren Modellen benötigen Sie einen Bluetooth-Dongle und müssen diesen auch über eine Befehlszeile ausführen:

sudo get-apt install bluetooth

Schritt A: udev

Erstellen Sie als Nächstes eine Datei in /etc/udev/rules.d/wiimote.rules, die die einzelne Zeile enthält:

KERNEL=="uinput", MODE="0666"

Sie können dies beispielsweise mit einem Texteditor tun oder indem Sie Folgendes in die Befehlszeile eingeben:

sudo sh -c 'echo KERNEL==\"uinput\", MODE=\"0666\" > /etc/udev/rules.d/wiimote.rules'

Und dann udev neu starten:

sudo /etc/init.d/udev Neustart

Schritt B: cwiid

Als nächstes benötigen Sie mein modifiziertes cwiid-Paket. Hier wird es etwas haarig, da Sie es idealerweise auf Ihrem Raspberry PI aufbauen müssen, aber ich muss gestehen, dass ich den Überblick verloren habe, welche Pakete Sie installieren müssen, damit es funktioniert. Dafür gibt es drei Möglichkeiten.

Option B1: Selber bauen

cd ~

git clone https://github.com/arpruss/cwiid-1 autoconf./configure make -C libcwiid sudo make -C libcwiid install make -C python sudo make -C python install

Leider besteht eine ziemlich gute Chance, dass Sie eine Menge Dinge übersehen, die zum Erstellen erforderlich sind, und./configure wird sich beschweren. Sie können sich all die Dinge ansehen, über die es sich beschwert, und sudo apt install auf allen ausführen.

Option B2: Meine Binärdateien verwenden

cd ~

wget https://github.com/arpruss/cwiid-1/releases/download/0.0.1/cwiid-rpi.tar.gz tar zxvf cwiid-rpi.tar.gz cd cwiid sudo make install

Schritt C: Python-Bibliotheken

Holen Sie sich endlich Support-Material für mein Lightgun-Python-Skript:

sudo pip3 install uinput numpy pygame opencv-python

sudo apt-get install libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get install libqtgui4 sudo apt-get install python3-pyqt5

Schritt D: lightgun.py

Holen Sie sich endlich mein Lightgun-Python-Skript:

cd ~

git-Klon

Wenn alles gut gegangen ist, haben Sie jetzt ~/lightgun.py, mit dem Sie die Lightgun kalibrieren können.

Schritt 4: Kalibrierung Teil I: Zentrieren der Kamera

Kalibrierung Teil I: Zentrieren der Kamera
Kalibrierung Teil I: Zentrieren der Kamera
Kalibrierung Teil I: Zentrieren der Kamera
Kalibrierung Teil I: Zentrieren der Kamera
Kalibrierung Teil I: Zentrieren der Kamera
Kalibrierung Teil I: Zentrieren der Kamera

Die Kalibrierung hat zwei Aspekte. Die erste besteht darin, die Mitte der Kamera auf jeder Wiimote zu kalibrieren. Dazu müssen Sie die Kamera verwenden, um zwei Bilder der LEDs um Ihren Fernsehbildschirm herum aufzunehmen, eines mit der Fernbedienung mit der rechten Seite nach oben und das andere mit der auf dem Kopf stehenden Seite.

Um das Drücken der Tasten zu vermeiden, wenn Sie die Wii-Fernbedienung auf die Vorderseite legen, und damit die Wii-Fernbedienung eine gleichmäßige Höhe hat, können Sie das hier enthaltene Kalibrierungswerkzeug in 3D drucken. Sie benötigen grundsätzlich Dinge mit einer Dicke von 10,5 mm, die Sie unter die Wii-Fernbedienung legen können, wenn sie auf der Vorderseite liegt. Ich habe tatsächlich etwas Sperrholz verwendet, um Plastik zu sparen.

Schalten Sie Ihre LEDs ein und stellen Sie sicher, dass Ihr Raspberry PI oder ein anderer Computer auf dem Fernseher angezeigt wird. Schließen Sie eine Tastatur an (dies funktioniert nicht über ssh) oder verwenden Sie VNC. Dann renne:

python3 ~/lightgun/lightgun.py -M

Wenn alles gut geht, erhalten Sie eine Vollbildanzeige, in der Sie aufgefordert werden, 1+2 auf der Wii-Fernbedienung zu drücken. TU das. Die Lichter auf der Wii-Fernbedienung blinken und dann bleiben die Lichter 1 und 4 an. Außerdem sehen Sie oben auf dem Bildschirm ein kleines grünes Rechteck mit der Ansicht der Wii-Fernbedienungskamera. Richten Sie die Wii-Fernbedienung auf die LEDs und wenn alles gut geht, sehen Sie die vier LEDs, die von 1 bis 4 nummeriert sind.

Jetzt müssen Sie eine feste Oberfläche mit einer scharfen Kante finden, z. B. einen Couchtisch, die Sie auf den Fernsehbildschirm richten können und die es der Wii-Fernbedienung ermöglicht, alle LEDs zu sehen, wenn die Wii-Fernbedienung an der Kante ausgerichtet ist. Beginnen Sie damit, die Wii-Fernbedienung mit der rechten Seite nach oben auszurichten, wobei die Seite der Fernbedienung an der Oberflächenkante ausgerichtet ist, und stellen Sie sicher, dass alle vier LEDs sichtbar sind. Drücken Sie dann die Leertaste auf Ihrer Tastatur (oder befestigen Sie ein Nunchuck und drücken Sie C, wenn dies bequemer ist). Sie werden dann aufgefordert, die Wii-Fernbedienung zu drehen. Stellen Sie nun sicher, dass es 10,5 mm von Ihrer Oberfläche entfernt ist, indem Sie das Kalibrierungswerkzeug oder etwas anderes verwenden, und sich so nahe wie zuvor an derselben Stelle befinden (z. B. an der gleichen Kante Ihrer Oberfläche ausgerichtet). Drücken Sie erneut die LEERTASTE.

Wenn alles gut geht, gehen Sie jetzt zum Schritt der LED-Kalibrierung. Ja, das ist kompliziert! Aber Sie werden eine sehr präzise Lightgun haben. Das ist nur der Preis.

Hinweis: Wenn Sie wie ich eine Wii unter dem Fernseher haben, muss die Wii aus zwei Gründen ausgeschaltet werden: Erstens, wenn die Wii eingeschaltet ist, verbindet sie sich mit der Wiimote und zweitens stören die Infrarot-LEDs der Sensorleiste die dieses Projekt. Aus ähnlichen Gründen ist es eine gute Idee, die LEDs um den Fernseher herum zu entfernen, während Sie die Wii verwenden.

Schritt 5: Kalibrierung Schritt II: LEDs

Kalibrierungsschritt II: LEDs
Kalibrierungsschritt II: LEDs
Kalibrierungsschritt II: LEDs
Kalibrierungsschritt II: LEDs

Jetzt müssen Sie der Software mitteilen, wo sich die LEDs am Rand des Fernsehers befinden. Am Rand des Fernsehgeräts wird ein Kalibrierungsbildschirm mit vier Pfeilen angezeigt, von denen einer ausgewählt (hell) und drei ausgegraut sind. Mit +/- wechseln Sie, um zu ändern, welchen Pfeil Sie anpassen.

Gehen Sie für jeden der vier Pfeile am Rand wie folgt vor:

  1. Drücken Sie links/rechts auf der Wiimote, um die Pfeile zu bewegen, bis sie so genau wie möglich auf die entsprechende LED zeigen;
  2. Drücken Sie auf der Wiimote nach oben/unten, um die Länge des Pfeils zu ändern, bis die Länge des Pfeils dem Abstand zwischen der LED und dem Rand des Fernsehbildschirms entspricht; mit anderen Worten, die Länge des Pfeils muss gleich dem Abstand von der Pfeilspitze zur LED sein.

Sobald Ihre vier Pfeile richtig sind (und vielleicht sogar früher), sehen Sie ein rotes Fadenkreuz, wenn Sie die Wiimote auf den Bildschirm richten. Sie können überprüfen, ob dies der richtige Ort ist. (Denken Sie daran, dass Sie weit genug entfernt sein müssen, damit die Wiimote alle LEDs sehen kann. Es ist auch wichtig, dass sich keine anderen Infrarotquellen im Sichtfeld befinden. Ich hatte einmal Probleme, weil Sonnenlicht von einem Schraubenkopf auf der Fernsehtisch.)

Schließlich gibt es einen fünften Pfeil, der nur angezeigt wird, wenn Sie + vom vierten LED-Pfeil oder - vom ersten drücken (und er hat standardmäßig die Länge Null, ist also nur ein Pixel). Dieser Pfeil bestimmt, wie weit über der Kamera der Wii-Fernbedienung die Aufnahme registriert wird. Das Problem ist folgendes: Sie zielen entlang der Oberseite der Wii-Fernbedienung. Aber die Kamera befindet sich tatsächlich etwas unterhalb dieser Oberfläche, in der Mitte des schwarzen Rechtecks vor der Wii-Fernbedienung. Wenn wir die Aufnahmen in die Richtung der Kamera registrieren würden, würden sie etwa 8 mm unter der Oberseite der Wii-Fernbedienung registriert. Sie können dies überprüfen, indem Sie beachten, dass die Mitte des Fadenkreuzes von der Kamera verdeckt wird, wenn Sie entlang der oberen Oberfläche zielen.

Sie können damit leben, oder Sie können diesen fünften Pfeil vergrößern, um die Aufnahmen per Software an der Oberseite der Wii-Fernbedienung auszurichten, oder Sie können die 3D-druckbaren Dateien für das Visier anpassen, um dies zu kompensieren (aber die Kompensation funktioniert nur für eine bestimmte Entfernung zum Fernseher). Ich habe mich selbst für das Software-Alignment entschieden.

Drücken Sie HOME auf der Wii-Fernbedienung, um die Kalibrierung zu beenden und alle Daten im Verzeichnis ~/.wiilightgun zu speichern.

Schritt 6: Testen und verwenden

Testen und verwenden
Testen und verwenden
Testen und verwenden
Testen und verwenden
Testen und verwenden
Testen und verwenden

Sie möchten wahrscheinlich jetzt Ihre Lichtpistole ausprobieren. Führen Sie einfach in einem Terminalemulator (oder einem Skript) aus:

python3 ~/lightgun/lightgun.py -t

Sie müssen die 1+2-Tasten gleichzeitig drücken, und danach emuliert die Lightgun, wenn alles gut geht, solange lightgun.py läuft, eine absolute Zwei-Tasten-Maus. Die Auslösetaste ist Maustaste 1 und die A-Taste ist Maustaste 2. Drücken Sie Strg-C zum Beenden.

Sie müssen jetzt nur noch Ihre Emulatoren und/oder Spiele konfigurieren, um mit einer absoluten Maus zu arbeiten. Das wird leider nicht immer so einfach sein.

Eine lustige Sache, die Sie vielleicht ausprobieren könnten, ist meine Mod von iminurnamez 'Enten-Enten-Shooting:

cd ~

Git-Klon https://github.com/arpruss/duck-duck-shoot cd duck-duck-shoot python play_game.py

Für NES-Spiele verwende ich den libretro fceumm-Kern in Retroarch. Gehen Sie zum Optionsmenü und konfigurieren Sie den Zapper als Touchscreen. (Die Konfiguration als Maus funktioniert nicht wirklich, da fceumm eher eine relative Bewegung als eine Maus mit absoluter Position erwartet.)

Wenn Sie Ihre Spiele mit einem Skript starten, können Sie den Teil, der das Spiel oder den Emulator startet, bearbeiten, um Folgendes zu sagen:

python3 ~/lightgun/lightgun.py -t -B 30 "Befehl zum Starten des Spiels"

Dann können Sie während der ersten 30 Sekunden der Spielausführung (daher die Option -B 30) Ihre Lightgun anschließen, indem Sie 1+2 gedrückt halten.

Übrigens kann das lightgun.py-Skript auch für allgemeines Wii-Remote-Gaming mit Retroarch verwendet werden. Fügen Sie einfach die Option -o hinzu und die Lightgun-Funktionen werden deaktiviert, und stattdessen funktioniert die Wii-Fernbedienung horizontal, wobei die drei Tasten 1, 2 bzw. B sind. Es gibt andere Retroarch-bezogene Funktionen in den Mappings von lightgun.py, die Sie beim Lesen des Codes entdecken werden. Die Minus-Taste dient beispielsweise als Shift und steuert zusammen mit dem dpad das Speichern und Laden (hoch/runter = Speichernummer ändern; links=wiederherstellen; rechts=speichern).

Schritt 7: Pistolengriff und Zielen

Waffengriff und Zielen
Waffengriff und Zielen
Waffengriff und Zielen
Waffengriff und Zielen
Waffengriff und Zielen
Waffengriff und Zielen

Sie können die Wii-Fernbedienung allein als Waffe verwenden, indem Sie entlang der Oberseite zielen. Sie können dafür auch eines der handelsüblichen Waffengehäuse kaufen. Da die ursprüngliche Wii-Fernbedienung jedoch nicht als Sichtwaffe verwendet werden konnte, werden die Gehäuse in der Regel nicht mit Eisenvisieren geliefert, und Eisenvisiere verbessern die Genauigkeit erheblich.

Ich habe ein einfaches dreiteiliges 3D-druckbares System entworfen: einen aufschiebbaren Griff, der direkt hinter dem Abzug sitzt (so dass er ein bisschen wie ein Star Trek Original Series-Phaser aussieht) und aufschiebbare Visiere. Druckbare Dateien sind hier. Wenn Sie auf Kosten von Altholz Plastik sparen möchten, können Sie auch tun, was ich getan habe und anstatt den ganzen Griff zu drucken, drucken Sie nur den Teil, der die Wiimote hält, und schneiden Sie ein Holzstück aus und schrauben Sie es fest.

Um zu sehen, richten Sie Ihre Augen auf die Sehenswürdigkeiten. Richten Sie die Erhebung des Visiers zwischen den Erhebungen der Kimme so aus, dass der Luftraum auf beiden gleich ist und alle drei Erhebungen gleich hoch herausragen. Richten Sie dann die Mitte des Ziels mit der Oberseite der Erhebungen aus.

Hinweis: Die Höhe der Unebenheiten ist etwas ungleich, wobei die Unebenheit des Korns etwas niedriger ist, um die Höhe der Unebenheiten selbst auszugleichen, wenn Sie in einer Entfernung von 2,5 Metern (meinem Abstand zum Fernseher) entlang zielen. Wenn Sie einen deutlich anderen Abstand zum Fernseher haben, können Sie diesen in die OpenSCAD-Dateien eintragen. Diese Anpassung kann jedoch sowieso unterhalb der Druckertoleranzen liegen. Wenn Sie die vertikale Anpassung in der Software nicht vorgenommen haben, können Sie die Visierung in der Software noch weiter anpassen, indem Sie extraSightAdjust auf einen Wert von etwa -8 (in Millimetern) einstellen.

Schritt 8: Kalibrierung III (optional): Feineinstellung

Wenn Sie noch mehr Präzision wünschen, können Sie Folgendes ausführen:

python3 ~/lightgun/lightgun.py -d

(zur Demo) und schauen Sie genau hin, ob die Visierung mit dem Fadenkreuz übereinstimmt. Wenn dies nicht der Fall ist, beenden und bearbeiten Sie ~/.wiilightgun/wiimotecalibration manuell und optimieren Sie die x- und y-Koordinaten der Kameramitte leicht, um die Visierung anzupassen. Zum Beispiel schoß meine Waffe leicht nach rechts, also änderte ich die x-Koordinate von 529 auf 525. Die Zahlen werden wahrscheinlich bei jedem anders sein.

Schritt 9: Anhang: der Algorithmus

Anhang: der Algorithmus
Anhang: der Algorithmus

Der Mausemulationscode funktioniert ungefähr wie folgt.

  • Prozesstaste drückt.
  • Rufen Sie Daten von der Kamera ab und passen Sie die Kalibrierung der Kamerazentrierung an.
  • Wenn weniger als drei LEDs in der Kamera sichtbar sind:

    Letzte Mausposition beibehalten

  • Wenn drei oder vier LEDs sichtbar sind:

    • Verwenden Sie die Wiimote-Beschleunigungsmesserdaten, um die Wiimote-Ausrichtung zu ermitteln und zu identifizieren, welches LED-Kamerabild welcher physischen LED entspricht.
    • Wenn vier LEDs sichtbar sind:

      • Berechnen Sie die Homographie zwischen LED-Kamerabildern und LED-Standorten (in Bildschirmkoordinaten).
      • Verwenden Sie die Homographie, um zu berechnen, welche Bildschirmposition der Mitte des Kamerasichtfelds entspricht.
      • Führen Sie eine Y-Anpassung durch, um die Mitte des virtuellen Waffenlaufs unterhalb der Visierlinie einzustellen. Dies ist ein etwas klobiger Algorithmus, aber er funktioniert.
      • Stellen Sie die Mausposition auf die angepasste Bildschirmposition ein.
    • Wenn drei LEDs sichtbar sind:

      • Verwenden Sie OpenCV, um das P3P-Problem zwischen den LED-Kamerabildern und den physischen LED-Standorten zu lösen. Dadurch werden bis zu vier Lösungen generiert.
      • Falls erfolgreich:

        • Wenn wir eine vorherige erfolgreiche Standortberechnung haben, wählen Sie die Lösung, bei der die fehlende LED der zuletzt beobachteten oder berechneten Position dieser LED am nächsten kommt.
        • Wenn keine vorherige erfolgreiche Standortberechnung vorliegt, wählen Sie die Lösung aus, die den Kurs des Beschleunigungsmessers am besten vorhersagt.
        • Verwenden Sie die beste Lösung, um zu berechnen, wohin die vierte LED gehen soll.
        • Machen Sie den Rest wie im Fall mit vier LEDs.
      • Wenn nicht erfolgreich:

        Letzte Mausposition beibehalten

Empfohlen: