xArm-Python-SDK
May 21, 2026 · View on GitHub
Overview
xArm Python SDK
Caution
- Please keep away from the robot arm to avoid personal injury or equipment damage.
- Make sure to do a safety assessment before moving to prevent collisions.
- Protect the arm before unlocking the joint.
Installation
you can run examples without installation. Only Python 3 is supported.
- Install from source code
- download
git clone https://github.com/xArm-Developer/xArm-Python-SDK.git cd xArm-Python-SDK - install
- install with build
pip install build python -m build pip install dist/xarm_python_sdk-1.16.0-py3-none-any.whl - install with source code
pip install .
- install with build
- download
- Install from pypi
pip install xarm-python-sdk
Doc
Update Summary
-
1.18.3/1.18.4
- Added BytesData for data conversion
- Added data structure for report data
- Update the reported data for port 30002
- Increase execution speed by adding parameter to reduce the number of checks performed by the gripper APIs
-
1.17.0/1.17.1
- Change some API names
-
1.16.0
- Added parameter to support get raw data of the Six-axis Force Torque Sensor
- Added an interface to control xArm Gripper G2
- Optimize the interface for controlling BIO Gripper G2
- Extend the get_joint_states interface
-
1.15.0
- Added the Six-axis Force Torque Sensor collision detection related interfaces
- Added support for the new version of BIO Gripper control interface
-
1.14.7
- Fixed the problem that single joint or direction movement fails in some cases (valid from firmware 2.5.0)
- Added standard ModbusTcp client and Gcode client
- GPIO control supports immediate execution
- Support new version of vacuum gripper
- Support the studio-2.5.0 blockly project conversion to python
-
More
API Change List
| OLD API NAME | NEW API NAME | SDK VERSION |
|---|---|---|
| set_tgpio_modbus_timeout | set_rs485_timeout | 1.17.1 |
| get_tgpio_modbus_timeout | get_rs485_timeout | 1.17.1 |
| set_tgpio_modbus_baudrate | set_rs485_baudrate | 1.17.1 |
| get_tgpio_modbus_baudrate | get_rs485_baudrate | 1.17.1 |
| getset_tgpio_modbus_data | set_rs485_data | 1.17.1 |
| set_impedance | set_ft_sensor_admittance_parameters | 1.17.0 |
| set_impedance_mbk | set_ft_sensor_admittance_parameters | 1.17.0 |
| set_impedance_config | set_ft_sensor_admittance_parameters | 1.17.0 |
| set_force_control_pid | set_ft_sensor_force_parameters | 1.17.0 |
| config_force_control | set_ft_sensor_force_parameters | 1.17.0 |
| ft_sensor_set_zero | set_ft_sensor_zero | 1.17.0 |
| ft_sensor_iden_load | iden_ft_sensor_load_offset | 1.17.0 |
| ft_sensor_cali_load | set_ft_sensor_load_offset | 1.17.0 |
| ft_sensor_enable | set_ft_sensor_enable | 1.17.0 |
| ft_sensor_app_set | set_ft_sensor_mode | 1.17.0 |
| ft_sensor_app_get | get_ft_sensor_mode | 1.17.0 |
| get_linear_track_registers | get_linear_motor_registers | 1.17.0 |
| get_linear_track_pos | get_linear_motor_pos | 1.17.0 |
| get_linear_track_status | get_linear_motor_status | 1.17.0 |
| get_linear_track_error | get_linear_motor_error | 1.17.0 |
| get_linear_track_is_enabled | get_linear_motor_is_enabled | 1.17.0 |
| get_linear_track_on_zero | get_linear_motor_on_zero | 1.17.0 |
| get_linear_track_sci | get_linear_motor_sci | 1.17.0 |
| get_linear_track_sco | get_linear_motor_sco | 1.17.0 |
| clean_linear_track_error | clean_linear_motor_error | 1.17.0 |
| set_linear_track_enable | set_linear_motor_enable | 1.17.0 |
| set_linear_track_speed | set_linear_motor_speed | 1.17.0 |
| set_linear_track_back_origin | set_linear_motor_back_origin | 1.17.0 |
| set_linear_track_pos | set_linear_motor_pos | 1.17.0 |
| set_linear_track_stop | set_linear_motor_stop | 1.17.0 |
| shutdown_system | system_control | 1.13.3 |
| get_suction_cup | get_vacuum_gripper | 1.5.0 |
| set_suction_cup | set_vacuum_gripper | 1.5.0 |
| get_ik | get_inverse_kinematics | 1.0.0 |
| get_fk | get_forward_kinematics | 1.0.0 |
| set_sleep_time | set_pause_time | 1.0.0 |
| get_gpio_digital | get_tgpio_digital | 1.0.0 |
| set_gpio_digital | set_tgpio_digital | 1.0.0 |
| get_gpio_analog | get_tgpio_analog | 1.0.0 |
Example
Before running the example, please modify the IP in robot.conf to corresponding IP you want to control.
-
0000-template
-
0001-event_register
-
0002-get_property
-
0003-api_get
-
0004-servo_attach_detach
-
1001-move_line
-
1002-move_line
-
1003-relative_move_line
-
1004-move_arc_line
-
1005-move_arc_line
-
1006-move_tool_line
-
1007-counter
-
1008-move_line_aa
-
1009-cartesian_velocity_control
-
1010-cartesian_online_trajectory_planning
-
2000-joint_velocity_control
-
2006-joint_online_trajectory_planning
-
2001-move_joint --> xarm5 --- xarm6 --- xarm7
-
2002-move_joint --> xarm5 --- xarm6 --- xarm7
-
2003-move_joint --> xarm5 --- xarm6 --- xarm7
-
2004-move_joint --> xarm5 --- xarm6 --- xarm7
-
2005-move_arc_joint --> xarm5 --- xarm6 --- xarm7
-
3001-move_circle
-
3002-record_trajectory
-
3003-playback_trajectory
-
3004-get_report_data
-
3005-task_feedback
-
3006-standard_modbus_tcp
-
5000-set_tgpio_modbus
-
5001-get_tgpio_digital
-
5002-get_tgpio_analog
-
5003-set_tgpio_digital
-
5004-set_gripper
-
5005-get_cgpio_digital_analog
-
5006-set_cgpio_digital_analog
-
5007-set_cgpio_input_output_function
-
5008-get_cgpio_state
-
5009-set_bio_gripper
-
6001-set_reduced_mode
-
6002-set_fence_mode
-
7001-servo_j
-
7002-servo_cartesian
-
7003-servo_cartesian_aa
-
8000-load_identify_current
-
8001-force_tech
-
8002-admittance-control
-
8003-force_control
-
8004-load_identify
-
8005-read_force_data
-
8006-save_force_zero
-
8010-get_ft_sensor_config
-
9000-set_linear_motor
-
blockly_to_python
-
get_report_data_with_protocol
-
Import
from xarm.wrapper import XArmAPI arm = XArmAPI('COM5') arm = XArmAPI('192.168.1.113') arm = XArmAPI('192.168.1.113', do_not_open=False) arm = XArmAPI('192.168.1.113', is_radian=False) -
Connect/Disconnect
arm.connect(...) arm.disconnect() -
Move
arm.reset(...) arm.set_position(...) arm.set_servo_angle(...) arm.set_servo_angle_j(...) arm.set_servo_cartesian(...) arm.move_gohome(...) arm.move_circle(...) arm.emergency_stop() arm.set_position_aa(...) arm.set_servo_cartesian_aa(...) arm.vc_set_joint_velocity(...) arm.vc_set_cartesian_velocity(...) -
Set
arm.set_servo_attach(...) arm.set_servo_detach(...) arm.set_state(...) arm.set_mode(...) arm.motion_enable(...) arm.set_pause_time(...) -
Get
arm.get_version() arm.get_state() arm.get_is_moving() arm.get_cmdnum() arm.get_err_warn_code() arm.get_position(...) arm.get_servo_angle(...) arm.get_position_aa(...) arm.get_pose_offset(...) -
Setting
arm.set_tcp_offset(...) arm.set_tcp_jerk(...) arm.set_tcp_maxacc(...) arm.set_joint_jerk(...) arm.set_joint_maxacc(...) arm.set_tcp_load(...) arm.set_collision_sensitivity(...) arm.set_teach_sensitivity(...) arm.set_gravity_direction(...) arm.config_tgpio_reset_when_stop(...) arm.config_cgpio_reset_when_stop(...) arm.set_report_tau_or_i(...) arm.set_self_collision_detection(...) arm.set_collision_tool_model(...) arm.clean_conf() arm.save_conf() -
Gripper/Gripper G2
arm.set_gripper_enable(...) arm.set_gripper_mode(...) arm.set_gripper_speed(...) arm.set_gripper_position(...) arm.get_gripper_position() arm.get_gripper_err_code() arm.clean_gripper_error() # only Gripper G2 arm.get_gripper_g2_position() arm.set_gripper_g2_position(...) -
BIO Gripper
arm.set_bio_gripper_enable(...) arm.set_bio_gripper_speed(...) arm.open_bio_gripper(...) arm.close_bio_gripper(...) arm.get_bio_gripper_status() arm.get_bio_gripper_error() arm.clean_bio_gripper_error() # only BIO Gripper G2 arm.get_bio_gripper_g2_position() arm.set_bio_gripper_g2_position(...) -
RobotIQ Gripper
arm.robotiq_reset() arm.robotiq_set_activate(...) arm.robotiq_set_position(...) arm.robotiq_open(...) arm.robotiq_close(...) arm.robotiq_get_status(...) -
Modbus of the RS485
arm.set_rs485_timeout(...) arm.get_rs485_timeout(...) arm.set_rs485_baudrate(...) arm.get_rs485_baudrate(...) arm.set_rs485_data(...) -
GPIO
# Tool GPIO arm.get_tgpio_digital(...) arm.set_tgpio_digital(...) arm.get_tgpio_analog(...) arm.set_tgpio_digital_with_xyz(...) # Controller GPIO arm.get_cgpio_digital(...) arm.get_cgpio_analog(...) arm.set_cgpio_digital(...) arm.set_cgpio_analog(...) arm.set_cgpio_digital_input_function(...) arm.set_cgpio_digital_output_function(...) arm.get_cgpio_state() arm.set_cgpio_digital_with_xyz(...) arm.set_cgpio_analog_with_xyz(...) -
Linear Motor
arm.get_linear_motor_pos() arm.get_linear_motor_status() arm.get_linear_motor_error() arm.get_linear_motor_is_enabled() arm.get_linear_motor_on_zero() arm.get_linear_motor_sci() arm.get_linear_motor_sco() arm.clean_linear_motor_error(...) arm.set_linear_motor_enable(...) arm.set_linear_motor_speed(...) arm.set_linear_motor_back_origin(...) arm.set_linear_motor_pos(...) arm.set_linear_motor_stop(...) -
FT Sensor
arm.set_ft_sensor_enable(...) arm.set_ft_sensor_mode(...) arm.get_ft_sensor_mode(...) arm.set_ft_sensor_zero(...) arm.iden_ft_sensor_load_offset(...) arm.set_ft_sensor_load_offset(...) arm.set_ft_sensor_admittance_parameters(...) arm.set_ft_sensor_force_parameters(...) arm.get_ft_sensor_data(...) arm.get_ft_sensor_config(...) arm.get_ft_sensor_error(...) -
Other
arm.set_pause_time(...) arm.system_control(...) arm.clean_error() arm.clean_warn() arm.set_counter_reset() arm.set_counter_increase(...) -
Register/Release
arm.register_report_callback(...) arm.register_report_location_callback(...) arm.register_connect_changed_callback(callback) arm.register_state_changed_callback(callback) arm.register_mode_changed_callback(callback) arm.register_mtable_mtbrake_changed_callback(callback) arm.register_error_warn_changed_callback(callback) arm.register_cmdnum_changed_callback(callback) arm.register_temperature_changed_callback(callback) arm.register_count_changed_callback(callback) arm.release_report_callback(callback) arm.release_report_location_callback(callback) arm.release_connect_changed_callback(callback) arm.release_state_changed_callback(callback) arm.release_mode_changed_callback(callback) arm.release_mtable_mtbrake_changed_callback(callback) arm.release_error_warn_changed_callback(callback) arm.release_cmdnum_changed_callback(callback) arm.release_temperature_changed_callback(callback) arm.release_count_changed_callback(callback) -
Property
arm.connected arm.default_is_radian arm.version arm.position arm.last_used_position arm.tcp_speed_limit arm.tcp_acc_limit arm.last_used_tcp_speed arm.last_used_tcp_acc arm.angles arm.joint_speed_limit arm.joint_acc_limit arm.last_used_angles arm.last_used_joint_speed arm.last_used_joint_acc arm.tcp_offset arm.state arm.mode arm.joints_torque arm.tcp_load arm.collision_sensitivity arm.teach_sensitivity arm.motor_brake_states arm.motor_enable_states arm.has_err_warn arm.has_error arm.has_warn arm.error_code arm.warn_code arm.cmd_num arm.device_type arm.axis arm.gravity_direction arm.gpio_reset_config arm.count arm.temperatures arm.voltages arm.currents arm.cgpio_states