本文内容
● 配置并启动相机
● 获取IMU数据
● 用例
● 后续步骤
在 Femto Bolt 设备中蕴含惯性活动单元 (IMU),,,,,,其中蕴含加快度传感器和陀螺仪。。。。。。。 若是要获取IMU数据,,,,,,首先必要打开设备,,,,,,而后再开启 IMU,,,,,,而后获取 IMU 数据。。。。。。。请参阅查找并打开设备。。。。。。。
由于IMU的采样频率比图像数据帧率高得多,,,,,,而利用层获取 IMU 的频率低于 IMU 的采样频率,,,,,,这样每次利用层接管IMU数据时,,,,,,会同时收到多组 IMU 数据。。。。。。。
有关 IMU 频率的具体信息,,,,,,请参阅 Femto Bolt 硬件规格。。。。。。。
配置并启动相机
备注:
Femto Bolt的IMU和深度、彩色相机相互独立,,,,,,能够单独输出IMU数据,,,,,,这点和Aazure Kinect 分歧,,,,,,但是为了维持和Azure Kinect 的使用逻辑一致,,,,,,还是先开启彩色或深度相机,,,,,,而后才开启IMU。。。。。。。
若要启动相机,,,,,,请使用 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;
}获取IMU 数据
每个 k4a_imu_sample_t 蕴含统一功夫获取的加快度和陀螺仪数据。。。。。。。
您能够在用于获取图像数据的统一线程 或者在分歧的线程中获取IMU数据。。。。。。。
若是要急剧获取IMU数据,,,,,,那IMU数据采集使用单独的线程,,,,,,在线程内挪用k4a_device_get_imu_sample()函数获取IMU数据。。。。。。。
由于 IMU 数据首先会存入 SDK 内部的队列中,,,,,,你能够在不抛弃任何数据的情况下实现对数据的获取和处置:
1. 以肯定频率去期待捕获数据(因缓存队列长杜仔限,,,,,,频率不能太低,,,,,,通常距离不要超过100ms);;;;;;;
2. 期待到捕获数据后对数据进行处置;;;;;;;
3. 获取所有已存入队列的数据进行处置;;;;;;;
4. 循环以上步骤。。。。。。。
其中第三步能够在一个循环中传入 参数 timeout_in_ms 值为 0 挪用 k4a_device_get_imu_sample(),,,,,,直到函数返回 K4A_WAIT_RESULT_TIMEOUT。。。。。。。 K4A_WAIT_RESULT_TIMEOUT 批注队列中没有缓存数据,,,,,,且在指定的超时内没有任何数据到达。。。。。。。
用例
k4a_imu_sample_t imu_sample;// Capture a imu sampleswitch (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 readingsif (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);}后续步骤
此刻你已经把握了若何获取IMU数据,,,,,,接下来你还能够索求其他职能图像转换。。。。。。。