OrbbecSDK2 2.0.2
OrbbecSDK2: New generation Software-Development-Kit for Orbbec 3D-Sensor devices
载入中...
搜索中...
未找到
函数
ob2imu.h 文件参考
#include "ob2types.h"

浏览源代码.

函数

uint32_t ob2_device_get_supported_imu_sensor_count (ob2_device_t device_handle, ob2_status_t *status)
 获取设备支持的 IMU 传感器个数 更多...
 
ob2_imu_sensor_type_t ob2_device_get_supported_imu_sensor_type (ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
 通过索引号获取设备支持的 IMU 的传感器类型 更多...
 
uint32_t ob2_device_get_accel_stream_profile_count (ob2_device_t device_handle, ob2_status_t *status)
 获取加速度计流配置个数 更多...
 
ob2_accel_stream_profile_t ob2_device_get_accel_stream_profile (ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
 通过索引号获取加速度计流配置 更多...
 
uint32_t ob2_device_get_gyro_stream_profile_count (ob2_device_t device_handle, ob2_status_t *status)
 获取陀螺仪流配置个数 更多...
 
ob2_gyro_stream_profile_t ob2_device_get_gyro_stream_profile (ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
 通过索引号获取陀螺仪流配置 更多...
 
ob2_imu_config_t ob2_device_create_imu_config (ob2_device_t device_handle, ob2_status_t *status)
 创建 IMU 配置 更多...
 
void ob2_imu_config_release (ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 释放 IMU 配置 更多...
 
void ob2_imu_config_set_accel_stream_profile (ob2_imu_config_t imu_config_handle, const ob2_accel_stream_profile_t *stream_profile, ob2_status_t *status)
 设置加速度计流配置 更多...
 
void ob2_imu_config_enable_accel_stream (ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 使能加速度计流 更多...
 
void ob2_imu_config_disable_accel_stream (ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 关闭(去使能)加速度计流 更多...
 
void ob2_imu_config_set_gyro_stream_profile (ob2_imu_config_t imu_config_handle, const ob2_gyro_stream_profile_t *stream_profile, ob2_status_t *status)
 设置陀螺仪流配置 更多...
 
void ob2_imu_config_enable_gyro_stream (ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 使能陀螺仪流 更多...
 
void ob2_imu_config_disable_gyro_stream (ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 关闭(去使能)陀螺仪流 更多...
 
void ob2_device_start_imu (ob2_device_t device_handle, const ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 启动设备内 IMU 工作(开流) 更多...
 
void ob2_device_start_imu_with_callback (ob2_device_t device_handle, const ob2_imu_config_t imu_config_handle, ob2_imu_sample_cb_t cb, void *user_data, ob2_status_t *status)
 通过回调返回 imu_sample 的方式启动设备 IMU 工作 更多...
 
void ob2_device_update_imu_config (ob2_device_t device_handle, const ob2_imu_config_t imu_config_handle, ob2_status_t *status)
 更新设备 IMU 配置 更多...
 
void ob2_device_stop_imu (ob2_device_t device_handle, ob2_status_t *status)
 停止设备内 IMU 工作 更多...
 
ob2_imu_sample_t ob2_device_get_imu_sample (ob2_device_t device_handle, int32_t timeout_msec, ob2_status_t *status)
 获取 IMU 采样数据 更多...
 
void ob2_imu_sample_reference (ob2_imu_sample_t imu_sample_handle, ob2_status_t *status)
 增加 imu_sample 引用计数 更多...
 
void ob2_imu_sample_release (ob2_imu_sample_t imu_sample_handle, ob2_status_t *status)
 释放 imu_sample 更多...
 
uint32_t ob2_imu_sample_get_accel_sample_count (ob2_imu_sample_t imu_sample_handle, ob2_status_t *status)
 获取 imu_sample 中加速度计采样数据个数 更多...
 
ob2_accel_sample_t ob2_imu_sample_get_accel_sample (ob2_imu_sample_t imu_sample_handle, uint32_t index, ob2_status_t *status)
 获取加速度计采样数据 更多...
 
uint32_t ob2_imu_sample_get_gyro_sample_count (ob2_imu_sample_t imu_sample_handle, ob2_status_t *status)
 获取 imu_sample 陀螺仪采样数据个数 更多...
 
ob2_gyro_sample_t ob2_imu_sample_get_gyro_sample (ob2_imu_sample_t imu_sample_handle, uint32_t index, ob2_status_t *status)
 获取陀螺仪采样数据 更多...
 

函数说明

◆ ob2_device_get_supported_imu_sensor_count()

uint32_t ob2_device_get_supported_imu_sensor_count ( ob2_device_t  device_handle,
ob2_status_t status 
)

获取设备支持的 IMU 传感器个数

IMU(惯性测量单元) 是一个复合传感器,是加速度计、陀螺仪、磁力计等这几个传感器中的一个或多个组合, 本接口用于这些独立传感器的查询

参数
[in]device_handle设备句柄
[out]status返回函数调用状态
返回
uint32_t 返回传感器个数

被这些函数引用 ob2::device::get_supported_imu_sensor_type_list().

◆ ob2_device_get_supported_imu_sensor_type()

ob2_imu_sensor_type_t ob2_device_get_supported_imu_sensor_type ( ob2_device_t  device_handle,
uint32_t  index,
ob2_status_t status 
)

通过索引号获取设备支持的 IMU 的传感器类型

注意
索引号 index 范围为 [0, count-1] (count 通过 ob2_device_get_supported_imu_sensor_count 返回),传入范围外的数值 将通过 @status 返回 OB2_STATUS_LOGIC_ERROR
参数
[in]device_handle设备句柄
[in]index传感器索引号
[out]status返回函数调用状态
返回
ob2_imu_sensor_type_t 返回传感器类型

被这些函数引用 ob2::device::get_supported_imu_sensor_type_list().

◆ ob2_device_get_accel_stream_profile_count()

uint32_t ob2_device_get_accel_stream_profile_count ( ob2_device_t  device_handle,
ob2_status_t status 
)

获取加速度计流配置个数

加速度计流配置可用于配置加速度计的采样率和量程

参数
[in]device_handle设备句柄
[out]status返回函数调用状态
返回
uint32_t 返回加速度计流配置个数

被这些函数引用 ob2::device::get_accel_stream_profile_list().

◆ ob2_device_get_accel_stream_profile()

ob2_accel_stream_profile_t ob2_device_get_accel_stream_profile ( ob2_device_t  device_handle,
uint32_t  index,
ob2_status_t status 
)

通过索引号获取加速度计流配置

注意
索引号 index 范围为 [0, count-1] (count 通过 ob2_device_get_accel_stream_profile_count 返回),传入范围外的数值 将导致通过 @status 返回 OB2_STATUS_LOGIC_ERROR
参数
[in]device_handle设备句柄
[in]index流配置索引号
[out]status返回函数调用状态
返回
ob2_accel_stream_profile_t 返回加速度计流配置

被这些函数引用 ob2::device::get_accel_stream_profile_list().

◆ ob2_device_get_gyro_stream_profile_count()

uint32_t ob2_device_get_gyro_stream_profile_count ( ob2_device_t  device_handle,
ob2_status_t status 
)

获取陀螺仪流配置个数

陀螺仪流配置可用于配置陀螺仪的采样率和量程

参数
[in]device_handle设备句柄
[out]status返回函数调用状态
返回
uint32_t 返回陀螺仪流配置个数

被这些函数引用 ob2::device::get_gyro_stream_profile_list().

◆ ob2_device_get_gyro_stream_profile()

ob2_gyro_stream_profile_t ob2_device_get_gyro_stream_profile ( ob2_device_t  device_handle,
uint32_t  index,
ob2_status_t status 
)

通过索引号获取陀螺仪流配置

注意
索引号 @index 范围为 [0, count-1] (count 通过 ob2_device_get_gyro_stream_profile_count 返回),传入范围外的数值 将通过 @status 返回 OB2_STATUS_LOGIC_ERROR
参数
[in]device_handle设备句柄
[in]index流配置索引号
[out]status返回函数调用状态
返回
ob2_gyro_stream_profile_t 返回陀螺仪流配置

被这些函数引用 ob2::device::get_gyro_stream_profile_list().

◆ ob2_device_create_imu_config()

ob2_imu_config_t ob2_device_create_imu_config ( ob2_device_t  device_handle,
ob2_status_t status 
)

创建 IMU 配置

IMU 配置创建后会为所有支持的 sensor 配置一个默认的流配置,但是所有 sensor 都是默认未使能的

注意
不再使用 IMU 配置时,需要调用 ob2_imu_config_release 接口释放相机配置句柄,否则会导致内存泄漏。
参数
[in]device_handle设备句柄
[out]status返回函数调用状态
返回
ob2_imu_config_t 返回 IMU 配置句柄

被这些函数引用 ob2::device::create_imu_config().

◆ ob2_imu_config_release()

void ob2_imu_config_release ( ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

释放 IMU 配置

参数
[in]imu_config_handleIMU 配置句柄
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::~imu_config().

◆ ob2_imu_config_set_accel_stream_profile()

void ob2_imu_config_set_accel_stream_profile ( ob2_imu_config_t  imu_config_handle,
const ob2_accel_stream_profile_t stream_profile,
ob2_status_t status 
)

设置加速度计流配置

参数
[in]imu_config_handleIMU 配置句柄
[in]stream_profile加速度计流配置
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::set_accel_stream_profile().

◆ ob2_imu_config_enable_accel_stream()

void ob2_imu_config_enable_accel_stream ( ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

使能加速度计流

参数
[in]imu_config_handleIMU 配置句柄
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::enable_accel_stream().

◆ ob2_imu_config_disable_accel_stream()

void ob2_imu_config_disable_accel_stream ( ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

关闭(去使能)加速度计流

参数
[in]imu_config_handleIMU 配置句柄
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::disable_accel_stream().

◆ ob2_imu_config_set_gyro_stream_profile()

void ob2_imu_config_set_gyro_stream_profile ( ob2_imu_config_t  imu_config_handle,
const ob2_gyro_stream_profile_t stream_profile,
ob2_status_t status 
)

设置陀螺仪流配置

参数
[in]imu_config_handleIMU 配置句柄
[in]stream_profile陀螺仪流配置
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::set_gyro_stream_profile().

◆ ob2_imu_config_enable_gyro_stream()

void ob2_imu_config_enable_gyro_stream ( ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

使能陀螺仪流

参数
[in]imu_config_handleIMU 配置句柄
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::enable_gyro_stream().

◆ ob2_imu_config_disable_gyro_stream()

void ob2_imu_config_disable_gyro_stream ( ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

关闭(去使能)陀螺仪流

参数
[in]imu_config_handleIMU 配置句柄
[out]status返回函数调用状态

被这些函数引用 ob2::imu_config::disable_gyro_stream().

◆ ob2_device_start_imu()

void ob2_device_start_imu ( ob2_device_t  device_handle,
const ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

启动设备内 IMU 工作(开流)

会根据 @imu_config_handle 开启已使能的 Sensor 数据流,同时也会根据配置内容完成设备、SDK 内部其他相关工作模块的配置

开启数据流后,SDK 内部会将各 Sensor 输出的采用数据生成 imu_sample,并将 imu_sample 缓存在内部队列,用户需要通过 ob2_device_get_imu_sample 接口获取 imu_sample,进而通过 imu_sample 获取各 sensor 的采用数据

注意
启动设备内相机工作后, 需要及时地通过 ob2_device_get_imu_sample 接口循环获取 imu_sample,否则内部缓存队列溢出后会丢失数据。
参数
[in]device_handle设备句柄
[in]imu_config_handleIMU 配置句柄,调用完本接口后可立即停释放配置句柄。可传入 OB2_DEFAULT_IMU_CONFIG, 这样 SDK 将通过各 Sensor 的默认流配置启动所有 Sensor
[out]status返回函数调用状态

被这些函数引用 ob2::device::start_imu().

◆ ob2_device_start_imu_with_callback()

void ob2_device_start_imu_with_callback ( ob2_device_t  device_handle,
const ob2_imu_config_t  imu_config_handle,
ob2_imu_sample_cb_t  cb,
void *  user_data,
ob2_status_t status 
)

通过回调返回 imu_sample 的方式启动设备 IMU 工作

会根据 @imu_config_handle 开启已使能的 Sensor 数据流,同时也会根据配置内容完成设备、SDK 内部其他相关工作模块的配置

开启数据流后,SDK 内部会将各 Sensor 输出的采用数据生成 imu_sample,并通过回调函数 cb 返回 imu_sample

注意
回调函数 @cb 是用户自行编写的函数,需要保证该函数的执行时间小于 imu_sample 生成周期(由已使能的 Sensor 中采样率最大的采用数据输出周期决定), 否则会导致 SDK 内部缓存队列溢出而丢失数据,并且数据会有累加延时导致实时性变差。对于某些型号的设备,甚至可能会导致停流。
参数
[in]device_handle设备句柄
[in]imu_config_handleIMU 配置句柄,调用完本接口后可立即停释放配置句柄。可传入 OB2_DEFAULT_IMU_CONFIG, 这样 SDK 将通过各 Sensor 的默认流配置启动所有 Sensor
[in]cbimu_sample 回调函数
[in]user_data用户自定义数据,会通过 @cb 原样返回,用户可通过 @user_data 传递上下文数据
[out]status返回函数调用状态

被这些函数引用 ob2::device::start_imu_with_callback().

◆ ob2_device_update_imu_config()

void ob2_device_update_imu_config ( ob2_device_t  device_handle,
const ob2_imu_config_t  imu_config_handle,
ob2_status_t status 
)

更新设备 IMU 配置

可实现设备 IMU 过程中的配置更新,比如在不停止 IMU 工作的情况下打开或关闭某一 Sensor 的数据流

注意
需要先启动设备 IMU 工作,否则调用本接口将没有任何实际意义
参数
[in]device_handle设备句柄
[in]imu_config_handle用于更新的 IMU 配置, 可传入 OB2_DEFAULT_IMU_CONFIG, 这样 SDK 将通过各 Sensor 的默认流配置启动所有 Sensor
[out]status返回函数调用状态

被这些函数引用 ob2::device::update_imu_config().

◆ ob2_device_stop_imu()

void ob2_device_stop_imu ( ob2_device_t  device_handle,
ob2_status_t status 
)

停止设备内 IMU 工作

参数
[in]device_handle设备句柄
[out]status返回函数调用状态

被这些函数引用 ob2::device::stop_imu().

◆ ob2_device_get_imu_sample()

ob2_imu_sample_t ob2_device_get_imu_sample ( ob2_device_t  device_handle,
int32_t  timeout_msec,
ob2_status_t status 
)

获取 IMU 采样数据

imu_sample 是一个复合采样数据,包含每个已启用 Sensor 的一次采样数据

配合 ob2_device_start_imu 接口使用,在启动设备内 IMU 工作后,通过本接口获取接收到各 Sensor 样数据后生成的 imu_sample。

调用本接口后,如果 SDK 内部未有 imu_sample 缓存在队列中,会进行阻塞式等待,直到成功获取到 imu_sample 或者等待超过了 @timeout_msec 设定的时间。

注意
启动设备内 IMU 工作后,需要及时地通过本接口循环获取 imu_sample,否则内部缓存队列溢出后会丢失数据。
超过 @timeout_msec 设置时间后还未成功获取到 imu_sample,将会通过 @status 返回 OB2_STATUS_RUNTIME_ERROR ,同时返回的 imu_sample 也为 NULL
成功获取到 imu_sample 后,若不在使用该 imu_sample,需要调用 ob2_imu_sample_release 接口释放句柄,否则会导致内存泄漏。
参数
[in]device_handle设备句柄
[in]timeout_msec等待超时时间,可以设置为 OB2_WAIT_INFINITE 表示不限时等待。
[out]status返回函数调用状态
返回
ob2_imu_sample_t 返回 imu_sample 句柄

被这些函数引用 ob2::device::get_imu_sample().

◆ ob2_imu_sample_reference()

void ob2_imu_sample_reference ( ob2_imu_sample_t  imu_sample_handle,
ob2_status_t status 
)

增加 imu_sample 引用计数

通过 SDK 的任何接口获取或创建的 imu_sample 的引用计数都是 1,通过调用本接口可使引用计数加 1。然后每次调用 ob2_imu_sample_release 会使引用计数减 1, 当引用计数减为 0 时,才会真正释放 imu_sample 句柄所绑定的内存。

注意
调用本接口有较大风险,只有在清晰理解 imu_sample 引用计数机制及各接口获取到的 imu_sample 的引用计数值之后才可使用。 并且需求确保每调用一次本接口,就要在未来相应地调用一次 ob2_imu_sample_release 接口,否则会导致内存泄漏。
参数
[in]imu_sample_handleimu_sample 句柄
[out]status返回函数调用状态

◆ ob2_imu_sample_release()

void ob2_imu_sample_release ( ob2_imu_sample_t  imu_sample_handle,
ob2_status_t status 
)

释放 imu_sample

实际上每次调用本接口会将 imu_sample 的引用计数减 1,当引用计数减为 0 时,才会真正释放 imu_sample 句柄所绑定的内存。

参数
[in]imu_sample_handleimu_sample 句柄
[out]status返回函数调用状态

被这些函数引用 ob2::imu_sample::~imu_sample().

◆ ob2_imu_sample_get_accel_sample_count()

uint32_t ob2_imu_sample_get_accel_sample_count ( ob2_imu_sample_t  imu_sample_handle,
ob2_status_t status 
)

获取 imu_sample 中加速度计采样数据个数

开启加速度计后,返回的一个 imu_sample 会包含一个或多个加速度计采样数据 (不同型号设备和不同采样频率设置,个数可能会不同)

参数
[in]imu_sample_handleimu_sample 句柄
[out]status返回函数调用状态
返回
uint32_t 返回加速度计采样数据个数

被这些函数引用 ob2::imu_sample::get_accel_sample_count().

◆ ob2_imu_sample_get_accel_sample()

ob2_accel_sample_t ob2_imu_sample_get_accel_sample ( ob2_imu_sample_t  imu_sample_handle,
uint32_t  index,
ob2_status_t status 
)

获取加速度计采样数据

注意
索引号 index 的范围为 count 通过 ob2_imu_sample_get_accel_sample_count 接口获取 "0~count-1", 若传入范围之外的值,将通过 @status 返回 OB2_STATUS_LOGIC_ERROR
参数
[in]imu_sample_handleimu_sample 句柄
[in]index采样数据索引号,可传入 OB2_FIRST_SAMPLE 获取第一个(索引号为 0)数据
[out]status返回函数调用状态
返回
ob2_accel_sample_t 返回加速度计采样数据(非句柄,不需要主动释放)

被这些函数引用 ob2::imu_sample::get_accel_sample().

◆ ob2_imu_sample_get_gyro_sample_count()

uint32_t ob2_imu_sample_get_gyro_sample_count ( ob2_imu_sample_t  imu_sample_handle,
ob2_status_t status 
)

获取 imu_sample 陀螺仪采样数据个数

开启陀螺仪后,返回的一个 imu_sample 包含一个或多个陀螺仪采样数据 (不同型号设备和不同采样频率设置, 个数可能会不同)

参数
[in]imu_sample_handleimu_sample 句柄
[out]status返回函数调用状态
返回
uint32_t 返回陀螺仪采样数据个数

被这些函数引用 ob2::imu_sample::get_gyro_sample_count().

◆ ob2_imu_sample_get_gyro_sample()

ob2_gyro_sample_t ob2_imu_sample_get_gyro_sample ( ob2_imu_sample_t  imu_sample_handle,
uint32_t  index,
ob2_status_t status 
)

获取陀螺仪采样数据

注意
索引号 index 的范围为 count 通过 ob2_imu_sample_get_gyro_sample_count 接口获取 "0~count-1", 若传入范围之外的值,将通过 @status 返回 OB2_STATUS_LOGIC_ERROR
参数
[in]imu_sample_handleimu_sample 句柄
[in]index采样数据索引号,可传入 OB2_FIRST_SAMPLE 获取第一个(索引号为 0)数据
[out]status返回函数调用状态
返回
ob2_gyro_sample_t 返回陀螺仪采样数据(非句柄,不需要主动释放)

被这些函数引用 ob2::imu_sample::get_gyro_sample().