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

八、队列运动模式(Python) ​

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

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

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


使用说明 ​

8.1 队列模式控制 ​

queue_motion_set_status / queue_motion_set_status_robot ​

打开/关闭队列运动模式。打开或关闭都将清空远端队列。


queue_motion_set_status

python
def queue_motion_set_status(socketFd, status):

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

queue_motion_set_status_robot

python
def queue_motion_set_status_robot(socketFd, robotNum, status):

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


queue_motion_get_status / queue_motion_get_status_robot ​

查询队列运动模式状态。


queue_motion_get_status

python
def queue_motion_get_status(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.queue_motion_get_status(fd, False)
print(ret, val)      # 返回 list,可直接解包

queue_motion_get_status_robot

python
def queue_motion_get_status_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.queue_motion_get_status_robot(fd, 1, False)
print(ret, val)      # 返回 list,可直接解包

queue_motion_clear_Data / queue_motion_clear_Data_robot ​

清空缓存的运动队列数据。


queue_motion_clear_Data

python
def queue_motion_clear_Data(socketFd):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_clear_Data_robot

python
def queue_motion_clear_Data_robot(socketFd, robotNum):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_size / queue_motion_size_robot ​

查询队列长度。


queue_motion_size

python
def queue_motion_size(socketFd, size):

返回值: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.queue_motion_size(fd, 0)
print(ret, val)      # 返回 list,可直接解包

queue_motion_size_robot

python
def queue_motion_size_robot(socketFd, robotNum, size):

返回值: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.queue_motion_size_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

queue_motion_get_queuelen / queue_motion_get_queuelen_robot ​

查询队列剩余指令数。


queue_motion_get_queuelen

python
def queue_motion_get_queuelen(socketFd, len):

返回值: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.queue_motion_get_queuelen(fd, 0)
print(ret, val)      # 返回 list,可直接解包

queue_motion_get_queuelen_robot

python
def queue_motion_get_queuelen_robot(socketFd, robotNum, len):

返回值: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.queue_motion_get_queuelen_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

queue_motion_send_to_controller / queue_motion_send_to_controller_robot ​

发送队列数据到控制器。size: [0,31],0=全部发送。


queue_motion_send_to_controller

python
def queue_motion_send_to_controller(socketFd, size, isContinue=False):

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

queue_motion_send_to_controller_robot

python
def queue_motion_send_to_controller_robot(socketFd, robotNum, size, isContinue=False):

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


queue_motion_suspend / queue_motion_suspend_robot ​

暂停连续运动。


queue_motion_suspend

python
def queue_motion_suspend(socketFd):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_suspend_robot

python
def queue_motion_suspend_robot(socketFd, robotNum):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_restart / queue_motion_restart_robot ​

暂停后重启队列运动。


queue_motion_restart

python
def queue_motion_restart(socketFd):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_restart_robot

python
def queue_motion_restart_robot(socketFd, robotNum):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_stop / queue_motion_stop_robot ​

停止连续运动(已废弃,建议用 stop_not_power_off)。


queue_motion_stop

python
def queue_motion_stop(socketFd):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_stop_robot

python
def queue_motion_stop_robot(socketFd, robotNum):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_stop_not_power_off / queue_motion_stop_not_power_off_robot ​

停止连续运动(保持上电)。


queue_motion_stop_not_power_off

python
def queue_motion_stop_not_power_off(socketFd):

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

示例:

python
import nrc_interface as nrc

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

queue_motion_stop_not_power_off_robot

python
def queue_motion_stop_not_power_off_robot(socketFd, robotNum):

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

示例:

python
import nrc_interface as nrc

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

8.2 队列运动指令插入 ​

MoveCmd ​

push_back_move* 系列都收一个 MoveCmd(nrc_define.h),字段如下:

字段类型默认说明
targetPosTypePosTypedata(0)点位类型:data=自定义数组,P/AP/GP/GE=系统点位
targetPosValuevector<double>长度 14目标位置。前 7 位本体关节,后 7 位外部轴;data 类型必须填
targetPosNamestring空用系统点位时填名称,如 "GP0001"(仅作业文件模式有效)
coordint0坐标类型:0 关节 / 1 直角 / 2 工具 / 3 用户
velocitydouble50速度
velocitySyncdouble0外部轴速度同步值
acc / decdouble50加速度 / 减速度
plint0平滑等级
timeint0提前执行时间
toolNumint0该点位使用的工具手编号;运行时机器人当前工具手与此不一致 → 报错
userNumint0该点位使用的用户坐标编号;运行时机器人当前用户坐标与此不一致 → 报错
configurationint0形态(关节解的分支)
posidtypeint00=一级变量(GP0001),1=二级变量(GP[I001])
spinint0仅 MOVCA 用:0 姿态不变 / 1 六轴不转 / 2 六轴旋转
parasyncboolfalse外部轴是否同步

工具手 / 用户坐标必须与机器人当前值一致,否则运行时报错

MoveCmd.toolNum / userNum 是该点位所属的工具手编号和用户坐标编号,不是「用不用工具」的开关。运行到这个点时,控制器会比对机器人当前的工具手 / 用户坐标:

  • 一致:正常执行,按该工具/用户坐标换算;
  • 不一致:直接报错,不会自动切换过去。

因此队列里的点位要用哪把工具、哪个用户坐标,就把对应编号显式填进去;不要在示教器上临时切了工具/用户坐标再跑同一条队列。切换后要么同步修改队列里的编号,要么重新下发。


Python 中定义:nrc_interface.MoveCmd(构造:nrc.MoveCmd())。

可用字段(共 16 个,实测 dir()):

acc、configuration、coord、dec、parasync、pl、posidtype、spin、targetPosName、targetPosType、targetPosValue、time、toolNum、userNum、velocity、velocitySync


8.3 队列工艺指令插入 ​

8.4 队列逻辑控制指令插入 ​

8.5 队列轴控制指令插入 ​

8.6 队列多机协调指令插入 ​