Low-Cost Lidar Objekterkennung mit Matlab/Simulink: Unterschied zwischen den Versionen
Zeile 84: | Zeile 84: | ||
[2.Byte: zwei FehlerFlags+ Distanz-Bits 13-8] | [2.Byte: zwei FehlerFlags+ Distanz-Bits 13-8] | ||
[3.+4.Byte: Zusätzliche Signalinformationen] | [3.+4.Byte: Zusätzliche Signalinformationen] | ||
9-12: Daten-Paket 2 | 9-12: Daten-Paket 2 | ||
13-16: Daten-Paket 3 | 13-16: Daten-Paket 3 | ||
17-20: Daten-Paket 4 | 17-20: Daten-Paket 4 | ||
Version vom 28. Juli 2017, 17:17 Uhr
Autor: Marcel Kreuer
Betreuer: Prof. Schneider
Motivation
LiDAR ist eine hochgenaue störunanfällige Messtechnik für Abstände. Mittlerweile sind Laserscanner für unter 100€ erhältlich.
Ziel
In dieser Aufgabe soll ein Low-Cost LiDAR mit Matlab/Simulink in Betrieb genommen werden.
Aufgabe
- Rechere nach Beschaffungsmöglichkeiten
- Inbetriebnahme des LiDAR
- Erstellund eines Simulink Treibers zur Echtzeitverarbeitung
- Objektbildung mit Simulink
- Bewertung der Ergebnisse
- Wissenschaftliche Dokumentation als HSHL-Wiki Artikel
- Softwareentwicklung nach SDE Standard in SVN
- Funktionsnachweis als YouTube-Video (vgl. Veranstaltungsregeln)
Lösungen
Im Folgenden werden die Lösungen dokumentiert
Beschaffung
Da die Beschaffung auf Rechnung möglich sein sollte, fiel die Wahl auf den Internet-Händler PC:Mediastore Aschaffenburg
Inbetriebnahme
Der Lidar-Sensor besitzt zwei Anschlussmöglichkeiten einen Zweierstecker für den Motor, welcher mit 5V beschaltet wird und einen Viererstecker für den eigentlichen Sensor(3,3 Volt-Versorgung und RX, TX). Für die Spannungsversorgung wurde der 5 Volt Ausgang des L298N-Motortreibers gewählt. Für die Serielle Verbindung wurde ein Arduino Due als Transciever gewählt. Dieser wurde so programmiert, dass er sobald Daten auf einem Seriellen-Port anliegen, diese an den jeweils Anderen weiter gesendet werden.
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
//Serial.println("USB-Verbindung hergestellt!");
Serial1.begin(115200);
//Serial.println("Lidar Kommunikation gestartet");
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial1.available()) {
//Serial.print(Serial1.read()-0xA0,Datatyp);
//Serial.print(" ");
Serial.write(Serial1.read());
}
if (Serial.available())
{
Serial1.write(Serial.read());
}
}
Struktur der Daten
Die Struktur der Daten wurde folgender Seite entnommen: https://xv11hacking.wikispaces.com
Eine Nachricht besteht dabei aus 20 Bytes
1. Startbit: 0xFA
2:Die ID: 0-90:
Eine Nachricht besteht immer aus 4 Datenpaketen, zugehörig den jeweiligen Gradzahlen. Beispiel: ID=0 => Messdaten 0°,1°,2°,3°
3+4: Codieren die Drehgeschwindigkeit des Motors
5-8: Daten-Paket 1.: [1.Byte: Distanz-Bits 7-0] [2.Byte: zwei FehlerFlags+ Distanz-Bits 13-8] [3.+4.Byte: Zusätzliche Signalinformationen]
9-12: Daten-Paket 2
13-16: Daten-Paket 3
17-20: Daten-Paket 4
Weblinks
BSD-Lizenzbedingung BSD-Lizenz
Copyright (c) 2014, Hochschule Hamm-Lippstadt, Dep. Lip. 1, Prof. Schneider
Hochschule Hamm-Lippstadt. Alle Rechte vorbehalten.
→ zurück zum Hauptartikel: Digitale Signal- und Bildverarbeitung SoSe2017