Objekterkennung#

Über#

Diese Funktion ermöglicht die Generierung von Objekterkennungen mit vorhandenen Kameras in AirSim, ähnlich wie bei DNN-Erkennung.
Mithilfe der API können Sie steuern, welches Objekt nach Namen und Radius von der Kamera erkannt werden soll.
Diese Einstellungen können für jede Kamera-, Bildtyp- und Fahrzeugkombination separat gesteuert werden.

API#

  • Setzt den Mesh-Namen für die Erkennung im Wildcard-Format
    simAddDetectionFilterMeshName(camera_name, image_type, mesh_name, vehicle_name = '')

  • Löscht alle zuvor hinzugefügten Mesh-Namen
    simClearDetectionMeshNames(camera_name, image_type, vehicle_name = '')

  • Setzt den Erkennungsradius in cm
    simSetDetectionFilterRadius(camera_name, image_type, radius_cm, vehicle_name = '')

  • Erkenntnisse abrufen
    simGetDetections(camera_name, image_type, vehicle_name = '')

Der Rückgabewert von simGetDetections ist ein DetectionInfo-Array

DetectionInfo
    name = ''
    geo_point = GeoPoint()
    box2D = Box2D()
    box3D = Box3D()
    relative_pose = Pose()

Anwendungsbeispiel#

Das Python-Skript detection.py zeigt, wie Erkennungsparameter gesetzt werden und wie das Ergebnis in einer OpenCV-Aufnahme angezeigt wird.

Ein minimales Beispiel mit der API in der Blocks-Umgebung zum Erkennen von Zylinderobjekten

camera_name = "0"
image_type = airsim.ImageType.Scene

client = airsim.MultirotorClient()
client.confirmConnection()

client.simSetDetectionFilterRadius(camera_name, image_type, 80 * 100) # in [cm]
client.simAddDetectionFilterMeshName(camera_name, image_type, "Cylinder_*") 
client.simGetDetections(camera_name, image_type)
detections = client.simClearDetectionMeshNames(camera_name, image_type)

Ausgabeergebnis

Cylinder: <DetectionInfo> {   'box2D': <Box2D> {   'max': <Vector2r> {   'x_val': 617.025634765625,
    'y_val': 583.5487060546875},
    'min': <Vector2r> {   'x_val': 485.74359130859375,
    'y_val': 438.33465576171875}},
    'box3D': <Box3D> {   'max': <Vector3r> {   'x_val': 4.900000095367432,
    'y_val': 0.7999999523162842,
    'z_val': 0.5199999809265137},
    'min': <Vector3r> {   'x_val': 3.8999998569488525,
    'y_val': -0.19999998807907104,
    'z_val': 1.5199999809265137}},
    'geo_point': <GeoPoint> {   'altitude': 16.979999542236328,
    'latitude': 32.28772183970703,
    'longitude': 34.864785008379876},
    'name': 'Cylinder9_2',
    'relative_pose': <Pose> {   'orientation': <Quaternionr> {   'w_val': 0.9929741621017456,
    'x_val': 0.0038591264747083187,
    'y_val': -0.11333247274160385,
    'z_val': 0.03381215035915375},
    'position': <Vector3r> {   'x_val': 4.400000095367432,
    'y_val': 0.29999998211860657,
    'z_val': 1.0199999809265137}}}

image image