Python:
末端工具协议配置 末端工具动作配置
支持进行动作的相关配置,包括查询、运行、删除、保存和更新等操作。
查询动作列表 rm_get_tool_action_list
- 方法原型:
python
rm_get_tool_action_list(self, page_num: int, page_size: int, vague_search: str) -> tuple[int, dict[str, any]]:- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
page_num | int | 页码。 |
page_size | int | 每页大小。 |
vague_search | str | 模糊搜索。 |
- 返回值:
tuple[int, dict[str,any]]: 包含两个元素的元组。
int:函数执行的状态码:
参数 说明 0 成功。 1 控制器返回false,传递参数错误或机械臂状态发生错误。 -1 数据发送失败,通信过程中出现问题。 -2 数据接收失败,通信过程中出现问题或者控制器超时没有返回。 -3 返回值解析失败,接收到的数据格式不正确或不完整。 -4 三代控制器不支持该接口。 dict[str,any] 获取到的动作列表字典,键为
rm_tool_action_list_t结构体的字段名称。
- 使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
ret, list = arm.rm_get_tool_action_list(1, 20, None)
print("tool action list")
print("total_size:", list['total_size'])
THRESHOLD = 1000000
for i, action in enumerate(list['act_list']):
print(f"action {i + 1}:")
print(f"name: {action['name'].decode('utf-8')}" if isinstance(action['name'], bytes) else f"name: {action['name']}")
has_valid_pos = any(pos != THRESHOLD for pos in action['hand_pos'][:100])
has_valid_angle = any(angle != THRESHOLD for angle in action['hand_angle'][:100])
if has_valid_pos:
print("handpos: [", ", ".join(str(pos) for pos in action['hand_pos'][:100] if pos != THRESHOLD), "]")
if has_valid_angle:
print("handangle: [", ", ".join(str(angle) for angle in action['hand_angle'][:100] if angle != THRESHOLD), "]")
print("--------------------")
arm.rm_delete_robot_arm()运行指定末端动作 rm_run_tool_action
- 方法原型:
python
rm_run_tool_action(self, action_name: str) -> int:- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
action_name | str | 末端动作名称。 |
- 返回值:
| 参数 | 说明 |
|---|---|
| 0 | 成功。 |
| 1 | 控制器返回false,传递参数错误或机械臂状态发生错误。 |
| -1 | 数据发送失败,通信过程中出现问题。 |
| -2 | 数据接收失败,通信过程中出现问题或者控制器超时没有返回。 |
| -3 | 返回值解析失败,接收到的数据格式不正确或不完整。 |
| -4 | 三代控制器不支持该接口。 |
| -5 | 当前到位设备校验失败,即当前到位设备不为末端工具动作。 |
- 使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
print(arm.rm_run_tool_action("1"))
arm.rm_delete_robot_arm()删除指定末端动作 rm_delete_tool_action
- 方法原型:
python
rm_delete_tool_action(self, action_name: str) -> int:- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
action_name | str | 末端动作名称。 |
- 返回值:
| 参数 | 说明 |
|---|---|
| 0 | 成功。 |
| 1 | 控制器返回false,传递参数错误或机械臂状态发生错误。 |
| -1 | 数据发送失败,通信过程中出现问题。 |
| -2 | 数据接收失败,通信过程中出现问题或者控制器超时没有返回。 |
| -3 | 返回值解析失败,接收到的数据格式不正确或不完整。 |
| -4 | 三代控制器不支持该接口 |
- 使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
print(arm.rm_delete_tool_action("p"))
arm.rm_delete_robot_arm()保存动作到控制器 rm_save_tool_action
- 方法原型:
python
rm_save_tool_action(self, action_name: str, selected_array: list, array_size: int, array_type: int) -> int:- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
action_name | str | 末端动作名称。 |
selected_array | list | 保存数组的值。 |
array_size | int | 保存数组的大小。 |
array_type | int | 保存数字的类型(0-表示保存类型为hand_pos, 1-表示保存类型为hand_angle) |
- 返回值:
| 参数 | 说明 |
|---|---|
| 0 | 成功。 |
| 1 | 控制器返回false,传递参数错误或机械臂状态发生错误。 |
| -1 | 数据发送失败,通信过程中出现问题。 |
| -2 | 数据接收失败,通信过程中出现问题或者控制器超时没有返回。 |
| -3 | 返回值解析失败,接收到的数据格式不正确或不完整。 |
| -4 | 三代控制器不支持该接口 |
- 使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
print(arm.rm_save_tool_action("12", [1, 1, 1, 1, 1, 1] , 6 , 0))
arm.rm_delete_robot_arm()更新动作到控制器 rm_update_tool_action
- 方法原型:
python
rm_update_tool_action(self, action_name: str, new_name: str, selected_array: list[int], array_size: int, array_type: int) -> int:- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
action_name | str | 末端动作名称。 |
new_name | str | 更新后的末端动作名称。 |
selected_array | list[int] | 保存数组的值。 |
array_size | int | 保存数组的大小。 |
array_type | int | 保存数字的类型(0-表示保存类型为hand_pos。 1-表示保存类型为hand_angle) |
- 返回值:
| 参数 | 说明 |
|---|---|
| 0 | 成功。 |
| 1 | 控制器返回false,传递参数错误或机械臂状态发生错误。 |
| -1 | 数据发送失败,通信过程中出现问题。 |
| -2 | 数据接收失败,通信过程中出现问题或者控制器超时没有返回。 |
| -3 | 返回值解析失败,接收到的数据格式不正确或不完整。 |
| -4 | 三代控制器不支持该接口 |
- 使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
print(arm.rm_update_tool_action("121", "12", [2, 1, 1, 1, 1, 1 ] , 6 , 1))
arm.rm_delete_robot_arm()末端工具控制配置
设置末端工具角度跟随控制rm_set_hand_follow_angle()
设置跟随角度,最高50Hz的控制频率。
灵巧手:6个主动自由度,自由度1(大拇指弯曲)、自由度2(食指)、自由度3(中指)、自由度4(无名指)、自由度5(小指)、自由度6(大拇指旋转)。
二指夹爪:1 个主动自由度。
注意
如果要使用此功能,需要联系技术支持发送定制的末端工具(灵巧手/夹爪)固件升级包。
- 方法原型:
python
rm_set_hand_follow_angle(self, hand_angle: list[int], block: bool) -> int- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
hand_angle | List[int] | 设置自由度角度。 设置末端灵巧手各手指动作时, hand_angle表示手指角度数组,按照灵巧手厂商定义的角度做控制。例如,灵巧手角度的定义(单位:0.01 °):大拇指:0 ~ 7400;食指:0 ~ 8500;中指:0 ~ 8400;无名指:0 ~ 8500;小拇指:0 ~ 8400;大拇指偏摆:0 ~ 11000 |
block | bool | true:表示非阻塞模式,发送成功后返回,false:表示阻塞模式,接收设置成功指令后返回。 |
返回值:
函数执行的状态码:
0代表成功,其他错误码请参考API2错误代码。
使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
# 灵巧手角度跟随控制
print(arm.rm_set_hand_follow_angle([0,100,200,300,400,500], True))
arm.rm_delete_robot_arm()设置末端工具位置跟随控制rm_set_hand_follow_pos()
设置末端工具跟随位置,最高50Hz的控制频率。
灵巧手:6个主动自由度,自由度1(大拇指弯曲)、自由度2(食指)、自由度3(中指)、自由度4(无名指)、自由度5(小指)、自由度6(大拇指旋转)。
二指夹爪:1 个主动自由度。
注意
如果要使用此功能,需要联系技术支持发送定制的末端工具(灵巧手/夹爪)固件升级包。
- 方法原型:
python
rm_set_hand_follow_pos(self, hand_pos: list[int], block: bool) -> int- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
hand_pos | list[int] | 设置自由度位置。 设置末端二指夹爪自由度位置时, hand_pos 表示自由度位置数组,按照夹爪厂商定义的位置做控制。例如,二指夹爪自由度的定义:运动范围:0-120mm; 驱动器行程:0-12000 |
block | bool | true:表示非阻塞模式,发送成功后返回,false:表示阻塞模式,接收设置成功指令后返回。 |
返回值:
函数执行的状态码:
0代表成功,其他错误码请参考API2错误代码。
使用示例
python
from Robotic_Arm.rm_robot_interface import *
# 实例化RoboticArm类
arm = RoboticArm(rm_thread_mode_e.RM_TRIPLE_MODE_E)
# 创建机械臂连接,打印连接id
handle = arm.rm_create_robot_arm("192.168.1.18", 8080)
print(handle.id)
# 灵巧手位置跟随控制
print(arm.rm_set_hand_follow_pos([0,100,200,300,400,500], True))
arm.rm_delete_robot_arm()
