Skip to content

Robotic Arm APIs

The ArmFactory class provides the following methods for creating robotic arm instances.

  1. Create a robotic arm instance by specifying the type and name.

    • Method:

      create_arm(vendor_type: str, name: str, params: dict[str, str]) -> ArmInterface
    • Parameters:

      ParameterDescription

      vendor_type

      The manufacturer or type of the robotic arm.

      name

      The instance identifier for the arm (e.g., "left_arm", "right_arm").

      params

      Additional robotic arm parameters, such as IP address, port number, etc.

      {
      'ip':'192.168.1.10', # TCP IP address
      'port':'5000', # TCP port number
      'udp_ip':'192.168.1.100', # UDP IP address
      'udp_port':'6000', # UDP port number
      'udp_cycle':'20', # UDP cycle (period = udp_cycle * 5 ms)
      }
    • Return value:

      An ArmInterface instance if creation succeeds, otherwise None.

  2. Create a robotic arm instance using an ArmFactoryParam object.

    • Method:

      create_arm(param: ArmFactoryParam) -> ArmInterface
    • Parameters:

      Parameter
      Description
      paramRobotic arm configuration parameters. For details, please refer to ArmFactoryParam.
    • Return value:

      An ArmInterface instance if creation succeeds, otherwise None.

  3. Create a robotic arm instance from a configuration file.

    • Method:

      create_arm_from_config(config_path: str) -> ArmInterface
    • Parameter:

      ParameterDescription

      config_path

      Path to the configuration file. The configuration file must be a JSON file.

      {
      "arm_type":"xxx", # Robotic arm vendor
      "arm_name":"left_arm", # Robotic arm name
      "ip": "192.168.1.18", # TCP IP address
      "port": "8080", # TCP port number
      "udp_ip": "192.168.1.102", # UDP IP address
      "udp_port": "8089", # UDP port number
      "udp_cycle": "1", # UDP cycle (period = udp_cycle * 5 ms)
      "enable_gripper": "false" # Enable gripper
      }
    • Return value:

      An ArmInterface instance if creation succeeds, otherwise None.

The ArmFactoryParam class is used to describe the parameters required for creating a robotic arm. It can be initialized either through the default constructor or by passing a dictionary.

All attributes of the ArmFactoryParam class are read-write.

Attribute (Read-Write)Data TypeDescription
arm_typestrRobotic arm vendor (e.g., "realman")
arm_namestrRobotic arm name (e.g., "left_arm")
ipstrTCP IP address
udp_ipstrUDP IP address
portintTCP port number
udp_portintUDP port number
udp_cycleintUDP cycle (period = udp_cycle * 5 ms)
  • Method:

    __init__(self, arg0: dict[str, str]) -> None
  • Parameter:

    ParameterDescription
    arg0

    A dictionary containing all necessary parameters for creating the robotic arm. It must include the keys shown in the example below.
    The constructor will raise a RuntimeError if any required key is missing or its format is invalid.

    {
    'arm_type':'xxx', # Robotic arm vendor
    'arm_name':'left_arm', # Robotic arm name
    'ip':'192.168.1.10', # TCP IP address
    'port':'5000', # TCP port number
    'udp_ip': '192.168.1.100', # UDP IP address
    'udp_port':'6000', # UDP port number
    'udp_cycle':'20', # UDP cycle (period = udp_cycle * 5 ms)
    'enable_gripper': 'false' # Enable gripper
    }

The ArmInterface class provides a series of public methods for controlling the robotic arm, including motion, grasping, and status queries. Ensure a robotic arm instance has been created before using these methods.

