Skip to content
⚙ Development Guide > SDK > API > Data Structures

CartesianPose (End-Effector Pose)#

CartesianPose represents the Cartesian position and orientation of the end effector relative to base_link. It is used both as feedback from get_end_pose() and as a Cartesian motion target or waypoint.

Fields#

from arm_p7_sdk import CartesianPose

pose = CartesianPose(
    position=(0.40, 0.00, 0.30),
    orientation=(0.0, 0.0, 0.0, 1.0),
)
Field Type Length Unit Coordinate Frame and Order
position tuple[float, float, float] 3 m (x, y, z) relative to base_link
orientation tuple[float, float, float, float] 4 Dimensionless Unit quaternion (qx, qy, qz, qw)

(0, 0, 0, 1) represents zero rotation; it does not mean that the orientation is unset. Do not pass Euler angles or a quaternion ordered as (qw, qx, qy, qz) directly to orientation.

As Feedback#

The pose returned by get_end_pose() is calculated from current joint feedback through forward kinematics; it is not a direct measurement from an independent end-effector sensor. The model has no source timestamp, so a non-None return does not prove that it is synchronized with the latest joint state.

As a Motion Target#

The model itself does not consistently validate finite values, zero quaternions, or normalization. Before sending a target, check that:

  1. the position has exactly 3 elements and the orientation exactly 4;
  2. every value is a finite floating-point number;
  3. the quaternion is nonzero and its norm is close to 1;
  4. the pose has been transformed into the same base_link frame, with position in m;
  5. the target and complete path meet reachability, joint-limit, and on-site collision requirements.

For formatting, IK, seeds, and failure handling, also see PTP Point-to-Point Planning, LIN Linear Trajectory Planning, and CIRC Circular Trajectory Planning.