获取SLAM 相关信息

第三方点云的接入可参考本章节内容,我们已将SLAM数据按照行业标准输出成特定的数据格式。

获取SLAM 状态

UXR2.0 SDK 提供了SLAM 状态获取接口。通过接口NativeInterface.NativeAPI.GetHeadTrackingStatus(),返回值为HeadTrackingStatus 类型。

HeadTrackingStatus status = NativeInterface.NativeAPI.GetHeadTrackingStatus();
NativeInterface.NativeAPI.GetHeadTrackingStatus(out SlamTrackingStatus trackingStatus, 
                                                out SlamImageQaulity imageQuality, 
                                                out SlamKinecticQaulity kineticQuality);
public enum HeadTrackingStatus
{
    Unknow = 0,
    UnInit = 1,
    Detecting = 2,//RESERVED
    Tracking = 3,
    Track_Limited = 4,//RESERVED
    Tracking_Bad = 5,//RESERVED
    Tracking_Paused = 6,
    Tracking_Stopped = 7,
    Tracking_Error = 99
}

public enum SlamTrackingStatus
{
    Success = 0,
    Bad = 1,
    Fail = 2,
    Unknow = 404
}

public enum SlamImageQaulity
{
    Good = 0,
    Weak = 1,
    Dark = 2,
    Bright = 3,
    Unknow = 404
}

public enum SlamKinecticQaulity
{
    Good = 0,
    FootFast = 1,
    Unknow = 404
}

获取相机内参


/// <summary>
/// Get fx,fy
/// </summary>
/// <param name="data"></param>
public static void GetFocalLength(float[] data)
{
    if (Utils.IsAndroidPlatfrom())
        getFocalLength(data);
}

/// <summary>
/// Get cx,cy
/// </summary>
/// <param name="data"></param>
public static void GetPrincipalPoint(float[] data)
{
    if (Utils.IsAndroidPlatfrom())
        getPrincipalPoint(data);
}

/// <summary>
/// Get width,height
/// </summary>
/// <param name="data"></param>
public static void GetImageDimensions(int[] data)
{
    if (Utils.IsAndroidPlatfrom())
        getImageDimensions(data);
}

/// <summary>
/// pinhole:k1,k2,k3,p1,p2
/// fisheye:alpha,k1,k2,k3,k4;
/// </summary>
/// <param name="data"></param>
public static void GetDistortion(float[] data)
{
    if (Utils.IsAndroidPlatfrom())
        getDistortion(data);
}

获取渲染时刻Pose

UXR2.0 SDK 提供了SLAM 渲染上屏时刻的位姿。通过接口NativeInterface.NativeAPI.GetHeadPose(out long ts)获取。

var pose = NativeInterface.NativeAPI.GetHeadPose(out long ts);

其中ts 是返回的时间戳。

获取Camera Image 时刻Pose

Native
//Set Camera Preview Date Type first, 1-ARGB,2-NV21
NativeInterface.NativeAPI.SetCameraPreviewDataType(2);
//Start SharedCamera Preview
NativeInterface.NativeAPI.StartCameraPreview();
//Add camera data listener
NativeInterface.OnCameraDataUpdate += OnCameraDataUpdate;

public void OnCameraDataUpdate(int width, int height, byte[] yuvImage, long ts)
{
	///Get the Slam pose of Physical Camera on Max Pro.
	var pose = NativeInterface.NativeAPI.GetHistoryCameraPhysicsPose(ts)
}

获取Camera View

UXR2.0 SDK提供了相机数据的接口。

 /// <summary>
/// Listener of Camera data
/// </summary>
/// <param name="width">preview size width</param>
/// <param name="height">preview size height</param>
/// <param name="yuvImage">camera image</param>
/// <param name="ts">timestamp</param>
public void OnCameraDataUpdate(int width, int height, byte[] yuvImage, long ts)
{
	
}

在必要的地方添加监听。

//Set Camera Preview Date Type first, 1-ARGB,2-NV21
NativeInterface.NativeAPI.SetCameraPreviewDataType(2);
//Start SharedCamera Preview
NativeInterface.NativeAPI.StartCameraPreview();
//Add camera data listener
NativeInterface.OnCameraDataUpdate += OnCameraDataUpdate;

在不使用,或者当前生命周期结束时,要及时反注册。

//remove camera data listener
NativeInterface.OnCameraDataUpdate -= OnCameraDataUpdate;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

soso1968

你的鼓励是我继续创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值