实时运动控制接口

头文件:include/tl_interface.h

1. robot_movej - 关节空间运动到目标位姿

方法:robot_movej(SOCKETFD socketFd,MoveCmd moveCmd);

功能描述:立即下发关节角度数据,驱动机械臂实时运动到目标位置(在线点对点控制)。不依赖作业文件(该功能需要在示教模式下使用)。

参数:

  • socketFd:已连接的句柄。
  • moveCmd:运动指令结构体,包含目标位置和运动参数。
  • targetPosValue 点位数组,n个轴就赋值前n位数组,其余置0。
  • vel 速度,参数范围:0<vel≤100 单位 %。
  • coord 坐标系,参数范围:0≤coord≤3。
  • acc 加速度,参数范围:0<acc≤100。
  • dec 减速度,参数范围:0<dec≤100。
  • isSync 是否同步模式 true同步 false不同步。

返回值:

  • 0:成功
  • 非 0:失败

使用示例:注意使用时要先上电

Python
# ---- MoveJ运动控制 ----

print("[INFO]**********MoveJ运动控制**********")

cmd = MoveCmd()

cmd.targetPosType = PosType_PType

cmd.targetPosName = ""

cmd.coord = 0 # 关节坐标系

cmd.velocity = 40 # 关节速度百分比 (1,100]

cmd.acc = 10

cmd.dec = 10

cmd.pl = 0 # 平滑参数 [0,5]

cmd.targetPosValue = VectorDouble([

20.0, 10.0, -10.0,

0.0, 0.0, 0.0, 0.0]) # 关节坐标下单位为度

ret = robot_movej(socket_fd, cmd)

if ret != SUCCESS:

    print("[ERROR] MoveJ运动控制失败,程序退出!")

    return -1

# 等待运动到位

wait_motion_done(socket_fd, 30)

print("[INFO] MoveJ运动控制成功")

2. robot_movel - 笛卡尔空间直线运动到目标位姿

方法:robot_movel(SOCKETFD socketFd, MoveCmd moveCmd);

功能描述:在笛卡尔空间中,控制机械臂从当前位姿沿直线运动至目标位姿。(该功能需要在示教模式下使用)。

参数:

  • socketFd:已连接的句柄(机器人连接成功后返回的 ID)。
  • move_cmd:运动指令结构体,包含笛卡尔目标位姿及运动参数。
  • coord = 1(直角坐标系)。
  • targetPosValue 7维:X(mm),Y(mm),Z(mm),RX(rad),RY(rad),RZ(rad),0X(mm),Y(mm),Z(mm),RX(rad),RY(rad),RZ(rad),0。
  • vel 速度,参数范围:0<vel≤100 单位 %。
  • coord 坐标系,参数范围:0≤coord≤3。
  • acc 加速度,参数范围:0<acc≤100。
  • dec 减速度,参数范围:0<dec≤100。

返回值:

  • 0:成功
  • 非 0:失败

使用示例:注意使用时要先上电

Python
# ---- MoveL运动控制 ----

print("[INFO] **********MoveL运动控制**********")

cmd.targetPosName = ""

cmd.coord = 1 # 直角坐标系

cmd.targetPosValue = VectorDouble([

280, 90.0, 270,

3.14, 0.0, 0.0]) # 直角坐标下位移单位是mm,旋转单位是弧度

ret = robot_movel(socket_fd, cmd)

if ret != SUCCESS:

    print("[ERROR] MoveL运动控制失败,程序退出!")

    return -1

# 等待运动到位

wait_motion_done(socket_fd, 30)

print("[INFO] MoveL运动控制成功")

3. robot_go_home - 机器人回原点(home)

方法:robot_go_home(socketFd);

功能描述:回到设定的零点。

参数:

  • socketFd:已连接的句柄。

返回值:

  • 0:成功
  • 非 0:失败

使用示例:

Python
import tl_interface as tl

socket_fd = tl.connect_robot("192.168.1.13", "6001")

ret = tl.robot_go_home(socket_fd)

if ret == 0:

    print("机器人已回原点")

4. robot_go_to_reset_position - 机器人回到复位位置

方法:robot_go_to_reset_position(socketFd);

功能描述:回到控制器预设的复位点(若控制器未配置复位点,接口可能返回错误码)。

参数:

  • socketFd:已连接的句柄。

返回值:

  • 0:成功
  • 非 0:失败

使用示例:

Python
import tl_interface as tl

socket_fd = tl.connect_robot("192.168.1.13", "6001")

ret = tl.robot_go_to_reset_position(socket_fd)