信息查询接口

1. get_current_position - 获取当前位姿

方法: get_current_position(socket_fd, coord=0)

参数:

  • socket_fd:连接句柄
  • coord:坐标系类型(0=关节坐标,1=直角坐标)

返回值:

  • List[float]:位置数据数组

使用示例:

Python
# 关节坐标
joint = nrc.get_current_position(fd, coord=0)
print(f"关节角度: {joint}")    # [a1, a2, a3, a4, a5, a6, a7]

# 直角坐标
cart = nrc.get_current_position(fd, coord=1)
print(f"直角坐标: {cart}")      # [x, y, z, rx, ry, rz, 0]

2. get_joint_position - 获取指定关节直角坐标信息

方法: get_joint_position(socket_fd, axis_num)

参数:

  • socket_fd:连接句柄
  • axis_num:关节轴号

返回值:

  • List[float]:关节角度数组

使用示例:

Python
joint = nrc.get_joint_position(fd, axis_num=7)
print(f"关节角度: {joint}")

3. get_robot_running_state - 获取作业运行状态

方法: get_robot_running_state(socket_fd)

参数:

  • socket_fd:连接句柄

返回值:

  • int:运行状态码

使用示例:

Python
state = nrc.get_robot_running_state(fd)
print(f"运行状态码: {state}")

4. get_robot_dh_param - 获取DH参数(需结构体)

方法: get_robot_dh_param(socket_fd, dh_param)

参数:

  • socket_fd:连接句柄
  • dh_param:DH参数结构体(CRobotDHParam)

返回值:

  • int:0表示成功,非0表示失败

使用示例:

Python
import nrc_interface as nrc

# 连接机器人(6001端口)
fd = nrc.connect_robot("192.168.1.13", "6001")
if fd < 0:
    print("连接失败")
    exit(1)

# 创建DH参数结构体
dh = nrc.CRobotDHParam()

# 调用函数,传入结构体的引用
ret = nrc.get_robot_dh_param(fd, dh)
if ret == nrc.SUCCESS:
    print("DH参数获取成功")
    print(f"L1 = {dh.L1}")
    print(f"L2 = {dh.L2}")
    # ... 打印其他字段
else:
    print(f"获取失败,错误码: {ret}")

nrc.disconnect_robot(fd)

5. get_robot_joint_param - 获取关节参数

方法: get_robot_joint_param(socket_fd, joint_id, joint_param)

参数:

  • socket_fd:连接句柄
  • joint_id:关节轴号
  • joint_param:关节参数结构体(CRobotJointParam)

返回值:

  • int:0表示成功,非0表示失败

使用示例:

Python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
if fd < 0:
    print("连接失败")
    exit(1)

# 获取第1轴(J1)的关节参数
joint_param = nrc.CRobotJointParam()
ret = nrc.get_robot_joint_param(fd, 1, joint_param)

if ret == nrc.SUCCESS:
    print("关节参数获取成功:")
    print(f"减速比: {joint_param.reducRatio:.1f}")
    print(f"编码器分辨率: {joint_param.encoderResolution}")
    print(f"正限位: {joint_param.posSWLimit:.2f}°")
    print(f"负限位: {joint_param.negSWLimit:.2f}°")
    print(f"额定转速: {joint_param.ratedRotSpeed:.2f}°/s")
    print(f"最大转速: {joint_param.maxRotSpeed:.2f}°/s")
else:
    print(f"获取关节参数失败,错误码:{ret}")

nrc.disconnect_robot(fd)