Voorbeelden van Azure Kinect IMU ophalen
Het Azure Kinect-apparaat biedt toegang tot ICU's (Inertial Motion Units), met inbegrip van het type versnellingsmeter en gyroscoop. Voor toegang tot voorbeelden van IKU's moet u eerst uw apparaat openen en configureren en vervolgens IMU-gegevens vastleggen. Zie Apparaat zoeken en openen voor meer informatie.
IMU-voorbeelden worden gegenereerd met een veel hogere frequentie dan afbeeldingen. Voorbeelden worden met een lagere snelheid aan de host gerapporteerd dan ze worden bemonsterd. Wanneer u wacht op een IMU-steekproef, zijn er vaak meerdere monsters tegelijk beschikbaar.
Zie de Hardwarespecificatie van Azure Kinect DK voor meer informatie over het IMU-rapportagepercentage.
Camera's configureren en starten
Notitie
IMU-sensoren werken alleen wanneer de kleur- en/of dieptecamera's actief zijn. IMU-sensoren kunnen niet alleen werken.
Gebruik k4a_device_start_cameras() om de camera's te starten.
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;
}
Toegang tot IMU-voorbeelden
Elke k4a_imu_sample_t bevat een versnellingsmeter en gyroscoop die bijna tegelijkertijd worden vastgelegd.
U kunt de IMU-voorbeelden ophalen op dezelfde thread als u afbeeldingsopnamen krijgt of op afzonderlijke threads.
Als u IMU-voorbeelden wilt ophalen zodra deze beschikbaar zijn, kunt u een eigen thread aanroepen k4a_device_get_imu_sample()
. De API heeft ook voldoende interne wachtrijen, zodat u alleen kunt controleren op voorbeelden nadat elke opname van een afbeelding is geretourneerd.
Omdat er een interne wachtrij van IMU-voorbeelden is, kunt u het volgende patroon gebruiken zonder gegevens te verwijderen:
- Wacht op een opname, met elke framessnelheid.
- Verwerk de opname.
- Haal alle IMU-voorbeelden in de wachtrij op.
- Herhaal het wachten op de volgende opname.
Als u alle IMU-voorbeelden in de wachtrij wilt ophalen, kunt u aanroepen k4a_device_get_imu_sample()
met een timeout_in_ms
van 0 in een lus totdat de functie retourneert K4A_WAIT_RESULT_TIMEOUT
.
K4A_WAIT_RESULT_TIMEOUT
geeft aan dat er geen voorbeelden in de wachtrij zijn en dat er geen zijn aangekomen in de opgegeven time-out.
Verbruiksvoorbeeld
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);
}
Volgende stappen
Nu u weet hoe u met IMU-voorbeelden werkt, kunt u ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor