Načtení ukázek Azure Kinect IMU

Zařízení Azure Kinect poskytuje přístup k jednotkám IMU (Inertial Motion Units), včetně akcelerometru a gyroskopu. Pokud chcete získat přístup k ukázkám IMU, musíte nejprve otevřít a nakonfigurovat zařízení a pak zaznamenat data IMU. Další informace najdete v tématu Vyhledání a otevření zařízení.

Vzorky IMU se generují s mnohem vyšší frekvencí než obrázky. Vzorky se hostiteli hlásí s nižším tempem, než se vzorkuje. Při čekání na ukázku IMU bude často současně k dispozici více ukázek.

Podrobnosti o rychlosti generování sestav IMU najdete ve specifikaci hardwaru Azure Kinect DK.

Konfigurace a spouštění kamer

Poznámka

Senzory IMU můžou fungovat jenom v případě, že jsou spuštěné kamery barev a/nebo hloubkové kamery. Senzory IMU nemohou fungovat samostatně.

Kamery spustíte pomocí k4a_device_start_cameras().

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;
}

Přístup k ukázkám IMU

Každý k4a_imu_sample_t obsahuje měření akcelerometru a gyroskopu zachycené téměř ve stejnou dobu.

Ukázky IMU můžete získat buď ve stejném vlákně, ve které získáte snímky obrázků, nebo na samostatných vláknech.

Pokud chcete načíst ukázky IMU hned, jakmile budou k dispozici, možná budete chtít zavolat k4a_device_get_imu_sample() na vlastní vlákno. Rozhraní API má také dostatečné interní řazení do fronty, které vám umožní kontrolovat vzorky pouze po vrácení každého záznamu obrázku.

Vzhledem k tomu, že existuje několik interních ukázek IMU ve frontě, můžete použít následující vzor bez vyřazení dat:

  1. Počkejte na záznam s libovolnou frekvencí snímků.
  2. Zpracujte zachycení.
  3. Načtěte všechny ukázky IMU ve frontě.
  4. Opakujte čekání na další záznam.

Pokud chcete načíst všechny aktuálně zařazené ukázky IMU ve frontě, můžete volat k4a_device_get_imu_sample()timeout_in_ms s 0 ve smyčce, dokud funkce nevrátí K4A_WAIT_RESULT_TIMEOUT. K4A_WAIT_RESULT_TIMEOUT označuje, že v zadaném časovém limitu nejsou žádné vzorky ve frontě a žádné nepřišly.

Příklad využití

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);
}

Další kroky

Teď víte, jak pracovat s ukázkami IMU, můžete také