- X → North / forward
- Y → East / right
- Z → Down (negative values move upward)
client is an instantiated AirGen client (for example, client = airgen.VehicleClient() or airgen.MultirotorClient()).
Vector3r
Vector3r tracks a three-element float vector and is returned by many APIs, including simGetRobotPose, simGetGroundTruthKinematics, and most sensor interfaces.
- Access components via
.x_val,.y_val,.z_val. - Helpful constants:
Vector3r.ZERO,Vector3r.ONE,Vector3r.FORWARD,Vector3r.UP, etc. - Supports arithmetic (
+,-,*,/), vector math (dot,cross,distance_to), and normalization.
Quaternionr
Quaternionr stores orientation in wxyz order (scalar part first). Compared to Euler angles, quaternions avoid gimbal lock and interpolate smoothly.
- Construct from Euler angles via
Quaternionr.from_euler_angles_degrees(roll, pitch, yaw)or from axis/angle usingQuaternionr.from_axis_angle(axis, angle). - Convert back to Euler angles with
.to_euler_angles()(radians) or.to_euler_angles_degrees(). - Implements quaternion algebra (
*, scalar multiplication,inverse(),slerp(),rotate()).
Pose
Pose bundles a Vector3r position with a Quaternionr orientation. Poses are used throughout the API (simSetRobotPose, simSetObjectPose, trajectory planners, sensor extrinsics, etc.).
Pose.toLocal(client, robot_name="") and Pose.toWorld(client, robot_name="") to transform between a robot’s local NED frame (defined at spawn) and the global simulation frame.
GeoPoint
GeoPoint captures latitude, longitude, and altitude in the WGS84 reference ellipsoid. It is the input to GPS-style APIs such as moveToGPSAsync, moveOnGPSPath, and simSetGeoReference.
GeoPose
GeoPose pairs a GeoPoint with a Quaternionr orientation, enabling geodetic placement of robots and movable actors.
Geo ↔︎ World Conversions
When mixing GPS waypoints with local motion planning, convert betweenGeoPoint and Vector3r using helpers in airgen.utils.geodetic.
Pose when you need to synthesize world-space placements that align with real-world latitude/longitude targets.
Continue with the Movement page to see how these types are used when commanding drones, cars, and legged robots.