NavAbilitySDK

Documentation for NavAbilitySDK.

NavAbilitySDK.CategoricalType
mutable struct Categorical <: Distribution

Categorical distribution specified by a set of probabilities summing up to 1.

NavAbilitySDK.ClientType
struct Client

The context for a session, made from a user, robot, and session. Users can have multiple robots and robots can have multiple sessions. So this indicates a unique session.

DevNotes

NavAbilitySDK.FullNormalType
mutable struct FullNormal <: Distribution

Multidimensional normal distribution specified by means and a covariance matrix.

NavAbilitySDK.GraphVizAppType
struct GraphVizApp

Helper type for linking to App visualization of a factor graph for user:robot:session.

NavAbilitySDK.InferenceTypeType
abstract type InferenceType

Abstract parent type for all InferenceTypes, which are the functions inside of factors.

NavAbilitySDK.MapVizAppType
struct MapVizApp

Helper type for linking to App visualization of geometric map for user:robot:session.

NavAbilitySDK.NormalType
mutable struct Normal <: Distribution

One dimensional normal distribution.

NavAbilitySDK.Pose2Point2BearingRangeType
struct Pose2Point2BearingRange <: NavAbilitySDK.InferenceType

Pose2Point2BearingRangeInferenceType is used to represent a bearing

  • range measurement.
NavAbilitySDK.ScopeType
struct Scope

Some calls interact across multiple users, robots, and sessions. A scope allows you to specify these more complex contexts.

NavAbilitySDK.SolveOptionsType
struct SolveOptions

Solver options including the solve key and whether the parametric solver should be used.

NavAbilitySDK.UniformType
mutable struct Uniform <: Distribution

One dimensional uniform distribution.

NavAbilitySDK.ZInferenceTypeType
struct ZInferenceType <: NavAbilitySDK.InferenceType

ZInferenceType is used by many factors as a common inference type that uses a single distribution to express a constraint between variables. Used by: Prior, LinearRelative, PriorPose2, PriorPoint2, Pose2Pose2, Point2Point2Range, etc.

NavAbilitySDK.LinearRelativeDataMethod
LinearRelativeData(; Z, kwargs...)

Create a ContinousScalar->ContinousScalar (also known as Pose1->Pose1) factor with a distribution Z representing the 1D relationship between the variables, e.g. Normal(1.0, 0.1).

Default value of Z = Normal(1.0, 0.1).

NavAbilitySDK.MixtureDataMethod
MixtureData(mechanics, components, probabilities, dims)

Create a Mixture factor type with an underlying factor type, a named set of distributions that should be mixed, the probabilities of each distribution (the mix), and the dimensions of the underlying factor (e.g. ContinuousScalar=1, Pose2Pose2=3, etc.).

Args: mechanics (Type{FactorData}): The underlying factor data type, e.g. Pose2Pose2Data. NOTE: This will change in later versions but for now it can be any of the FactorData classes (e,g, LinearRelative, not the object LinearRelative()). components (NamedTuple): The named tuple set of distributions that should be mixed, e.g. NamedTuple(hypo1=Normal(0, 2)), hypo2=Uniform(30, 55)). probabilities (List[float]): The probabilities of each distribution (the mix), e.g. [0.4, 0.6]. dims (int): The dimensions of the underlying factor, e.g. for Pose2Pose2 it's 3.

NavAbilitySDK.NavAbilityHttpsClientFunction
NavAbilityHttpsClient()
NavAbilityHttpsClient(apiUrl; auth_token, authorize)

Main interactions with API for queries and mutations go through here.

DevNotes

  • TODO TBD, rather use upstream retry logic instead,
    • see https://github.com/JuliaWeb/HTTP.jl/pull/974/files
NavAbilitySDK.Point2Point2RangeDataMethod
Point2Point2RangeData(; range, kwargs...)

Create a Point2->Point2 range factor with a 1D distribution:

  • range: The range from the pose to the point, default Normal(1, 1).
NavAbilitySDK.Pose2AprilTag4CornersDataMethod
Pose2AprilTag4CornersData(
    id,
    corners,
    homography;
    K,
    taglength,
    kwargs...
)

Create a AprilTags factor that directly relates a Pose2 to the information from an AprilTag reading. Corners need to be provided, homography and tag length are defaulted and can be overwritten.

NavAbilitySDK.Pose2Point2BearingRangeDataMethod
Pose2Point2BearingRangeData(; bearing, range, kwargs...)

Create a Pose2->Point2 bearing+range factor with 1D distributions:

  • bearing: The bearing from the pose to the point, default Normal(0, 1).
  • range: The range from the pose to the point, default Normal(1, 1).
NavAbilitySDK.Pose2Pose2DataMethod
Pose2Pose2Data(; Z, kwargs...)

Create a Pose2->Pose2 factor with a distribution Z representing the (x,y,theta) relationship between the variables, e.g. FullNormal([1,0,0.3333*π], diagm([0.01,0.01,0.01])).

Default value of Z = FullNormal([1,0,0.3333*π], diagm([0.01,0.01,0.01])).

NavAbilitySDK.Pose3Pose3DataMethod
Pose3Pose3Data(; Z, kwargs...)

