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

ArmState (Robot Arm State)#

ArmState is the section name used to correspond to the P6 navigation; the P7 SDK does not have an object with this name. P7 returns robot-arm-related state through three independent models: ArmJointState, ArmMotorState, and ImuState. When a getter succeeds, it returns an immutable snapshot; it returns None when no current data is available.

ArmJointState#

The current P7 has 7 revolute joints. The three tuples follow the same joint order.

Field Type Length Unit Meaning
angles tuple[float, ...] 7 rad Joint position
velocities tuple[float, ...] 7 rad/s Joint velocity
efforts tuple[float, ...] 7 N·m Effort/torque feedback from upstream revolute joints

These values are feedback, not command limits. efforts is not a substitute for calibrated external-force sensing or safety measurements.

ArmMotorState#

Field Type Length Unit/Value Meaning
motor_temperatures tuple[float, ...] Usually 7; 0 when the upstream array is empty °C Temperature of each robot-arm motor
error_ids tuple[int, ...] Same as the temperature array 0 means normal; a value other than 0 means a device error bit or error code Error identifier for each motor

The bit-level meaning of an error code depends on the motor and firmware version. When a value is nonzero, retain the original integer. Do not apply an error-code table from another product or clear the error without diagnosis.

ImuState#

Field Type Length Unit Coordinate Frame/Meaning
angular_velocity tuple[float, ...] 3, ordered (x, y, z) rad/s Angular velocity in the original arm_imu frame
linear_acceleration tuple[float, ...] 3, ordered (x, y, z) m/s² Linear acceleration in the original arm_imu frame, including the gravity component observed by the sensor

The SDK does not retain the upstream frame_id, timestamp, orientation, or covariance in ImuState. The two returned three-element tuples alone do not identify the IMU mounting orientation relative to base_link.

Retrieval Methods#

joint_state = client.get_arm_joint_state()  # ArmJointState | None
motor_state = client.get_arm_motor_state()  # ArmMotorState | None
imu_state = client.get_imu_state()          # ImuState | None

None of the three methods requires control authority. They may return None when an array is missing or lengths do not match. The models do not carry source timestamps, so a single nonempty result does not prove that the state is fresh enough for real-time control. See API Reference for all state getters.