xarm-python-sdk 1.15.3__tar.gz → 1.16.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/PKG-INFO +4 -1
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/README.md +10 -2
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/README.rst +3 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/ReleaseNotes.md +6 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/doc/api/xarm_api.md +47 -10
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/thridparty/set_yinshi_gripper.py +8 -8
- xarm_python_sdk-1.16.0/example/wrapper/thridparty/set_yinshi_rh56_gripper.py +126 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/wrapper/uxbus_cmd.py +16 -12
- xarm_python_sdk-1.16.0/xarm/version.py +1 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/wrapper/xarm_api.py +56 -11
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/base.py +23 -8
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/ft_sensor.py +3 -2
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/gripper.py +122 -36
- xarm_python_sdk-1.15.3/xarm/version.py +0 -1
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/.github/workflows/python-publish.yml +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/.gitignore +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/LICENSE +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/doc/UF_ModbusTCP_Manual.md +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/doc/api/xarm_api_code.md +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/doc/tool/gen_api.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/doc/tool/markdown_doc.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/0000-template.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/0001-event_register.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/0002-get_property.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/0003-api_get.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/0004-servo_attach_detach.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1001-move_line.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1002-move_line.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1003-relative_move_line.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1004-move_arc_line.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1005-move_arc_line.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1006-move_tool_line.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1007-counter.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1008-move_line_aa.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1009-cartesian_velocity_control.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/1010-cartesian_online_trajectory_planning.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/2000-joint_velocity_control.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/2006-joint_online_trajectory_planning.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/3001-move_circle.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/3002-record_trajectory.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/3003-playback_trajectory.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/3004-get_report_data.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/3005-task_feedback.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/3006-standard_modbus_tcp.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5000-set_tgpio_modbus.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5001-get_tgpio_digital.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5002-get_tgpio_analog.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5003-set_tgpio_digital.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5004-set_gripper.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5005-get_cgpio_digital_analog.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5006-set_cgpio_digital_analog.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5007-set_cgpio_input_output_function.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5008-get_cgpio_state.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/5009-set_bio_gripper.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/6001-set_reduced_mode.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/6002-set_fense_mode.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/7001-servo_j.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/7002-servo_cartesian.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/7003-servo_cartesian_aa.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8000-load_identify_current.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8001-force_tech.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8002-impedance.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8003-force_control.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8004-load_identify.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8005-read_force_data.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8006-save_force_zero.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/8010-get_ft_sensor_config.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/9000-set_linear_track.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/common/get_report_data_with_protocol.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/thridparty/set_robotiq_gripper.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/tool/blockly_to_python.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/tool/example.xml +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm5/2001-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm5/2002-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm5/2003-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm5/2004-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm5/2005-move_arc_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm6/2001-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm6/2002-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm6/2003-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm6/2004-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm6/2005-move_arc_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm7/2001-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm7/2002-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm7/2003-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm7/2004-move_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/xarm7/2005-move_arc_joint.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/pyproject.toml +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/requirements.txt +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/setup.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/build_backend.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/comm/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/comm/base.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/comm/serial_port.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/comm/socket_port.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/comm/uxbus_cmd_protocol.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/config/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/config/x_code.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/config/x_config.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/utils/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/utils/convert.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/utils/crc16.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/utils/debug_print.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/utils/log.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/version.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/wrapper/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/wrapper/uxbus_cmd_ser.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/core/wrapper/uxbus_cmd_tcp.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly/_blockly_base.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly/_blockly_handler.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly/_blockly_highlight.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly/_blockly_node.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly/_blockly_tool.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/blockly_tool.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/gcode.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/list_ports.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/modbus_tcp.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/threads.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/tools/utils.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/wrapper/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/wrapper/studio_api.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/__init__.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/base_board.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/code.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/decorator.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/events.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/gpio.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/grammar_async.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/grammar_coroutine.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/modbus_tcp.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/parse.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/record.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/report.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/robotiq.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/servo.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/studio.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/track.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/utils.py +0 -0
- {xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/xarm/x3/xarm.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xarm-python-sdk
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.16.0
|
|
4
4
|
Summary: Python SDK for UFACTORY robotic arm 850, xArm 5/6/7, and Lite6.
|
|
5
5
|
Project-URL: Homepage, https://www.ufactory.cc
|
|
6
6
|
Project-URL: Documentation, https://github.com/xArm-Developer/xArm-Python-SDK/blob/master/doc/api/xarm_api.md
|
|
@@ -32,6 +32,9 @@ xarm-python-sdk
|
|
|
32
32
|
.. image:: https://badge.fury.io/py/xarm-python-sdk.svg
|
|
33
33
|
:target: https://pypi.org/project/xarm-python-sdk/
|
|
34
34
|
|
|
35
|
+
.. image:: https://static.pepy.tech/badge/xarm-python-sdk
|
|
36
|
+
:target: https://pepy.tech/projects/xarm-python-sdk
|
|
37
|
+
|
|
35
38
|
.. image:: https://img.shields.io/github/license/xArm-Developer/xArm-Python-SDK.svg
|
|
36
39
|
:target: https://github.com/xArm-Developer/xArm-Python-SDK/blob/main/LICENSE
|
|
37
40
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# xArm-Python-SDK
|
|
2
2
|
|
|
3
|
+
[](https://pepy.tech/projects/xarm-python-sdk)
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
xArm Python SDK
|
|
5
7
|
|
|
@@ -14,14 +16,14 @@ xArm Python SDK
|
|
|
14
16
|
- download
|
|
15
17
|
```bash
|
|
16
18
|
git clone https://github.com/xArm-Developer/xArm-Python-SDK.git
|
|
17
|
-
cd
|
|
19
|
+
cd xArm-Python-SDK
|
|
18
20
|
```
|
|
19
21
|
- install
|
|
20
22
|
- install with build
|
|
21
23
|
```bash
|
|
22
24
|
pip install build
|
|
23
25
|
python -m build
|
|
24
|
-
pip install dist/xarm_python_sdk-1.
|
|
26
|
+
pip install dist/xarm_python_sdk-1.16.0-py3-none-any.whl
|
|
25
27
|
```
|
|
26
28
|
- install with source code
|
|
27
29
|
```bash
|
|
@@ -40,6 +42,12 @@ xArm Python SDK
|
|
|
40
42
|
- #### [UFACTORY ModbusTCP Manual](doc/UF_ModbusTCP_Manual.md)
|
|
41
43
|
|
|
42
44
|
## Update Summary
|
|
45
|
+
- > ### 1.16.0
|
|
46
|
+
- Added parameter to support get raw data of the Six-axis Force Torque Sensor
|
|
47
|
+
- Added an interface to control xArm Gripper G2
|
|
48
|
+
- Optimize the interface for controlling BIO Gripper G2
|
|
49
|
+
- Extend the get_joint_states interface
|
|
50
|
+
|
|
43
51
|
- > ### 1.15.0
|
|
44
52
|
- Added the Six-axis Force Torque Sensor collision detection related interfaces
|
|
45
53
|
- Added support for the new version of BIO Gripper control interface
|
|
@@ -4,6 +4,9 @@ xarm-python-sdk
|
|
|
4
4
|
.. image:: https://badge.fury.io/py/xarm-python-sdk.svg
|
|
5
5
|
:target: https://pypi.org/project/xarm-python-sdk/
|
|
6
6
|
|
|
7
|
+
.. image:: https://static.pepy.tech/badge/xarm-python-sdk
|
|
8
|
+
:target: https://pepy.tech/projects/xarm-python-sdk
|
|
9
|
+
|
|
7
10
|
.. image:: https://img.shields.io/github/license/xArm-Developer/xArm-Python-SDK.svg
|
|
8
11
|
:target: https://github.com/xArm-Developer/xArm-Python-SDK/blob/main/LICENSE
|
|
9
12
|
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## Update Summary
|
|
4
4
|
|
|
5
|
+
- > ### 1.16.0
|
|
6
|
+
- Added parameter to support get raw data of the Six-axis Force Torque Sensor
|
|
7
|
+
- Added an interface to control xArm Gripper G2
|
|
8
|
+
- Optimize the interface for controlling BIO Gripper G2
|
|
9
|
+
- Extend the get_joint_states interface
|
|
10
|
+
|
|
5
11
|
- > ### 1.15.0
|
|
6
12
|
- Added the Six-axis Force Torque Sensor collision detection related interfaces
|
|
7
13
|
- Added support for the new version of BIO Gripper control interface
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
xArm-Python-SDK API Documentation (V1.
|
|
1
|
+
xArm-Python-SDK API Documentation (V1.16.0): class XArmAPI in module xarm.wrapper.xarm_api
|
|
2
2
|
|
|
3
3
|
## class __XArmAPI__
|
|
4
4
|
****************************************
|
|
@@ -414,6 +414,14 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
414
414
|
>     error_code: See the [Bio Gripper Error Code Documentation](./xarm_api_code.md#bio-gripper-error-code) for details.
|
|
415
415
|
|
|
416
416
|
|
|
417
|
+
#### def __get_bio_gripper_g2_position__(self, **kwargs):
|
|
418
|
+
|
|
419
|
+
> Get the position (mm) of the BIO Gripper G2
|
|
420
|
+
>
|
|
421
|
+
> :return: tuple((code, pos)), only when code is 0, the returned result is correct.
|
|
422
|
+
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
423
|
+
|
|
424
|
+
|
|
417
425
|
#### def __get_bio_gripper_status__(self):
|
|
418
426
|
|
|
419
427
|
> Get the status of the bio gripper
|
|
@@ -724,13 +732,15 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
724
732
|
>         [21] xe_limit: 6d vector. for compliant axes, these values are the maximum allowed tcp speed along/about the axis. mm/s
|
|
725
733
|
|
|
726
734
|
|
|
727
|
-
#### def __get_ft_sensor_data__(self):
|
|
735
|
+
#### def __get_ft_sensor_data__(self, is_raw=False):
|
|
728
736
|
|
|
729
737
|
> Get the data of the Six-axis Force Torque Sensor
|
|
730
738
|
> Note:
|
|
731
739
|
>     1. only available if firmware_version >= 1.8.3
|
|
732
740
|
>     2. the Six-axis Force Torque Sensor is required (the third party is not currently supported)
|
|
733
741
|
>
|
|
742
|
+
> :param is_raw: get the raw data or not.
|
|
743
|
+
>     1. only available if firmware_version >= 2.6.109
|
|
734
744
|
> :return: tuple((code, exe_ft))
|
|
735
745
|
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
736
746
|
>     ft_data: only when code is 0, the returned result is correct.
|
|
@@ -758,9 +768,17 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
758
768
|
>     err_code: See the [Gripper Error Code Documentation](./xarm_api_code.md#gripper-error-code) for details.
|
|
759
769
|
|
|
760
770
|
|
|
771
|
+
#### def __get_gripper_g2_position__(self, **kwargs):
|
|
772
|
+
|
|
773
|
+
> Get the position (mm) of the xArm Gripper G2
|
|
774
|
+
>
|
|
775
|
+
> :return: tuple((code, pos)), only when code is 0, the returned result is correct.
|
|
776
|
+
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
777
|
+
|
|
778
|
+
|
|
761
779
|
#### def __get_gripper_position__(self, **kwargs):
|
|
762
780
|
|
|
763
|
-
> Get the gripper position
|
|
781
|
+
> Get the gripper position (pulse)
|
|
764
782
|
>
|
|
765
783
|
> :return: tuple((code, pos)), only when code is 0, the returned result is correct.
|
|
766
784
|
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
@@ -1292,7 +1310,7 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
1292
1310
|
> :param min_res_len: the minimum length of modbus response data. Used to check the data length, if not specified, no check
|
|
1293
1311
|
> :param host_id: host_id, default is 9 (TGPIO_HOST_ID)
|
|
1294
1312
|
>     9: END RS485
|
|
1295
|
-
>     
|
|
1313
|
+
>     11: CONTROLLER RS485
|
|
1296
1314
|
> :param is_transparent_transmission: whether to choose transparent transmission, default is False
|
|
1297
1315
|
>     Note: only available if firmware_version >= 1.11.0
|
|
1298
1316
|
> :param use_503_port: whether to use port 503 for communication, default is False
|
|
@@ -2106,13 +2124,13 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
2106
2124
|
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
2107
2125
|
|
|
2108
2126
|
|
|
2109
|
-
#### def
|
|
2127
|
+
#### def __set_bio_gripper_g2_position__(self, pos, speed=2000, force=100, wait=True, timeout=5, **kwargs):
|
|
2110
2128
|
|
|
2111
|
-
> Set the
|
|
2129
|
+
> Set the position of BIO Gripper G2
|
|
2112
2130
|
>
|
|
2113
|
-
> :param pos: gripper pos between 71 and 150
|
|
2114
|
-
> :param speed: gripper speed between
|
|
2115
|
-
> :param force: gripper force between
|
|
2131
|
+
> :param pos: gripper pos between 71 and 150, (unit: mm)
|
|
2132
|
+
> :param speed: gripper speed between 500 and 4500, default is 2000, (unit: pulse/s)
|
|
2133
|
+
> :param force: gripper force between 1 and 100, default is 100
|
|
2116
2134
|
> :param wait: whether to wait for the robotiq motion to complete, default is True
|
|
2117
2135
|
> :param timeout: maximum waiting time(unit: second), default is 5, only available if wait=True
|
|
2118
2136
|
>
|
|
@@ -2297,11 +2315,17 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
2297
2315
|
>         self.set_collision_tool_model(21, radius=45, height=137)
|
|
2298
2316
|
>         :param radius: the radius of cylinder, (unit: mm)
|
|
2299
2317
|
>         :param height: the height of cylinder, (unit: mm)
|
|
2318
|
+
>         :param x_offset: offset in the x direction, (unit: mm)
|
|
2319
|
+
>         :param y_offset: offset in the y direction, (unit: mm)
|
|
2320
|
+
>         :param z_offset: offset in the z direction, (unit: mm)
|
|
2300
2321
|
>     22: Cuboid, need additional parameters x, y, z
|
|
2301
2322
|
>         self.set_collision_tool_model(22, x=234, y=323, z=23)
|
|
2302
2323
|
>         :param x: the length of the cuboid in the x coordinate direction, (unit: mm)
|
|
2303
2324
|
>         :param y: the length of the cuboid in the y coordinate direction, (unit: mm)
|
|
2304
2325
|
>         :param z: the length of the cuboid in the z coordinate direction, (unit: mm)
|
|
2326
|
+
>         :param x_offset: offset in the x direction, (unit: mm)
|
|
2327
|
+
>         :param y_offset: offset in the y direction, (unit: mm)
|
|
2328
|
+
>         :param z_offset: offset in the z direction, (unit: mm)
|
|
2305
2329
|
> :param args: additional parameters
|
|
2306
2330
|
> :param kwargs: additional parameters
|
|
2307
2331
|
> :return: code
|
|
@@ -2499,6 +2523,19 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
2499
2523
|
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
2500
2524
|
|
|
2501
2525
|
|
|
2526
|
+
#### def __set_gripper_g2_position__(self, pos, speed=100, force=50, wait=False, timeout=None, **kwargs):
|
|
2527
|
+
|
|
2528
|
+
> Set the position of the xArm Gripper G2
|
|
2529
|
+
>
|
|
2530
|
+
> :param pos: gripper pos between 0 and 84, (unit: mm)
|
|
2531
|
+
> :param speed: gripper speed between 15 and 225, default is 100, (unit: mm/s)
|
|
2532
|
+
> :param force: gripper force between 1 and 100, default is 50
|
|
2533
|
+
> :param wait: whether to wait for the bio gripper motion complete, default is False
|
|
2534
|
+
> :param timeout: maximum waiting time(unit: second), default is 10s, only valid if wait is True
|
|
2535
|
+
> :return: code
|
|
2536
|
+
>     code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
2537
|
+
|
|
2538
|
+
|
|
2502
2539
|
#### def __set_gripper_mode__(self, mode, **kwargs):
|
|
2503
2540
|
|
|
2504
2541
|
> Set the gripper mode
|
|
@@ -2515,7 +2552,7 @@ xArm-Python-SDK API Documentation (V1.15.3): class XArmAPI in module xarm.wrappe
|
|
|
2515
2552
|
>
|
|
2516
2553
|
> :param pos: pos
|
|
2517
2554
|
> :param wait: wait or not, default is False
|
|
2518
|
-
> :param speed: speed,unit:r/min
|
|
2555
|
+
> :param speed: speed, unit:r/min
|
|
2519
2556
|
> :param auto_enable: auto enable or not, default is False
|
|
2520
2557
|
> :param timeout: wait time, unit:second, default is 10s
|
|
2521
2558
|
> :return: code
|
{xarm_python_sdk-1.15.3 → xarm_python_sdk-1.16.0}/example/wrapper/thridparty/set_yinshi_gripper.py
RENAMED
|
@@ -39,21 +39,21 @@ arm.motion_enable(True)
|
|
|
39
39
|
arm.set_mode(0)
|
|
40
40
|
arm.set_state(0)
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
print('
|
|
42
|
+
code = arm.set_tgpio_modbus_timeout(20)
|
|
43
|
+
print('set_tgpio_modbus_timeout, code={}'.format(code))
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
print('
|
|
45
|
+
code = arm.set_tgpio_modbus_baudrate(115200)
|
|
46
|
+
print('set_tgpio_modbus_baudrate, code={}'.format(code))
|
|
47
47
|
time.sleep(2)
|
|
48
48
|
|
|
49
49
|
while arm.connected:
|
|
50
50
|
# yinshi open/close test
|
|
51
51
|
data_frame = [0x01, 0x06, 0x00, 0x0A, 0x00, 0x03]
|
|
52
|
-
|
|
53
|
-
print('
|
|
52
|
+
code, res_data = arm.getset_tgpio_modbus_data(data_frame)
|
|
53
|
+
print('getset_tgpio_modbus_data, code={}, res_data={}'.format(code, res_data))
|
|
54
54
|
time.sleep(2)
|
|
55
55
|
|
|
56
56
|
data_frame = [0x01, 0x06, 0x00, 0x0A, 0x03, 0x60]
|
|
57
|
-
|
|
58
|
-
print('
|
|
57
|
+
code, res_data = arm.getset_tgpio_modbus_data(data_frame)
|
|
58
|
+
print('getset_tgpio_modbus_data, code={}, res_data={}'.format(code, res_data))
|
|
59
59
|
time.sleep(1)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Software License Agreement (BSD License)
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2019, UFACTORY, Inc.
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
#
|
|
7
|
+
# Author: Vinman <vinman.wen@ufactory.cc> <vinman.cub@gmail.com>
|
|
8
|
+
|
|
9
|
+
"""
|
|
10
|
+
Example: yinshi RH56 gripper Control
|
|
11
|
+
Please make sure that the gripper is attached to the end.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import os
|
|
15
|
+
import sys
|
|
16
|
+
import time
|
|
17
|
+
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))
|
|
18
|
+
|
|
19
|
+
from xarm.wrapper import XArmAPI
|
|
20
|
+
from configparser import ConfigParser
|
|
21
|
+
parser = ConfigParser()
|
|
22
|
+
parser.read('../robot.conf')
|
|
23
|
+
try:
|
|
24
|
+
ip = parser.get('xArm', 'ip')
|
|
25
|
+
except:
|
|
26
|
+
ip = input('Please input the xArm ip address[192.168.1.194]:')
|
|
27
|
+
if not ip:
|
|
28
|
+
ip = '192.168.1.194'
|
|
29
|
+
|
|
30
|
+
# 各自由度角度、力控、速度寄存器地址
|
|
31
|
+
FINGER_ADDR = {
|
|
32
|
+
0: 0x05CE, # 小拇指
|
|
33
|
+
1: 0x05D0, # 无名指
|
|
34
|
+
2: 0x05D2, # 中指
|
|
35
|
+
3: 0x05D4, #食指
|
|
36
|
+
4: 0x05D6, #大拇指弯曲
|
|
37
|
+
5: 0x05D8, #大拇指旋转
|
|
38
|
+
}
|
|
39
|
+
FORCE_ADDR = {
|
|
40
|
+
0: 0x05DA, # 小拇指
|
|
41
|
+
1: 0x05DC,
|
|
42
|
+
2: 0x05DE,
|
|
43
|
+
3: 0x05E0,
|
|
44
|
+
4: 0x05E2,
|
|
45
|
+
5: 0x05E4,
|
|
46
|
+
}
|
|
47
|
+
SPEED_ADDR = {
|
|
48
|
+
0: 0x05F2, # 小拇指
|
|
49
|
+
1: 0x05F4,
|
|
50
|
+
2: 0x05F6,
|
|
51
|
+
3: 0x05F8,
|
|
52
|
+
4: 0x05FA,
|
|
53
|
+
5: 0x05FC,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
HAND_ID = 0x01
|
|
57
|
+
|
|
58
|
+
def set_rh56_finger_speed(arm, finger_id, speed):
|
|
59
|
+
speed = min(max(round(speed), 0), 1000)
|
|
60
|
+
addr = SPEED_ADDR[finger_id]
|
|
61
|
+
modbus = [HAND_ID, 0x06, (addr >> 8) & 0xFF, addr & 0xFF, (speed >> 8) & 0xFF, speed & 0xFF]
|
|
62
|
+
code, res_data = arm.getset_tgpio_modbus_data(modbus, timeout=100)
|
|
63
|
+
if code != 0:
|
|
64
|
+
print('[FAILED] set the speed of finger-{}, code={}, res_data={}'.format(finger_id, code, res_data))
|
|
65
|
+
else:
|
|
66
|
+
print('[SUCCESS] set the speed of finger-{}, res_data={}'.format(finger_id, res_data))
|
|
67
|
+
return code, res_data
|
|
68
|
+
|
|
69
|
+
def set_rh56_finger_force(arm, finger_id, force):
|
|
70
|
+
force = min(max(round(force), 0), 1000)
|
|
71
|
+
addr = FORCE_ADDR[finger_id]
|
|
72
|
+
modbus = [HAND_ID, 0x06, (addr >> 8) & 0xFF, addr & 0xFF, (force >> 8) & 0xFF, force & 0xFF]
|
|
73
|
+
code, res_data = arm.getset_tgpio_modbus_data(modbus, timeout=100)
|
|
74
|
+
if code != 0:
|
|
75
|
+
print('[FAILED] set the force of finger-{}, code={}, res_data={}'.format(finger_id, code, res_data))
|
|
76
|
+
else:
|
|
77
|
+
print('[SUCCESS] set the force of finger-{}, res_data={}'.format(finger_id, res_data))
|
|
78
|
+
return code, res_data
|
|
79
|
+
|
|
80
|
+
def set_rh56_finger_pos(arm, finger_id, pos):
|
|
81
|
+
pos = min(max(round(pos), 0), 1000) if pos != -1 else 0xFFFF
|
|
82
|
+
addr = FINGER_ADDR[finger_id]
|
|
83
|
+
modbus = [HAND_ID, 0x06, (addr >> 8) & 0xFF, addr & 0xFF, (pos >> 8) & 0xFF, pos & 0xFF]
|
|
84
|
+
code, res_data = arm.getset_tgpio_modbus_data(modbus, timeout=100)
|
|
85
|
+
if code != 0:
|
|
86
|
+
print('[FAILED] set the pos of finger-{}, code={}, res_data={}'.format(finger_id, code, res_data))
|
|
87
|
+
else:
|
|
88
|
+
print('[SUCCESS] set the pos of finger-{}, res_data={}'.format(finger_id, res_data))
|
|
89
|
+
return code, res_data
|
|
90
|
+
|
|
91
|
+
def set_rh56_finger(arm, pos, speed=1000, force=500, open_threshold=500):
|
|
92
|
+
# 决定执行顺序:闭合用正序,张开用反序。位置大于500认为张开,小于等于500认为是闭合。
|
|
93
|
+
if pos <= open_threshold:
|
|
94
|
+
finger_order = range(0, 5) # 抓取(闭合)
|
|
95
|
+
else:
|
|
96
|
+
finger_order = reversed(range(0, 5)) # 张开
|
|
97
|
+
|
|
98
|
+
for finger_id in finger_order:
|
|
99
|
+
set_rh56_finger_speed(arm, finger_id, speed)
|
|
100
|
+
set_rh56_finger_force(arm, finger_id, force)
|
|
101
|
+
set_rh56_finger_pos(arm, finger_id, pos)
|
|
102
|
+
time.sleep(0.01)
|
|
103
|
+
|
|
104
|
+
arm = XArmAPI(ip)
|
|
105
|
+
time.sleep(0.5)
|
|
106
|
+
if arm.warn_code != 0:
|
|
107
|
+
arm.clean_warn()
|
|
108
|
+
if arm.error_code != 0:
|
|
109
|
+
arm.clean_error()
|
|
110
|
+
|
|
111
|
+
arm.motion_enable(True)
|
|
112
|
+
arm.set_mode(0)
|
|
113
|
+
arm.set_state(0)
|
|
114
|
+
|
|
115
|
+
code = arm.set_tgpio_modbus_timeout(20)
|
|
116
|
+
print('set_tgpio_modbus_timeout, code={}'.format(code))
|
|
117
|
+
|
|
118
|
+
code = arm.set_tgpio_modbus_baudrate(115200)
|
|
119
|
+
print('set_tgpio_modbus_baudrate, code={}'.format(code))
|
|
120
|
+
time.sleep(2)
|
|
121
|
+
|
|
122
|
+
for i in range(100):
|
|
123
|
+
set_rh56_finger(arm, pos=1000, force=500,speed=1000)
|
|
124
|
+
time.sleep(2)
|
|
125
|
+
set_rh56_finger(arm, pos=0, force=500, speed=1000)
|
|
126
|
+
time.sleep(2)
|
|
@@ -42,6 +42,7 @@ class UxbusCmd(object):
|
|
|
42
42
|
self._last_modbus_comm_time = time.monotonic()
|
|
43
43
|
self._feedback_type = 0
|
|
44
44
|
self._set_feedback_key_tranid = set_feedback_key_tranid
|
|
45
|
+
self.tgpio_set_modbus_func = self.tgpio_set_modbus
|
|
45
46
|
|
|
46
47
|
@property
|
|
47
48
|
def last_comm_time(self):
|
|
@@ -625,7 +626,7 @@ class UxbusCmd(object):
|
|
|
625
626
|
return self.get_nfp32(XCONF.UxbusReg.GET_JOINT_POS, 7)
|
|
626
627
|
|
|
627
628
|
def get_joint_states(self, num=3):
|
|
628
|
-
return self.get_nfp32_with_datas(XCONF.UxbusReg.GET_JOINT_POS, [num], 1, 7 * num)
|
|
629
|
+
return self.get_nfp32_with_datas(XCONF.UxbusReg.GET_JOINT_POS, [num], 1, 7 * (num & 0x0F))
|
|
629
630
|
|
|
630
631
|
def get_tcp_pose(self):
|
|
631
632
|
return self.get_nfp32(XCONF.UxbusReg.GET_TCP_POSE, 6)
|
|
@@ -874,22 +875,22 @@ class UxbusCmd(object):
|
|
|
874
875
|
txdata = [io_type, on_off]
|
|
875
876
|
return self.set_nu8(XCONF.UxbusReg.SET_IO_STOP_RESET, txdata, 2)
|
|
876
877
|
|
|
877
|
-
def gripper_modbus_w16s(self, addr, value,
|
|
878
|
+
def gripper_modbus_w16s(self, addr, value, count):
|
|
878
879
|
txdata = bytes([XCONF.GRIPPER_ID])
|
|
879
880
|
txdata += bytes([0x10])
|
|
880
881
|
txdata += convert.u16_to_bytes(addr)
|
|
881
|
-
txdata += convert.u16_to_bytes(
|
|
882
|
-
txdata += bytes([
|
|
882
|
+
txdata += convert.u16_to_bytes(count)
|
|
883
|
+
txdata += bytes([count * 2])
|
|
883
884
|
txdata += value
|
|
884
|
-
ret = self.
|
|
885
|
+
ret = self.tgpio_set_modbus_func(txdata, count * 2 + 7)
|
|
885
886
|
return ret
|
|
886
887
|
|
|
887
|
-
def gripper_modbus_r16s(self, addr,
|
|
888
|
+
def gripper_modbus_r16s(self, addr, count):
|
|
888
889
|
txdata = bytes([XCONF.GRIPPER_ID])
|
|
889
890
|
txdata += bytes([0x03])
|
|
890
891
|
txdata += convert.u16_to_bytes(addr)
|
|
891
|
-
txdata += convert.u16_to_bytes(
|
|
892
|
-
ret = self.
|
|
892
|
+
txdata += convert.u16_to_bytes(count)
|
|
893
|
+
ret = self.tgpio_set_modbus_func(txdata, 6)
|
|
893
894
|
return ret
|
|
894
895
|
|
|
895
896
|
def gripper_modbus_set_en(self, value):
|
|
@@ -1207,8 +1208,11 @@ class UxbusCmd(object):
|
|
|
1207
1208
|
def ft_sensor_app_get(self):
|
|
1208
1209
|
return self.get_nu8(XCONF.UxbusReg.FTSENSOR_GET_APP, 1)
|
|
1209
1210
|
|
|
1210
|
-
def ft_sensor_get_data(self, is_new=True):
|
|
1211
|
-
|
|
1211
|
+
def ft_sensor_get_data(self, is_new=True, is_raw=False):
|
|
1212
|
+
if is_new and is_raw:
|
|
1213
|
+
return self.get_nfp32_with_datas(XCONF.UxbusReg.FTSENSOR_GET_DATA, [1], 1, 6)
|
|
1214
|
+
else:
|
|
1215
|
+
return self.get_nfp32(XCONF.UxbusReg.FTSENSOR_GET_DATA if is_new else XCONF.UxbusReg.FTSENSOR_GET_DATA_OLD, 6)
|
|
1212
1216
|
|
|
1213
1217
|
def ft_sensor_get_config(self):
|
|
1214
1218
|
ret = self.get_nu8(XCONF.UxbusReg.FTSENSOR_GET_CONFIG, 280)
|
|
@@ -1317,7 +1321,7 @@ class UxbusCmd(object):
|
|
|
1317
1321
|
txdata += convert.u16_to_bytes(length)
|
|
1318
1322
|
txdata += bytes([length * 2])
|
|
1319
1323
|
txdata += value
|
|
1320
|
-
ret = self.
|
|
1324
|
+
ret = self.tgpio_set_modbus_func(txdata, length * 2 + 7, host_id=XCONF.LINEER_TRACK_HOST_ID, limit_sec=0.001)
|
|
1321
1325
|
return ret
|
|
1322
1326
|
|
|
1323
1327
|
def track_modbus_r16s(self, addr, length, fcode=0x03):
|
|
@@ -1325,7 +1329,7 @@ class UxbusCmd(object):
|
|
|
1325
1329
|
txdata += bytes([fcode])
|
|
1326
1330
|
txdata += convert.u16_to_bytes(addr)
|
|
1327
1331
|
txdata += convert.u16_to_bytes(length)
|
|
1328
|
-
ret = self.
|
|
1332
|
+
ret = self.tgpio_set_modbus_func(txdata, 6, host_id=XCONF.LINEER_TRACK_HOST_ID, limit_sec=0.001)
|
|
1329
1333
|
return ret
|
|
1330
1334
|
|
|
1331
1335
|
def iden_tcp_load(self, estimated_mass=0):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.16.0'
|
|
@@ -103,6 +103,8 @@ class XArmAPI(object):
|
|
|
103
103
|
'set_suction_cup': self.set_vacuum_gripper,
|
|
104
104
|
'get_ft_senfor_config': self.get_ft_sensor_config,
|
|
105
105
|
'shutdown_system': self.system_control,
|
|
106
|
+
'set_bio_gripper_position': self.set_bio_gripper_g2_position,
|
|
107
|
+
'get_bio_gripper_position': self.get_bio_gripper_g2_position,
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
def __getattr__(self, item):
|
|
@@ -1820,26 +1822,49 @@ class XArmAPI(object):
|
|
|
1820
1822
|
|
|
1821
1823
|
def get_gripper_position(self, **kwargs):
|
|
1822
1824
|
"""
|
|
1823
|
-
Get the gripper position
|
|
1825
|
+
Get the gripper position (pulse)
|
|
1824
1826
|
|
|
1825
1827
|
:return: tuple((code, pos)), only when code is 0, the returned result is correct.
|
|
1826
1828
|
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
1827
1829
|
"""
|
|
1828
1830
|
return self._arm.get_gripper_position(**kwargs)
|
|
1829
1831
|
|
|
1832
|
+
def get_gripper_g2_position(self, **kwargs):
|
|
1833
|
+
"""
|
|
1834
|
+
Get the position (mm) of the xArm Gripper G2
|
|
1835
|
+
|
|
1836
|
+
:return: tuple((code, pos)), only when code is 0, the returned result is correct.
|
|
1837
|
+
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
1838
|
+
"""
|
|
1839
|
+
return self._arm.get_gripper_g2_position(**kwargs)
|
|
1840
|
+
|
|
1830
1841
|
def set_gripper_position(self, pos, wait=False, speed=None, auto_enable=False, timeout=None, **kwargs):
|
|
1831
1842
|
"""
|
|
1832
1843
|
Set the gripper position
|
|
1833
1844
|
|
|
1834
1845
|
:param pos: pos
|
|
1835
1846
|
:param wait: wait or not, default is False
|
|
1836
|
-
:param speed: speed,unit:r/min
|
|
1847
|
+
:param speed: speed, unit:r/min
|
|
1837
1848
|
:param auto_enable: auto enable or not, default is False
|
|
1838
1849
|
:param timeout: wait time, unit:second, default is 10s
|
|
1839
1850
|
:return: code
|
|
1840
1851
|
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
1841
1852
|
"""
|
|
1842
1853
|
return self._arm.set_gripper_position(pos, wait=wait, speed=speed, auto_enable=auto_enable, timeout=timeout, **kwargs)
|
|
1854
|
+
|
|
1855
|
+
def set_gripper_g2_position(self, pos, speed=100, force=50, wait=False, timeout=None, **kwargs):
|
|
1856
|
+
"""
|
|
1857
|
+
Set the position of the xArm Gripper G2
|
|
1858
|
+
|
|
1859
|
+
:param pos: gripper pos between 0 and 84, (unit: mm)
|
|
1860
|
+
:param speed: gripper speed between 15 and 225, default is 100, (unit: mm/s)
|
|
1861
|
+
:param force: gripper force between 1 and 100, default is 50
|
|
1862
|
+
:param wait: whether to wait for the bio gripper motion complete, default is False
|
|
1863
|
+
:param timeout: maximum waiting time(unit: second), default is 10s, only valid if wait is True
|
|
1864
|
+
:return: code
|
|
1865
|
+
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
1866
|
+
"""
|
|
1867
|
+
return self._arm.set_gripper_g2_position(pos, speed=speed, force=force, wait=wait, timeout=timeout, **kwargs)
|
|
1843
1868
|
|
|
1844
1869
|
def set_gripper_speed(self, speed, **kwargs):
|
|
1845
1870
|
"""
|
|
@@ -2844,13 +2869,22 @@ class XArmAPI(object):
|
|
|
2844
2869
|
|
|
2845
2870
|
return self._arm.set_bio_gripper_force(force)
|
|
2846
2871
|
|
|
2847
|
-
def
|
|
2872
|
+
def get_bio_gripper_g2_position(self, **kwargs):
|
|
2848
2873
|
"""
|
|
2849
|
-
|
|
2874
|
+
Get the position (mm) of the BIO Gripper G2
|
|
2850
2875
|
|
|
2851
|
-
:
|
|
2852
|
-
|
|
2853
|
-
|
|
2876
|
+
:return: tuple((code, pos)), only when code is 0, the returned result is correct.
|
|
2877
|
+
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
2878
|
+
"""
|
|
2879
|
+
return self._arm.get_bio_gripper_g2_position(**kwargs)
|
|
2880
|
+
|
|
2881
|
+
def set_bio_gripper_g2_position(self, pos, speed=2000, force=100, wait=True, timeout=5, **kwargs):
|
|
2882
|
+
"""
|
|
2883
|
+
Set the position of BIO Gripper G2
|
|
2884
|
+
|
|
2885
|
+
:param pos: gripper pos between 71 and 150, (unit: mm)
|
|
2886
|
+
:param speed: gripper speed between 500 and 4500, default is 2000, (unit: pulse/s)
|
|
2887
|
+
:param force: gripper force between 1 and 100, default is 100
|
|
2854
2888
|
:param wait: whether to wait for the robotiq motion to complete, default is True
|
|
2855
2889
|
:param timeout: maximum waiting time(unit: second), default is 5, only available if wait=True
|
|
2856
2890
|
|
|
@@ -2858,7 +2892,7 @@ class XArmAPI(object):
|
|
|
2858
2892
|
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
2859
2893
|
robotiq_response: See the robotiq documentation
|
|
2860
2894
|
"""
|
|
2861
|
-
return self._arm.
|
|
2895
|
+
return self._arm.set_bio_gripper_g2_position(pos, speed=speed, force=force, wait=wait, timeout=timeout, **kwargs)
|
|
2862
2896
|
|
|
2863
2897
|
def open_bio_gripper(self, speed=0, wait=True, timeout=5, **kwargs):
|
|
2864
2898
|
"""
|
|
@@ -2967,6 +3001,9 @@ class XArmAPI(object):
|
|
|
2967
3001
|
"""
|
|
2968
3002
|
return self._arm.set_control_modbus_baudrate(baud)
|
|
2969
3003
|
|
|
3004
|
+
def set_tgpio_modbus_use_503_port(self, use_503_port=True):
|
|
3005
|
+
return self._arm.set_tgpio_modbus_use_503_port(use_503_port)
|
|
3006
|
+
|
|
2970
3007
|
def getset_tgpio_modbus_data(self, datas, min_res_len=0, host_id=9, is_transparent_transmission=False, use_503_port=False, **kwargs):
|
|
2971
3008
|
"""
|
|
2972
3009
|
Send the modbus data to the tool gpio
|
|
@@ -2975,7 +3012,7 @@ class XArmAPI(object):
|
|
|
2975
3012
|
:param min_res_len: the minimum length of modbus response data. Used to check the data length, if not specified, no check
|
|
2976
3013
|
:param host_id: host_id, default is 9 (TGPIO_HOST_ID)
|
|
2977
3014
|
9: END RS485
|
|
2978
|
-
|
|
3015
|
+
11: CONTROLLER RS485
|
|
2979
3016
|
:param is_transparent_transmission: whether to choose transparent transmission, default is False
|
|
2980
3017
|
Note: only available if firmware_version >= 1.11.0
|
|
2981
3018
|
:param use_503_port: whether to use port 503 for communication, default is False
|
|
@@ -3039,11 +3076,17 @@ class XArmAPI(object):
|
|
|
3039
3076
|
self.set_collision_tool_model(21, radius=45, height=137)
|
|
3040
3077
|
:param radius: the radius of cylinder, (unit: mm)
|
|
3041
3078
|
:param height: the height of cylinder, (unit: mm)
|
|
3079
|
+
:param x_offset: offset in the x direction, (unit: mm)
|
|
3080
|
+
:param y_offset: offset in the y direction, (unit: mm)
|
|
3081
|
+
:param z_offset: offset in the z direction, (unit: mm)
|
|
3042
3082
|
22: Cuboid, need additional parameters x, y, z
|
|
3043
3083
|
self.set_collision_tool_model(22, x=234, y=323, z=23)
|
|
3044
3084
|
:param x: the length of the cuboid in the x coordinate direction, (unit: mm)
|
|
3045
3085
|
:param y: the length of the cuboid in the y coordinate direction, (unit: mm)
|
|
3046
3086
|
:param z: the length of the cuboid in the z coordinate direction, (unit: mm)
|
|
3087
|
+
:param x_offset: offset in the x direction, (unit: mm)
|
|
3088
|
+
:param y_offset: offset in the y direction, (unit: mm)
|
|
3089
|
+
:param z_offset: offset in the z direction, (unit: mm)
|
|
3047
3090
|
:param args: additional parameters
|
|
3048
3091
|
:param kwargs: additional parameters
|
|
3049
3092
|
:return: code
|
|
@@ -3342,19 +3385,21 @@ class XArmAPI(object):
|
|
|
3342
3385
|
"""
|
|
3343
3386
|
return self._arm.ft_sensor_app_get()
|
|
3344
3387
|
|
|
3345
|
-
def get_ft_sensor_data(self):
|
|
3388
|
+
def get_ft_sensor_data(self, is_raw=False):
|
|
3346
3389
|
"""
|
|
3347
3390
|
Get the data of the Six-axis Force Torque Sensor
|
|
3348
3391
|
Note:
|
|
3349
3392
|
1. only available if firmware_version >= 1.8.3
|
|
3350
3393
|
2. the Six-axis Force Torque Sensor is required (the third party is not currently supported)
|
|
3351
3394
|
|
|
3395
|
+
:param is_raw: get the raw data or not.
|
|
3396
|
+
1. only available if firmware_version >= 2.6.109
|
|
3352
3397
|
:return: tuple((code, exe_ft))
|
|
3353
3398
|
code: See the [API Code Documentation](./xarm_api_code.md#api-code) for details.
|
|
3354
3399
|
ft_data: only when code is 0, the returned result is correct.
|
|
3355
3400
|
Note: The external force detection value of the Six-axis Force Torque Sensor after filtering, load and offset compensation
|
|
3356
3401
|
"""
|
|
3357
|
-
return self._arm.get_ft_sensor_data()
|
|
3402
|
+
return self._arm.get_ft_sensor_data(is_raw=is_raw)
|
|
3358
3403
|
|
|
3359
3404
|
def get_ft_sensor_config(self):
|
|
3360
3405
|
"""
|