Tango API 之五 Tango 事件

Tango API 之五 Tango 事件

主要事件

Tango设备传感器有独特的数据链,这些数据的接收和传输对于使设备执行核心Tango活动(运动跟踪,深度感应和区域学习)至关重要。 与任何Android设备一样,这些数据也会作为“事件”接收和传递。 主要的Tango事件有:

  • 设备的pose数据(位置、方向)
  • 相机的帧和特征数据
  • 点云数据(由深度相机传感器所产生)

为了接收事件,你可以给事件传递一个回调监听器,回调函数会在每次事件发生时被回调。

接收pose数据

有两种方式接收;推荐使用TangoService_getPoseAtTime()。更详细的解释查看Pose

接收相机新特征

这对于在OpenGL中为增强现实渲染相机图像很有用。

通过调用TangoService_OnTextureAvailable()。你需要调用TangoService_updateTextureExternalOes来更新特征。

接收相机的帧

不是用来显示,而是当你需要以字节数组连接像素数据是使用。

通过回调TangoService_connectOnFrameAvailable()

接收点云数据

通过传递OnPointCloudAvailable()回调函数给TangoService_connectOnPointCloudAvailable()

状态事件

TangoEvent通知回调重要的传感器状态事件,例如错误状态的描述。 要接收TangoEvent,请将onTangoEvent()回调附加到TangoService_connectOnTangoEvent()。 每次发生Tango状态事件时都会调用此回调。

TangoEvent被定义为:

typedef struct TangoEvent {
  double timestamp;
  TangoEventType type;
  const char* event_key;
  const char* event_value;
} TangoEvent;

其中timestamp指示状态事件何时发生,并且可以与Tango API中其他地方的时间戳相比较。

type被设计为TangoEventType枚举类型,用来告诉你那个传感器触发的事件:

typedef enum {
  TANGO_EVENT_UNKNOWN,
  TANGO_EVENT_GENERAL,
  TANGO_EVENT_FISHEYE_CAMERA,
  TANGO_EVENT_COLOR_CAMERA,
  TANGO_EVENT_IMU,
  TANGO_EVENT_FEATURE_TRACKING,
} TangoEventType;

event_key 和 event_value描述发生的特殊事件。下表是可能的键:

Event keyExplanation
TangoServiceException服务遭遇异常,其值在 event_value中.
FisheyeOverExposed鱼眼图像过度曝光,平均像素值为event_value px.
FisheyeUnderExposed鱼眼图像曝光不足,平均像素值为 event_value px.
ColorOverExposed点云相机过度曝光,平均像素值为event_value px.
ColorUnderExposed点云相机曝光不足,平均像素值为event_value px.
TooFewFeaturesTracked鱼眼相机中被跟踪的特征点过少,被跟踪点数为event_value.
Unknown位置描述.

根据具体的事件描述,您可以选择提示用户来纠正导致事件的情况。 例如,如果您正在接收ColorUnderExposed,则用户可能位于太暗的地方,Tango框架无法正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值