Skip to content
🤖 AI 助手 / 自动化工具:先读 《AI 助手先读》 《Agent 开发指引》 《生成前信息采集清单》;机器可读入口 /llms.txt;技能包(SKILL)直链:SKILL.md

一、基础连接与系统接口(Python) ​

本页对应 C++ 版。函数名与参数顺序与 C++ 完全一致(Python SDK 由 C++ 经 SWIG 生成),差异只在两处:

  1. 返回值形态:C++ 用引用参数回填数据;Python 的返回形态由 SWIG 绑定决定,逐接口实测,不按类型推断。
  2. 少数接口在 Python 中不可直接调用(绑定缺陷),页面内已逐个标注。

本页共 162 个接口,其中 162 个在 Python SDK 中存在。


1.1 连接管理 ​

get_library_version ​

获取库版本信息。

python
def get_library_version():

返回值:str。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.get_library_version()
print(ret)

C++ 侧返回值描述:库版本相关信息字符串。


connect_robot ​

连接机器人控制器。同步方式,函数会阻塞直到返回连接结果。

python
def connect_robot(ip, port):

返回值:int —— socket 文件描述符(>0 成功,<=0 失败)。该接口会发起真实网络连接,本文档未做在线实测,按 C++ 语义描述。

参数说明(与 C++ 一致):

参数类型输入/输出说明
ipconst std::string&输入控制器 IP 地址,如 "192.168.1.13"
portconst std::string&输入端口号,如 "6001"

C++ 侧返回值描述:SOCKETFD(int)—— 连接成功返回 socket 文件描述符;-1 表示连接失败。


disconnect_robot ​

断开与控制器连接。

