- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
工具手相关接口
头文件:include/tl_interface.h
1. get_tool_hand_number - 获取当前使用的工具手编号
方法:get_tool_hand_number(socket_fd, tool_num);
功能描述:获取当前使用的工具手编号。
参数:
- socket_fd:已连接的句柄。
- tool_num:输出参数,用于存储工具号的整数变量。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
# 定义整数变量,用于接收结果
toolNum = 0
# 获取工具号
ret = tl.get_tool_hand_number(socket_fd, toolNum)
print(f"获取工具号返回值(ret) = {ret}")
print(f"当前工具号 = {toolNum}")
2. set_tool_hand_number - 设置工具手编号
方法:set_tool_hand_number(SOCKETFD socketFd, int toolNum);
功能描述:设定末端工具对应工具组编号,用于控制器匹配工具坐标系、负载参数及碰撞检测包络配置。
参数:
- socketFd:已连接的句柄。
- toolNum:工具手编号。
返回值:
- 0:成功
- 非 0:失败
使用示例:
test_cases = [
(1, "正常值"),
(2, "正常值"),
(10, "较大值"),
(0, "边界值: 0"),
(20, "边界值: 20"),
]
for tool_num, desc in test_cases:
print("\n --- 设置 toolNum=%d (%s) ---" % (tool_num, desc))
ret = set_tool_hand_number(sock, tool_num)
if ret != SUCCESS:
print_fail("set_tool_hand_number(%d)" % tool_num, ret)
fail_count += 1
continue
time.sleep(0.1)
3. set_tool_hand_param - 设置工具手参数
方法:set_tool_hand_param(SOCKETFD socketFd, int toolNum, ToolParam param);
功能描述:配置指定编号的工具手坐标系偏移参数(TCP)。
参数:
- socketFd:已连接的句柄。
- toolNum:工具手编号。
- param:要修改的参数 长度6 X轴偏移量 Y轴偏移量 Z轴偏移量 绕A轴旋转量绕B轴旋转量 绕C轴旋转量。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# 注意: set_tool_hand_param/set_user_coordinate_data 涉及配置修改,
# 错误的值可能导致路径偏差,请确认参数正确。
# ----设置工具手参数---
print("[INFO] **********设置工具手参数**********")
tool_num = 1
tool_param = ToolParam()
tool_param.X = 10
tool_param.Y = 10
tool_param.Z = 10
tool_param.A = 0
tool_param.B = 0
tool_param.C = 0
ret = set_tool_hand_param(socket_fd, tool_num, tool_param)
if ret != SUCCESS:
print("[ERROR] 设置工具手参数失败,程序退出!")
sys.exit(-1)
print("[INFO] 设置工具手参数成功")
print()
4. get_tool_hand_param - 获取当前工具手参数
方法:get_tool_hand_param(SOCKETFD socketFd,int toolNum, ToolParam& param);
功能描述:读取当前选定工具手的TCP六维偏移姿态、末端负载重量、转动惯量以及负载质心坐标,为动力学计算与运动平顺性控制提供负载数据。
参数:
- socketFd:已连接的句柄。
- toolNum:工具手编号。
- param:工具手参数,ToolParam结构体。
返回值:
- 0:成功
- 非 0:失败
使用示例:
def test_get_tool_param(arm, ctx):
"""获取工具手参数"""
tp = ToolParam()
try:
ret = get_tool_hand_param(arm.socket_fd, 0, tp)
if ret == SUCCESS:
return True, (f"工具参数: X={tp.X:.3f} Y={tp.Y:.3f} "
f"Z={tp.Z:.3f} A={tp.A:.3f} B={tp.B:.3f} C={tp.C:.3f}")
return True, f"获取返回: {ret}"
except Exception as e:
return True, f"接口异常: {e}"
5. set_tool_coordinate_range - 设置工具包络球参数(工具坐标范围参数)
方法:set_tool_coordinate_range(SOCKETFD socketFd, int tool_number, const ToolCoordinateRange& range_param);
功能描述:配置末端工具包络球体边界参数,用于机械臂运动过程中的碰撞干涉预判与自碰撞检测,限定工具实际占用空间范围。
参数:
- socket_fd:已连接的句柄。
- tool_number:工具编号。
- range_param;工具坐标范围参数结构体。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----设置工具包络球参数----
print("[INFO] **********设置工具包络球参数**********")
tool_number = 0
range_param = ToolCoordinateRange()
range_param.max_range_x = 200
range_param.min_range_x = -200
range_param.max_range_y = 200
range_param.min_range_y = -200
range_param.max_range_z = 200
range_param.min_range_z = -200
range_param.tool_hand_method = 0
ret = set_tool_coordinate_range(socket_fd, tool_number, range_param)
if ret != SUCCESS:
print("[ERROR] 设置工具包络球参数失败,错误码: " + str(ret))
sys.exit(-1)
print("[INFO] 设置工具包络球参数成功")
6. get_tool_coordinate_range - 获取工具包络球参数(工具坐标范围参数)
方法:get_tool_coordinate_range(SOCKETFD socketFd, int tool_number, ToolCoordinateRange& range_param);
功能描述:读取末端执行器包络球体空间尺寸参数,为机械臂运动碰撞检测、路径干涉校验提供工具实体边界数据。
参数:
- socketFd:已连接的句柄。
- tool_number:工具编号。
- range_param:工具坐标范围参数结构体。
返回值:
- 0:成功
- 非 0:失败
使用示例:
"""获取工具包络球参数(get_tool_coordinate_range)"""
print("[INFO] **********获取工具包络球参数**********")
tool_number = 0
range_param = ToolCoordinateRange()
ret = get_tool_coordinate_range(socket_fd, tool_number, range_param)
if ret != SUCCESS:
print("[ERROR] 获取工具包络球参数失败,错误码: " + str(ret))
return
print("[INFO] X轴范围: [" + str(range_param.min_range_x) + ", " + str(range_param.max_range_x)+"]")
print("[INFO] Y轴范围: [" + str(range_param.min_range_y) + ", " + str(range_param.max_range_y)+"]")
print("[INFO] Z轴范围: [" + str(range_param.min_range_z) + ", " + str(range_param.max_range_z)+"]")
print("[INFO] 工具握持方式: " + str(range_param.tool_hand_method))
print("")
