- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
坐标系与用户坐标管理接口
头文件:include/tl_interface.h
1. set_user_coordinate_data - 设置用户坐标
方法:set_user_coordinate_data(SOCKETFD socketFd,int userNum, std::vector<double> pos);
功能描述:标定用户坐标。
参数:
- socketFd:已连接的句柄。
- userNum:用户坐标系编号。
- pos:坐标系数据结构体。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----配置用户坐标系----
print("[INFO] **********配置用户坐标系**********")
userNum = 1
user_coord = [10, 20, 30, 0, 0, 0, 0]
ret = set_user_coordinate_data(socket_fd, userNum, user_coord)
if ret != SUCCESS:
print("[ERROR] 配置用户坐标系失败,程序退出!")
sys.exit(-1)
print("[INFO] 配置用户坐标系成功")
print()
2. set_user_coord_number - 设置用户坐标编号
方法:set_user_coord_number(SOCKETFD socketFd, int userNum);
参数:
- socketFd:已连接的句柄。
- userNum:用户坐标系编号。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
# 设置用户坐标编号
coord_num = 1
# ret = tl.set_user_coord_number(socket_fd, coord_num)
# if ret == 0:
# print(f"用户坐标编号 {coord_num} 设置成功")
# else:
# print(f"用户坐标编号设置失败,错误码:{ret}")
print("设置用户坐标编号接口使用示例")
print(f"目标坐标编号: {coord_num}")
print("请参考具体SDK文档实现用户坐标编号设置")
3. get_user_coord_para - 获取当前使用的用户坐标的参数
方法:get_user_coord_para(SOCKETFD socketFd,int userNum,std::vector<double>& pos);
功能描述:读取当前激活工件坐标系的原点偏移与欧拉旋转姿态参数。
参数:
- socketFd:已连接的句柄。
- userNum:用户坐标编号。
- pos 用户坐标参数。
返回值:
- 0:成功
- 非 0:失败
使用示例:
def test_get_user_coord_para(arm, ctx):
"""获取用户坐标参数"""
pos = VectorDouble()
ret = get_user_coord_para(arm.socket_fd, 0, pos)
if ret == SUCCESS:
values = [pos[i] for i in range(min(6, len(pos)))]
return True, f"用户坐标参数: {print_vector(values)}"
return True, f"获取返回: {ret}"
4. get_user_coord_number - 获取当前使用的用户坐标编号
方法:get_user_coord_number(SOCKETFD socketFd, int& userNum);
功能描述:读取控制器当前生效的工件坐标系索引号。
参数:
- socketFd:已连接的句柄。
- userNum:用户坐标编号。
返回值:
- 0:成功
- 非 0:失败
使用示例:
def test_get_user_coord_number(arm, ctx):
"""获取当前用户坐标编号"""
num = -1
ret, num = get_user_coord_number(arm.socket_fd, num)
if ret == SUCCESS:
return True, f"用户坐标编号: {num}"
return True, f"获取返回: {ret}"
5. get_current_coord - 获取当前工作坐标系
方法:get_current_coord(SOCKETFD socketFd, int& coord);
功能描述:获取机器人当前坐标系。
参数:
- socketFd:已连接的句柄。
- coord:输出参数,0:关节 1:直角 2:工具 3:用户。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----获取当前工作坐标系----
print("[INFO] **********获取当前工作坐标系**********")
coord = -1
ret, coord = get_current_coord(socket_fd, coord)
if ret != SUCCESS:
print("[ERROR] 获取当前工作坐标系失败,程序退出!")
sys.exit(-1)
print("[INFO] 当前坐标系编号为:" + str(coord))
6. set_current_coord - 切换示教运动坐标系
方法:set_current_coord(SOCKETFD socketFd, int coord);
功能描述:设置机器人当前坐标系。
参数:
- socketFd:已连接的句柄。
- coord:坐标系类型。
- 0:关节坐标系。
- 1:直角坐标系。
- 2:工具坐标系。
- 3:用户坐标系。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
# 设置当前坐标系为关节坐标系
coord = 0
ret = tl.set_current_coord(socket_fd, coord)
print(f"设置当前坐标系返回值(ret) = {ret}")
7. calibration_oxy - 三点法自动设置用户坐标系
方法:calibration_oxy(SOCKETFD socketFd, int userNum, std::string xyo);
功能描述:通过输入原点、X 轴点、Y 轴点三组坐标,以三点法计算生成工件用户坐标系。
参数:
- socketFd:已连接的句柄。
- userNum:用户坐标编号。
- xyo:值 'X' 'Y' 'O'。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----三点法自动设置用户坐标系----
print("[INFO] **********三点法自动设置用户坐标系**********")
print("[INFO] 请将机械臂移动到用户坐标系原点O后按Enter键继续...")
input()
ret = calibration_oxy(socket_fd, 1, "O")
if ret != SUCCESS:
print("[ERROR] 标定原点O失败,错误码: " + str(ret))
sys.exit(-1)
print("[INFO] 请将机械臂移动到X轴正方向上一点后按Enter键继续...")
input()
ret = calibration_oxy(socket_fd, 1, "X")
if ret != SUCCESS:
print("[ERROR] 标定X轴方向点失败,错误码: " + str(ret))
sys.exit(-1)
print("[INFO] 请将机械臂移动到XY平面内Y轴正方向上一点后按Enter键继续...")
input()
ret = calibration_oxy(socket_fd, 1, "Y")
if ret != SUCCESS:
print("[ERROR] 标定Y轴方向点失败,错误码: " + str(ret))
sys.exit(-1)
ret = calculate_user_coordinate(socket_fd, 1)
if ret != SUCCESS:
print("[ERROR] 计算用户坐标系失败,错误码: " + str(ret))
sys.exit(-1)
print("[INFO] 三点法标定用户坐标系成功")
8. calculate_user_coordinate - 计算用户坐标
方法:calculate_user_coordinate(socketFd, userNumber);
功能描述:计算用户坐标。
参数:
- socketFd:已连接的句柄。
- userNumber:用户坐标编号。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
socket_fd = tl.connect_robot("192.168.1.13", "6001")
ret = tl.calculate_user_coordinate(socket_fd, 1)
9. get_target_coord_pos_value - 获取指定坐标下的位置
方法:get_target_coord_pos_value(socketFd, name, targetCoord, targetPos);
功能描述:获取指定点位在目标坐标系下的位置。
参数:
- socketFd:已连接的句柄。
- name:点位名(P 点、GP 点、E 点、GE 点),如 "GP0001"。
- targetCoord:目标坐标系,0 关节、1 基坐标、2 工具、3 用户。
- targetPos:输出参数,14 位点位数组。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
socket_fd = tl.connect_robot("192.168.1.13", "6001")
target_pos = VectorDouble()
ret = tl.get_target_coord_pos_value(socket_fd, "GP0001", 0, target_pos)
10. get_local_pos_p_value - 获取本地位置变量 P 值
方法:get_local_pos_p_value(socketFd, name, pos);
功能描述:获取局部 P 点。
参数:
- socketFd:已连接的句柄。
- name:点位名,范围 P0001 - P9999。
- pos:输出参数,14 位点位数组。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
socket_fd = tl.connect_robot("192.168.1.13", "6001")
pos = VectorDouble()
ret = tl.get_local_pos_p_value(socket_fd, "P0001", pos)
11. set_default_cartesian_params - 设置笛卡尔参数为默认值
方法:set_default_cartesian_params(SOCKETFD socketFd);
功能描述:设置机械臂末端的笛卡尔参数为默认值。
参数:
- socketFd:已连接的句柄。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----设置机械臂末端参数为默认值----
print("[INFO] **********设置机械臂末端参数为默认值**********")
ret = set_default_cartesian_params(socket_fd)
if ret != SUCCESS:
print("[ERROR] 设置机械臂末端参数为默认值失败,错误码: " + str(ret))
sys.exit(-1)
print("[INFO] 设置机械臂末端参数为默认值成功")
