Zum Inhalt

YDLIDAR

YDLIDAR-X4

  • Light Detection And Ranging Sensor
  • Einstellbare Motordrehzal (6 – 12 Hz)
  • Messfrequenz bis 5 kHz
  • Messbereich von 0,12m bis 10m
  • 360° Umsicht und Abstandsmessung in 0,5° Schritten

Quelle: https://www.ydlidar.com

Treiber

Der erstellte Treiber ist ein Plattform-Treiber, der beim Laden ein Character-Device erstellt und das Sampling startet. Außerdem hat der Treiber ein Array, indem die gemessenen Abstände gespeichert werden. Mit einem Timer wird sichergestellt, dass die Abstände in einem Zeitintervall von 50ms über den Avalon-Bus gelesen werden. Die Software kann über das Caracter-Device „/dev/ydlidar“ die aktuellen Abstände auslesen.

Eine bessere Möglichkeit die Abstandsdaten aus dem FPGA zu lesen ist es einen Interrupt anstatt eines Timers zu verwenden. Dadurch wird sichergestellt, dass der Treiber die neuen Abstandsdaten liest, sobald diese vom FPGA verfügbar sind. Dafür müsste allerdings der IP-Core des Sensors erweitert werden.

Software

Der Hexapod kommuniziert über ein von der vorherigen Gruppe erstelltes TCP-Protokoll mit dem Rechner.

Auf dem Hexapod läuft der Server. Ein eigener Thread liest die vom Client gesendeten Befehle ein und verarbeitet diese. Bei den Befehlen handelt es sich um die Ansteuerung der Servos. Diese können über die Treiber angesteuert werden. Außerdem wird für jeden Treiber ein Thread gestartet, der die jeweiligen Sensordaten liest und sie über das Protokoll an den Client sendet.

Der Client läuft auf dem Rechner. In ihm laufen zwei Threads. Ein Thread liest die Sensordaten ein und ein zweiter Thread ist für die Ansteuerung des Hexapods verantwortlich. Der Client wird von der KI zum Trainieren verwendet.

Die Software wurde um die Übertragung der YDLidar-Daten erweitert. Das Protokoll unterscheidet sich nun etwas von der ersten Version (Zwei Byte für die Längeninformation anstatt einem Byte, Packing der Daten).

Der Server hat einen zusätzlichen Thread, der die YDLidar-Daten aus dem Character-File liest und dem Client sendet. Der Data-Thread des Clients nimmt diese entgegen. Außerdem gibt es eine Methode, die die YDLidar-Daten plottet.