Skip to main content

Head Pose

Overview

Head pose is the head’s position (x, y, z in meters) and orientation (quaternion w, x, y, z) in the world frame. One message is published per frame, time-aligned with body and hand pose.

Coordinate Frame

  • Reference frame: World.
  • Axes: X forward, Y left, Z up (right-handed).
  • Units: Position in meters.
  • Orientation: Quaternion in w, x, y, z order.
Body skeleton with local coordinate frames at pelvis, head, and hands in world frame

Local coordinate orientations of head, hands, and body root (pelvis) in the world frame. Red, green, blue arrows denote X, Y, Z axes at each frame.

Topic & Message Type

  • Topic: /pose/head_pose
  • Message type: pose.HeadPoseFrame
  • Encoding: protobuf

HeadPoseFrame uses pose_common for the transform: each message has a header and one Transform (position + quaternion). The head pose is transforms[0].

Message definition (head pose, one message per frame):

syntax = "proto3";

package pose;

import "common/header.proto";
import "pose/pose_common.proto";

message HeadPoseFrame {
.common.header.Header header = 1;
repeated pose.common.Transform transforms = 2;
}

Transform type (from pose/pose_common.proto):

syntax = "proto3";

package pose.common;

message Quaternion {
double w = 1;
double x = 2;
double y = 3;
double z = 4;
}

message Transform {
Quaternion quat = 1;
double x = 2;
double y = 3;
double z = 4;
}