Sensoren in AirSim#

AirSim unterstützt derzeit die folgenden Sensoren. Jeder Sensor ist mit einer Integer-Enumeration verbunden, die seinen Sensortyp angibt.

  • Kamera
  • Barometer = 1
  • IMU = 2
  • GPS = 3
  • Magnetometer = 4
  • Abstandssensor = 5
  • Lidar = 6

Hinweis: Kameras werden anders konfiguriert als die anderen Sensoren und haben keine zugeordnete Enumeration. Informationen zur Kamerakonfiguration und API finden Sie in den allgemeinen Einstellungen und der Bild-API.

Standard-Sensoren#

Wenn in der settings.json keine Sensoren angegeben sind, werden je nach Simulationsmodus standardmäßig die folgenden Sensoren aktiviert.

Multirotor#

  • IMU
  • Magnetometer
  • GPS
  • Barometer

Auto#

  • GPS

ComputerVision#

  • Keine

Im Hintergrund richtet die Methode createDefaultSensorSettings in AirSimSettings.hpp die oben genannten Sensoren mit ihren Standardparametern ein, abhängig vom in der settings.json-Datei angegebenen Simulationsmodus.

Konfiguration der Standard-Sensorliste#

Die Standard-Sensorliste kann in der Einstellungs-JSON konfiguriert werden

"DefaultSensors": {
    "Barometer": {
        "SensorType": 1,
        "Enabled" : true,
        "PressureFactorSigma": 0.001825,
        "PressureFactorTau": 3600,
        "UncorrelatedNoiseSigma": 2.7,
        "UpdateLatency": 0,
        "UpdateFrequency": 50,
        "StartupDelay": 0

    },
    "Imu": {
        "SensorType": 2,
        "Enabled" : true,
        "AngularRandomWalk": 0.3,
        "GyroBiasStabilityTau": 500,
        "GyroBiasStability": 4.6,
        "VelocityRandomWalk": 0.24,
        "AccelBiasStabilityTau": 800,
        "AccelBiasStability": 36
    },
    "Gps": {
        "SensorType": 3,
        "Enabled" : true,
        "EphTimeConstant": 0.9,
        "EpvTimeConstant": 0.9,
        "EphInitial": 25,
        "EpvInitial": 25,
        "EphFinal": 0.1,
        "EpvFinal": 0.1,
        "EphMin3d": 3,
        "EphMin2d": 4,
        "UpdateLatency": 0.2,
        "UpdateFrequency": 50,
        "StartupDelay": 1
    },
    "Magnetometer": {
        "SensorType": 4,
        "Enabled" : true,
        "NoiseSigma": 0.005,
        "ScaleFactor": 1,
        "NoiseBias": 0,
        "UpdateLatency": 0,
        "UpdateFrequency": 50,
        "StartupDelay": 0
    },
    "Distance": {
        "SensorType": 5,
        "Enabled" : true,
        "MinDistance": 0.2,
        "MaxDistance": 40,
        "X": 0, "Y": 0, "Z": -1,
        "Yaw": 0, "Pitch": 0, "Roll": 0,
        "DrawDebugPoints": false
    },
    "Lidar2": {
        "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"
    }
},

Konfiguration der fahrzeugspezifischen Sensorliste#

Ein Fahrzeug kann eine Teilmenge der oben genannten Standard-Sensoren überschreiben. Ein Lidar- und ein Abstandssensor werden standardmäßig nicht zu einem Fahrzeug hinzugefügt, daher müssen Sie diese auf diese Weise hinzufügen. Jeder Sensor muss einen gültigen "SensorType" haben und eine Teilmenge der Eigenschaften kann definiert werden, die die oben gezeigten Standardwerte überschreiben, und Sie können "Enabled" auf false setzen, um einen bestimmten Sensortyp zu deaktivieren.

"Vehicles": {

    "Drone1": {
        "VehicleType": "SimpleFlight",
        "AutoCreate": true,
        ...
        "Sensors": {
            "Barometer":{
                "SensorType": 1,
                "Enabled": true,
                "PressureFactorSigma": 0.0001825
            },
            "MyLidar1": {
                "SensorType": 6,
                "Enabled" : true,
                "NumberOfChannels": 16,
                "PointsPerSecond": 10000,
                "X": 0, "Y": 0, "Z": -1,
                "DrawDebugPoints": true
            },
            "MyLidar2": {
                "SensorType": 6,
                "Enabled" : true,
                "NumberOfChannels": 4,
                "PointsPerSecond": 10000,
                "X": 0, "Y": 0, "Z": -1,
                "DrawDebugPoints": true
            }
        }
    }
}

Sensorspezifische Einstellungen#

Detaillierte Informationen zur Bedeutung dieser Sensoreinstellungen finden Sie auf den folgenden Seiten

Serverseitige Visualisierung zur Fehlersuche#

Standardmäßig werden die vom Abstandssensor getroffenen Punkte nicht im Ansichtsfenster gezeichnet. Um das Zeichnen der getroffenen Punkte im Ansichtsfenster zu aktivieren, aktivieren Sie bitte die Einstellung DrawDebugPoints über die Einstellungs-JSON. Z. B. -

"Distance": {
    "SensorType": 5,
    "Enabled" : true,
    ...
    "DrawDebugPoints": true
}

Sensor-APIs#

Springen Sie direkt zu hello_drone.py oder hello_drone.cpp für Beispielanwendungen, oder siehe unten für die vollständige API.

Barometer#

msr::airlib::BarometerBase::Output getBarometerData(const std::string& barometer_name, const std::string& vehicle_name);
barometer_data = client.getBarometerData(barometer_name = "", vehicle_name = "")

IMU#

msr::airlib::ImuBase::Output getImuData(const std::string& imu_name = "", const std::string& vehicle_name = "");
imu_data = client.getImuData(imu_name = "", vehicle_name = "")

GPS#

msr::airlib::GpsBase::Output getGpsData(const std::string& gps_name = "", const std::string& vehicle_name = "");
gps_data = client.getGpsData(gps_name = "", vehicle_name = "")

Magnetometer#

msr::airlib::MagnetometerBase::Output getMagnetometerData(const std::string& magnetometer_name = "", const std::string& vehicle_name = "");
magnetometer_data = client.getMagnetometerData(magnetometer_name = "", vehicle_name = "")

Abstandssensor#

msr::airlib::DistanceSensorData getDistanceSensorData(const std::string& distance_sensor_name = "", const std::string& vehicle_name = "");
distance_sensor_data = client.getDistanceSensorData(distance_sensor_name = "", vehicle_name = "")

Lidar#

Siehe die Lidar-Seite für die Lidar-API.