Skip to content

架构说明

Python SDK 通过 SWIG 从 C++ libnrc_host 自动生成,nrc_interface.py 包含全部接口。

SDK 组成

text
SDK 包/
├── nrc_interface.py      ← SWIG 生成的 Python 接口(全量)
├── _nrc_host.so          ← Linux 原生动态库
└── nrc_host.pyd          ← Windows 原生动态库

调用链

text
Python 代码 → nrc_interface.py → _nrc_host.so → TCP Socket → 控制器

所有 Python 函数名与 C++ 完全一致,参数对应关系参见 类型映射

类型映射

C++Python说明
SOCKETFD (int)intsocket 文件描述符
Result (int)int返回状态码
std::stringstr字符串
std::vector<double>VectorDouble先创建再 append
std::vector<vector<double>>VectorVectorDouble二维数组
结构体 (MoveCmd等)同名 Python 类字段名一致

C++ 对照

所有参数含义参见 C++ API 文档

通信模型

Python SDK 与 C++ 一致,采用 JSON 文本协议进行请求/响应交互,支持两种通信模式:

模式说明典型场景
同步请求/响应上位机发送指令,阻塞等待控制器回复参数设置、状态查询、标定计算
异步回调控制器主动推送数据,通过注册的回调函数接收7000 端口伺服跟踪、状态变化通知

请求流程: Python 构造 JSON 指令 → nrc_interface.py_nrc_host.so → TCP 发送 → 控制器解析执行 → 返回 JSON 响应 → SDK 解析为返回值/输出参数。

回调机制: 调用 send_message / recv_message / set_receive_error_or_warnning_message_callback 等注册回调函数后,控制器事件到达时 SDK 在内部线程触发回调,开发者无需主动轮询。

多机器人支持

控制器支持 1~4 台机器人协同工作,Python 接口与 C++ 一致,提供两种调用方式:

方式接口说明
单机器人robot_xxx(...)(如 robot_movej默认操作 1 号机器人
多机器人robot_xxx_robot(fd, robotNum, ...)通过 robotNum 参数指定机器人编号(1-4)

多机器人并行需先调用 set_robots_parallel 开启并行模式;外部轴跟随主机器人编号管理。

工艺扩展架构

工艺类功能以独立头文件形式提供,Python 中对应同名接口,通过工艺号(1-9)管理多套参数:

工艺Python 模块典型接口
焊接nrc_craft_weld焊接参数配置、送丝/退丝/送气、摆焊
码垛nrc_craft_pallet码垛参数设置、状态查询
视觉nrc_craft_vision视觉参数、标定、目标点计算
激光切割nrc_craft_laser_cutting全局/工艺/模拟量/IO 参数
传送带跟踪nrc_craft_conveyor_belt_track传送参数、编码器、PID 同步

工艺参数采用"设置/查询"成对接口,设置前需先指定工艺号,与示教器工艺配置保持数据一致。

数据流说明

端口数据方向内容典型接口
6001双向命令流:控制指令与响应(JSON)robot_movelset_servo_state
7000双向伺服数据流:点位跟踪、状态回调servo_moveservo_point_position_motion_control
5000双向文件流:作业文件上传/下载/备份文件传输接口

6001 为 SDK 主命令端口;涉及伺服跟踪(如外部点移动、点位运动控制)需同时连接 7000 端口。