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:
- Počkejte na zachytávání s libovolnou rychlostí snímků.
- Zpracování zachytávání
- Načtěte všechny ukázky IMU ve frontě.
- 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é