Units and Coordinates in HoloOcean

HoloOcean uses meters for units and a right-handed coordinate system for all locations, distances, and offsets.

HoloOcean coordinates differ from coordinates within the Unreal Engine Editor. To see specific coordinates for HoloOcean levels, please refer to the Ocean Package page.

Coordinate System

Unreal Engine uses a left handed coordinate system by default. However, to keep with general robotics conventions, we use a right handed coordinate system, with positive z being up.

Locations and translations in HoloOcean worlds are specified as [x, y, z] where:

  • Positive x is forward

  • Positive y is left

  • Positive z is up

Remember that the units for [x, y, z] are in meters (Unreal Engine defaults to centimeters).

Rotations

Rotations are specified in [roll, pitch, yaw] / [x, y, z] format, in degrees.

  • Roll: Rotation around the fixed forward (x) axis

  • Pitch: Rotation around the fixed right (y) axis

  • Yaw: Rotation around the fixed up (z) axis

Agent, Socket, & Sensor Frames

Agents each have a coordinate frame located at their center (usually the center of mass, rarely the center of the mesh if different). This coordinate frame is always aligned with the agent’s forward, left, and up directions in a right handed coordinate system.

Agents are equiped with sockets to hold sensors. Each socket has its own coordinate frame that is usually in the same orientation as the agent frame. See the individual Agent pages in HoloOcean Agents for details on the location and orientation of sockets for each agent.

Sensors can be placed in sockets with an offset in position or orientation. With some rare exceptions, sensors return their data in the coordinate frame defined by this offset from the socket frame. Users are responsible for keeping track of the coordinate frame in which sensor data is reported. See the individual sensor pages in HoloOcean Sensors for details on the coordinate frame in which each sensor returns data.