- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
作业运动控制接口
头文件:include/tl_interface.h
1. job_insert_moveJ - 作业里添加关节运动关节空间运动
方法:job_insert_moveJ(SOCKETFD socketFd, int line, MoveCmd moveCmd);
功能描述:在作业文件指定行插入一条关节空间运动(MoveJ)指令,需使用P 变量模式。
参数:
- socketFd:已连接的句柄。
- line:插入的位置行号。
- moveCmd:运动指令结构体MoveCmd,包含目标位置和运动参数
- targetPosType:设为 PosType::PType。
- targetPosName:点位变量名,如 "P0001"。
- coord:0(关节坐标系)。
- targetPosValue:std::vector<double>,长度至少6,存储目标角度(度)。
- velocity:速度百分比(1~100)。
- acc、dec:加速度/减速度百分比。
- pl:平滑度(0表示精确到达)。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
cmd = tl.MoveCmd()
cmd.targetPosType = tl.PosType.PType
cmd.targetPosName = "P0001"
cmd.coord = 0 # 关节坐标系
cmd.velocity = 40
cmd.acc = 10
cmd.dec = 10
cmd.pl = 0
cmd.targetPosValue = tl.VectorDouble([0.0] * 14)
ret = tl.job_insert_moveJ(socket_fd, 1, cmd)
if ret == 0:
print("[INFO] 作业文件插入MoveJ成功")
else:
print(f"[ERROR] 作业文件插入MoveJ失败,错误码:{ret}")
2. job_insert_moveL - 作业里添加关节运动笛卡尔空间直线运动
方法:job_insert_moveL(SOCKETFD socketFd, int line, MoveCmd moveCmd);
功能描述:插入笛卡尔空间直线运动(MoveL)指令。
参数:
- socketFd:已连接的句柄。
- line:插入的位置行号。
- moveCmd:运动指令结构体MoveCmd,包含目标位置和运动参数。
- targetPosType:设为 PosType::PType。
- targetPosName:点位变量名,如 "P0001"。
- coord:1(直角坐标系)。
- targetPosValue:X(mm),Y(mm),Z(mm),RX(rad),RY(rad),RZ(rad)X(mm),Y(mm),Z(mm),RX(rad),RY(rad),RZ(rad)。
- velocity:速度百分比(1~100)。
- acc、dec:加速度/减速度百分比。
- pl:平滑度(0表示精确到达)。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
cmd = tl.MoveCmd()
cmd.targetPosName = "P0002"
cmd.coord = 1 # 直角坐标系
cmd.velocity = 40
cmd.acc = 10
cmd.dec = 10
cmd.pl = 0
cmd.targetPosValue = tl.VectorDouble([280, 0.0, 380, 3.14, 0.0, 0.0])
ret = tl.job_insert_moveL(socket_fd, 2, cmd)
if ret == 0:
print("[INFO] 作业文件插入MoveL成功")
else:
print(f"[ERROR] 作业文件插入MoveL失败,错误码:{ret}")
3. job_insert_moveC - 作业里添加关节运动笛卡尔空间圆弧运动
方法:job_insert_moveC(SOCKETFD socketFd, int line, MoveCmd moveCmd);
功能描述:插入笛卡尔空间圆弧运动(MoveC)指令。通常需要连续插入两条 MoveC 指令,第一条为圆弧中间点,第二条为终点。
参数:
- socketFd:已连接的句柄。
- line:插入的位置行号。
- MoveCmd:运动指令结构体,包含目标位置和运动参数。
- targetPosType:设为 PosType::PType。
- targetPosName:点位变量名,如 "P0001"。
- coord:1(直角坐标系)。
- targetPosValue:为终点坐标,X(mm),Y(mm),Z(mm),RX(rad),RY(rad),RZ(rad)X(mm),Y(mm),Z(mm),RX(rad),RY(rad),RZ(rad)。
- velocity:速度百分比(1~100)。
- acc、dec:加速度/减速度百分比。
- pl:平滑度(0表示精确到达)。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
cmd = tl.MoveCmd()
cmd.targetPosName = "P0003"
cmd.coord = 2 # 工具坐标系
cmd.velocity = 40
cmd.acc = 10
cmd.dec = 10
cmd.pl = 0
cmd.targetPosValue = tl.VectorDouble([270, 0.0, 380, 3.14, 0.0, 0.0])
ret = tl.job_insert_moveC(socket_fd, 3, cmd)
if ret == 0:
print("[INFO] 作业文件插入MoveC成功")
else:
print(f"[ERROR] 作业文件插入MoveC失败,错误码:{ret}")
4. job_open - 打开指定作业文件
方法:job_open(SOCKETFD socketFd, const std::string& jobName);
功能描述:打开已存在的作业文件,使其成为当前激活程序(后续插入指令将写入该文件)。
参数:
- socketFd:已连接的句柄。
- jobName:作业文件名称。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
jobName = "TEST_PY"
ret = tl.job_open(socket_fd, jobName)
if ret == 0:
print("[INFO] 打开作业文件成功")
else:
print(f"[ERROR] 打开作业文件失败,错误码:{ret}")
5. job_create - 创建作业文件名
方法:job_create(SOCKETFD socketFd, const std::string& jobName);
功能描述:在控制器内新建一个空的作业文件(自动防止重名)。
参数:
- socketFd:已连接的句柄。
- jobName:作业文件名称。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----创建作业文件----
jobName = "TEST_PY"
print("[INFO] **********创建作业文件**********")
ret = job_create(socket_fd, jobName)
if ret != SUCCESS:
print("[ERROR] 创建作业文件失败,程序退出!")
return -1
print("[INFO] 创建作业文件成功")
6. job_get_all_jobfile_name - 获取全部作业文件名
方法:job_get_all_jobfile_name(SOCKETFD socketFd,std::vector<std::vector<std::string>>& robotsFile);
功能描述:获取控制器内所有作业文件列表(按机器人分组,通常只有一组)。
参数:
- socketFd:已连接的句柄。
- robotsFile:作业文件名称,二维数组,一维长度是4,对应4个机器人。
返回值:
- 0:成功
- 非 0:失败
使用示例:
import tl_interface as tl
# 建立连接
socket_fd = tl.connect_robot("192.168.1.13", "6001")
all_job_names = tl.VectorVectorString()
ret = tl.job_get_all_jobfile_name(socket_fd, all_job_names)
if ret == 0:
i = 1
for job_names in all_job_names:
for name in job_names:
print(f"作业文件 {i} 名称: {name}")
i += 1
else:
print(f"获取作业文件名失败,错误码:{ret}")
7. job_run - 启动指定作业文件
方法: job_run(SOCKETFD socketFd, const std::string& jobName);
功能描述:启动运行已打开的作业文件(该功能需要在运行模式下使用,调用该接口时,控制器会自动进行伺服模式切换)。
参数:
- socketFd:已连接的句柄。
- jobName:作业文件名称。
返回值:
- 0:成功
- 非 0:失败
使用示例:
# ----运行作业文件----
print("[INFO] **********运行作业文件**********")
jobName = "TEST_PY"
ret = job_run(socket_fd, jobName)
if ret != SUCCESS:
print("[ERROR] 运行作业文件失败,程序退出!")
return -1
print("[INFO] 运行作业文件成功")
print()