Attribute (Read-Only)Data TypeDescription
namestrThe name of the robotic arm instance.
  • Method:

    connect(self) -> alphabot.core.AbcErrorCode
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    disconnect(self) -> None
  • Return value:

    None.

  • Method:

    move_joint_position(
    self,
    joints: list[float],
    v: int,
    r: int,
    trajectory_connect: int,
    block: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    jointsTarget joint positions, in degrees.
    vPercentage of the maximum joint linear velocity and acceleration used for planning. Valid range: 0-100.
    rTrajectory blending radius. Default value is 0.
    trajectory_connectTrajectory connection flag. Accepts 0 or 1.
    - 0: Plan and execute the trajectory immediately. Do not connect to the next trajectory.
    - 1: Plan the current trajectory together with the next one, but do not execute immediately. Note: In blocking mode, the method returns immediately even after the trajectory is successfully sent.
    blockBlocking mode flag. Accepts 0 or 1.
    - 0: Non-blocking mode. The method returns immediately after successfully sending the motion command to the controller.
    - 1: Blocking mode. The method waits until the arm completes the motion or an error occurs before returning.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    move_cartesian_linear(
    self,
    pose: alphabot.core.Pose,
    v: int,
    r: int,
    trajectory_connect: int,
    block: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    poseTarget pose. For details, please refer to Pose.
    vPercentage of the maximum joint linear velocity and acceleration used for planning. Valid range: 0-100.
    rTrajectory blending radius. Default value is 0.
    trajectory_connectTrajectory connection flag. Accepts 0 or 1.
    - 0: Plan and execute the trajectory immediately. Do not connect to the next trajectory.
    - 1: Plan the current trajectory together with the next one, but do not execute immediately. Note: In blocking mode, the method returns immediately even after the trajectory is successfully sent.
    blockBlocking mode flag. Accepts 0 or 1.
    - 0: Non-blocking mode. The method returns immediately after successfully sending the motion command to the controller.
    - 1: Blocking mode. The method waits until the arm completes the motion or an error occurs before returning.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

In joint space, a motion trajectory is planned to move the robotic arm to the specified target pose.

  • Method:

    move_joint_pose(
    self,
    pose: alphabot.core.Pose,
    v: int,
    r: int,
    trajectory_connect: int,
    block: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    poseTarget pose. For details, please refer to Pose.
    vPercentage of the maximum joint angular velocity and joint angular acceleration used for planning. Valid range: 0-100.
    rTrajectory blending radius. Default value is 0.
    trajectory_connectTrajectory connection flag. Accepts 0 or 1.
    - 0: Plan and execute the trajectory immediately. Do not connect to the next trajectory.
    - 1: Plan the current trajectory together with the next one, but do not execute immediately. Note: In blocking mode, the method returns immediately even after the trajectory is successfully sent.
    blockBlocking mode flag. Accepts 0 or 1.
    - 0: Non-blocking mode. The method returns immediately after successfully sending the motion command to the controller.
    - 1: Blocking mode. The method waits until the arm completes the motion or an error occurs before returning.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

Joint angles are sent to the robotic arm via CAN FD (Controller Area Network Flexible Data-rate), bypassing trajectory planning by the controller. If the method is called correctly, the robotic arm executes the motion immediately.

  • Method:

    move_joint_position_canfd(
    self,
    joints: list[float],
    follow: bool,
    trajectory_mode: int = 0,
    radio: int = 0
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    jointsTarget joint positions, in degrees.
    followFollow mode flag. Accepts True or False.
    - True: High-follow mode.
    - False: Low-follow mode.
    Note: High-follow mode requires a pass-through cycle of 10ms or less.
    trajectory_modeUsed in high-follow mode. Accepts 0, 1, or 2.
    - 0: Full pass-through mode.
    - 1: Curve-fitting mode.
    - 2: Filtering mode.
    radio- In curve-fitting mode: radio is the smoothing coefficient, range 0-100.
    - In filtering mode: radio is the filter parameter, range 0-1000.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

The target pose is sent to the robotic arm via CAN FD (Controller Area Network Flexible Data-rate), bypassing trajectory planning by the controller.

When the target pose is received by the arm controller, the controller first attempts inverse kinematics calculation. If the inverse kinematics solution succeeds and the calculated joint angles do not differ significantly from the current joint positions, the angles are sent directly to the joints for execution, skipping additional trajectory planning.

This feature is suitable for scenarios that require periodic pose adjustments, such as visual servoing applications.

  • Method:

    move_cartesian_pose_canfd(
    self,
    pose: alphabot.core.Pose,
    follow: bool,
    trajectory_mode: int = 0,
    radio: int = 0
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    poseTarget pose.
    followFollow mode flag. Accepts True or False.
    - True: High-follow mode.
    - False: Low-follow mode.
    Note: High-follow mode requires a pass-through cycle of 10ms or less.
    trajectory_modeUsed in high-follow mode. Accepts 0, 1, or 2.
    - 0: Full pass-through mode.
    - 1: Curve-fitting mode.
    - 2: Filtering mode.
    radio- In curve-fitting mode: radio is the smoothing coefficient, range 0-100.
    - In filtering mode: radio is the filter parameter, range 0-1000.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

Joint space following motion refers to real-time trajectory planning in joint space to achieve dynamic following of target joint positions.

  • Method:

    move_joint_follow(self, joints: list[float]) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    jointsTarget joint positions.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

Cartesian space following motion refers to real-time trajectory planning in Cartesian space to achieve dynamic following of the target pose.

  • Method:

    move_pose_follow(self, pose: alphabot.core.Pose) -> alphabot.core.AbcErrorCode
  • Parameter:

    Parameter
    Description
    poseTarget pose. For details, please refer to Pose.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

Register Robotic Arm State Callback Function

Section titled “Register Robotic Arm State Callback Function”
  • Method:

    realtime_arm_state_call_back(self, callback: typing.Callable) -> None
  • Parameter:

    Parameter
    Description
    callbackThe callback function is called whenever a robotic arm state update is received. The callback function receives a parameter of type ArmRealtimeState.
  • Return value:

    None.

The robotic arm decelerates and stops smoothly along the currently executing trajectory.

  • Method:

    set_arm_slow_stop(self) -> alphabot.core.AbcErrorCode
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

The robotic arm stops immediately at the maximum joint speed along the currently executing trajectory. This operation is an irreversible abort; motion cannot be resumed from the interruption point.

  • Method:

    set_arm_stop(self) -> alphabot.core.AbcErrorCode
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

The robotic arm pauses execution along the currently running trajectory. This operation is a recoverable interruption; motion can be resumed from the point of interruption.

  • Method:

    set_arm_pause(self) -> alphabot.core.AbcErrorCode
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

After being paused, the robotic arm resumes execution from the interruption point and continues the unfinished motion task.

  • Method:

    set_arm_continue(self) -> alphabot.core.AbcErrorCode
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    set_plus_mode(self, mode: int) -> alphabot.core.AbcErrorCode
  • Parameter:

    Parameter
    Description
    modeThe end-effector ecosystem protocol mode.
    - 0: Disable protocol.
    - 9600: Enable protocol (baud rate 9600).
    - 115200: Enable protocol (baud rate 115200).
    - 256000: Enable protocol (baud rate 256000).
    - 460800: Enable protocol (baud rate 460800).
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

The gripper moves to its fully open position at the specified speed.

  • Method:

    set_gripper_release(
    self,
    speed: int,
    block: bool,
    timeout: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    speedGripper release speed. Valid range: 1-1000 (dimensionless).
    blockBlocking mode flag.
    - True: Blocking mode. Waits for the controller to confirm the gripper has reached the position.
    - False: Non-blocking mode. Does not wait for the gripper-in-position feedback.
    timeoutTimeout behavior depends on the blocking mode.
    - Blocking mode: Maximum waiting time for the gripper to reach the target position, in seconds.
    - Non-blocking mode: If set to 0, the method returns immediately after sending the command; otherwise, it returns after receiving the successful setting command.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

The gripper grasps at the specified speed and force. Grasping stops automatically when the gripping force exceeds the configured force threshold.

  • Method:

    set_gripper_pick(
    self,
    speed: int,
    force: int,
    block: bool,
    timeout: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    speedGripper closing speed. Valid range: 1-1000 (dimensionless).
    forceForce-control threshold. Valid range: 50-1000 (dimensionless).
    blockBlocking mode flag.
    - True: Blocking mode. Waits for the controller to confirm the gripper has reached the position.
    - False: Non-blocking mode. Does not wait for the gripper-in-position feedback.
    timeoutTimeout behavior depends on the blocking mode.
    - Blocking mode: Maximum waiting time for the gripper to reach the target position, in seconds.
    - Non-blocking mode: If set to 0, the method returns immediately after sending the command; otherwise, it returns after receiving the successful setting command.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    set_gripper_pick_on(
    self,
    speed: int,
    force: int,
    block: bool,
    timeout: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    speedGripper closing speed. Valid range: 1-1000 (dimensionless).
    forceForce-control threshold. Valid range: 50-1000 (dimensionless).
    blockBlocking mode flag.
    - True: Blocking mode. Waits for the controller to confirm the gripper has reached the position.
    - False: Non-blocking mode. Does not wait for the gripper-in-position feedback.
    timeoutTimeout behavior depends on the blocking mode.
    - Blocking mode: Maximum waiting time for the gripper to reach the target position, in seconds.
    - Non-blocking mode: If set to 0, the method returns immediately after sending the command; otherwise, it returns after receiving the successful setting command.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

After the gripper reaches the target position, the following behavior applies:

  • If the current aperture is smaller than the target, the gripper opens to the target position at the default speed.

  • If the current aperture is larger than the target, the gripper closes towards the target position at the specified speed and torque limit. The gripper stops when either the torque threshold is exceeded or the target position is reached.

  • Method:

    set_gripper_position(
    self,
    position: int,
    block: bool,
    timeout: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    positionTarget gripper aperture position. Valid range: 1-1000 (dimensionless).
    blockBlocking mode flag.
    - true: Blocking mode. Waits for the controller to confirm the gripper has reached the position.
    - false: Non-blocking mode. Does not wait for the gripper-in-position feedback.
    timeoutTimeout behavior depends on the blocking mode.
    - Blocking mode: Maximum waiting time for the gripper to reach the target position, in seconds.
    - Non-blocking mode: If set to 0, the method returns immediately after sending the command; otherwise, it returns after receiving the successful setting command.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    get_gripper_state(self) -> tuple[alphabot.core.AbcErrorCode, GripperState]
  • Return value:

    A tuple containing two elements.

    Element TypeDescription
    AbcErrorCodeAbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.
    GripperStateThe current gripper status. For details, please refer to GripperState.

Set Target Gesture Sequence Number of the Dexterous Hand

Section titled “Set Target Gesture Sequence Number of the Dexterous Hand”
  • Method:

    set_hand_posture(
    self,
    posture_num: int,
    block: bool,
    timeout: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    posture_numGesture sequence number pre-stored in the dexterous hand, range: 1-40.
    block- True indicates blocking mode, which waits until the dexterous hand motion completes before returning.
    - False indicates non-blocking mode, which returns immediately after the command is sent.
    timeoutTimeout value in blocking mode, in seconds.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

The dexterous hand has 6 degrees of freedom (DOF), numbered 1–6 as follows:

1: Little finger, 2: Ring finger, 3: Middle finger, 4: Index finger, 5: Thumb flexion, 6: Thumb rotation.

  • Method:

    set_hand_angle(
    self,
    hand_angle: list[int]
    ) -> alphabot.core.AbcErrorCode
  • Parameter:

    Parameter
    Description
    hand_angleArray of finger angles. The array length is 6. The angle range is 0–1000. Additionally, -1 indicates that no action will be performed for this degree of freedom, and the current state will be maintained.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

Set Angle Following Control for the Dexterous Hand

Section titled “Set Angle Following Control for the Dexterous Hand”

The dexterous hand has 6 degrees of freedom (DOF), numbered 1–6 as follows:

1: Little finger, 2: Ring finger, 3: Middle finger, 4: Index finger, 5: Thumb flexion, 6: Thumb rotation.

  • Method:

    set_hand_follow_angle(
    self,
    hand_angle: list[int],
    block: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    hand_angleArray of finger angles. The array length is 6. The angle range is defined by the dexterous hand manufacturer (e.g., for INSPIRE-ROBOTS, the range is 0–2000).
    blockTimeout value before returning, in milliseconds. A value of 0 means non-blocking mode.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

Set Position Following Control for the Dexterous Hand

Section titled “Set Position Following Control for the Dexterous Hand”

The dexterous hand has 6 degrees of freedom (DOF), numbered 1–6 as follows:

1: Little finger, 2: Ring finger, 3: Middle finger, 4: Index finger, 5: Thumb flexion, 6: Thumb rotation.

  • Method:

    set_hand_follow_pos(
    self,
    hand_pos: list[int],
    block: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    hand_angleArray of finger positions. The array length is 6. The position range is defined by the dexterous hand manufacturer (e.g., for INSPIRE-ROBOTS, the range is 0–1000).
    blockTimeout value before returning, in milliseconds. A value of 0 means non-blocking mode.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    set_hand_speed(self, speed: int) -> alphabot.core.AbcErrorCode
  • Parameter:

    Parameter
    Description
    speedFinger speed. Valid range: 1–1000.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    set_hand_force(self, hand_force: int) -> alphabot.core.AbcErrorCode
  • Parameter:

    Parameter
    Description
    hand_forceFinger force. Valid range: 1–1000.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    get_joint_degree(self) -> tuple[alphabot.core.AbcErrorCode, list[float]]
  • Return value:

    A tuple containing two elements.

    Element TypeDescription
    AbcErrorCodeAbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.
    list[float]Current joint angles.
  • Method:

    forward_kinematics(
    self,
    joints: list[float]
    ) -> tuple[alphabot.core.AbcErrorCode, alphabot.core.Pose]
  • Parameter:

    Parameter
    Description
    jointsJoint angles.
  • Return value:

    A tuple containing two elements.

    Element TypeDescription
    AbcErrorCodeAbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.
    PosePose computed by forward kinematics. For details, please refer to Pose.
  • Method:

    inverse_kinematics(
    self,
    pose: alphabot.core.Pose,
    ref_joints: list[float],
    mode: int = 0
    ) -> tuple[alphabot.core.AbcErrorCode, list[float]]
  • Parameters:

    Parameter
    Description
    poseThe target pose. For details, please refer to Pose.
    ref_jointsReference joint angles.
    modeSolution mode. Accepts 0 or 1. Default is 0.
    - 0: Single-step solution.
    - 1: Iterative search solution.
  • Return value:

    A tuple containing two elements.

    Element TypeDescription
    AbcErrorCodeAbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.
    list[float]Joint angles computed by inverse kinematics.

After the robotic arm is started, you must first call the following method to configure Modbus RTU mode before performing any operation on the communication port. Otherwise, an error will be returned.

The robotic arm persists the Modbus configuration. After a reboot, the arm automatically restores the mode that was configured before power-off.

  • Method:

    set_modbus_mode(
    self,
    port: int,
    baudrate: int,
    timeout: int
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    portSpecifies the communication port. Valid values: 0, 1, or 2.
    - 0: Controller RS485 port as RTU master.
    - 1: End interface board RS485 port as RTU master.
    - 2: Controller RS485 port as RTU slave.
    baudrateBaud rate, supporting three common baud rates, namely 9600, 115200, and 460800.
    timeoutTimeout period, in 100 ms.
    For all read and write commands to the Modbus device, if no response data is returned within the specified timeout period, a timeout error will be returned.
    The timeout period cannot be set to 0; if set to 0, the robotic arm will take it as 1 for configuration.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    close_modbus_mode(self, port: int) -> alphabot.core.AbcErrorCode
  • Parameter:

    Parameter
    Description
    portSpecifies the communication port. Valid values: 0, 1, or 2.
    - 0: Controller RS485 port as RTU master.
    - 1: End interface board RS485 port as RTU master.
    - 2: Controller RS485 port as RTU slave.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    write_registers(
    self,
    params: PeripheralReadWriteParams,
    values: list[int]
    ) -> alphabot.core.AbcErrorCode
  • Parameters:

    Parameter
    Description
    paramsParameter structure writing multiple registers. For details, please refer to PeripheralReadWriteParams.
    valuesAn array of data to be written to the registers, where each value is a 16-bit unsigned integer in the range 0-65535.
  • Return value:

    AbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode.

  • Method:

    get_error_flag(self) -> tuple[alphabot.core.AbcErrorCode, tuple[list[int], list[int]]]
  • Return value:

    A tuple containing two elements.

    Element TypeDescription
    AbcErrorCodeAbcErrorCode.SUCCESS indicates success. For other error codes, please refer to AbcErrorCode
    tuple[list[int], list[int]]list[int]Joint error codes.
    list[int]Joint brake status.
    - 1: Brake is engaged (not released).
    - 0: Brake is released.

The ArmForceSensor class represents force sensor data of the robotic arm.

Attribute (Read-Write)Data TypeDescription
forcelist[float]Current raw force sensor data, in units of 0.001 N or 0.001 N·m.
zero_forcelist[float]Current external force data measured by the force sensor system, in units of 0.001 N or 0.001 N·m.
coordinateintCoordinate frame of the external force data.
- 0: Sensor coordinate frame.
- 1: Current working coordinate frame.
- 2: Current tool coordinate frame.

The ArmRealtimeState class represents the real-time state of the robotic arm.

Attribute (Read-Write)Data TypeDescription
namestrRobotic arm name
timestamptyping.AnyTimestamp
joint_statusJointStateJoint states
force_sensorArmForceSensorForce sensor status
arm_current_statusArmCurrentStatusRobotic arm status
gripper_stateGripperStateGripper status
ee_posePoseEnd-effector pose
Attribute (Read-Write)Data TypeDescription
joint_positionlist[float]Current joint angles, in degrees (°).
joint_speedlist[float]Current joint speeds, in RPM (revolutions per minute).
joint_currentlist[float]Current joint current, in milliamperes (mA).
joint_temperaturelist[float]Current joint temperature, in degrees Celsius (°C).
joint_voltagelist[float]Current joint voltage, in volts (V).
joint_err_codelist[int]Current joint error codes.
joint_en_flaglist[bool]Current joint enable flags.
- True: Enabled.
- False: Disabled.
Attribute (Read-Write)Data TypeDescription
statusintGripper status.
- 0: Offline.
- 1: Online.
- -1: Online but disabled.
errorintGripper error information.
- Lower 8 bits: Internal gripper error codes.
- Bits 5—7: Reserved.
- Bit 4: Internal communication error.
- Bit 3: Driver error.
- Bit 2: Overcurrent.
- Bit 1: Overtemperature.
- Bit 0: Locked-rotor.
modeintCurrent operating mode.
- 1: Gripper fully open and idle.
- 2: Gripper fully closed and idle.
- 3: Gripper stopped and idle.
- 4: Gripper is closing.
- 5: Gripper is opening.
- 6: Gripper stopped by force-controlled during closing.
current_forceintCurrent force, in grams (g).
temperatureintCurrent temperature, in degrees Celsius (°C).
actposintGripper aperture, range 0-1000.
- 0: Gripper fully closed.
- 1000: Gripper fully open.

The PeripheralReadWriteParams class is used to configure Modbus communication parameters between the controller and peripheral devices.

Attribute (Read-Write)Data TypeDescription
portintCommunication port.
- 0: Controller RS485 port
- 1: End-effector interface board RS485 port
- 3: Controller Modbus TCP device
addressintStarting data address
deviceintPeripheral device address
numintNumber of data items