GeoPose Support
At MultiSet, our goal is to provide the most accurate and flexible localization possible. To enhance the portability and interoperability of our localization data, the MultiSet API response now includes a GeoPose object.
This document explains what GeoPose is, how it's structured in our API response, and how you can use it to build powerful, large-scale, and interconnected applications.
What is GeoPose?
GeoPose is an open standard for expressing the position and orientation (a full 6-DoF pose) of an object in a real-world, geographic coordinate system (WGS-84).
Think of it as a universal language for location. Instead of describing a position relative to a local, arbitrary map origin (e.g., "5 meters from the corner of a building"), GeoPose describes the exact same position and orientation in a globally consistent frame of reference that any GIS, mapping, or geospatial tool can understand.
This solves a major challenge in AR and robotics: data interoperability.
The MultiSet Localization Response
When you perform a localization query, our API returns a JSON object containing two distinct but related coordinate systems: the traditional Local Map Coordinates and the new Global GeoPose Coordinates.
Sample API Response:
{
"poseFound": true,
"position": {
"x": -0.1236,
"y": 1.5630,
"z": 6.9945
},
"rotation": {
"x": 0.0054,
"y": -0.5753,
"z": -0.0092,
"w": 0.8178
},
"mapIds": [
"68c8fe2ff8f229955c39eb02"
],
"GeoPose": {
"frame_spec": {
"model": "WGS-84",
"frame": "Y-Up-ENU"
},
"pose": {
"position": {
"lat": 12.952603,
"lon": 77.616157,
"h": 912.9230
},
"quaternion": {
"x": 0.0104,
"y": -0.9851,
"z": -0.0026,
"w": 0.1715
}
}
}
}
Understanding the Two Coordinate Systems
1. Local Map Coordinates (position, rotation)
The top-level position and rotation fields provide the device's pose relative to the internal origin of the specific MultiSet map (mapIds).
position: {x, y, z} in meters from the map's origin.
rotation: {x, y, z, w} quaternion describing the device's orientation in the map's local frame.
When to use it: This is the most direct and performant data to use for rendering content within the context of that specific MultiSet map. If your application's logic and assets all exist relative to the map you just localized against, this is the pose to use.
2. Global Coordinates (GeoPose)
The nested GeoPose object provides the same pose but in a globally consistent reference frame.
frame_spec: Defines the coordinate system. MultiSet uses the standard Y-Up-ENU frame.
model: WGS-84, the standard GPS ellipsoid model.
frame: Y-Up-ENU, a right-handed coordinate system where +Y is Up, +Z is True North, and +X is East.
pose.position:
lat: Latitude in decimal degrees.
lon: Longitude in decimal degrees.
h: Ellipsoidal height in meters.
pose.quaternion: The device's orientation relative to the ENU frame at its specific location.
When to use it: You should use the GeoPose object whenever you need to interact with external systems or data that is not tied to the specific MultiSet map.
Why This Matters: Use Cases for GeoPose
Providing both poses gives you maximum flexibility. The GeoPose object unlocks powerful new capabilities for interoperability:
Building Digital Twins: Fuse MultiSet's real-time localization with building information models (BIM), GIS data, or sensor feeds. Since GeoPose is a global standard, you can align data from multiple sources with high precision.
Large-Scale, Multi-Map Experiences: Create seamless AR experiences that span multiple, non-overlapping MultiSet maps. You can use the GeoPose to calculate the transformations between different maps and manage user location in a global context.
Data Portability and Logging: Log user or device trajectories in a format that is independent of any single map. This data can be analyzed later in standard geospatial tools or used to visualize paths on a 2D map like Mapbox or Google Maps.
Inter-System Communication: Pass the location of a device localized by MultiSet to another system that uses GPS or a different localization technology. For example, guide an autonomous robot localized with MultiSet to a specific GPS coordinate.
Practical Example
Imagine your application needs to show a 3D model of a proposed building (from a CAD file with georeferenced coordinates) within your AR scene.
Your app receives the localization response from the MultiSet API.
You use the GeoPose object to understand the device's absolute position and orientation on Earth.
Your app knows the absolute GeoPose of the proposed building.
You can now calculate the building's position and orientation relative to your device and render it correctly in your scene, even if your local scene's origin is completely different from the MultiSet map's origin.
The GeoPose acts as the "ground truth" that connects your MultiSet-powered world to any other georeferenced data source.
Last updated
Was this helpful?