信息查询接口

1. get_current_position - 获取机械臂当前坐标信息

方法: get_current_coordinate_system(socket_fd: int)

功能描述: 获取机械臂控制器当前激活的工作坐标系类型。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。

返回值:

  • int:坐标系类型编号或错误状态码
    • 0:关节/基座坐标系
    • 1:直角坐标系
    • 2:工具坐标系
    • 3:用户坐标系
    • -1:获取失败。句柄无效,或底层接口返回错误码,或通信过程触发异常

使用示例:

Python
import nrc_interface as nrc

# 1. 调用接口获取坐标系状态
coord_placeholder = 0
ret_code, current_coord = nrc.get_current_coord(socket_fd, coord_placeholder)

# 2. 严格校验状态码
if ret_code != 0:
    print("获取当前工作坐标系失败")
    return -1

print(f"获取当前工作坐标系成功:{current_coord}")
return current_coord

2. get_robot_running_state - 获取机器人运行状态

方法: get_robot_running_state(socket_fd: int)

功能描述: 获取机械臂控制器当前作业文件的运行状态。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。

返回值:

  • int:运行状态码或错误状态码
    • 0:停止状态
    • 1:暂停状态
    • 2:运行状态
    • -1:获取失败。句柄无效,或底层接口返回错误,或触发通信异常

使用示例:

Python
import nrc_interface as nrc

# 1. 调用底层接口(传入 0 占位),接收返回的列表/元组数据
ret = nrc.get_robot_running_state(socket_fd, 0)

# 2. 解析并校验底层返回的数据格式
if isinstance(ret, (list, tuple)) and len(ret) >= 2:
    status_code, run_state = ret[0], ret[1]

    # 3. 校验状态码并返回实际运行状态
    if status_code == 0:
        print(f"获取运行状态成功:{run_state}")
        return int(run_state)
    else:
        print("获取运行状态失败")
        return -1
else:
    print("获取运行状态失败,数据格式非法")
    return -1

3. get_joint_position - 获取当前各关节直角坐标

方法: get_joint_position(socket_fd: int, dof: int)

功能描述: 获取机械臂当前各关节的实时位置数据(角度或距离值)。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。
  • dof:机械臂的自由度(轴数,例如 6),整型格式(int)。

返回值:

  • list:关节位置数据列表
    • [value1, value2, ...]:获取成功。返回包含各轴当前位置数值的列表(保留3位小数)。
    • [](空列表):获取失败。句柄无效、轴数配置错误、底层接口返回非 0 错误码或触发通信异常。

使用示例:

Python
import nrc_interface as nrc

# 1. 借助 MoveCmd 对象作为安全的内存容器并根据自由度分配空间
moveCmd = nrc.MoveCmd()
moveCmd.targetPosValue.resize(dof)

# 2. 调用底层接口获取数据
ret = nrc.get_joint_position(socket_fd, dof, moveCmd.targetPosValue)

# 3. 校验执行结果
if ret == 0:
    angles = [round(a, 3) for a in list(moveCmd.targetPosValue)]
    print(f"获取关节位置成功: {angles}")
    return angles
else:
    print("获取关节位置失败")
    return []

4. get_robot_dh_param - 获取机械臂DH参数

方法: get_robot_dh_param(socket_fd: int)

功能描述: 获取机械臂控制器当前配置的 DH 模型几何参数与运行模式配置信息。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。

返回值:

  • dict / None:DH 参数字典或空拦截
    • dict:获取成功。返回包含连杆长度(L1~L6)、动态限制最大值(dynamicLimit_max)、三轴方向(threeAxisDirection)及正倒立安装模式(upsideDown)的结构化字典。
    • None:获取失败。句柄无效、底层接口返回非 0 错误码或触发通信异常。

使用示例:

Python
import nrc_interface as nrc

# 1. 实例化官方定义的数据接收结构体容器
dh_param = nrc.RobotDHParam()

# 2. 调用底层接口获取数据并填充容器
ret = nrc.get_robot_dh_param(socket_fd, dh_param)

# 3. 校验执行结果并将其转化为 Python 字典返回
if ret == 0:
    print("获取DH参数成功")
    return {
        "L1": dh_param.L1, "L2": dh_param.L2, "L3": dh_param.L3,
        "L4": dh_param.L4, "L5": dh_param.L5, "L6": dh_param.L6,
        "dynamicLimit_max": dh_param.dynamicLimit_max,
        "threeAxisDirection": dh_param.threeAxisDirection,
        "upsideDown": dh_param.upsideDown
    }
