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 []