Create a Pose3->Pose3 factor with a distribution Z representing the (x,y,theta) relationship between the variables, e.g. FullNormal([1;zeros(5)], diagm(0.01*ones(6))).

Default value of Z = FullNormal(zeros(6), diagm(0.01*ones(6))).

NavAbilitySDK.Pose3Pose3RotationDataMethod
Pose3Pose3RotationData(; Z, kwargs...)

Create a partial factor on Rotation only on Pose3->Pose3 with a distribution Z representing the relationship between the variables.

Default value of Z = FullNormal(zeros(3), diagm(0.01*ones(3))).

NavAbilitySDK.PriorDataMethod
PriorData(; Z, kwargs...)

Create a prior factor for a ContinuousScalar (a.k.a. Pose1) with a distribution Z representing 1D prior information, e.g. Normal(0.0, 0.1).

Default value of Z = Normal(0.0, 0.1).

NavAbilitySDK.PriorPoint2DataMethod
PriorPoint2Data(; Z, kwargs...)

Create a prior factor for a Point2 with a distribution Z representing (x,y) prior information, e.g. FullNormal([0.0, 0.0.0], diagm([0.01, 0.01])).

Default value of Z = FullNormal([0.0, 0.0], diagm([0.01, 0.01])).

NavAbilitySDK.PriorPose2DataMethod
PriorPose2Data(; Z, kwargs...)

Create a prior factor for a Pose2 with a distribution Z representing (x,y,theta) prior information, e.g. FullNormal([0.0, 0.0, 0.0], diagm([0.01, 0.01, 0.01])).

Default value of Z = FullNormal([0.0, 0.0, 0.0], diagm([0.01, 0.01, 0.01])).

NavAbilitySDK.PriorPose3DataMethod
PriorPose3Data(; Z, kwargs...)

Create a prior factor for a Pose3 with a distribution Z representing (x,y,z,i,j,k) prior information, e.g. FullNormal(zeros(6), diagm(0.01*ones(6))).

Default value of Z = FullNormal(zeros(6), diagm(0.01*ones(6))).

NavAbilitySDK.ScatterAlignPose2DataFunction
ScatterAlignPose2Data(varType, cloud1, cloud2)
ScatterAlignPose2Data(varType, cloud1, cloud2, bw1)
ScatterAlignPose2Data(
    varType,
    cloud1,
    cloud2,
    bw1,
    bw2;
    mkd1,
    mkd2,
    kw_sap,
    kwargs...
)

Returns <:FactorData

NavAbilitySDK.addVariableMethod

addVariable Add a variable to the NavAbility Platform service Example

addVariable(client, context, "x0", NVA.Pose2)
NavAbilitySDK.createDownloadEventMethod
createDownloadEvent(navAbilityClient, userId, fileId)

Request URLs for data blob download.

Args: navAbilityClient (NavAbilityClient): The NavAbility client. userId (String): The userId with access to the data. fileId (String): The unique file identifier of the data blob.

NavAbilitySDK.createUploadEventFunction
createUploadEvent(navAbilityClient, filename, filesize)
createUploadEvent(
    navAbilityClient,
    filename,
    filesize,
    parts
)

Request URLs for data blob upload.

Args: navAbilityClient (NavAbilityClient): The NavAbility client. filename (String): file/blob name. filesize (Int): total number of bytes to upload. parts (Int): Split upload into multiple blob parts, FIXME currently only supports parts=1.

NavAbilitySDK.getStatusLatestEventMethod
getStatusLatestEvent(navAbilityClient, id)

Get the latest status message for a request.

Args: navAbilityClient (NavAbilityClient): The NavAbility client. id (String): The ID of the request that you want the latest status on.

NavAbilitySDK.getStatusMessagesEventMethod
getStatusMessagesEvent(navAbilityClient, id)

Get all the statuses for a request.

Args: navAbilityClient (NavAbilityClient): The NavAbility client. id (String): The ID of the request that you want the statuses on.

NavAbilitySDK.getStatusesLatestMethod
getStatusesLatest(navAbilityClient, ids)

Helper function to get a dictionary of all latest statues for a list of results.

Args: navAbilityClient (NavAbilityClient): The NavAbility client. ids (Vector{String}): A list of the IDS that you want statuses on.

NavAbilitySDK.incrDataLabelSuffixMethod
incrDataLabelSuffix

If the blob label thisisme already exists, then this function will return the name thisisme_1. If the blob label thisisme_1 already exists, then this function will return the name thisisme_2.

DO NOT EXPORT, Duplicate functionality from DistributedFactorGraphs.jl.

NavAbilitySDK.natural_ltMethod
natural_lt(x, y)

Natural less than for sorting,

julia sort(["x10"; "x1", "x11"]; lt=NavAbilitySDK.natural_lt)`

Notes

  • duplicated from DFG, hence don't export
NavAbilitySDK.waitForCompletionMethod
waitForCompletion(
    navAbilityClient,
    requestIds;
    maxSeconds,
    expectedStatuses,
    exceptionMessage
)

Wait for the requests to complete, poll until done.

Args: requestIds (List[str]): The request IDs that should be polled. maxSeconds (int, optional): Maximum wait time. Defaults to 60. expectedStatus (str, optional): Expected status message per request. Defaults to "Complete".