else:
    print("获取DH参数失败")
    return None

5. get_library_version - 读取机械臂软件信息

方法: get_library_version()

功能描述: 获取本地扩展软件开发包(SDK)库文件的版本信息。

参数:

  • 无

返回值:

  • str:SDK 版本号字符串
    • "版本号":获取成功。返回当前库文件的版本标识字符串。
    • ""(空字符串):获取失败。库文件异常或未正确加载。

使用示例:

Python
import nrc_interface as nrc

# 1. 直接调用本地接口获取版本字符串
version = nrc.get_library_version()

# 2. 校验结果是否有效
if version:
    print(f"SDK 版本获取成功: {version}")
    return version
else:
    print("获取库版本失败")
    return ""

6. get_robot_joint_param - 获取指定关节配置参数

方法: get_joint_param(socket_fd: int, joint_id: int, param)

功能描述: 获取机械臂指定轴号的关节核心物理参数(如减速比、额定转速、最大加速度、电机方向等),并在控制台直接打印参数详情。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。
  • joint_id:机械臂关节轴号(通常为 1 ~ 6),整型格式(int)。

返回值:

  • bool:执行结果布尔值
    • True:获取成功。底层接口返回 0,且已在控制台成功打印关节参数。
    • False:获取失败。句柄无效、轴号越界、底层接口返回非 0 错误码或触发通信异常。

使用示例:

Python
import nrc_interface as nrc

# 1. 实例化官方定义的数据接收结构体容器
param = nrc.RobotJointParam()

# 2. 调用底层接口获取指定关节数据
ret = nrc.get_robot_joint_param(socket_fd, joint_id, param)

# 3. 校验执行结果并返回布尔状态
if ret == 0:
    print(f"获取关节 {joint_id} 参数成功: 减速比={param.reducRatio}...")
    return True
else:
    print(f"获取关节 {joint_id} 参数失败")
    return False

7. get_tool_hand_number - 获取当前工具手编号

方法: get_tool_hand_number(socket_fd: int)

功能描述: 获取机械臂控制器当前激活并使用的工具手(Tool0 ~ ToolN)的编号。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。

返回值:

  • int:工具手编号或错误状态码
    • 0 ~ N:获取成功。返回当前正在使用的工具手坐标系编号(如 0 代表 Tool0)。
    • -1:获取失败。句柄无效,或底层接口返回错误,或触发通信异常。

使用示例:

Python
import nrc_interface as nrc

# 1. 调用底层接口(传入 0 占位),接收返回的列表/元组数据
ret = nrc.get_tool_hand_number(socket_fd, 0)

# 2. 解析并校验底层返回的数据格式
if isinstance(ret, (list, tuple)) and len(ret) >= 2:
    status, tool_num = ret[0], ret[1]

    # 3. 校验状态码并返回实际工具手编号
    if status == 0:
        print(f"成功: 当前工具手编号 -> {tool_num}")
        return int(tool_num)
    else:
        print("获取工具手编号失败")
        return -1
else:
    print("获取工具手编号失败")
    return -1

8. get_joint_temperature - 获取各关节电机温度

方法: get_joint_temperature(socket_fd: int, joint_temperature)

功能描述: 获取机械臂当前各关节电机的实时温度数据。

参数:

  • socket_fd:已连接的机械臂控制器句柄,整型格式(int)。

返回值:

  • list:关节温度数据列表
    • [value1, value2, ...]:获取成功。返回包含各轴当前电机温度数值的列表(单位:℃,保留 2 位小数)。
    • []:获取失败。句柄无效、底层接口返回非 0 错误码或触发通信异常。

使用示例:

Python
import nrc_interface as nrc

# 1. 实例化官方定义的动态数组容器以接收数据
joint_temperature = nrc.VectorDouble()

# 2. 调用底层接口获取温度数据
ret = nrc.get_joint_temperature(socket_fd, joint_temperature)

# 3. 校验执行结果并转化为 Python 列表返回
if ret == 0:
    temp_list = [round(t, 2) for t in list(joint_temperature)]
    print(f"获取关节温度成功: {temp_list}")
    return temp_list
else:
    print("获取关节温度失败")
    return []