工具手相关接口

头文件:include/tl_interface.h

1. get_tool_hand_number - 获取当前使用的工具手编号

方法:get_tool_hand_number(socket_fd, tool_num);

功能描述:获取当前使用的工具手编号。

参数:

  • socket_fd:已连接的句柄。
  • tool_num:输出参数,用于存储工具号的整数变量。

返回值:

  • 0:成功
  • 非 0:失败

使用示例:

Python
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:失败

使用示例:

Python
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:失败

使用示例:

Python
# 注意: 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:失败

使用示例:

Python
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:失败

使用示例:

Python
    # ----设置工具包络球参数----

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:失败

使用示例:

Python
"""获取工具包络球参数(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("")