SparseSpatialMap Class

这个类型是C#语言的 EasyAR Sense API: SparseSpatialMap 。页面中部分描述可能与Unity环境无关。

这个类型已经部分封装进Unity组件: SparseSpatialMapWorkerFrameFilter 。在大部分情况下不需要直接使用这个类型的成员和实例。如果要使用一些没有被封装的接口,需要使用 SparseSpatialMapWorkerFrameFilter.Builder SparseSpatialMapWorkerFrameFilter.Localizer ,而非创建新的实例。

Description

提供SparseSpatialMap系统主要的功能,地图生成和存储、地图加载和定位,同时可以获取点云,平面等环境信息并进行hit Test。

SparseSpatialMap占用2个camera的buffer。应使用camera的setBufferCapacity设置不少于所有组件占用的camera的buffer数量。参考 概览


Methods

isAvailable

C#

public static bool isAvailable()

检查SparseSpatialMap是否可用。总是返回true。

inputFrameSink

C#

public virtual InputFrameSink inputFrameSink()

输入帧输入端口。SparseSpatialMap输入帧必须包含camera参数、时间戳信息和空间信息(cameraTransform和trackingStatus)。参考 InputFrameSink

注意:camera支持针孔和鱼眼相机模型,使用鱼眼相机性能会受影响。

bufferRequirement

C#

public virtual int bufferRequirement()

当前组件占用camera buffer的数量。

outputFrameSource

C#

public virtual OutputFrameSource outputFrameSource()

输出帧输出端口。参考 OutputFrameSource

create

C#

public static SparseSpatialMap create()

构造SparseSpatialMap。

setResultPoseType

C#

public virtual void setResultPoseType(bool enableStabilization)

设置结果姿态类型。默认enableStabilization为false。只有 InputFrame 中包含空间信息时才有效。

setResultAsyncMode

C#

public virtual bool setResultAsyncMode(bool enableAsync)

设置结果异步模式。如果结果通过outputFrameSource输出,则应设置位true,如果结果通过getSyncResult获取,则应设置为false。默认enableAsync为true。同步模式仅在输入帧包含空间信息且使用XR License时可生效。

start

C#

public virtual bool start()

开始SparseSpatialMap算法。

stop

C#

public virtual void stop()

停止SparseSpatialMap算法。调用start重新运行。

close

C#

public virtual void close()

关闭SparseSpatialMap。close之后不应继续使用。

getPointCloudBuffer

C#

public virtual Buffer getPointCloudBuffer()

获取当前点云数据位置信息。其中点云位置为世界坐标系中的位置,buffer每一个点由三个连续的值表示,分别代表X,Y,Z轴上的坐标值,每一个值占用4字节。

getMapPlanes

C#

public virtual List< PlaneData > getMapPlanes()

获取检测到的平面,类型为 PlaneType

hitTestAgainstPointCloud

C#

public virtual List< Vec3F > hitTestAgainstPointCloud( Vec2F cameraImagePoint)

在当前点云中进行Hit Test,得到距离相机从近到远一条射线上的n(n>=0)个位置坐标。

hitTestAgainstPlanes

C#

public virtual List< Vec3F > hitTestAgainstPlanes( Vec2F cameraImagePoint)

在当前检测到的平面上进行Hit Test,得到距离相机从近到远一条射线上的n(n>=0)个位置坐标。

输入图像坐标系([0, 1]^2)的x朝右、y朝下,原点在左上角。可以使用 CameraParameters.imageCoordinatesFromScreenCoordinates 来从屏幕坐标转换为图像坐标。

输出为点云在世界坐标系中的坐标。

getMapVersion

C#

public static string getMapVersion()

获取当前SparseSpatialMap的地图版本。

unloadMap

C#

public virtual void unloadMap(string mapID, CallbackScheduler callbackScheduler, Optional<Action<bool>> resultCallBack)

通过回调,卸载指定的SparseSpatialMap地图数据。可以通过回调的返回值判断卸载是否成功,成功返回true,否则返回false。

setConfig

C#

public virtual void setConfig( SparseSpatialMapConfig config)

设置SparseSpatialMap相关的配置。参考 SparseSpatialMapConfig

getConfig

C#

public virtual SparseSpatialMapConfig getConfig()

获取SparseSpatialMap相关的配置。参考 SparseSpatialMapConfig

startLocalization

C#

public virtual bool startLocalization()

开始在已加载地图中尝试定位。在此之前,需要设定所需的配置参数。参考 LocalizationMode

stopLocalization

C#

public virtual void stopLocalization()

停当前定位过程。

getSyncResult

C#

public virtual Optional< SparseSpatialMapResult > getSyncResult(double timestamp, Matrix44F cameraTransform, MotionTrackingStatus trackingStatus)

获得同步输出结果。如果SparseSpatialMap已暂停,或者未通过setResultAsyncMode将结果异步模式设为false,则返回值为空。