Sdílet prostřednictvím


Načtení ukázek Azure Kinect IMU

Zařízení Azure Kinect poskytuje přístup k inerciálním jednotkám pohybu (IMU), včetně typů akcelerometru i gyroskopu. Pokud chcete získat přístup k ukázkám rychlých zpráv, musíte nejdřív otevřít a nakonfigurovat zařízení a pak zachytit 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 hlásí hostiteli s nižší rychlostí, než se vzorkují. Při čekání na vzorek IMU se ve stejnou dobu často zpřístupní více vzorků.

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

Konfigurace a spuštění fotoaparátů

Poznámka:

Senzory IMU můžou fungovat jenom v případech, kdy běží barevné a/nebo hloubkové kamery. Senzory IMU nemůžou fungovat samostatně.

K zahájení fotoaparátů použijte 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;
}

Ukázky IMU pro Access

Každý k4a_imu_sample_t obsahuje akcelerometr a gyroskopové čtení zachycené téměř ve stejnou dobu.

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

Pokud chcete načíst ukázky IMU hned, jak jsou k dispozici, můžete volat k4a_device_get_imu_sample() na vlastní vlákno. Rozhraní API má také dostatek interních front, které vám umožní kontrolovat pouze vzorky po vrácení každého zachycení obrázků.

Vzhledem k tomu, že se vzorky IMU zařadí do fronty, můžete použít následující vzor, aniž byste museli vyřazovat žádná data:

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

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

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ď už víte, jak pracovat s ukázkami IMU, můžete také