SparseSpatialMap Class

Description

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

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

isAvailable

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

C

bool easyar_SparseSpatialMap_isAvailable(void)

C++

static bool isAvailable()

Java

public static boolean isAvailable()

Kotlin

companion object fun isAvailable(): Boolean

Objective-C

+ (bool)isAvailable

Swift

public static func isAvailable() -> Bool

C#

public static bool isAvailable()

inputFrameSink

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

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

C

void easyar_SparseSpatialMap_inputFrameSink(easyar_SparseSpatialMap * This, easyar_InputFrameSink * * Return)

C++

std::shared_ptr<InputFrameSink> inputFrameSink()

Java

public @Nonnull InputFrameSink inputFrameSink()

Kotlin

fun inputFrameSink(): InputFrameSink

Objective-C

- (easyar_InputFrameSink *)inputFrameSink

Swift

public func inputFrameSink() -> InputFrameSink

C#

public virtual InputFrameSink inputFrameSink()

bufferRequirement

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

C

int easyar_SparseSpatialMap_bufferRequirement(easyar_SparseSpatialMap * This)

C++

int bufferRequirement()

Java

public int bufferRequirement()

Kotlin

fun bufferRequirement(): Int

Objective-C

- (int)bufferRequirement

Swift

public func bufferRequirement() -> Int32

C#

public virtual int bufferRequirement()

outputFrameSource

输出帧输出端口。参考 OutputFrameSource

C

void easyar_SparseSpatialMap_outputFrameSource(easyar_SparseSpatialMap * This, easyar_OutputFrameSource * * Return)

C++

std::shared_ptr<OutputFrameSource> outputFrameSource()

Java

public @Nonnull OutputFrameSource outputFrameSource()

Kotlin

fun outputFrameSource(): OutputFrameSource

Objective-C

- (easyar_OutputFrameSource *)outputFrameSource

Swift

public func outputFrameSource() -> OutputFrameSource

C#

public virtual OutputFrameSource outputFrameSource()

create

构造SparseSpatialMap。

C

void easyar_SparseSpatialMap_create(easyar_SparseSpatialMap * * Return)

C++

static std::shared_ptr<SparseSpatialMap> create()

Java

public static @Nonnull SparseSpatialMap create()

Kotlin

companion object fun create(): SparseSpatialMap

Objective-C

+ (easyar_SparseSpatialMap *)create

Swift

public static func create() -> SparseSpatialMap

C#

public static SparseSpatialMap create()

setResultPoseType

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

C

void easyar_SparseSpatialMap_setResultPoseType(easyar_SparseSpatialMap * This, bool enableStabilization)

C++

void setResultPoseType(bool enableStabilization)

Java

public void setResultPoseType(boolean enableStabilization)

Kotlin

fun setResultPoseType(enableStabilization: Boolean): Unit

Objective-C

- (void)setResultPoseType:(bool)enableStabilization

Swift

public func setResultPoseType(_ enableStabilization: Bool) -> Void

C#

public virtual void setResultPoseType(bool enableStabilization)

setResultAsyncMode

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

C

bool easyar_SparseSpatialMap_setResultAsyncMode(easyar_SparseSpatialMap * This, bool enableAsync)

C++

bool setResultAsyncMode(bool enableAsync)

Java

public boolean setResultAsyncMode(boolean enableAsync)

Kotlin

fun setResultAsyncMode(enableAsync: Boolean): Boolean

Objective-C

- (bool)setResultAsyncMode:(bool)enableAsync

Swift

public func setResultAsyncMode(_ enableAsync: Bool) -> Bool

C#

public virtual bool setResultAsyncMode(bool enableAsync)

start

开始SparseSpatialMap算法。

C

bool easyar_SparseSpatialMap_start(easyar_SparseSpatialMap * This)

C++

bool start()

Java

public boolean start()

Kotlin

fun start(): Boolean

Objective-C

- (bool)start

Swift

public func start() -> Bool

C#

public virtual bool start()

stop

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

C

void easyar_SparseSpatialMap_stop(easyar_SparseSpatialMap * This)

C++

void stop()

Java

public void stop()

Kotlin

fun stop(): Unit

Objective-C

- (void)stop

