Skip to content

FAQ

Getting started

What is Pose Engine?

Pose Engine is perception-based localization software from Main Street Autonomy. It generates 6DoF pose estimates and odometry from sensor data. Pose Engine does not require GNSS.

Pose Engine runs offline (as a remote service or on-prem Docker container) and online (as a library running on the robot).

What sensors does Pose Engine require?

At minimum, one 3D lidar or one camera (stereo or with depth). Additional lidars, cameras, IMUs, wheel encoders, and GNSS/INS improve accuracy and coverage but are not required.

How do I try Pose Engine?

Share sensor data collected during normal robot operation; MSA will return a free pose trajectory. See Get a free offline pose trajectory.

Does Pose Engine require GNSS?

No. Pose Engine localizes using perception sensors (lidar or camera). GNSS data can be included to generate an additional ECEF pose output, but it is not required.


Data and formats

What data formats does Pose Engine accept?

See Capturing data for format details.

What motion is required to collect data?

No special motion is required. Collect sensor data during normal robot operation.

Do I need to calibrate my sensors before using Pose Engine?

Yes. Pose Engine requires accurate extrinsics, intrinsics, and time offsets for your sensor suite. If your platform has not been recently calibrated, collect suitable sensor data before or after your Pose Engine data collection. See Calibration Anywhere.


Outputs

What does the offline output look like?

The output format can be modified to meet customer requirements. Outputs are typically delivered in CSV, standard ROS messages or custom messages in a ROS 1 bag or ROS 2 bag, or some other custom format, one result per selected sensor coordinate frame.

See Pose results for more info.

What ROS messages does the online deployment output?

nav_msgs/Odometry and geometry_msgs/PoseWithCovarianceStamped, but custom message types are also supported on request.

See Pose results for more info.

What is the difference between the odometry and map pose outputs?

The odometry output (nav_msgs/Odometry) provides high-frequency velocity estimates that drift smoothly over time. The map pose output (geometry_msgs/PoseWithCovarianceStamped) provides bounded-error pose referenced to the map.

Can I get pose in a coordinate frame that isn’t a sensor frame?

For offline outputs, apply the rigid transform from your Calibration Anywhere extrinsics.yaml to convert from a sensor frame to any other body-attached frame. For online outputs, the output frame is configured during integration.


Deployment

Can Pose Engine run without sending data to MSA?

Yes. The on-prem Docker container processes sensor data locally with no data transfer. The Docker can be run on the robot, on a local server, or in the customer’s cloud. The online library runs entirely on the robot. See Deployment.

What hardware does online Pose Engine require?

CPU-only; no GPU required. 3–4 cores on a Jetson Orin or equivalent. Supports air-gapped environments.

Can Pose Engine run in an air-gapped environment?

Yes. Both the on-prem Docker and online library deployments operate without network connectivity.

Can multiple robot types share the same map?

Yes. See Mapping and localization.

What happens if the environment changes?

Pose Engine maps are designed to remain reliable in the presence of dynamic objects (people, vehicles) and gradual environmental changes (seasonal variation). For significant structural changes to the environment, the affected map regions can be re-mapped and updated without rebuilding the full site map.