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:
- Várjon a rögzítésre, bármilyen képkockasebesség mellett.
- A rögzítés feldolgozása.
- Kérje le az összes várólistán lévő IMU-mintát.
- 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,