Swift

public func stop() -> Void

C#

public virtual void stop()

close

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

C

void easyar_SparseSpatialMap_close(easyar_SparseSpatialMap * This)

C++

void close()

Java

public void close()

Kotlin

fun close(): Unit

Objective-C

- (void)close

Swift

public func close() -> Void

C#

public virtual void close()

getPointCloudBuffer

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

C

void easyar_SparseSpatialMap_getPointCloudBuffer(easyar_SparseSpatialMap * This, easyar_Buffer * * Return)

C++

std::shared_ptr<Buffer> getPointCloudBuffer()

Java

public @Nonnull Buffer getPointCloudBuffer()

Kotlin

fun getPointCloudBuffer(): Buffer

Objective-C

- (easyar_Buffer *)getPointCloudBuffer

Swift

public func getPointCloudBuffer() -> Buffer

C#

public virtual Buffer getPointCloudBuffer()

getMapPlanes

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

C

void easyar_SparseSpatialMap_getMapPlanes(easyar_SparseSpatialMap * This, easyar_ListOfPlaneData * * Return)

C++

std::vector<std::shared_ptr<PlaneData>> getMapPlanes()

Java

public java.util.@Nonnull ArrayList<@Nonnull PlaneData> getMapPlanes()

Kotlin

fun getMapPlanes(): ArrayList<PlaneData>

Objective-C

- (NSArray<easyar_PlaneData *> *)getMapPlanes

Swift

public func getMapPlanes() -> [PlaneData]

C#

public virtual List<PlaneData> getMapPlanes()

hitTestAgainstPointCloud

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

C

void easyar_SparseSpatialMap_hitTestAgainstPointCloud(easyar_SparseSpatialMap * This, easyar_Vec2F cameraImagePoint, easyar_ListOfVec3F * * Return)

C++

std::vector<Vec3F> hitTestAgainstPointCloud(Vec2F cameraImagePoint)

Java

public java.util.@Nonnull ArrayList<@Nonnull Vec3F> hitTestAgainstPointCloud(@Nonnull Vec2F cameraImagePoint)

Kotlin

fun hitTestAgainstPointCloud(cameraImagePoint: Vec2F): ArrayList<Vec3F>

Objective-C

- (NSArray<easyar_Vec3F *> *)hitTestAgainstPointCloud:(easyar_Vec2F *)cameraImagePoint

Swift

public func hitTestAgainstPointCloud(_ cameraImagePoint: Vec2F) -> [Vec3F]

C#

public virtual List<Vec3F> hitTestAgainstPointCloud(Vec2F cameraImagePoint)

hitTestAgainstPlanes

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

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

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

C

void easyar_SparseSpatialMap_hitTestAgainstPlanes(easyar_SparseSpatialMap * This, easyar_Vec2F cameraImagePoint, easyar_ListOfVec3F * * Return)

C++

std::vector<Vec3F> hitTestAgainstPlanes(Vec2F cameraImagePoint)

Java

public java.util.@Nonnull ArrayList<@Nonnull Vec3F> hitTestAgainstPlanes(@Nonnull Vec2F cameraImagePoint)

Kotlin

fun hitTestAgainstPlanes(cameraImagePoint: Vec2F): ArrayList<Vec3F>

Objective-C

- (NSArray<easyar_Vec3F *> *)hitTestAgainstPlanes:(easyar_Vec2F *)cameraImagePoint

Swift

public func hitTestAgainstPlanes(_ cameraImagePoint: Vec2F) -> [Vec3F]

C#

public virtual List<Vec3F> hitTestAgainstPlanes(Vec2F cameraImagePoint)

getMapVersion

获取当前SparseSpatialMap的地图版本。

C

void easyar_SparseSpatialMap_getMapVersion(easyar_String * * Return)

C++

static std::string getMapVersion()

Java

public static java.lang.@Nonnull String getMapVersion()

Kotlin

companion object fun getMapVersion(): String

Objective-C

+ (NSString *)getMapVersion

Swift

public static func getMapVersion() -> String

C#

public static string getMapVersion()

unloadMap

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

C

