Verwendung von Lidar in AirSim#
AirSim unterstützt Lidar für Multirotoren und Autos.
Die Aktivierung von Lidar und die anderen Lidar-Einstellungen können über die AirSimSettings-JSON konfiguriert werden. Informationen zur Konfiguration allgemeiner/gemeinsamer Sensoreneinstellungen finden Sie unter allgemeine Sensoren.
Lidar auf einem Fahrzeug aktivieren#
- Standardmäßig sind Lidars nicht aktiviert. Um Lidar zu aktivieren, setzen Sie die Attribute `SensorType` und `Enabled` in der Einstellungen-JSON.
"Lidar1": {
"SensorType": 6,
"Enabled" : true,
}
- Mehrere Lidars können auf einem Fahrzeug aktiviert werden.
Lidar-Konfiguration#
Die folgenden Parameter können derzeit über die Einstellungen-JSON konfiguriert werden.
| Parameter | Beschreibung |
|---|---|
| NumberOfChannels | Anzahl der Kanäle/Laser des Lidars |
| Range | Reichweite in Metern |
| PointsPerSecond | Anzahl der pro Sekunde erfassten Punkte |
| RotationsPerSecond | Rotationen pro Sekunde |
| HorizontalFOVStart | Horizontaler Sichtfeldbeginn für das Lidar, in Grad |
| HorizontalFOVEnd | Horizontaler Sichtfeldende für das Lidar, in Grad |
| VerticalFOVUpper | Obere vertikale Sichtfeldbegrenzung für das Lidar, in Grad |
| VerticalFOVLower | Untere vertikale Sichtfeldbegrenzung für das Lidar, in Grad |
| X Y Z | Position des Lidars relativ zum Fahrzeug (in NED, in Metern) |
| Roll Pitch Yaw | Orientierung des Lidars relativ zum Fahrzeug (in Grad, Yaw-Pitch-Roll-Reihenfolge zum Vektor +X) |
| DataFrame | Frame für die Punkte in der Ausgabe ("VehicleInertialFrame" oder "SensorLocalFrame") |
| ExternalController | Ob Daten an einen externen Controller wie ArduPilot oder PX4 gesendet werden sollen, falls dieser verwendet wird (Standardwert ist `true`) (PX4 sendet derzeit keine Lidar-Daten) |
z.B.
{
"SeeDocsAt": "https://msdocs.de/AirSim/settings/",
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
"Drone1": {
"VehicleType": "simpleflight",
"AutoCreate": true,
"Sensors": {
"LidarSensor1": {
"SensorType": 6,
"Enabled" : true,
"NumberOfChannels": 16,
"RotationsPerSecond": 10,
"PointsPerSecond": 100000,
"X": 0, "Y": 0, "Z": -1,
"Roll": 0, "Pitch": 0, "Yaw" : 0,
"VerticalFOVUpper": -15,
"VerticalFOVLower": -25,
"HorizontalFOVStart": -20,
"HorizontalFOVEnd": 20,
"DrawDebugPoints": true,
"DataFrame": "SensorLocalFrame"
},
"LidarSensor2": {
"SensorType": 6,
"Enabled" : true,
"NumberOfChannels": 4,
"RotationsPerSecond": 10,
"PointsPerSecond": 10000,
"X": 0, "Y": 0, "Z": -1,
"Roll": 0, "Pitch": 0, "Yaw" : 0,
"VerticalFOVUpper": -15,
"VerticalFOVLower": -25,
"DrawDebugPoints": true,
"DataFrame": "SensorLocalFrame"
}
}
}
}
}
Serverseitige Visualisierung zum Debuggen#
Standardmäßig werden die Lidar-Punkte nicht im Viewport gezeichnet. Um das Zeichnen von getroffenen Laserpunkten im Viewport zu aktivieren, aktivieren Sie `DrawDebugPoints` über die Einstellungen-JSON.
"Lidar1": {
...
"DrawDebugPoints": true
},
Hinweis: Das Aktivieren von `DrawDebugPoints` kann zu übermäßigem Speicherverbrauch und Abstürzen in den Versionen `v1.3.1` und `v1.3.0` führen. Dies wurde im Hauptzweig behoben und sollte in späteren Versionen funktionieren.
Client-API#
Verwenden Sie die `getLidarData()` API, um die Lidar-Daten abzurufen.
- Die API gibt eine Punktwolke als flaches Array von Gleitkommazahlen zusammen mit dem Zeitstempel der Aufnahme und der Lidar-Pose zurück.
- Punktwolke
- Die Gleitkommazahlen stellen die [x,y,z]-Koordinaten für jeden getroffenen Punkt innerhalb der Reichweite im letzten Scan dar.
- Der Frame für die Punkte in der Ausgabe ist über das Attribut "DataFrame" konfigurierbar -
- "" oder `VehicleInertialFrame` -- Standard; zurückgegebene Punkte sind im Trägheitsrahmen des Fahrzeugs (in NED, in Metern)
- `SensorLocalFrame` -- zurückgegebene Punkte sind im lokalen Sensorrahmen (in NED, in Metern)
- Lidar-Pose
- Lidar-Pose im Trägheitsrahmen des Fahrzeugs (in NED, in Metern)
- Kann verwendet werden, um Punkte in andere Frames zu transformieren.
- Segmentierung: Die Segmentierung jedes vom Lidar-Punkt erfassten Objekts
Python-Beispiele#
Demnächst verfügbar#
- Visualisierung von Lidar-Daten auf der Client-Seite.