Megosztás a következőn keresztül:


Azure Kinect IMU-minták lekérése

Az Azure Kinect-eszköz hozzáférést biztosít az inerciális mozgásegységekhez (IPU-khoz), beleértve a gyorsulásmérőt és a giroszkóptípust is. Az IMU-minták eléréséhez először meg kell nyitnia és konfigurálnia kell az eszközt, majd rögzítenie kell az IMU-adatokat. További információ: eszköz keresése és megnyitása.

Az IMU-minták sokkal nagyobb gyakorisággal jönnek létre, mint a képek. A minták a mintájuknál alacsonyabb arányban jelennek meg a gazdagépen. Ha IMU-mintára vár, gyakran több minta is elérhetővé válik egyszerre.

Az IMU jelentési sebességével kapcsolatos részletekért tekintse meg az Azure Kinect DK hardverspecifikációját .

Kamerák konfigurálása és indítása

Feljegyzés

Az IMU-érzékelők csak akkor működnek, ha a szín- és/vagy mélységkamerák futnak. Az IMU-érzékelők nem működnek egyedül.

A kamerák indításához használja a k4a_device_start_cameras()-t.

k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;

if (K4A_RESULT_SUCCEEDED != k4a_device_start_cameras(device, &config))
{
    printf("Failed to start cameras\n");
    goto Exit;
}

if (K4A_RESULT_SUCCEEDED != k4a_device_start_imu(device))
{
    printf("Failed to start imu\n");
    goto Exit;
}

IMU-minták elérése

Minden k4a_imu_sample_t közel ugyanabban az időben rögzített gyorsulásmérőt és giroszkópot tartalmaz.

Az IMU-mintákat lekérheti ugyanazon a szálon, amelyen képrögzítéseket kap, vagy különálló szálakon.

Az IMU-minták lekéréséhez, amint elérhetők, érdemes lehet meghívni k4a_device_get_imu_sample() a saját szálát. Az API rendelkezik elegendő belső sorba állítással is, hogy csak az egyes képrögzítések visszaadása után ellenőrizze a mintákat.

Mivel az IMU-minták belső várólistája van, az alábbi mintát használhatja anélkül, hogy adatokat dobhat le:

  1. Várjon a rögzítésre, bármilyen képkockasebesség mellett.
  2. A rögzítés feldolgozása.
  3. Kérje le az összes várólistán lévő IMU-mintát.
  4. Ismételje meg a várakozást a következő rögzítésre.

Az összes jelenleg várólistán lévő IMU-minta lekéréséhez meghívhat k4a_device_get_imu_sample() egy timeout_in_ms 0-t egy hurokban, amíg a függvény vissza nem tér K4A_WAIT_RESULT_TIMEOUT. K4A_WAIT_RESULT_TIMEOUT azt jelzi, hogy nincsenek várólistára helyezett minták, és egyik sem érkezett meg a megadott időtúllépéshez.

Használati példa

k4a_imu_sample_t imu_sample;

// Capture a imu sample
switch (k4a_device_get_imu_sample(device, &imu_sample, TIMEOUT_IN_MS))
{
case K4A_WAIT_RESULT_SUCCEEDED:
    break;
case K4A_WAIT_RESULT_TIMEOUT:
    printf("Timed out waiting for a imu sample\n");
    continue;
    break;
case K4A_WAIT_RESULT_FAILED:
    printf("Failed to read a imu sample\n");
    goto Exit;
}

// Access the accelerometer readings
if (imu_sample != NULL)
{
    printf(" | Accelerometer temperature:%.2f x:%.4f y:%.4f z: %.4f\n",
            imu_sample.temperature,
            imu_sample.acc_sample.xyz.x,
            imu_sample.acc_sample.xyz.y,
            imu_sample.acc_sample.xyz.z);
}

Következő lépések

Most már tudja, hogyan használhatja az IMU-mintákat,