void easyar_SparseSpatialMap_unloadMap(easyar_SparseSpatialMap * This, easyar_String * mapID, easyar_CallbackScheduler * callbackScheduler, easyar_OptionalOfFunctorOfVoidFromBool resultCallBack)

C++

void unloadMap(std::string mapID, std::shared_ptr<CallbackScheduler> callbackScheduler, std::optional<std::function<void(bool)>> resultCallBack)

Java

public void unloadMap(java.lang.@Nonnull String mapID, @Nonnull CallbackScheduler callbackScheduler, @Nullable FunctorOfVoidFromBool resultCallBack)

Kotlin

fun unloadMap(mapID: String, callbackScheduler: CallbackScheduler, resultCallBack: FunctorOfVoidFromBool?): Unit

Objective-C

- (void)unloadMap:(NSString *)mapID callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler resultCallBack:(void (^)(bool))resultCallBack

Swift

public func unloadMap(_ mapID: String, _ callbackScheduler: CallbackScheduler, _ resultCallBack: ((Bool) -> Void)?) -> Void

C#

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

setConfig

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

C

void easyar_SparseSpatialMap_setConfig(easyar_SparseSpatialMap * This, easyar_SparseSpatialMapConfig * config)

C++

void setConfig(std::shared_ptr<SparseSpatialMapConfig> config)

Java

public void setConfig(@Nonnull SparseSpatialMapConfig config)

Kotlin

fun setConfig(config: SparseSpatialMapConfig): Unit

Objective-C

- (void)setConfig:(easyar_SparseSpatialMapConfig *)config

Swift

public func setConfig(_ config: SparseSpatialMapConfig) -> Void

C#

public virtual void setConfig(SparseSpatialMapConfig config)

getConfig

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

C

void easyar_SparseSpatialMap_getConfig(easyar_SparseSpatialMap * This, easyar_SparseSpatialMapConfig * * Return)

C++

std::shared_ptr<SparseSpatialMapConfig> getConfig()

Java

public @Nonnull SparseSpatialMapConfig getConfig()

Kotlin

fun getConfig(): SparseSpatialMapConfig

Objective-C

- (easyar_SparseSpatialMapConfig *)getConfig

Swift

public func getConfig() -> SparseSpatialMapConfig

C#

public virtual SparseSpatialMapConfig getConfig()

startLocalization

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

C

bool easyar_SparseSpatialMap_startLocalization(easyar_SparseSpatialMap * This)

C++

bool startLocalization()

Java

public boolean startLocalization()

Kotlin

fun startLocalization(): Boolean

Objective-C

- (bool)startLocalization

Swift

public func startLocalization() -> Bool

C#

public virtual bool startLocalization()

stopLocalization

停当前定位过程。

C

void easyar_SparseSpatialMap_stopLocalization(easyar_SparseSpatialMap * This)

C++

void stopLocalization()

Java

public void stopLocalization()

Kotlin

fun stopLocalization(): Unit

Objective-C

- (void)stopLocalization

Swift

public func stopLocalization() -> Void

C#

public virtual void stopLocalization()

getSyncResult

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

C

void easyar_SparseSpatialMap_getSyncResult(easyar_SparseSpatialMap * This, double timestamp, easyar_Matrix44F cameraTransform, easyar_MotionTrackingStatus trackingStatus, easyar_OptionalOfSparseSpatialMapResult * Return)

C++

std::optional<std::shared_ptr<SparseSpatialMapResult>> getSyncResult(double timestamp, Matrix44F cameraTransform, MotionTrackingStatus trackingStatus)

Java

public @Nullable SparseSpatialMapResult getSyncResult(double timestamp, @Nonnull Matrix44F cameraTransform, int trackingStatus)

Kotlin

fun getSyncResult(timestamp: Double, cameraTransform: Matrix44F, trackingStatus: Int): SparseSpatialMapResult?

Objective-C

- (easyar_SparseSpatialMapResult *)getSyncResult:(double)timestamp cameraTransform:(easyar_Matrix44F *)cameraTransform trackingStatus:(easyar_MotionTrackingStatus)trackingStatus

Swift

public func getSyncResult(_ timestamp: Double, _ cameraTransform: Matrix44F, _ trackingStatus: MotionTrackingStatus) -> SparseSpatialMapResult?

C#

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