python
def disconnect_robot(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.disconnect_robot(fd)
print(ret)

get_connection_status ​

获取控制器连接状态。

python
def get_connection_status(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.get_connection_status(fd)
print(ret)

set_reconnect ​

设置是否开启断开后自动重连功能,默认关闭。

python
def set_reconnect(socketFd, reconnect):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。


set_reconnect_callback ​

设置重连成功后的回调函数。

python
def set_reconnect_callback(socketFd, function):

返回值:未实测(该接口需要真实控制器环境),语义同 C++。

自动重连的三个要点

  • set_reconnect 默认关闭:不显式打开,断线后不会重连,后续调用会一路返回 -2。
  • 回调是 C 函数指针 void(*)(),在重连成功后触发。回调里不要做耗时操作、也不要直接下发运动命令。
  • 重连回来不要假设机器人状态没变:伺服状态、运行模式、队列模式都可能已被控制器复位。先读 get_servo_state / get_current_mode / queue_motion_get_status,确认后再继续下发。

1.2 消息通讯 ​

send_message ​

向控制器发送一条自定义消息。

python
def send_message(socketFd, messageID, message):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
messageIDint消息 ID
messageconst std::string&消息内容

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


recv_message ​

注册消息接收回调,当收到控制器消息时触发。

python
def recv_message(*args):

返回值:未实测(该接口需要真实控制器环境),语义同 C++。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
callbackvoid()(int, const char)回调函数,参数为消息 ID 和消息内容

1.3 伺服控制 ​

set_axis_sdo ​

设置伺服命令字(SDO,Service Data Object)。用于直接向伺服驱动器写入 CANopen SDO 对象字典数据。

python
def set_axis_sdo(socketFd, axisNum, index, subindex, cmdvalue, size):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
axisNumint机器人的轴编号
indexunsigned int命令字编码(对象字典索引)
subindexunsigned int命令字子编码(对象字典子索引)
cmdvalueint要设置进去的值
sizeunsigned int命令字对应的值的字节数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_robots_parallel ​

设置多机器人并行模式。

python
def set_robots_parallel(socketFd, open):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
openbooltrue=开启并行,false=关闭

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


clear_error / clear_error_robot ​

伺服清错。

clear_error

python
def clear_error(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.clear_error(fd)
print(ret)

clear_error_robot

python
def clear_error_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.clear_error_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。

注意

出错前如果处于伺服运行状态,清错后需要手动进行下电操作,释放控制器的占用状态才可以继续上电(清错后不能直接上电,先下电再上电)。


set_servo_state / set_servo_state_robot ​

设置伺服状态(停止/就绪)。

set_servo_state

python
def set_servo_state(socketFd, state):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_servo_state_robot

python
def set_servo_state_robot(socketFd, robotNum, state):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
stateint0=停止,1=就绪

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。

注意

  • 设置伺服就绪前应确保系统没有错误(先调用 clear_error)
  • 该函数只有伺服状态为 0(停止)或 1(就绪)时调用生效,状态为 2(报警)或 3(运行)时不能直接设置

get_servo_state / get_servo_state_robot ​

获取伺服状态。

get_servo_state

python
def get_servo_state(socketFd, status):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_servo_state(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_servo_state_robot

python
def get_servo_state_robot(socketFd, robotNum, status):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_servo_state_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
statusint&输出参数:0=停止,1=就绪,2=报警,3=运行

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_servo_poweron / set_servo_poweron_robot ​

机器人上电。

set_servo_poweron

python
def set_servo_poweron(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.set_servo_poweron(fd)
print(ret)

set_servo_poweron_robot

python
def set_servo_poweron_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.set_servo_poweron_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。

注意

调用该函数前需要先调用 set_servo_state(fd, 1) 将伺服设置为就绪状态;上电成功后调用 get_servo_state 返回 3(运行状态)。该函数只有伺服状态为 1(就绪)时调用生效。


set_servo_poweroff / set_servo_poweroff_robot ​

机器人下电。

set_servo_poweroff

python
def set_servo_poweroff(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.set_servo_poweroff(fd)
print(ret)

set_servo_poweroff_robot

python
def set_servo_poweroff_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.set_servo_poweroff_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。

注意

下电成功后调用 get_servo_state 返回 1(就绪状态)。该函数只有伺服状态为 3(运行)时调用生效。


上下电失败排查(RECEIVE_FAILED) ​

现象:set_servo_state(fd, 1) 返回成功,但 set_servo_poweron / set_servo_poweroff(含 _robot 变体)返回 RECEIVE_FAILED。

排查顺序(都用只读 / 可逆手段)

假设怎么验判定
上一步未下电、控制器被占用按顺序重跑:clear_error →(若状态为 3 则下电)→(若非 0 则置 0)→ 置 1 → 上电若仍 RECEIVE_FAILED → 不是占用问题
当前模式不对在示教 / 远程 / 运行三种模式下各试一次 set_servo_poweroff三种模式都失败 → 与模式无关
使能方式为硬件触发读 JSON 命令字 0x3034返回 mode=0(软件触发)→ 不是该原因
该命令未实现用不存在的机器人编号(如 robot=2)发同一命令返回"参数错误" → 命令已被实现且会被应答,说明是"不被应答"而非"未实现"
只读接口是否也大面积不应答批量调用只读接口实测仅 get_robot_configuration 不应答,其余正常 → 可判定 RECEIVE_FAILED ≈ 该命令在本机固件上不被应答


1.4 位置与状态查询 ​

get_current_position / get_current_position_robot ​

获取机器人当前位置。

get_current_position

python
def get_current_position(socketFd, coord, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_current_position_robot

python
def get_current_position_robot(socketFd, robotNum, coord, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint坐标系:0=关节,1=直角,2=工具,3=用户
posstd::vector<double>&输出参数,存储点位数据,长度 7

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_joint_position / get_joint_position_robot ​

获取机器人指定关节(axisNum)对应的点位数据(24.03 版本专用)。

不要凭名字猜语义:先用小探针比较 get_joint_position(axisNum) 与 get_current_position(coord=0/1) 的返回值,确认口径后再用于业务。

get_joint_position

python
def get_joint_position(socketFd, axisNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_joint_position_robot

python
def get_joint_position_robot(socketFd, robotNum, axisNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisNumint指定需要查询的关节
posstd::vector<double>&输出参数,存储点位数据,长度 7

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_current_extra_position / get_current_extra_position_robot ​

获取机器人外部轴当前位置。

get_current_extra_position

python
def get_current_extra_position(socketFd, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_pos = nrc.VectorDouble()
ret = nrc.get_current_extra_position(fd, out_pos)
print(ret, list(out_pos))    # 容器用 list() 读取

get_current_extra_position_robot

python
def get_current_extra_position_robot(socketFd, robotNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_pos = nrc.VectorDouble()
ret = nrc.get_current_extra_position_robot(fd, 1, out_pos)
print(ret, list(out_pos))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posstd::vector<double>&输出参数,点位数组,长度 5

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_current_positon_and_extra_position / get_current_positon_and_extra_position_robot ​

获取机器人和外部轴的当前位置。

get_current_positon_and_extra_position

python
def get_current_positon_and_extra_position(socketFd, coord, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_current_positon_and_extra_position_robot

python
def get_current_positon_and_extra_position_robot(socketFd, robotNum, coord, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint坐标系:0=关节,1=直角,2=工具,3=用户
posstd::vector<double>&输出参数,点位数组,长度 12(前 7 位机器人,后 5 位外部轴)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_robot_running_state / get_robot_running_state_robot ​

获取机器人运行状态。

get_robot_running_state

python
def get_robot_running_state(socketFd, status):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_robot_running_state(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_robot_running_state_robot

python
def get_robot_running_state_robot(socketFd, robotNum, status):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_robot_running_state_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
statusint&输出参数:0=停止,1=暂停,2=运行

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.5 速度与模式控制 ​

set_speed / set_speed_robot ​

设置当前模式的速度(示教/运行/远程三种模式)。

set_speed

python
def set_speed(socketFd, speed):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_speed_robot

python
def set_speed_robot(socketFd, robotNum, speed):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
speedint速度,范围 0<speed≤100

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_speed / get_speed_robot ​

获取当前模式的速度。

get_speed

python
def get_speed(socketFd, speed):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_speed(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_speed_robot

python
def get_speed_robot(socketFd, robotNum, speed):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_speed_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
speedint&输出参数,当前速度

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_current_coord / set_current_coord_robot ​

设置机器人当前坐标系。

set_current_coord

python
def set_current_coord(socketFd, coord):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_current_coord_robot

python
def set_current_coord_robot(socketFd, robotNum, coord):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint坐标系:0=关节,1=直角,2=工具,3=用户

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_current_coord / get_current_coord_robot ​

获取机器人当前坐标系。

get_current_coord

python
def get_current_coord(socketFd, coord):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_current_coord(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_current_coord_robot

python
def get_current_coord_robot(socketFd, robotNum, coord):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_current_coord_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint&输出参数,坐标系:0=关节,1=直角,2=工具,3=用户

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_current_mode / set_current_mode_robot ​

设置机器人当前模式。

set_current_mode

python
def set_current_mode(socketFd, mode):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_current_mode_robot

python
def set_current_mode_robot(socketFd, robotNum, mode):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
modeint模式:0=示教,1=远程,2=运行

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_current_mode / get_current_mode_robot ​

获取机器人当前模式。

get_current_mode

python
def get_current_mode(socketFd, mode):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_current_mode(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_current_mode_robot

python
def get_current_mode_robot(socketFd, robotNum, mode):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_current_mode_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
modeint&输出参数,模式:0=示教,1=远程,2=运行

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_robot_type / get_robot_type_robot ​

获取机器人类型。

get_robot_type

python
def get_robot_type(socketFd, type):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_robot_type(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_robot_type_robot

python
def get_robot_type_robot(socketFd, robotNum, type):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_robot_type_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
typeint&输出参数,机器人类型:1=六轴串联多关节,2=四轴 SCARA,3=四轴码垛,4=四轴串联多关节,5=单轴,6=五轴串联多关节,7=六轴协作,8=二轴 SCARA,9=三轴 SCARA,10=三轴直角,11=三轴异形,12=七轴串联多关节,13=SCARA 异形一,14=四轴码垛丝杆

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.7 用户坐标 ​

set_user_coord_number / set_user_coord_number_robot ​

设置用户坐标编号。

set_user_coord_number

python
def set_user_coord_number(socketFd, userNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_user_coord_number_robot

python
def set_user_coord_number_robot(socketFd, robotNum, userNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_user_coord_number / get_user_coord_number_robot ​

获取当前使用的用户坐标编号。

get_user_coord_number

python
def get_user_coord_number(socketFd, userNum):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_user_coord_number(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_user_coord_number_robot

python
def get_user_coord_number_robot(socketFd, robotNum, userNum):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_user_coord_number_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint&输出参数,当前用户坐标编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_user_coord_para / get_user_coord_para_robot ​

获取用户坐标参数。

get_user_coord_para

python
def get_user_coord_para(socketFd, userNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_user_coord_para_robot

python
def get_user_coord_para_robot(socketFd, robotNum, userNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号
posstd::vector<double>&输出参数,用户坐标参数(X/Y/Z 偏移 + A/B/C 旋转角)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_user_coordinate_data / set_user_coordinate_data_robot ​

标定用户坐标(写入坐标数据)。

set_user_coordinate_data

python
def set_user_coordinate_data(socketFd, userNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_user_coordinate_data_robot

python
def set_user_coordinate_data_robot(socketFd, robotNum, userNum, pos):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号
posstd::vector<double>坐标数据(X/Y/Z 偏移 + A/B/C 旋转角)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


calibration_oxy / calibration_oxy_robot ​

标定 OXY(三点法:原点、X 轴方向点、Y 轴方向点)。

calibration_oxy

python
def calibration_oxy(socketFd, userNum, xyo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

calibration_oxy_robot

python
def calibration_oxy_robot(socketFd, robotNum, userNum, xyo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号
xyostd::string标定类型:'X'(X 轴方向点)、'Y'(Y 轴方向点)、'O'(原点)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


calculate_user_coordinate / calculate_user_coordinate_robot ​

计算用户坐标(OXY 三点标定完成后计算最终结果)。

calculate_user_coordinate

python
def calculate_user_coordinate(socketFd, userNumber):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

calculate_user_coordinate_robot

python
def calculate_user_coordinate_robot(socketFd, robotNum, userNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNum / userNumberint用户坐标编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.8 全局点位与变量 ​

set_global_position / set_global_position_robot ​

设置全局 GP 点位。

set_global_position

python
def set_global_position(socketFd, posName, posInfo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_global_position_robot

python
def set_global_position_robot(socketFd, robotNum, posName, posInfo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNamestd::string全局位置名,如 "GP0001"
posInfostd::vector<double>点位数据,长度 14:[0]坐标系(0=关节,1=直角,2=工具,3=用户);[1]角度制(0)/弧度制(1);[2]形态;[3]工具手坐标序号;[4]用户坐标序号;[5][6]备用;[7-13]点位信息

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_global_position / get_global_position_robot ​

查询全局 GP 点位。

get_global_position

python
def get_global_position(socketFd, posName, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_global_position_robot

python
def get_global_position_robot(socketFd, robotNum, posName, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNamestd::string全局位置名,如 "GP0001"
posstd::vector<double>&输出参数,全局点位数组,长度 14(前 7 位为点位坐标/姿态信息,后 7 位为机器人位置)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_global_sync_position / set_global_sync_position_robot ​

设置全局 GE 点位(含外部轴)。

set_global_sync_position

python
def set_global_sync_position(socketFd, posName, posInfo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_global_sync_position_robot

python
def set_global_sync_position_robot(socketFd, robotNum, posName, posInfo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNameconst std::string&全局位置名,如 "GE0001"
posInfostd::vector<double>点位数据,长度 21:[0-6]坐标系/角度制/形态/工具/用户坐标序号/备用;[7-13]机器人本体点位;[14-20]外部轴点位

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_global_sync_position / get_global_sync_position_robot ​

查询全局 GE 点位。

get_global_sync_position

python
def get_global_sync_position(socketFd, posName, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_global_sync_position_robot

python
def get_global_sync_position_robot(socketFd, robotNum, posName, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNameconst std::string&全局位置名,如 "GE0001"
posstd::vector<double>&输出参数,全局点位数组,长度 21(前 7 位坐标/姿态,中间 7 位机器人位置,后 7 位外部轴位置)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_global_variant / set_global_variant_robot ​

设置全局变量(GI/GD/GB 系列)。

set_global_variant

python
def set_global_variant(socketFd, varName, varValue):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_global_variant_robot

python
def set_global_variant_robot(socketFd, robotNum, varName, varValue):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
varNameconst std::string&全局变量名,如 "GI001"、"GD001"、"GB001"
varValuedouble变量值

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_global_variant / get_global_variant_robot ​

查询全局变量。

get_global_variant

python
def get_global_variant(socketFd, varName, vaule):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

get_global_variant_robot

python
def get_global_variant_robot(socketFd, robotNum, varName, vaule):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
varNameconst std::string&全局变量名,如 "GI001"、"GD001"、"GB001"
vauledouble&输出参数,变量值

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.9 零点与标定 ​

set_axis_zero_position / set_axis_zero_position_robot ​

设置零点位置(将当前轴位置设为零点)。

set_axis_zero_position

python
def set_axis_zero_position(socketFd, axis):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_axis_zero_position_robot

python
def set_axis_zero_position_robot(socketFd, robotNum, axis):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint轴号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_zero_pos_deviation / set_zero_pos_deviation_robot ​

设置零点偏移。

set_zero_pos_deviation

python
def set_zero_pos_deviation(socketFd, axis, shift):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_zero_pos_deviation_robot

python
def set_zero_pos_deviation_robot(socketFd, robotNum, axis, shift):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint需要偏移的轴号
shiftdouble偏移量,范围 -360° < shift < 360°

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_single_cycle / get_single_cycle_robot ​

获取单圈值(编码器单圈位置)。

get_single_cycle

python
def get_single_cycle(socketFd, single_cycle):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_single_cycle = nrc.VectorDouble()
ret = nrc.get_single_cycle(fd, out_single_cycle)
print(ret, list(out_single_cycle))    # 容器用 list() 读取

get_single_cycle_robot

python
def get_single_cycle_robot(socketFd, robotNum, single_cycle):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_single_cycle = nrc.VectorDouble()
ret = nrc.get_single_cycle_robot(fd, 1, out_single_cycle)
print(ret, list(out_single_cycle))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
single_cyclestd::vector<double>&输出参数,单圈值数组,长度 7

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_four_point / get_four_point_robot ​

查询 4 点标定(SCARA 杆长标定)。

get_four_point

python
def get_four_point(socketFd, result):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_result = nrc.VectorDouble()
ret = nrc.get_four_point(fd, out_result)
print(ret, list(out_result))    # 容器用 list() 读取

get_four_point_robot

python
def get_four_point_robot(socketFd, robotNum, result):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_result = nrc.VectorDouble()
ret = nrc.get_four_point_robot(fd, 1, out_result)
print(ret, list(out_result))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
resultstd::vector<double>&输出参数,4 点标定结果

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_four_point_mark / set_four_point_mark_robot ​

进行 4 点标记。

set_four_point_mark

python
def set_four_point_mark(socketFd, point, status):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_four_point_mark_robot

python
def set_four_point_mark_robot(socketFd, robotNum, point, status):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
pointint标记点位编号,范围 0-3
statusint标记状态:0=取消标记,1=标记

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


four_point_calculation / four_point_calculation_robot ​

4 点标定计算。

four_point_calculation

python
def four_point_calculation(socketFd, L1, L2, result):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

four_point_calculation_robot

python
def four_point_calculation_robot(socketFd, robotNum, L1, L2, result):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
L1double大臂杆长
L2double小臂杆长
resultstd::vector<double>&输出参数,标定计算结果

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_result_for_DH / set_result_for_DH_robot ​

将 4 点标定计算的结果写入机器人 DH 参数。

set_result_for_DH

python
def set_result_for_DH(socketFd, apply):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.set_result_for_DH(fd, 0)
print(ret, val)      # 返回 list,可直接解包

set_result_for_DH_robot

python
def set_result_for_DH_robot(socketFd, robotNum, apply):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.set_result_for_DH_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
applyint&写入是否成功:成功/失败(1/0)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_origin_coord_to_target_coord / get_origin_coord_to_target_coord_robot ​

坐标值坐标系转换(原坐标系转换为目标坐标系)。

get_origin_coord_to_target_coord

python
def get_origin_coord_to_target_coord(socketFd, originCoord, originPos, targetCoord, targetPos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_origin_coord_to_target_coord_robot

python
def get_origin_coord_to_target_coord_robot(socketFd, robotNum, originCoord, originPos, targetCoord, targetPos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
originCoordint原坐标系:0=关节,1=直角,2=工具,3=用户
originPosstd::vector<double>要进行转换的坐标值,长度 7:关节取值范围 0-6[-10000,10000];直角/工具/用户取值范围 0-2[-10000,10000]、3-6[-3.1416,3.1416]rad
targetCoordint目标坐标系:0=关节,1=直角,2=工具,3=用户
targetPosstd::vector<double>&输出参数,转换后的坐标值

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.10 机器人切换与参数 ​

set_robot_switch ​

切换当前机器人。

python
def set_robot_switch(socketFd, robot):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotint切换到的机器人编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_robot_switch ​

获取当前机器人。

python
def get_robot_switch(socketFd, robot):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为标量引用出参(如 int&/double&),SWIG 生成的 Python 绑定无法从 Python 侧构造可绑定的实参,任何传参都会抛 TypeError: argument N of type 'int &'。这是当前 Python SDK 的限制,请改用 C++ SDK 调用该接口,或联系纳博特确认 Python 侧修复版本。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotint&输出参数,当前机器人编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_robot_dh_param / get_robot_dh_param_robot ​

获取当前机器人 DH 参数。

get_robot_dh_param

python
def get_robot_dh_param(socketFd, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.RobotDHParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_param = nrc.RobotDHParam()
ret = nrc.get_robot_dh_param(fd, out_param)
print(ret, out_param.type, out_param.num)    # 结构体按字段读取

get_robot_dh_param_robot

python
def get_robot_dh_param_robot(socketFd, robotNum, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.RobotDHParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_param = nrc.RobotDHParam()
ret = nrc.get_robot_dh_param_robot(fd, 1, out_param)
print(ret, out_param.type, out_param.num)    # 结构体按字段读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramRobotDHParam&输出参数,DH 参数结构体

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_robot_joint_param / get_robot_joint_param_robot ​

获取当前机器人关节参数。

get_robot_joint_param

python
def get_robot_joint_param(socketFd, id, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.RobotJointParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

get_robot_joint_param_robot

python
def get_robot_joint_param_robot(socketFd, robotNum, id, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.RobotJointParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
idint关节编号,范围 [1,6]
paramRobotJointParam&输出参数,关节参数结构体

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_teachbox_connection_status / get_teachbox_connection_status_robot ​

查询示教盒连接状态。

get_teachbox_connection_status

python
def get_teachbox_connection_status(socketFd, connected):

返回值:list,共 2 个元素 [结果码, bool] —— 如 [-2, False]。SWIG 把 C++ 的 bool& 出参转成了传值 bool 参数,出参值直接放在返回列表下标 1。调用示例:ret, connected = nrc.get_teachbox_connection_status(fd, False)(第二个实参传 False 占位,实际取值看返回值)。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_teachbox_connection_status(fd, False)
print(ret, val)      # 返回 [结果码, bool]

get_teachbox_connection_status_robot

python
def get_teachbox_connection_status_robot(socketFd, robotNum, connected):

返回值:list,共 2 个元素 [结果码, bool] —— 如 [-2, False]。SWIG 把 C++ 的 bool& 出参转成了传值 bool 参数,出参值直接放在返回列表下标 1。调用示例:ret, connected = nrc.get_teachbox_connection_status_robot(fd, False)(第二个实参传 False 占位,实际取值看返回值)。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_teachbox_connection_status_robot(fd, 1, False)
print(ret, val)      # 返回 [结果码, bool]

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
connectedbool&输出参数,示教盒连接状态

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_controller_id / get_controller_id_robot ​

获取控制器序列号 ID(char* 版本)。

get_controller_id

python
def get_controller_id(socketFd, id):

返回值:int 结果码(0 成功,负数为错误码)。字符串出参以传值方式传入(C++ 侧为 std::string&,SWIG 未回填),返回值中取不到字符串内容。需要该字符串请使用 C++ SDK。

get_controller_id_robot

python
def get_controller_id_robot(socketFd, robotNum, id):

返回值:int 结果码(0 成功,负数为错误码)。字符串出参以传值方式传入(C++ 侧为 std::string&,SWIG 未回填),返回值中取不到字符串内容。需要该字符串请使用 C++ SDK。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
idchar*输出参数,控制器序列号 ID

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_controller_id_csharp / get_controller_id_csharp_robot ​

获取控制器序列号 ID(std::vector<char> 版本,供 C# 使用)。

get_controller_id_csharp

python
def get_controller_id_csharp(socketFd, id):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参对象原地填充——先创建出参对象传入,调用成功后从该对象读取。

get_controller_id_csharp_robot

python
def get_controller_id_csharp_robot(socketFd, robotNum, id):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参对象原地填充——先创建出参对象传入,调用成功后从该对象读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
idstd::vector<char>&输出参数,控制器序列号 ID

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.11 传感器与电机数据 ​

get_static_search_position / get_static_search_position_robot ​

获取静态寻位坐标。

get_static_search_position

python
def get_static_search_position(socketFd, fileid, tableid, delaytime, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

get_static_search_position_robot

python
def get_static_search_position_robot(socketFd, robotNum, fileid, tableid, delaytime, pos):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
fileidint寻位文件号
tableidint寻位参数表号
delaytimeint参数表延时
posstd::vector<double>&输出参数,寻位坐标

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_curretn_motor_torque / get_curretn_motor_torque_robot ​

获取当前电机扭矩。

get_curretn_motor_torque

python
def get_curretn_motor_torque(socketFd, motorTorque, motorTorqueSync):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_motorTorque = nrc.VectorInt()
out_motorTorqueSync = nrc.VectorInt()
ret = nrc.get_curretn_motor_torque(fd, out_motorTorque, out_motorTorqueSync)
print(ret, list(out_motorTorqueSync))    # 容器用 list() 读取

get_curretn_motor_torque_robot

python
def get_curretn_motor_torque_robot(socketFd, robotNum, motorTorque, motorTorqueSync):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_motorTorque = nrc.VectorInt()
out_motorTorqueSync = nrc.VectorInt()
ret = nrc.get_curretn_motor_torque_robot(fd, 1, out_motorTorque, out_motorTorqueSync)
print(ret, list(out_motorTorqueSync))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
motorTorquestd::vector<int>&输出参数,机器人扭矩,长度 7,单位 [%]
motorTorqueSyncstd::vector<int>&输出参数,外部轴扭矩,长度 5,单位 [%]

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_curretn_motor_speed / get_curretn_motor_speed_robot ​

获取当前电机转速。

get_curretn_motor_speed

python
def get_curretn_motor_speed(socketFd, motorSpeed, motorSpeedSync):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_motorSpeed = nrc.VectorInt()
out_motorSpeedSync = nrc.VectorInt()
ret = nrc.get_curretn_motor_speed(fd, out_motorSpeed, out_motorSpeedSync)
print(ret, list(out_motorSpeedSync))    # 容器用 list() 读取

get_curretn_motor_speed_robot

python
def get_curretn_motor_speed_robot(socketFd, robotNum, motorSpeed, motorSpeedSync):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_motorSpeed = nrc.VectorInt()
out_motorSpeedSync = nrc.VectorInt()
ret = nrc.get_curretn_motor_speed_robot(fd, 1, out_motorSpeed, out_motorSpeedSync)
print(ret, list(out_motorSpeedSync))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
motorSpeedstd::vector<int>&输出参数,机器人电机转速,长度 7,单位 [RPM]
motorSpeedSyncstd::vector<int>&输出参数,外部轴电机转速,长度 5,单位 [RPM]

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_curretn_motor_payload / get_curretn_motor_payload_robot ​

获取当前电机负载。

get_curretn_motor_payload

python
def get_curretn_motor_payload(socketFd, motorPayload, motorPayloadSync):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_motorPayload = nrc.VectorDouble()
out_motorPayloadSync = nrc.VectorDouble()
ret = nrc.get_curretn_motor_payload(fd, out_motorPayload, out_motorPayloadSync)
print(ret, list(out_motorPayloadSync))    # 容器用 list() 读取

get_curretn_motor_payload_robot

python
def get_curretn_motor_payload_robot(socketFd, robotNum, motorPayload, motorPayloadSync):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_motorPayload = nrc.VectorDouble()
out_motorPayloadSync = nrc.VectorDouble()
ret = nrc.get_curretn_motor_payload_robot(fd, 1, out_motorPayload, out_motorPayloadSync)
print(ret, list(out_motorPayloadSync))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
motorPayloadstd::vector<double>&输出参数,机器人电机负载,长度 7,单位 [%]
motorPayloadSyncstd::vector<double>&输出参数,外部轴电机负载,长度 5,单位 [%]

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_current_line_speed_and_joint_speed / get_current_line_speed_and_joint_speed_robot ​

获取当前末端线速度和轴速度。

get_current_line_speed_and_joint_speed

python
def get_current_line_speed_and_joint_speed(socketFd, lineSpeed, jointSpeed, jointSpeedSync):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,其余为各出参值(按 C++ 参数顺序)。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_jointSpeed = nrc.VectorDouble()
out_jointSpeedSync = nrc.VectorDouble()
ret = nrc.get_current_line_speed_and_joint_speed(fd, 0, out_jointSpeed, out_jointSpeedSync)
print(ret, list(out_jointSpeedSync))    # 容器用 list() 读取

get_current_line_speed_and_joint_speed_robot

python
def get_current_line_speed_and_joint_speed_robot(socketFd, robotNum, lineSpeed, jointSpeed, jointSpeedSync):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,其余为各出参值(按 C++ 参数顺序)。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_jointSpeed = nrc.VectorDouble()
out_jointSpeedSync = nrc.VectorDouble()
ret = nrc.get_current_line_speed_and_joint_speed_robot(fd, 1, 0, out_jointSpeed, out_jointSpeedSync)
print(ret, list(out_jointSpeedSync))    # 容器用 list() 读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineSpeeddouble&输出参数,末端线速度,单位 [mm/s]
jointSpeedstd::vector<double>&输出参数,关节速度,长度 5,单位 [°/s]
jointSpeedSyncstd::vector<double>&输出参数,外部轴关节速度,长度 5,单位 [°/s]

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.12 运动控制 ​

robot_start_jogging / robot_start_jogging_robot ​

开始点动。

robot_start_jogging

python
def robot_start_jogging(socketFd, axis, dir):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

robot_start_jogging_robot

python
def robot_start_jogging_robot(socketFd, robotNum, axis, dir):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint轴号
dirbool方向(true=正方向,false=反方向)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


robot_stop_jogging / robot_stop_jogging_robot ​

停止点动。

robot_stop_jogging

python
def robot_stop_jogging(socketFd, axis):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

robot_stop_jogging_robot

python
def robot_stop_jogging_robot(socketFd, robotNum, axis):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint轴号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。

点动使用提示

  • 前置条件:点动属于运动操作,需先完成伺服上电、机器人处于允许运动的运行状态(见上电流程示例),并确认急停已释放;
  • 调用方式(重要):点动为"保持式"——控制器要求 200ms 内再次调用 robot_start_jogging(同轴、同方向;重复调用幂等)才会持续运动,超过 200ms 未再次调用将自动停止;因此点动期间需按不超过 200ms 的周期(例如 50ms)持续重发,松开按键后调用 robot_stop_jogging 主动停止;
  • 速度:robot_start_jogging 无速度参数;点动速度由控制器侧配置(示教器【机器人参数 - 点动速度】中查看/修改,实际速度为"关节轴最大点动速度 × 全局速度")。上位机 SDK 未提供点动专用的速度设置接口;相关速度接口见 §1.5「速度与模式控制」(set_speed / get_speed,设置/获取当前模式速度);
  • 停止与换向:停止调用 robot_stop_jogging(socketFd, axis);需要换向时先停止再反向启动;
  • 独立轴(外部轴)点动:见 independent_axis_jog。

robot_go_to_reset_position / robot_go_to_reset_position_robot ​

回到设定的复位点。

robot_go_to_reset_position

python
def robot_go_to_reset_position(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.robot_go_to_reset_position(fd)
print(ret)

robot_go_to_reset_position_robot

python
def robot_go_to_reset_position_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.robot_go_to_reset_position_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


robot_go_home / robot_go_home_robot ​

回到设定的零点。

robot_go_home

python
def robot_go_home(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.robot_go_home(fd)
print(ret)

robot_go_home_robot

python
def robot_go_home_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.robot_go_home_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


robot_movej / robot_movej_robot ​

关节运动(MoveJ)。关节空间点到点运动,速度快但路径不固定。

robot_movej

python
def robot_movej(socketFd, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

robot_movej_robot

python
def robot_movej_robot(socketFd, robotNum, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


robot_movel / robot_movel_robot ​

直线运动(MoveL)。笛卡尔空间直线运动。

robot_movel

python
def robot_movel(socketFd, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

robot_movel_robot

python
def robot_movel_robot(socketFd, robotNum, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


robot_extra_movej / robot_extra_movej_robot ​

外部轴关节运动。

robot_extra_movej

python
def robot_extra_movej(socketFd, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

robot_extra_movej_robot

python
def robot_extra_movej_robot(socketFd, robotNum, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

robot_extra_movel / robot_extra_movel_robot ​

外部轴直线运动。

robot_extra_movel

python
def robot_extra_movel(socketFd, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

robot_extra_movel_robot

python
def robot_extra_movel_robot(socketFd, robotNum, moveCmd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

1.13 7000 端口功能(伺服跟踪) ​

get_robot_state / get_robot_state_robot ​

7000 端口查询状态。

get_robot_state

python
def get_robot_state(socketFd, param):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

get_robot_state_robot

python
def get_robot_state_robot(socketFd, robotNum, param):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramRobotState查询状态参数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


robot_state_callback ​

7000 端口状态返回的回调函数。

python
def robot_state_callback(*args):

返回值:未实测(该接口需要真实控制器环境),语义同 C++。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
functionvoid()(const char)状态回调函数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


servo_move / servo_move_robot ​

外部点移动(伺服跟踪)。

servo_move

python
def servo_move(socketFd, servoMove):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

servo_move_robot

python
def servo_move_robot(socketFd, robotNum, servoMove):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
servoMoveServoMovePara伺服运动参数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


enable_servo_position_motion_control / enable_servo_position_motion_control_robot ​

开启/关闭伺服点位运动控制。

enable_servo_position_motion_control

python
def enable_servo_position_motion_control(socketFd, statue):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

enable_servo_position_motion_control_robot

python
def enable_servo_position_motion_control_robot(socketFd, robotNum, statue):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
statuebool1=开启,0=关闭

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


servo_point_position_motion_control / servo_point_position_motion_control_robot ​

伺服点位运动控制。

servo_point_position_motion_control

python
def servo_point_position_motion_control(socketFd, servoMove):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

servo_point_position_motion_control_robot

python
def servo_point_position_motion_control_robot(socketFd, robotNum, servoMove):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
servoMoveServoPointMovePara伺服点位运动参数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.14 碰撞检测与拖拽 ​

set_collision_para / set_collision_para_robot ​

设置碰撞检测阈值。

set_collision_para

python
def set_collision_para(socketFd, collisionpara):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_collision_para_robot

python
def set_collision_para_robot(socketFd, robotNum, collisionpara):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
collisionparaCollisionPara碰撞检测参数结构体(含指令位置响应时间、误差允许时间、碰撞检测阈值(点动)、碰撞检测阈值(指令)、机器人轴数)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_darg_mode / set_darg_mode_robot ​

设置拖拽示教的拖拽方式。

set_darg_mode

python
def set_darg_mode(socketFd, mode):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

set_darg_mode_robot

python
def set_darg_mode_robot(socketFd, robotNum, mode):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
modeint拖拽模式:0=无,1=3D 鼠标,2=力矩模式,3=位置

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_position_dragParams / set_position_dragParams_robot ​

设置位置拖动参数(笛卡尔空间线速度限制和关节空间速度限制)。

set_position_dragParams

python
def set_position_dragParams(socketFd, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.DragParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_param = nrc.DragParam()
ret = nrc.set_position_dragParams(fd, out_param)
print(ret, out_param.type, out_param.num)    # 结构体按字段读取

set_position_dragParams_robot

python
def set_position_dragParams_robot(socketFd, robotNum, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.DragParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_param = nrc.DragParam()
ret = nrc.set_position_dragParams_robot(fd, 1, out_param)
print(ret, out_param.type, out_param.num)    # 结构体按字段读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramDragParam&位置拖动参数结构体

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_drag_thread_is_end / get_drag_thread_is_end_robot ​

获取拖拽是否已结束。

get_drag_thread_is_end

python
def get_drag_thread_is_end(socketFd, endFlag):

返回值:list,共 2 个元素 [结果码, bool] —— 如 [-2, False]。SWIG 把 C++ 的 bool& 出参转成了传值 bool 参数,出参值直接放在返回列表下标 1。调用示例:ret, connected = nrc.get_drag_thread_is_end(fd, False)(第二个实参传 False 占位,实际取值看返回值)。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_drag_thread_is_end(fd, False)
print(ret, val)      # 返回 [结果码, bool]

get_drag_thread_is_end_robot

python
def get_drag_thread_is_end_robot(socketFd, robotNum, endFlag):

返回值:list,共 2 个元素 [结果码, bool] —— 如 [-2, False]。SWIG 把 C++ 的 bool& 出参转成了传值 bool 参数,出参值直接放在返回列表下标 1。调用示例:ret, connected = nrc.get_drag_thread_is_end_robot(fd, False)(第二个实参传 False 占位,实际取值看返回值)。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_drag_thread_is_end_robot(fd, 1, False)
print(ret, val)      # 返回 [结果码, bool]

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
endFlagbool&输出参数,拖拽结束标志位

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.15 独立轴控制 ​

new_independent_axis_param / new_independent_axis_param_robot ​

新建独立轴参数。

new_independent_axis_param

python
def new_independent_axis_param(socketFd, axis_num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

new_independent_axis_param_robot

python
def new_independent_axis_param_robot(socketFd, robotNum, axis_num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axis_numint新建的独立轴数量

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


modify_independent_axis_param / modify_independent_axis_param_robot ​

修改独立轴参数(先新建再修改)。

modify_independent_axis_param

python
def modify_independent_axis_param(socketFd, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.IndependentAxisParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_param = nrc.IndependentAxisParam()
ret = nrc.modify_independent_axis_param(fd, out_param)
print(ret, out_param.type, out_param.num)    # 结构体按字段读取

modify_independent_axis_param_robot

python
def modify_independent_axis_param_robot(socketFd, robotNum, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.IndependentAxisParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
out_param = nrc.IndependentAxisParam()
ret = nrc.modify_independent_axis_param_robot(fd, 1, out_param)
print(ret, out_param.type, out_param.num)    # 结构体按字段读取

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramIndependentAxisParam&独立轴参数结构体

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_independent_axis_param / get_independent_axis_param_robot ​

获取独立轴参数。

get_independent_axis_param

python
def get_independent_axis_param(socketFd, num, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.IndependentAxisParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

get_independent_axis_param_robot

python
def get_independent_axis_param_robot(socketFd, robotNum, num, param):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.IndependentAxisParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
numint独立轴编号
paramIndependentAxisParam&输出参数,独立轴参数结构体

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_axis_sum / get_axis_sum_robot ​

获取独立轴总数。

get_axis_sum

python
def get_axis_sum(socketFd, sum):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为标量引用出参(如 int&/double&),SWIG 生成的 Python 绑定无法从 Python 侧构造可绑定的实参,任何传参都会抛 TypeError: argument N of type 'int &'。这是当前 Python SDK 的限制,请改用 C++ SDK 调用该接口,或联系纳博特确认 Python 侧修复版本。

get_axis_sum_robot

python
def get_axis_sum_robot(socketFd, robotNum, sum):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为标量引用出参(如 int&/double&),SWIG 生成的 Python 绑定无法从 Python 侧构造可绑定的实参,任何传参都会抛 TypeError: argument N of type 'int &'。这是当前 Python SDK 的限制,请改用 C++ SDK 调用该接口,或联系纳博特确认 Python 侧修复版本。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
sumint&输出参数,独立轴总数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


delete_axis_sum / delete_axis_sum_robot ​

删除某个独立轴。

delete_axis_sum

python
def delete_axis_sum(socketFd, num):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.delete_axis_sum(fd, 0)
print(ret, val)      # 返回 list,可直接解包

delete_axis_sum_robot

python
def delete_axis_sum_robot(socketFd, robotNum, num):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.delete_axis_sum_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
numint&将要删除的独立轴编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


get_axis_position / get_axis_position_robot ​

查询独立轴位置。

get_axis_position

python
def get_axis_position(socketFd, num, currentPos):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为标量引用出参(如 int&/double&),SWIG 生成的 Python 绑定无法从 Python 侧构造可绑定的实参,任何传参都会抛 TypeError: argument N of type 'int &'。这是当前 Python SDK 的限制,请改用 C++ SDK 调用该接口,或联系纳博特确认 Python 侧修复版本。

get_axis_position_robot

python
def get_axis_position_robot(socketFd, robotNum, num, currentPos):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为标量引用出参(如 int&/double&),SWIG 生成的 Python 绑定无法从 Python 侧构造可绑定的实参,任何传参都会抛 TypeError: argument N of type 'int &'。这是当前 Python SDK 的限制,请改用 C++ SDK 调用该接口,或联系纳博特确认 Python 侧修复版本。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
numint&要查询的独立轴
currentPosdouble&输出参数,独立轴当前位置

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


independent_axis_zero_calibration ​

独立轴零点标定。

python
def independent_axis_zero_calibration(socketFd, num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
numint要标定的独立轴

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_independent_axis_PV_run ​

独立控制轴 PV 运动(恒转速,仅支持外部轴)。

python
def set_independent_axis_PV_run(socketFd, param):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
paramIndependentAxisRun运动参数结构体(含速度、加减速等)

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


set_independent_axis_PV_stop ​

独立控制轴 PV 停止(仅支持外部轴)。

python
def set_independent_axis_PV_stop(socketFd, num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


cancel_independent_axis_move ​

取消轴独立控制运动(仅支持外部轴)。

python
def cancel_independent_axis_move(socketFd, num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


independent_axis_homing ​

独立轴回零。

python
def independent_axis_homing(socketFd, num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


independent_axis_homing_stop ​

独立轴回零停止。

python
def independent_axis_homing_stop(socketFd, num):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


independent_axis_jog ​

独立轴点动。

python
def independent_axis_jog(socketFd, param):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
paramIndependentAxisRun点动参数结构体

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


1.16 机器人形态与可达性 ​

get_robot_configuration / get_robot_configuration_robot ​

获取 4 轴 SCARA 机器人的形态。SCARA 机器人在运动学正逆解时存在多解情况,需要通过形态参数指定机器人当前的臂型配置。

get_robot_configuration

python
def get_robot_configuration(socketFd, configuration):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_robot_configuration(fd, 0)
print(ret, val)      # 返回 list,可直接解包

get_robot_configuration_robot

python
def get_robot_configuration_robot(socketFd, robotNum, configuration):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_robot_configuration_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
configurationint&输出机器人形态

C++ 侧返回值描述:- 0:成功

  • 负数:失败

get_pos_reachable / get_pos_reachable_robot ​

判断指定点位在当前机器人工作空间内是否可达。该接口基于机器人运动学正逆解算法,验证目标点位是否存在有效的关节解。

get_pos_reachable

python
def get_pos_reachable(socketFd, pos, movetype, result):

返回值:list,共 2 个元素 [结果码, bool] —— 如 [-2, False]。SWIG 把 C++ 的 bool& 出参转成了传值 bool 参数,出参值直接放在返回列表下标 1。调用示例:ret, connected = nrc.get_pos_reachable(fd, False)(第二个实参传 False 占位,实际取值看返回值)。

get_pos_reachable_robot

python
def get_pos_reachable_robot(socketFd, robotNum, pos, movetype, result):

返回值:list,共 2 个元素 [结果码, bool] —— 如 [-2, False]。SWIG 把 C++ 的 bool& 出参转成了传值 bool 参数,出参值直接放在返回列表下标 1。调用示例:ret, connected = nrc.get_pos_reachable_robot(fd, False)(第二个实参传 False 占位,实际取值看返回值)。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
posstd::vector<double>输入目标点位坐标数据,长度 14
movetypestd::string输入运动方式:"MOVJ"(关节运动)或 "MOVL"(直线运动)
resultbool&输出点位是否可达

C++ 侧返回值描述:- 0:成功(查询操作本身成功)

  • 负数:失败

注意

result 参数才是点位可达性的判断结果,true 表示可达,false 表示不可达。函数返回值仅表示接口调用是否成功。